210 likes | 363 Views
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
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"} }