FHIR Chat · System binding on CodableConcept/Coding/code · implementers

Stream: implementers

Topic: System binding on CodableConcept/Coding/code


view this post on Zulip Elisabeth Adelgren (Aug 17 2020 at 12:40):

Hi,
I'm looking for a description on what it means to do ValueSet binding on CodableConcept-level vs on Coding level vs on code level. As an example: I want to do a required binding on MedicationRequest.reasonCode. It seems possible to do it on CodableConcept level or Coding or code. I want to allow one or more codes and optionally a text but all codes must code from one required ValueSet. How would you profile it, and what is the actual difference to do binding on CodableConcept level or Coding?

view this post on Zulip ryan moehrke (Aug 17 2020 at 15:27):

If you want to get really creative with slicing you may want to only bind a specific coding or code in a codableconcept, but to my knowledge you normally just want to bind whichever datatype you have in the resource (i.e. if you want to bind MedicationRequest.status you must bind on the code level)
And with your usecase it sounds like you just want to bind CodableConcept without any slicing or anything.

view this post on Zulip Richard Townley-O'Neill (Aug 18 2020 at 08:22):

When you bind on CodeableConcept the constraint is that at least one coding will/should/preferred etc from the value set. This allows alternate values from other value sets in other instances of coding.
If you bind Coding the effect is different because Coding contains only a single code and system.

view this post on Zulip Richard Townley-O'Neill (Aug 18 2020 at 08:24):

If you have a required binding on MedicationRequest.reasonCode.coding you are saying that all codes will come from your value set. Unless you make the cardinality of coding 1..*, it will still be possible to just supply text.

view this post on Zulip Richard Townley-O'Neill (Aug 18 2020 at 08:29):

MedicationRequest.reasonCode is 0..* To say that every reasonCode has at least one value from your value set, and translations are permitted from other value sets, bind reasonCode.
To say that every reasonCode has at least one value from your value set, and any translations come from the same value set, bind reasonCode.coding.

view this post on Zulip Richard Townley-O'Neill (Aug 18 2020 at 08:30):

Prohibiting translations reduces interoperability, and should be done sparingly.

view this post on Zulip Elisabeth Adelgren (Aug 18 2020 at 12:45):

This was news to me, that binding on CodableConcept level means "at least one" and this clarifies a lot! Seems that we should bind on Coding level. Thanks for the explanation :-)

view this post on Zulip Vassil Peytchev (Aug 18 2020 at 14:12):

It seems to me your requirement is satisfied by binding at the CodableConcept level, as you are guaranteed that every MedicationRequest.reasonCode will have a value from your value set. Why do you think you need to prohibit possible translations?

view this post on Zulip Lloyd McKenzie (Aug 23 2020 at 22:53):

You shouldn't ever bind on 'code' if it appears inside a Coding. You only bind an element of type 'code' if it's stand-alone (e.g. Patient.gender). If you're dealing with Coding.code, the binding can't apply to the code alone because it also has to apply to the system.


Last updated: Apr 12 2022 at 19:14 UTC