示例#1
0
        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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        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);
        }
示例#4
0
        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"));
        }
示例#6
0
        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);
            }
        }
示例#7
0
        /// <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);
        }
示例#9
0
        /// <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);
        }
示例#10
0
 /// <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))));
 }
示例#11
0
 public NHapi.Base.validation.ValidationException[] test(NHapi.Base.Model.IMessage msg)
 {
     return(new NHapi.Base.validation.ValidationException[0]);
 }