HL7 (text) File Modification
Q: Good morning, thank you again for taking my call! Please find the before and after test files attached.
- You’ll see that the FT1 segment, specifically the FT1.25 section, was moved to FT1.7 section. (Each section is delimited by a pipe “|”.)
- We also added “CG” (without quotes) to the FT1.6 section. I’ve attached an image to visualize as well.
I’m urgently trying to get this solution in place! Thank you for your help!!!!
A: Summary of what we need to do:
- Load the HL7 (text) File.
- Iterate through the lines in the HL7 File.
- Search for a line that starts with ‘FT1|’.
- Make the requested adjustments.
- Save the HL7 file different from the Source.
We created a Pascal Script to achieve this (v2021.7.31.0 or higher is needed for this script). Let’s start.
1) Please add a Source and a File Filter for the .HL7 files you want to adjust
2) Add the following Pascal Script as Destination, don’t forget to adjust the ctOutputPath const ( must end with a \ ).
Var iList: Integer; tmpEntry: String; tmpError: String; tmpField: String; tmpFile : String; tmpList: TStringList; tmpEntryList: TStringList; Const ctOutputPath = 'C:\Test\IN_HL7\Out\'; Begin psExitCode:= 0; // ... add your code here tmpFile := psFilePath + psFileName; tmpList := TStringList.Create; Try Try tmpList.LoadFromFile(tmpFile); // Iterate For iList := 0 to (tmpList.Count-1) Do Begin tmpEntry := tmpList.Strings[iList]; If Pos('FT1|', tmpEntry) <> 0 Then Begin tmpEntryList := psDelimitedTextAsList('|', tmpEntry); If Assigned(tmpEntryList) Then Begin tmpEntryList.Delimiter := '|'; tmpEntryList.StrictDelimiter := True; tmpEntryList.Quotechar := #0; // 0 indexed If tmpEntryList.Count >= 25 Then Begin tmpEntryList.Strings[6] := 'CG'; tmpEntryList.Strings[7] := tmpEntryList.Strings[25]; tmpEntryList.Strings[25] := '' tmpList.Strings[iList] := tmpEntryList.DelimitedText + '|'; // Save To File tmpError := psSaveListToFile(tmpList, ctOutputPath + psFileName, False); if tmpError = '' Then begin psExitCode := 1; psLogWrite(1, '', 'Saved adjusted file to: ' + ctOutputPath + psFileName); End Else psLogWrite(1, '', tmpError); End Else Begin psLogWrite(1, '', 'Field Count error of: ' + tmpEntryList.DelimitedText); End; // Free tmpEntryList.Free; // Break Break; End; End; End; Except psLogWrite(1, '', 'Error loading file: ' + tmpFile); End; Finally tmpList.Free; End; End.
#FileTransfer
Best regards,
Limagito Team