Exemplo n.º 1
0
        public void TestOBXDataTypes()
        {
            string message = @"MSH|^~\&|EPIC|AIDI|||20070921152053|ITFCOHIEIN|ORF^R04^ORF_R04|297|P|2.3.1|||
MSA|CA|1
QRD|20060725141358|R|||||10^RD|1130851^^^^MRN|RES|||
QRF|||||||||
OBR|1|5149916^EPC|20050118113415533318^|E8600^ECG^^^ECG|||200501181134||||||Age: 17  yrs ~Criteria: C-HP708 ~|||||1||Zztesttwocorhoi|Results||||F||^^^^^Routine|||||||||200501181134|||||||||
OBX|1|ST|:8601-7^ECG IMPRESSION|2|Normal sinus rhythm, rate  77     Normal P axis, PR, rate & rhythm ||||||F||1|200501181134||
OBX|2|ST|:8625-6^PR INTERVAL|3|141||||||F||1|200501181134||
OBX|3|ST|:8633-0^QRS DURATION|4|83||||||F||1|200501181134||
OBX|4|ST|:8634-8^QT INTERVAL|5|358||||||F||1|200501181134||
OBX|5|ST|:8636-3^QT INTERVAL CORRECTED|6|405||||||F||1|200501181134||
OBX|6|ST|:8626-4^FRONTAL AXIS P|7|-1||||||F||1|200501181134||
OBX|7|ST|:99003^FRONTAL AXIS INITIAL 40 MS|8|41||||||F||1|200501181134||
OBX|8|ST|:8632-2^FRONTAL AXIS MEAN QRS|9|66||||||F||1|200501181134||
OBX|9|ST|:99004^FRONTAL AXIS TERMINAL 40 MS|10|80||||||F||1|200501181134||
OBX|10|ST|:99005^FRONTAL AXIS ST|11|36||||||F||1|200501181134||
OBX|11|ST|:8638-9^FRONTAL AXIS T|12|40||||||F||1|200501181134||
OBX|12|ST|:99006^ECG SEVERITY T|13|- NORMAL ECG - ||||||F||1|200501181134||
OBX|13|DT|5315037^Start Date^Start Collection Dat^ABC||18APR06||||||F|||20060419125100|PPKMG|PPJW^SMITH, Fred 
QAK||OK||1|1|0
";

            PipeParser parser = new PipeParser();

            IMessage m = parser.Parse(message);

            ORF_R04 orfR04 = m as ORF_R04;

            Assert.IsNotNull(orfR04);

            XMLParser xmlParser = new DefaultXMLParser();

            string recoveredMessage = xmlParser.Encode(orfR04);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            try
            {
                // create the HL7 message
                // this AdtMessageFactory class is not from NHAPI but my own wrapper
                LogToDebugConsole("Creating ADT A01 message...");
                var adtMessage = AdtMessageFactory.CreateMessage("A01");

                // create these parsers for the file encoding operations
                var pipeParser = new PipeParser();
                var xmlParser  = new DefaultXMLParser();

                // print out the message that we constructed
                LogToDebugConsole("Message was constructed successfully..." + "\n");

                // serialize the message to pipe delimited output file
                WriteMessageFile(pipeParser, adtMessage, "C:\\HL7TestOutputs", "testPipeDelimitedOutputFile.txt");

                // serialize the message to XML format output file
                WriteMessageFile(xmlParser, adtMessage, "C:\\HL7TestOutputs", "testXmlOutputFile.xml");
            }
            catch (Exception e)
            {
                LogToDebugConsole($"Error occured while creating HL7 message {e.Message}");
            }
        }
        public void ParseORMwithCompleteOBXToXML()
        {
            var message =
                "MSH|^~\\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB\r"
                + "PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443\r"
                + "PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188\r"
                + "ORC|NW|01444^00001|||||||||||L\r"
                + "OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE\r"
                + "OBX|1|TX|SDES||Blood, peripheral||||||Z\r"
                + "OBX|2|TX|SREQ||LEFT ANTECUBITAL||||||Z\r"
                + "OBX|3|TX|CULT||Beta hemolytic Streptococcus Group A||||||Z\r"
                + "OBX|4|TX|CULT||Critical result(s) called to and verification \"read-back\" received from: Nu~||||||Z";

            var parser = new PipeParser();

            var m = parser.Parse(message);

            var msgObj = m as ORM_O01;

            Assert.IsNotNull(msgObj);

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(msgObj);

            Assert.IsNotNull(recoveredMessage);
            Assert.IsFalse(string.Empty.Equals(recoveredMessage));
        }
