FHIR Chat · Interpretation of Coding with system but not code · terminology

Stream: terminology

Topic: Interpretation of Coding with system but not code


view this post on Zulip Morten Ernebjerg (Mar 11 2022 at 08:37):

I was slightly surprised to find the following statement in the specification of the Coding type:

If the system is present, and there is no code, then this is understood to mean that there is no suitable code in the system in which to represent the code.

Thinking about this for a while, this seems potentially problematic to me in the (valid) case where there is no display text either.

  1. My initial reaction upon seeing smt. like this in real data would be that this is probably most likely due to sloppiness or a system bug, rather than a conscious choice. If so, then interpreting it as an actual statement (rather than ignoring it or deeming it invalid) would be problematic. It's of course always problematic if the source system fills a resource incorrectly and in the end we have to trust the source to do the right thing. But my point here is that I suspect that, empirically, many such cases will turn out to be errors (much more so that for present but incorrect codes) - my dev experience suggests that accidentally leaving out a data element is much more likely than actively setting it to something incorrect.
  2. Although we in this case get no "positive" information" at all, the above interpretation can actually lead to a very strong statement. E.g. if the system is SNOMED CT, we would interpret a missing code as knowledge that the thing in question is not covered by the hundreds of thousands of available codes. It seems hard for a receiving system to do something with this.
  3. It might lead implementers to simply regularly send no code if they can't seem to find one that matches, rather than trying to get the system extended or looking for alternative systems.

Has this been a topic of discussion (more than normal, I mean...) or are my empirical hunches just way off? I realize this is normative so there is not much wiggle room anyway, but maybe someone knows the reasoning behind this choice. E.g. why was it not imposed that code OR display be present if system is present ?

view this post on Zulip Michael Lawley (Mar 11 2022 at 10:28):

Well, display is the term for the code, so if there's no code then there can't really be a valid display.
But as to the interpretation of a system but no code, that seems a little bit of a stretch to me. It's a universal "OTHER" which, for classifications is invalid since a classification is by definition exhaustive. Furthermore, you'd want to know the code system version (because a later version may have added an appropriate code).
So yes, I would agree that a system without a code should be invalid

view this post on Zulip Grahame Grieve (Mar 11 2022 at 12:44):

hmmm. There's a few places in the data types were that happens - you indicate what category is not known and you have to use the system to do that

view this post on Zulip Grahame Grieve (Mar 11 2022 at 12:44):

but it's not something that we should put on Coding generally, only on particular elements

view this post on Zulip Rob Hausam (Mar 11 2022 at 16:26):

We've suggested and discussed at times that this could be used in an instance to indicate that a code from the specified code system is expected, but no suitable code in the code system for representing that meaning was identified. That's slightly different from saying that there is no suitable code - because in some cases it's possible that a suitable code might actually exist in the code system, but in this particular instance, for whatever reason, no code was found. I can see some rationale for this - and so far we have not excluded that interpretation. But whether we really want to allow or encourage it may need some further consideration.

view this post on Zulip Robert McClure (Mar 11 2022 at 17:06):

I agree with @Morten Ernebjerg that this will result in many more errors than valid uses, and I also agree with @Grahame Grieve that if there is a valid use, it would be in a specific situation that I'd rather see use a different approach (pattern?) Can we fix this in R5? @Jessica Bota @Carmela Couderc

view this post on Zulip Elliot Silver (Mar 11 2022 at 18:44):

I'm guessing that a Coding with only a system value would be sufficient to meet cardinality constraints on Coding or CodeableConcept. At a gut level, that feels wrong, but I don't see any other way to interpret it.

view this post on Zulip John Moehrke (Mar 11 2022 at 18:52):

wow, that is worse that just a code without a system

view this post on Zulip Carmela Couderc (Mar 11 2022 at 19:03):

Hi @Morten Ernebjerg Would you please enter a JIRA ticket to describe this issue and include a link to this Zulip thread? We will take up this topic on one of the Vocab tracker calls. Thanks.

view this post on Zulip Jean Duteau (Mar 11 2022 at 19:04):

I just taught an HL7 Terminology course and we explicitly say that a Coding with just a system is saying "I would have sent a code from this system, but no appropriate code exists." I guess you'd send this to satisfy a constraint to a Required binding to a value set that only takes from CodeSystem X to say "you are forcing me to send a code from X but no appropriate code exists"?

view this post on Zulip Rob Hausam (Mar 11 2022 at 21:14):

Yes, what Jean said in the first sentence is what was taught originally and what has continued to be taught in the FHIR terminology tutorials - and is what I said above. It's part of a question or discussion about "why are all of the elements in Coding optional?". But I don't think it works (and it shouldn't work) to satisfy a required binding - in that case you have to send one of the actual codes (both 'system' and 'code') that are in the bound value set.

view this post on Zulip Richard Townley-O'Neill (Mar 14 2022 at 00:09):

A Coding could have nothing but an extension. https://www.hl7.org/fhir/datatypes.html#Coding
All data types have that option.
You can define local profiles of data types that are stricter.
Maybe there could be some standard ones defined in Core.

view this post on Zulip Morten Ernebjerg (Mar 14 2022 at 07:06):

@Carmela Couderc I opened ticket FHIR-36267 for this, linking this thread and summarizing some of the issues raised.


Last updated: Apr 12 2022 at 19:14 UTC