public HL7MappingSegment(string segmentName, string value, HL7MappingSegment parentSegment, int subindex) : this() { this.SegmentName = value; this.ParentSegment = parentSegment; this.ParentSegment.SubSegments.Add(this); this.Index_L1 = parentSegment.Index_L1; this.Index_L1 = subindex; }
//public void ImportMapping() //{ // this.ImportMapping(this.FileInfo); //} public Hl7Mapping ImportMapping(FileInfo fi) { if (!fi.Exists) { MessageBox.Show("Mappingfilen (oversikt over feltnavn):\r\n" + fi.FullName + "\r\nikke funnet. Ignorer mappingen", "Innlesing av mapping fil feilet", MessageBoxButtons.OK, MessageBoxIcon.Error); return(this); } string str = String.Empty; try { using (StreamReader sr = new StreamReader(fi.FullName, Encoding.ASCII)) { HL7MappingSegment parentSegment = null; _HL7Segments = new HL7MappingSegments(); this.FileInfo = fi; this.MappingFileFullPath = fi.FullName; while (!sr.EndOfStream) { str = sr.ReadLine(); // -- Fjern kommentar -- str = HL7.TrimComment(str, COMMENT_CHAR); string[] fields = str.Split(new char[] { '\t' }); { string strTmp = GetFieldAsString(fields, INDEX_SECTION); if (String.IsNullOrEmpty(strTmp)) { continue; // Do not save segments with empty names } if (String.IsNullOrWhiteSpace(GetFieldAsString(fields, INDEX_SECTION))) { continue; // Do not save segments with empty names } if (GetFieldAsString(fields, INDEX_SECTION).ToUpper().Contains(DISPLAY_NAME)) { DisplayName = GetFieldAsString(fields, 1); continue; } // -- Parse feltene i segmentet -- HL7MappingSegment segment = new HL7MappingSegment(); segment.SectionName = GetFieldAsString(fields, INDEX_SECTION); segment.Index_L1 = GetFieldAsint(fields, INDEX_INDEX_L1); segment.Index_L2 = GetFieldAsint(fields, INDEX_INDEX_L2); if (GetFieldAsString(fields, INDEX_COLLAPSED_DEFAULT).ToUpper() == STR_COLLAPSE_DEFAULT) { segment.CollapsedDefault = true; } // -- Styrer om verdien skal erstattes av ***** if (GetFieldAsString(fields, INDEX_DISPLAY_STYLE_VALUE).ToUpper() == STR_HIDE_VALUE) { segment.HideValue = true; } // -- Styrer om verdien skal vises i bold font if (GetFieldAsString(fields, INDEX_DISPLAY_STYLE_VALUE).ToUpper() == STR_BOLD_VALUE) { segment.ShowValueAsBold = true; } // -- Constraints - Numerisk verdi og feltlengder -- string constraintsTmp = String.Empty; char CONSTRAINTS_SEPARATOR = ';'; int MAX_FIELD_LENGTH = 9999; constraintsTmp = GetFieldAsString(fields, INDEX_CONSTRAINT).ToUpper(); if (!string.IsNullOrEmpty(constraintsTmp)) { string[] fieldsConstr = constraintsTmp.Split(CONSTRAINTS_SEPARATOR); foreach (string constr in fieldsConstr) { if (constr == "N") { segment.IsNumeric = true; } if (constr.Contains("L")) { string tmp = constr.Replace("L", ""); string[] fieldsLength = tmp.Split(','); if (fieldsLength.Length == 2) { int minTmp = 0; if (int.TryParse(fieldsLength[0], out minTmp)) { segment.MinLenght = minTmp; } else { MessageBox.Show("Kunne ikke lese inn min lengde for segmentet " + segment.ToString()); } int maxTmp = MAX_FIELD_LENGTH; if (int.TryParse(fieldsLength[1], out maxTmp)) { segment.MaxLenght = maxTmp; } else { MessageBox.Show("Kunne ikke lese inn max lengde for segmentet " + segment.ToString()); } } } } } string strName = GetFieldAsString(fields, INDEX_NAME); strName = HL7.TrimComment(strName, COMMENT_CHAR); segment.SegmentName = strName; // -- Håndtering av segment -- if (segment.Index_L2 <= 0) { // Current segment er på nivå 1 segment.Level = 1; _HL7Segments.Add(segment); // segment.MappingSection.Segments.Add(segment); //segment.ParentSegment = segment.MappingSection.Segment; SEGMENTER I DETTE NIVÅET HAR IKKE PARENT SEGMENT. KUN SECTION. } else if (segment.Index_L2 > 0) { // Segmentet er et subsegment. Parentsegment ble satt i FORRIGE iterasjon. segment.Level = 2; // Legger til parent segment. HL7MappingSegment parentSegmentTmp = this._HL7Segments.GetSegment(segment.SectionName, segment.Index_L1, 0); // segment.MappingSection.Segments.GetSegment(segment.SectionName, segment.Index_L1, 0); segment.ParentSegment = parentSegmentTmp; segment.ParentSegment.SubSegments.Add(segment); } else { MessageBox.Show("Nivå 3 ikke implementert i mappingen. Navnene på feltene vises ikke korrekt", "Importere navn for meldingsvisning", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } sr.Close(); // PopulateListOfSections(); return(this); } } catch (Exception ex) { MessageBox.Show("Feil under innlesing av mappingfilen (oversikt over feltnavn)\r\n" + str + "\r\n\n" + ex.Message + "\r\n\n" + ex.StackTrace, "Innlesing av mapping", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } }