Download presentation
Presentation is loading. Please wait.
Published byJonathan Hodge Modified over 8 years ago
1
Model-Driven Health Tools (MDHT) CDA Tools Overview http://mdht.projects.openhealthtools.org John T.E. Timm (IBM Research) and David A. Carlson (Veterans Health Administration)
2
31 August 2009MDHT CDA Tools Overview2 CDA Tools Objectives Accelerate and lower cost of adopting CDAr2 standard Define new CDA templates and implementation guides in UML Complete MDA lifecycle from UML to Java code Open source reference implementation with EPL license Author template constraints and implementation guides (IG) UML structure and OCL constraints Reuse templates As parent template with additional constraints Include within new document or section templates Generate complete application-ready Java libraries Generate IG specification documentation (future)
3
31 August 2009MDHT CDA Tools Overview3 Generate Java APIs for CDA Transform UML and OCL to EMF Ecore models Generate complete application-ready Java libraries Generate developer-friendly, domain-specific Java APIs Design simplified “façade” API for application use cases Programmatic creation of CDA documents that conform to IG templates e.g., EMR system adapters that export or import CDA Save CDA XML document Template Java class (CCD ProblemAct) mapped to templateId via registry Parse/load CDA documents templateId mapped to Java class, e.g. ProblemObservation, Medication Validate CDA document for template compliance Goal: complete validation via Java, generated from UML, equivalent to current NIST schematron rules
4
31 August 2009MDHT CDA Tools Overview4 Current Approaches Low-level XML processing technologies e.g. XPath, DOM API is generic, not domain-specific Instance validation through XML Schema and Schematron Requires intimate knowledge of CDA XML structure XML binding technologies e.g. JAXB, EMF-XSD, XMLBeans Not suited for codegen with very complex schemas If codegen succeeds, API is oriented towards base CDA XML structure Model-Driven Approach Higher-level of domain specificity in modeling and generated API May define classes and operations in such a way that number of method calls to produce an instance is reduced
5
31 August 2009MDHT CDA Tools Overview5 Domain Model (UML+OCL) Implementation Model (UML+OCL) Code generation CDA Instances (XML) Produce, consume, validate Implementation Model (EMF) Runtime API (Java) Implementation Guide (PDF) Model-to- Model Transformation
6
31 August 2009MDHT CDA Tools Overview6 CDA Template Modeling Types of constraints UML Property Redefinition Used to specify fixed or default value Used to restrict cardinality and/or data type Vocabulary constraints on coded attributes Used to restrict code, codeSystem, etc. Template-related constraints Template id Template relationships (is-a, has-a) Constraints are modeled using UML properties and directed associations HDF and CDA Profiles are used to specify additional information used in model-to-model transformation
7
31 August 2009MDHT CDA Tools Overview7 Template relationships Generalization/inheritance/”is-a” Modeled using standard UML generalization hitsp::Condition is a ihe::ProblemConcernEntry ihe::ProblemConcernEntry is a ihe::ConcernEntry ihe::ConcernEntry is a ccd::ProblemAct ccd::ProblemAct is a cda::Act Association/containment/”has-a” Modeled using UML directed association ccd::ContinuityOfCareDocument has a ccd::ProblemSection ccd::ProblemSection has a ccd::ProblemAct ccd::ProblemAct has a ccd::ProblemObservation
8
31 August 2009MDHT CDA Tools Overview8 CCD Template Model for Problems Section
9
31 August 2009MDHT CDA Tools Overview9 Example conformance rule CONF-140: CCD SHOULD contain exactly one and SHALL NOT contain more than one Problem section (templateId 2.16.840.1.113883.10.20.1.11). The Problem section SHALL contain a narrative block, and SHOULD contain clinical statements. Clinical statements SHOULD include one or more problem acts (templateId 2.16.840.1.113883.10.20.1.27). A problem act SHOULD include one or more problem observations (templateId 2.16.840.1.113883.10.20.1.28).
10
31 August 2009MDHT CDA Tools Overview10 Modeling the conformance rule 1.Create classes: a.ContinuityOfCareDocument (extends cda::ClinicalStatement) b.ProblemSection (extends cda::Section) c.ProblemAct (extends cda::Act) d.ProblemObservation (extends cda::Observation) 2.Apply stereotypes to classes: a. > stereotype is applied to all classes b.templateId stereotype property value is specified 3.Create directed associations between classes: a.ContinuityOfCareDocument -> ProblemSection b.ProblemSection -> ProblemAct c.ProblemAct -> ProblemObservation d.Multiplicity (upper bound) of the association may be specified to indicate exactly one or more than one 4.Apply stereotypes to associations: a. > stereotype is applied to all associations b.severity (ERROR, WARNING, INFO) and message property values are specified
11
31 August 2009MDHT CDA Tools Overview11 Generated OCL constraints ContinuityOfCareDocument ContinuityOfCareDocument_templateId: self.hasTemplateId(‘2.16.840.1.113883.10.20.1’) ContinuityOfCareDocument_problemSection: self.getSection()->one(sect : cda::Section | sect.oclIsKindOf(ccd::ProblemSection)) ProblemSection ProblemSection_templateId: self.hasTemplateId(‘2.16.840.1.113883.10.20.1.11’) ProblemSection_problemAct: self.getAct()->exists(act : cda::Act | act.oclIsKindOf(ccd::ProblemAct)) ProblemAct ProblemAct_templateId: self.hasTemplateId(‘2.16.840.1.113883.10.20.1.27’) ProblemAct_problemObservation: self.getObservation(obs : cda::Observation | obs.oclIsKindOf(ccd::ProblemObservation)) ProblemObservation ProblemObservation_templateId: self.hasTemplateId(‘2.16.840.1.113883.10.20.1.28’)
12
31 August 2009MDHT CDA Tools Overview12 Validation Severity and Message ContinuityOfCareDocument_templateId Severity: ERROR Message: The template identifier for continuity of care document is 2.16.840.1.113883.10.20.1 ContinuityOfCareDocument_problemSection Severity: WARNING Message Continuity of care document SHOULD include exactly one and SHALL NOT include more than one problem sections ProblemSection_templateId Severity: ERROR Message: The template identifier for problem section is 2.16.840.1.113883.10.20.1.11 ProblemSection_problemAct Severity: WARNING Message: Problem section SHOULD include one or more problem acts. ProblemAct_templateId Severity: ERROR Message: The template identifier for problem act is 2.16.840.1.113883.10.20.1.27 ProblemAct_problemObservation Severity: WARNING Message: Problem act SHOULD include one or more problem observations ProblemObservation_templateId Severity: ERROR Message: The template identifier for problem observation is 2.16.840.1.113883.10.20.1.28
13
31 August 2009MDHT CDA Tools Overview13 IHE Template Model (subset, work-in-progress)
14
31 August 2009MDHT CDA Tools Overview14 HITSP Template Model (C32 and C83)
15
31 August 2009MDHT CDA Tools Overview15 Domain Specific Java APIs for Templates PatientSummary doc = HitspFactory.eINSTANCE.createPatientSummary().init(); II id = DatatypesFactory.eINSTANCE.createII("2.16.840.1.113883.3.72", "CCD_HITSP_C32v2.4_16SectionsWithEntries_Rev6_Notes"); doc.setId(id); ActiveProblemsSection problemList = doc.createProblemListSection(); Condition condition = HitspFactory.eINSTANCE.createCondition().init(); problemList.addAct(condition); ProblemObservation obs = CCDFactory.eINSTANCE.createProblemObservation().init(); condition.addObservation(obs); ProblemHealthStatus healthStatus = CCDFactory.eINSTANCE.createProblemHealthStatus().init(); obs.addObservation(healthStatus); CE healthStatusValue = DatatypesFactory.eINSTANCE.createCE("xyz", "2.16.840.1.113883.1.11.20.12", "ProblemHealthStatusCode", null); healthStatus.getValue().add(healthStatusValue);
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.