FHIR Chat · R4B questions / issues · implementers

Stream: implementers

Topic: R4B questions / issues


view this post on Zulip Lee Surprenant (Dec 08 2021 at 13:17):

I've finally spent some quality time with the latest R4B draft. I've catalogued a number of issues locally and today I'm trying to open Jira issues for the ones that make sense. I think I will post questions/discussions in this thread for the superset (assuming that is helpful for folks). Or maybe I should start a separate topic for each one?

High-level summary:

I havn't checked whether any of these apply to R5 as well, but some of them may.

view this post on Zulip Vadim Peretokin (Dec 08 2021 at 13:40):

I'd say a separate topic for each is better - otherwise the discussion would be hard to follow.

view this post on Zulip Josh Mandel (Dec 08 2021 at 14:18):

@Lee Surprenant these are great finds, thank you! Meta question: can you talk about your methods of investigation? E.f., should we expect that since you found one surprising ValueSet change, there are no others lurking?

view this post on Zulip Lee Surprenant (Dec 08 2021 at 14:19):

I'm going through the exercise of updating our fhir server implementation (on a branch), so thats how I found these.

view this post on Zulip Lee Surprenant (Dec 08 2021 at 14:20):

I regenerated our model classes and checked the diffs. We use enums for required code bindings and so the diff was pretty clear on those.

view this post on Zulip Lee Surprenant (Dec 08 2021 at 14:21):

