FHIR🔥 API Extensions

$diff operation

The $diff operation can be used to determine the difference between two versions of a resource or any two resources of the same type.

The difference return by the operation is in FHIR Patch format.

This implementation is derived from the $diff operation implemented in the HAPI Server (see Diff Operation).

Diff on a Resource instance

Optional Parameters

  1. fromVersion=[version] – see below for details
  2. includeMeta=(true|false) – defaults to false and determines whether the Resources' meta elements are included in the difference or not.

Diff with default version

GET /[type]/[id]/$diff

Determines the changes from version n-1 to version n, where n is the latest version of the Resource.

GET /[type]/[id]/$diff?fromVersion=[version]

Determines the changes from version version to version n, where n is the latest version of the Resource.

Diff with specific version

GET /[type]/[id]/_history/[version]/$diff

Determines the changes from version n to version version, where n is the latest version of the Resource that is not equal to version. That is, if version is the latest version, then n = version-1, otherwise n = the latest version.

GET /[type]/[id]/_history/[version]/$diff?fromVersion=[fromVersion]

Determines the changes from version fromVersion to version version.

Diff any two Resource instances of the same type

Required Parameters

  1. from=[id]
  2. to=[id]

The ids may be versioned or not. That is of either form:

  • [type]/[id]
  • [type]/[id]/_history/[version]

Optional Parameters

  1. includeMeta=(true|false) – defaults to false and determines whether the Resources' meta elements are included in the difference or not.
GET /$diff?from=[type]/[id1]&to=[type]/[id2]
GET /$diff?from=[type]/[id1]&to=[type]/[id2]/_history/1

Result

The output is in FHIRPatch format. This is a Parameters Resource where each Parameter represents one of several FHIRPatch operations. Currently these include:

  • add
  • insert
  • delete
  • replace

Example result

{
  "resourceType": "Parameters",
  "parameter": [{
    "name": "operation",
    "part": [{
     "name": "type",
      "valueCode": "replace"
    }, {
      "name": "path",
      "valueString": "CodeSystem.concept[6].display"
    }, {
      "name": "previousValue",
      "valueString": "nonsmoker"
    }, {
      "name": "value",
      "valueString": "non-smoker"
    }]
  }]
}