コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }