FHIR Chat · Versoning · implementers

Stream: implementers

Topic: Versoning


view this post on Zulip Ludvig Eek Hofmann (Feb 09 2021 at 09:37):

We are making major changes in a profile and therefore making a new version of the profile available in production. For an unidentified time, both versions will be in production. The profile is called ClinicalImpressionTriageRetts and the base URL has a suffix with the main version numbe, e.g. https://fhir/.../clinicalimpressiontriageretts/**v1**.

When we create our second major version, we want to change the version in the url suffix. But when we upload it to simplifier, we think it would be a good idea to also include the version in the name/title of the profile to make it easier for an external guest to find the latest version / profile and easily understand that there are several versions of the profile.

Do you have any input or best practice/naming conventions on how to publish multiple versions of a profile?

view this post on Zulip Lloyd McKenzie (Feb 09 2021 at 14:59):

There are two pieces here - what is the StructureDefinition.url and what is the StructureDefinition.id. Both versions of your profile would have the same url and different version elements. They'd also have to have unique ids - which might not have any correspondence with the url at all. If doing a GET from a FHIR endpoint, you're not allowed to do a search on [base]/StructureDefinition/id/[somebusinessversion]

view this post on Zulip Ward Weistra (Feb 10 2021 at 13:11):

@Ludvig Eek Hofmann In addition to Lloyd:

  • Once you have those two profiles with same canonical url (and most other values) and a different version, the Simplifier.net metadata expressions that extract a nice readable title and description for any FHIR resource will likely still give them both the same title. You can either choose to edit those for (one of) the files by hand (Resource page > Settings > Properties) or change the metadata expressions for your project (Project page > Manage > Metadata expressions).
  • If you don't need the older resource in the latest version of the project, but just want to keep it around so people can access it, you can still refer to an older FHIR Package version in which the old version was included. Each package version will remain available forever, so just to keep them available to consumers you don't necessarily need to include them in the latest version of the specification.

Simplifier.net and Forge currently don't take profile versions into account when resolving, so wherever possible we'd recommend to rely on FHIR package versioning over profile versioning.

view this post on Zulip Ludvig Eek Hofmann (Feb 11 2021 at 10:32):

Thank you for your input.
We are using the version element to state the new version. However we have followed the example on hl7.org where the following is stated: For the kind of resources that have canonical URLs, this specification recommends that implementers follow the Semantic Versioning principles, but does not require this. Implementers should consider, however, making the MAJOR version part of the canonical URL rather than putting it in [Resource].version.
Do you see a problem to also include the major version in the canonical url?

We will change the title of the versions in simplifier to different them! We need both to be available in the project.

view this post on Zulip Ward Weistra (Feb 11 2021 at 14:13):

@Ludvig Eek Hofmann Using different canonicals for them will make your life easier in Forge and Simplifier.net, since we currently don't resolve based on the profile version. Having different canonicals guarantees correct resolving there.

The FHIR spec itself has kept the same canonicals over the different FHIR versions (eg. for Patient). Since the url is basically just an identifier only a human would easily see that canonical/v2 is the newer version from canonical/v1.

view this post on Zulip Ludvig Eek Hofmann (Feb 12 2021 at 09:13):

@Ward Weistra Ok, thank you for claryfiying!


Last updated: Apr 12 2022 at 19:14 UTC