This page is part of the FHIR Specification (v4.3.0: R4B - STU). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3
This page documents how the Parameters resource is used to define a set of FHIRPath based patch operations.
This table documents the FHIRPath operations that may be used to specify changes to a resource:
add is easier than insert at the end of the list
There are a few base rules that apply for all operations:
resolve() function (e.g. like Observation.subject.resolve().identifier).
resolve() SHALL only be used to refer to contained resource within the resource being patched.
Servers SHALL NOT allow patch operations to alter other resources than the nominated target, and SHOULD return an error if the patch operation triesThe FHIRPath patch operations are encoded in a Parameters resource as follows:
Here is an example of adding an element:
<Parameters xmlns="http://hl7.org/fhir"> <parameter> <name value="operation"/> <part> <name value="type"/> <valueCode value="add"/> </part> <part> <name value="path"/> <valueString value="Patient"/> </part> <part> <name value="name"/> <valueString value="birthDate"/> </part> <part> <name value="value"/> <valueDate value="1930-01-01"/> </part> </parameter> </Parameters>
Only some named data types (see the list) are allowed to be used directly in parameters. In order to add or insert other kinds of types - including anonymous elements (e.g. Observation.component, Timing.repeat), the content is defined by defining the name as described above, and instead of providing a value, a set of parts that are values are provided. Here is an example:
<Parameters xmlns="http://hl7.org/fhir"> <parameter> <name value="operation"/> <part> <name value="type"/> <valueCode value="add"/> </part> <part> <name value="path"/> <valueString value="Patient"/> </part> <part> <name value="name"/> <valueString value="contact"/> </part> <part> <name value="value"/> <part> <name value="name"/> <valueHumanName> <text value="a name"/> </valueHumanName> </part> </part> </parameter> </Parameters>
This pattern repeats as deep as necessary.
There is a set of test cases for implementers as part of the Test Case Downloads.