Exemplo n.º 4
0
        public void ParseORFR04ToXmlNoNTE()
        {
            string message =
                @"MSH|^~\&|Query Result Locator|Query Facility Name|Query Application Name|ST ELSEWHERE HOSPITAL|20051024074506||ORF^R04|432|P|2.4|
MSA|AA|123456789|
QRD|20060228160421|R|I||||10^RD&Records&0126|38923^^^^^^^^&TCH|||
QRF||20050101000000||
PID|||38923^^^ST ELSEWHERE HOSPITAL Medical Record Numbers&              MEDIC              AL RECORD NUMBER&ST ELSEWHERE HOSPITAL^MR^ST ELSEWHERE HOSPITAL||Bombadill^Tom||19450605|M|||1&Main Street^^Littleton^CO^80122||^^^^^303^4376329^22|
OBR|1|0015566|DH2211223|83036^HEMOGLOBIN A1C^^83036^HEMOGLOBIN A1C|||20040526094000|||||||20040526094000||J12345^JENS^JENNY^^^DR^MD^^^^^^^112233&TCH|||||          TP QUEST DIAGNOSTICS-TAMPA 4225 E. FOWLER AVE TAMPA          FL 33617|20030622070400|||F|
OBX|1|NM|50026400^HEMOGLOBIN A1C^^50026400^HEMOGLOBIN A1C||12|^% TOTAL HGB|4.0 - 6.0|H|||F|||20040510094000|TP^^L|";

            PipeParser Parser = new PipeParser();

            IMessage m = Parser.Parse(message);

            ORF_R04 orfR04 = m as ORF_R04;

            Assert.IsNotNull(orfR04);

            XMLParser xmlParser = new DefaultXMLParser();

            string recoveredMessage = xmlParser.Encode(orfR04);

            Assert.IsNotNull(recoveredMessage);
            Assert.IsFalse(recoveredMessage.IndexOf("NTE") > -1, "Returned message added ORC segment.");
        }
        public void ParseORMo01ToXml()
        {
            var message =
                "MSH|^~\\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB\r"
                + "PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443\r"
                + "PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188\r"
                + "ORC|NW|01444^00001|||||||||||L\r"
                + "OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE";

            var parser = new PipeParser();

            var m = parser.Parse(message);

            var ormo01 = m as ORM_O01;

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(ormo01);

            Assert.AreNotEqual(string.Empty, recoveredMessage);

            var ormDoc = new XmlDocument();

            ormDoc.LoadXml(recoveredMessage);
            Assert.IsNotNull(ormDoc);
        }
        public void ParseORRo02ToXml()
        {
            var message =
                "MSH|^~\\&|INVISION|DHC|SUNQUEST LAB||200607100719||ORR^O02|ORDR|T|2.3.1|LAB\r"
                + "PID|0001||3017864||HILBERT^MARY||19440823|F||W||||||||40244246\r"
                + "PV1|0001|O|LW||||888883^DOCTOR, UNASSIGNED||||||||||888883|O|000000031540\r"
                + "ORC|NA|00003^00001|F1492|||||||||888883\r"
                + "OBR||00003^00001|F1492|RESPC^CULTURE RESPIRATORY ROUTINE|||||||L|||||||||F1492|||||||^ONCE&ONCE^^200607070600^200607070600^ROUTINE";

            var parser = new PipeParser();

            var m = parser.Parse(message);

            var msg = m as ORR_O02;

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(msg);

            Assert.AreNotEqual(string.Empty, recoveredMessage);

            var orrDoc = new XmlDocument();

            orrDoc.LoadXml(recoveredMessage);
            Assert.IsNotNull(orrDoc);
        }
        public void ParseORFR04ToXML()
        {
            var message =
                "MSH|^~\\&|Query Result Locator|Query Facility Name|Query Application Name|ST ELSEWHERE HOSPITAL|20051024074506||ORF^R04|432|P|2.3|\r"
                + "MSA|AA|123456789|\r"
                + "QRD|20060228160421|R|I||||10^RD&Records&0126|38923^^^^^^^^&TCH|||\r"
                + "QRF||20050101000000||\r"
                + "PID|||38923^^^ST ELSEWHERE HOSPITAL Medical Record Numbers&              MEDIC              AL RECORD NUMBER&ST ELSEWHERE HOSPITAL^MR^ST ELSEWHERE HOSPITAL||Bombadill^Tom||19450605|M|||1&Main Street^^Littleton^CO^80122||^^^^^303^4376329^22|\r"
                + "OBR|1|0015566|DH2211223|83036^HEMOGLOBIN A1C^^83036^HEMOGLOBIN A1C|||20040526094000|||||||20040526094000||J12345^JENS^JENNY^^^DR^MD^^^^^^^112233&TCH|||||          TP QUEST DIAGNOSTICS-TAMPA 4225 E. FOWLER AVE TAMPA          FL 33617|20030622070400|||F|\r"
                + "OBX|1|NM|50026400^HEMOGLOBIN A1C^^50026400^HEMOGLOBIN A1C||12|^% TOTAL HGB|4.0 - 6.0|H|||F|||20040510094000|TP^^L|";

            var parser = new PipeParser();

            var m = parser.Parse(message);

            var orfR04 = m as ORF_R04;

            Assert.IsNotNull(orfR04);

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(orfR04);

            Assert.IsNotNull(recoveredMessage);
            Assert.IsFalse(string.Empty.Equals(recoveredMessage));
        }
        static void Main(string[] args)
        {
            String msg =
                "MSH|^~\\&|HIS|RIH|EKG|EKG|199904140038||ADT^A01||P|2.2\r";
            PipeParser parser = new PipeParser();

            try
            {
                IMessage  mssg      = parser.Parse(msg);
                XMLParser xMLParser = null;

                xMLParser = new DefaultXMLParser(new DefaultModelClassFactory());


                String str = xMLParser.Encode(mssg);
                Debug.Print(str);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.GetType().Name);
                Console.WriteLine(e.StackTrace);
            }
            Console.WriteLine("\n Press Enter to continue...");
            Console.Read();
        }
        public void ParseORMwithOBXToXML()
        {
            var message =
                "MSH|^~\\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB\r"
                + "PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443\r"
                + "PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188\r"
                + "ORC|NW|01444^00001|||||||||||L\r"
                + "OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE\r"
                + "OBX||NM|||999||||||\r"
                + "OBX||NM|||999||||||\r"
                + "OBX||NM|||999||||||";

            var parser = new PipeParser();

            var m = parser.Parse(message);

            var msgObj = m as ORM_O01;

            Assert.IsNotNull(msgObj);

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(msgObj);

            Assert.IsNotNull(recoveredMessage);
            Assert.IsFalse(string.Empty.Equals(recoveredMessage));
        }
