SMART Health Cards: Vaccination & Testing Implementation Guide
1.0.0 - STU1 Release International flag

SMART Health Cards: Vaccination & Testing Implementation Guide, published by HL7 International / Public Health. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-shc-vaccination-ig/ and changes regularly. See the Directory of published versions

Resource Profile: COVID-19-specific Laboratory Test Results Bundle - Data Minimization

Official URL: http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-covid19-laboratory-bundle-dm Version: 1.0.0
Draft as of 2024-12-04 Computable Name: SHCCovid19LaboratoryBundleDM

Defines a primary (DM) profile representing a bundle of patient and COVID-19 laboratory testing data for health cards.

See here for implementation details.

Start here!
Profile Group: Bundles

Description:

Defines the contents of the fhirBundle element in a SMART Health Card for a given use case.

Primary profile (DM) Fallback profile (AD) Scope of profile pair
Immunization Bundle Fallback Immunization for any infectious disease
COVID-19 Labs Bundle Fallback Lab results for COVID-19 only
Generic Labs Bundle Fallback Lab results for any infections disease
For more information about the types of profiles in this IG, see the profiles page.

Usage:

  • This Resource Profile is not used by any profiles in this Implementation Guide

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from Bundle

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle 0..* Bundle Contains a collection of resources
... id C 0..0
... meta 0..0
... implicitRules 0..0
... identifier 0..0
... type S 1..1 code document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Fixed Value: collection
... timestamp 0..0
... total 0..0
... link 0..0
... Slices for entry S 2..* BackboneElement Entry in the bundle - will have a resource or information
Slice: Unordered, Closed by type:resource
.... entry:All Slices Content/Rules for all slices
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... link 0..0
..... fullUrl S 1..1 uri Locally unique identifier like resource:0
..... resource S 0..1 Resource A resource in the bundle
..... search 0..0
..... request 0..0
..... response 0..0
.... entry:patient S 1..1 BackboneElement Patient
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... link 0..0
..... fullUrl SC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCPatientGeneralDM Information about an individual receiving an individual receiving a vaccination or infectious disease-related laboratory test
..... search 0..0
..... request 0..0
..... response 0..0
.... entry:labResult SC 1..* BackboneElement Laboratory result
vc-bundle-lab-status-complete: Bundle SHALL only include results with status final or status that is subsequent to final.
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... link 0..0
..... fullUrl SC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCCovid19LaboratoryResultObservationDM Measurements and simple assertions
..... search 0..0
..... request 0..0
..... response 0..0
... signature 0..0

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
vc-bundle-lab-status-completeerrorBundle.entry:labResultBundle SHALL only include results with status final or status that is subsequent to final.
: $this.resource.ofType(Observation).status.lower() in ('final'|'amended'|'corrected')
vc-shall-be-resource-urierrorBundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrlIDs SHALL use resource:# format
: $this.matches('^resource:[0-9]+$')
NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle C 0..* Bundle Contains a collection of resources
bdl-1: total only when a search or history
bdl-2: entry.search only when a search
bdl-3: entry.request mandatory for batch/transaction/history, otherwise prohibited
bdl-4: entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited
bdl-7: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles)
bdl-9: A document must have an identifier with a system and a value
bdl-10: A document must have a date
bdl-11: A document must have a Composition as the first resource
bdl-12: A message must have a MessageHeader as the first resource
... type SΣ 1..1 code document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Binding: BundleType (required): Indicates the purpose of a bundle - how it is intended to be used.


