FHIR Chat · Upgrading binding strength · IG creation

Stream: IG creation

Topic: Upgrading binding strength


view this post on Zulip Alexander Henket (Feb 14 2020 at 11:39):

We have a number of profiles that upgrade the base binding strength from preferred to required or extensible. The differential then contains:

<binding>
  <strength value="extensible" />
</binding>

So it does not repeat the full binding spec from the base:

<binding>
    <strength value="preferred" />
    <description value="LegalStatusCodelist" />
    <valueSetReference>
      <reference value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.14.3.2--20171231000000" />
      <display value="JuridischeStatusCodelijst" />
    </valueSetReference>
</binding>

This leads to onGenerate issues like this

No value set specified at Procedure.extension:legalStatus.valueCodeableConcept:valueCodeableConcept (no url)

How worried should I be? I'd really like to not have to restate the full binding in the differential for risk of inconsistencies.

view this post on Zulip Lloyd McKenzie (Feb 14 2020 at 15:11):

I don't think that's legitimate. If you're declaring binding, I'd expect you to always declare "to what". (Most typically you're binding to something else anyhow, and if the parent changes, you'd likely want to evaluate if you wanted to change the value set for the derived spec.

view this post on Zulip Alexander Henket (Feb 14 2020 at 16:24):

Maybe this is the exception to the rule then. Really all I do is upgrade the binding strength. Because nothing else differs, Forge then writes just the strength in the differential. Looks like quite sound behavior to me.

Unless you are saying that upgrading the binding strength (constraining the binding strength if you will) is not a supported use case

view this post on Zulip Lloyd McKenzie (Feb 14 2020 at 17:08):

I think there's an implicit assumption that the binding needs to declare a value set, a description or provide an extension that says something else, but we've never made that implicit. @Grahame Grieve ?

view this post on Zulip Chris Moesel (Feb 14 2020 at 17:32):

If we're taking votes, I'm with @Alexander Henket on this one... If a child profile just wants to say that it's being more strict than the parent (e.g., making the preferred binding to XYZ an extensible binding to XYZ instead -- I don't see why we would need to put the valueset (XYZ) in the differential. For reviewers, it gives the impression that you have changed the value set (when you did not).

view this post on Zulip Rob Hausam (Feb 14 2020 at 22:28):

Agree.

view this post on Zulip Grahame Grieve (Feb 15 2020 at 02:34):

upgrading the binding strength is fine. I thought I had a unit test for exactly this so it's not a problem

view this post on Zulip Grahame Grieve (Feb 15 2020 at 02:34):

it looks like an IG publisher issue - I guess I'll have to look into it

view this post on Zulip Grahame Grieve (Feb 16 2020 at 20:33):

No value set specified at Procedure.extension:legalStatus.valueCodeableConcept:valueCodeableConcept (no url)

This log entry is produced when rendering the terminology notes for a profile.

view this post on Zulip Grahame Grieve (Feb 16 2020 at 20:34):

since this is based on the differential, not the snpashot

view this post on Zulip Grahame Grieve (Feb 16 2020 at 20:57):

I've changed it so it looks it up from the inherited element

view this post on Zulip Rob Eastwood (Feb 16 2020 at 22:46):

Another consequence of just changing the binding strength is that the built differential table renders "(unbound)" as the binding.

See recently posted thread on this: https://chat.fhir.org/#narrow/stream/179252-IG-creation/topic/R4.20IG.20diff.20has.20.22unbound.22.20with.20valueset.20strength.20constraint

view this post on Zulip Grahame Grieve (Feb 17 2020 at 00:58):

not any more


Last updated: Apr 12 2022 at 19:14 UTC