Exemplo n.º 10
0
        private static void ZrtTest()
        {
            var txtMessage = "MSH|^~\\&|ABC|DEF|DAL|QUEST|20160907113230||ORM^O01^ORM_O01|201609071132304107|P|2.5.1\rPID|1||[PATIENTID]^^^^MR||[LASTNAME]^[FIRSTNAME]^M^^^^L|SMITH|[DOB]|[GENDER]||2106-3^White^HL70005|123 Main St.^^Fischer^TX^78623^USA^H||^PRN^PH^[email protected]^^704^5551212~^^CP^^^980^5551414|^PRN^PH^^^704^5551313|eng^English^ISO639|S^Single|||123-45-6789|||N^Not Hispanic or Latino^HL70189\rPV1|1|O|^^^ZZZZZ00002^^C^^^Bleeding Edge Trauma Center||||NPIDA^Allthework^Dew^^^Mr^PA^^^^^^NPI^^^^^^^^PA||||||||||||ZZZZZ000EJ^^^^VN|||||||||||||||||||||||||20110511132339-0400\rORC|SN|[PON]||||||||||^Jekyll^Burt^^^^^^NPI^L\rOBR||[PON]||87590^Neisseria gonorrhoeae detection by nucleic acid, direct probe^C4|||201609071108|||||||| ^^^ |^Jekyll^Burt^^^^^^NPI^L||||||||LAB\rDG1|1||I25700^Atherosclerosis of CABG, unsp, w unstable angina pectoris^ICD\rZRT|1|Inbound Processor - Prod|ConfigID=1406;MessageID=16971290;MessageType=ORM;LabOrderID=32271;PatientID=1234;|SPLINTER|";

            var emch   = new EnhancedModelClassFactory();
            var parser = new PipeParser(emch);

            emch.ValidationContext = parser.ValidationContext;

            var genericIm = parser.Parse(txtMessage);

            if (genericIm is GenericMessageWrapper gcw)
            {
                var strictIm      = gcw.Unwrap();
                var structureName = strictIm.GetStructureName();

                if (structureName.Contains("ORM_O01"))
                {
                    var orm = (NHapi.Model.V251.Message.ORM_O01)strictIm;
                    var sex = orm.PATIENT.PID.AdministrativeSex.Value;
                    Console.WriteLine(sex);
                }

                XMLParser xmlParser        = new DefaultXMLParser();
                var       xmlMessageStrict = xmlParser.Encode(strictIm);
                Console.WriteLine(xmlMessageStrict);

                var xmlMessageGeneric = xmlParser.Encode(genericIm);
                Console.WriteLine(xmlMessageGeneric);

                try
                {
                    var zrt = gcw.GetSegment <ISegment>("ZRT");

                    //if (zrt is TestApp.CustomImplementation.V251.Segment.ZRT)
                    //{
                    //  Console.WriteLine("Got a ZRT!!!");
                    //}

                    var numFields = zrt.NumFields();

                    for (var i = 1; i <= numFields; i++)
                    {
                        var field = zrt.GetField(i, 0);
                        var value = ((Varies)field).Data;
                        Console.WriteLine(value);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
Exemplo n.º 11
0
        public void TestParserDoesntFailWithoutValidationExceptionHandlerFactory()
        {
            var adt = new ADT_A01();

            var sut       = new PipeParser();
            var xmlParser = new DefaultXMLParser();

            var msg = sut.Encode(adt);

            sut.Parse(msg);

            msg = xmlParser.Encode(adt);
            xmlParser.Parse(msg);
        }
Exemplo n.º 12
0
        private static void CreateMessagesParser(IMessage adtMessage)
        {
            // create these parsers for the file encoding operations
            var pipeParser = new PipeParser();
            var xmlParser  = new DefaultXMLParser();

            // print out the message that we constructed
            LogToDebugConsole("Message was constructed successfully..." + "\n");

            // serialize the message to pipe delimited output file
            WriteMessageFile(pipeParser, adtMessage, "N:\\HL7TestOutputs", "testPipeDelimitedOutputFile.txt");

            // serialize the message to XML format output file
            WriteMessageFile(xmlParser, adtMessage, "N:\\HL7TestOutputs", "testXmlOutputFile.xml");
        }
Exemplo n.º 13
0
        /// <summary>
        /// Generates an xml string using the NHapi XMLParser.
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        private string GenerateXml(IMessage message)
        {
            // Convert from HL7 object to XML
            XMLParser xmlParser = new DefaultXMLParser();
            string    sXML      = xmlParser.Encode(message);

            string sRootNamespace = @"<([A-Z0-9_]+) xmlns=(.*?)/(\1)>";

            System.Text.RegularExpressions.Match mx = System.Text.RegularExpressions.Regex.Match(sXML, sRootNamespace);
            if (mx.Success)
            {
                // lError.Text = "Replacing root element with new namespace.";
                sXML = System.Text.RegularExpressions.Regex.Replace(sXML, sRootNamespace, @"<ns0:$1 xmlns:ns0=$2/ns0:$1>");
            }

            return(sXML);
        }
Exemplo n.º 14
0
        public static void Main(string[] args)
        {
            const string messageString = "MSH|^~\\&|SENDING_APPLICATION|SENDING_FACILITY|RECEIVING_APPLICATION|RECEIVING_FACILITY|20110614075841||ACK|1407511|P|2.3||||||\r\n" +
                                         "MSA|AA|1407511|Success||";

            // instantiate a PipeParser, which handles the "traditional or default encoding"
            var ourPipeParser = new PipeParser();

            try
            {
                // parse the string format message into a Java message object
                var hl7Message = ourPipeParser.Parse(messageString);

                //cast to ACK message to get access to ACK message data
                var ackResponseMessage = hl7Message as ACK;
                if (ackResponseMessage != null)
                {
                    //access message data and display it
                    //note that I am using encode method at the end to convert it back to string for display
                    var mshSegmentMessageData = ackResponseMessage.MSH;
                    LogToDebugConsole("Message Type is " + mshSegmentMessageData.MessageType.MessageType);
                    LogToDebugConsole("Message Control Id is " + mshSegmentMessageData.MessageControlID);
                    LogToDebugConsole("Message Timestamp is " + mshSegmentMessageData.DateTimeOfMessage.TimeOfAnEvent.GetAsDate());
                    LogToDebugConsole("Sending Facility is " + mshSegmentMessageData.SendingFacility.NamespaceID.Value);

                    //update message data in MSA segment
                    ackResponseMessage.MSA.AcknowledgementCode.Value = "AR";
                }

                // Display the updated HL7 message using Pipe delimited format
                LogToDebugConsole("HL7 Pipe Delimited Message Output:");
                LogToDebugConsole(ourPipeParser.Encode(hl7Message));

                // instantiate an XML parser that NHAPI provides
                var ourXmlParser = new DefaultXMLParser();

                // convert from default encoded message into XML format, and send it to standard out for display
                LogToDebugConsole("HL7 XML Formatted Message Output:");
                LogToDebugConsole(ourXmlParser.Encode(hl7Message));
            }
            catch (Exception e)
            {
                LogToDebugConsole($"Error occured -> {e.StackTrace}");
            }
        }
Exemplo n.º 15
0
        public void CanParseCustomSegments()
        {
            Output.WriteLine("\n==============================================\nTesting parsing to GenericMessageWrapper with message which contains custom Z segment ZRT\n");

            // Arrange
            var messageString = "MSH|^~\\&|ABC|DEF|DAL|QUEST|20160907113230||ORM^O01^ORM_O01|201609071132304107|P|2.5.1\rPID|1||[PATIENTID]^^^^MR||[LASTNAME]^[FIRSTNAME]^M^^^^L|SMITH|[DOB]|[GENDER]||2106-3^White^HL70005|123 Main St.^^Fischer^TX^78623^USA^H||^PRN^PH^[email protected]^^704^5551212~^^CP^^^980^5551414|^PRN^PH^^^704^5551313|eng^English^ISO639|S^Single|||123-45-6789|||N^Not Hispanic or Latino^HL70189\rPV1|1|O|^^^ZZZZZ00002^^C^^^Bleeding Edge Trauma Center||||NPIDA^Allthework^Dew^^^Mr^PA^^^^^^NPI^^^^^^^^PA||||||||||||ZZZZZ000EJ^^^^VN|||||||||||||||||||||||||20110511132339-0400\rORC|SN|[PON]||||||||||^Jekyll^Burt^^^^^^NPI^L\rOBR||[PON]||87590^Neisseria gonorrhoeae detection by nucleic acid, direct probe^C4|||201609071108|||||||| ^^^ |^Jekyll^Burt^^^^^^NPI^L||||||||LAB\rDG1|1||I25700^Atherosclerosis of CABG, unsp, w unstable angina pectoris^ICD\rZRT|1|Inbound Processor - Prod|ConfigID=1406;MessageID=16971290;MessageType=ORM;LabOrderID=32271;PatientID=1234;|SPLINTER|";
            var expectedZrt   = new []
            {
                "1",
                "Inbound Processor - Prod",
                "ConfigID=1406;MessageID=16971290;MessageType=ORM;LabOrderID=32271;PatientID=1234;",
                "SPLINTER"
            };

            var classFactory = new EnhancedModelClassFactory();
            var parser       = new PipeParser(classFactory);

            classFactory.ValidationContext = parser.ValidationContext;

            var message        = parser.Parse(messageString);
            var messageWrapper = message as GenericMessageWrapper;

            Assert.NotNull(messageWrapper);

            var originalMessage = messageWrapper.Unwrap();

            XMLParser xmlParser         = new DefaultXMLParser();
            var       xmlMessageStrict  = xmlParser.Encode(originalMessage);
            var       xmlMessageGeneric = xmlParser.Encode(message);

            Assert.Matches(@"^\<ORM_O01.*\<\/ORM_O01\>$", xmlMessageStrict);
            Assert.Matches(@"^\<GenericMessageWrapper.*\<\/GenericMessageWrapper\>$", xmlMessageGeneric);

            var zrt = messageWrapper.GetSegment <ISegment>("ZRT");

            var fieldCount = zrt.NumFields();

            for (var i = 1; i <= fieldCount; i++)
            {
                var field = zrt.GetField(i, 0);
                var value = ((Varies)field).Data;
                Assert.Equal(expectedZrt[i - 1], value.ToString());
                Output.WriteLine("{0}", value);
            }
        }
        public void ParseXMLToHL7()
        {
            var message = GetQRYR02XML();

            XMLParser xmlParser = new DefaultXMLParser();
            var       m         = xmlParser.Parse(message);

            var qryR02 = m as QRY_R02;

            Assert.IsNotNull(qryR02);

            var pipeParser = new PipeParser();

            var pipeOutput = pipeParser.Encode(qryR02);

            Assert.IsNotNull(pipeOutput);
            Assert.IsFalse(string.Empty.Equals(pipeOutput));
        }
Exemplo n.º 17
0
        public void ParseXMLToHL7()
        {
            string message = GetQRYR02XML();

            XMLParser xmlParser = new DefaultXMLParser();
            IMessage  m         = xmlParser.Parse(message);

            QRY_R02 qryR02 = m as QRY_R02;

            Assert.NotNull(qryR02);

            PipeParser pipeParser = new PipeParser();

            string pipeOutput = pipeParser.Encode(qryR02);

            Assert.NotNull(pipeOutput);
            Assert.NotEqual(string.Empty, pipeOutput);
        }
        public void TestDHPatient1111111()
        {
            var parser = new PipeParser();

            var m = parser.Parse(GetDHPatient1111111());

            var orfR04 = m as ORF_R04;

            Assert.IsNotNull(orfR04);
            object range = orfR04.GetQUERY_RESPONSE().GetORDER().GetOBSERVATION().OBX.GetObservationValue(1);

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(orfR04);

            Assert.IsNotNull(recoveredMessage);
            Assert.IsFalse(recoveredMessage.IndexOf("NTE") > -1, "Returned Message added ORC segment.");
        }
        public void ParseORUr01LongToXml()
        {
            var message =
                "MSH|^~\\$|LAB|DHC|LCR|DH|200511291403||ORU^R01|52780002432|P|2.3.1\r"
                + "PID|0001|3013839|40206609||BARNES^TEST||19551005|F|||||||||||258452152\r"
                + "OBR||00009^001|W442|CBC^CBC|||200509210520||||||||CBC^CBC|117564^STEEL||||||||DAH\r"
                + "OBX|1|NM|WBC||20.0|k/uL|4.5-10.0|H|||Z\r"
                + "OBX|1|TX|WBC|1|(Ref Range: 4 k/uL)|k/uL|4.5-10.0||||Z\r"
                + "OBX|2|NM|RBC||4.00|M/uL|4.20-5.40|L|||Z\r"
                + "OBX|2|TX|RBC|1|(Ref Range: 4 M/uL)|M/uL|4.20-5.40||||Z\r"
                + "OBX|3|NM|HGB||12.0|g/dL|14.0-24.0|L|||Z\r"
                + "OBX|3|TX|HGB|1|(Ref Range: 1 g/dL)|g/dL|14.0-24.0||||Z\r"
                + "OBX|4|NM|HCT||41.0|%|37.0-47.0||||Z\r"
                + "OBX|4|TX|HCT|1|(Ref Range: 3 %)|%|37.0-47.0||||Z\r"
                + "OBX|5|NM|MCV||80.9|fl|80.0-100.0||||Z\r"
                + "OBX|5|TX|MCV|1|(Ref Range: 8 fl)|fl|80.0-100.0||||Z\r"
                + "OBX|6|NM|MCH||31.0|pg|27.0-31.0||||Z\r"
                + "OBX|6|TX|MCH|1|(Ref Range: 2 pg)|pg|27.0-31.0||||Z\r"
                + "OBX|7|NM|MCHC||32.0|g/dL|32.0-36.0||||Z\r"
                + "OBX|7|TX|MCHC|1|(Ref Range: 3 g/dL)|g/dL|32.0-36.0||||Z\r"
                + "OBX|8|NM|RDW||19.0|%|11.5-14.5|H|||Z\r"
                + "OBX|8|TX|RDW|1|(Ref Range: 1 %)|%|11.5-14.5||||Z\r"
                + "OBX|9|NM|PLTC||45|k/uL|150-400|PL^Y|||Z\r"
                + "OBX|9|TX|PLTC|1|(Ref Range: 1 k/uL)|k/uL|150-400||||Z\r"
                + "OBX|10|NM|MPV||10.0|fL|6.2-10.0||||Z\r"
                + "OBX|10|TX|MPV|1|(Ref Range: 6 fL)|fL|6.2-10.0||||Z";

            var parser = new PipeParser();

            var m = parser.Parse(message);

            var msg = m as ORU_R01;

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(msg);

            Assert.AreNotEqual(string.Empty, recoveredMessage);

            var orrDoc = new XmlDocument();

            orrDoc.LoadXml(recoveredMessage);
            Assert.IsNotNull(orrDoc);
        }
Exemplo n.º 20
0
        private static void ParserMessageHL7()
        {
            string messageString = "MSH|^~\\&|SENDING_APPLICATION|SENDING_FACILITY|RECEIVING_APPLICATION|RECEIVING_FACILITY|20110614075841||ACK|1407511|P|2.5||||||\r\n" +
                                   "MSA|AA|1407511|Success||";

            messageString = File.ReadAllText(@"N:\hl7-master\hl7-master\Test HL7 Message Files\FileWithNonConformingAdtA01Message.txt");

            var pipeParser = new PipeParser();
            // parse the string format message into a message object HL7 Estandar
            var hl7Message = pipeParser.Parse(messageString);

            //cast to ACK message to get access to ACK message data
            var ackMessage = (ADT_A01)hl7Message;

            if (ackMessage != null)
            {
                var mshSegment = ackMessage.MSH;

                LogToDebugConsole("Message Type is " + mshSegment.MessageType.MessageType.Value);
                LogToDebugConsole("Message Control Id  " + mshSegment.MessageControlID.Value);
                LogToDebugConsole("Message Timestamp is " + mshSegment.DateTimeOfMessage.TimeOfAnEvent.GetAsDate());
                LogToDebugConsole("Sending Facility is " + mshSegment.SendingFacility.NamespaceID.Value);

                //ackMessage.MSA.AcknowledgmentCode.Value = "AR";
            }

            // Display the updated HL7 message using Pipe delimited format
            LogToDebugConsole("HL7 Pipe Delimited Message Output:");
            LogToDebugConsole(pipeParser.Encode(hl7Message));

            // instantiate an XML parser that NHAPI provides
            var xmlParser = new DefaultXMLParser();

            // convert from default encoded message into XML format, and send it to standard out for display
            LogToDebugConsole("HL7 XML Formatted Message Output:");
            LogToDebugConsole(xmlParser.Encode(hl7Message));
        }
        public void ParseORFR04FromDHTest()
        {
            var message =
                "MSH|^~\\&|Clinical Data Provider|DHHA|COHIECentral|COHIE|200609221408||ORF^R04||P|2.3.1\r"
                + "MSA|AA|\r"
                + "PID|2019877||2019877^^^DH^MR||LOPEZ1^JAMES^TRISTAN||19740804|M\r"
                + "OBR||00677^001|M428|CBC^CBC|||200511071505||||||||CBC^CBC|045716^STEELE||||||||DAH\r"
                + "OBX|1|NM|WBC||1.1|k/uL|5.0-16.0|L|||C\r"
                + "OBX|1|TX|WBC|1|(Ref Range: 5 k/uL)|k/uL|5.0-16.0||||C\r"
                + "OBX|1|TX|WBC||Result(s) called to and verification read-back received from:  NURSE NAN M~||||||C\r"
                + "OBX|1|TX|WBC||ICU 13:39 11  19  05||||||C\r"
                + "OBX|1|TX|WBC||Corrected on 11/29 AT 1337: Previously reported as: 1.1||||||C\r"
                + "OBX|2|NM|RBC||3.99|M/uL|3.80-5.40||||Z\r"
                + "OBX|2|TX|RBC|1|(Ref Range: 3 M/uL)|M/uL|3.80-5.40||||Z\r"
                + "OBX|3|NM|HGB||13.0|g/dL|14.0-24.0|L|||Z\r"
                + "OBX|3|TX|HGB|1|(Ref Range: 1 g/dL)|g/dL|14.0-24.0||||Z\r"
                + "OBX|4|NM|HCT||40.0|%|31.0-43.0||||Z\r"
                + "OBX|4|TX|HCT|1|(Ref Range: 3 %)|%|31.0-43.0||||Z\r"
                + "OBX|5|NM|MCV||80.0|fl|70.0-90.0||||Z\r"
                + "OBX|5|TX|MCV|1|(Ref Range: 7 fl)|fl|70.0-90.0||||Z\r"
                + "OBX|6|NM|MCH||32.0|pg|27.0-31.0|H|||Z\r"
                + "OBX|6|TX|MCH|1|(Ref Range: 2 pg)|pg|27.0-31.0||||Z\r"
                + "OBX|7|NM|MCHC||32.0|g/dL|32.0-36.0||||Z\r"
                + "OBX|7|TX|MCHC|1|(Ref Range: 3 g/dL)|g/dL|32.0-36.0||||Z\r"
                + "OBX|8|NM|RDW||17.0|%|11.5-14.5|H|||Z\r"
                + "OBX|8|TX|RDW|1|(Ref Range: 1 %)|%|11.5-14.5||||Z\r"
                + "OBX|9|NM|PLTC||2|k/uL|150-400|PL^Y|||Z\r"
                + "OBX|9|TX|PLTC|1|(Ref Range: 1 k/uL)|k/uL|150-400||||Z\r"
                + "OBX|10|NM|MPV||10.0|fL|6.2-10.0||||Z\r"
                + "OBX|10|TX|MPV|1|(Ref Range: 6 fL)|fL|6.2-10.0||||Z\r"
                + "OBR||00677^001|M428|CBC^CBC|||200511071505||||||||CBC^CBC|045716^STEELE||||||||DAH\r"
                + "OBX|1|NM|WBC||1.1|k/uL|5.0-16.0|L|||C\r"
                + "OBX|1|TX|WBC|1|(Ref Range: 5 k/uL)|k/uL|5.0-16.0||||C\r"
                + "OBX|1|TX|WBC||Result(s) called to and verification read-back received from:  NURSE NAN M~||||||C\r"
                + "OBX|1|TX|WBC||ICU 13:39 11  19  05||||||C\r"
                + "OBX|1|TX|WBC||Corrected on 11/29 AT 1337: Previously reported as: 1.1||||||C\r"
                + "OBX|2|NM|RBC||3.99|M/uL|3.80-5.40||||Z\r"
                + "OBX|2|TX|RBC|1|(Ref Range: 3 M/uL)|M/uL|3.80-5.40||||Z\r"
                + "OBX|3|NM|HGB||13.0|g/dL|14.0-24.0|L|||Z\r"
                + "OBX|3|TX|HGB|1|(Ref Range: 1 g/dL)|g/dL|14.0-24.0||||Z\r"
                + "OBX|4|NM|HCT||40.0|%|31.0-43.0||||Z\r"
                + "OBX|4|TX|HCT|1|(Ref Range: 3 %)|%|31.0-43.0||||Z\r"
                + "OBX|5|NM|MCV||80.0|fl|70.0-90.0||||Z\r"
                + "OBX|5|TX|MCV|1|(Ref Range: 7 fl)|fl|70.0-90.0||||Z\r"
                + "OBX|6|NM|MCH||32.0|pg|27.0-31.0|H|||Z\r"
                + "OBX|6|TX|MCH|1|(Ref Range: 2 pg)|pg|27.0-31.0||||Z\r"
                + "OBX|7|NM|MCHC||32.0|g/dL|32.0-36.0||||Z\r"
                + "OBX|7|TX|MCHC|1|(Ref Range: 3 g/dL)|g/dL|32.0-36.0||||Z\r"
                + "OBX|8|NM|RDW||17.0|%|11.5-14.5|H|||Z\r"
                + "OBX|8|TX|RDW|1|(Ref Range: 1 %)|%|11.5-14.5||||Z\r"
                + "OBX|9|NM|PLTC||2|k/uL|150-400|PL^Y|||Z\r"
                + "OBX|9|TX|PLTC|1|(Ref Range: 1 k/uL)|k/uL|150-400||||Z\r"
                + "OBX|10|NM|MPV||10.0|fL|6.2-10.0||||Z\r"
                + "OBX|10|TX|MPV|1|(Ref Range: 6 fL)|fL|6.2-10.0||||Z\r"
                + "OBR||00677^001|M428|CBC^CBC|||200511071505||||||||CBC^CBC|045716^STEELE||||||||DAH\r"
                + "OBX|1|NM|WBC||1.1|k/uL|5.0-16.0|L|||C\r"
                + "OBX|1|TX|WBC|1|(Ref Range: 5 k/uL)|k/uL|5.0-16.0||||C\r"
                + "OBX|1|TX|WBC||Result(s) called to and verification read-back received from:  NURSE NAN M~||||||C\r"
                + "OBX|1|TX|WBC||ICU 13:39 11  19  05||||||C\r"
                + "OBX|1|TX|WBC||Corrected on 11/29 AT 1337: Previously reported as: 1.1||||||C\r"
                + "OBX|2|NM|RBC||3.99|M/uL|3.80-5.40||||Z\r"
                + "OBX|2|TX|RBC|1|(Ref Range: 3 M/uL)|M/uL|3.80-5.40||||Z\r"
                + "OBX|3|NM|HGB||13.0|g/dL|14.0-24.0|L|||Z\r"
                + "OBX|3|TX|HGB|1|(Ref Range: 1 g/dL)|g/dL|14.0-24.0||||Z\r"
                + "OBX|4|NM|HCT||40.0|%|31.0-43.0||||Z\r"
                + "OBX|4|TX|HCT|1|(Ref Range: 3 %)|%|31.0-43.0||||Z\r"
                + "OBX|5|NM|MCV||80.0|fl|70.0-90.0||||Z\r"
                + "OBX|5|TX|MCV|1|(Ref Range: 7 fl)|fl|70.0-90.0||||Z\r"
                + "OBX|6|NM|MCH||32.0|pg|27.0-31.0|H|||Z\r"
                + "OBX|6|TX|MCH|1|(Ref Range: 2 pg)|pg|27.0-31.0||||Z\r"
                + "OBX|7|NM|MCHC||32.0|g/dL|32.0-36.0||||Z\r"
                + "OBX|7|TX|MCHC|1|(Ref Range: 3 g/dL)|g/dL|32.0-36.0||||Z\r"
                + "OBX|8|NM|RDW||17.0|%|11.5-14.5|H|||Z\r"
                + "OBX|8|TX|RDW|1|(Ref Range: 1 %)|%|11.5-14.5||||Z\r"
                + "OBX|9|NM|PLTC||2|k/uL|150-400|PL^Y|||Z\r"
                + "OBX|9|TX|PLTC|1|(Ref Range: 1 k/uL)|k/uL|150-400||||Z\r"
                + "OBX|10|NM|MPV||10.0|fL|6.2-10.0||||Z\r"
                + "OBX|10|TX|MPV|1|(Ref Range: 6 fL)|fL|6.2-10.0||||Z";

            var parser = new PipeParser();

            var m = parser.Parse(message);

            var orfR04 = m as ORF_R04;

            Assert.IsNotNull(orfR04);

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(orfR04);

            Assert.IsNotNull(recoveredMessage);
            Assert.IsFalse(recoveredMessage.IndexOf("NTE") > -1, "Returned Message added ORC segment.");
        }