This page is part of the FHIR Specification (v1.6.0: STU 3 Ballot 4). 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
ShEx statement for bundle
PREFIX fhir: <http://hl7.org/fhir/> PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> BASE <http://hl7.org/fhir/shape/> start=<Bundle> AND {fhir:nodeRole [fhir:treeRoot]} # Contains a collection of resources <Bundle> CLOSED { a [fhir:Bundle]; fhir:nodeRole [fhir:treeRoot]?; fhir:Resource.id @<id>?; # Logical id of this artifact fhir:Resource.meta @<Meta>?; # Metadata about the resource fhir:Resource.implicitRules @<uri>?; # A set of rules under which this # content was created fhir:Resource.language @<code>?; # Language of the resource content fhir:Bundle.type @<code> AND {fhir:value @fhirvs:bundle-type}; # document | message | transaction | # transaction-response | batch | # batch-response | history | # searchset | collection fhir:Bundle.total @<unsignedInt>?; # If search, the total number of # matches fhir:Bundle.link @<Bundle.link>*; # Links related to this Bundle fhir:Bundle.entry @<Bundle.entry>*; # Entry in the bundle - will have a # resource, or information fhir:Bundle.signature @<Signature>?; # Digital Signature fhir:index xsd:integer? # Relative position in a list } # Entry in the bundle - will have a resource, or information <Bundle.entry> CLOSED { fhir:Element.id @<string>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:modifierExtension @<Extension>*; # Extensions that cannot be ignored fhir:Bundle.entry.link @<Bundle.link>*; # Links related to this entry fhir:Bundle.entry.fullUrl @<uri>?; # Absolute URL for resource (server # address, or UUID/OID) fhir:Bundle.entry.resource @<Resource>?; # A resource in the bundle fhir:Bundle.entry.search @<Bundle.entry.search>?; # Search related information fhir:Bundle.entry.request @<Bundle.entry.request>?; # Transaction Related Information fhir:Bundle.entry.response @<Bundle.entry.response>?; # Transaction Related Information fhir:index xsd:integer? # Relative position in a list } # Links related to this Bundle <Bundle.link> CLOSED { fhir:Element.id @<string>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:modifierExtension @<Extension>*; # Extensions that cannot be ignored fhir:Bundle.link.relation @<string>; # http://www.iana.org/assignments/- # link-relations/link-relations.xh- # tml fhir:Bundle.link.url @<uri>; # Reference details for the link fhir:index xsd:integer? # Relative position in a list } # Transaction Related Information <Bundle.entry.request> CLOSED { fhir:Element.id @<string>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:modifierExtension @<Extension>*; # Extensions that cannot be ignored fhir:Bundle.entry.request.method @<code> AND {fhir:value @fhirvs:http-verb}; # GET | POST | PUT | DELETE fhir:Bundle.entry.request.url @<uri>; # URL for HTTP equivalent of this # entry fhir:Bundle.entry.request.ifNoneMatch @<string>?; # For managing cache currency fhir:Bundle.entry.request.ifModifiedSince @<instant>?; # For managing update contention fhir:Bundle.entry.request.ifMatch @<string>?; # For managing update contention fhir:Bundle.entry.request.ifNoneExist @<string>?; # For conditional creates fhir:index xsd:integer? # Relative position in a list } # Search related information <Bundle.entry.search> CLOSED { fhir:Element.id @<string>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:modifierExtension @<Extension>*; # Extensions that cannot be ignored fhir:Bundle.entry.search.mode @<code> AND {fhir:value @fhirvs:search-entry-mode}?; # match | include | outcome - why # this is in the result set fhir:Bundle.entry.search.score @<decimal>?; # Search ranking (between 0 and 1) fhir:index xsd:integer? # Relative position in a list } # Transaction Related Information <Bundle.entry.response> CLOSED { fhir:Element.id @<string>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:modifierExtension @<Extension>*; # Extensions that cannot be ignored fhir:Bundle.entry.response.status @<string>; # Status response code (text # optional) fhir:Bundle.entry.response.location @<uri>?; # The location, if the operation # returns a location fhir:Bundle.entry.response.etag @<string>?; # The etag for the resource (if # relevant) fhir:Bundle.entry.response.lastModified @<instant>?; # Server's date time modified fhir:Bundle.entry.response.outcome @<Resource>?; # OperationOutcome with hints and # warnings (for batch/transaction) fhir:index xsd:integer? # Relative position in a list } #---------------------- Data Types ------------------- <Extension> {fhir:extension @<Extension>*; fhir:index xsd:integer? } # Metadata about a resource <Meta> CLOSED { fhir:Element.id @<string>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:Meta.versionId @<id>?; # Version specific identifier fhir:Meta.lastUpdated @<instant>?; # When the resource version last # changed fhir:Meta.profile @<uri>*; # Profiles this resource claims to # conform to fhir:Meta.security @<Coding>*; # Security Labels applied to this # resource fhir:Meta.tag @<Coding>*; # Tags applied to this resource fhir:index xsd:integer? # Relative position in a list } # Primitive Type code <code> CLOSED { fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:string?; # Primitive value for code fhir:index xsd:integer? # Relative position in a list } # Primitive Type string <string> CLOSED { fhir:id @<id>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:string MAXLENGTH 1048576?; # Primitive value for string fhir:index xsd:integer? # Relative position in a list } # A digital Signature - XML DigSig, JWT, Graphical image of signature, etc. <Signature> CLOSED { fhir:Element.id @<string>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:Signature.type @<Coding>+; # Indication of the reason the # entity signed the object(s) fhir:Signature.when @<instant>; # When the signature was created ( # Who signed fhir:Signature.whoUri @<uri> | fhir:Signature.whoReference @<PractitionerReference> | fhir:Signature.whoReference @<RelatedPersonReference> | fhir:Signature.whoReference @<PatientReference> | fhir:Signature.whoReference @<DeviceReference> | fhir:Signature.whoReference @<OrganizationReference> ); ( # The party represented fhir:Signature.onBehalfOfUri @<uri> | fhir:Signature.onBehalfOfReference @<PractitionerReference> | fhir:Signature.onBehalfOfReference @<RelatedPersonReference> | fhir:Signature.onBehalfOfReference @<PatientReference> | fhir:Signature.onBehalfOfReference @<DeviceReference> | fhir:Signature.onBehalfOfReference @<OrganizationReference> )?; fhir:Signature.contentType @<code>?; # The technical format of the # signature fhir:Signature.blob @<base64Binary>?; # The actual signature content (XML # DigSig. JWT, picture, etc.) fhir:index xsd:integer? # Relative position in a list } # Primitive Type unsignedInt <unsignedInt> CLOSED { fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:nonNegativeInteger?; # Primitive value for unsignedInt fhir:index xsd:integer? # Relative position in a list } # Base Resource <Resource> {a .+; fhir:Resource.id @<id>?; # Logical id of this artifact fhir:Resource.meta @<Meta>?; # Metadata about the resource fhir:Resource.implicitRules @<uri>?; # A set of rules under which this # content was created fhir:Resource.language @<code>?; # Language of the resource content fhir:index xsd:integer? } # Primitive Type id <id> CLOSED { fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:string?; # Primitive value for id fhir:index xsd:integer? # Relative position in a list } # Primitive Type decimal <decimal> CLOSED { fhir:id @<id>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:decimal?; # Primitive value for decimal fhir:index xsd:integer? # Relative position in a list } # Primitive Type uri <uri> CLOSED { fhir:id @<id>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:string?; # Primitive value for uri fhir:index xsd:integer? # Relative position in a list } # Primitive Type instant <instant> CLOSED { fhir:id @<id>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:dateTime?; # Primitive value for instant fhir:index xsd:integer? # Relative position in a list } # A reference to a code defined by a terminology system <Coding> CLOSED { fhir:concept IRI?; fhir:Element.id @<string>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:Coding.system @<uri>?; # Identity of the terminology system fhir:Coding.version @<string>?; # Version of the system - if relevant fhir:Coding.code @<code>?; # Symbol in syntax defined by the # system fhir:Coding.display @<string>?; # Representation defined by the # system fhir:Coding.userSelected @<boolean>?; # If this coding was chosen directly # by the user fhir:index xsd:integer? # Relative position in a list } # Primitive Type base64Binary <base64Binary> CLOSED { fhir:id @<id>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:base64Binary?; # Primitive value for base64Binary fhir:index xsd:integer? # Relative position in a list } # Primitive Type boolean <boolean> CLOSED { fhir:id @<id>?; # xml:id (or equivalent in JSON) fhir:extension @<Extension>*; # Additional Content defined by # implementations fhir:value xsd:boolean?; # Primitive value for boolean fhir:index xsd:integer? # Relative position in a list } #---------------------- Reference Types ------------------- <PractitionerReference> CLOSED { fhir:Element.id @<id>?; fhir:extension @<Extension>*; fhir:link @<Practitioner> OR CLOSED {a fhir:Practitioner}?; fhir:Reference.reference @<string>?; fhir:Reference.display @<string>?; fhir:index xsd:integer? } <OrganizationReference> CLOSED { fhir:Element.id @<id>?; fhir:extension @<Extension>*; fhir:link @<Organization> OR CLOSED {a fhir:Organization}?; fhir:Reference.reference @<string>?; fhir:Reference.display @<string>?; fhir:index xsd:integer? } <DeviceReference> CLOSED { fhir:Element.id @<id>?; fhir:extension @<Extension>*; fhir:link @<Device> OR CLOSED {a fhir:Device}?; fhir:Reference.reference @<string>?; fhir:Reference.display @<string>?; fhir:index xsd:integer? } <PatientReference> CLOSED { fhir:Element.id @<id>?; fhir:extension @<Extension>*; fhir:link @<Patient> OR CLOSED {a fhir:Patient}?; fhir:Reference.reference @<string>?; fhir:Reference.display @<string>?; fhir:index xsd:integer? } <RelatedPersonReference> CLOSED { fhir:Element.id @<id>?; fhir:extension @<Extension>*; fhir:link @<RelatedPerson> OR CLOSED {a fhir:RelatedPerson}?; fhir:Reference.reference @<string>?; fhir:Reference.display @<string>?; fhir:index xsd:integer? } #---------------------- Value Sets ------------------------ # HTTP verbs (in the HTTP command line). @fhirvs:http-verb = ["GET" "POST" "PUT" "DELETE"] # Indicates the purpose of a bundle - how it was intended to be used. @fhirvs:bundle-type = ["document" "message" "transaction" "transaction-response" "batch" "batch-response" "history" "searchset" "collection"] # Why an entry is in the result set - whether it's included as a match or because of an _include requirement. @fhirvs:search-entry-mode = ["match" "include" "outcome"]
Usage note: every effort has been made to ensure that the ShEx files are correct and useful, but they are not a normative part of the specification.