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
Official URL: http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-covid19-laboratory-bundle-dm | Version: 1.0.0 | |||
Draft as of 2023-12-27 | 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.
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 |
Usage:
Description of Profiles, Differentials, Snapshots and how the different presentations work.
This structure is derived from Bundle
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Bundle | 0..* | Bundle | Contains a collection of resources | |
id | C | 0..0 | ||
meta | 0..0 | |||
implicitRules | 0..0 | |||
language | 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 | |||
Documentation for this format |
Id | Grade | Path(s) | Details | Requirements |
vc-bundle-lab-status-complete | error | Bundle.entry:labResult | Bundle 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-uri | error | Bundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrl | IDs SHALL use resource:# format : $this.matches('^resource:[0-9]+$') |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Bundle | C | 0..* | Bundle | Contains a collection of resources |
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 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 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 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 | C | 1..1 | SHCCovid19LaboratoryResultObservationDM | Measurements and simple assertions |
Documentation for this format |
Path | Conformance | ValueSet / Code |
Bundle.type | required | Fixed Value: collection |
Bundle.entry.request.method | required | HTTPVerb |
Bundle.entry:patient.request.method | required | HTTPVerb |
Bundle.entry:labResult.request.method | required | HTTPVerb |
Id | Grade | Path(s) | Details | Requirements |
bdl-1 | error | Bundle | total only when a search or history : total.empty() or (type = 'searchset') or (type = 'history') | |
bdl-2 | error | Bundle | entry.search only when a search : entry.search.empty() or (type = 'searchset') | |
bdl-3 | error | Bundle | entry.request mandatory for batch/transaction/history, otherwise prohibited : entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history')) | |
bdl-4 | error | Bundle | entry.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-5 | error | Bundle.entry, Bundle.entry:patient, Bundle.entry:labResult | must be a resource unless there's a request or response : resource.exists() or request.exists() or response.exists() | |
bdl-7 | error | Bundle | FullUrl 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-8 | error | Bundle.entry, Bundle.entry:patient, Bundle.entry:labResult | fullUrl cannot be a version specific reference : fullUrl.contains('/_history/').not() | |
bdl-9 | error | Bundle | A document must have an identifier with a system and a value : type = 'document' implies (identifier.system.exists() and identifier.value.exists()) | |
bdl-10 | error | Bundle | A document must have a date : type = 'document' implies (timestamp.hasValue()) | |
bdl-11 | error | Bundle | A document must have a Composition as the first resource : type = 'document' implies entry.first().resource.is(Composition) | |
bdl-12 | error | Bundle | A message must have a MessageHeader as the first resource : type = 'message' implies entry.first().resource.is(MessageHeader) | |
dom-2 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
obs-6 | error | Bundle.entry:labResult.resource | dataAbsentReason SHALL only be present if Observation.value[x] is not present : dataAbsentReason.empty() or value.empty() | |
obs-7 | error | Bundle.entry:labResult.resource | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present : value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty() | |
vc-bundle-lab-status-complete | error | Bundle.entry:labResult | Bundle 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-uri | error | Bundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrl | IDs SHALL use resource:# format : $this.matches('^resource:[0-9]+$') |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Bundle | C | 0..* | Bundle | Contains a collection of resources |
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 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 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 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 | C | 1..1 | SHCCovid19LaboratoryResultObservationDM | Measurements and simple assertions |
Documentation for this format |
Path | Conformance | ValueSet / Code |
Bundle.type | required | Fixed Value: collection |
Bundle.entry.search.mode | required | SearchEntryMode |
Bundle.entry.request.method | required | HTTPVerb |
Bundle.entry:patient.search.mode | required | SearchEntryMode |
Bundle.entry:patient.request.method | required | HTTPVerb |
Bundle.entry:labResult.search.mode | required | SearchEntryMode |
Bundle.entry:labResult.request.method | required | HTTPVerb |
Id | Grade | Path(s) | Details | Requirements |
bdl-1 | error | Bundle | total only when a search or history : total.empty() or (type = 'searchset') or (type = 'history') | |
bdl-2 | error | Bundle | entry.search only when a search : entry.search.empty() or (type = 'searchset') | |
bdl-3 | error | Bundle | entry.request mandatory for batch/transaction/history, otherwise prohibited : entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history')) | |
bdl-4 | error | Bundle | entry.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-5 | error | Bundle.entry, Bundle.entry:patient, Bundle.entry:labResult | must be a resource unless there's a request or response : resource.exists() or request.exists() or response.exists() | |
bdl-7 | error | Bundle | FullUrl 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-8 | error | Bundle.entry, Bundle.entry:patient, Bundle.entry:labResult | fullUrl cannot be a version specific reference : fullUrl.contains('/_history/').not() | |
bdl-9 | error | Bundle | A document must have an identifier with a system and a value : type = 'document' implies (identifier.system.exists() and identifier.value.exists()) | |
bdl-10 | error | Bundle | A document must have a date : type = 'document' implies (timestamp.hasValue()) | |
bdl-11 | error | Bundle | A document must have a Composition as the first resource : type = 'document' implies entry.first().resource.is(Composition) | |
bdl-12 | error | Bundle | A message must have a MessageHeader as the first resource : type = 'message' implies entry.first().resource.is(MessageHeader) | |
dom-2 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
obs-6 | error | Bundle.entry:labResult.resource | dataAbsentReason SHALL only be present if Observation.value[x] is not present : dataAbsentReason.empty() or value.empty() | |
obs-7 | error | Bundle.entry:labResult.resource | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present : value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty() | |
vc-bundle-lab-status-complete | error | Bundle.entry:labResult | Bundle 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-uri | error | Bundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrl | IDs SHALL use resource:# format : $this.matches('^resource:[0-9]+$') |
This structure is derived from Bundle
Summary
Mandatory: 7 elements
Must-Support: 8 elements
Fixed Value: 1 element
Prohibited: 30 elements
Structures
This structure refers to these other structures:
Slices
This structure defines the following Slices:
Differential View
This structure is derived from Bundle
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Bundle | 0..* | Bundle | Contains a collection of resources | |
id | C | 0..0 | ||
meta | 0..0 | |||
implicitRules | 0..0 | |||
language | 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 | |||
Documentation for this format |
Id | Grade | Path(s) | Details | Requirements |
vc-bundle-lab-status-complete | error | Bundle.entry:labResult | Bundle 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-uri | error | Bundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrl | IDs SHALL use resource:# format : $this.matches('^resource:[0-9]+$') |
Key Elements View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Bundle | C | 0..* | Bundle | Contains a collection of resources |
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 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 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 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 | C | 1..1 | SHCCovid19LaboratoryResultObservationDM | Measurements and simple assertions |
Documentation for this format |
Path | Conformance | ValueSet / Code |
Bundle.type | required | Fixed Value: collection |
Bundle.entry.request.method | required | HTTPVerb |
Bundle.entry:patient.request.method | required | HTTPVerb |
Bundle.entry:labResult.request.method | required | HTTPVerb |
Id | Grade | Path(s) | Details | Requirements |
bdl-1 | error | Bundle | total only when a search or history : total.empty() or (type = 'searchset') or (type = 'history') | |
bdl-2 | error | Bundle | entry.search only when a search : entry.search.empty() or (type = 'searchset') | |
bdl-3 | error | Bundle | entry.request mandatory for batch/transaction/history, otherwise prohibited : entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history')) | |
bdl-4 | error | Bundle | entry.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-5 | error | Bundle.entry, Bundle.entry:patient, Bundle.entry:labResult | must be a resource unless there's a request or response : resource.exists() or request.exists() or response.exists() | |
bdl-7 | error | Bundle | FullUrl 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-8 | error | Bundle.entry, Bundle.entry:patient, Bundle.entry:labResult | fullUrl cannot be a version specific reference : fullUrl.contains('/_history/').not() | |
bdl-9 | error | Bundle | A document must have an identifier with a system and a value : type = 'document' implies (identifier.system.exists() and identifier.value.exists()) | |
bdl-10 | error | Bundle | A document must have a date : type = 'document' implies (timestamp.hasValue()) | |
bdl-11 | error | Bundle | A document must have a Composition as the first resource : type = 'document' implies entry.first().resource.is(Composition) | |
bdl-12 | error | Bundle | A message must have a MessageHeader as the first resource : type = 'message' implies entry.first().resource.is(MessageHeader) | |
dom-2 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
obs-6 | error | Bundle.entry:labResult.resource | dataAbsentReason SHALL only be present if Observation.value[x] is not present : dataAbsentReason.empty() or value.empty() | |
obs-7 | error | Bundle.entry:labResult.resource | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present : value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty() | |
vc-bundle-lab-status-complete | error | Bundle.entry:labResult | Bundle 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-uri | error | Bundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrl | IDs SHALL use resource:# format : $this.matches('^resource:[0-9]+$') |
Snapshot View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Bundle | C | 0..* | Bundle | Contains a collection of resources |
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 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 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 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 | C | 1..1 | SHCCovid19LaboratoryResultObservationDM | Measurements and simple assertions |
Documentation for this format |
Path | Conformance | ValueSet / Code |
Bundle.type | required | Fixed Value: collection |
Bundle.entry.search.mode | required | SearchEntryMode |
Bundle.entry.request.method | required | HTTPVerb |
Bundle.entry:patient.search.mode | required | SearchEntryMode |
Bundle.entry:patient.request.method | required | HTTPVerb |
Bundle.entry:labResult.search.mode | required | SearchEntryMode |
Bundle.entry:labResult.request.method | required | HTTPVerb |
Id | Grade | Path(s) | Details | Requirements |
bdl-1 | error | Bundle | total only when a search or history : total.empty() or (type = 'searchset') or (type = 'history') | |
bdl-2 | error | Bundle | entry.search only when a search : entry.search.empty() or (type = 'searchset') | |
bdl-3 | error | Bundle | entry.request mandatory for batch/transaction/history, otherwise prohibited : entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history')) | |
bdl-4 | error | Bundle | entry.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-5 | error | Bundle.entry, Bundle.entry:patient, Bundle.entry:labResult | must be a resource unless there's a request or response : resource.exists() or request.exists() or response.exists() | |
bdl-7 | error | Bundle | FullUrl 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-8 | error | Bundle.entry, Bundle.entry:patient, Bundle.entry:labResult | fullUrl cannot be a version specific reference : fullUrl.contains('/_history/').not() | |
bdl-9 | error | Bundle | A document must have an identifier with a system and a value : type = 'document' implies (identifier.system.exists() and identifier.value.exists()) | |
bdl-10 | error | Bundle | A document must have a date : type = 'document' implies (timestamp.hasValue()) | |
bdl-11 | error | Bundle | A document must have a Composition as the first resource : type = 'document' implies entry.first().resource.is(Composition) | |
bdl-12 | error | Bundle | A message must have a MessageHeader as the first resource : type = 'message' implies entry.first().resource.is(MessageHeader) | |
dom-2 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-3 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() | |
dom-4 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-5 | error | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() | |
dom-6 | best practice | Bundle.entry:patient.resource, Bundle.entry:labResult.resource | A resource should have narrative for robust management : text.`div`.exists() | |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
obs-6 | error | Bundle.entry:labResult.resource | dataAbsentReason SHALL only be present if Observation.value[x] is not present : dataAbsentReason.empty() or value.empty() | |
obs-7 | error | Bundle.entry:labResult.resource | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present : value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty() | |
vc-bundle-lab-status-complete | error | Bundle.entry:labResult | Bundle 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-uri | error | Bundle.entry:patient.fullUrl, Bundle.entry:labResult.fullUrl | IDs SHALL use resource:# format : $this.matches('^resource:[0-9]+$') |
This structure is derived from Bundle
Summary
Mandatory: 7 elements
Must-Support: 8 elements
Fixed Value: 1 element
Prohibited: 30 elements
Structures
This structure refers to these other structures:
Slices
This structure defines the following Slices:
Other representations of profile: CSV, Excel, Schematron