public void TestObx5DataTypeIsSetFromObx2_WhenObx2IsEmptyAndDefaultIsSet_DefaultTypeIsUsed()
        {
            var expectedObservationValueType = typeof(ST);

            var message =
                "MSH|^~\\&|XPress Arrival||||200610120839||ORU^R01|EBzH1711114101206|P|2.3.1|||AL|||ASCII\r"
                + "PID|1||1711114||Appt^Test||19720501||||||||||||001020006\r"
                + "ORC|||||F\r"
                + "OBR|1|||ehipack^eHippa Acknowlegment|||200610120839|||||||||00002^eProvider^Electronic|||||||||F\r"
                + "OBX|1||||STValue||||||F\r";

            var parser  = new LegacyPipeParser();
            var options = new ParserOptions {
                DefaultObx2Type = "ST"
            };

            var parsed = (ORU_R01)parser.Parse(message, options);

            var actualObservationValueType = parsed.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0).Data;
            var obx2 = parsed.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.ValueType;

            Assert.AreEqual("ST", obx2.Value);
            Assert.IsAssignableFrom(expectedObservationValueType, actualObservationValueType);
            Assert.AreEqual("STValue", ((ST)actualObservationValueType).Value);
        }
Exemplo n.º 2
0
        public void TestValidHl7Data()
        {
            var parser = new LegacyPipeParser();
            var oru    = new ORU_R01();

            oru.MSH.MessageType.MessageType.Value  = "ORU";
            oru.MSH.MessageType.TriggerEvent.Value = "R01";
            oru.MSH.EncodingCharacters.Value       = @"^~\&";
            oru.MSH.VersionID.VersionID.Value      = "2.3.1";
            oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.ValueType.Value = "FT";
            oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).OBR.SetIDOBR.Value = "1";
            var v =
                oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0);
            var text = new ST(oru);

            text.Value = @"Th&is\.br\is\.br\A T|est\";
            v.Data     = text;

            var encodedData = parser.Encode(oru);

            var segs   = encodedData.Split('\r');
            var fields = segs[2].Split('|');
            var data   = fields[5];

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

            var parser = new LegacyPipeParser();

            var m = parser.Parse(message);

            var orfR04 = m as ORF_R04;

            Assert.IsNotNull(orfR04);

            XMLParser xmlParser = new DefaultXMLParser();

            var recoveredMessage = xmlParser.Encode(orfR04);
        }
Exemplo n.º 4
0
        public void UnEscapesData()
        {
            // Arrange
            const string content = "MSH|^~\\&|TestSys|432^testsys practice|TEST||201402171537||MDM^T02|121906|P|2.3.1||||||||\r"
                                   + "OBX|1|TX|PROBLEM FOCUSED^PROBLEM FOCUSED^test|1|\\T\\#39;Thirty days have September,\\X0D\\April\\X0A\\June,\\X0A\\and November.\\X0A\\When short February is done,\\E\\X0A\\E\\all the rest have\\T\\nbsp;31.\\T\\#39";

            var parser = new LegacyPipeParser();
            var msg    = parser.Parse(content);

            // Act
            var segment     = msg.GetStructure("OBX") as ISegment;
            var idx         = Terser.GetIndices("OBX-5");
            var segmentData = Terser.Get(segment, idx[0], idx[1], idx[2], idx[3]);

            // Assert

            // verify that data was properly un-escaped by NHapi
            // \E\X0A\E\ should be escaped to \X0A\
            // \X0A\ should be un-escaped to \n - this is configurable
            // \X0D\ should be un-escaped to \r - this is configurable
            // \t\ should be un-escaped to &
            const string expectedResult =
                "'Thirty days have September,\rApril\nJune,\nand November.\nWhen short February is done,\\X0A\\all the rest have 31.&#39";

            Assert.AreEqual(expectedResult, segmentData);
        }
Exemplo n.º 5
0
        public void TestGithubIssue24CantGetIN1Segment()
        {
            var message =
                "MSH|^~\\&|SUNS1|OVI02|AZIS|CMD|200606221348||ADT^A01|1049691900|P|2.4\r"
                + "EVN|A01|200601060800\r"
                + "PID||8912716038^^^51276|0216128^^^51276||BARDOUN^LEA SACHA||19981201|F|||AVENUE FRANC GOLD 8^^LUXEMBOURGH^^6780^150||053/12456789||N|S|||99120162652||^^^|||||B\r"
                + "PV1||O|^^|U|||07632^MORTELO^POL^^^DR.|^^^^^|||||N||||||0200001198\r"
                + "PV2|||^^AZIS||N|||200601060800\r"
                + "IN1|0001|2|314000|||||||||19800101|||1|BARDOUN^LEA SACHA|1|19981201|AVENUE FRANC GOLD 8^^LUXEMBOURGH^^6780^150|||||||||||||||||\r"
                + "ZIN|0164652011399|0164652011399|101|101|45789^Broken bone";

            var parser          = new LegacyPipeParser();
            var abstractMessage = parser.Parse(message);

            var typedMessage = abstractMessage as ADT_A01;

            // This is supposed to throw an exception with error 'IN1 does not exist in the group NHapi.Model.V24.Message.ADT_A01'
            Assert.Throws <HL7Exception>(() =>
            {
                var causesException = (IN1)typedMessage.GetStructure("IN1");
            });

            // This will work as the IN1 resides within the insurance group's structure
            var in1 = (IN1)typedMessage.GetINSURANCE(0).GetStructure("IN1");

            // old style of accessing the data
            Assert.IsTrue(typedMessage.GetINSURANCE(0).IN1.SetIDIN1.Value == "0001");

            // new style of accessing the data
            Assert.IsTrue(typedMessage.INSURANCEs.First().IN1.SetIDIN1.Value == "0001");
        }
Exemplo n.º 6
0
        public void CreateBlankMessage()
        {
            var a01       = new ADT_A01();
            var birthDate = new DateTime(1980, 4, 1);

            a01.MSH.SendingApplication.UniversalID.Value   = "ThisOne";
            a01.MSH.ReceivingApplication.UniversalID.Value = "COHIE";
            a01.PID.PatientIDExternalID.ID.Value           = "123456";
            a01.PV1.GetAttendingDoctor(0).FamilyName.Value = "Jones";
            a01.PV1.GetAttendingDoctor(0).GivenName.Value  = "Mike";
            a01.PID.DateOfBirth.TimeOfAnEvent.SetShortDate(birthDate);

            var parser = new LegacyPipeParser();

            var pipeMessage = parser.Encode(a01);

            Assert.IsNotNull(pipeMessage);

            var test    = parser.Parse(pipeMessage);
            var a01Test = test as ADT_A01;

            Assert.IsNotNull(a01Test);

            Assert.AreEqual(a01Test.MSH.ReceivingApplication.UniversalID.Value, "COHIE");
            Assert.AreEqual(a01Test.PID.PatientIDExternalID.ID.Value, "123456");

            Assert.AreEqual(a01Test.PID.DateOfBirth.TimeOfAnEvent.GetAsDate().ToShortDateString(), birthDate.ToShortDateString());

            Assert.AreEqual(a01Test.PV1.GetAttendingDoctor(0).FamilyName.Value, "Jones");
            Assert.AreEqual(a01Test.MSH.MessageType.MessageType.Value, "ADT");
            Assert.AreEqual(a01Test.MSH.MessageType.TriggerEvent.Value, "A01");
        }
Exemplo n.º 7
0
        public void TestGithubIssue25CantGetRepetition()
        {
            var message =
                "MSH|^~\\&|MILL|EMRY|MQ|EMRY|20150619155451||ADT^A08|Q2043855220T2330403781X928163|P|2.3||||||8859/1\r"
                + "EVN|A08|20150619155451\r"
                + "PID|1|935307^^^EUH MRN^MRN^EH01|25106376^^^TEC MRN~1781893^^^CLH MRN~935307^^^EUH MRN~5938067^^^EMPI|1167766^^^CPI NBR^^EXTERNAL~90509411^^^HNASYSID~10341880^^^HNASYSID~50627780^^^HNASYSID~5938067^^^MSG_CERNPHR|Patient^Test^Test^^^^Cur_Name||19400101|F||WHI|123 ENDOFTHE RD^UNIT 123^ATLANTA^GA^40000^USA^HOME^^||5555555555^HOME~6666666666^[email protected]^EMAIL|6666666666^BUS|ENG|M|OTH|12345665161^^^EUH FIN^FIN NBR^EH01|123454103|GA123450071||Non-Hispanic|||0|\"\"|\"\"|\"\"||N";

            var parser = new LegacyPipeParser();

            var m = parser.Parse(message);

            var adtA01 = m as ADT_A01; // a08 is mapped to a01

            Assert.IsNotNull(adtA01);

            for (var rep = 0; rep < adtA01.PID.PatientIDInternalIDRepetitionsUsed; rep++)
            {
                var cx = adtA01.PID.GetPatientIDInternalID(rep);
                Console.WriteLine(cx.ID.Value);
            }

            for (var rep = 0; rep < adtA01.PID.AlternatePatientIDRepetitionsUsed; rep++)
            {
                var cx = adtA01.PID.GetAlternatePatientID(rep);
                Console.WriteLine(cx.ID.Value);
            }
        }
Exemplo n.º 8
0
        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 LegacyPipeParser();

            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));
        }
Exemplo n.º 9
0
        public void TestSpecialCharacterEntryEndingSlash()
        {
            var parser = new LegacyPipeParser();
            var oru    = new ORU_R01();

            oru.MSH.MessageType.MessageType.Value  = "ORU";
            oru.MSH.MessageType.TriggerEvent.Value = "R01";
            oru.MSH.EncodingCharacters.Value       = @"^~\&";
            oru.MSH.VersionID.VersionID.Value      = "2.3.1";
            oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.ValueType.Value = "FT";
            oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).OBR.SetIDOBR.Value = "1";
            var v =
                oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0);
            var text = new ST(oru);

            text.Value = @"This\.br\is\.br\A Test~";
            v.Data     = text;

            var encodedData = parser.Encode(oru);
            var msg         = parser.Parse(encodedData);

            oru = (ORU_R01)msg;
            var data = (FT)oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0).Data;

            Assert.AreEqual(@"This\.br\is\.br\A Test~", data.Value);
        }
Exemplo n.º 10
0
        public void TestORMDescriptionExtract()
        {
            var parser  = new LegacyPipeParser();
            var results = (ORM_O01)parser.Parse(MessageORMSample);

            Assert.AreEqual(results.PATIENT.PID.DateTimeOfBirth.Description, @"Date/Time Of Birth");
        }
Exemplo n.º 11
0
        public void TestBadInputsAreHandledGracefully(string path, Type not_required)
        {
            // Arrange
            var parser = new LegacyPipeParser();
            var text   = File.ReadAllText(path);

            // Assert
            Assert.DoesNotThrow(
                () => parser.Parse(text));
        }
Exemplo n.º 12
0
        public void TestOBR5RepeatingValuesMessage()
        {
            var parser = new LegacyPipeParser();
            var oru    = (ORU_R01)parser.Parse(GetMessage());

            foreach (var obs in oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION().OBX.GetObservationValue())
            {
                Assert.IsTrue(obs.Data is FT);
            }
        }
Exemplo n.º 13
0
        public void TestSpecialCharacterEncoding()
        {
            var parser = new LegacyPipeParser();
            var oru    = new ORU_R01();

            oru = (ORU_R01)parser.Parse(GetMessage());

            var data = (FT)oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0).Data;

            Assert.AreEqual(@"This\.br\is\.br\A Test", data.Value);
        }