Fixed Value: collection
... Slices for entry SΣC 2..* BackboneElement Entry in the bundle - will have a resource or information
Slice: Unordered, Closed by type:resource
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
.... entry:All Slices Content/Rules for all slices
..... fullUrl SΣ 1..1 uri Locally unique identifier like resource:0
..... resource SΣ 0..1 Resource A resource in the bundle
.... entry:patient SΣC 1..1 BackboneElement Patient
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
..... fullUrl SΣC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCPatientGeneralDM Information about an individual receiving an individual receiving a vaccination or infectious disease-related laboratory test
.... entry:labResult SΣC 1..* BackboneElement Laboratory result
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
vc-bundle-lab-status-complete: Bundle SHALL only include results with status final or status that is subsequent to final.
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
..... fullUrl SΣC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCCovid19LaboratoryResultObservationDM Measurements and simple assertions

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Bundle.typerequiredFixed Value: collection
http://hl7.org/fhir/ValueSet/bundle-type|4.0.1
from the FHIR Standard
Bundle.entry.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard
Bundle.entry:patient.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard
Bundle.entry:labResult.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
bdl-1errorBundletotal only when a search or history
: total.empty() or (type = 'searchset') or (type = 'history')
bdl-2errorBundleentry.search only when a search
: entry.search.empty() or (type = 'searchset')
bdl-3errorBundleentry.request mandatory for batch/transaction/history, otherwise prohibited
: entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4errorBundleentry.response mandatory for batch-response/transaction-response/history, otherwise prohibited
: entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))
bdl-5errorBundle.entry, Bundle.entry:patient, Bundle.entry:labResultmust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
bdl-7errorBundleFullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles)
: (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8errorBundle.entry, Bundle.entry:patient, Bundle.entry:labResultfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
bdl-9errorBundleA document must have an identifier with a system and a value
: type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10errorBundleA document must have a date
: type = 'document' implies (timestamp.hasValue())
bdl-11errorBundleA document must have a Composition as the first resource
: type = 'document' implies entry.first().resource.is(Composition)
bdl-12errorBundleA message must have a MessageHeader as the first resource
: type = 'message' implies entry.first().resource.is(MessageHeader)
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
vc-bundle-lab-status-completeerrorBundle.entry:labResultBundle SHALL only include results with status final or status that is subsequent to final.
: $this.resource.ofType(Observation).status.lower() in ('final'|'amended'|'corrected')
vc-shall-be-resource-urierrorBundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrlIDs SHALL use resource:# format
: $this.matches('^resource:[0-9]+$')
NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle C 0..* Bundle Contains a collection of resources
bdl-1: total only when a search or history
bdl-2: entry.search only when a search
bdl-3: entry.request mandatory for batch/transaction/history, otherwise prohibited
bdl-4: entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited
bdl-7: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles)
bdl-9: A document must have an identifier with a system and a value
bdl-10: A document must have a date
bdl-11: A document must have a Composition as the first resource
bdl-12: A message must have a MessageHeader as the first resource
... type SΣ 1..1 code document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Binding: BundleType (required): Indicates the purpose of a bundle - how it is intended to be used.


Fixed Value: collection
... Slices for entry SΣC 2..* BackboneElement Entry in the bundle - will have a resource or information
Slice: Unordered, Closed by type:resource
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
.... entry:All Slices Content/Rules for all slices
..... fullUrl SΣ 1..1 uri Locally unique identifier like resource:0
..... resource SΣ 0..1 Resource A resource in the bundle
.... entry:patient SΣC 1..1 BackboneElement Patient
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
..... fullUrl SΣC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCPatientGeneralDM Information about an individual receiving an individual receiving a vaccination or infectious disease-related laboratory test
.... entry:labResult SΣC 1..* BackboneElement Laboratory result
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
vc-bundle-lab-status-complete: Bundle SHALL only include results with status final or status that is subsequent to final.
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
..... fullUrl SΣC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCCovid19LaboratoryResultObservationDM Measurements and simple assertions

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Bundle.typerequiredFixed Value: collection
http://hl7.org/fhir/ValueSet/bundle-type|4.0.1
from the FHIR Standard
Bundle.entry.search.moderequiredSearchEntryMode
http://hl7.org/fhir/ValueSet/search-entry-mode|4.0.1
from the FHIR Standard
Bundle.entry.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard
Bundle.entry:patient.search.moderequiredSearchEntryMode
http://hl7.org/fhir/ValueSet/search-entry-mode|4.0.1
from the FHIR Standard
Bundle.entry:patient.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard
Bundle.entry:labResult.search.moderequiredSearchEntryMode
http://hl7.org/fhir/ValueSet/search-entry-mode|4.0.1
from the FHIR Standard
Bundle.entry:labResult.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
bdl-1errorBundletotal only when a search or history
: total.empty() or (type = 'searchset') or (type = 'history')
bdl-2errorBundleentry.search only when a search
: entry.search.empty() or (type = 'searchset')
bdl-3errorBundleentry.request mandatory for batch/transaction/history, otherwise prohibited
: entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4errorBundleentry.response mandatory for batch-response/transaction-response/history, otherwise prohibited
: entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))
bdl-5errorBundle.entry, Bundle.entry:patient, Bundle.entry:labResultmust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
bdl-7errorBundleFullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles)
: (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8errorBundle.entry, Bundle.entry:patient, Bundle.entry:labResultfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
bdl-9errorBundleA document must have an identifier with a system and a value
: type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10errorBundleA document must have a date
: type = 'document' implies (timestamp.hasValue())
bdl-11errorBundleA document must have a Composition as the first resource
: type = 'document' implies entry.first().resource.is(Composition)
bdl-12errorBundleA message must have a MessageHeader as the first resource
: type = 'message' implies entry.first().resource.is(MessageHeader)
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
vc-bundle-lab-status-completeerrorBundle.entry:labResultBundle SHALL only include results with status final or status that is subsequent to final.
: $this.resource.ofType(Observation).status.lower() in ('final'|'amended'|'corrected')
vc-shall-be-resource-urierrorBundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrlIDs SHALL use resource:# format
: $this.matches('^resource:[0-9]+$')

This structure is derived from Bundle

Summary

Mandatory: 7 elements
Must-Support: 8 elements
Fixed: 1 element
Prohibited: 30 elements

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Bundle.entry (Closed)

Differential View

This structure is derived from Bundle

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle 0..* Bundle Contains a collection of resources
... id C 0..0
... meta 0..0
... implicitRules 0..0
... identifier 0..0
... type S 1..1 code document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Fixed Value: collection
... timestamp 0..0
... total 0..0
... link 0..0
... Slices for entry S 2..* BackboneElement Entry in the bundle - will have a resource or information
Slice: Unordered, Closed by type:resource
.... entry:All Slices Content/Rules for all slices
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... link 0..0
..... fullUrl S 1..1 uri Locally unique identifier like resource:0
..... resource S 0..1 Resource A resource in the bundle
..... search 0..0
..... request 0..0
..... response 0..0
.... entry:patient S 1..1 BackboneElement Patient
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... link 0..0
..... fullUrl SC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCPatientGeneralDM Information about an individual receiving an individual receiving a vaccination or infectious disease-related laboratory test
..... search 0..0
..... request 0..0
..... response 0..0
.... entry:labResult SC 1..* BackboneElement Laboratory result
vc-bundle-lab-status-complete: Bundle SHALL only include results with status final or status that is subsequent to final.
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... link 0..0
..... fullUrl SC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCCovid19LaboratoryResultObservationDM Measurements and simple assertions
..... search 0..0
..... request 0..0
..... response 0..0
... signature 0..0

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
vc-bundle-lab-status-completeerrorBundle.entry:labResultBundle SHALL only include results with status final or status that is subsequent to final.
: $this.resource.ofType(Observation).status.lower() in ('final'|'amended'|'corrected')
vc-shall-be-resource-urierrorBundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrlIDs SHALL use resource:# format
: $this.matches('^resource:[0-9]+$')

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle C 0..* Bundle Contains a collection of resources
bdl-1: total only when a search or history
bdl-2: entry.search only when a search
bdl-3: entry.request mandatory for batch/transaction/history, otherwise prohibited
bdl-4: entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited
bdl-7: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles)
bdl-9: A document must have an identifier with a system and a value
bdl-10: A document must have a date
bdl-11: A document must have a Composition as the first resource
bdl-12: A message must have a MessageHeader as the first resource
... type SΣ 1..1 code document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Binding: BundleType (required): Indicates the purpose of a bundle - how it is intended to be used.


