void parse(RdfSegment rdfSeg, string rawSeg) { string[] flds = StringUtils.split(rawSeg, EncodingChars.FieldSeparator); if (flds.Length != rdfSeg.Columns.Length + 1) { throw new Exception("Invalid RDT segment: incorrect number of columns"); } if (flds[0] != "RDT") { throw new Exception("Invalid RDT segment: incorrect header"); } columns = new RdtColumn[rdfSeg.Columns.Length]; for (int i = 0; i < rdfSeg.Columns.Length; i++) { string[] columnValues = getColumnValues(flds[i + 1]); if (columnValues == null || columnValues.Length == 0) { columns[i] = new RdtColumn(rdfSeg.Columns[i].Description); } else if (columnValues.Length == 1) { columns[i] = new RdtColumn(rdfSeg.Columns[i].Description, columnValues[0]); } else { columns[i] = new RdtColumn(rdfSeg.Columns[i].Description, columnValues); } } }
public Patient getPatient(int rdtIdx) { if (RDT == null) { return(null); } if (QAK.QueryResponseStatus != "OK") { return(null); } if (rdtIdx > RDT.Length) { throw new IndexOutOfRangeException("Only " + RDT.Length + " RDTs"); } Patient result = new Patient(); RdtColumn column = RDT[rdtIdx].getColumn(MpiConstants.LASTNAME_FLDNAME); string patname = column.Values[0]; column = RDT[rdtIdx].getColumn(MpiConstants.FIRSTNAME_FLDNAME); if (column.Values != null && !StringUtils.isEmpty(column.Values[0])) { patname += ',' + column.Values[0]; } column = RDT[rdtIdx].getColumn(MpiConstants.MIDDLENAME_FLDNAME); if (column.Values != null && !StringUtils.isEmpty(column.Values[0])) { patname += ' ' + column.Values[0]; } column = RDT[rdtIdx].getColumn(MpiConstants.NAMESUFFIX_FLDNAME); if (column.Values != null && !StringUtils.isEmpty(column.Values[0])) { patname += ' ' + column.Values[0]; } result.Name = new PersonName(patname); column = RDT[rdtIdx].getColumn(MpiConstants.SSN_FLDNAME); result.SSN = new SocSecNum(column.Values[0]); column = RDT[rdtIdx].getColumn(MpiConstants.ICN_FLDNAME); string[] parts = StringUtils.split(column.Values[0], 'V'); result.MpiPid = parts[0]; result.MpiChecksum = parts[1]; column = RDT[rdtIdx].getColumn(MpiConstants.DOB_FLDNAME); if (column.Values != null && !StringUtils.isEmpty(column.Values[0])) { result.DOB = column.Values[0]; } column = RDT[rdtIdx].getColumn(MpiConstants.SEX_FLDNAME); if (column != null && column.Values != null) { result.Gender = column.Values[0]; } column = RDT[rdtIdx].getColumn(MpiConstants.DECEASEDDATE_FLDNAME); if (column.Values != null && !StringUtils.isEmpty(column.Values[0])) { result.DeceasedDate = column.Values[0]; } column = RDT[rdtIdx].getColumn(MpiConstants.SITES_FLDNAME); if (column != null && column.Values != null && column.Values.Length > 0) { ArrayList lst = new ArrayList(column.Values.Length); for (int i = 0; i < column.Values.Length; i++) { parts = StringUtils.split(column.Values[i], StringUtils.CARET); if (parts[0].Length == 3 && StringUtils.isNumeric(parts[0]) && parts[0] != "003") { SiteId s = new SiteId(parts[0], "", "", ""); if (parts.Length > 2) { s = new SiteId(parts[0], "", parts[1], parts[2]); } lst.Add(s); } } result.SiteIDs = (SiteId[])lst.ToArray(typeof(SiteId)); } column = RDT[rdtIdx].getColumn(MpiConstants.CMOR_FLDNAME); if (column != null && !StringUtils.isEmpty(column.Values[0])) { result.CmorSiteId = column.Values[0]; } return(result); }