Exemplo n.º 14
0
        public void TestBadInputsThrowException(string path, Type expectedExceptionType)
        {
            // Arrange
            var parser = new LegacyPipeParser();
            var text   = File.ReadAllText(path);

            // Act / Assert
            var exception = Assert.Throws(expectedExceptionType, () => parser.Parse(text));

            // Write exception details to console
            Console.WriteLine(exception);
        }
        public void TestAdtA28MappingToHl7()
        {
            var a05 = new ADT_A05();

            a05.MSH.MessageType.MessageCode.Value      = "ADT";
            a05.MSH.MessageType.TriggerEvent.Value     = "A28";
            a05.MSH.MessageType.MessageStructure.Value = "ADT_A05";
            var parser = new LegacyPipeParser();
            var msg    = parser.Encode(a05);

            var data = msg.Split('|');

            Assert.AreEqual("ADT^A28^ADT_A05", data[8]);
        }
        public void ParseQRYR02()
        {
            var message =
                "MSH|^~\\&|CohieCentral|COHIE|Clinical Data Provider|TCH|20060228155525||QRY^R02^QRY_R02|1|P|2.3.1|\r"
                + "QRD|20060228155525|R|I||||10^RD&Records&0126|38923^^^^^^^^&TCH|||";

            var parser = new LegacyPipeParser();

            var m = parser.Parse(message);

            var qryR02 = m as QRY_R02;

            Assert.IsNotNull(qryR02);
            Assert.AreEqual("38923", qryR02.QRD.GetWhoSubjectFilter(0).IDNumber.Value);
        }
Exemplo n.º 17
0
        public void TestObx5DataTypeIsSetFromObx2_AndAllDataTypesAreConstructable(Type expectedObservationValueType)
        {
            var message = "MSH|^~\\&|XPress Arrival||||200610120839||ORU^R01|EBzH1711114101206|P|2.1|||AL|||ASCII\r"
                          + "PID|1||1711114||Appt^Test||19720501||||||||||||001020006\r"
                          + "ORC|||||F\r"
                          + "OBR|1|||ehipack^eHippa Acknowlegment|||200610120839|||||||||00002^eProvider^Electronic|||||||||F\r"
                          + $"OBX|1|{expectedObservationValueType.Name}|||{expectedObservationValueType.Name}Value||||||F\r";

            var parser = new LegacyPipeParser();

            var parsed = (ORU_R01)parser.Parse(message);

            var actualObservationValueInstance = parsed.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.OBSERVATIONRESULTS.Data;

            Assert.IsAssignableFrom(expectedObservationValueType, actualObservationValueInstance);
        }
Exemplo n.º 18
0
        public void TestORUR01_Enumerators()
        {
            var hl7Data =
                "MSH|^~\\&|Paceart|Medtronic|||20160628142621||ORU^R01^ORU_R01|20160628142621000001|P|2.6|||AL|NE|||||IHE_PCD_ORU_R01^IHE PCD^1.3.6.1.4.1.19376.1.6.1.9.1^ISO\r"
                + "PID|||MODEL:A3DR01 Advisa DR MRI/SERIAL:PZK600806S^^^MDT^U~^^^^Patient ID~A10000641^^^^Paceart||Patient^Test||19100000000000+0000\r"
                + "PV1|1|A\r"
                + "OBR|1||dfac748c-213c-e611-80c5-000c2996266c|754050^MDC_IDC_ENUM_SESS_TYPE_InClinic^MDC^INCLINIC^INCLINIC^MDT|||20160627041809+0000||||||||||||||||||P\r"
                + "OBX|1|ST|||TestString||||||P\r"
                + "OBX|2|NM|||9001||||||P\r"
                + "OBX|3|DTM|||20160627041809+0000||||||P";

            var parser = new LegacyPipeParser();
            var msg    = parser.Parse(hl7Data);

            Assert.IsNotNull(msg, "Message should not be null");
            var oruR01 = (ORU_R01)msg;

            Assert.AreEqual("R01", oruR01.MSH.MessageType.TriggerEvent.Value);
            Assert.AreEqual(null, oruR01.GetPATIENT_RESULT(0).PATIENT.PID.SetIDPID.Value);

            foreach (var result in oruR01.PATIENT_RESULTs)
            {
                foreach (var orderObservation in result.ORDER_OBSERVATIONs)
                {
                    var index = 1;
                    foreach (var observation in orderObservation.OBSERVATIONs)
                    {
                        if (index == 1)
                        {
                            Assert.IsTrue(observation.OBX.ValueType.Value == "ST");
                        }
                        else if (index == 2)
                        {
                            Assert.IsTrue(observation.OBX.ValueType.Value == "NM");
                        }
                        else if (index == 3)
                        {
                            Assert.IsTrue(observation.OBX.ValueType.Value == "DTM");
                        }

                        index++;
                    }

                    Assert.IsTrue(index == 4);
                }
            }
        }
        public void TestADTA04IsMappedAsA01()
        {
            var hl7Data =
                "MSH|^~\\&|CohieCentral|COHIE|Clinical Data Provider|TCH|20060228155525||ADT^A04|1|P|2.8.1|\r"
                + "EVN|\r"
                + "PID|1|12345\r"
                + "PV1|1";

            var parser = new LegacyPipeParser();
            var msg    = parser.Parse(hl7Data);

            Assert.IsNotNull(msg, "Message should not be null");
            var a04 = (ADT_A01)msg;

            Assert.AreEqual("A04", a04.MSH.MessageType.TriggerEvent.Value);
            Assert.AreEqual("1", a04.PID.SetIDPID.Value);
        }
        public void TestAdtA28MappingFromHl7()
        {
            var hl7Data =
                "MSH|^~\\&|CohieCentral|COHIE|Clinical Data Provider|TCH|20060228155525||ADT^A28^ADT_A05|1|P|2.5|\r"
                + "EVN|\r"
                + "PID|1|12345\r"
                + "PV1|1";

            var parser = new LegacyPipeParser();
            var msg    = parser.Parse(hl7Data);

            Assert.IsNotNull(msg, "Message should not be null");
            var a05 = (ADT_A05)msg;

            Assert.AreEqual("A28", a05.MSH.MessageType.TriggerEvent.Value);
            Assert.AreEqual("1", a05.PID.SetIDPID.Value);
        }
        public void TestOBR5RepeatingValuesMessage_DataTypesAndRepetitions()
        {
            var parser = new LegacyPipeParser();
            var oru    = (ORU_R01)parser.Parse(GetMessage());

            var expectedObservationCount          = 3;
            var parsedObservations                = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).OBSERVATIONRepetitionsUsed;
            var parsedCorrectNumberOfObservations = parsedObservations == expectedObservationCount;

            Assert.IsTrue(
                parsedCorrectNumberOfObservations,
                $"Expected 3 OBX repetitions used for this segment, found {parsedObservations}");

            foreach (var obs in oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION().OBX.GetObservationValue())
            {
                Assert.IsTrue(obs.Data is FT);
            }
        }
