Question:
How can I capture a list of the following fields: EVN-1, PID-3, PV1-2, FT1-2 in a comma delimited list?
Answer:
Custom code is the best approach if you are expecting repeated FT1 segments. The following code will create a file in the c:\temp directory containing the specified list, and will display in Notepad upon completion.
string _fileName = @"c:\temp\_test.txt"; StreamWriter _file; public override void Run() { // Get an HL7 Message in parsed format HL7Message message = GetParsedMessage(); // Get the first FT1 segment EVN evn = message.Segments.OfType<EVN>().FirstOrDefault(); PID pid = message.Segments.OfType<PID>().FirstOrDefault(); PV1 pv1 = message.Segments.OfType<PV1>().FirstOrDefault(); foreach(FT1 ft1 in message.Segments.OfType<FT1>()) { _file.Write("{0},",evn != null ? evn.EventTypeCode_01.Value : null); _file.Write("{0},",pid != null ? pid.PatientIdentifierList_03.First.Value : null); _file.Write("{0},",pv1 != null ? pv1.PatientClass_02.Value : null); _file.Write("{0},",ft1 != null ? ft1.TransactionID_02.Value : null); _file.WriteLine(); } } public override void OnStart() { // create the file to be written out _file = new StreamWriter(_fileName,false); _file.WriteLine("EVN_EVENT_TYPE, PID_MRN, PV1_PATIENTCLAS", "FT1_TRANS_ID"); } // Called once after the last message has been processed. // It is a good place to perform cleanup and to report information. // Always called from the UI thread. public override void OnFinish() { // sort the data _file.Close(); // launch notepad to display the file. System.Diagnostics.Process.Start("Notepad",_fileName); }