/// <summary> /// Load a single CDA Document and extract the data and serialize to a XML file /// </summary> public void LoadSingleCdaDocument() { try { XmlDocument cdaDocument = LoadDocument("CdaDocumentPath.xml"); ICdaDataExtractor cdaDataExtractor = new CdaDataExtractor(); CdaDocument uberModel = cdaDataExtractor.Extract(cdaDocument); // serialize to a XML file var result = Serialize(uberModel); File.WriteAllBytes("uber.xml", result); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Load a single CDA Document and extract the data and serialize to a XML file /// </summary> public static void LoadSingleCdaDocument() { try { XmlDocument cdaDocument = LoadDocument(@"AdvanceCareInformationSampleAuthorNonHealthcareProvider_3A_Max.xml"); ICdaDataExtractor cdaDataExtractor = new CdaDataExtractor(); CdaDocument uberModel = cdaDataExtractor.Extract(cdaDocument); // serialize to a XML file var result = Serialize(uberModel); File.WriteAllBytes("uber.xml", result); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public CdaDocument Extract(XmlDocument cdaDocument) { if (cdaDocument == null) { throw new ArgumentException("'cdaDocument' cannot be null"); } var cdaXmlDocument = new CdaXmlDocument(cdaDocument); IDictionary <string, string> documentXPaths = _documentXPathProvider.GetDocumentXPaths(cdaXmlDocument.TemplateId); if (documentXPaths == null) { throw new ArgumentException("Document with template ID '" + cdaXmlDocument.TemplateId + "' not supported"); } // Extractors var authorOrgExtractor = new AuthorExtractor(documentXPaths); var author = authorOrgExtractor.Extract(cdaXmlDocument); var medicationsExtractor = new MedicationsExtractor(documentXPaths); var medications = medicationsExtractor.Extract(cdaXmlDocument); var adverseReactionsEx = new AdverseReactionsExtractor(documentXPaths); var adverseReactions = adverseReactionsEx.Extract(cdaXmlDocument); var documentMetadataExtractor = new DocumentMetadataExtractor(documentXPaths); var documentMetadata = documentMetadataExtractor.Extract(cdaXmlDocument); var medicalHistoryExtractor = new MedicalHistoryExtractor(documentXPaths); var medicalHistoryData = medicalHistoryExtractor.Extract(cdaXmlDocument); var subjectOfCareExtractor = new SubjectOfCareExtractor(documentXPaths); var subjectOfCare = subjectOfCareExtractor.Extract(cdaXmlDocument); var immunisationsEx = new ImmunisationsExtractor(documentXPaths); var immunisations = immunisationsEx.Extract(cdaXmlDocument); var consumerNoteEx = new ConsumerNoteExtractor(documentXPaths); var consumerNote = consumerNoteEx.Extract(cdaXmlDocument); var advanceCareInformationExtractor = new AdvanceCareInformationExtractor(documentXPaths); var advanceCareInformation = advanceCareInformationExtractor.Extract(cdaXmlDocument); var pbsExtractor = new PharmaceuticalBenefitItemExtractor(documentXPaths); var pbs = pbsExtractor.Extract(cdaXmlDocument); var diagnosticImagingExtractor = new DiagnosticImagingExtractor(documentXPaths); var diagnosticImaging = diagnosticImagingExtractor.Extract(cdaXmlDocument); var pathologyExtractor = new PathologyExtractor(documentXPaths); var pathology = pathologyExtractor.Extract(cdaXmlDocument); var document = new CdaDocument { Author = author, Medications = medications, AdverseReactions = adverseReactions, MedicalHistoryItems = medicalHistoryData, DocumentMetadata = documentMetadata, SubjectOfCare = subjectOfCare, ImmunisationItems = immunisations, ConsumerNote = consumerNote, AdvanceCareInformation = advanceCareInformation, PharmaceuticalBenefitItems = pbs, Pathology = pathology, DiagnosticImaging = diagnosticImaging }; return(document); }
static internal List <string> ValidateNZeHR(CdaDocument testInstance, string docTemplate) { List <string> validationResults = new List <string>(); List <string> formatValidationResults = new List <string>(); List <string> headerValidationResults = new List <string>(); List <string> dataValidationResults = new List <string>(); List <Code> clinicalCodeList = new List <Code>(); string templateID = string.Empty; int dataErrors = 0; // validate CDA - add any errors to list try { foreach (CdaTemplate tmpl in testInstance.templates) { templateID = tmpl.id; if (templateID == docTemplate) { break; } } if (templateID != docTemplate) { formatValidationResults.Add("Invalid Document Template ID " + templateID + " : expected " + docTemplate); } else { testInstance.ValidateAll(Specification.GetSchemaLocation()); // Schema Validation Results formatValidationResults.AddRange(testInstance.schemaErrors); // Header Validation Results foreach (string de in testInstance.allErrors) { if (de.ToUpper().StartsWith("HEADER:") || de.ToUpper().StartsWith("PATIENT:")) { headerValidationResults.Add(de); } } dataValidationResults.Add("Header: " + (headerValidationResults.Count < 1 ? "Pass" : "Fail")); dataValidationResults.AddRange(headerValidationResults); dataErrors += headerValidationResults.Count; int populatedSections = 0; // Section Validation Results foreach (CdaSection section in testInstance.sections) { if (section.items.Count > 0) { dataValidationResults.Add(section.displayName + " Section: " + (section.allErrors.Count < 1 ? "Pass" : "Fail")); dataValidationResults.AddRange(section.allErrors); dataErrors += section.allErrors.Count; populatedSections++; clinicalCodeList.AddRange(GetClinicalCodes(section)); } } if (populatedSections == 0) { dataErrors++; dataValidationResults.Add("No Section Entries could be imported."); } } } catch (Exception exData) { dataErrors++; dataValidationResults.Add("Exception : " + exData.Message); } validationResults.Add("FORMAT : " + (formatValidationResults.Count < 1 ? "Pass" : "Fail")); validationResults.AddRange(formatValidationResults); validationResults.Add("DATA : " + (dataErrors < 1 ? "Pass" : "Fail")); validationResults.AddRange(dataValidationResults); validationResults.Add("CODING : (from clinical data values)"); validationResults.AddRange(AnalyseClinicalCodes(clinicalCodeList)); return(validationResults); }