Fixed Value: collection
... Slices for entry SΣC 2..* BackboneElement Entry in the bundle - will have a resource or information
Slice: Unordered, Closed by type:resource
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
.... entry:All Slices Content/Rules for all slices
..... fullUrl SΣ 1..1 uri Locally unique identifier like resource:0
..... resource SΣ 0..1 Resource A resource in the bundle
.... entry:patient SΣC 1..1 BackboneElement Patient
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
..... fullUrl SΣC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCPatientGeneralDM Information about an individual receiving an individual receiving a vaccination or infectious disease-related laboratory test
.... entry:labResult SΣC 1..* BackboneElement Laboratory result
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
vc-bundle-lab-status-complete: Bundle SHALL only include results with status final or status that is subsequent to final.
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
..... fullUrl SΣC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCCovid19LaboratoryResultObservationDM Measurements and simple assertions

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Bundle.typerequiredFixed Value: collection
http://hl7.org/fhir/ValueSet/bundle-type|4.0.1
from the FHIR Standard
Bundle.entry.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard
Bundle.entry:patient.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard
Bundle.entry:labResult.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
bdl-1errorBundletotal only when a search or history
: total.empty() or (type = 'searchset') or (type = 'history')
bdl-2errorBundleentry.search only when a search
: entry.search.empty() or (type = 'searchset')
bdl-3errorBundleentry.request mandatory for batch/transaction/history, otherwise prohibited
: entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4errorBundleentry.response mandatory for batch-response/transaction-response/history, otherwise prohibited
: entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))
bdl-5errorBundle.entry, Bundle.entry:patient, Bundle.entry:labResultmust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
bdl-7errorBundleFullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles)
: (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8errorBundle.entry, Bundle.entry:patient, Bundle.entry:labResultfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
bdl-9errorBundleA document must have an identifier with a system and a value
: type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10errorBundleA document must have a date
: type = 'document' implies (timestamp.hasValue())
bdl-11errorBundleA document must have a Composition as the first resource
: type = 'document' implies entry.first().resource.is(Composition)
bdl-12errorBundleA message must have a MessageHeader as the first resource
: type = 'message' implies entry.first().resource.is(MessageHeader)
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
vc-bundle-lab-status-completeerrorBundle.entry:labResultBundle SHALL only include results with status final or status that is subsequent to final.
: $this.resource.ofType(Observation).status.lower() in ('final'|'amended'|'corrected')
vc-shall-be-resource-urierrorBundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrlIDs SHALL use resource:# format
: $this.matches('^resource:[0-9]+$')

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle C 0..* Bundle Contains a collection of resources
bdl-1: total only when a search or history
bdl-2: entry.search only when a search
bdl-3: entry.request mandatory for batch/transaction/history, otherwise prohibited
bdl-4: entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited
bdl-7: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles)
bdl-9: A document must have an identifier with a system and a value
bdl-10: A document must have a date
bdl-11: A document must have a Composition as the first resource
bdl-12: A message must have a MessageHeader as the first resource
... type SΣ 1..1 code document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Binding: BundleType (required): Indicates the purpose of a bundle - how it is intended to be used.


