public void TestSpecialCharacterEntryWithAllSpecialCharacters() { 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"; NHapi.Base.Model.Varies v = oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0); ST text = new ST(oru); text.Value = @"Th&is\.br\is\.br\A T|e\H\st\"; v.Data = text; string encodedData = parser.Encode(oru); Console.WriteLine(encodedData); NHapi.Base.Model.IMessage msg = parser.Parse(encodedData); oru = (ORU_R01)msg; FT data = (FT)oru.GetPATIENT_RESULT(0).GetORDER_OBSERVATION(0).GetOBSERVATION(0).OBX.GetObservationValue(0).Data; Assert.AreEqual(@"Th&is\.br\is\.br\A T|e\H\st\", data.Value); }
/// <summary> /// Test /// </summary> /// <param name="msg"></param> /// <returns></returns> public override ValidationException[] test(NHapi.Base.Model.IMessage msg) { ValidationException[] result = new ValidationException[0]; foreach (MessageFieldMandatoryRuleElement rule in mandatoryRules) { 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) { Terser terser = new Terser(msg); string value = terser.Get(rule.FieldIndicator); if (string.IsNullOrEmpty(value)) { result = new ValidationException[1] { new ValidationException(string.Format("Field '{1}' is mandatory.", value, rule.FieldIndicator)) }; } } if (result.Length > 0) { break; } } return(result); }
public HL7Parser2X(string HL7Message) { NHapi.Base.Parser.XMLParser xmlp = new NHapi.Base.Parser.DefaultXMLParser(); //NHapi.Base.Model.IMessage imess = xmlp.Parse(HL7Message); NHapi.Base.Parser.PipeParser pp = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage imess = pp.Parse(HL7Message, "2.3"); NHapi.Model.V23.Message.ORU_R01 orm; orm = imess as NHapi.Model.V23.Message.ORU_R01; XmlDocument MessageXML = new XmlDocument(); if (orm != null) { MessageXML = xmlp.EncodeDocument(orm); } NHapi.Base.Model.IStructure[] seg = imess.GetAll("MSH"); report.ReportXML = MessageXML; //testFunction(MessageXML); report.PatientID = GetPatientID(report.ReportXML); report.Patientname = GetPatientName(report.ReportXML); string date = string.Empty; report.ReportDateTime = GetDateTime(GetStudyDate(report.ReportXML), "yyyyMMddHHmm", out date); report.DOB = GetDateTime(GetPatientDOB(report.ReportXML), "yyyyMMdd", out date); report.AccessionNumber = GetAccessioNnumber(report.ReportXML); }
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"; /* ********************************************************** * YOU NEED TO ADD THIS CHAINED CONSTRUCTOR TO THE PiperParser CLASS!!! * * public PipeParser(IModelClassFactory theFactory) : base(theFactory) * { * } * * ***********************************************************/ NHapi.Base.Parser.PipeParser parser = new NHapi.Base.Parser.PipeParser(); NHapi.Base.Model.IMessage m = parser.Parse(message, NHapi.Model.V22_ZSegments.Constants.VERSION); Assert.IsNotNull(m); Console.WriteLine("Type: " + m.GetType().ToString()); NHapi.Model.V22_ZSegments.Message.ADT_A08 adtA08 = m as NHapi.Model.V22_ZSegments.Message.ADT_A08; //verify some Z segment data Assert.AreEqual("45789", adtA08.ZIN.AccidentData.Id.Value); Assert.AreEqual("Broken bone", adtA08.ZIN.AccidentData.Text.Value); }
/// <summary> /// Set request message parameters /// </summary> protected void SetRequestMessageParams(NHapi.Base.Model.IMessage request) { Terser setTerser = new Terser(request); setTerser.Set("/MSH-7", DateTime.Now.ToString("yyyyMMddHHmmss")); setTerser.Set("/EVN-2", DateTime.Today.ToString("yyyyMMdd")); }
private List <LookupData> ParseORU(string ORUMessageString) { PipeParser pipeParser = new PipeParser(); try { NHapi.Base.Model.IMessage message = pipeParser.Parse(ORUMessageString); List <LookupData> dataList = new List <LookupData>(); h.WriteToLog("In ParseORU"); if (message is NHapi.Model.V251.Message.ORU_R01) { NHapi.Model.V251.Message.ORU_R01 ORU = (NHapi.Model.V251.Message.ORU_R01)message; h.WriteToLog("In ParseORU2 " + ORU.MSH.SendingApplication.NamespaceID.Value); h.WriteToLog("In ParseORU2 " + ORU.PATIENT_RESULTRepetitionsUsed.ToString()); foreach (var ptresults in ORU.PATIENT_RESULTs) { h.WriteToLog("In ParseORU3"); foreach (var order in ptresults.ORDER_OBSERVATIONs) { h.WriteToLog("In ParseORU4"); h.WriteToLog("Order: " + order.OBR.FillerOrderNumber.EntityIdentifier.Value); //string orderID = order.OBR.FillerOrderNumber.EntityIdentifier.Value; //string orderName = order.OBR.UniversalServiceIdentifier.Identifier.Value; // loop on OBX foreach (var result in order.OBSERVATIONs) { h.WriteToLog("In ParseORU5"); h.WriteToLog("Result: " + result.OBX.ObservationIdentifier.Text.Value); LookupData data = new InterpConsoleApp.LookupData(); // get lab facility if (ORU.MSH.SendingApplication.NamespaceID.Value == "QLS") { data.FacilityName = "Quest"; } data.OrderID = order.OBR.FillerOrderNumber.EntityIdentifier.Value; data.LabCode = order.OBR.UniversalServiceIdentifier.Identifier.Value; // OBR4.1 data.LabName = order.OBR.UniversalServiceIdentifier.Text.Value; // OBR4.2 data.ResultCode = result.OBX.ObservationIdentifier.Identifier.Value; // OBX3.1 data.ResultName = result.OBX.ObservationIdentifier.Text.Value; // OBX3.2 NHapi.Base.Model.IType obsData = result.OBX.GetObservationValue(0).Data; // OBX5 if (obsData.TypeName == "ST") { data.ResultValue = obsData.ToString(); } dataList.Add(data); } } } } return(dataList); } catch (Exception e) { h.WriteToLog("ParseORU error - " + e.Message); return(null); } }
/// <summary> /// Create a serialized message /// </summary> private byte[] CreateMessageSerialized(NHapi.Base.Model.IMessage iMessage) { MemoryStream ms = new MemoryStream(); string msg = new PipeParser().Encode(iMessage); ms.Write(Encoding.ASCII.GetBytes(msg), 0, msg.Length); ms.Flush(); return(ms.GetBuffer()); }
public ValidationException[] test(NHapi.Base.Model.IMessage msg) { var validationResults = new ValidationException[0]; var terser = new Terser(msg); var value = terser.Get("EVN-4"); if (string.IsNullOrEmpty(value)) { validationResults = new[] { new ValidationException(Description) }; } return(validationResults); }
/// <summary> /// Test /// </summary> /// <param name="msg"></param> /// <returns></returns> public override ValidationException[] test(NHapi.Base.Model.IMessage msg) { ValidationException[] result = new ValidationException[0]; foreach (MessageRegExRuleElement rule in regexRules) { 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) { Terser terser = new Terser(msg); string value = terser.Get(rule.FieldIndicator); if ((value == null) && !rule.AllowNull) { result = new ValidationException[1] { new ValidationException(string.Format("Value in '{0}' may not be null.", value)) }; } else if ((value != null) && !Regex.IsMatch(value, rule.RegEx)) { result = new ValidationException[1] { new ValidationException(string.Format("Value '{0}' in '{1}' doesn't match regex '{2}'.", value, rule.FieldIndicator, rule.RegEx)) }; } } if (result.Count() > 0) { break; } } return(result); }
/// <summary> /// Create a message stream /// </summary> private System.IO.Stream CreateMessageStream(NHapi.Base.Model.IMessage msg) { NHapi.Base.Parser.PipeParser pp = new NHapi.Base.Parser.PipeParser(); return(new MemoryStream(Encoding.ASCII.GetBytes(pp.Encode(msg)))); }
public NHapi.Base.validation.ValidationException[] test(NHapi.Base.Model.IMessage msg) { return(new NHapi.Base.validation.ValidationException[0]); }