Da Vinci - Payer Coverage Decision Exchange
0.1.0 - STU Ballot

This page is part of the Da Vinci Payer Coverage Decision Exchange (PCDE) FHIR IG (v0.1.0: STU 1 Ballot 1) based on FHIR R4. The current version which supercedes this version is 1.0.0. For a full list of available versions, see the Directory of published versions

StructureDefinition: PCDEBundle

The official URL for this profile is:

http://hl7.org/fhir/us/davinci-pcde/StructureDefinition/profile-pcde-bundle

Formal Views of Profile Content

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

This structure is derived from Bundle

Summary

Mandatory: 0 element (5 nested mandatory elements)
Must-Support: 6 elements
Fixed Value: 1 element
Prohibited: 6 elements

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element Bundle.entry is sliced based on the value of value:resource

This structure is derived from Bundle

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle
... type codeFixed Value: document
... entry S(Slice Definition)Slice: Unordered, Open by value:resource
.... (All Slices) Content/Rules for all slices
..... fullUrl S1..1
..... resource S1..1
..... search 0..0
..... request 0..0
..... response 0..0
.... Composition S1..1
..... fullUrl S1..1
..... resource S1..1PCDEComposition
..... search 0..0
..... request 0..0
..... response 0..0

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle I0..*Contains a collection of resources
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages
... identifier Σ0..1IdentifierPersistent identifier for the bundle
... type Σ1..1codedocument | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Binding: BundleType (required)
Fixed Value: document
... timestamp Σ0..1instantWhen the bundle was assembled
... total ΣI0..1unsignedIntIf search, the total number of matches
... link ΣI0..*BackboneElementLinks related to this Bundle
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... relation Σ1..1stringSee http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1
.... url Σ1..1uriReference details for the link
... entry SΣI(Slice Definition)Entry in the bundle - will have a resource or information
Slice: Unordered, Open by value: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
.... (All Slices) Content/Rules for all slices
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... link Σ0..*Unknown reference to #Bundle.link
Links related to this entry
..... fullUrl SΣ1..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
..... resource SΣ1..1ResourceA resource in the bundle
.... Composition SΣI1..1BackboneElementEntry in the bundle - will have a resource or information
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
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... link Σ0..*Unknown reference to #Bundle.link
Links related to this entry
..... fullUrl SΣ1..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
..... resource SI1..1PCDECompositionA set of resources composed into a single coherent clinical statement with clinical attestation
... signature Σ0..1SignatureDigital Signature

doco Documentation for this format

This structure is derived from Bundle

Summary

Mandatory: 0 element (5 nested mandatory elements)
Must-Support: 6 elements
Fixed Value: 1 element
Prohibited: 6 elements

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element Bundle.entry is sliced based on the value of value:resource

Differential View

This structure is derived from Bundle

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle
... type codeFixed Value: document
... entry S(Slice Definition)Slice: Unordered, Open by value:resource
.... (All Slices) Content/Rules for all slices
..... fullUrl S1..1
..... resource S1..1
..... search 0..0
..... request 0..0
..... response 0..0
.... Composition S1..1
..... fullUrl S1..1
..... resource S1..1PCDEComposition
..... search 0..0
..... request 0..0
..... response 0..0

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle I0..*Contains a collection of resources
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred)
Max Binding: AllLanguages
... identifier Σ0..1IdentifierPersistent identifier for the bundle
... type Σ1..1codedocument | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Binding: BundleType (required)
Fixed Value: document
... timestamp Σ0..1instantWhen the bundle was assembled
... total ΣI0..1unsignedIntIf search, the total number of matches
... link ΣI0..*BackboneElementLinks related to this Bundle
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... relation Σ1..1stringSee http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1
.... url Σ1..1uriReference details for the link
... entry SΣI(Slice Definition)Entry in the bundle - will have a resource or information
Slice: Unordered, Open by value: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
.... (All Slices) Content/Rules for all slices
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... link Σ0..*Unknown reference to #Bundle.link
Links related to this entry
..... fullUrl SΣ1..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
..... resource SΣ1..1ResourceA resource in the bundle
.... Composition SΣI1..1BackboneElementEntry in the bundle - will have a resource or information
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
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... link Σ0..*Unknown reference to #Bundle.link
Links related to this entry
..... fullUrl SΣ1..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
..... resource SI1..1PCDECompositionA set of resources composed into a single coherent clinical statement with clinical attestation
... signature Σ0..1SignatureDigital Signature

doco Documentation for this format

 

Other representations of profile: Schematron

Terminology Bindings

PathConformanceValueSet / Code
Bundle.languagepreferredCommonLanguages
Max Binding: AllLanguages
Bundle.typerequiredFixed Value: document
Bundle.entry.search.moderequiredSearchEntryMode
Bundle.entry.request.methodrequiredHTTPVerb
Bundle.entry:Composition.search.moderequiredSearchEntryMode
Bundle.entry:Composition.request.methodrequiredHTTPVerb

Constraints

IdPathDetailsRequirements
bdl-7BundleFullUrl 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-9BundleA document must have an identifier with a system and a value
: type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-3Bundleentry.request mandatory for batch/transaction/history, otherwise prohibited
: entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4Bundleentry.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-12BundleA message must have a MessageHeader as the first resource
: type = 'message' implies entry.first().resource.is(MessageHeader)
bdl-1Bundletotal only when a search or history
: total.empty() or (type = 'searchset') or (type = 'history')
bdl-2Bundleentry.search only when a search
: entry.search.empty() or (type = 'searchset')
bdl-11BundleA document must have a Composition as the first resource
: type = 'document' implies entry.first().resource.is(Composition)
bdl-10BundleA document must have a date
: type = 'document' implies (meta.lastUpdated.hasValue())
ele-1Bundle.linkAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
bdl-8Bundle.entryfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
bdl-5Bundle.entrymust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
dom-2Bundle.entry.resourceIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-4Bundle.entry.resourceIf 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-3Bundle.entry.resourceIf 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-6Bundle.entry.resourceA resource should have narrative for robust management
: text.div.exists()
dom-5Bundle.entry.resourceIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
ele-1Bundle.entryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
bdl-8Bundle.entryfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
bdl-5Bundle.entrymust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
dom-2Bundle.entry.resourceIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-4Bundle.entry.resourceIf 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-3Bundle.entry.resourceIf 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-6Bundle.entry.resourceA resource should have narrative for robust management
: text.div.exists()
dom-5Bundle.entry.resourceIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()