DCM datatypes
Data Type use in DCMs
Clinical data has some features which are not often surfaced in the existing CMETs and templates. With DCMs, the added precision and detail of the specification allows for greater flexibility.
On area where this is needed is defining which Data Type can replace another in a model.
Substitution in HL7 Detailed Clinical Models (DCMs)
One of the principles of Object Oriented Programming and/or Design (OOP/OOD) is the ability of a subtype of given class to used in place of the class (subtype polymorphism). This implies a given heuristic for sustainability. However, in the case of the ISO 21090 Healthcare Datatypes/HL7 v3 Data Types Abstract Specification r2 additional detail is needed, as there are times when a type, particularly a templated class (either a collection or mixin) could also be a consideration, in order to meet real-world expectations.
The following list includes those data types used in DCMs, as well as explicit indication of which data types are substitutable. This effectively defines a localized TYPE.implies(TYPE that) truth table. I.e. anytime a model uses a given data type (e.g. AD) the implied types are valid substitutions, unless explicitly prohibited. (e.g. any time a DCM uses an AD, it will be understood that a HIST<AD> is an equally valid data type in an instance.)
For example, it is often useful to know when the last time someone took a given medication. In the outpatient setting, documentation of the exact time (TS) isn't common, so the real answer is most likely an uncertain range (which may have a high degree of precision of the actual time values, e.g. if someone's alarm wakes them at 6 a.m. every morning and they start work at 8:30 a.m., they can be quite certain that the medication they took with breakfast was at some point between 6 a.m. and 8:30 a.m.
Uncertainty is a routine factor in clinical care, and as such, many attributes should be considered candidates for modeling as one or more uncertain types. In addition, nearly all physical quantity measures have aspects of uncertainty, often thought to be reflected in the number of significant digits. This is not correct--certainty and precision are different components of accuracy.
The Data Types r2 DataType ( BL TYPE.implies(TYPE that)) states that a type implies another if it is a specialization of that type. There are discussions for specific types (e.g. promotion()/demotion()) where information may be lost in substitution. There are cases where a given model may list a type and either accept a more 'simple' case (e.g. a DSET<CD> when only a single CD may be applicable) where non-specialized classes can substituted.
Data Types and required substitutions for DCMs
- AD
- AD --> HIST<AD>
- ADXP
BL --> BN CD CD --> UVP<CD> CO CO --> IVL<CO> CO --> URG<CO> CS ED.TEXT ED.TEXT --> ST ED.TEXT --> ST.NT ED.TEXT --> ST.SIMPLE EN EN --> HIST<EN> ENXP II IVL<CO> IVL<CO> --> URG<CO> IVL<QTY> IVL<TS> NPPD<CD> NPPD<PQ> NPPD<T> OID ON --> EN PN --> EN PPD<QTY> PQ PQ --> URG<PQ> RTO<PQ,IVL<TS>> RTO<PQ,PQ> RTO<PQ,PQ_time> SC SC --> ST.SIMPLE ST ST --> ST.NT ST --> ST.SIMPLE ST.NT ST.SIMPLE TEL TEL --> HIST<TEL> TS TS --> URG<TS> URG<CO> --> IVL<CO>