slanted W3C logo
Cover page images (keys)

ShEx, 11179, Clinical Models

Using ISO 11179 to harmonize data elements between different clinical models

Problem statement

How can I make sure your EMR's blood pressure can go into my EMR?

11179 captures what you need to make those decisions.

ISO 11179

slanted W3C logo

Data Element:

  • name
  • desc
 

Values Domain:continuous or discrete(at least one possible value)

  • type - enumeration
  • size - min/max
  • format - units (constrained by "dimensionality")

Data Element examples:

  • type:Integer enumeration
  • size:3 - min/max: 0..1000
  • format: (integer) - units:mmHg
 
  • type:char enumeration L M H
  • size:1 - min/max: N/A
  • format: (char) - units: N/A

Data Element Meaning ---- Conceptual Domain Examples:

What's ISO 11179 do?

Data element management.

Distinctly models:

OpenEHR/CIMI

CIMI Example

definition
	ENTRY[at0000.1] matches {	-- Apgar score
		/data matches {
			CLUSTER[at0001] matches {
				item matches {
					ELEMENT[at0.9] occurrences matches {0..1} matches {	-- Respiratory effort
						value matches {
							0|[local::at0.10], 	-- Absent
							1|[local::at0.11], 	-- Weak or irregular
							2|[local::at0.12]  	-- Normal
						}
					}
					ELEMENT[at0.5] occurrences matches {0..1} matches {	-- Heart Rate
						value matches {
							0|[local::at0.6], 	-- Absent
							1|[local::at0.7], 	-- <100 beats per minute
							2|[local::at0.8]  	-- ≥100 beats per minute
						}
					}
					ELEMENT[at0.13] occurrences matches {0..1} matches {	-- Muscle tone
						value matches {
							0|[local::at0.14], 	-- Limp or flaccid
							1|[local::at0.15], 	-- Reduced tone
							2|[local::at0.16]  	-- Normal tone
						}
					}
					ELEMENT[at0.17] occurrences matches {0..1} matches {	-- Reflex irritability
						value matches {
							0|[local::at0.18], 	-- No response
							1|[local::at0.19], 	-- Reduced response
							2|[local::at0.20]  	-- Normal response
						}
					}
					ELEMENT[at0.21] occurrences matches {0..1} matches {	-- Skin colour
						value matches {
							0|[local::at0.22], 	-- Completely blue
							1|[local::at0.23], 	-- Body pink; extremities blue
							2|[local::at0.24]  	-- Completely pink
						}
					}
					ELEMENT[at0.25] occurrences matches {0..1} matches {	-- Total
						value matches {
							COUNT matches {
								value matches {|0..10|}
							}
						}
					}
				}
			}
			CLUSTER[at0003] matches {
				item matches {
					ELEMENT[at0.30] occurrences matches {0..1} matches {	-- Notes on measurement
						value matches {
							TEXT matches {*}
						}
					}
				}
			}
		}
	}

CIMI Example

apgar:Score
  rdfs:label "Apgar score"@en ;
  rdfs:comment "Clinical score derived from ...muscle tone and skin colour."@en ;
  rdfs:label "Apgar-Score"@de ;
  rdfs:comment "Klinischer Score, abgeleitet ...Reflexauslösbarkeit, Muskeltonus und Hautfarbe."@de ;
  rdfs:subClassOf
  [ owl:onProperty apgar:heartRate ; owl:cardinality 1 ],
  [ owl:onProperty apgar:respiratoryEffort ; owl:cardinality 1 ],
  [ owl:onProperty apgar:muscleTone ; owl:cardinality 1 ],
    [ owl:onProperty apgar:offset ; owl:cardinality 1 ],
  [ owl:onProperty apgar:total ;
    owl:cardinality 1 ;
    sparql:validation """
ASK {
  [ apgar:total ?tot ]
  FILTER ($tot >= 0 && $tot <= 10)
}
""" ;
    sparql:formula """
[ apgar:heartRate ?hr ; apgar:respiratoryEffort ?re ; apgar:muscleTone ?mt ]
BIND (if(?hr = apgar:HeartRate_none, 0, if(?hr = apgar:HeartRate_below100, 1, 2)) +
      if(?hr = apgar:RespiratoryEffort_none, 0, if(?hr = apgar:RespiratoryEffort_some, 1, 2)) +
      if(?hr = apgar:MuscleTone_none, 0, if(?hr = apgar:MuscleTone_some, 1, 2)) AS ?_)
"""
    ].

Concurrent work

Who's using 11179 for what?

Approach

Example

start=<Data_Element_Shape>

<Data_Element_Shape> {
    a (iso11179:Data_Element),
    rdfs:label xsd:string,
    iso11179:data_element_precision xsd:integer? %js{ _.o < 100 %},
    iso11179:meaning @my:Data_Element_Concept_Shape,
    iso11179:domain @<Value_Domain_Shape>
}

<Data_Element_Concept_Shape> {
    rdf:type (iso11179:Data_Element_Concept),
    rdfs:label xsd:string,
    iso11179:object_class @<Object_Class_Shape>?,
    iso11179:property @<Property_Shape>?,
    iso11179:domain @<Conceptual_Domain_Shape>
    
}

Harmonization

See which models are compatible.

Validation