Exemplo n.º 22
0
        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 LegacyPipeParser();

            var pipeOutput = pipeParser.Encode(qryR02);

            Assert.IsNotNull(pipeOutput);
            Assert.IsFalse(string.Empty.Equals(pipeOutput));
        }
Exemplo n.º 23
0
        public void Test_26DataTypesParseCorrectly()
        {
            var message =
                "MSH|^~\\&|XPress Arrival||||200610120839||ORU^R01|EBzH1711114101206|P|2.6|||AL|||ASCII\r"
                + "PID|1||1711114||Appt^Test||19720501||||||||||||001020006\r"
                + "ORC|||||F\r"
                + "OBR|1|||ehipack^eHippa Acknowlegment|||200610120839|||||||||00002^eProvider^Electronic|||||||||F\r"
                + "OBX|1|DT|||DTValue||||||F\r"
                + "OBX|2|ST|||STValue||||||F\r"
                + "OBX|3|TM|||TMValue||||||F\r"
                + "OBX|4|ID|||IDValue||||||F\r"
                + "OBX|5|IS|||ISValue||||||F";

            var parser = new LegacyPipeParser();
            var oru    = new ORU_R01();

            oru = (ORU_R01)parser.Parse(message);

            var expectedObservationCount          = 5;
            var parsedObservations                = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).OBSERVATIONRepetitionsUsed;
            var parsedCorrectNumberOfObservations = parsedObservations == expectedObservationCount;

            Assert.IsTrue(
                parsedCorrectNumberOfObservations,
                string.Format("Expected {1} OBX repetitions used for this segment, found {0}", parsedObservations, expectedObservationCount));

            var index = 0;
            var obs   = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(index).OBX.GetObservationValue().FirstOrDefault();

            Assert.IsTrue(obs.Data is DT);
            index++;
            obs = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(index).OBX.GetObservationValue().FirstOrDefault();
            Assert.IsTrue(obs.Data is ST);
            index++;
            obs = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(index).OBX.GetObservationValue().FirstOrDefault();
            Assert.IsTrue(obs.Data is TM);
            index++;
            obs = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(index).OBX.GetObservationValue().FirstOrDefault();
            Assert.IsTrue(obs.Data is ID);
            index++;
            obs = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(index).OBX.GetObservationValue().FirstOrDefault();
            Assert.IsTrue(obs.Data is IS);
        }
Exemplo n.º 24
0
        public void ParseADTA01()
        {
            var message = "MSH|^~\\&|ADT|Admitting|RADIO|ARTEFACT|200710061035||ADT^A01|00000040|P|2.1\r"
                          + "EVN|A01|200710061035\r"
                          + "PID||1144270^4^M10|0699999^2^M10||XXXXXX|XXXCXCXX|20071006|F|||10 THE ADDRESS||(450)999-9999|||S||||||||||||||N\r"
                          + "NK1|1\r"
                          + "PV1||I|19^D415^01P|05|07008496||180658^DOCTOR NAME|||81|||||||180658^DOCTOR NAME|NN||01||||||||||||||||||||||||200710061018\r"
                          + "DG1|1|I9|412|NAISSANCE||01\r"
                          + "Z01|1||S|NOUVEAU-NE||FATHER NAME^D|||||0||||A||||||N|||1|GFATHER NAME|G-PERE||(450)432-9999|21||S||20071006101800||N||0||||0000000000||||||||00000000000000|00000000||||||||||01|00000000|00000000000000|05|00|75017|00|00|||||||||||||||||||000000000|000000000|||00000000000000|||01|0";

            var parser = new LegacyPipeParser();

            var m = parser.Parse(message);

            var parsedMessage = m as ADT_A01;

            Assert.IsNotNull(parsedMessage);
            Assert.AreEqual("1144270", parsedMessage.PID.PATIENTIDEXTERNALEXTERNALID.IDNumber.Value);
        }
Exemplo n.º 25
0
        public void ParseKnownMessageTypeFromFile()
        {
            var filePath     = @"C:\Users\Duane\Desktop\ParseErrors\20160628_142635469_b94dde77-857a-4881-8915-6814809c5442.HL7";
            var fileContents = File.ReadAllText(filePath);

            var parser = new LegacyPipeParser();
            var msg    = parser.Parse(fileContents);

            Assert.IsNotNull(msg, "Message should not be null");
            var oruR01 = (ORU_R01)msg;

            Assert.AreEqual("R01", oruR01.MSH.MessageType.TriggerEvent.Value);
            Assert.AreEqual(null, oruR01.GetPATIENT_RESULT(0).PATIENT.PID.SetIDPID.Value);
            var knownDTM = oruR01.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.ValueType.Value;

            Assert.AreEqual("DTM", knownDTM);
            var knownDTMValue = oruR01.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0).Data as DTM;

            Assert.AreEqual("20160627041809+0000", knownDTMValue.ToString());
        }
