cimi (core) reference model & data types proposed changes...
TRANSCRIPT
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20121 / 22
CIMI (Core) Reference Model & Data TypesProposed Changes as Discussed @ github
and the google modelling taskforce list
Rockville F2F sept-2012
www.github.org for issues distilled from the discussions[cimi-modelling-taskforce] google groups list for general discussions
https://groups.google.com/d/forum/cimi-modelling-taskforce
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20122 / 22
Tesler's LawLaw of Conservation of Complexity
“Every application is complex, the question is were is the complexity solved, if not in the UI
then the back-end needs to handle it.”
– Tesler (Apple Design Guru)
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20123 / 22
Some rules
● As a general rule we want to minimise complexity● e.g. recursion, deep nesting and abstract anti-patterns
● Each element in the model should have a use-case, if not, then remove the element
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20124 / 22
Recap of work
● Create the CIMI RM in UML using EA● Import the OpenEHR RM XMI as starting point
● Discuss RM “issues” via GitHub● Some issues were caused by importing the OpenEHR RM XMI in EA● Most issues were in the Data Value Types
● Documentation clarifications● Valuesets are documented but missing in the model → enumerations
● Use the ADL Workbench as a tool for the Clinical Models● requires a BMM (Basic Meta-Model) “config” file● auto-generated from the CIMI RM UML
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20125 / 22
The Parts of the CIMI RM
● The full CIMI Reference Model consists of● Core Reference Model● Data Type Value Types● Demographics Model● Supporting Classes● Assumed Types ← the primitive types
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20126 / 22
COMPOSITION
+ category: CODED_T EXT+ language: CODED_T EXT+ terri to ry: CODED_T EXT
CONTENT_ITEM
ENTRY
+ language: CODED_T EXT
SECTION
ARCHETYPED
«is_ im _infrastructure»+ archetype_ id : ARCHET YPE_ID+ tem pla te_id: T EM PLAT E_ID [0..1]+ rm _version: String
«archetype_parent»LOCATABLE
+ nam e: T EXT
«is_im _infrastructure»+ archetype_node_id : String+ u id: UID_BASED_ID [0..1]
LINK
+ m eaning: T EXT+ target: EHR_URI+ type: T EXT
ITEM
ELEMENT
+ nul l_ flavor: CODED_T EXT [0 ..1 ]
CLUSTER
+ structure_type: CODED_T EXT [0..1]
DATA_VALUE
PARTICIPATION
+ function: CODED_T EXT+ m ode: CODED_T EXT
«is_im _runtim e»+ tim e: INT ERVAL<DAT E_T IM E> [0 ..1]
PARTY_PROXY
+participa tion
0..*
+value 0..1
1
+i tem s0..*
+data1..*
+content 0..*
+l inks
0..*
+i tem s1..*
+party
1..1
+archetype_detai ls« is_im _in frastructure»
0..1
Core Reference Model 1.0.5
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20127 / 22
CLUSTER, ITEM
● #1 CLUSTER.value: what is it + do we need it?#2 Is ITEM the correct level for ‘null_flavour’?→ No real use-cases so far, revert back the the original OpenEHR specs.
ITEM
ELEMENT
+ nul l_flavor: CODED_T EXT [0..1]
CLUSTER
+ structure_type: CODED_T EXT [0..1]
DATA_VALUE
+value 0..1
1
+i tem s1..*
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20128 / 22
YESNO
+ value: Boolean
DATA_VALUE
IDENTIFIER
+ id: String+ type: CODED_T EXT+ issuer: String
ENCAPSULATED
MULTIMEDIA
+ al terna te_text: String [0..1]+ m edia_type: CODED_T EXT+ uri : URI [0..1]
« is_im _runtim e»+ data: Byte [0..*] (Array)+ integri ty_check: Byte [0..*] (Array)
PARSABLE
+ form al ism : CODED_T EXT+ value: String
COUNT
+ m agni tude: Integer
QUANTITY
+ m agni tude: Double+ uni ts: CODED_T EXT+ precision: Integer [0..1]
PROPORTION
+ num erator: Real+ denom inator: Rea l+ precision: In teger [0..1]+ type: CODED_T EXT
ORDINAL
+ sym bol : CODED_T EXT+ value: Integer
DV_ORDERED
QUANTIFIED
+ m agni tude_status: String [0 ..1]
AMOUNT
+ accuracy: Real [0..1]+ accuracy_is_percent: Boolean [0..1]
ABSOLUTE_QUANTITY
DATE
+ value: String+ m agni tude: Integer [0 ..1]
TIME
+ value: String+ m agn i tude: Double [0..1]
DATE_TIME
+ value: String+ m agni tude: Double [0..1]
DURATION
+ value: String+ m agni tude: Double [0..1 ]
TEMPORAL
TEXT
+ value : String+ language: CODED_T EXT [0..1]
URI
+ value: String
CODED_TEXT
+ code_string: String+ term inology_id: T ERM INOLOGY_ID+ term inology_version: String [0 ..1]+ term : String [0..1]+ term _id: String [0..1]
EHR_URI
T:DV_ORDERED
DV_INTERVAL
+ upper_unbounded: Boolean+ lower_unbounded: Boolean+ upper_included: Boo lean+ lower_included: Boolean
TERM_MAPPING
+ m atch: Character+ purpose: CODED_T EXT [0..1]
PLAIN_TEXT
+upper0..1
+m appings
0..*
+lower
0..1
+target 1..1
Data Value Types 1.0.5Was CODE_PHRASE
The CIMI Modeling TF / mvdzel @ results4care.nl – september 20129 / 22
QUANTIFIED types
COUNT
+ m agni tude: Integer
QUANTITY
+ m agni tude: Double+ un i ts: CODED_T EXT+ precision: Integer [0 ..1]
PROPORTION
+ num erator: Real+ denom inator: Real+ precision: Integer [0..1 ]+ type: CODED_T EXT
QUANTIFIED
+ m agni tude_status: S tring [0 ..1 ]
AMOUNT
+ accuracy: Rea l [0 ..1 ]+ accuracy_is_percent: Boolean [0..1]
DURATION
+ va lue: String+ m agn itude: Doub le [0..1 ]
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201210 / 22
QUANTIFIED types
● #5 ABSOLUTE_QUANTITY.accuracy is of abstract type AMOUNT → accuracy is removed
● #25 Are COUNT.magnitude and .accuracy correctly defined? → magnitude is moved to the concrete classes
● #24 How is QUANTIFIED.magnitude_status '~' related to AMOUNT.accuracy? → technically insolvable, this requires clinical validation
● #3 QUANTIFIED.magnitude is of abstract type DATA_VALUE → import error, fixed● #27 Documentation required for QUANTITY.precision → done● #29 Must PROPORTION.numerator and .denominator have the same precision? →
only one precision required● #28 PROPORTION.type → needs a value set
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201211 / 22
DURATION, TIME
● #26 How are DURATION.value strings formatted?#31 Which ISO-8601 date formats are required?→ ISO8601 format will come up when we do example instances
● #30 When is TIME used in a model? → TIME is used for reporting things in the past or “I feed the baby at 4 am and 6 am”
DATE
+ va lue: S tring+ m agni tude: In teger [0 ..1 ]
TIME
+ va lue : String+ m agn itude: Double [0 ..1 ]
DATE_TIME
+ va lue: String+ m agni tude: Double [0 ..1 ]
DURATION
+ va lue: String+ m agni tude: Double [0..1 ]
TEMPORAL
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201212 / 22
DATE FORMAT
● ISO8601● Machine readable (20120921100) vs human readable
(2012-sep-21 11:00 AM) and the other 10 human readable forms ;-) and not to forget the country forms
● Propose CIMI native format machine readable and then transformation to e.g. HTML for human readability
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201213 / 22
URI, IDENTIFIER, INTERVAL
● #9 EHR_URI: can this be deleted? → this is used in the LINK.target to make explicit that it is inside the EHR
● #8 What the limitations of the URI.value type are. is it only for the www? → no limitations
● #12 Should we remove IDENTIFIER.assigner?, #10 Does IDENTIFIER requires further substructure? → issues scopes the id, assigner is a runtime thing, so assinger is removed and no more substructure
● #11 IDENTIFIER.type should be changed to CODED_TEXT → changed, needs valueset
● #23 Does INTERVAL need upper and lower closed flags? → added● #4 INTERVAL is not typed (aka INTERVAL<T>) → done
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201214 / 22
MULTIMEDIA, PARSABLE, TEXT
● #16 Do we need MULTIMEDIA.thumbnail to define a clinical model? → a thumbnail is not used in a clinical model, this is a UI thing, removed
● #14 The definition of MULTIMEDIA.data needs fixing → done● #15 MULTIMEDIA.media_type change to CODED_TEXT, needs a valueset● MULTIMEDIA.data & integrity_check cardinality[0..1] → [0..*] &
is_im_runtime● #13 Should PARSABLE.formalism be a CODED_TEXT? → changed to
CODED_TEXT, needs a valueset● #17 TEXT documentation needs to be updated → done
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201215 / 22
TERM_MAPPING
● #6 TERM_MAPPING.match should not be 'any char' → needs a valueset in the model, is documented
● #22 Definitions of `CODED_TEXT` properties should be improved → done
● #21 Definition of `CODEABLE_TEXT` should be improved → model revised
● #19 Should TERM_MAPPING.purpose be changed to a CODED_TEXT? → done
● #3 Should TERM_MAPPING --> CODE_PHRASE be a "compose"? → done
● CODE_PHRASE renamed to CODED_TEXT
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201216 / 22
TEXT...
TEXT
+ va lue: String+ language: CODED_T EXT [0..1 ]
CODEABLE_TEXT
CODED_TEXT
+ code_string: String+ term inology_id: T ERM INOLOGY_ID+ term inology_version: String [0 ..1 ]+ term : String [0..1]+ term _id: String [0..1]
TERM_MAPPING
+ m atch: Character+ purpose: CODED_T EXT [0..1]
PLAIN_TEXT
+m appings0..*
+target 1..1
DATA_VALUETEXT
+ va lue: String+ language: CODED_TEXT [0..1]
CODED_TEXT
+ code_string: String+ term inology_id: T ERM INOLOGY_ID+ term inology_version: String [0..1]+ term : String [0 ..1]+ term _id: String [0..1 ]
TERM_MAPPING
+ m atch: Character+ purpose: CODED_T EXT [0..1]
PLAIN_TEXT
+m app ing
0..*
+target1
Current Simpler Model
Previous Model
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201217 / 22
Text-based Information
● The CIMI reference model provides 3 concrete data types to capture text-based information:● PLAIN_TEXT: A string of characters, written in a particular language, without
any associated coding or mappings. (i.e. no codes, no mappings)● CODED_TEXT: A text item that has been coded from a given terminology,
with optional term mappings (i.e. mandatory code, optional mapping)● CODEABLE_TEXT: A text item, which may either be:
(a) an uncoded string value, with optional term mappings, or(b) a text item that has been coded from a given terminology, with optional term mappings (i.e. a CODED_TEXT)(i.e. optional code, optional mapping)
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201218 / 22
PLAIN TEXT use
● “annotations”, “comments”, “remarks”, “descriptions”e.g.● lab result comment● specimen description● tissue macro description● radiology report● medication directions● medication reason for prescription
● Use as escape when there is not code available
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201219 / 22
Minor issues in the CIMI RM
● Renamed to YESNO because of name clash with BOOLEAN Data Value Type
● Default container-type to List only Array for MULTIMEDIA Byte
● Stereotype on LOCATABLE needed for BMM generation
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201220 / 22
Next steps
● ADL Workbench● BMM + Example ADL's on OpenEHR SubVersion● Minor changes needed
● XMI for EA and MDHT● Test the model and create/discuss issues based on those
models in GitHub
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201221 / 22
The CIMI Modeling TF / mvdzel @ results4care.nl – september 201222 / 22
Example Values vs Instances
● Where to put the example values● Coherent example instance● You can create an example instance in UML as an Object Diagram with values in
Run-State● (1) Data Instance:
● Expressed in ? mindmap ? UML ? some ADL form?● (2) Implementation Instance:
● DCM > HL7 v3 Example Instances from UML● OpenEHR, FHIR● XML, RDF, OWL (is OWL implementable? for reasoning.. yes!)
● Mail:● Examples (was RE: Reference Model Review) 2012-jul-25 Linda