2016-11-17 45 views
0

我在醫生辦公室工作,我一直在編寫代碼來簡化計費流程。我必須在計費軟件中包含所有的診斷信息,所以我複製整個圖表,並通過尋找ICD-10前綴的換行符將其解析爲一個數組,如果兩個代碼位於同一行上,則將它們分開(通過逗號)。在此之前,它將刪除包含取消程序的圖表的一部分(如果存在),以免取消取消的程序。有時,爲了訂購一個過程(它是自動的),圖表中包含了多個相同的診斷,我只需要將每個診斷添加到數組中。AHK:在將文本分析爲數組時解析重複信息

 [...] 
     SendInput, ^a 
     ClipBoard := 
     SendInput, ^c 
     ClipWait 
     BlockInput, MouseMoveOff 
     lString := ClipBoard 
     Sleep, 200 
     IfInString, lString, Canceled Orders 
      { 
      lStringLeft := SubStr(lString, 1, InStr(lString, "Canceled Orders")-1) 
      Sleep, 20 
      lStringRight := SubStr(lString, InStr(lString, "Allergies as of")) 
      Sleep, 20 
      lString := 
      Sleep, 20 
      lString := lStringLeft 
      Sleep, 20 
      lString .= lStringRight 
      Sleep, 20 
      } 
     DxArr := [] 
     numDx := 0 
     Loop, Parse, lString, `n 
      If InStr(A_LoopField, "ICD-10") 
       Loop, Parse, A_LoopField, `, 
        DxArr[++numDx] := Trim(SubStr(A_LoopField, InStr(A_LoopField, ":") + 1), " `t`n`r") 
     [...] 

原發性高血壓的理想輸出

ICD-9-CM:401.0

ICD-10-CM:I10

原發性高血壓慢性腎臟疾病,階段3

ICD-9-CM:585.3,401.0

ICD-10-CM:N18.3,I10

I10 N18.3

I」我在網上找到了幾種不同的解決方案,但到目前爲止,他們只是弄得一團糟,而沒有解決任何問題。任何幫助表示讚賞!

回答

1

使用散列刪除重複項。使用您的代碼作爲關鍵字和值。我使用下面的「真」作爲虛擬值。重複記錄具有相同的關鍵字,因此它們會替換之前的鍵值對。

解析輸入後輸出哈希鍵。

DxHash := {} 
Loop, Parse, lString, `n 
    If InStr(A_LoopField, "ICD-10") 
    Loop, Parse, A_LoopField, `, 
     DxHash[Trim(SubStr(A_LoopField, InStr(A_LoopField, ":") + 1), " `t`n`r")] := true 

for diagnosis,dummy in DxHash 
    send %diagnosis%{SPACE} 
+0

我試着用你發佈的其他代碼來做這件事。複製該方法以刪除flu shot txt比較器中的重複項,它看起來大致相同,但我無法使其工作。謝謝!這將DxArr(現在是DxHash)變成一個關聯數組,對嗎?有沒有辦法找到關聯數組的大小?因爲我使用numDx作爲下面的檢查的一部分,在所有的代碼完成輸入後。它看起來像 如果(索引== numDx)和Mod(索引,4)!= 0 SendInput {Enter} 雖然我認爲這可能是過度檢查,它可能沒有索引檢查。 – DarknessCalling

+0

明白了。它的水平很低,但我只是在打印之前對循環進行完全相同的處理,但要對這些元素進行計數。所以它就像Dx,Element中的DxHash numDx ++,然後是print for循環。再次,它是低水平,但它正在工作。 – DarknessCalling