Foundation
This
page
is
part
of
the
Continuous
Integration
Build
of
FHIR
Specification
(v4.0.1:
R4
-
Mixed
Normative
and
STU
)
in
it's
permanent
home
(it
will
always
(will
be
available
incorrect/inconsistent
at
this
URL).
The
current
version
which
supercedes
this
version
is
5.0.0
.
For
a
full
list
of
available
versions,
see
times).
See
the
Directory
of
published
versions
.
Page
versions:
R5
R4B
R4
R3
R2
| Responsible Owner: FHIR Infrastructure Work Group | Standards Status : Informative |
Compartments
:
|
Raw XML ( canonical form + also see XML Format Specification )
An example transaction (id = "bundle-transaction")
<?xml version="1.0" encoding="UTF-8"?><!-- actually, in a transaction, you don't specify the [base], so [base]/Patient becomes just 'Patient': --> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient becomes just 'Patient': --> <!-- the conditional header: only add this resource if there isn't already one for this patient. If there is one, the content of this resource will be ignored --> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient becomes just 'Patient': --> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient?params becomes just 'Patient?params': --> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient/234 becomes just 'Patient/234': --> <!-- btw, couldn't re-use Patient/123 for the delete, since the transaction couldn't do two different operations on the same resource --> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient?params becomes just 'Patient?params': --> <!-- can do more than just create/update/delete. This is how to invoke an operation with a set of parameters --> <!-- POST to [base]/ValueSet/$lookup - invoking a lookup operation (see Terminology Service) --> <!-- can also do read-only operations. Note that these do not 'fail' - see discussion on transaction atomicity for further information --><Bundle xmlns="http://hl7.org/fhir"> <id value="bundle-transaction"/> <!-- this example bundle is a transaction --> <!-- when the transaction was constructed --> <meta> <lastUpdated value="2014-08-18T01:43:30Z"/> </meta> <type value="transaction"/> <!-- now, each entry is an action to take in the transaction --> <entry> <fullUrl value="urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a"/> <!-- a simple create operation --> <!-- first, the resource to create --> <resource> <Patient> <!-- no id for create operations --> <!-- and no metadata on this resource, though it would be valid --> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml">Some narrative</div> </text> <active value="true"/> <name> <use value="official"/> <family value="Chalmers"/> <given value="Peter"/> <given value="James"/> </name> <gender value="male"/> <birthDate value="1974-12-25"/> </Patient> </resource> <!-- now, details about the action to take with the resource --> <request> <!-- POST to [base]/Patient - that's a create --> <method value="POST"/> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient becomes just 'Patient': --> <url value="Patient"/> </request> </entry> <entry> <fullUrl value="urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059"/> <!-- a conditional create operation --> <!-- first, the resource --> <resource> <Patient> <!-- no id for create operations --> <!-- and no metadata on this resource, though it would be valid --> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml">Some narrative</div> </text> <identifier> <system value="http:/example.org/fhir/ids"/> <value value="234234"/> </identifier> <active value="true"/> <name> <use value="official"/> <family value="Chalmers"/> <given value="Peter"/> <given value="James"/> </name> <gender value="male"/> <birthDate value="1974-12-25"/> </Patient> </resource> <!-- transaction details --> <request> <!-- POST to [base]/Patient - that's a create --> <method value="POST"/> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient becomes just 'Patient': --> <url value="Patient"/> <!-- the conditional header: only add this resource if there isn't already one for this patient. If there is one, the content of this resource will be ignored --> <ifNoneExist value="identifier=http:/example.org/fhir/ids|234234"/> </request> </entry> <entry> <fullUrl value="http://example.org/fhir/Patient/123"/> <!-- a simple update operation --> <!-- first, the resource --> <resource> <Patient> <!-- the id here and in the URL have to match --> <id value="123"/> <!-- and no metadata on this resource, though it would be valid --> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml">Some narrative</div> </text> <active value="true"/> <name> <use value="official"/> <family value="Chalmers"/> <given value="Peter"/> <given value="James"/> </name> <gender value="male"/> <birthDate value="1974-12-25"/> </Patient> </resource> <!-- transaction details --> <request> <!-- PUT to [base]/Patient/[id] - that's an update --> <method value="PUT"/> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient becomes just 'Patient': --> <url value="Patient/123"/> </request> </entry> <entry> <fullUrl value="urn:uuid:74891afc-ed52-42a2-bcd7-f13d9b60f096"/> <!-- a conditional update operation --> <!-- first, the resource --> <resource> <Patient> <!-- no id for conditional update operations --> <!-- and no metadata on this resource, though it would be valid --> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml">Some narrative</div> </text> <identifier> <system value="http:/example.org/fhir/ids"/> <value value="456456"/> </identifier> <active value="true"/> <name> <use value="official"/> <family value="Chalmers"/> <given value="Peter"/> <given value="James"/> </name> <gender value="male"/> <birthDate value="1974-12-25"/> </Patient> </resource> <!-- transaction details --> <request> <!-- PUT to [base]/Patient?search_params - that's a conditional update --> <method value="PUT"/> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient?params becomes just 'Patient?params': --> <url value="Patient?identifier=http:/example.org/fhir/ids|456456"/> </request> </entry> <!-- a different kind of conditional update: version dependent --> <entry> <fullUrl value="http://example.org/fhir/Patient/123a"/> <resource> <Patient> <id value="123a"/> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml">Some narrative</div> </text> <active value="true"/> <name> <use value="official"/> <family value="Chalmers"/> <given value="Peter"/> <given value="James"/> </name> <gender value="male"/> <birthDate value="1974-12-25"/> </Patient> </resource> <request> <method value="PUT"/> <url value="Patient/123a"/> <!-- this will only succeed if the source version is correct: --> <ifMatch value="W/"2""/> </request> </entry> <!-- a provenance reference --> <entry> <fullUrl value="urn:uuid:f6240915-8e9f-4e21-ac6d-ea68ff6b90eb"/> <resource> <Provenance> <text> <status value="generated"/> <div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b> Generated Narrative: Provenance </b> </p> <p> Provenance for: </p> <ul> <li> <a href="broken-link.html">urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059</a> </li> <li> <a href="broken-link.html">http://example.org/fhir/Patient/123a</a> </li> </ul> <p> Summary</p> <table class="grid"><tr> <td> Activity</td> <td> <span title="Codes:">data entry</span> </td> </tr> </table> <p> <b> Agents</b> </p> <table class="grid"><tr> <td> <b> who</b> </td> </tr> <tr> <td> Clerical Staff</td> </tr> </table> </div> </text> <target> <!-- the client doesn't and can't know what versions will be assigned, nor can it know what id will be assigned to the first two of these resources, so it cannot provide version specific references. What it can do is ask for these references to be made version specific by the server --> <extension url="http://hl7.org/fhir/StructureDefinition/resolve-as-version-specific"> <valueBoolean value="true"/> </extension> <reference value="urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059"/> </target> <target> <extension url="http://hl7.org/fhir/StructureDefinition/resolve-as-version-specific"> <valueBoolean value="true"/> </extension> <reference value="http://example.org/fhir/Patient/123a"/> </target> <activity> <text value="data entry"/> </activity> <agent> <who> <display value="Clerical Staff"/> </who> </agent> </Provenance> </resource> <request> <method value="POST"/> <url value="Provenance"/> </request> </entry> <entry> <!-- a simple delete operation --> <!-- no resource in this case --> <!-- transaction details --> <request> <!-- DELETE to [base]/Patient/[id]- that's a delete operation --> <method value="DELETE"/> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient/234 becomes just 'Patient/234': --> <!-- btw, couldn't re-use Patient/123 for the delete, since the transaction couldn't do two different operations on the same resource --> <url value="Patient/234"/> </request> </entry> <entry> <!-- a conditional delete operation --> <!-- no resource in this case --> <!-- transaction details --> <request> <!-- DELETE to [base]/Patient?params- that's a conditional delete operation --> <method value="DELETE"/> <!-- actually, in a transaction, you don't specify the [base], so [base]/Patient?params becomes just 'Patient?params': --> <url value="Patient?identifier=123456"/> </request> </entry> <entry> <fullUrl value="urn:uuid:79378cb8-8f58-48e8-a5e8-60ac2755b674"/> <!-- can do more than just create/update/delete. This is how to invoke an operation with a set of parameters --> <resource> <Parameters> <parameter> <name value="coding"/> <valueCoding> <system value="http://loinc.org"/> <code value="1963-8"/> </valueCoding> </parameter> </Parameters> </resource> <request> <!-- POST to [base]/ValueSet/$lookup - invoking a lookup operation (see Terminology Service) --> <method value="POST"/> <url value="http://hl7.org/fhir/ValueSet/$lookup"/> </request> </entry> <entry> <!-- can also do read-only operations. Note that these do not 'fail' - see discussion on transaction atomicity for further information --> <request> <!-- GET from [base]/Patient?params - searching for a patient --> <method value="GET"/> <url value="Patient?name=peter"/> </request> </entry> <entry> <!-- and an example conditional read: --> <request> <method value="GET"/> <url value="Patient/12334"/> <!-- in practice, you'd only specify one of these --> <ifNoneMatch value="W/"4""/> <ifModifiedSince value="2015-08-31T08:14:33+10:00"/> </request> </entry> </ Bundle >
Usage note: every effort has been made to ensure that the examples are correct and useful, but they are not a normative part of the specification.
FHIR
®©
HL7.org
2011+.
FHIR
Release
4
(Technical
Correction
#1)
(v4.0.1)
R6
hl7.fhir.core#6.0.0-ballot3
generated
on
Fri,
Mon,
Nov
1,
2019
09:34+1100.
QA
Page
10,
2025
15:21+0000.
Links:
Search
|
Version
History
|
Table
of
Contents
|
Credits
Glossary
|
QA
|
Compare
to
R3
R4
|
Compare
to
R5
|
Compare
to
Last
Ballot
|
|
Propose
a
change