Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Binding strength: https://build.fhir.org/codesystem-binding-strength.html

December 14, 2020 - Vocab co-chair call

The R4 wording is here:

To be conformant, the concept in this element SHALL be from the specified value set if any of the codes within the value set can apply to the concept being communicated. If the value set does not cover the concept (based on human review), alternate codings (or, data type allowing, text) may be included instead.

We know there are at least 2 interpretations of the R4 text. 

This is what has been taught in Vocab training and represents the intent of the original authors. Here are a couple of options we tossed around

  • You must use a concept from the value set if the meaning you are trying to convey is covered/subsumed by a concept in the value set expansion. 
  • You must use a concept from the value set expansion if value set expansion contains a concept that is semantically equivalent 


Unfortunately the word subsumption is not in the R4 definition which might have provided clarity.

It has always been assumed that a human would select a concept if the exact, desired concept is not in the value set expansion. Unfortunately we did not do semantic equivalence using humans. 

Rob M: Extensible (in FHIR) means that in the context of an implemented IG you can create a  new value set that contains the concepts you need to use.  Either a new version of the bound value set or a completely new value set can be used? Going against the implementation guide?

(Rob M: Sending a code that is not in the value set expansion but is within the scope, the code is from another value set) However, a code might be sent that is within the scope (e.g. a new code for COVID-19) that is not in another value set - possibly a value set in someone's mind - not one that actually exists.  Ted: because there is always a value set that is all codes in a code system, then technically in FHIR, all codes are in a Value Set.  

Rob H: all data instances are only based on code systems (not value sets) 

Rob H: if implementers take the path that a code may be sent if the semantic meaning is not in the value set expansion,   you have made extensible equivalent to preferred

Extensible may be interpreted more like required, or more like preferred

Rob H: the value of extensible lies between required and preferred

Ted: in terms of conformance testing, if there is an exact match to a code in the value set expansion, then it is conformance, if not an exact match, a warning is issued to indicate a human being should take a look at the value

(we know if something is good, or we can't know if something is valid)


Rob M: suggests we acknowledge extensible straddles the fence, and is not reliably implementable.  Implementers may choose to interpret extensible as aligned with required or with preferred.  Conformance testing guidance may be crafted using Ted's wording above. 

Recommend that people not use extensible binding strength in implementable IGs. 

How does Value Set versioning impact this? This is an issue across all binding strengths. However, with a required binding, version could seriously impact what can be sent. 

Robert Hausam volunteers to create concise, clear wording to define extensible binding strength along with usage notes. We should do this for R4B. Carmela A. Couderc will add a JIRA for this task.  Rob H appreciates any help on this very important topic.  Rob McClure will craft something (suggests we acknowledge what is happening in the community - people have focused on the individual concept and not subsumption)

Ted Klein suggests the usage notes highlight that the use of extensible binding strength should be avoided  

****************************

End of 12/14/2020 minutes 

Previous notes for history

CodeDisplayDefinitionUsage NoteIssue
requiredRequiredTo be conformant, the concept in this element SHALL be from the specified value set.

extensibleExtensibleTo be conformant, the concept in this element SHALL be from the specified value set if any of the codes within the value set can apply to the concept being communicated. If the value set does not cover the concept (based on human review), alternate codings (or, data type allowing, text) may be included instead.

Added  

Parts of the definition that contribute to possible confusion:

  1. can apply
  2. does not cover
  3. instead

Do we know the original intent of this binding strength? Does it matter?

Do the education materials consistently/accurately reflect the original intent? Does it matter?

Example 1:

Clinician selects: Heart Attack Type A

Bound value set expansion does not include Heart Attack Type A, however it does include Heart Attack.

Core issue:

Which is the expectation of the sender?

  1. Sender must provide 2 
    1. Heart Attack Type A
    2. Heart Attack
  2. Sender provides
    1. Heart Attack Type A  (from a code system not referenced in the bound value set)
      1. Note: this is the same as preferred binding strength
  3. Sender provides
    1. Heart Attack

Example 2:

Clinician selects: Heart Attack Type A

Bound value set expansion does not include Heart Attack Type A, nor Heart Attack.

Core issue:

Which is the expectation of the sender?

  1. Sender provides
    1. Heart Attack Type A  (from a code system not referenced in the bound value set)

DataType has an impact on the usage of this binding strength. 


NOTE: due to the ambiguous wording, implementations have interpreted the existing definition different ways. 


Responses from Lloyd: In example 1, the sender MUST send the code from the value set that says "Heart Attack".  Presuming the data type is CodeableConcept, they're free to also send the code for "heart Attack Type A" and/or text that conveys the additional detail.  If they were to only  send the code "Heart Attack Type A", they would be non-conformant

In example 2, presuming that there are no codes in the value set that generalize "Heart Attack Type A" at all (e.g. "patient complaint", "health condition", etc.), then the sender is free to send their code for Heart Attack Type A and/or free text.

The intention of an extensible binding is to ensure that receivers can count on content that falls within the scope of the value set being sent in a standardized way, while still allowing for the exchange of content that falls outside the scope of the value set (because the domain is such that the value set can't be guaranteed to be comprehensive).

The degree of detail the sender wants to convey isn't a primary consideration.  What matters is the level of granularity that receiving systems are counting on receiving.  The expectation is that senders will have to map and there may be information loss - which is why they're free to convey their original concept as well.

The challenge with extensible is that you want to ensure that the value set that's extensibly bound doesn't include codes that are 'useless' for the receiver - which is what often happens when you define an intentional value set in code systems like SNOMED which have a lot of high-level abstract codes.

preferredPreferredInstances are encouraged to draw from the specified codes for interoperability purposes but are not required to do so to be considered conformant.

exampleExampleInstances are not expected or even encouraged to draw from the specified value set. The value set merely provides examples of the types of concepts intended to be included.

...