Stream: terminology
Topic: Conveying original terminology in FHIR
Alexander Henket (Apr 28 2021 at 07:00):
FHIR has a good number of places where required terminology plays a role. This terminology may or may not map well to/from the actual systems. AllergyIntolerance.criticality is one such example. We define ConceptMaps to explain how FHIR terminology and system terminology connect. So far so good.
For the past 5-6 years we have also used an extension called "code-specification" which is a simple CodeableConcept. This extension is situated under the FHIR element with required terminology (usually of type code) and aims to communicate the actual system value for the given element.
Now obviously only systems that implemented our IG would be able to process this extension and understand it, but those that do have more chances of being interoperable without loss of original nuance in meaning that comes from mapping.
Question: is this a mechanism worth bringing to the international table? It sure seems generic enough to define this extension at international level.
Example:
<AllergyIntolerance xmlns="http://hl7.org/fhir">
<clinicalStatus value="active">
<extension url="http://nictiz.nl/fhir/StructureDefinition/code-specification">
<valueCodeableConcept>
<coding>
<system value="http://hl7.org/fhir/v3/ActStatus"/>
<code value="active"/>
<display value="Active"/>
</coding>
</valueCodeableConcept>
</extension>
</clinicalStatus>
<verificationStatus value="confirmed"/>
<category value="environment">
<extension url="http://nictiz.nl/fhir/StructureDefinition/code-specification">
<valueCodeableConcept>
<coding>
<system value="http://snomed.info/sct"/>
<code value="419199007"/>
<display value="Allergy to substance (finding)"/>
</coding>
</valueCodeableConcept>
</extension>
</category>
<criticality value="high">
<extension url="http://nictiz.nl/fhir/StructureDefinition/code-specification">
<valueCodeableConcept>
<coding>
<system value="http://snomed.info/sct"/>
<code value="24484000"/>
<display value="severe (qualifier)"/>
</coding>
</valueCodeableConcept>
</extension>
</criticality>
...
</AllergyIntolerance>
Peter Jordan (Apr 28 2021 at 07:47):
I think that the mechanism for (effectively) creating a translation to a code data type is a good idea which I'd certainly be happy to use for some of our CDA to FHIR mappings in NZ. I couldn't see any binding to a particular Value Set in the Structure Definition, I'm assuming that it's quite a large Value Set with entries from quite a few Code Systems?
Not so sure about the examples here (e.g. conflating severity and criticality), but I guess that's not the salient point!
Alexander Henket (Apr 28 2021 at 10:02):
Hi Peter. The extension itself does not have any binding on purpose. We apply the binding in context where we use the extension. Example: AllergyIntolerance profile.
Alexander Henket (Apr 28 2021 at 10:06):
You will also find that AllergyIntolerance.verificationStatus does not have a specified relationship with code-specification because we do not have any functional element mapping at all. That's why we specified it is perfectly fine to use extension data-absent-reason here.
Alexander Henket (Apr 28 2021 at 10:13):
As for the exact terminology in the example, I can only say that this came from functional people that include MDs and the SNOMED NRC, so I have to trust that part. But you are also right that the exact SNOMED CT concepts were not the gist of the example. For your curiosity, CriticalExtentCodelist is for AllergyIntolerance.criticality and SeverityCodelist is for AllergyIntolerance.reaction.severity. As you can see those have the same SNOMED CT contents, except for 1 concept extra in criticality (399166001 | fatal (qualifier)|)
Lloyd McKenzie (Apr 28 2021 at 14:20):
I think it's fine to propose a generic extension on 'code' that does this (with usage notes that it's only for use on 'bare' code elements, not when code appears as part of Coding. It's probably also worth noting in the description of the extension that you must still have a code value from the originally bound value set - the extension can't ever appear in place of the code.
Craig Newman (Apr 29 2021 at 15:54):
The v2-to-FHIR project was going to submit a Jira ticket for basically the same extension. We've identified a few places where we need to include the "original value" from a v2 message to either a code or Coding element (where Coding has a required value set) where the required value set doesn't translate particularly well. We think this meshes well with this use case. We're not sure "code-specification" is the clearest name for a base extension, but we definitely support the concept and agree with Lloyd's suggestion clarify that it's in addition to the value from the bound value set.
Hans Buitendijk (Apr 29 2021 at 16:12):
I would suggest to use "originalCodeableConcept" to align with already existing "originalString" extension. IF the intent is the same as Alexander's these names would be more clear.
Lloyd McKenzie (Apr 29 2021 at 16:17):
I'm a bit confused as to why it's "originalCodeableConcept" rather than "originalCoding"?
Pieter Edelman (Apr 30 2021 at 08:00):
Interesting to hear that @Craig Newman, and agreed that "code-specification" maybe isn't the best name. The FHIR spec sometimes uses the term "local code", but maybe that's not exactly correct for your use case.
Pieter Edelman (Apr 30 2021 at 08:04):
Regarding the earlier remark of @Lloyd McKenzie. If the element is a CodeableConcept than the preferred way to communicate the additional code is by using a second coding, correct? The same is true for elements of type coding, but this only works if it is a repeating element.
Lloyd McKenzie (Apr 30 2021 at 13:33):
If you have a CodeableConcept, you can always convey the original coding as just another coding. You'd only need the extension if you were mapping to a 'code' or 'Coding'. If you had multiple translations and were converting to 'code' or 'Coding', presumably the only Coding you'd need to convey as 'original' is the one you used for the translation?
Last updated: Apr 12 2022 at 19:14 UTC