FHIR🔥 API Extensions
CodeSystem subproperties (since V6.7)
FHIR conceptually supports the idea of a concept having subproperties (to support, for example, SNOMED CT’s ‘role grouping’). This support is manifest in the $lookup
operation supporting the OUT parameter property.subproperty
. However, the is no support in the FHIR CodeSystem
resource for specifying such subproperties.
Ontoserver introduces three Extensions to enable this. The first Extension, http://csiro.au/StructureDefinition/subproperty
is boolean-valued and applies to CodeSystem.property
. If true
, it indicates thet the declared property should be treated as a subproperty. If false
or absent, then it is just a normal property.
The second Extension, http://csiro.au/StructureDefinition/subproperty-key
is string-valued and applies to CodeSystem.concept.property
. Each set of properties of a given concept with the same value of subproperty-key
Extension belongs to the same subproperty group. Otherwise, there is no significance attached to the actual value of the subproperty-key
Extension.
The third Extension, http://csiro.au/StructureDefinition/subproperty-map
is complex, with sub-extensions property
and key
and applies to CodeSystem.concept
. Both have a minimum cardinality of 1, with property
being single-valued and key
being multi-valued. The code-typed property
indicates the property name that each of the sub-properties identified by the key
values belong to.
Hence, in the following example, both ISID
and BASIS_STRNTCD
are treated as subproperties and, for the concept 40301611000001105
are grouped together as subproperties of “ING”.
{ "resourceType": "CodeSystem", ... "property": [{ "code": "APID", "description": "APID", "type": "Coding" }, { "extension": [{ "url": "http://csiro.au/StructureDefinition/subproperty", "valueBoolean": true }], "code": "ISID", "description": "ISID", "type": "Coding" }, { "extension": [{ "url": "http://csiro.au/StructureDefinition/subproperty", "valueBoolean": true }], "code": "BASIS_STRNTCD", "description": "BASIS_STRNTCD", "type": "Coding" }], ... "concept": [{ "extension": [{ "url": "http://csiro.au/StructureDefinition/subproperty-map", "extension": [ { "url": "property", "valueCode": "ING" }, { "url": "key", "valueString": "A34F" } ] }], "code": "40301611000001105", "display": "Sodium iodide [I-131] 277.5MBq capsules", "property": [{ "code": "parent", "valueCode": "VMP" }, { "code": "parent", "valueCode": "39253411000001109" }, { "extension": [{ "url": "http://csiro.au/StructureDefinition/subproperty-key", "valueString": "A34F" }], "code": "ISID", "valueCoding": { "system": "https://dmd.nhs.uk", "code": "39248411000001101" } }, { "extension": [{ "url": "http://csiro.au/StructureDefinition/subproperty-key", "valueString": "A34F" }], "code": "BASIS_STRNTCD", "valueCoding": { "system": "https://dmd.nhs.uk/BASIS_OF_STRNTH", "code": "1", "display": "Based on Ingredient Substance" } }, ... }] }
The expected result of a $lookup
on this concept is as follows:
{ "resourceType": "Parameters", "parameter": [{ "name": "name", "valueString": "Dictionary of medicines and devices (dm+d)" }, { "name": "display", "valueString": "Sodium iodide [I-131] 277.5MBq capsules" }, { "name": "property", "part": [{ "name": "code", "valueCode": "parent" }, { "name": "value", "valueCode": "39253411000001109" }] },{ "name": "property", "part": [{ "name": "code", "valueCode": "ING" }, { "name": "subproperty", "part": [{ "name": "code", "valueCode": "ISID" }, { "name": "valueCoding", "valueCoding": { "system": "https://dmd.nhs.uk", "code": "39248411000001101" } }] }, { "name": "subproperty", "part": [{ "name": "code", "valueCode": "BASIS_STRNTCD" }, { "name": "valueCode", "valueCoding": { "system": "https://dmd.nhs.uk/BASIS_OF_STRNTH", "code": "1", "display": "Based on Ingredient Substance" } }] }] }] }