Patch

Updating a part of your resource

All examples can be run in Postman. Here's a web view of these examples.

In most Operations in FHIR, you manipulate a resource as a whole (create, update, delete operations). But sometimes you want to update specific data elements in a resource and do not care about the rest. In other words, you need an element/attribute level operation.

With the patch operation, you can update a part of a resource by sending a declarative description of operations that should be performed on an existing resource. To describe these operations in Aidbox, you can use different notations (methods):

Patch Method

You can specify a patch method by the content-type header or by the _method parameter.

methodparameterheader

json-patch

json-patch

application/json-patch+json

merge-patch

merge-patch

application/merge-patch+json

If the method is not specified, Aidbox will try to guess it by the following algorithm:

  • if the payload is an array β€” json-patch

  • else merge-patch

Operation Description

Patch Operation

PATCH [base-url]/:resourceType/:id

Path Parameters

NameTypeDescription

_method

string

Can be

json-patch

,

merge-patch

(and

fhir-patch

in the future)

Headers

NameTypeDescription

content-type

string

See the

content-type

header in the table above

Request Body

NameTypeDescription

string

JSON or YAML representation of transformation rules in accordance with

_method

Updated resource

Example

You can exercise this tutorial using REST Console β€” just copy/paste queries into your console!

Let's suppose we've created a Patient resource with the id pt-1

POST /Patient

resourceType: Patient
id: pt-1
active: true
name:
  - given: ['John']
    family: Doe
    use: official
  - given: ['Johny']
    family: Doe
telecom:
  -  system: phone
     value: '(03) 5555 6473'
     use: work
     rank: 1
birthDate: '1979-01-01'

# 200

id: pt-1
resourceType: Patient
name:
- use: official
  given:
  - John
  family: Doe
- given:
  - Johny
  family: Doe
active: true
telecom:
- use: work
  rank: 1
  value: "(03) 5555 6473"
  system: phone
birthDate: '1979-01-01'

You can copy/paste this request into REST Console of Aidbox.Cloud.

Merge Patch

Let's say we want to switch an active flag to false and remove telecom:

PATCH /Patient/pt-1?_method=merge-patch

active: false
telecom: null

# 200

id: pt-1
resourceType: Patient
name:
- use: official
  given:
  - John
  family: Doe
- given:
  - Johny
  family: Doe
active: false
birthDate: '1979-01-01'

JSON Patch

With JSON patch, we can do more sophisticated transformations β€” change the first given name, delete the second name, and change the active attribute value to true:

PATCH /Patient/pt-1

- op: replace
  path: '/name/0/given/0'
  value: Nikolai
- op: remove
  path: '/name/1'
- op: replace
  path: '/active'
  value: true
  
# 200

# response 200

id: pt-1
resourceType: Patient
name:
- use: official
  given:
  - Nikolai
  family: Doe
active: true
birthDate: '1979-01-01'

Last updated