/// <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); }