Exemplo n.º 26
0
        public void TestPopulateEVNSegmenValuesGenerically()
        {
            var message =
                "MSH|^~\\&|SUNS1|OVI02|AZIS|CMD|200606221348||ADT^A01|1049691900|P|2.3\r"
                + "EVN|A01|200601060800\r"
                + "PID||8912716038^^^51276|0216128^^^51276||BARDOUN^LEA SACHA||19981201|F|||AVENUE FRANC GOLD 8^^LUXEMBOURGH^^6780^150||053/12456789||N|S|||99120162652||^^^|||||B\r"
                + "PV1||O|^^|U|||07632^MORTELO^POL^^^DR.|^^^^^|||||N||||||0200001198\r"
                + "PV2|||^^AZIS||N|||200601060800\r"
                + "IN1|0001|2|314000|||||||||19800101|||1|BARDOUN^LEA SACHA|1|19981201|AVENUE FRANC GOLD 8^^LUXEMBOURGH^^6780^150|||||||||||||||||\r"
                + "ZIN|0164652011399|0164652011399|101|101|45789^Broken bone";

            var parser          = new LegacyPipeParser();
            var abstractMessage = parser.Parse(message);

            // this is the normal / expected way of working with NHapi parsed messages
            var typedMessage = abstractMessage as ADT_A01;

            if (typedMessage != null)
            {
                typedMessage.EVN.OperatorID.FamilyName.Value = "Surname";
                typedMessage.EVN.OperatorID.GivenName.Value  = "Firstname";
            }

            var pipeDelimitedMessage = parser.Encode(typedMessage);

            // alternatively, you can apply this modification to any HL7 2.3 message
            // with an EVN segment using this more generic method
            var genericMethod = abstractMessage as AbstractMessage;
            var evn           = genericMethod.GetStructure("EVN") as EVN;

            if (evn != null)
            {
                evn.OperatorID.FamilyName.Value = "SurnameGeneric";
                evn.OperatorID.GivenName.Value  = "FirstnameGeneric";
            }

            pipeDelimitedMessage = parser.Encode(typedMessage);
        }
Exemplo n.º 27
0
        public void TestORUR01_HasDTMFieldParsed()
        {
            var hl7Data =
                "MSH|^~\\&|Paceart|Medtronic|||20160628142621||ORU^R01^ORU_R01|20160628142621000001|P|2.6|||AL|NE|||||IHE_PCD_ORU_R01^IHE PCD^1.3.6.1.4.1.19376.1.6.1.9.1^ISO\r"
                + "PID|||MODEL:A3DR01 Advisa DR MRI/SERIAL:PZK600806S^^^MDT^U~^^^^Patient ID~A10000641^^^^Paceart||Patient^Test||19100000000000+0000\r"
                + "PV1|1|A\r"
                + "OBR|1||dfac748c-213c-e611-80c5-000c2996266c|754050^MDC_IDC_ENUM_SESS_TYPE_InClinic^MDC^INCLINIC^INCLINIC^MDT|||20160627041809+0000||||||||||||||||||P\r"
                + "OBX|1|DTM|721025^MDC_IDC_SESS_DTM^MDC||20160627041809+0000||||||P";

            var parser = new LegacyPipeParser();
            var msg    = parser.Parse(hl7Data);

            Assert.IsNotNull(msg, "Message should not be null");
            var oruR01 = (ORU_R01)msg;

            Assert.AreEqual("R01", oruR01.MSH.MessageType.TriggerEvent.Value);
            Assert.AreEqual(null, oruR01.GetPATIENT_RESULT(0).PATIENT.PID.SetIDPID.Value);
            var knownDTM = oruR01.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.ValueType.Value;

            Assert.AreEqual("DTM", knownDTM);
            var knownDTMValue = oruR01.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0).Data as DTM;

            Assert.AreEqual("20160627041809+0000", knownDTMValue.ToString());
        }
Exemplo n.º 28
0
        public void TestORUR01_AddAndRemoveMethods()
        {
            var hl7Data =
                "MSH|^~\\&|Paceart|Medtronic|||20160628142621||ORU^R01^ORU_R01|20160628142621000001|P|2.6|||AL|NE|||||IHE_PCD_ORU_R01^IHE PCD^1.3.6.1.4.1.19376.1.6.1.9.1^ISO\r"
                + "PID|||MODEL:A3DR01 Advisa DR MRI/SERIAL:PZK600806S^^^MDT^U~^^^^Patient ID~A10000641^^^^Paceart||Patient^Test||19100000000000+0000\r"
                + "PV1|1|A\r"
                + "OBR|1||dfac748c-213c-e611-80c5-000c2996266c|754050^MDC_IDC_ENUM_SESS_TYPE_InClinic^MDC^INCLINIC^INCLINIC^MDT|||20160627041809+0000||||||||||||||||||P\r"
                + "OBX|1|ST|||TestString||||||P\r"
                + "OBX|2|NM|||9001||||||P\r"
                + "OBX|3|DTM|||20160627041809+0000||||||P";

            var parser = new LegacyPipeParser();
            var msg    = parser.Parse(hl7Data);

            Assert.IsNotNull(msg, "Message should not be null");
            var oruR01 = (ORU_R01)msg;

            Assert.AreEqual("R01", oruR01.MSH.MessageType.TriggerEvent.Value);
            Assert.AreEqual(null, oruR01.GetPATIENT_RESULT(0).PATIENT.PID.SetIDPID.Value);

            foreach (var result in oruR01.PATIENT_RESULTs)
            {
                foreach (var orderObservation in result.ORDER_OBSERVATIONs)
                {
                    // Add observation of value type 'NO' and assert that the array reflects the expected state
                    var beforeCount    = orderObservation.OBSERVATIONs.Count();
                    var newObservation = orderObservation.AddOBSERVATION();
                    newObservation.OBX.ValueType.Value = "NO";
                    var afterAddCount = orderObservation.OBSERVATIONs.Count();
                    Assert.IsTrue(afterAddCount > beforeCount);

                    var last = orderObservation.OBSERVATIONs.Last().OBX.ValueType.Value;
                    Assert.IsTrue(last == "NO");

                    // Remove added observation of value type 'NO' using object reference and assert that the array reflects the expected state
                    orderObservation.RemoveOBSERVATION(newObservation);
                    var afterRemoveCount = orderObservation.OBSERVATIONs.Count();
                    Assert.IsTrue(afterRemoveCount == beforeCount);

                    last = orderObservation.OBSERVATIONs.Last().OBX.ValueType.Value;
                    Assert.IsTrue(last == "DTM");

                    // Added observation of value type 'NO' using object reference and assert that the array reflects the expected state
                    newObservation = orderObservation.AddOBSERVATION();
                    newObservation.OBX.ValueType.Value = "NO";
                    afterAddCount = orderObservation.OBSERVATIONs.Count();
                    Assert.IsTrue(afterAddCount > beforeCount);

                    // Remove added observation of value type 'NO' using index and assert that the array reflects the expected state
                    orderObservation.RemoveOBSERVATIONAt(orderObservation.OBSERVATIONRepetitionsUsed - 1);
                    afterRemoveCount = orderObservation.OBSERVATIONs.Count();
                    Assert.IsTrue(afterRemoveCount == beforeCount);

                    last = orderObservation.OBSERVATIONs.Last().OBX.ValueType.Value;
                    Assert.IsTrue(last == "DTM");

                    // Assert that the array reflects the expected initial state
                    var index = 1;
                    foreach (var observation in orderObservation.OBSERVATIONs)
                    {
                        if (index == 1)
                        {
                            Assert.IsTrue(observation.OBX.ValueType.Value == "ST");
                        }
                        else if (index == 2)
                        {
                            Assert.IsTrue(observation.OBX.ValueType.Value == "NM");
                        }
                        else if (index == 3)
                        {
                            Assert.IsTrue(observation.OBX.ValueType.Value == "DTM");
                        }

                        index++;
                    }

                    Assert.IsTrue(index == 4);

                    // Remove the middle 'NM' Field and assert that the array reflects the expected state
                    orderObservation.RemoveOBSERVATIONAt(1);

                    index = 1;
                    foreach (var observation in orderObservation.OBSERVATIONs)
                    {
                        if (index == 1)
                        {
                            Assert.IsTrue(observation.OBX.ValueType.Value == "ST");
                        }
                        else if (index == 2)
                        {
                            Assert.IsTrue(observation.OBX.ValueType.Value == "DTM");
                        }

                        index++;
                    }

                    Assert.IsTrue(index == 3);

                    // Remove the first Item by object reference and assert that the remaining item is the 'DTM' field
                    orderObservation.RemoveOBSERVATION(orderObservation.OBSERVATIONs.First());

                    var lastRemaining = orderObservation.OBSERVATIONs.First();
                    Assert.IsTrue(lastRemaining.OBX.ValueType.Value == "DTM");

                    Assert.IsTrue(orderObservation.OBSERVATIONRepetitionsUsed == 1);
                }
            }
        }
