Release 4 5

This page is part of the FHIR Specification (v4.0.1: R4 (v5.0.0: R5 - Mixed Normative and STU ) ). This is the current published version in it's permanent home (it will always be available at this URL). 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

Bundle-transaction.ttl

Example Bundle/bundle-transaction (Turtle)

FHIR Infrastructure Work Group Maturity Level : N/A Standards Status : Informative Compartments : Not linked to any No defined compartments

Raw Turtle (+ also see Turtle/RDF Format Specification )

An example transaction

@prefix fhir: <http://hl7.org/fhir/> .
@prefix loinc: <http://loinc.org/rdf#> .

@prefix loinc: <https://loinc.org/rdf/> .

@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# - resource -------------------------------------------------------------------

<http://hl7.org/fhir/Bundle/bundle-transaction> a fhir:Bundle;
  fhir:nodeRole fhir:treeRoot;
  fhir:Resource.id [ fhir:value "bundle-transaction"];
  fhir:Resource.meta [
     fhir:Meta.lastUpdated [ fhir:value "2014-08-18T01:43:30Z"^^xsd:dateTime ]
  ];
  fhir:Bundle.type [ fhir:value "transaction"];
  fhir:Bundle.entry [
     fhir:index 0;
     fhir:Bundle.entry.fullUrl [ fhir:value "urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a" ];
     fhir:Bundle.entry.resource <urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a>;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "POST" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient" ]
     ]
  ], [
     fhir:index 1;
     fhir:Bundle.entry.fullUrl [ fhir:value "urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059" ];
     fhir:Bundle.entry.resource <urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059>;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "POST" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient" ];
       fhir:Bundle.entry.request.ifNoneExist [ fhir:value "identifier=http:/example.org/fhir/ids|234234" ]
     ]
  ], [
     fhir:index 2;
     fhir:Bundle.entry.fullUrl [ fhir:value "http://example.org/fhir/Patient/123" ];
     fhir:Bundle.entry.resource <http://example.org/fhir/Patient/123>;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "PUT" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient/123" ]
     ]
  ], [
     fhir:index 3;
     fhir:Bundle.entry.fullUrl [ fhir:value "urn:uuid:74891afc-ed52-42a2-bcd7-f13d9b60f096" ];
     fhir:Bundle.entry.resource <urn:uuid:74891afc-ed52-42a2-bcd7-f13d9b60f096>;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "PUT" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient?identifier=http:/example.org/fhir/ids|456456" ]
     ]
  ], [
     fhir:index 4;
     fhir:Bundle.entry.fullUrl [ fhir:value "http://example.org/fhir/Patient/123a" ];
     fhir:Bundle.entry.resource <http://example.org/fhir/Patient/123a>;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "PUT" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient/123a" ];
       fhir:Bundle.entry.request.ifMatch [ fhir:value "W/\"2\"" ]
     ]
  ], [
     fhir:index 5;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "DELETE" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient/234" ]
     ]
  ], [
     fhir:index 6;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "DELETE" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient?identifier=123456" ]
     ]
  ], [
     fhir:index 7;
     fhir:Bundle.entry.fullUrl [ fhir:value "urn:uuid:79378cb8-8f58-48e8-a5e8-60ac2755b674" ];
     fhir:Bundle.entry.resource <urn:uuid:79378cb8-8f58-48e8-a5e8-60ac2755b674>;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "POST" ];
       fhir:Bundle.entry.request.url [ fhir:value "ValueSet/$lookup" ]
     ]
  ], [
     fhir:index 8;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "GET" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient?name=peter" ]

[a fhir:Bundle ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "bundle-transaction"] ; # 
  fhir:meta [
     fhir:lastUpdated [ fhir:v "2014-08-18T01:43:30Z"^^xsd:dateTime ]
  ] ; #    this example bundle is a transaction    ,    when the transaction was constructed   
  fhir:type [ fhir:v "transaction"] ; # 
  fhir:entry ( [
     fhir:fullUrl [ fhir:v "urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a"^^xsd:anyURI ] ;
     fhir:resource ( <urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a> ) ; #    a simple create operation   ,    first, the resource to create   
     fhir:request [
       fhir:method [ fhir:v "POST" ] ; #    POST to [base]\/Patient - that's a create   
       fhir:url [ fhir:v "Patient"^^xsd:anyURI ] #    actually, in a transaction, you don't specify the [base], \n         so [base]\/Patient becomes just 'Patient':   
     ] #    now, details about the action to take with the resource   
  ] [
     fhir:fullUrl [ fhir:v "urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059"^^xsd:anyURI ] ;
     fhir:resource ( <urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059> ) ; #    a conditional create operation   ,    first, the resource   
     fhir:request [
       fhir:method [ fhir:v "POST" ] ; #    POST to [base]\/Patient - that's a create   
       fhir:url [ fhir:v "Patient"^^xsd:anyURI ] ; #    actually, in a transaction, you don't specify the [base], \n         so [base]\/Patient becomes just 'Patient':   
       fhir:ifNoneExist [ fhir:v "identifier=http:/example.org/fhir/ids|234234" ] #    the conditional header: only add this resource if \n      there isn't already one for this patient. If there is one,\n      the content of this resource will be ignored   
     ] #    transaction details   
  ] [
     fhir:fullUrl [ fhir:v "http://example.org/fhir/Patient/123"^^xsd:anyURI ] ;
     fhir:resource ( <http://example.org/fhir/Patient/123> ) ; #    a simple update operation   ,    first, the resource   
     fhir:request [
       fhir:method [ fhir:v "PUT" ] ; #    PUT to [base]\/Patient\/[id] - that's an update   
       fhir:url [ fhir:v "Patient/123"^^xsd:anyURI ] #    actually, in a transaction, you don't specify the [base], \n         so [base]\/Patient becomes just 'Patient':   
     ] #    transaction details   
  ] [
     fhir:fullUrl [ fhir:v "urn:uuid:74891afc-ed52-42a2-bcd7-f13d9b60f096"^^xsd:anyURI ] ;
     fhir:resource ( <urn:uuid:74891afc-ed52-42a2-bcd7-f13d9b60f096> ) ; #    a conditional update operation   ,    first, the resource   
     fhir:request [
       fhir:method [ fhir:v "PUT" ] ; #    PUT to [base]\/Patient?search_params - that's a conditional update   
       fhir:url [ fhir:v "Patient?identifier=http:/example.org/fhir/ids|456456"^^xsd:anyURI ] #    actually, in a transaction, you don't specify the [base], \n         so [base]\/Patient?params becomes just 'Patient?params':   
     ] #    transaction details   
  ] [
     fhir:fullUrl [ fhir:v "http://example.org/fhir/Patient/123a"^^xsd:anyURI ] ;
     fhir:resource ( <http://example.org/fhir/Patient/123a> ) ;
     fhir:request [
       fhir:method [ fhir:v "PUT" ] ;
       fhir:url [ fhir:v "Patient/123a"^^xsd:anyURI ] ;
       fhir:ifMatch [ fhir:v "W/\"2\"" ] #   this will only succeed if the source version is correct:  

     ]
  ], [
     fhir:index 9;
     fhir:Bundle.entry.request [
       fhir:Bundle.entry.request.method [ fhir:value "GET" ];
       fhir:Bundle.entry.request.url [ fhir:value "Patient/12334" ];
       fhir:Bundle.entry.request.ifNoneMatch [ fhir:value "W/\"4\"" ];
       fhir:Bundle.entry.request.ifModifiedSince [ fhir:value "2015-08-31T08:14:33+10:00"^^xsd:dateTime ]

  ] [
     fhir:request [
       fhir:method [ fhir:v "DELETE" ] ; #    DELETE to [base]\/Patient\/[id]- that's a delete operation   
       fhir:url [ fhir:v "Patient/234"^^xsd:anyURI ] #    actually, in a transaction, you don't specify the [base], \n         so [base]\/Patient\/234 becomes just 'Patient\/234':   ,    btw, couldn't re-use Patient\/123 for the delete, since \n        the transaction couldn't do two different operations on the\n        same resource   
     ] #    a simple delete operation   ,    no resource in this case   ,    transaction details   
  ] [
     fhir:request [
       fhir:method [ fhir:v "DELETE" ] ; #    DELETE to [base]\/Patient?params- that's a conditional delete operation   
       fhir:url [ fhir:v "Patient?identifier=123456"^^xsd:anyURI ] #    actually, in a transaction, you don't specify the [base], \n         so [base]\/Patient?params becomes just 'Patient?params':   
     ] #    a conditional delete operation   ,    no resource in this case   ,    transaction details   
  ] [
     fhir:fullUrl [ fhir:v "urn:uuid:79378cb8-8f58-48e8-a5e8-60ac2755b674"^^xsd:anyURI ] ;
     fhir:resource ( <urn:uuid:79378cb8-8f58-48e8-a5e8-60ac2755b674> ) ; #    can do more than just create\/update\/delete. \n      This is how to invoke an operation with a set of parameters   
     fhir:request [
       fhir:method [ fhir:v "POST" ] ; #    POST to [base]\/ValueSet\/$lookup - invoking a lookup operation (see Terminology Service)   
       fhir:url [ fhir:v "http://hl7.org/fhir/ValueSet/$lookup"^^xsd:anyURI ]

     ]
  ] .

  ] [
     fhir:request [
       fhir:method [ fhir:v "GET" ] ; #    GET from [base]\/Patient?params - searching for a patient   
       fhir:url [ fhir:v "Patient?name=peter"^^xsd:anyURI ]
     ] #    can also do read-only operations. \n    \n    Note that these do not 'fail' - see discussion on transaction \n    atomicity for further information \n      
  ] [
     fhir:request [
       fhir:method [ fhir:v "GET" ] ;
       fhir:url [ fhir:v "Patient/12334"^^xsd:anyURI ] ;
       fhir:ifNoneMatch [ fhir:v "W/\"4\"" ] ; #   in practice, you'd only specify one of these  
       fhir:ifModifiedSince [ fhir:v "2015-08-31T08:14:33+10:00"^^xsd:dateTime ]
     ] #    and an example conditional read:  
  ] )] . #    now, each entry is an action to take in the transaction   


<urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a> a fhir:Patient;
  fhir:DomainResource.text [
     fhir:Narrative.status [ fhir:value "generated" ];
     fhir:Narrative.div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ];
  fhir:Patient.active [ fhir:value "true"^^xsd:boolean];
  fhir:Patient.name [
     fhir:index 0;
     fhir:HumanName.use [ fhir:value "official" ];
     fhir:HumanName.family [ fhir:value "Chalmers" ];
     fhir:HumanName.given [
       fhir:value "Peter";
       fhir:index 0
     ], [
       fhir:value "James";
       fhir:index 1
     ]
  ];
  fhir:Patient.gender [ fhir:value "male"];
  fhir:Patient.birthDate [ fhir:value "1974-12-25"^^xsd:date] .

<urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a> a fhir:Patient ;
  fhir:text [
     fhir:status [ fhir:v "generated" ] ;
     fhir:div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ] ; #    no id for create operations   ,    and no metadata on this resource, though it would be valid   
  fhir:active [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:name ( [
     fhir:use [ fhir:v "official" ] ;
     fhir:family [ fhir:v "Chalmers" ] ;
     fhir:given ( [ fhir:v "Peter" ] [ fhir:v "James" ] )
  ] ) ; # 
  fhir:gender [ fhir:v "male"] ; # 
  fhir:birthDate [ fhir:v "1974-12-25"^^xsd:date] . # 


<urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059> a fhir:Patient;
  fhir:DomainResource.text [
     fhir:Narrative.status [ fhir:value "generated" ];
     fhir:Narrative.div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ];
  fhir:Patient.identifier [
     fhir:index 0;
     fhir:Identifier.system [ fhir:value "http:/example.org/fhir/ids" ];
     fhir:Identifier.value [ fhir:value "234234" ]
  ];
  fhir:Patient.active [ fhir:value "true"^^xsd:boolean];
  fhir:Patient.name [
     fhir:index 0;
     fhir:HumanName.use [ fhir:value "official" ];
     fhir:HumanName.family [ fhir:value "Chalmers" ];
     fhir:HumanName.given [
       fhir:value "Peter";
       fhir:index 0
     ], [
       fhir:value "James";
       fhir:index 1
     ]
  ];
  fhir:Patient.gender [ fhir:value "male"];
  fhir:Patient.birthDate [ fhir:value "1974-12-25"^^xsd:date] .

<urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059> a fhir:Patient ;
  fhir:text [
     fhir:status [ fhir:v "generated" ] ;
     fhir:div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ] ; #    no id for create operations   ,    and no metadata on this resource, though it would be valid   
  fhir:identifier ( [
     fhir:system [ fhir:v "http:/example.org/fhir/ids"^^xsd:anyURI ] ;
     fhir:value [ fhir:v "234234" ]
  ] ) ; # 
  fhir:active [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:name ( [
     fhir:use [ fhir:v "official" ] ;
     fhir:family [ fhir:v "Chalmers" ] ;
     fhir:given ( [ fhir:v "Peter" ] [ fhir:v "James" ] )
  ] ) ; # 
  fhir:gender [ fhir:v "male"] ; # 
  fhir:birthDate [ fhir:v "1974-12-25"^^xsd:date] . # 


<http://example.org/fhir/Patient/123> a fhir:Patient;
  fhir:Resource.id [ fhir:value "123"];
  fhir:DomainResource.text [
     fhir:Narrative.status [ fhir:value "generated" ];
     fhir:Narrative.div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ];
  fhir:Patient.active [ fhir:value "true"^^xsd:boolean];
  fhir:Patient.name [
     fhir:index 0;
     fhir:HumanName.use [ fhir:value "official" ];
     fhir:HumanName.family [ fhir:value "Chalmers" ];
     fhir:HumanName.given [
       fhir:value "Peter";
       fhir:index 0
     ], [
       fhir:value "James";
       fhir:index 1
     ]
  ];
  fhir:Patient.gender [ fhir:value "male"];
  fhir:Patient.birthDate [ fhir:value "1974-12-25"^^xsd:date] .

<http://example.org/fhir/Patient/123> a fhir:Patient ;
  fhir:id [ fhir:v "123"] ; #    the id here and in the URL have to match   
  fhir:text [
     fhir:status [ fhir:v "generated" ] ;
     fhir:div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ] ; #    and no metadata on this resource, though it would be valid   
  fhir:active [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:name ( [
     fhir:use [ fhir:v "official" ] ;
     fhir:family [ fhir:v "Chalmers" ] ;
     fhir:given ( [ fhir:v "Peter" ] [ fhir:v "James" ] )
  ] ) ; # 
  fhir:gender [ fhir:v "male"] ; # 
  fhir:birthDate [ fhir:v "1974-12-25"^^xsd:date] . # 


<urn:uuid:74891afc-ed52-42a2-bcd7-f13d9b60f096> a fhir:Patient;
  fhir:DomainResource.text [
     fhir:Narrative.status [ fhir:value "generated" ];
     fhir:Narrative.div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ];
  fhir:Patient.identifier [
     fhir:index 0;
     fhir:Identifier.system [ fhir:value "http:/example.org/fhir/ids" ];
     fhir:Identifier.value [ fhir:value "456456" ]
  ];
  fhir:Patient.active [ fhir:value "true"^^xsd:boolean];
  fhir:Patient.name [
     fhir:index 0;
     fhir:HumanName.use [ fhir:value "official" ];
     fhir:HumanName.family [ fhir:value "Chalmers" ];
     fhir:HumanName.given [
       fhir:value "Peter";
       fhir:index 0
     ], [
       fhir:value "James";
       fhir:index 1
     ]
  ];
  fhir:Patient.gender [ fhir:value "male"];
  fhir:Patient.birthDate [ fhir:value "1974-12-25"^^xsd:date] .

<urn:uuid:74891afc-ed52-42a2-bcd7-f13d9b60f096> a fhir:Patient ;
  fhir:text [
     fhir:status [ fhir:v "generated" ] ;
     fhir:div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ] ; #    no id for conditional update operations   ,    and no metadata on this resource, though it would be valid   
  fhir:identifier ( [
     fhir:system [ fhir:v "http:/example.org/fhir/ids"^^xsd:anyURI ] ;
     fhir:value [ fhir:v "456456" ]
  ] ) ; # 
  fhir:active [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:name ( [
     fhir:use [ fhir:v "official" ] ;
     fhir:family [ fhir:v "Chalmers" ] ;
     fhir:given ( [ fhir:v "Peter" ] [ fhir:v "James" ] )
  ] ) ; # 
  fhir:gender [ fhir:v "male"] ; # 
  fhir:birthDate [ fhir:v "1974-12-25"^^xsd:date] . # 


<http://example.org/fhir/Patient/123a> a fhir:Patient;
  fhir:Resource.id [ fhir:value "123a"];
  fhir:DomainResource.text [
     fhir:Narrative.status [ fhir:value "generated" ];
     fhir:Narrative.div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ];
  fhir:Patient.active [ fhir:value "true"^^xsd:boolean];
  fhir:Patient.name [
     fhir:index 0;
     fhir:HumanName.use [ fhir:value "official" ];
     fhir:HumanName.family [ fhir:value "Chalmers" ];
     fhir:HumanName.given [
       fhir:value "Peter";
       fhir:index 0
     ], [
       fhir:value "James";
       fhir:index 1
     ]
  ];
  fhir:Patient.gender [ fhir:value "male"];
  fhir:Patient.birthDate [ fhir:value "1974-12-25"^^xsd:date] .

<http://example.org/fhir/Patient/123a> a fhir:Patient ;
  fhir:id [ fhir:v "123a"] ; # 
  fhir:text [
     fhir:status [ fhir:v "generated" ] ;
     fhir:div "<div xmlns=\"http://www.w3.org/1999/xhtml\">Some narrative</div>"
  ] ; # 
  fhir:active [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:name ( [
     fhir:use [ fhir:v "official" ] ;
     fhir:family [ fhir:v "Chalmers" ] ;
     fhir:given ( [ fhir:v "Peter" ] [ fhir:v "James" ] )
  ] ) ; # 
  fhir:gender [ fhir:v "male"] ; # 
  fhir:birthDate [ fhir:v "1974-12-25"^^xsd:date] . # 


<urn:uuid:79378cb8-8f58-48e8-a5e8-60ac2755b674> a fhir:Parameters;
  fhir:Parameters.parameter [
     fhir:index 0;
     fhir:Parameters.parameter.name [ fhir:value "coding" ];
     fhir:Parameters.parameter.valueCoding [
       a loinc:1963-8;
       fhir:Coding.system [ fhir:value "http://loinc.org" ];
       fhir:Coding.code [ fhir:value "1963-8" ]

<urn:uuid:79378cb8-8f58-48e8-a5e8-60ac2755b674> a fhir:Parameters ;
  fhir:parameter ( [
     fhir:name [ fhir:v "coding" ] ;
     fhir:value [
       a fhir:Coding, loinc:1963-8 ;
       fhir:system [ fhir:v "http://loinc.org"^^xsd:anyURI ] ;
       fhir:code [ fhir:v "1963-8" ]

     ]
  ] .

# - ontology header ------------------------------------------------------------

<http://hl7.org/fhir/Bundle/bundle-transaction.ttl> a owl:Ontology;
  owl:imports fhir:fhir.ttl;
  owl:versionIRI <http://build.fhir.org/Bundle/bundle-transaction.ttl> .

  ] ) . # 


# -------------------------------------------------------------------------------------


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.