Stream: IG creation
Topic: Upgrading binding strength
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.
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.
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
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 ?
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).
Rob Hausam (Feb 14 2020 at 22:28):
Agree.
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
Grahame Grieve (Feb 15 2020 at 02:34):
it looks like an IG publisher issue - I guess I'll have to look into it
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.
Grahame Grieve (Feb 16 2020 at 20:34):
since this is based on the differential, not the snpashot
Grahame Grieve (Feb 16 2020 at 20:57):
I've changed it so it looks it up from the inherited element
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
Grahame Grieve (Feb 17 2020 at 00:58):
not any more
Last updated: Apr 12 2022 at 19:14 UTC