好吧,这个问题很难说。我已经多次使用Google搜索,但通常情况下我发现我没有使用正确的短语,答案很容易获得。我做医生办公室的医疗记账,我必须包括办公室访问的诊断代码。在电子病历计划中,有一个诊断列表。第一行是医生描述,我不在乎。第二行是ICD-9代码。那些都是旧的,我也不关心那些。第三行(每三行)包含ICD-10代码。这就是我需要的。我希望能够做的是获取整个列表,将其转储到由新行分隔的数组中,并删除不包含特定字符串的每个元素。然后,将所有保留的元素转储到另一个数组(或相同的数组,但不像删除后那样将它们分开3)并删除我保留基于元素的前缀字符串。在那之后,我需要点击一个特定的位置(我知道如何做到这一点),正好添加四个数组元素作为文本(无法计算出来),点击回车,并继续添加并点击输入直到我输入了所有数组。如果有人想看到那个混乱,我会发布我从谷歌搜索中拼凑起来的东西。但是,对于如何做到这一点的一般性解释也将受到赞赏。感谢。
首先,我要复制的东西看起来像这样(实际例子)
腰椎管狭窄症 - 原发性
ICD-9-CM:724.02
ICD-10-CM:M48.06
腰椎滑脱
ICD-9-CM:738.4
ICD-10-CM:M43.16
腰椎退行性椎间盘疾病
ICD-9-CM:722.52
ICD-10-CM:M51.36
慢性双侧腰痛伴双侧坐骨神经痛
ICD-9-CM:724.2,724.3,338.29
ICD-10-CM:M54.42,M54.41,G89.29
自然,名单会更长。 我想要保留线条的字符串将是“ICD-10-CM:”,这是你们所知道的。我尝试在引号中使用它作为分隔符,但得到了一些非常奇怪的结果。如果作为分隔符,它会使这个问题稍微容易解决。
Arrays:={}
RealArray:={}
^j::
sendinput, ^c
sleep 20
bigone:=ClipBoard
sleep 2000
;StringReplace, bigone, newbigone, `n, "DLMTR", All
;Arrays:= StrSplit(newbigone, "DLMTR")
StringSplit, Arrays, bigone, `n
k=4
j=1
loop
{
if (k<Arrays.Max_Index)
{
RealArray%j%=Arrays%k%
j++
k++
k++
k++
}
else
return
}
return
^L::
a=0
loop
{
if (a<RealArray.Max_Index)
{
send RealArray%a%
a++
sendinput, {Space}
if(mod(a,5)==0)
sendinput, {enter}
}
else
return
}
答案 0 :(得分:0)
<强>程序强>
^ j收集包含&#34; ICD-10&#34;的代码,^ k粘贴每行格式化5的代码
^j::copyit()
^l::pasteit()
copyit()
{
sendinput, ^c
sleep 20
bigone := ClipBoard
sleep 100
global matches
matches := []
numMatches := 0
Loop parse, bigone, `n
Loop parse, A_LoopField, `,
if InStr(A_LoopField, "ICD-10")
matches[++numMatches] := trim( substr(A_LoopField, InStr(A_LoopField, ":") + 1), " `t`n`r")
}
pasteit()
{
global matches
for index, element in matches
{
Send %element%{SPACE}
if mod(index,5) == 0
Send {ENTER}
}
}
<强>输入:强>
Recurrent major depressive disorder, in partial remission
ICD-9-CM: 296.35
ICD-10-CM: F33.1
ICD-10-CM: F33.2
ICD-9-CM: 296.35
ICD-10-CM: F33.3
ICD-10-CM: F33.4
ICD-9-CM: 296.35
ICD-10-CM: F33.5, ICD-10-CM: X432.6, ICD-10-CM: Y232.6
ICD-10-CM: F33.6
ICD-9-CM: 296.35
<强>输出:强>
F33.1 F33.2 F33.3 F33.4 F33.5
X432.6 Y232.6 F33.6
答案 1 :(得分:0)
在不知道您自动化的基础程序如何工作的情况下,我无法告诉您何时睡觉或发送额外的ENTER。
也许您可以查询屏幕状态以确定下一步该做什么(例如,发送代码,额外的输入,等待)。
我通过搜索唯一标识程序所处状态的小图像来识别屏幕状态。我使用Alt + PrintScrn制作图像以捕获整个屏幕,然后使用pbrush.exe裁剪出小的唯一标识图像。
; Search screen for image stored in "images/name.png"
; return true if found, false otherwise
find( name )
{
fname := "images\" . name . ".png"
ImageSearch x, y, 0,0,A_ScreenWidth, A_ScreenHeight, *32 %fname%
return ( ErrorLevel = 0 and x >= 0 and y >= 0 )
}
; Wait for image stored in "images/name.png" to appear on the screen
wait_for( name )
{
tooltip Waiting for %name%, 100,0,1
while !find(name)
sleep 100
}
; business/domain logic bot
automate_screen()
{
if ( find( "logon" ))
do_stuff_to_logon()
else if ( find( "payroll_history" ))
do_some_other_stuff()
else if ( find( "payroll_screen1" ))
{
sendplay Type this on screen1{enter}01{enter}
wait_for( "payroll_screen2" )
sendplay Type this on screen2{enter}
}
}
main()
{
loop
{
automate_screen()
sleep 250
}
}