public void ParseORMo01ToXml() { string Message = @"MSH|^~\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443 PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188 ORC|NW|01444^00001|||||||||||L OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE "; PipeParser Parser = new PipeParser(); IMessage m = Parser.Parse(Message); ORM_O01 ormo01 = m as ORM_O01; XMLParser xmlParser = new DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(ormo01); Assert.AreNotEqual(string.Empty, recoveredMessage); XmlDocument ormDoc = new XmlDocument(); ormDoc.LoadXml(recoveredMessage); Assert.IsNotNull(ormDoc); }
public void ParseORMo01ToXml() { string Message = @"MSH|^~\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443 PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188 ORC|NW|01444^00001|||||||||||L OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE "; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORM_O01 ormo01 = m as NHapi.Model.V231.Message.ORM_O01; NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(ormo01); Assert.AreNotEqual(string.Empty, recoveredMessage); System.Xml.XmlDocument ormDoc = new System.Xml.XmlDocument(); ormDoc.LoadXml(recoveredMessage); Assert.IsNotNull(ormDoc); }
public void ParseORRo02ToXml() { string Message = @"MSH|^~\&|INVISION|DHC|SUNQUEST LAB||200607100719||ORR^O02|ORDR|T|2.3.1|LAB PID|0001||3017864||HILBERT^MARY||19440823|F||W||||||||40244246 PV1|0001|O|LW||||888883^DOCTOR, UNASSIGNED||||||||||888883|O|000000031540 ORC|NA|00003^00001|F1492|||||||||888883 OBR||00003^00001|F1492|RESPC^CULTURE RESPIRATORY ROUTINE|||||||L|||||||||F1492|||||||^ONCE&ONCE^^200607070600^200607070600^ROUTINE "; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORR_O02 msg = m as NHapi.Model.V231.Message.ORR_O02; NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(msg); Assert.AreNotEqual(string.Empty, recoveredMessage); System.Xml.XmlDocument orrDoc = new System.Xml.XmlDocument(); orrDoc.LoadXml(recoveredMessage); Assert.IsNotNull(orrDoc); }
public void CreateBlankMessage() { ADT_A01 a01 = new ADT_A01(); DateTime 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.AttendingDoctor.FamilyName.Value = "Jones"; a01.PV1.AttendingDoctor.GivenName.Value = "Mike"; a01.PID.DateOfBirth.TimeOfAnEvent.SetShortDate(birthDate); PipeParser parser = new PipeParser(); string pipeMessage = parser.Encode(a01); Assert.IsNotNull(pipeMessage); IMessage test = parser.Parse(pipeMessage); ADT_A01 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.AttendingDoctor.FamilyName.Value, "Jones"); Assert.AreEqual(a01Test.MSH.MessageType.MessageType.Value, "ADT"); Assert.AreEqual(a01Test.MSH.MessageType.TriggerEvent.Value, "A01"); }
/// <summary> /// Test /// </summary> /// <param name="msg"></param> /// <returns></returns> public override ValidationException[] test(IMessage msg) { ValidationException[] result = new ValidationException[0]; foreach (SegmentMandatoryRule rule in segmentRules) { bool flag1 = (rule.Version == "*") || (msg.Version == rule.Version); string structureName = msg.GetStructureName(); string[] sNames = structureName.Split('_'); bool flag2 = (rule.MessageType == "*") || (sNames[0] == rule.MessageType); bool flag3 = (rule.TriggerEvent == "*") || (sNames[1] == rule.TriggerEvent); if (flag1 && flag2 && flag3) { PipeParser parser = new PipeParser(); if (!parser.SegmentExists(msg, rule.MadatorySegment)) { result = new ValidationException[1] { new ValidationException(string.Format("Segment {0} not available in message", rule.MadatorySegment)) }; } } if (result.Count() > 0) break; } return result; }
public IList<Medication> parse(string message) { PipeParser parser = new PipeParser(); RTB_K13 rtb_k13 = (RTB_K13)parser.Parse(message); string responseStatus = rtb_k13.QAK.QueryResponseStatus.Value; if (String.Equals("NF", responseStatus, StringComparison.CurrentCultureIgnoreCase)) { // TODO - see RxProfileDecoder.decode return null; } if (!String.Equals("OK", responseStatus, StringComparison.CurrentCultureIgnoreCase)) { throw new MdoException("Received processing error: " + message); } int recordCount = Int32.Parse(rtb_k13.QAK.ThisPayload.Value); IList<Medication> meds = new List<Medication>(); for (int i = 0; i < recordCount; i++) { RDT rdt = rtb_k13.ROW_DEFINITION.GetRDT(i); meds.Add(buildMedication(rdt)); } return meds; }
public void ParseORFR04ToXmlNoNTE() { string Message = @"MSH|^~\&|Query Result Locator|Query Facility Name|Query Application Name|ST ELSEWHERE HOSPITAL|20051024074506||ORF^R04|432|P|2.3.1| 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|"; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORF_R04 orfR04 = m as NHapi.Model.V231.Message.ORF_R04; Assert.IsNotNull(orfR04); NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(orfR04); Assert.IsNotNull(recoveredMessage); Assert.IsFalse(recoveredMessage.IndexOf("NTE") > -1, "Returned Message added ORC segment."); }
public void ParseORFR04ToXML() { string message = @"MSH|^~\&|Query Result Locator|Query Facility Name|Query Application Name|ST ELSEWHERE HOSPITAL|20051024074506||ORF^R04|432|P|2.3| 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(string.Empty.Equals(recoveredMessage)); }
public static String GetHL7Event(String message) { var parser = new NHapi.Base.Parser.PipeParser(); var parsedMessage = parser.Parse(message); //Terse it! Terser terser = new Terser(parsedMessage); //Grab RequiredFields string sEventType = terser.Get("/MSH-9-1"); string sMessageType = terser.Get("/MSH-9-2"); //Get the message type and trigger event var msgType = parsedMessage.GetStructureName(); //Console.WriteLine("msg type = {0}", sMessageType); // = ADT_EVENT //Get the message in raw, pipe-delimited format var pipeDelimitedMessage = parser.Encode(parsedMessage); //Console.WriteLine("msg = {0}", pipeDelimitedMessage); return(sMessageType); //msgType; //pipeDelimitedMessage; }
public void ParseORMwithCompleteOBXToXML() { string Message = @"MSH|^~\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443 PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188 ORC|NW|01444^00001|||||||||||L OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE OBX|1|TX|SDES||Blood, peripheral||||||Z OBX|2|TX|SREQ||LEFT ANTECUBITAL||||||Z OBX|3|TX|CULT||Beta hemolytic Streptococcus Group A||||||Z OBX|4|TX|CULT||Critical result(s) called to and verification "; Message += "\"read-back\""; Message += @" received from: Nu~||||||Z "; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORM_O01 msgObj = m as NHapi.Model.V231.Message.ORM_O01; Assert.IsNotNull(msgObj); NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(msgObj); Assert.IsNotNull(recoveredMessage); Assert.IsFalse(string.Empty.Equals(recoveredMessage)); }
public void ParseORMwithOBXToXML() { string Message = @"MSH|^~\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443 PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188 ORC|NW|01444^00001|||||||||||L OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE OBX||NM|||999|||||| OBX||NM|||999|||||| OBX||NM|||999||||||"; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORM_O01 msgObj = m as NHapi.Model.V231.Message.ORM_O01; Assert.IsNotNull(msgObj); NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(msgObj); Assert.IsNotNull(recoveredMessage); Assert.IsFalse(string.Empty.Equals(recoveredMessage)); }
public void ProcessA01(string sHL7) { var parser = new NHapi.Base.Parser.PipeParser(); var parsedMessage = parser.Parse(sHL7); var a01 = parsedMessage as ADT_A01; string sPtName = ""; //Terser terser; Terser terser = new Terser(parsedMessage); sPtName = terser.Get("/PID-5"); string sFName = terser.Get("/PID-5-2"); string sLName = terser.Get("/PID-5-1"); //attempt parsing of a field that does not exist in transaction string sPatientID = terser.Get("/PID-1"); Console.WriteLine("Patient First Name = {0}", sFName); Console.WriteLine("Patient Last Name = {0}", sLName); //var patientMR = a01.PID.PatientID.IDNumber.Value; //var patientAcctNo= a01.PID.PatientAccountNumber.IDNumber.Value; //var patientName = a01.PID.GetPatientName(0); //string sLName = patientName.FamilyName.Surname.Value; //string sFName = patientName.GivenName.Value; //Console.WriteLine("Patient FName = {0}", sFName); }
public void TestSpecialCharacterEntry() { PipeParser parser = new PipeParser(); ORU_R01 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"; Varies v = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0); ST text = new ST(oru); text.Value = @"This\.br\is\.br\A Test"; v.Data = text; string encodedData = parser.Encode(oru); Console.WriteLine(encodedData); IMessage msg = parser.Parse(encodedData); Console.WriteLine(msg.GetStructureName()); oru = (ORU_R01) msg; FT 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); }
public IList<Medication> parse(string message) { PipeParser pp = new PipeParser(); ORP_O10 orp_o10 = (ORP_O10)pp.Parse(message); ORP_O10_ORCRXE orp_o10_orcrxe = new ORP_O10_ORCRXE(); // ORP_O10 doesn't parse the RXE segment of the response so we need this class extension if (!String.Equals(((MSA)orp_o10.GetStructure("MSA")).AcknowledgementCode.Value, "AA", StringComparison.CurrentCultureIgnoreCase)) { throw new mdo.exceptions.MdoException("Error in refill response: " + message); } IList<Medication> meds = new List<Medication>(); //IStructure[] structs = orp_o10.GetAll("RXE"); string[] lines = message.Split(new char[] { '\r' }); IList<string> rxeLines = new List<string>(); foreach (string line in lines) { if (String.IsNullOrEmpty(line)) { continue; } if (line.StartsWith("RXE")) { rxeLines.Add(line); } } for (int i = 0; i < rxeLines.Count; i++) { meds.Add(buildMedication(getRxe(rxeLines[i], orp_o10_orcrxe.getRxe(i)))); } return meds; }
public void ParseSimpleMessage() { PipeParser parser = new PipeParser(); ADT_A01 msg = parser.Parse(GetMessage(), Constants.VERSION_25_UCH) as ADT_A01; Assert.IsNotNull(msg); Assert.AreEqual(2, msg.OBXRepetitionsUsed); }
public void TestORMDescriptionExtract() { var parser = new PipeParser(); var results = parser.Parse(Message_ORMSample); var typed = results as ORM_O01; Assert.AreEqual(typed.PATIENT.PID.DateTimeOfBirth.Description, @"Date/Time Of Birth"); }
/// <summary> /// Send a HL7 message /// </summary> /// <param name="message">Message to send</param> /// <returns>Reply message</returns> public IMessage SendHL7Message(IMessage message) { PipeParser parser = new PipeParser(); string msg = parser.Encode(message); string reply = SendHL7Message(msg); return parser.Parse(reply); }
public void ConvertToDate() { DateTime checkDate = DateTime.Now; PipeParser parser = new PipeParser(); ADT_A01 a01 = new ADT_A01(); a01.PV1.AdmitDateTime.TimeOfAnEvent.Set(checkDate, "yyyyMMdd"); Assert.AreEqual(a01.PV1.AdmitDateTime.TimeOfAnEvent.Value, checkDate.ToString("yyyyMMdd")); }
public void TestSpecialCharacterEncoding() { PipeParser parser = new PipeParser(); ORU_R01 oru = new ORU_R01(); oru = (ORU_R01) parser.Parse(GetMessage()); FT 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); }
public void TestUch25Parse_Complex() { PipeParser parser = new PipeParser(); ADT_A01 msg = (ADT_A01)parser.Parse(GetComplexMessage(), Constants.VERSION_25_UCH); Assert.IsNotNull(msg); Assert.AreEqual(2, msg.CON2RepetitionsUsed); Assert.AreEqual(5, msg.CONRepetitionsUsed); }
public void ParseSimpleMessage() { PipeParser parser = new PipeParser(); ADT_A01 msg = parser.Parse(GetMessage(), Constants.VERSION_25_UCH) as ADT_A01; Assert.IsNotNull(msg); Assert.AreEqual(2, msg.INSURANCERepetitionsUsed); Assert.AreEqual(msg.GetINSURANCE(0).IN1.SetIDIN1.Value, "1"); Assert.AreEqual(msg.GetINSURANCE(1).IN1.SetIDIN1.Value, "2"); }
public void TestOBR5RepeatingValuesMessage() { var parser = new PipeParser(); var oru = new ORU_R01(); 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); } }
public void TestMSH3Set() { ADT_A01 a01 = new ADT_A01(); a01.MSH.SendingApplication.UniversalID.Value = "TEST"; PipeParser parser = new PipeParser(); string hl7 = parser.Encode(a01); string[] data = hl7.Split('|'); Assert.AreEqual("ADT^A01", data[8]); }
static void Main(string[] args) { PipeParser parser = new PipeParser(); CustomHL7Implementations.V24.Message.ORU_R01 orur01 = new CustomHL7Implementations.V24.Message.ORU_R01(); orur01.ZVC.EstadoAutorizacion.Text.Value = "1234"; string msg = parser.Encode(orur01); ZVC oZVC = (ZVC)orur01.GetStructure("ZVC"); oZVC.EstadoAutorizacion.Text.Value = "1234"; msg = parser.Encode(orur01); }
public void TestAdtA28MappingToHl7() { ADT_A05 a05 = new ADT_A05(); a05.MSH.MessageType.MessageCode.Value = "ADT"; a05.MSH.MessageType.TriggerEvent.Value = "A28"; a05.MSH.MessageType.MessageStructure.Value = "ADT_A05"; PipeParser parser = new PipeParser(); string msg = parser.Encode(a05); string[] data = msg.Split('|'); Assert.AreEqual("ADT^A28^ADT_A05", data[8]); }
public void BuildSyndromicSurveillanceMessage_GivenProblemAndVisitKeys_Succeeds() { var keyValues = new Dictionary<string, long> { { HttpHandlerQueryStrings.ProblemKey, AlbertSmithPatientClinicalCaseOneProblemThree.Key }, }; var syndromicSurveillanceFactory = new Hl7SyndromicSurveillanceFactory ( SessionProvider ); var message = syndromicSurveillanceFactory.GetHl7Message ( keyValues ); var messageObject = new PipeParser ().Parse ( message ); var type = (NHapi.Model.V251.Message.ADT_A01)messageObject; Assert.AreEqual( 1, type.DG1RepetitionsUsed); }
public void ParseQRYR02() { string Message = @"MSH|^~\&|CohieCentral|COHIE|Clinical Data Provider|TCH|20060228155525||QRY^R02^QRY_R02|1|P|2.3.1| QRD|20060228155525|R|I||||10^RD&Records&0126|38923^^^^^^^^&TCH|||"; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.QRY_R02 qryR02 = m as NHapi.Model.V231.Message.QRY_R02; Assert.IsNotNull(qryR02); Assert.AreEqual("38923", qryR02.QRD.GetWhoSubjectFilter(0).IDNumber.Value); }
public void ParseQRYR02() { string message = @"MSH|^~\&|CohieCentral|COHIE|Clinical Data Provider|TCH|20060228155525||QRY^R02^QRY_R02|1|P|2.3| QRD|20060228155525|R|I||||10^RD&Records&0126|38923^^^^^^^^&TCH|||"; PipeParser parser = new PipeParser(); IMessage m = parser.Parse(message); QRY_R02 qryR02 = m as QRY_R02; Assert.IsNotNull(qryR02); Assert.AreEqual("38923", qryR02.QRD.GetWhoSubjectFilter(0).IDNumber.Value); }
public void BuildHl7ImmunizationMessage_GivenActivity_Succeeds() { var keyValues = new Dictionary<string, long> { { HttpHandlerQueryStrings.ActivityKey, AlbertSmithPatientClinicalCaseOneVisitFourImmunizationTwo.Key }, }; var hl7ImmunizationFactory = new Hl7ImmunizationFactory ( SessionProvider ); string message = hl7ImmunizationFactory.GetHl7Message ( keyValues ); var messageObject = new PipeParser().Parse(message); var vxuV04 = ( VXU_V04 ) messageObject; VXU_V04_ORDER order = vxuV04.GetORDER (); Assert.IsNotNull ( order ); }
public void TestAdtA28MappingFromHl7() { string hl7Data = @"MSH|^~\&|CohieCentral|COHIE|Clinical Data Provider|TCH|20060228155525||ADT^A28^ADT_A05|1|P|2.5| EVN| PID|1|12345 PV1|1"; PipeParser parser = new PipeParser(); IMessage msg = parser.Parse(hl7Data); Assert.IsNotNull(msg, "Message should not be null"); ADT_A05 a05 = (ADT_A05) msg; Assert.AreEqual("A28", a05.MSH.MessageType.TriggerEvent.Value); Assert.AreEqual("1", a05.PID.SetIDPID.Value); }
public void ParseADT_A08() { //this is some fictive data string message = @"MSH|^~\&|SUNS1|OVI02|AZIS|CMD|200606221348||ADT^A08|1049691900|P|2.2 EVN|A08|200601060800 PID||8912716038^^^51276|0216128^^^51276||BARDOUN^LEA SACHA||19981201|F|||AVENUE FRANC GOLD 8^^LUXEMBOURGH^^6780^150||053/12456789||N|S|||99120162652||^^^|||||B PV1||O|^^|U|||07632^MORTELO^POL^^^DR.|^^^^^|||||N||||||0200001198 PV2|||^^AZIS||N|||200601060800 IN1|0001|2|314000|||||||||19800101|||1|BARDOUN^LEA SACHA|1|19981201|AVENUE FRANC GOLD 8^^LUXEMBOURGH^^6780^150||||||||||||||||| ZIN|0164652011399|0164652011399|101|101|45789^Broken bone"; /* ********************************************************** * Requirements: * * 1) You need to update the project's app.config <configSections> * element to include the 'HL7PackageConfiguration' configuration section * * <configSections> * <section name="HL7PackageConfiguration" type="NHapi.Base.Model.Configuration.HL7PackageConfigurationSection, NHapi.Base"/> * </configSections> * * And then you need to add a configuration that details the namespace and * custom version name so that the PipeParser can find the custom definitions: * * <HL7PackageConfiguration> * <HL7PackageCollection> * <HL7Package name="NHapi.Model.V22_ZSegments" version="2.2.CustomZ"/> * </HL7PackageCollection> * </HL7PackageConfiguration> * * 2) You need to use this PipeParse.Parse(message, version) method * and use the version you defined in the app.config above. * * ***********************************************************/ var parser = new PipeParser(); IMessage m = parser.Parse(message, Constants.VERSION); Assert.IsNotNull(m); Console.WriteLine("Type: " + m.GetType()); var adtA08 = m as ADT_A08; //verify some Z segment data Assert.AreEqual("45789", adtA08.ZIN.AccidentData.Id.Value); Assert.AreEqual("Broken bone", adtA08.ZIN.AccidentData.Text.Value); }
public void TestOBR5RepeatingValuesMessage_DataTypesAndRepetitions() { var parser = new PipeParser(); var oru = new ORU_R01(); oru = (ORU_R01) parser.Parse(GetMessage()); int expectedObservationCount = 3; int parsedObservations = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).OBSERVATIONRepetitionsUsed; bool parsedCorrectNumberOfObservations = parsedObservations == expectedObservationCount; Assert.IsTrue(parsedCorrectNumberOfObservations, string.Format("Expected 3 OBX repetitions used for this segment, found {0}", parsedObservations)); foreach (var obs in oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION().OBX.GetObservationValue()) { Assert.IsTrue(obs.Data is FT); } }
public static new void Main(System.String[] args) { if (args.Length != 1) { System.Console.Out.WriteLine("Usage: DefaultXMLParser pipe_encoded_file"); System.Environment.Exit(1); } //read and parse message from file try { System.IO.FileInfo messageFile = new System.IO.FileInfo(args[0]); long fileLength = SupportClass.FileLength(messageFile); System.IO.StreamReader r = new System.IO.StreamReader(messageFile.FullName, System.Text.Encoding.Default); char[] cbuf = new char[(int)fileLength]; System.Console.Out.WriteLine("Reading message file ... " + r.Read((System.Char[])cbuf, 0, cbuf.Length) + " of " + fileLength + " chars"); r.Close(); System.String messString = System.Convert.ToString(cbuf); ParserBase inParser = null; ParserBase outParser = null; PipeParser pp = new PipeParser(); NHapi.Base.Parser.XMLParser xp = new DefaultXMLParser(); System.Console.Out.WriteLine("Encoding: " + pp.GetEncoding(messString)); if (pp.GetEncoding(messString) != null) { inParser = pp; outParser = xp; } else if (xp.GetEncoding(messString) != null) { inParser = xp; outParser = pp; } IMessage mess = inParser.Parse(messString); System.Console.Out.WriteLine("Got message of type " + mess.GetType().FullName); System.String otherEncoding = outParser.Encode(mess); System.Console.Out.WriteLine(otherEncoding); } catch (System.Exception e) { SupportClass.WriteStackTrace(e, Console.Error); } }
public void ParseXMLToHL7() { string Message = GetQRYR02XML(); NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); NHapi.Base.Model.IMessage m = xmlParser.Parse(Message); NHapi.Model.V231.Message.QRY_R02 qryR02 = m as NHapi.Model.V231.Message.QRY_R02; Assert.IsNotNull(qryR02); NHapi.Base.Parser.PipeParser pipeParser = new NHapi.Base.Parser.PipeParser(); string pipeOutput = pipeParser.Encode(qryR02); Assert.IsNotNull(pipeOutput); Assert.IsFalse(string.Empty.Equals(pipeOutput)); }
public override bool Send(IMessage msg) { try { string path = outputDir + GetFileName(msg); using (StreamWriter sw = new StreamWriter(File.OpenWrite(path))) { PipeParser parser = new PipeParser(); sw.Write(parser.Encode(msg)); } } catch (IOException) { return false; } return true; }
/// <summary> Tests dh patient 1111111. </summary> public void TestDHPatient1111111() { NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(GetDHPatient1111111()); NHapi.Model.V231.Message.ORF_R04 orfR04 = m as NHapi.Model.V231.Message.ORF_R04; Assert.IsNotNull(orfR04); object range = orfR04.GetQUERY_RESPONSE().GetORDER().GetOBSERVATION().OBX.GetObservationValue(1); NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(orfR04); Assert.IsNotNull(recoveredMessage); Assert.IsFalse(recoveredMessage.IndexOf("NTE") > -1, "Returned Message added ORC segment."); }
public void ParseORFR04() { string Message = @"MSH|^~\&|Query Result Locator|Query Facility Name|Query Application Name|ST ELSEWHERE HOSPITAL|20051024074506||ORF^R04|432|P|2.3.1| 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|"; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORF_R04 orfR04 = m as NHapi.Model.V231.Message.ORF_R04; Assert.IsNotNull(orfR04); Assert.AreEqual("12", orfR04.GetQUERY_RESPONSE().GetORDER().GetOBSERVATION().OBX.GetObservationValue()[0].Data.ToString()); }
public static String ParseMessage(String message) { var parser = new NHapi.Base.Parser.PipeParser(); var parsedMessage = parser.Parse(message); //Get the message type and trigger event var msgType = parsedMessage.GetStructureName(); //Console.WriteLine("msg type = {0}", msgType); // = ADT_EVENT //Get the message in raw, pipe-delimited format var pipeDelimitedMessage = parser.Encode(parsedMessage); //Console.WriteLine("msg = {0}", pipeDelimitedMessage); return(pipeDelimitedMessage); }
public void TestStrictValidation_NegativeNumber(string message) { var parser = new PipeParser(); ORU_R01 oru; // default validation context should pass with no exceptions oru = (ORU_R01) parser.Parse(message); foreach (var obs in oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION().OBX.GetObservationValue()) { Assert.IsTrue(obs.Data is SI); } // strict validation context should throw a DataTypeException for negative number values in a SI field. parser.ValidationContext = new StrictValidation(); Assert.Throws<DataTypeException>(() => { oru = (ORU_R01) parser.Parse(message); }, string.Format("Strict validation should throw a {0} when parsing a SI field with a negative value", typeof (DataTypeException).Name)); }
public void ParseORUr01LongToXml() { string Message = @"MSH|^~\$|LAB|DHC|LCR|DH|200511291403||ORU^R01|52780002432|P|2.3.1 PID|0001|3013839|40206609||BARNES^TEST||19551005|F|||||||||||258452152 OBR||00009^001|W442|CBC^CBC|||200509210520||||||||CBC^CBC|117564^STEEL||||||||DAH OBX|1|NM|WBC||20.0|k/uL|4.5-10.0|H|||Z OBX|1|TX|WBC|1|(Ref Range: 4 k/uL)|k/uL|4.5-10.0||||Z OBX|2|NM|RBC||4.00|M/uL|4.20-5.40|L|||Z OBX|2|TX|RBC|1|(Ref Range: 4 M/uL)|M/uL|4.20-5.40||||Z OBX|3|NM|HGB||12.0|g/dL|14.0-24.0|L|||Z OBX|3|TX|HGB|1|(Ref Range: 1 g/dL)|g/dL|14.0-24.0||||Z OBX|4|NM|HCT||41.0|%|37.0-47.0||||Z OBX|4|TX|HCT|1|(Ref Range: 3 %)|%|37.0-47.0||||Z OBX|5|NM|MCV||80.9|fl|80.0-100.0||||Z OBX|5|TX|MCV|1|(Ref Range: 8 fl)|fl|80.0-100.0||||Z OBX|6|NM|MCH||31.0|pg|27.0-31.0||||Z OBX|6|TX|MCH|1|(Ref Range: 2 pg)|pg|27.0-31.0||||Z OBX|7|NM|MCHC||32.0|g/dL|32.0-36.0||||Z OBX|7|TX|MCHC|1|(Ref Range: 3 g/dL)|g/dL|32.0-36.0||||Z OBX|8|NM|RDW||19.0|%|11.5-14.5|H|||Z OBX|8|TX|RDW|1|(Ref Range: 1 %)|%|11.5-14.5||||Z OBX|9|NM|PLTC||45|k/uL|150-400|PL^Y|||Z OBX|9|TX|PLTC|1|(Ref Range: 1 k/uL)|k/uL|150-400||||Z OBX|10|NM|MPV||10.0|fL|6.2-10.0||||Z OBX|10|TX|MPV|1|(Ref Range: 6 fL)|fL|6.2-10.0||||Z "; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORU_R01 msg = m as NHapi.Model.V231.Message.ORU_R01; NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(msg); Assert.AreNotEqual(string.Empty, recoveredMessage); System.Xml.XmlDocument orrDoc = new System.Xml.XmlDocument(); orrDoc.LoadXml(recoveredMessage); Assert.IsNotNull(orrDoc); }
public void ParseADTA01() { string message = @"MSH|^~\&|ADT|Admitting|RADIO|ARTEFACT|200710061035||ADT^A01|00000040|P|2.1 EVN|A01|200710061035 PID||1144270^4^M10|0699999^2^M10||XXXXXX|XXXCXCXX|20071006|F|||10 THE ADDRESS||(450)999-9999|||S||||||||||||||N NK1|1 PV1||I|19^D415^01P|05|07008496||180658^DOCTOR NAME|||81|||||||180658^DOCTOR NAME|NN||01||||||||||||||||||||||||200710061018 DG1|1|I9|412|NAISSANCE||01 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"; PipeParser parser = new PipeParser(); IMessage m = parser.Parse(message); ADT_A01 parsedMessage = m as ADT_A01; Assert.IsNotNull(parsedMessage); Assert.AreEqual("1144270", parsedMessage.PID.PATIENTIDEXTERNALEXTERNALID.IDNumber.Value); }
public void Test_251DataTypesParseCorrectly(string message) { var parser = new PipeParser(); var oru = new ORU_R01(); oru = (ORU_R01)parser.Parse(message); int expectedObservationCount = 3; int parsedObservations = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).OBSERVATIONRepetitionsUsed; bool parsedCorrectNumberOfObservations = parsedObservations == expectedObservationCount; Assert.IsTrue(parsedCorrectNumberOfObservations, string.Format("Expected {1} OBX repetitions used for this segment, found {0}", parsedObservations, expectedObservationCount)); int 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); }
public void ParseORMo01PIDSegment() { string Message = @"MSH|^~\&|INVISION|DHC|SUNQUEST LAB||200606191615||ORM^O01|ORDR|P|2.3.1|LAB PID|0001||3020956||TRAINONLYPOE^ONE||19770903|F||W||||||||40230443 PV1|0001|I|MICU^W276^01||||045716^ABAZA, MONA M|||MED|||||||045716|F|000000030188 ORC|NW|01444^00001|||||||||||L OBR||01444^00001||CAI^CALCIUM IONIZED|||200606191614||||L|||||045716^STEELE, ANDREW W|||||||||||00001&UNITS^ONCE&ONCE^000^200606191614^200606191614^ROUTINE "; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORM_O01 ormo01 = m as NHapi.Model.V231.Message.ORM_O01; Assert.IsNotNull(ormo01); Assert.AreEqual("TRAINONLYPOE", (ormo01.PATIENT.PID.GetPatientName()[0]).FamilyLastName.FamilyName.Value); Assert.AreEqual("19770903", ormo01.PATIENT.PID.DateTimeOfBirth.TimeOfAnEvent.Value); Assert.AreEqual("F", ormo01.PATIENT.PID.Sex.Value); Assert.AreEqual("W", ((ormo01.PATIENT.PID.GetRace()[0]).Identifier.Value)); Assert.AreEqual("ABAZA, MONA M", ormo01.PATIENT.PATIENT_VISIT.PV1.GetAttendingDoctor(0).FamilyLastName.FamilyName.Value); }
/// <summary> /// Asserts the message is Er7 Encoded. /// </summary> /// <param name="message">Message to be examined.</param> /// <exception cref="ArgumentException"> /// If the message is less than 4 characters long or the message does not start with MSH. /// </exception> /// <exception cref="InvalidOperationException"> /// If the 4th character of each segment was not a field delimiter. /// </exception> public static void AssertEr7Encoded(string message) { // quit if the string is too short if (message.Length < 4) { throw new ArgumentException("The message is less than 4 characters long"); } // string should start with "MSH" if (!message.StartsWith("MSH")) { throw new ArgumentException("The message does not start with MSH"); } // 4th character of each segment should be field delimiter var fourthChar = message[3]; var tokens = message.Split(Convert.ToChar(PipeParser.SegmentDelimiter)); for (var i = 0; i < tokens.Length; i++) { var token = tokens[i]; if (token.Length > 0) { if (char.IsWhiteSpace(token[0])) { token = PipeParser.StripLeadingWhitespace(token); } if (token.Length >= 4 && token[3] != fourthChar) { throw new InvalidOperationException( $"The 4th character should have been a {token[3]}, but it was a {fourthChar}"); } } } }
public void ProcessADT(string sHL7) { var parser = new NHapi.Base.Parser.PipeParser(); var parsedMessage = parser.Parse(sHL7); //Terse it! Terser terser = new Terser(parsedMessage); //Grab RequiredFields ///PID-11(0)-1 = grabs first repetition of PID11 ///PID-11(1)-1 = grabs second repetition of PID11 string sEventType = terser.Get("/MSH-9-1"); string sMessageType = terser.Get("/MSH-9-2"); string sSendingFac = terser.Get("/MSH-4"); string sControlID = terser.Get("/MSH-10"); string sHL7DateTime = ConvertHL7Date(terser.Get("/MSH-7")); DateTime dtHL7Message = Convert.ToDateTime(sHL7DateTime); string sEventDateTime = ConvertHL7Date(terser.Get("/EVN-2")); DateTime dtEventDateTime = Convert.ToDateTime(sEventDateTime); string sEventReason = terser.Get("/EVN-4"); string sOperatorID = terser.Get("/EVN-5-1"); string sOperatorFName = terser.Get("/EVN-5-3"); string sOperatorLName = terser.Get("/EVN-5-2"); string sOperatorAssigningAuth = terser.Get("/EVN-5-9"); string sOperatorAssigningFac = terser.Get("/EVN-5-14"); string sMedRecNumber = terser.Get("/PID-3"); string sPtFName = terser.Get("/PID-5-2"); string sPtLName = terser.Get("/PID-5-1"); string sPtMName = terser.Get("/PID-5-3"); string sConvertDOB = ConvertHL7Date(terser.Get("/PID-7"), false); DateTime dtDOB = Convert.ToDateTime(sConvertDOB); string sSex = terser.Get("/PID-8"); string sRace = terser.Get("/PID-10"); string sStreetAddress = terser.Get("/PID-11-1"); string sCity = terser.Get("/PID-11-3"); string sState = terser.Get("/PID-11-4"); string sZip = terser.Get("/PID-11-5"); string sCountry = terser.Get("/PID-11-6"); string sVisitNumber = terser.Get("/PID-18-1"); string sPtClass = terser.Get("/PV1-2"); string sPtUnit = terser.Get("/PV1-3-1"); string sPtRoom = terser.Get("/PV1-3-2"); string sPtBed = terser.Get("/PV1-3-3"); string sHospSvc = terser.Get("/PV1-10"); //Console.WriteLine("Date = {0}", sHL7DateTime); Console.WriteLine("Event Type = {0}", sEventType); Console.WriteLine("Message Type = {0}", sMessageType); Console.WriteLine("ControlID = {0}", sControlID); Console.WriteLine("MedRecNumber = {0}", sMedRecNumber); Console.WriteLine("VisitNumber = {0}", sVisitNumber); Console.WriteLine("Patient First Name = {0}", sPtFName); Console.WriteLine("Patient Last Name = {0}", sPtLName); Console.WriteLine("Patient Middle Name = {0}", sPtMName); Console.WriteLine("Patient DOB = {0}", sConvertDOB); Console.WriteLine("Sex = {0}", sSex); Console.WriteLine("Race = {0}", sRace); Console.WriteLine("Street = {0}", sStreetAddress); Console.WriteLine("City = {0}", sCity); Console.WriteLine("State = {0}", sState); Console.WriteLine("Zip = {0}", sZip); Console.WriteLine("Country = {0}", sCountry); Console.WriteLine("Patient Class = {0}", sPtClass); Console.WriteLine("Unit = {0}", sPtUnit); Console.WriteLine("Room = {0}", sPtRoom); Console.WriteLine("Bed = {0}", sPtBed); Console.WriteLine("Event DT = {0}", sEventDateTime); Console.WriteLine("Message DT = {0}", sHL7DateTime); Console.WriteLine("OperID = {0}", sOperatorID); Console.WriteLine("OperFName = {0}", sOperatorFName); Console.WriteLine("OperLName = {0}", sOperatorLName); Console.WriteLine("OperAuth = {0}", sOperatorAssigningAuth); Console.WriteLine("OperFac = {0}", sOperatorAssigningFac); // insert into SQL // As per my supervisors coding direction heheh //SqlConnection oConn = new SqlConnection(HL7Listener.Properties.Settings.Default.connectionStr); SqlCommand oComm = new SqlCommand(); oComm.CommandType = CommandType.StoredProcedure; oComm.CommandText = "uspInsertADTdata"; // oComm.Parameters.Add("@MessageType", SqlDbType.NVarChar).Value = sMessageType; oComm.Parameters.Add("@EventType", SqlDbType.NVarChar).Value = sEventType; oComm.Parameters.Add("@DateOfMessage", SqlDbType.DateTime).Value = dtHL7Message; oComm.Parameters.Add("@EventDate", SqlDbType.DateTime).Value = dtEventDateTime; oComm.Parameters.Add("@SendingFacility", SqlDbType.NVarChar).Value = sSendingFac; oComm.Parameters.Add("@EventReason", SqlDbType.NVarChar).Value = sEventReason; oComm.Parameters.Add("@OperatorId", SqlDbType.NVarChar).Value = sOperatorID; oComm.Parameters.Add("@OperatorFirstName", SqlDbType.NVarChar).Value = sOperatorFName; oComm.Parameters.Add("@OperatorLastName", SqlDbType.NVarChar).Value = sOperatorLName; oComm.Parameters.Add("@OperatorAuthority", SqlDbType.NVarChar).Value = sOperatorAssigningAuth; oComm.Parameters.Add("@OperatorFacility", SqlDbType.NVarChar).Value = sOperatorAssigningFac; oComm.Parameters.Add("@MedicalRecordNumber", SqlDbType.NVarChar).Value = sMedRecNumber; oComm.Parameters.Add("@FirstName", SqlDbType.NVarChar).Value = sPtFName; oComm.Parameters.Add("@LastName", SqlDbType.NVarChar).Value = sPtLName; oComm.Parameters.Add("@MiddleName", SqlDbType.NVarChar).Value = sPtMName; oComm.Parameters.Add("@DateOfBirth", SqlDbType.DateTime).Value = dtDOB; oComm.Parameters.Add("@Sex", SqlDbType.NVarChar).Value = sSex; oComm.Parameters.Add("@Race", SqlDbType.NVarChar).Value = sRace; oComm.Parameters.Add("@StreetAddress", SqlDbType.NVarChar).Value = sStreetAddress; oComm.Parameters.Add("@City", SqlDbType.NVarChar).Value = sCity; oComm.Parameters.Add("@State", SqlDbType.NVarChar).Value = sState; oComm.Parameters.Add("@ZipCode", SqlDbType.NVarChar).Value = sZip; oComm.Parameters.Add("@Country", SqlDbType.NVarChar).Value = "USA"; //sCountry; oComm.Parameters.Add("@VisitNumber", SqlDbType.NVarChar).Value = sVisitNumber; oComm.Parameters.Add("@PatientClass", SqlDbType.NVarChar).Value = sPtClass; oComm.Parameters.Add("@PatientUnit", SqlDbType.NVarChar).Value = sPtUnit; oComm.Parameters.Add("@PatientRoom", SqlDbType.NVarChar).Value = sPtRoom; oComm.Parameters.Add("@PatientBed", SqlDbType.NVarChar).Value = sPtBed; oComm.Parameters.Add("@HospitalService", SqlDbType.NVarChar).Value = sHospSvc; oComm.Parameters.Add("@ControlId", SqlDbType.NVarChar).Value = sControlID; oComm.Connection = oConn; try { if (oConn.State != ConnectionState.Open) { oConn.Open(); } oComm.ExecuteNonQuery(); } catch (Exception ex) { LogSQLError(ex.ToString(), sHL7); Console.WriteLine("SQL Error Occurred and was logged"); //send NAK bNAK = true; } finally { // need to do this on dispose of class obj (so db conn is not called billions of times)! //oConn.Close(); //oConn.Dispose(); } }
public AnonymousClassPredicate1(string name, PipeParser enclosingInstance) { Name = name; Enclosing_Instance = enclosingInstance; }
public AnonymousClassPredicate(PipeParser enclosingInstance) { Enclosing_Instance = enclosingInstance; }
public void ParseORFR04FromDHTest() { string Message = @"MSH|^~\&|Clinical Data Provider|DHHA|COHIECentral|COHIE|200609221408||ORF^R04||P|2.3.1 MSA|AA| PID|2019877||2019877^^^DH^MR||LOPEZ1^JAMES^TRISTAN||19740804|M OBR||00677^001|M428|CBC^CBC|||200511071505||||||||CBC^CBC|045716^STEELE||||||||DAH OBX|1|NM|WBC||1.1|k/uL|5.0-16.0|L|||C OBX|1|TX|WBC|1|(Ref Range: 5 k/uL)|k/uL|5.0-16.0||||C OBX|1|TX|WBC||Result(s) called to and verification read-back received from: NURSE NAN M~||||||C OBX|1|TX|WBC||ICU 13:39 11 19 05||||||C OBX|1|TX|WBC||Corrected on 11/29 AT 1337: Previously reported as: 1.1||||||C OBX|2|NM|RBC||3.99|M/uL|3.80-5.40||||Z OBX|2|TX|RBC|1|(Ref Range: 3 M/uL)|M/uL|3.80-5.40||||Z OBX|3|NM|HGB||13.0|g/dL|14.0-24.0|L|||Z OBX|3|TX|HGB|1|(Ref Range: 1 g/dL)|g/dL|14.0-24.0||||Z OBX|4|NM|HCT||40.0|%|31.0-43.0||||Z OBX|4|TX|HCT|1|(Ref Range: 3 %)|%|31.0-43.0||||Z OBX|5|NM|MCV||80.0|fl|70.0-90.0||||Z OBX|5|TX|MCV|1|(Ref Range: 7 fl)|fl|70.0-90.0||||Z OBX|6|NM|MCH||32.0|pg|27.0-31.0|H|||Z OBX|6|TX|MCH|1|(Ref Range: 2 pg)|pg|27.0-31.0||||Z OBX|7|NM|MCHC||32.0|g/dL|32.0-36.0||||Z OBX|7|TX|MCHC|1|(Ref Range: 3 g/dL)|g/dL|32.0-36.0||||Z OBX|8|NM|RDW||17.0|%|11.5-14.5|H|||Z OBX|8|TX|RDW|1|(Ref Range: 1 %)|%|11.5-14.5||||Z OBX|9|NM|PLTC||2|k/uL|150-400|PL^Y|||Z OBX|9|TX|PLTC|1|(Ref Range: 1 k/uL)|k/uL|150-400||||Z OBX|10|NM|MPV||10.0|fL|6.2-10.0||||Z OBX|10|TX|MPV|1|(Ref Range: 6 fL)|fL|6.2-10.0||||Z OBR||00677^001|M428|CBC^CBC|||200511071505||||||||CBC^CBC|045716^STEELE||||||||DAH OBX|1|NM|WBC||1.1|k/uL|5.0-16.0|L|||C OBX|1|TX|WBC|1|(Ref Range: 5 k/uL)|k/uL|5.0-16.0||||C OBX|1|TX|WBC||Result(s) called to and verification read-back received from: NURSE NAN M~||||||C OBX|1|TX|WBC||ICU 13:39 11 19 05||||||C OBX|1|TX|WBC||Corrected on 11/29 AT 1337: Previously reported as: 1.1||||||C OBX|2|NM|RBC||3.99|M/uL|3.80-5.40||||Z OBX|2|TX|RBC|1|(Ref Range: 3 M/uL)|M/uL|3.80-5.40||||Z OBX|3|NM|HGB||13.0|g/dL|14.0-24.0|L|||Z OBX|3|TX|HGB|1|(Ref Range: 1 g/dL)|g/dL|14.0-24.0||||Z OBX|4|NM|HCT||40.0|%|31.0-43.0||||Z OBX|4|TX|HCT|1|(Ref Range: 3 %)|%|31.0-43.0||||Z OBX|5|NM|MCV||80.0|fl|70.0-90.0||||Z OBX|5|TX|MCV|1|(Ref Range: 7 fl)|fl|70.0-90.0||||Z OBX|6|NM|MCH||32.0|pg|27.0-31.0|H|||Z OBX|6|TX|MCH|1|(Ref Range: 2 pg)|pg|27.0-31.0||||Z OBX|7|NM|MCHC||32.0|g/dL|32.0-36.0||||Z OBX|7|TX|MCHC|1|(Ref Range: 3 g/dL)|g/dL|32.0-36.0||||Z OBX|8|NM|RDW||17.0|%|11.5-14.5|H|||Z OBX|8|TX|RDW|1|(Ref Range: 1 %)|%|11.5-14.5||||Z OBX|9|NM|PLTC||2|k/uL|150-400|PL^Y|||Z OBX|9|TX|PLTC|1|(Ref Range: 1 k/uL)|k/uL|150-400||||Z OBX|10|NM|MPV||10.0|fL|6.2-10.0||||Z OBX|10|TX|MPV|1|(Ref Range: 6 fL)|fL|6.2-10.0||||Z OBR||00677^001|M428|CBC^CBC|||200511071505||||||||CBC^CBC|045716^STEELE||||||||DAH OBX|1|NM|WBC||1.1|k/uL|5.0-16.0|L|||C OBX|1|TX|WBC|1|(Ref Range: 5 k/uL)|k/uL|5.0-16.0||||C OBX|1|TX|WBC||Result(s) called to and verification read-back received from: NURSE NAN M~||||||C OBX|1|TX|WBC||ICU 13:39 11 19 05||||||C OBX|1|TX|WBC||Corrected on 11/29 AT 1337: Previously reported as: 1.1||||||C OBX|2|NM|RBC||3.99|M/uL|3.80-5.40||||Z OBX|2|TX|RBC|1|(Ref Range: 3 M/uL)|M/uL|3.80-5.40||||Z OBX|3|NM|HGB||13.0|g/dL|14.0-24.0|L|||Z OBX|3|TX|HGB|1|(Ref Range: 1 g/dL)|g/dL|14.0-24.0||||Z OBX|4|NM|HCT||40.0|%|31.0-43.0||||Z OBX|4|TX|HCT|1|(Ref Range: 3 %)|%|31.0-43.0||||Z OBX|5|NM|MCV||80.0|fl|70.0-90.0||||Z OBX|5|TX|MCV|1|(Ref Range: 7 fl)|fl|70.0-90.0||||Z OBX|6|NM|MCH||32.0|pg|27.0-31.0|H|||Z OBX|6|TX|MCH|1|(Ref Range: 2 pg)|pg|27.0-31.0||||Z OBX|7|NM|MCHC||32.0|g/dL|32.0-36.0||||Z OBX|7|TX|MCHC|1|(Ref Range: 3 g/dL)|g/dL|32.0-36.0||||Z OBX|8|NM|RDW||17.0|%|11.5-14.5|H|||Z OBX|8|TX|RDW|1|(Ref Range: 1 %)|%|11.5-14.5||||Z OBX|9|NM|PLTC||2|k/uL|150-400|PL^Y|||Z OBX|9|TX|PLTC|1|(Ref Range: 1 k/uL)|k/uL|150-400||||Z OBX|10|NM|MPV||10.0|fL|6.2-10.0||||Z OBX|10|TX|MPV|1|(Ref Range: 6 fL)|fL|6.2-10.0||||Z"; NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = Parser.Parse(Message); NHapi.Model.V231.Message.ORF_R04 orfR04 = m as NHapi.Model.V231.Message.ORF_R04; Assert.IsNotNull(orfR04); NHapi.Base.Parser.XMLParser xmlParser = new NHapi.Base.Parser.DefaultXMLParser(); string recoveredMessage = xmlParser.Encode(orfR04); Assert.IsNotNull(recoveredMessage); Assert.IsFalse(recoveredMessage.IndexOf("NTE") > -1, "Returned Message added ORC segment."); }
public AnonymousClassPredicate(PipeParser enclosingInstance) { InitBlock(enclosingInstance); }
private void InitBlock(PipeParser enclosingInstance) { this.enclosingInstance = enclosingInstance; }
public AnonymousClassPredicate1(System.String name, PipeParser enclosingInstance) { InitBlock(name, enclosingInstance); }
public static void Main(System.String[] args) { if (args.Length != 1) { System.Console.Out.WriteLine("Usage: XMLParser pipe_encoded_file"); System.Environment.Exit(1); } //read and parse message from file try { PipeParser parser = new PipeParser(); System.IO.FileInfo messageFile = new System.IO.FileInfo(args[0]); long fileLength = SupportClass.FileLength(messageFile); System.IO.StreamReader r = new System.IO.StreamReader( messageFile.FullName, System.Text.Encoding.Default); char[] cbuf = new char[(int)fileLength]; System.Console.Out.WriteLine( "Reading message file ... " + r.Read(cbuf, 0, cbuf.Length) + " of " + fileLength + " chars"); r.Close(); System.String messString = System.Convert.ToString(cbuf); IMessage mess = parser.Parse(messString); System.Console.Out.WriteLine("Got message of type " + mess.GetType().FullName); NHapi.Base.Parser.XMLParser xp = new AnonymousClassXMLParser(); //loop through segment children of message, encode, print to console System.String[] structNames = mess.Names; for (int i = 0; i < structNames.Length; i++) { IStructure[] reps = mess.GetAll(structNames[i]); for (int j = 0; j < reps.Length; j++) { if (typeof(ISegment).IsAssignableFrom(reps[j].GetType())) { //ignore groups System.Xml.XmlDocument docBuilder = new System.Xml.XmlDocument(); System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); //new doc for each segment System.Xml.XmlElement root = doc.CreateElement(reps[j].GetType().FullName); doc.AppendChild(root); xp.Encode((ISegment)reps[j], root); System.IO.StringWriter out_Renamed = new System.IO.StringWriter(); System.Console.Out.WriteLine( "Segment " + reps[j].GetType().FullName + ": \r\n" + doc.OuterXml); System.Type[] segmentConstructTypes = { typeof(IMessage) }; System.Object[] segmentConstructArgs = { null }; ISegment s = (ISegment) reps[j].GetType().GetConstructor(segmentConstructTypes).Invoke(segmentConstructArgs); xp.Parse(s, root); System.Xml.XmlDocument doc2 = new System.Xml.XmlDocument(); System.Xml.XmlElement root2 = doc2.CreateElement(s.GetType().FullName); doc2.AppendChild(root2); xp.Encode(s, root2); System.IO.StringWriter out2 = new System.IO.StringWriter(); System.Xml.XmlWriter ser = System.Xml.XmlWriter.Create(out2); doc.WriteTo(ser); if (out2.ToString().Equals(out_Renamed.ToString())) { System.Console.Out.WriteLine("Re-encode OK"); } else { System.Console.Out.WriteLine( "Warning: XML different after parse and re-encode: \r\n" + out2); } } } } } catch (System.Exception e) { SupportClass.WriteStackTrace(e, Console.Error); } }
private void InitBlock(System.String name, PipeParser enclosingInstance) { this.name = name; this.enclosingInstance = enclosingInstance; }
public static void Main(string[] args) { if (args.Length != 1) { Console.Out.WriteLine("Usage: XMLParser pipe_encoded_file"); Environment.Exit(1); } // read and parse message from file try { var parser = new PipeParser(); var messageFile = new FileInfo(args[0]); var fileLength = SupportClass.FileLength(messageFile); var r = new StreamReader(messageFile.FullName, Encoding.Default); var cbuf = new char[(int)fileLength]; Console.Out.WriteLine( $"Reading message file ... {r.Read((char[])cbuf, 0, cbuf.Length)} of {fileLength} chars"); r.Close(); var messString = Convert.ToString(cbuf); var mess = parser.Parse(messString); Console.Out.WriteLine("Got message of type " + mess.GetType().FullName); XMLParser xp = new AnonymousClassXMLParser(); // loop through segment children of message, encode, print to console var structNames = mess.Names; for (var i = 0; i < structNames.Length; i++) { var reps = mess.GetAll(structNames[i]); for (var j = 0; j < reps.Length; j++) { if (reps[j] is ISegment) { // ignore groups var docBuilder = new XmlDocument(); var doc = new XmlDocument(); // new doc for each segment var root = doc.CreateElement(reps[j].GetType().FullName); doc.AppendChild(root); xp.Encode((ISegment)reps[j], root); var out_Renamed = new StringWriter(); Console.Out.WriteLine("Segment " + reps[j].GetType().FullName + ": \r\n" + doc.OuterXml); var segmentConstructTypes = new Type[] { typeof(IMessage) }; var segmentConstructArgs = new object[] { null }; var s = (ISegment)reps[j].GetType().GetConstructor(segmentConstructTypes).Invoke(segmentConstructArgs); xp.Parse(s, root); var doc2 = new XmlDocument(); var root2 = doc2.CreateElement(s.GetType().FullName); doc2.AppendChild(root2); xp.Encode(s, root2); var out2 = new StringWriter(); var ser = XmlWriter.Create(out2); doc.WriteTo(ser); if (out2.ToString().Equals(out_Renamed.ToString())) { Console.Out.WriteLine("Re-encode OK"); } else { Console.Out.WriteLine( $"Warning: XML different after parse and re-encode: {Environment.NewLine}{out2}"); } } } } } catch (Exception e) { SupportClass.WriteStackTrace(e, Console.Error); } }