Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        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";
            NHapi.Base.Model.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);
            NHapi.Base.Model.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);
        }
Ejemplo n.º 3
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);
        }