/// <summary> /// Validate - Validate the required fields for the given object /// make this call after the hl7 segment string has been set /// </summary> /// <param name="seg">NTE object</param> /// <returns>list<SegmentError></returns> private List <SegmentError> Validate(NTE seg, HL7Encoding _encode) { const string fnName = "Validate"; List <SegmentError> segErrors = new List <SegmentError>(); try { foreach (var rqFld in seg.RequiredFields) { if (rqFld.IsRequired) { Object obj = GetField(_encode, seg.SegmentMsg, rqFld.FieldIdx); if (string.IsNullOrEmpty((string)obj)) { segErrors.Add(new SegmentError(rqFld.HL7Segment, rqFld.FieldName, string.Format("{0}:{1} - field {2} Value is required cannot be null", modName, fnName, rqFld.FieldName))); break; // leave } switch (rqFld.FieldType.ToLower()) { case "int": bool bAns = int.TryParse(((string)obj), out int nValue); if (!bAns) { segErrors.Add(new SegmentError(rqFld.HL7Segment, rqFld.FieldName, string.Format("{0}:{1} - field {2} type is 'int' value is required cannot be null", modName, fnName, rqFld.FieldName))); } break; case "string": string sTmp = (string)obj; // check if string is greate than fieldLength if (sTmp.Length > rqFld.FieldLength) { segErrors.Add(new SegmentError(rqFld.HL7Segment, rqFld.FieldName, string.Format("{0}:{1} - field {2} type is 'string' value is greater than max size {3}", modName, fnName, rqFld.FieldName, rqFld.FieldLength))); } if (rqFld.FieldName.Equals(MshElements.MessageType.ToString()) && "MSH".Equals(seg.SegmentMsg)) { // split the string ORM^O01. Validate ORM is first field if (!"ORM^O01".Equals(sTmp)) { segErrors.Add(new SegmentError(rqFld.HL7Segment, rqFld.FieldName, string.Format("{0}:{1} - Message type must be ORM^O01 : (" + (string)obj + ")", modName, fnName))); } } break; case "date": // the field is a date field but is a string in the HL7 message switch (((string)obj).Length) { case 8: case 12: case 14: // good break; default: segErrors.Add(new SegmentError(rqFld.HL7Segment, rqFld.FieldName, string.Format("{0}:{1} - field {2} type is 'date' value out of range YYYYMMDD, YYYYMMDDHHMM, YYYYMMDDHHMMSS", modName, fnName, rqFld.FieldName))); break; } break; default: segErrors.Add(new SegmentError(rqFld.HL7Segment, rqFld.FieldName, string.Format("{0}:{1} - FieldType ({2}) is undefined", modName, fnName, rqFld.FieldType.ToLower()))); break; } } } } catch (Exception exp) { string sTmp = string.Format("{0}:{1} - EXCEPTION ({2})", modName, fnName, exp); segErrors.Add(new SegmentError(seg.Segment, "N/A", sTmp)); } return(segErrors); }
///<summary> ///Removes the given NTE ///</summary> public void RemoveNTE(NTE toRemove) { this.RemoveStructure("NTE", toRemove); }
public NTE GetNTE(HL7Encoding _encode, string line) { const string fnName = "GetNTE"; List <SegmentError> segError = null; NTE nte = new NTE(); int nIdx = 0; try { nte.SegmentMsg = line; nte.Segment = "NTE"; segError = Validate(nte, _encode); foreach (int i in Enum.GetValues(typeof(NteElements))) { nIdx = i; object obj = GetElement(_encode, line, i); if (obj == null) { // check if this a required field string sTmp1 = ((Gt1Elements)i).ToString(); RequiredField rqFld = nte.RequiredFields.Find(x => x.FieldName.Equals(sTmp1)); if (rqFld != null && rqFld.IsRequired) { nte.Errors.Add(string.Format("{0}:{1} - WARNING Element ({2}) not found in segment, at field {3}", modName, fnName, ((NteElements)i).ToString(), i)); } continue; } switch ((NteElements)i) { case NteElements.Segment: nte.Segment = (string)obj; break; case NteElements.SeqId: if (!string.IsNullOrEmpty((string)obj)) { nte.SeqId = int.Parse((string)obj); } break; case NteElements.Source: if (!string.IsNullOrEmpty((string)obj)) { nte.Source = (string)obj; } break; case NteElements.Comment: if (!string.IsNullOrEmpty((string)obj)) { nte.Comment = (string)obj; } break; default: nte.Errors.Add(string.Format("{0}:{1} - Error element ({2}) not found", modName, fnName, ((NteElements)i).ToString())); break; } } } catch (Exception ex) { string sErr = string.Format("Exception:{0}:{1} - ({2}) {3}", modName, fnName, ((NteElements)nIdx).ToString(), ex); nte.Errors.Add(sErr); Console.WriteLine(sErr); } return(nte); }