Also mache ich Abrechnung für eine Arztpraxis, und wir überprüfen gerne, dass die Grippeimpfungen, die wir geben, tatsächlich in Rechnung gestellt werden. Im Moment überprüft meine AHK ihre gesamte Tabelle nach Schlüsseln wie dem ICD-10 Code Z23 und prüft dann auf "Influenza". Wenn beide gefunden werden, wird die Nummer des medizinischen Aktenzeichens des Patienten der altersgerechten Textdatei hinzugefügt, entweder 65+ oder unter 65. Es gibt auch Papierblätter mit 10 Schlitzen, in denen wir die MRNs manuell aufzeichnen, um sie zu überprüfen. Ich möchte ein Skript erstellen, das drei Dateien vergleicht, eine Datei gemischter MRNs (65+ und < 65), und wenn die MRN in der gemischten Datei gefunden wird, sollte diese Zeile entfernt werden. (Ich habe eine Menge über das Thema gegoogelt, aber alle empfehlen, eine Bibliothek zu verwenden, was mein Programm nur verlangsamen würde.) Wenn die Zeile nicht gefunden wird, sollte sie in der Hauptdatei für meine Überprüfung bleiben . Ich kann nicht herausfinden, wie man Zeilen entfernt, geschweige denn eine bestimmte Zeile. Bis jetzt, um die Dateien gegeneinander zu überprüfen, habe ich das. Anstatt Linien zu entfernen, füge ich die nicht abgerechneten Zahlen zu einer vierten Textdatei hinzu, aber letztendlich wäre das Entfernen besser.AHK: Vergleichen zweier Txt-Dateien
FILENUM = 1
FILENU = 1
^L::
Loop
{
FileReadLine, MRN, E:\AHK & AHKS\flushot.txt, %LINENUM%
If ErrorLevel
{
break
}
Else
{
Loop
{
FileReadLine, MRNc, E:\AHK & AHKS\Billed65+Flushots.txt, LINENU
StringTrimRight, MRNc, 11
If (MRN != MRNc)
{
LINENU++
Match = 0
}
If (MRN == MRNc)
Match = 1
If ErrorLevel and Match = 0
{
FileAppend, MRN, E:\AHK & AHKS\Unbilledtester.txt
LINENU = 1
}
If (Match = 1)
GoTo Lab2
}
Lab2:
Loop
{
FileReadLine, MRNc, E:\AHK & AHKS\BilledAdultFlushots.txt, LINENU
StringTrimRight, MRNc, 11
If (MRN != MRNc)
{
LINENU++
Match = 0
}
If (MRN == MRNc)
Match = 1
If ErrorLevel and Match = 0
FileAppend, MRN, E:\AHK & AHKS\Unbilledtester.txt
If (Match = 1)
GoTo Lab2
}
LINENUM++
}
}
UPDATE !!!!!!!
In Ordnung, also nahm ich Ihren Code, und ich habe versucht, einen Reverse-Check auszuführen. Sie überprüfen die assoziativen Arrays der Flushot-Textdateien für Erwachsene und Senioren für die MRNS in flushot.txt. Wenn sie nicht gefunden werden, werden sie zu den nicht abgerechneten hinzugefügt. Im Folgenden sind einige meiner Versuche, das umzukehren, und überprüfen Sie für die MRNs in Adult und Senior in flushot.txt, und wenn nicht gefunden, um es zu einer Datei namens notrecorded.txt hinzufügen, damit ich weiß, was Leute flushhots und der MA wer hat es nicht aufgezeichnet (von Primary Care Provider).
FlushotsBilled()
{
Root_Dir := "E:\AHK & AHKS"
fName_Input := "flushot.txt"
fName_Backup := "flushot_old.txt"
fName_Output := "unbilled.txt"
fName_Billed_Adult := "billedAdultFlushots.txt"
fName_Billed_Senior := "billed65+Flushots.txt"
fName_Billed_NR := "notrecorded.txt"
fName_Mixed := "mixrecord.txt"
SetWorkingDir %Root_Dir%
FileDelete, %fName_Output%
AdultFlu := {}
SeniorFlu := {}
GivenFluA := {}
GivenFluB := {}
Mixed := {}
Loop, Read, %fName_Mixed%
Mixed[A_LoopReadLine] := True
Loop, Read, %fName_Billed_Adult%
{
;Loop, Parse, A_LoopReadLine, `t
; AdultFlu[A_LoopField] := True
AdultFlu[A_LoopReadLine] := True
If !Mixed[A_LoopReadLine]
FileAppend, %A_LoopReadLine%`n, %fName_Mixed%
}
Loop, Read, %fName_Billed_Senior%
{
;Loop, Parse, A_LoopReadLine, `t
; SeniorFlu[A_LoopField] := True
SeniorFlu[A_LoopReadLine] := True
If !Mixed[A_LoopReadLine]
FileAppend, %A_LoopReadLine%`n, %fName_Mixed%
}
Loop, Read, %fName_Input% ;check flushot.txt for
If !AdultFlu[SubStr(A_LoopReadLine, 1, InStr(A_LoopReadLine,"`t"))] && !SeniorFlu[SubStr(A_LoopReadLine, 1, InStr(A_LoopReadLine,"`t"))]
;If !AdultFlu[A_LoopReadLine] && !SeniorFlu[A_LoopReadLine] ;flushot is checking the associated arrays
FileAppend, %A_LoopReadLine%`n, %fName_Output% ;if not found, stick it into unbilled.
Loop, Read, %fName_Input%
GivenFluA[A_LoopReadLine] := True
/* Loop, Read, %fName_Billed_Senior%
If !Mixed[A_LoopReadLine]
FileAppend, %A_LoopReadLine%`n, %fName_Mixed%
Loop, Read, %fName_Billed_Adult%
If !Mixed[A_LoopReadLine]
FileAppend, %A_LoopReadLine%`n, %fName_Mixed%
Loop, Read, %fName_Mixed%
Mixed[A_LoopReadLine] := True
*/
Loop, Read, %fName_Mixed%
If !GivenFluA[SubStr(A_LoopReadLine, 1, InStr(A_LoopReadLine,"`t"))] ;a_Loopreadline is a line in mixed. it is looking through flushot.txt for that line, if it's there, it's givenflua's index
Loop, Read, %fName_Billed_NR%
If !GivenFluA[A_LoopReadLine]
FileAppend, %A_LoopReadLine%`n
/*
Loop, Read, %fName_Input% ;read flushot
If Mixed[A_LoopReadLine] Contains A_LoopReadLine ;check to see if each line in flushot is in mixed
GivenFluA[Mixed[A_LoopReadLine]] := True ;Mixed[A_LoopReadLine]
Loop, Read, %fName_Billed_NR%
If !GivenFluA[A_LoopReadLine]
FileAppend GivenFluA[%A_LoopReadLine%], %fName_Billed_NR%
*/
;if readline is in mixed, but not in flushot, check to see if it's in notrecorded, if not, append it
/*
Loop, Read, %fName_Mixed% ;open up the mixed record
IfNotInString, A_LoopReadLine, GivenFluA[A_LoopReadLine] ;see if inside each line, we can find the lines from flushot.txt, if not
;GivenFluB[GivenFluA[A_LoopReadLine]] := True ;if not we give the line from inside flushot to another associative array
GivenFluB[A_LoopReadLine] := True ;lets try this, put the value
Loop, Read, %fName_Mixed%
IfInString, A_LoopReadLine, GivenFluA[A_LoopReadLine]
GivenFluB[A_LoopReadLine]
Loop, Read, %fName_Billed_NR% ;open up not recorded
IfNotInString, A_LoopReadLine, GivenFluB[A_LoopReadLine] ;see if inside each line we can find that line from
FileAppend, %A_LoopReadLine%`n, %fName_Billed_NR%
*/
}
einfach noch einmal zu versuchen (ich das tue, weil du klug bist, und half mir vor, hier hofft) @ Jim-U – DarknessCalling