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"
}
}]
}]
}]
}