FHIR Implementation Guide for ABDM
3.1.0 - active India flag

Banner

FHIR Implementation Guide for ABDM - Local Development build (v3.1.0). See the Directory of published versions

Resource Profile: StructureDefinition/DocumentBundle

Official URL: https://nrces.in/ndhm/fhir/r4/StructureDefinition/DocumentBundle Version: 3.1.0
Draft as of 2020-08-17 Computable Name: DocumentBundle

This profile sets minimum expectations for the DocumentBundle that includes all resources into a single instance with containing context to act as an exchangeable clinical document.

This profile sets minimum expectations for the DocumentBundle that includes all resources into a single instance with containing context to act as an exchangeable clinical document. It identifies the mandatory core elements, vocabularies and value sets which SHALL be present in the Composition resource when using this profile.

Examples

Usage:

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..*BundleContains a collection of resources
... meta 1..1MetaMetadata about the resource
.... versionId 1..1idVersion specific identifier
.... security S0..*CodingSecurity Labels applied to this resource
... identifier 1..1IdentifierPersistent identifier for the bundle
.... system 1..1uriThe namespace for the identifier value
.... value 1..1stringThe value that is unique
.... assigner 0..1Reference(Organization)Organization that issued id (may be just text)
... type 1..1codedocument | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Fixed Value: document

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle C0..*BundleContains a collection of resources
... meta Σ1..1MetaMetadata about the resource
.... versionId Σ1..1idVersion specific identifier
.... security SΣ0..*CodingSecurity Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.


... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... identifier Σ1..1IdentifierPersistent identifier for the bundle
.... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

.... system Σ1..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value Σ1..1stringThe value that is unique
Example General: 123456
.... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... timestamp Σ1..1instantWhen the bundle was assembled

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / Code
Bundle.meta.securityextensibleAll Security Labels
Bundle.identifier.userequiredIdentifierUse
Bundle.typerequiredFixed Value: document

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-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-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())
NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle C0..*BundleContains a collection of resources
... id Σ0..1idLogical id of this artifact
... meta Σ1..1MetaMetadata about the resource
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... versionId Σ1..1idVersion specific identifier
.... lastUpdated Σ0..1instantWhen the resource version last changed
.... source Σ0..1uriIdentifies where the resource comes from
.... profile Σ0..*canonical(StructureDefinition)Profiles this resource claims to conform to
.... security SΣ0..*CodingSecurity Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.


.... tag Σ0..*CodingTags applied to this resource
Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".


... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... identifier Σ1..1IdentifierPersistent identifier for the bundle
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

.... type Σ0..1CodeableConceptDescription of identifier
Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

.... system Σ1..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value Σ1..1stringThe value that is unique
Example General: 123456
.... period Σ0..1PeriodTime period when id is/was valid for use
.... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... type Σ1..1codedocument | 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: document
... timestamp Σ1..1instantWhen the bundle was assembled
... total ΣC0..1unsignedIntIf search, the total number of matches
... link Σ0..*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 ΣC0..*BackboneElementEntry 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..*See link (Bundle)Links related to this entry
.... fullUrl Σ0..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
.... resource Σ0..1ResourceA resource in the bundle
.... search ΣC0..1BackboneElementSearch related information
..... 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
..... mode Σ0..1codematch | include | outcome - why this is in the result set
Binding: SearchEntryMode (required): Why an entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process.

..... score Σ0..1decimalSearch ranking (between 0 and 1)
.... request ΣC0..1BackboneElementAdditional execution information (transaction/batch/history)
..... 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
..... method Σ1..1codeGET | HEAD | POST | PUT | DELETE | PATCH
Binding: HTTPVerb (required): HTTP verbs (in the HTTP command line). See HTTP rfc for details.

..... url Σ1..1uriURL for HTTP equivalent of this entry
..... ifNoneMatch Σ0..1stringFor managing cache currency
..... ifModifiedSince Σ0..1instantFor managing cache currency
..... ifMatch Σ0..1stringFor managing update contention
..... ifNoneExist Σ0..1stringFor conditional creates
.... response ΣC0..1BackboneElementResults of execution (transaction/batch/history)
..... 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
..... status Σ1..1stringStatus response code (text optional)
..... location Σ0..1uriThe location (if the operation returns a location)
..... etag Σ0..1stringThe Etag for the resource (if relevant)
..... lastModified Σ0..1instantServer's date time modified
..... outcome Σ0..1ResourceOperationOutcome with hints and warnings (for batch/transaction)
... signature ΣTU0..1SignatureDigital Signature

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / Code
Bundle.meta.securityextensibleAll Security Labels
Bundle.meta.tagexampleCommonTags
Bundle.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
Bundle.identifier.userequiredIdentifierUse
Bundle.identifier.typeextensibleIdentifier Type Codes
Bundle.typerequiredFixed Value: document
Bundle.entry.search.moderequiredSearchEntryMode
Bundle.entry.request.methodrequiredHTTPVerb

