Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page addresses the question of whether ADL/AOM archetyping can be technically used with native FHIR models / definitions, to provide profiling. One idea is to discover whether archetyped detailed openEHR content (i.e. any typical openEHR archetype) could be machine-converted into the 'core' of a FHIR resource(s) whose other parts are already defined by FHIR.

...

ProblemDescriptionResolution
Complex versus Primitive data typesLack of parent 'data value' type for complex data types - in FHIR, all data types, primitive and complex, are shown as inheriting from a logical 'Any', concretely an 'Element' pseudo-class (e.g. see here). This prevents any ability to distinguish types representing e.g. native Strings from a logical Text type. In FHIR this doesn't appear to matter, but in an object model it forces complex types like 'coded text' and 'quantity' to be siblings of 'integer' and 'string', e.g. in the definition of Observation.value. 
CodeableConcept

CodeableConcept type: includes multiple Codings, which have no qualifying attributes.

For now, replaced by a definition containing a primary coding and 'other_codings' separately.
Extensional type definitions.In many places, FHIR resources contain type definitions consisting of a list of alternative types, e.g. Observation.value has a 'type' of:
Quantity|CodeableConcept|Attachment|Ratio|Period| SampledData|string
For an object model. this presents a problem because there is no parent type whose children are just this set of types.

Model such fields in the RM as being of the nearest defined parent type available, e.g. Any or Resource

, and constrain

.

The type list can potentially be included within a reference archetype, but in fact is unnecessary - non-reference archetypes can simply constrain to the needed types.

Resource Reference target type constraintsIn various places, Resource-to-Resource references are shown as being 'typed' to a specific set of concrete types, but it is unclear how even in XML this could be achieved, since target resource type is not part of the definition of a resource reference. Examples: Observation.subject, Observation.performer.