我在医生办公室工作,我正在编写代码以简化结算流程。我必须在计费软件中包含所有诊断,因此我复制整个图表,并通过寻找前缀ICD-10的换行符将其解析为数组,如果两个代码在同一行上,它也将它们分开(通过逗号)。在此之前,它会删除包含已取消程序的图表的一部分(如果存在),因此不会收取已取消的程序。有时,为了命令程序(它是自动的),图表中包含多个相同的诊断,我只需要将每个诊断添加到数组一次。
[...]
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
我在互联网上找到了几种不同的解决方案,但到目前为止,他们只是弄得一团糟而不是解决任何问题。任何帮助表示赞赏!
答案 0 :(得分:1)
使用哈希删除重复项。使用您的代码作为键和值的虚拟。我使用下面的“true”作为虚拟值。重复记录具有相同的密钥,因此它们替换了以前的键值对。
完成解析输入后输出哈希的键。
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}