there's others I've opened previously as well (which aren't fixed yet)...maybe I'll go find those and mention them here just so i have a single list i'm tracking :-)

view this post on Zulip Lee Surprenant (Dec 08 2021 at 14:31):

ok, i added the main one i was thinking of and linked them to the various topics

view this post on Zulip Lee Surprenant (Dec 08 2021 at 18:11):

A similar, but more acceptable, set of CodeSystem changes that I would consider "backwards-breaking" is in the foundational resource types.
To align with the updates to this version of FHIR, concepts have been removed from the following ValueSets:

These (at least the ResourceType one) have required bindings from many foundation resources like OperationDefinition, StructureDefinition, ElementDefinition, MessageDefinition, CapabilityStatement, SearchParameter, Questionnaire, CompartmentDefinition.

Presumably we wouldn't expect conformance artifacts like these that are valid in R4 to also be valid in R4B, right?
Are we comfortable saying a valid R4 Questionnaire may not be a valid R4B Questionnaire (even though the chances of having one that references one of the removed resource types is extremely slim)?

view this post on Zulip Grahame Grieve (Dec 08 2021 at 18:31):

those particular value sets are version specific, and will change. But what's been deleted from data types?

view this post on Zulip Grahame Grieve (Dec 08 2021 at 18:33):

ah SubstanceAmount. yes, that's fine.

view this post on Zulip Lee Surprenant (Dec 08 2021 at 18:50):

yep, they even have this nice warning:

This Value Set is normative - it is generated based on the information defined in this specification. The definition will remain fixed across versions, but the actual contents will change from version to version

I assume "The definition will remain fixed across versions" is just saying concepts won't change meaning (so CodeSystem.versionNeeded=false)?

view this post on Zulip Grahame Grieve (Dec 08 2021 at 18:52):

yes

view this post on Zulip Lee Surprenant (Dec 08 2021 at 18:53):

Ok, thanks. I wasn't too concerned about any of the resource types I listed there...Questionnaire seemed the most iffy which is why I singled that one out in my question, which is sort of me just testing the boundaries of this statement from Josh:

Valid R4 resources should absolutely be valid R4B resources.

Safe to assume my answer is "we are comfortable with these potentially breaking changes", so no need to open an issue for this one?

view this post on Zulip Grahame Grieve (Dec 08 2021 at 18:58):

yes. in the corner case that you were writing a questionnaire with a subjectType of a resourceType like MedicinalProductPackaged, it couldn't be valid in R4B.

view this post on Zulip Lee Surprenant (Dec 10 2021 at 20:52):

A few more tidbits from the investigation: was going through the examples zip downloaded from https://build.fhir.org/branches/R4B/downloads.html and seeing a lot of issues. So far, the leading two causes I've seen are the following:

view this post on Zulip Lee Surprenant (Dec 10 2021 at 22:08):

opened FHIR#34449 for the former and FHIR#34450 for the latter. a lot of questionnaire examples are still invalid from FHIR#24080 as well (already marked Resolved - change required)

view this post on Zulip Gino Canessa (Dec 13 2021 at 18:26):

@Lee Surprenant , I think FHIR-34449 is covered by FHIR-31733 (and the linked FHIR-32105 ). Is that correct?

view this post on Zulip Lee Surprenant (Dec 13 2021 at 18:43):

Thanks Gino. I did search Jira for some of these but must not have searched for this one. Will close 34449 as a duplicate of 32105

view this post on Zulip Gino Canessa (Dec 13 2021 at 18:46):

No problem! I did the same thing when I missed 32105 (it's a lot easier to catch when you file the ticket =).

view this post on Zulip Lee Surprenant (Dec 13 2021 at 18:48):

in 32105 there is a "Resolution Description" of:

While this should be URI, we've lived with it as URL for quite a while and it's going to break lots of tooling to change, and we've decided it doesn't much matter. We'll never encounter a URN, so URL is ok. We will correct the values in the instance to use valueUrl.

However, there is also this comment from Lloyd:

Reverted previous resolution: Persuasive with Modification made 2021-05-24 00:00:00.0 with vote Ewout Kramer/Michael Donnelly: 22-0-1//(Impact: Non-substantive; Category: Correction; Version: null)//Will correct the extension definition to be uri rather than url

I assume the Resolution Description text is the NEW resolution and that the "Will correct the extension definition to be uri rather than url" in the comment from Lloyd was the old resolution that will be reverted...does that sound right?

view this post on Zulip Lee Surprenant (Dec 13 2021 at 18:52):

Never mind, I confirmed that understanding by looking at the issue's history (it changed 9 minutes after the original resolution was approved :-). FWIW I think its the right decision though.

view this post on Zulip Lee Surprenant (Dec 13 2021 at 19:15):

Just opened another one; hopefully not another dup: Apply eld-17 update to allow targetProfile for CodeableReference in R4B

view this post on Zulip Grahame Grieve (Dec 14 2021 at 20:40):

ok all addressed - there'll be a new R4B posted just as soon as sonatype starts working so I can release new build tools

view this post on Zulip Lee Surprenant (Dec 14 2021 at 21:03):

awesome, thanks grahame!

view this post on Zulip Lee Surprenant (Dec 16 2021 at 02:24):

The two technical corrections (from the list at https://build.fhir.org/branches/R4B/ballot-intro.html) that I've seen break tests so far are:

  • FHIR-28312 - Corrected type for 'profile' parameter in $validate operation to be canonical, not uri (aside: why is this listed under StructureDefinition?)
  • FHIR-28415 - Corrected Schematron XPath for drt-1 constraint (the description says its for the XPath but the FHIRPath constraint got updated too)

view this post on Zulip Lee Surprenant (Dec 16 2021 at 02:25):

On 28312, this is a backwards-breaking change to the $validate operation which clients must be aware of (or else they will continue passing a uri where its now expecting a canonical).

On 28415, the old expression allowed a Duration with a value and a unit (but no coded unit) whereas the new expression does not. Note that this change actually broke one of the spec examples (or helped identify a broken example...depending how you want to look at it): FHIR#34465

I think I'm OK with both of these; I just wanted to document my experience here / give others a heads up.

view this post on Zulip Lee Surprenant (Dec 16 2021 at 16:14):

This one wasn't one of mine, but I'll mention it here because I don't think the change has been applied yet (at least not fully) and it would be nice to have ClinicalUseIssue totally gone before the connectathon snapshot is made: https://jira.hl7.org/browse/FHIR-31847

view this post on Zulip Lee Surprenant (Dec 16 2021 at 16:17):

https://jira.hl7.org/browse/FHIR-34445 is a minor related issue that I opened but didn't bother mentioning above because the fix/workaround is so simple

view this post on Zulip Rik Smithies (Dec 16 2021 at 16:23):

It would be great to get rid of ClinicalUseIssue and I have tried, several times. I have removed every reference to it in a local build (grep'ed every file), deleted everything I can find and it will not build without it. A circular dependency or something strange. Maybe now that the links to it have gone and the build has happened a few times, removing it again will work.

view this post on Zulip Grahame Grieve (Dec 16 2021 at 18:54):

I have posted my release candidate to build.fhir.org at https://build.fhir.org/branches/R4B/index.html. There's a few hours to do more QA, and I'll look at the last few issues raised here

view this post on Zulip Grahame Grieve (Dec 16 2021 at 19:13):

FHIR-28312 - must clients invoke this as a simple URL parameter, so won't notice the difference. I don't know if we can require servers to continue to accept url as well as canonical?

view this post on Zulip Grahame Grieve (Dec 16 2021 at 19:28):

@Rik Smithies FHIR-34465 is a more general issue: you are not coding your example quantities, just using UCUM units in the human readable units. Please review all of your examples and make your UCUM units explicit - people are very much guided by the examples. And the area you are working in, processible units seems like a very necessary thing

view this post on Zulip Rik Smithies (Dec 17 2021 at 10:35):

done. thanks

view this post on Zulip Grahame Grieve (Dec 17 2021 at 12:45):

but it did miss my final build, so that will not be part of the snapshot

view this post on Zulip Lee Surprenant (Jan 19 2022 at 17:22):

process question: if some of my tickets are pre-applied in R4B and I've confirmed that the issues have been addressed...should I close the ticket myself or wait for some HL7 WG to review what was done?

view this post on Zulip Josh Mandel (Jan 19 2022 at 17:35):

Has the workgroup voted on these tickets? If so, we'll want to hit the "Applied" button rather than closing:
image.png

view this post on Zulip Lee Surprenant (Jan 19 2022 at 17:41):

my understanding is that they were preapplied by grahame to get a good snapshot for connectathon and HAVE NOT been voted

view this post on Zulip Josh Mandel (Jan 19 2022 at 18:58):

Okay, in this context if you are happy with the current state I don't think we need to proceed with and it seems fair to close. I will note that #fhir/infrastructure-wg is the best place for discussion on these points

view this post on Zulip Lee Surprenant (Mar 10 2022 at 02:33):

Today I hit an interesting issue that I missed in my first go-around with R4B and so I thought I'd share it here:
Most references to codesystems that are external to FHIR (and especially to v3 codesystems) have binding strength "Example" and we don't really do anything with those.
However, in at least one case, there is an Extensible binding to a v3 CodeSystem in a resource type that we care about:
http://hl7.org/fhir/r4/explanationofbenefit-definitions.html#ExplanationOfBenefit.accident.type

In R4, those v3 CodeSystems were included with the definitions from the downloads page of the FHIR spec and the hierarchy in them was modeled as a set of nested codes.
In R4B, the v3 CodeSystems are not included and so you need to get those from https://terminology.hl7.org separately.
In this particular case, the valueSet has the following include filter:

      {
        "system" : "http://terminology.hl7.org/CodeSystem/v3-ActCode",
        "filter" : [
          {
            "property" : "concept",
            "op" : "is-a",
            "value" : "_ActIncidentCode"
          }
        ]
      }

Our server has support for expanding these from CodeSystems, but for some reason it wasn't working...
it turns out that the newer v3 CodeSystem resources like this one no longer nest the concepts and now they only express the hierarchy through a property named "subsumedBy".

view this post on Zulip Lee Surprenant (Mar 10 2022 at 12:27):

Update: while the v2 and v3 ValueSet and CodeSystem resources are no longer available in the "definitions" download, I found that most of them are available in the ValueSet expansions download linked to under Code Generation Support from https://build.fhir.org/branches/R4B/downloads.html (including the v3-ActCode one mentioned above). And because they are listed in their expanded form, we might get away with not packaging the corresponding CodeSystem or being able to expand the ValueSets ourselves.

view this post on Zulip Lee Surprenant (Mar 10 2022 at 12:50):

I said most of them above because I thought we were missing a couple expansions for bindings from the Patient resource, but I looked again and the ValueSet expansions file does have those.

view this post on Zulip Lee Surprenant (Mar 10 2022 at 12:51):

Also worth mentioning that this extensions download file has validation issues: FHIR-36244

view this post on Zulip Gino Canessa (Mar 10 2022 at 15:49):

I have taken to downloading/parsing/loading the matching .expansions package for any request on a .core package by default. I did not like the initial 'feel' of doing it (feels like defeat! ;-), but it has proven to be generally easier.

Probably preaching to the choir here, but the biggest gotcha I ran into is 'partial' expansions included in the package, signified by ValueSet.expansion.parameter.name=limitedExpansion and/or extensions on ValueSet.expansion of .../valueset-toocostly and .../valueset-unclosed). Looking up the literals in ValueSet-ucum-units.json also shows that there is no constraint for repeated values in expansion.parameters, but at least they are all duplicate values that match? =)

view this post on Zulip Grahame Grieve (Mar 10 2022 at 19:41):

it turns out that the newer v3 CodeSystem resources like this one no longer nest the concepts and now they only express the hierarchy through a property named "subsumedBy".

not the newer ones, but the ones that have a poly-heirarchy, which ActCode does. So @Lee Surprenant either you can handle those, or you fall back to the .expansions package, which is provided to help code generators that do not have a terminology server to depend on. And the value sets in the .expansions are intentionally limited to required bindings

view this post on Zulip Lee Surprenant (Mar 11 2022 at 13:13):

I guess that makes sense. I just wish there was a standard property name that we could rely on...its confusing to me that the CodeSystem properties are defined via some optional URI field... how are we supposed to know that "subsumedBy" is the one to use for hierarchy in this case?

view this post on Zulip Lee Surprenant (Mar 11 2022 at 13:14):

I have taken to downloading/parsing/loading the matching .expansions package for any request on a .core package by default.

I was just starting to think this is the best option. But one aspect I didn't appreciate until our failing unit tests: we need to be able to traverse the hierarchy to support the :above and :below token parameter modifiers

view this post on Zulip Lee Surprenant (Mar 11 2022 at 13:59):

OK, now here is an interesting one: I was poking around the R4B valuesets download (trying to see how many terminology.hl7.org CodeSystems were referenced) and I noticed these two codesystem urls that don't look quite right:

FHIR-defined systems usually have a prefix like http://hl7.org/fhir and external hl7 systems are usually http://terminology.hl7.org/CodeSystem but, just for these two, there is an extra /fhir on the path. JIRA issue?

view this post on Zulip Lee Surprenant (Mar 11 2022 at 14:11):

FHIR-36259

view this post on Zulip Lee Surprenant (Mar 14 2022 at 19:49):

And the value sets in the .expansions are intentionally limited to required bindings

But not the required bindings from core spec extensions apparently. Just bumped into that while validating a couple examples that have this one: https://build.fhir.org/branches/R4B/extension-family-member-history-genetics-parent.json.html (because I didn't have the expanded http://hl7.org/fhir/ValueSet/parent-relationship-codes )


Last updated: Apr 12 2022 at 19:14 UTC