Fixed Value: collection
... Slices for entry SΣC 2..* BackboneElement Entry in the bundle - will have a resource or information
Slice: Unordered, Closed by type:resource
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
.... entry:All Slices Content/Rules for all slices
..... fullUrl SΣ 1..1 uri Locally unique identifier like resource:0
..... resource SΣ 0..1 Resource A resource in the bundle
.... entry:patient SΣC 1..1 BackboneElement Patient
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
..... fullUrl SΣC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCPatientGeneralDM Information about an individual receiving an individual receiving a vaccination or infectious disease-related laboratory test
.... entry:labResult SΣC 1..* BackboneElement Laboratory result
bdl-5: must be a resource unless there's a request or response
bdl-8: fullUrl cannot be a version specific reference
vc-bundle-lab-status-complete: Bundle SHALL only include results with status final or status that is subsequent to final.
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
..... fullUrl SΣC 1..1 uri Locally unique identifier like resource:0
vc-shall-be-resource-uri: IDs SHALL use resource:# format
..... resource 1..1 SHCCovid19LaboratoryResultObservationDM Measurements and simple assertions

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Bundle.typerequiredFixed Value: collection
http://hl7.org/fhir/ValueSet/bundle-type|4.0.1
from the FHIR Standard
Bundle.entry.search.moderequiredSearchEntryMode
http://hl7.org/fhir/ValueSet/search-entry-mode|4.0.1
from the FHIR Standard
Bundle.entry.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard
Bundle.entry:patient.search.moderequiredSearchEntryMode
http://hl7.org/fhir/ValueSet/search-entry-mode|4.0.1
from the FHIR Standard
Bundle.entry:patient.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard
Bundle.entry:labResult.search.moderequiredSearchEntryMode
http://hl7.org/fhir/ValueSet/search-entry-mode|4.0.1
from the FHIR Standard
Bundle.entry:labResult.request.methodrequiredHTTPVerb
http://hl7.org/fhir/ValueSet/http-verb|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
bdl-1errorBundletotal only when a search or history
: total.empty() or (type = 'searchset') or (type = 'history')
bdl-2errorBundleentry.search only when a search
: entry.search.empty() or (type = 'searchset')
bdl-3errorBundleentry.request mandatory for batch/transaction/history, otherwise prohibited
: entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4errorBundleentry.response mandatory for batch-response/transaction-response/history, otherwise prohibited
: entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))
bdl-5errorBundle.entry, Bundle.entry:patient, Bundle.entry:labResultmust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
bdl-7errorBundleFullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles)
: (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8errorBundle.entry, Bundle.entry:patient, Bundle.entry:labResultfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
bdl-9errorBundleA document must have an identifier with a system and a value
: type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10errorBundleA document must have a date
: type = 'document' implies (timestamp.hasValue())
bdl-11errorBundleA document must have a Composition as the first resource
: type = 'document' implies entry.first().resource.is(Composition)
bdl-12errorBundleA message must have a MessageHeader as the first resource
: type = 'message' implies entry.first().resource.is(MessageHeader)
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
vc-bundle-lab-status-completeerrorBundle.entry:labResultBundle SHALL only include results with status final or status that is subsequent to final.
: $this.resource.ofType(Observation).status.lower() in ('final'|'amended'|'corrected')
vc-shall-be-resource-urierrorBundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrlIDs SHALL use resource:# format
: $this.matches('^resource:[0-9]+$')

This structure is derived from Bundle

Summary

Mandatory: 7 elements
Must-Support: 8 elements
Fixed: 1 element
Prohibited: 30 elements

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Bundle.entry (Closed)

 

Other representations of profile: CSV, Excel, Schematron