Release 4 Snapshot 3: Connectathon 32 Base

This page is part of the Snapshot #3 for FHIR Specification (v4.0.1: R4 - Mixed Normative and STU ) in it's permanent home (it will always be available at this URL). The current version which supercedes this version is 5.0.0 R5 , released to support Connectathon 32 . For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4

2.8 Managing Multiple FHIR Versions

Example ValueSet/verificationresult-failure-action (JSON)

FHIR Infrastructure
Vocabulary Work Group Maturity Level : N/A Standards Status : Informative
This FHIR specification is one in a series of publications of the FHIR specification . There have been previous releases, and there will be subsequent releases. Each release (or "version") introduces new features, and changes from the previous releases. Implementers should be familiar with the kind of changes that can be made, and the change processes that apply - see the FHIR Version Management Policy for further information Ongoing change to the specification means that implementers must be able to determine which version is in use in their context and implement accordingly. There are 3 ways to determine the version of FHIR in use: The fhirVersion element in the applicable CapabilityStatement

Clients can determine what versions a server supports by using the $versions Raw JSON operation. Storage The same technique can be used in a database, or any other kind of storage - just store the mime type (or just the version) alongside the resource. This means that when reading resources, the application knows what version the resource has, and therefore what parser to use, before reading the resource. ( canonical form 2.8.3 Version Specific Profile + also see JSON Format Specification There are some circumstances where applications handle 'naked' resources - that is, resources where there is no wrapping envelope to carry a mimetype version parameter, nor any suitable parallel location to store the version. The most obvious circumstance is when resources are stored in files, though this may arise in other circumstances due to (legacy) application or protocol design. When there's no other alternative, the version has to be in the resources itself, and applications reading the resource have to scan the resource to determine the version and then read the resource as the correct version. )

In these cases where the version must be placed in the resource itself, this is done by indicating that the resource conforms to specific version in meta.profile : Definition for Value Setfailure-action

{
  "resourceType" : "Patient",
  "meta" : {
    "profile" : ["http://hl7.org/fhir/3.0/StructureDefinition/Patient"]

  "resourceType" : "ValueSet",
  "id" : "verificationresult-failure-action",
  "meta" : {
    "lastUpdated" : "2022-12-14T07:12:54.019+11:00",
    "profile" : ["http://hl7.org/fhir/StructureDefinition/shareablevalueset"]
  },
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><ul><li>Include all codes defined in <a href=\"http://terminology.hl7.org/4.0.0/CodeSystem-failure-action.html\"><code>http://terminology.hl7.org/CodeSystem/failure-action</code></a></li></ul></div>"
  },
  "extension" : [{
    "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
    "valueCode" : "pa"
  }],
  "url" : "http://hl7.org/fhir/ValueSet/verificationresult-failure-action",
  "identifier" : [{
    "system" : "urn:ietf:rfc:3986",
    "value" : "urn:oid:2.16.840.1.113883.4.642.3.890"
  }],
  "version" : "5.0.0-snapshot3",
  "name" : "FailureAction",
  "title" : "failure-action",
  "status" : "draft",
  "experimental" : false,
  "date" : "2018-06-05T14:06:02+00:00",
  "publisher" : "HL7 (FHIR Project)",
  "contact" : [{
    "telecom" : [{
      "system" : "url",
      "value" : "http://hl7.org/fhir"
    },
    {
      "system" : "email",
      "value" : "fhir@lists.hl7.org"
    }]
  }],
  "description" : "The result if validation fails",
  "jurisdiction" : [{
    "coding" : [{
      "system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
      "code" : "001",
      "display" : "World"
    }]
  }],
  "immutable" : true,
  "compose" : {
    "include" : [{
      "system" : "http://terminology.hl7.org/CodeSystem/failure-action"
    }]

  }
}

This technique can be used with all versions of FHIR, including R2 and R3: FHIR R1 (DSTU 1) 0.0 FHIR R2 (DSTU 2) 1.0 FHIR R3 (STU3, or just R3) 3.0 FHIR R4 (this version) 4.0 (once published) 2.8.4 Managing Version Identification This means that there are 3 different methods for determining version, all of which may be applicable when exchanging data. Implementers are advised Usage note: every effort has been made to adopt their use in the order documented: All exchange of FHIR resources will have a known version from ensure that the metadata - this always applies, and implementers are encouraged to prefer this method whenever possible. When this is not enough, or when resources examples are not exchanged under the rules of a CapabilityStatement , a version parameter should be stored alongside the resource, preferably using the mime type parameter documented above When there's no other choice, use the meta.profile to indicate which version(s) a resource conforms to When determining the version, there's no order of preference between these methods: if the version of a resource or interaction is specified more than one way, the version statements must all agree with each other, or it is an error, correct and applications can process a request/resource how useful, but they wish - usually, with some kind of error. 2.8.5 Strategies for handling Changes Between Versions All parts of the FHIR specification are subject to ongoing change. The types of changes allowed, and the change control process vary, as detailed in the Version Management Policy . Implementers need to be aware of what kind of changes are made and have not a strategy for dealing with them. Where possible, implementers should design their solutions to be able to manage changes to the specification and, where necessary, to manage interoperability with systems that may be using different versions normative part of the specification.

A key aspect of the FHIR specification development process is gaining feedback from implementers making use of the specification. As well, the process is conditional on real world implementation in order to move through the maturity cycle. For this reason, all FHIR implementers are encouraged to register their usage here , which captures contact and other information that will allow HL7 to perform appropriate monitoring of FHIR usage. Survey information is confidential and reported in aggregate only. (Note that implementers can advertise their use of FHIR here .