Exemplo n.º 29
0
        public void TestGithubIssue58ProblemWithMultipleOrder_Observations()
        {
            var message =
                "MSH|^~\\&|MOLIS|TEAMW|||20040322151046||ORU^R01|2116|P|2.4||||||8859\r"
                + "PID|1|1847|50381^^^^^MOLIS~^^^^^VTD||TEST A^||19711125|F|||test^^Roma^^00144^||||\r"
                + "ORC|NW|FA9999020000^MOLIS|FA9999020000^MOLIS|FA99990200^MOLIS|CM||^^^20030331053409^^R|||||MOLIS^SYSMEX MOLIS^^^^^^^^^^MOLIS||||||||||||\r"
                + "OBR|1|FA9999020000^MOLIS|FA9999020000^MOLIS|00^^MOLIS||20030327000000|20030331053409|||||||||MOLIS^SYSMEX MOLIS^^^^^^^^^^MOLIS|||||||||||^^^20030331053409^^R||||||||||||||||||||\r"
                + "NTE|0||Isolierte Cardiolipin-Autoantik�rper vom Typ IgM in niedriger Konzentration sind von fraglicher klinischer Relevanz. Es empfiehlt sich eine Kontrolle aus einer neuen Probe und die zus�tzliche Bestimmung der beta-2-Glykoprotein-Autoantik�rper.|RE\r"
                + "NTE|0||Umlaute Test : ������������|RE\r"
                + "NTE|0||Ende Test Umlaute|RE\r"
                + "OBX|1|FT|ALLERG^Allergie^MOLIS||vv Dies eist ein Test zum Drucke\\.br\\ etwas l�ngeren Textes auf dem Allergiepass||||||C|||20030331053409|||||\r"
                + "ORC|NW|FA9999020018^MOLIS|FA9999020018^MOLIS|FA99990200^MOLIS|CM||^^^20030331053409^^R|||||MOLIS^SYSMEX MOLIS^^^^^^^^^^MOLIS||||||||||||\r"
                + "OBR|2|FA9999020018^MOLIS|FA9999020018^MOLIS|18^Immunologie^MOLIS||20030327000000|20030331053409|||||||||MOLIS^SYSMEX MOLIS^^^^^^^^^^MOLIS|||||||||||^^^20030331053409^^R||||||||||||||||||||\r"
                + "OBX|1|TX|ACLAS^Anti-Cardiolipin-Screen^MOLIS||negativ|MOC^^L|(<1.0)||||C|||20030331053409|||||\r"
                + "OBX|2|NM|ACLAG^Anti-Cardiolipin IgG^MOLIS||0.2|MOC^^L|(<1.0)||||F|||20030331053409|||||\r"
                + "NTE|1||Bitte beachten: Normwert- und Methoden�nderung zum 13.03.03.|RE\r"
                + "OBX|3|NM|ACLAM^Anti-Cardiolipin IgM^MOLIS||111.3|MOC^^L|(<1.0)|H|||C|||20030331053409|||||\r"
                + "NTE|1||Bitte beachten: Normwert- und Methoden�nderung zum 13.03.03.|RE\r"
                + "ORC|NW|FA9999020026^MOLIS|FA9999020026^MOLIS|FA99990200^MOLIS|CM||^^^20030331053409^^R|||||MOLIS^SYSMEX MOLIS^^^^^^^^^^MOLIS||||||||||||\r"
                + "OBR|3|FA9999020026^MOLIS|FA9999020026^MOLIS|26^Hormone^MOLIS||20030327000000|20030331053409|||||||||MOLIS^SYSMEX MOLIS^^^^^^^^^^MOLIS|||||||||||^^^20030331053409^^R||||||||||||||||||||\r"
                + "OBX|1|NM|FSH^FSH^MOLIS||1.0|U/l^^L|(1.6-12.0)Follikul�r \\ (8.0-22.0)Peak \\ (0.9-12.0)Luteal \\ (1.0-17.0)Kontrazeptiva \\ (35-151)Menopause||||C|||20030331053409|||||\r"
                + "OBX|2|NM|LH^LH^MOLIS||37.4|U/l^^L|(1.8-13.4)Follikul�r \\ (15.6-78.9)Peak \\ (0.7-19.4)Luteal \\ (1.0-15.0)Kontrazeptiva \\ (10.8-61.4)Menopause||||F|||20030331053409|||||\r"
                + "OBX|3|NM|LHFSHQ^LH-FSH-Quotient^MOLIS||37.4||(<2.0)|H|||F|||20030331053409|||||\r"
                + "OBX|4|NM|PROL^Prolactin^MOLIS||10.3|�g/l^^L|(2.3-25.0) \\ (2.3-10.0)Menopause||||F|||20030331053409|||||\r"
                + "OBX|5|NM|E2^Estradiol, E2^MOLIS||39|pmol/l^^L|(70-672)Follikul�r \\ (551-1938)Peak \\ (220-774)Luteal \\ (<114)Menopause||||F|||20030331053409||||| ";

            var parser = new LegacyPipeParser();

            var m = parser.Parse(message);

            var oru_r = m as ORU_R01;

            foreach (var pr in oru_r.PATIENT_RESULTs)
            {
                var resultSet = 1;

                var expectedRepetitions = 3; // 3 orders
                Assert.IsTrue(
                    pr.ORDER_OBSERVATIONRepetitionsUsed == expectedRepetitions,
                    $"Expected {expectedRepetitions} in result {resultSet}");

                foreach (var oo in pr.ORDER_OBSERVATIONs)
                {
                    if (resultSet == 1)
                    {
                        expectedRepetitions = 1;
                        Assert.IsTrue(
                            oo.OBSERVATIONRepetitionsUsed == expectedRepetitions,
                            $"Expected {expectedRepetitions} in result {resultSet}");

                        var obx               = oo.OBSERVATIONs.First().OBX;
                        var valueType         = obx.ValueType.Value;
                        var expectedValueType = "FT";

                        Assert.IsTrue(
                            valueType == expectedValueType,
                            $"Expected Value Type of {expectedValueType} but found {valueType} for result set {resultSet}");

                        var data   = obx.GetObservationValue(0);
                        var value  = data.Data.ToString();
                        var toFind = "Allergiepass";

                        Assert.IsTrue(
                            value.Contains(toFind),
                            $"Expected to find '{toFind}' in data '{value}' but didn't.");
                    }

                    if (resultSet == 2)
                    {
                        expectedRepetitions = 3;
                        Assert.IsTrue(
                            oo.OBSERVATIONRepetitionsUsed == expectedRepetitions,
                            $"Expected {expectedRepetitions} in result {resultSet}");

                        var obx               = oo.OBSERVATIONs.First().OBX;
                        var valueType         = obx.ValueType.Value;
                        var expectedValueType = "TX";

                        Assert.IsTrue(
                            valueType == expectedValueType,
                            $"Expected Value Type of {expectedValueType} but found {valueType} for result set {resultSet}");

                        var data   = obx.GetObservationValue(0);
                        var value  = data.Data.ToString();
                        var toFind = "negativ";

                        Assert.IsTrue(
                            value.Contains(toFind),
                            $"Expected to find '{toFind}' in data '{value}' but didn't.");
                    }

                    if (resultSet == 3)
                    {
                        expectedRepetitions = 5;
                        Assert.IsTrue(
                            oo.OBSERVATIONRepetitionsUsed == expectedRepetitions,
                            $"Expected {expectedRepetitions} in result {resultSet}");

                        var obx               = oo.OBSERVATIONs.First().OBX;
                        var valueType         = obx.ValueType.Value;
                        var expectedValueType = "NM";

                        Assert.IsTrue(
                            valueType == expectedValueType,
                            $"Expected Value Type of {expectedValueType} but found {valueType} for result set {resultSet}");

                        var data   = obx.GetObservationValue(0);
                        var value  = data.Data.ToString();
                        var toFind = "1.0";

                        Assert.IsTrue(
                            value.Contains(toFind),
                            $"Expected to find '{toFind}' in data '{value}' but didn't.");
                    }

                    resultSet++;
                }
            }
        }
