public AdvanceCareInformation Extract(CdaXmlDocument cdaDocument) { PersonName documentAuthorPersonName = null; PersonName personName = cdaDocument.GetPersonName(this._documentXPaths.Get("DocumentAuthorPersonName")); bool flag = personName != null; if (flag) { documentAuthorPersonName = personName; } return(new AdvanceCareInformation { DocumentAuthorPersonName = documentAuthorPersonName }); }
public SubjectOfCare Extract(CdaXmlDocument cdaDocument) { var subjectOfCare = new SubjectOfCare(); var patientNode = cdaDocument.SelectSingleNode(_documentXPaths.Get("SubjectOfCare")); var identifier = cdaDocument.SelectSingleNode(patientNode, _documentXPaths.Get("SubjectOfCareIhi")); string ihi = null; if (identifier != null && identifier.Attributes != null && identifier.Attributes["root"] != null) { ihi = identifier.Attributes["root"].InnerText; } if (!String.IsNullOrWhiteSpace(ihi) && ihi.Contains(".")) { ihi = ihi.Split('.').Last(); } subjectOfCare.Ihi = ihi; var gender = cdaDocument.GetCodableText(patientNode, _documentXPaths.Get("SubjectOfCareAdministrativeGenderCode")); if (gender != null) { subjectOfCare.AdmnistrativeGenderCode = gender.Code; } var birthTime = cdaDocument.GetDateTimeValue(patientNode, _documentXPaths.Get("SubjectOfCareBirthTime")); subjectOfCare.BirthTime = birthTime == null ? null as DateTime? : birthTime.Value; var personName = cdaDocument.GetPersonName(_documentXPaths.Get("SubjectOfCarePersonName")); subjectOfCare.PersonName = personName; subjectOfCare.MedicareNumber = cdaDocument.GetString(_documentXPaths.Get("MedicareNumberEntityIdentifier")); if (string.IsNullOrWhiteSpace(subjectOfCare.MedicareNumber)) { subjectOfCare.MedicareNumber = cdaDocument.GetString(_documentXPaths.Get("MedicareNumberEntitlements")); } subjectOfCare.DvaNumber = cdaDocument.GetString(_documentXPaths.Get("DvaNumber")); return(subjectOfCare); }
public DiagnosticImaging Extract(CdaXmlDocument cdaDocument) { var di = new DiagnosticImaging(); var diDocNode = cdaDocument.SelectSingleNode(_documentXPaths.Get("DIDocument")); var diReportDateTime = cdaDocument.GetDateTimeValue(diDocNode, _documentXPaths.Get("DIReportDateTime")); if (diReportDateTime != null) { di.ReportDateTime = diReportDateTime.Value; } var diReportDescription = cdaDocument.SelectSingleNode(diDocNode, _documentXPaths.Get("DIReportDescription")); if (diReportDescription != null) { di.ReportDescription = diReportDescription.InnerText; } var diReportStatus = cdaDocument.GetCodableText(diDocNode, _documentXPaths.Get("DIReportStatus")); di.ReportStatus = diReportStatus; var diReportIntegrityCheck = cdaDocument.SelectSingleNode(diDocNode, _documentXPaths.Get("DIReportIntegrityCheck")); if (diReportIntegrityCheck != null) { di.ReportIntegrityCheck = diReportIntegrityCheck.Value; } var diReportMediaType = cdaDocument.SelectSingleNode(diDocNode, _documentXPaths.Get("DIReportMediaType")); if (diReportMediaType != null) { di.ReportMediaType = diReportMediaType.Value; } var diReportDocName = cdaDocument.SelectSingleNode(diDocNode, _documentXPaths.Get("DIReportDocName")); if (diReportDocName != null) { di.ReportDocName = diReportDocName.Value; } var accessionNumber = cdaDocument.GetId(_documentXPaths.Get("AccessionNumber")); di.AccessionNumber = accessionNumber; var radXpath = _documentXPaths.Get("Radiologist"); var radNode = cdaDocument.SelectSingleNode(radXpath); var radiologistIdentifier = cdaDocument.SelectSingleNode(radNode, _documentXPaths.Get("RadiologistIdentifier")); if (radiologistIdentifier != null) { di.RadiologistIdentifier = radiologistIdentifier.Value.Replace("1.2.36.1.2001.1003.0.", ""); } var radiologistOrganisationName = cdaDocument.SelectSingleNode(radNode, _documentXPaths.Get("RadiologistOrganisationName")); if (radiologistOrganisationName != null) { di.OrganisationName = radiologistOrganisationName.InnerText; } var radiologistOrganisationIdentifier = cdaDocument.SelectSingleNode(radNode, _documentXPaths.Get("RadiologistOrganisationIdentifier")); if (radiologistOrganisationIdentifier != null) { di.OrganisationIdentifier = radiologistOrganisationIdentifier.Value.Replace("1.2.36.1.2001.1003.0.", ""); } if (radXpath != null) { List <Telecom> radiologistContactDetails = cdaDocument.GetTelecoms(radXpath + "/" + _documentXPaths.Get("RadiologistContactDetails")); if (radiologistContactDetails != null) { di.ContactDetails = radiologistContactDetails; } var personName = cdaDocument.GetPersonName(radXpath + "/" + _documentXPaths.Get("RadiologistName")); if (personName != null) { di.Radiologist = personName; } } // 1..* results di.ImagingExaminationResults = new List <ImagingExaminationResult>(); var diTestResults = cdaDocument.SelectNodes(_documentXPaths.Get("DITestResults")); if (diTestResults != null && diTestResults.Count > 0) { foreach (XmlNode results in diTestResults) { ImagingExaminationResult ier = new ImagingExaminationResult(); ier.ExamResultName = cdaDocument.GetCodableText(results, _documentXPaths.Get("DIExamResultName")); ier.Modality = cdaDocument.GetCodableText(results, _documentXPaths.Get("DIModality")); ier.AnatomicalRegion = cdaDocument.GetCodableText(results, _documentXPaths.Get("DIAnatomicalRegion")); ier.OverallResultStatus = cdaDocument.GetCodableText(results, _documentXPaths.Get("DIOverallResultStatus")); ier.ImageDateTime = cdaDocument.GetDateTimeValue(results, _documentXPaths.Get("DIImageDateTime")).Value; ier.ExaminationProcedure = cdaDocument.SelectSingleNode(results, _documentXPaths.Get("DIExaminationProcedure")).InnerText; ier.ObservationDateTime = cdaDocument.GetDateTimeValue(results, _documentXPaths.Get("DIObservationDateTime")).Value; ier.AnatomicalSites = new List <AnatomicalSite>(); var targetSiteCode = cdaDocument.SelectNodes(results, _documentXPaths.Get("DIAnatomicalSite")); foreach (XmlNode anatomicalSite in targetSiteCode) { AnatomicalSite anSite = new AnatomicalSite(); anSite.NameOfLocation = cdaDocument.GetCodableText(anatomicalSite as XmlElement); anSite.Side = cdaDocument.GetCodableText(anatomicalSite, _documentXPaths.Get("DIAnatomicalSiteSide")); anSite.Description = anatomicalSite != null ? anSite.NameOfLocation.OriginalText : null; ier.AnatomicalSites.Add(anSite); } di.ImagingExaminationResults.Add(ier); } } return(di); }
public Author Extract(CdaXmlDocument cdaDocument) { // Author name PersonName authorName = null; PersonName personName = cdaDocument.GetPersonName(_documentXPaths.Get("AuthorPersonName")); if (personName != null) { authorName = personName; } // Telecom List <Telecom> telecoms = cdaDocument.GetTelecoms(_documentXPaths.Get("AuthorTelecoms")); // Author HPII string hpii = null; var idRootAttrib = cdaDocument.SelectSingleNode(_documentXPaths.Get("AuthorHpii")); if (idRootAttrib != null) { hpii = idRootAttrib.Value; hpii = hpii.Substring(hpii.Length - 16); } // Author IHI string ihi = null; var ihiRootAttrib = cdaDocument.SelectSingleNode(_documentXPaths.Get("AuthorIhi")); if (ihiRootAttrib != null) { ihi = ihiRootAttrib.Value; ihi = ihi.Substring(ihi.Length - 16); } // Organisation name string organisationName = null; var organisationNameElem = cdaDocument.SelectSingleNode(_documentXPaths.Get("AuthorOrganisationName")); if (organisationNameElem != null) { organisationName = organisationNameElem.InnerText; } // Organisation HPIO string hpio = null; var organisationIdAttrib = cdaDocument.SelectSingleNode(_documentXPaths.Get("AuthorOrganisationHpio")); if (organisationIdAttrib != null) { hpio = organisationIdAttrib.Value; hpio = hpio.Substring(hpio.Length - 16); } var authorOrg = new Author { AuthorName = authorName, AuthorHpii = hpii, AuthorIhi = ihi, OrganisationName = organisationName, OrganisationHpio = hpio, Telecoms = telecoms }; return(authorOrg); }
public Pathology Extract(CdaXmlDocument cdaDocument) { var pathology = new Pathology(); var pathDocNode = cdaDocument.SelectSingleNode(_documentXPaths.Get("PathologyDocument")); if (pathDocNode != null) { var pathologyReportName = cdaDocument.SelectSingleNode(pathDocNode, _documentXPaths.Get("PathologyReportName")); if (pathologyReportName != null) { pathology.ReportName = pathologyReportName.InnerText; } var pathologyReportDateTime = cdaDocument.GetDateTimeValue(pathDocNode, _documentXPaths.Get("PathologyReportDateTime")); if (pathologyReportDateTime != null) { pathology.ReportDateTime = pathologyReportDateTime.Value; } var pathologyReportStatus = cdaDocument.GetCodableText(pathDocNode, _documentXPaths.Get("PathologyReportStatus")); pathology.ReportStatus = pathologyReportStatus; var pathologyReportIdentifier = cdaDocument.GetId(pathDocNode, _documentXPaths.Get("PathologyReportIdentifier")); pathology.ReportIdentifier = pathologyReportIdentifier; var pathologyReportIntegrityCheck = cdaDocument.SelectSingleNode(pathDocNode, _documentXPaths.Get("PathologyReportIntegrityCheck")); if (pathologyReportIntegrityCheck != null) { pathology.ReportIntegrityCheck = pathologyReportIntegrityCheck.Value; } var pathologyReportMediaType = cdaDocument.SelectSingleNode(pathDocNode, _documentXPaths.Get("PathologyReportMediaType")); if (pathologyReportMediaType != null) { pathology.ReportMediaType = pathologyReportMediaType.Value; } var pathologyReportDocName = cdaDocument.SelectSingleNode(pathDocNode, _documentXPaths.Get("PathologyReportDocName")); if (pathologyReportDocName != null) { pathology.ReportDocName = pathologyReportDocName.Value; } var pathXpath = _documentXPaths.Get("Pathologist"); var pathNode = cdaDocument.SelectSingleNode(pathXpath); var pathologistIdentifier = cdaDocument.SelectSingleNode(pathNode, _documentXPaths.Get("PathologistIdentifier")); if (pathologistIdentifier != null) { pathology.PathologistIdentifier = pathologistIdentifier.Value.Replace("1.2.36.1.2001.1003.0.", ""); } var pathologistOrganisationName = cdaDocument.SelectSingleNode(pathNode, _documentXPaths.Get("PathologistOrganisationName")); if (pathologistOrganisationName != null) { pathology.OrganisationName = pathologistOrganisationName.InnerText; } var pathologistOrganisationIdentifier = cdaDocument.SelectSingleNode(pathNode, _documentXPaths.Get("PathologistOrganisationIdentifier")); if (pathologistOrganisationIdentifier != null) { pathology.OrganisationIdentifier = pathologistOrganisationIdentifier.Value.Replace("1.2.36.1.2001.1003.0.", ""); } if (pathXpath != null) { List <Telecom> pathologistContactDetails = cdaDocument.GetTelecoms(pathXpath + "/" + _documentXPaths.Get("PathologistContactDetails")); if (pathologistContactDetails != null) { pathology.ContactDetails = pathologistContactDetails; } var personName = cdaDocument.GetPersonName(pathXpath + "/" + _documentXPaths.Get("PathologistName")); if (personName != null) { pathology.Pathologist = personName; } } } // 1..* results pathology.PathologyTestResults = new List <PathologyTestResult>(); var nodes = cdaDocument.SelectNodes(_documentXPaths.Get("PathologyTestResults")); if (nodes != null && nodes.Count > 0) { pathology.PathologyTestResults = (from XmlNode node in nodes select new PathologyTestResult { TestResultName = cdaDocument.GetCodableText(node, _documentXPaths.Get("PathologyTestResultName")), Discipline = cdaDocument.GetCodableText(node, _documentXPaths.Get("PathologyDiscipline")), SpecimenCollectionDateTime = cdaDocument.GetDateTimeValue(node, _documentXPaths.Get("PathologyCollectionDateTime")).Value, ObservationDateTime = cdaDocument.GetDateTimeValue(node, _documentXPaths.Get("PathologyObservationDateTime")).Value, TestResultStatus = cdaDocument.GetCodableText(node, _documentXPaths.Get("PathologyTestResultStatus")) } ).ToList(); } return(pathology); }