Stream: IG creation
Topic: inter-version extensions to handle type other changes
Lloyd McKenzie (Apr 05 2022 at 03:30):
I just submitted FHIR#36702 which proposes to make explicit that inter-version extensions can be used not only when an element doesn't exist in the release you're profiling and does exist in another release, but also when there are data type, target resource, or cardinality differences that allow the target release to be more expressive than the current release is.
The Gravity SDOH IG has already done this (and been published this way), but a recent change to the publisher means it no longer works. Grahame pointed out that the spec never promised it would work. So I'd like the spec to be updated to reflect what reality used to be :) Starting this thread to allow for discussion.
Grahame Grieve (Apr 05 2022 at 04:54):
So I'd like the spec to be updated to reflect what reality used to be :)
technically, what @Lloyd McKenzie thought it would be. It only worked by accident
Grahame Grieve (Apr 05 2022 at 04:55):
I'm a little bothered by this - it's still the same element, even though the cardinality has changed to allow repeats
Brian Postlethwaite (Apr 05 2022 at 05:06):
Is this for something in R4 where it's single cardinality and in R5 it's multiple, and want to do the backport style extension for the repititions in an R4 IG?
Grahame Grieve (Apr 05 2022 at 05:46):
yes
Richard Townley-O'Neill (Apr 05 2022 at 06:06):
Would best practice for 2 instances be to put one in the R4 element and one in the extension drawn from R5? Ugly. But everything else is worse.
Lloyd McKenzie (Apr 05 2022 at 13:23):
The requirement is based in reality. The alternative is everyone who needs multiple repetitions invents a custom extension, which hurts interoperability and provides no help for automatic inter-version conversion.
Gino Canessa (Apr 05 2022 at 13:45):
Or, a generic extension that means ‘additional values for the current element’?
Which means we avoid ‘cross version’ stuff in those scenarios and open things up for when the 20% includes multiple values.
Lloyd McKenzie (Apr 05 2022 at 13:56):
That's workable, but only if it's available for use in R4
Lloyd McKenzie (Apr 05 2022 at 14:52):
It would also be inconsistent with how we're handling changes to type or targetProfile
Josh Mandel (Apr 05 2022 at 15:06):
Is it legal to use a backport extension within a single version? In order to get an extra copy of an element that has a limited cardinality?
Lloyd McKenzie (Apr 05 2022 at 15:26):
No
Chris Moesel (Apr 05 2022 at 19:14):
IMO, inter-version extensions are pretty complicated -- and allowing them to be used for elements that already exist in the current version adds confusion to complication. I am not an implementer, but I imagine that @Gino Canessa's idea of a simple extension that means "more of this element" would be easier to implement in a generic way than inter-version extensions. It would also allow for this capability on elements that were never 0..* in any version (for better or worse). Doing it on BackboneElement would be trickier since that would require a complex extension, but I think most backbone elements are already 0..* anyway -- so I think simple extensions would do the trick (except maybe for the few elements that are Resource
, but no extension is going to help with that).
Lloyd McKenzie (Apr 05 2022 at 20:25):
One other consideration is that we already have an official release of an IG out that relies on the inter-version extension mechanism - and is now broken for anyone using the official validator.
Last updated: Apr 12 2022 at 19:14 UTC