Exemplo n.º 30
0
        public void TestIN1andIN2fieldRepetitions()
        {
            var message =
                "MSH|^~\\&|EMM|SKL|TOE|SKL|202102031237||ADT^A08|36711904|P|2.3|||||D||DE\r"
                + "EVN|A08|202102031237|202102031027||KKLLNN||\r"
                + "PID|1|1000|1000||Test^Max^^^^||19370609|F|||NoSuch Str. 20^^Luneburg^^21337^D^L||04131/9786438^^PH|||||||||||N||D|\r"
                + "NK1|1|Fr.Test^|6^Tochter|^^^^|||||||||||U|^YYYYMMDDHHMMSS|||||||||||||||||^^^ORBIS^PN^^^^~^^^ORBIS^PI^^^^~^^^ORBIS^PT^^^^|||||\r"
                + "IN1|1||102114819^^^^NII~17101^^^^NIIP~AOK_00044^^^^XX|Die Gesundheitskasse~Comp 2~Comp 3|Hans-Böckler-Allee 30^^Hannover^^30001^D^P~Street 2^^Berlin~Street 3^^Moscow|John^Peak~Kit^Fin|0413189314641^PRN^PH^^^04131^89314641^~^PRN^FX^^^^^||AOK^1^^^&gesetzliche Krankenkasse^^NII~AOK^1^^^^^U|9283~7766~786~77663|Org1~Org2|||||Test^Max^^^^~Testor^N~Testoff^J~Testior^Y||19370609|Wilhelm Str. 44^^Lüneburg^^21337^D^P~Best Str^^Berlin|||H|||||||||R|||||S890768688|||||||W|Addr1~Addr2|||||S8907^^^^^^^~S9999|\r"
                + "IN2|1234^^^^AMA~4567^^^^LANR||^Fam1~^Fam2||P~G~E||FN1~FN2~FN3~FN4||SP1~SP2~SP3^Tomas|||||||||||||SpCov1~SpCov2|||||||^PC^100||||D  |||J|||||||||||||||||||||||||||041319786438||||||||\r"
                + "ZBE|13033374^ORBIS|202102031027|202102031237|UPDATE|";

            var parser = new LegacyPipeParser();

            var m = parser.Parse(message);

            var adtA08 = m as ADT_A01; // a08 is mapped to a01

            Assert.IsNotNull(adtA08);

            var in1_3 = adtA08.GetINSURANCE().IN1.GetInsuranceCompanyID();

            Assert.AreEqual(in1_3.Length, 3);
            Assert.AreEqual(in1_3[0].IdentifierTypeCode.Value, "NII");
            Assert.AreEqual(in1_3[1].IdentifierTypeCode.Value, "NIIP");
            Assert.AreEqual(in1_3[2].IdentifierTypeCode.Value, "XX");

            var in1_4 = adtA08.GetINSURANCE().IN1.GetInsuranceCompanyName();

            Assert.AreEqual(in1_4.Length, 3);
            Assert.AreEqual(in1_4[2].OrganizationName.Value, "Comp 3");

            var in1_5 = adtA08.GetINSURANCE().IN1.GetInsuranceCompanyAddress();

            Assert.AreEqual(in1_5.Length, 3);
            Assert.AreEqual(in1_5[0].City.Value, "Hannover");
            Assert.AreEqual(in1_5[1].City.Value, "Berlin");
            Assert.AreEqual(in1_5[2].City.Value, "Moscow");

            var in1_6 = adtA08.GetINSURANCE().IN1.GetInsuranceCoContactPpers();

            Assert.AreEqual(in1_6.Length, 2);
            Assert.AreEqual(in1_6[0].GivenName.Value, "Peak");
            Assert.AreEqual(in1_6[1].GivenName.Value, "Fin");

            var in1_7 = adtA08.GetINSURANCE().IN1.GetInsuranceCoPhoneNumber();

            Assert.AreEqual(in1_7.Length, 2);
            Assert.AreEqual(in1_7[0].TelecommunicationEquipmentType.Value, "PH");
            Assert.AreEqual(in1_7[1].TelecommunicationEquipmentType.Value, "FX");

            var in1_9 = adtA08.GetINSURANCE().IN1.GetGroupName();

            Assert.AreEqual(in1_9.Length, 2);
            Assert.AreEqual(in1_9[0].IdentifierTypeCode.Value, "NII");
            Assert.AreEqual(in1_9[1].IdentifierTypeCode.Value, "U");

            var in1_10 = adtA08.GetINSURANCE().IN1.GetInsuredSGroupEmployerID();

            Assert.AreEqual(in1_10.Length, 4);

            var in1_11 = adtA08.GetINSURANCE().IN1.GetInsuredSGroupEmpName();

            Assert.AreEqual(in1_11.Length, 2);

            var in1_16 = adtA08.GetINSURANCE().IN1.GetNameOfInsured();

            Assert.AreEqual(in1_16.Length, 4);
            Assert.AreEqual(in1_16[3].GivenName.Value, "Y");

            var in1_19 = adtA08.GetINSURANCE().IN1.GetInsuredSAddress();

            Assert.AreEqual(in1_19.Length, 2);
            Assert.AreEqual(in1_19[1].City.Value, "Berlin");

            var in1_44 = adtA08.GetINSURANCE().IN1.GetInsuredSEmployerAddress();

            Assert.AreEqual(in1_44.Length, 2);
            Assert.AreEqual(in1_44[0].StreetAddress.Value, "Addr1");
            Assert.AreEqual(in1_44[1].StreetAddress.Value, "Addr2");

            var in1_49 = adtA08.GetINSURANCE().IN1.GetInsuredSIDNumber();

            Assert.AreEqual(in1_49.Length, 2);
            Assert.AreEqual(in1_49[0].ID.Value, "S8907");
            Assert.AreEqual(in1_49[1].ID.Value, "S9999");

            var in2_1 = adtA08.GetINSURANCE().IN2.GetInsuredSEmployeeID();

            Assert.AreEqual(in2_1.Length, 2);
            Assert.AreEqual(in2_1[0].IdentifierTypeCode.Value, "AMA");
            Assert.AreEqual(in2_1[1].IdentifierTypeCode.Value, "LANR");

            var in2_3 = adtA08.GetINSURANCE().IN2.GetInsuredSEmployerName();

            Assert.AreEqual(in2_3.Length, 2);
            Assert.AreEqual(in2_3[0].FamilyName.Value, "Fam1");
            Assert.AreEqual(in2_3[1].FamilyName.Value, "Fam2");

            var in2_5 = adtA08.GetINSURANCE().IN2.GetMailClaimParty();

            Assert.AreEqual(in2_5.Length, 3);
            Assert.AreEqual(in2_5[0].Value, "P");
            Assert.AreEqual(in2_5[1].Value, "G");
            Assert.AreEqual(in2_5[2].Value, "E");

            var in2_7 = adtA08.GetINSURANCE().IN2.GetMedicaidCaseName();

            Assert.AreEqual(in2_7.Length, 4);
            Assert.AreEqual(in2_7[3].FamilyName.Value, "FN4");

            var in2_9 = adtA08.GetINSURANCE().IN2.GetChampusSponsorName();

            Assert.AreEqual(in2_9.Length, 3);
            Assert.AreEqual(in2_9[2].GivenName.Value, "Tomas");

            var in2_22 = adtA08.GetINSURANCE().IN2.GetSpecialCoverageApprovalName();

            Assert.AreEqual(in2_22.Length, 2);
            Assert.AreEqual(in2_22[1].FamilyName.Value, "SpCov2");
        }