Пример #1
0
        /// <summary>
        /// Validate inut data for create lab order message: Required and length
        /// </summary>
        /// <param name="labOrder">lab order infor</param>
        /// <returns>empty string: input data is correct; error message: input data is not correct</returns>
        private string ValidateAppointmentInfor(LabAppointment labOrder)
        {
            var MessageBuilder = new StringBuilder();

            //MSH.4 - Required-10 length
            MessageBuilder.Append(labOrderValidator.OrderSendingFacilityValidate(labOrder.SendingFacility));

            // PID.2.1
            MessageBuilder.Append(labOrderValidator.OrderExternalPatientIdValidate(labOrder.ExternalPatientId));

            //PID.4.1
            MessageBuilder.Append(labOrderValidator.OrderAltPatientIdValidate(labOrder.AltPatientId));

            //PID.5.1 - 25 alpha characters
            MessageBuilder.Append(labOrderValidator.OrderLastNameValidate(labOrder.LastName));

            //PID.5.2 - 15 characters
            MessageBuilder.Append(labOrderValidator.OrderFirstNameValidate(labOrder.FirstName));

            //PID.5.3 - 15 characters
            MessageBuilder.Append(labOrderValidator.OrderMidleNameValidate(labOrder.PatientMiddleInitial));

            //PID.7.1 - 8 length - convert from datetime
            // do not validate

            //PID.8.1 - 1 char
            MessageBuilder.Append(labOrderValidator.OrderGenderValidate(labOrder.Gender));

            //PID.10 - 1 char
            MessageBuilder.Append(labOrderValidator.OrderRaceValidate(labOrder.PatientRace, false));

            //PID,11,1 - 35 char
            MessageBuilder.Append(labOrderValidator.OrderPatientAddressValidate(labOrder.FullPatientAddress));

            //PID.11.3 - 16 chars
            MessageBuilder.Append(labOrderValidator.OrderCityValidate(labOrder.PatientCity));

            // PID.11.4 - 2 chars
            MessageBuilder.Append(labOrderValidator.OrderStateValidate(labOrder.PatientState));

            //PID.11.5 - 9 chars
            MessageBuilder.Append(labOrderValidator.OrderPatientZipCodeValidate(labOrder.PatientZipCode));

            //PID.13 - 10 chars
            MessageBuilder.Append(labOrderValidator.OrderPatientPhoneValidate(labOrder.PatientPhoneNumber));

            // PID.18.1 - 8 digrit numeric characters-Required
            MessageBuilder.Append(labOrderValidator.OrderAccountValidate(labOrder.AccountNo));

            // NTE.5.1 - 1
            MessageBuilder.Append(labOrderValidator.OrderFastingFlagValidate(labOrder.FastingFlag));

//            //ORC.2.1 - 30
//            MessageBuilder.Append(labOrderValidator.OrderSpecmenIdValidate(labOrder.SpecmenId));
//
//            //ORC.12.1 - 10
//            MessageBuilder.Append(labOrderValidator.OrderOrderingProviderIdValidate(labOrder.OrderingProviderIdNumber));
//
//            //ORC.12.2 - 25
//            MessageBuilder.Append(labOrderValidator.OrderOrderingProviderLastNameValidate(labOrder.OrderingProviderLastName));
//
//            //ORC.12.3 - 15
//            MessageBuilder.Append(
//                labOrderValidator.OrderOrderingProviderFirstInitialValidate(labOrder.OrderingProviderFirstInitial,
//                    labOrder.OrderingProviderLastName));
//
//            // OBR.2.1- SpecmentID -already validated on ORC
//            // OBR.13.1 - 64
//            MessageBuilder.Append(labOrderValidator.OrderRelevantClinicalValidate(labOrder.RelevantClinicalInformation));
//
//            // validate products information
//            int productCount = 0;
//            if (labOrder.Products != null)
//            {
//                productCount = labOrder.Products.Count;
//            }
//
//            // At this time, only 40 orders are supported. Any more OBR added will be ignored.
//            MessageBuilder.Append(labOrderValidator.OrderProductCountValidate(productCount));
//
//            if (labOrder.Products != null && productCount != 0)
//            {
//                for (int index = 0; index < productCount; index++)
//                {
//                    Product product = labOrder.Products[index];
//
//                    // OBR.4.1 - 15 alpha, numeric or special characters - required
//                    MessageBuilder.Append(labOrderValidator.OrderLabCorpOrderCodeValidate(product.LabCorpOrderCode, index));
//
//                    // OBR.4.2 - 50
//                    MessageBuilder.Append(labOrderValidator.OrderTestOrderNameValidate(product.TestOrderName, index));
//
//                    // OBR.4.3 - maxlength 2- required.
//                    // 'L'- Local Identifier (LabCorp Identifier)
//
//                    //OBR.11 - maxlength 1- Required
//                    // 'N' - New orders accompanying new specimen (original order)
//                }
//            }

            string errorMessage = MessageBuilder.ToString();

            if (errorMessage.Length != 0)
            {
                errorMessage = string.Format("Input data error:{0}{1}", Environment.NewLine, errorMessage);
            }

            return(errorMessage);
        }