Constraints

IdGradePath(s)DetailsRequirements
bdl-5errorBundle.entrymust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
bdl-8errorBundle.entryfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
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()

This structure is derived from Bundle

Summary

Mandatory: 6 elements
Must-Support: 1 element
Fixed Value: 1 element

Structures

This structure refers to these other structures:

Differential View

This structure is derived from Bundle

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle 0..*BundleContains a collection of resources
... meta 1..1MetaMetadata about the resource
.... versionId 1..1idVersion specific identifier
.... security S0..*CodingSecurity Labels applied to this resource
... identifier 1..1IdentifierPersistent identifier for the bundle
.... system 1..1uriThe namespace for the identifier value
.... value 1..1stringThe value that is unique
.... assigner 0..1Reference(Organization)Organization that issued id (may be just text)
... type 1..1codedocument | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Fixed Value: document

doco Documentation for this format

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle C0..*BundleContains a collection of resources
... meta Σ1..1MetaMetadata about the resource
.... versionId Σ1..1idVersion specific identifier
.... security SΣ0..*CodingSecurity Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.


... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... identifier Σ1..1IdentifierPersistent identifier for the bundle
.... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

.... system Σ1..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value Σ1..1stringThe value that is unique
Example General: 123456
.... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... timestamp Σ1..1instantWhen the bundle was assembled

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / Code
Bundle.meta.securityextensibleAll Security Labels
Bundle.identifier.userequiredIdentifierUse
Bundle.typerequiredFixed Value: document

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-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-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())

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle C0..*BundleContains a collection of resources
... id Σ0..1idLogical id of this artifact
... meta Σ1..1MetaMetadata about the resource
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... versionId Σ1..1idVersion specific identifier
.... lastUpdated Σ0..1instantWhen the resource version last changed
.... source Σ0..1uriIdentifies where the resource comes from
.... profile Σ0..*canonical(StructureDefinition)Profiles this resource claims to conform to
.... security SΣ0..*CodingSecurity Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.


.... tag Σ0..*CodingTags applied to this resource
Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".


... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... identifier Σ1..1IdentifierPersistent identifier for the bundle
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .

.... type Σ0..1CodeableConceptDescription of identifier
Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

.... system Σ1..1uriThe namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value Σ1..1stringThe value that is unique
Example General: 123456
.... period Σ0..1PeriodTime period when id is/was valid for use
.... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... type Σ1..1codedocument | 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: document
... timestamp Σ1..1instantWhen the bundle was assembled
... total ΣC0..1unsignedIntIf search, the total number of matches
... link Σ0..*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 ΣC0..*BackboneElementEntry 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..*See link (Bundle)Links related to this entry
.... fullUrl Σ0..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
.... resource Σ0..1ResourceA resource in the bundle
.... search ΣC0..1BackboneElementSearch related information
..... 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
..... mode Σ0..1codematch | include | outcome - why this is in the result set
Binding: SearchEntryMode (required): Why an entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process.

..... score Σ0..1decimalSearch ranking (between 0 and 1)
.... request ΣC0..1BackboneElementAdditional execution information (transaction/batch/history)
..... 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
..... method Σ1..1codeGET | HEAD | POST | PUT | DELETE | PATCH
Binding: HTTPVerb (required): HTTP verbs (in the HTTP command line). See HTTP rfc for details.

..... url Σ1..1uriURL for HTTP equivalent of this entry
..... ifNoneMatch Σ0..1stringFor managing cache currency
..... ifModifiedSince Σ0..1instantFor managing cache currency
..... ifMatch Σ0..1stringFor managing update contention
..... ifNoneExist Σ0..1stringFor conditional creates
.... response ΣC0..1BackboneElementResults of execution (transaction/batch/history)
..... 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
..... status Σ1..1stringStatus response code (text optional)
..... location Σ0..1uriThe location (if the operation returns a location)
..... etag Σ0..1stringThe Etag for the resource (if relevant)
..... lastModified Σ0..1instantServer's date time modified
..... outcome Σ0..1ResourceOperationOutcome with hints and warnings (for batch/transaction)
... signature ΣTU0..1SignatureDigital Signature

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / Code
Bundle.meta.securityextensibleAll Security Labels
Bundle.meta.tagexampleCommonTags
Bundle.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
Bundle.identifier.userequiredIdentifierUse
Bundle.identifier.typeextensibleIdentifier Type Codes
Bundle.typerequiredFixed Value: document
Bundle.entry.search.moderequiredSearchEntryMode
Bundle.entry.request.methodrequiredHTTPVerb

Constraints

IdGradePath(s)DetailsRequirements
bdl-5errorBundle.entrymust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
bdl-8errorBundle.entryfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
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()

This structure is derived from Bundle

Summary

Mandatory: 6 elements
Must-Support: 1 element
Fixed Value: 1 element

Structures

This structure refers to these other structures:

 

Other representations of profile: CSV, Excel, Schematron