210 likes | 380 Vues
This document presents a status update on the Archetype Modeling Language (AML) for Clinical Information Modeling Initiative (CIMI) as of April 11, 2013. Key objectives include the development of a UML style guide for archetype modeling, representation of ADL structures, constraints, and ontology while being independent of reference model selection. An overview is provided on the benefits of UML in model transformation and simplification of implementation through software profiles. Current AML RFP status and expected submission timelines are discussed as well.
E N D
Archetype Modeling Language (AML) for CIMI UML for Archetypes Status update April 11, 2013
AML Objectives • UML Style Guide and profile for archetype modeling • Representation of ADL structures, constraints, and ontology • Independent of reference model selection • CIMI, openEHR, iso13606, CEM, others • Define UML stereotypes, as necessary, to extend UML language • Most archetype structure already supported by UML • Primary addition: Terminology bindings (meaning and value set constraints)
AML RFP Status with OMG • Submission postponed until September • Additional status update from Harold Solbrig
Benefits of UML: Model Transformation Design AML profiles to simplify implementation and use • Model-to-Model • XSD • Ecore and Java • AOM • CEM/ CDL • CDA • Model-to-Text • ADL • DITA (for publishing documentation) • Mapping • To C-CDA
Example Model-to-Model transform (using ATL) --- Transform ResolvedValueSet to to XSD enumeration with documentation and appinfo rule ResolvedValueSet { from valueSet : AMLTerm!ResolvedValueSet to outEnum : UML!Enumeration ( name <- valueSet.getName(), ownedComment <- valueSetURI, ownedLiteral <- valueSet.getMembers() ), valueSetURI : UML!Comment ( -- TODO XSD appinfo body <- valueSet.uri ) }
ValueSetMember -> XSD enumeration facet rule ValueSetMember { from valueSetMember : AMLTerm!ValueSetMember to literal : UML!EnumerationLiteral ( name <- valueSetMember.getName(), ownedComment <- designation, ownedComment <- conceptURI ), designation : UML!Comment ( body <- valueSetMember.designation ), conceptURI : UML!Comment ( body <- valueSetMember.uri ) do { designation.applyStereotype('XMLSchema::Documentation'); conceptURI.applyStereotype('XMLSchema::AppInfo'); } }
Pattern Archetype in ADL definition ENTRY [at0000] matches { data matches { -- Result (in UML: nested, or inner, class) CLUSTER [at0002] occurrences matches {1} matches { items matches { ITEM [at0003] occurrences matches {*} matches {*} -- value ITEM [at0004] occurrences matches {0..1} matches {*} -- reference range } } -- archetype slot, re-use a shared archetype for Body Location allow_archetype CLUSTER [at0005] occurrences matches {*} matches { include archetype_id/value matches {/cimi-RM-CLUSTER\.body_location\.v*/} } }
Body Location CLUSTER Archetype definition CLUSTER [at0000] matches { items matches { ELEMENT [at0001] occurrences matches {0..1} matches { value matches { CODED_TEXT matches {*} } } ELEMENT [at0002] occurrences matches {0..1} matches { value matches { PLAIN_TEXT matches {*} } } } }
Clinical Archetype (extends Pattern) definition ENTRY [at0000.1] matches { -- redefine Result (using path to inherited CLUSTER) /data[at0002]/items matches { -- “heart rate value” is subset of Result value -- ELEMENT with Quantity value is specialization of Result ITEM ELEMENT [at0003.2] occurrences matches {0..1} matches { value matches { QUANTITY matches { units matches { CODED_TEXT matches { terminology_id matches { TERMINOLOGY_ID matches { value matches {"local"} } } term_id matches {"at0.5"} }