DRAFT - The specification is currently in development and subject to significant change. It is not ready for limited roll-out or production level use.

Bundle (CA:eReC)

Structure Definition: Bundle Profile

Canonical URL: http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Bundle

Simplifier project page: Bundle

Derived from: Bundle (R4)

Formal Views of Profile Content

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

idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ1..1uri
valueS Σ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
typeS Σ1..1codeBindingPattern
timestampS Σ1..1instant
totalΣ I0..1unsignedInt
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
relationΣ1..1string
urlΣ1..1uri
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlS Σ1..1uri
resourceS Σ1..1Resource
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlΣ0..1uri
resourceΣ I0..1MessageHeader
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ0..1codeBinding
scoreΣ0..1decimal
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
methodΣ1..1codeBinding
urlΣ1..1uri
ifNoneMatchΣ0..1string
ifModifiedSinceΣ0..1instant
ifMatchΣ0..1string
ifNoneExistΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
statusΣ1..1string
locationΣ0..1uri
etagΣ0..1string
lastModifiedΣ0..1instant
outcomeΣ0..1Resource
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlΣ0..1uri
resourceΣ0..1ServiceRequest, Task, Appointment, Communication
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ0..1codeBinding
scoreΣ0..1decimal
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
methodΣ1..1codeBinding
urlΣ1..1uri
ifNoneMatchΣ0..1string
ifModifiedSinceΣ0..1instant
ifMatchΣ0..1string
ifNoneExistΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
statusΣ1..1string
locationΣ0..1uri
etagΣ0..1string
lastModifiedΣ0..1instant
outcomeΣ0..1Resource
signatureΣ0..1Signature
idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ1..1uri
valueS Σ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
typeS Σ1..1codeBindingPattern
timestampS Σ1..1instant
totalΣ I0..1unsignedInt
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
relationΣ1..1string
urlΣ1..1uri
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlS Σ1..1uri
resourceS Σ1..1Resource
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlΣ0..1uri
resourceΣ I0..1MessageHeader
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ0..1codeBinding
scoreΣ0..1decimal
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
methodΣ1..1codeBinding
urlΣ1..1uri
ifNoneMatchΣ0..1string
ifModifiedSinceΣ0..1instant
ifMatchΣ0..1string
ifNoneExistΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
statusΣ1..1string
locationΣ0..1uri
etagΣ0..1string
lastModifiedΣ0..1instant
outcomeΣ0..1Resource
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlΣ0..1uri
resourceΣ0..1ServiceRequest, Task, Appointment, Communication
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ0..1codeBinding
scoreΣ0..1decimal
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
methodΣ1..1codeBinding
urlΣ1..1uri
ifNoneMatchΣ0..1string
ifModifiedSinceΣ0..1instant
ifMatchΣ0..1string
ifNoneExistΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
statusΣ1..1string
locationΣ0..1uri
etagΣ0..1string
lastModifiedΣ0..1instant
outcomeΣ0..1Resource
signatureΣ0..1Signature
idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ1..1uri
valueS Σ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
typeS Σ1..1codeBindingPattern
timestampS Σ1..1instant
totalΣ I0..1unsignedInt
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
relationΣ1..1string
urlΣ1..1uri
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlS Σ1..1uri
resourceS Σ1..1Resource
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlΣ0..1uri
resourceΣ I0..1MessageHeader
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ0..1codeBinding
scoreΣ0..1decimal
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
methodΣ1..1codeBinding
urlΣ1..1uri
ifNoneMatchΣ0..1string
ifModifiedSinceΣ0..1instant
ifMatchΣ0..1string
ifNoneExistΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
statusΣ1..1string
locationΣ0..1uri
etagΣ0..1string
lastModifiedΣ0..1instant
outcomeΣ0..1Resource
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
fullUrlΣ0..1uri
resourceΣ0..1ServiceRequest, Task, Appointment, Communication
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
modeΣ0..1codeBinding
scoreΣ0..1decimal
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
methodΣ1..1codeBinding
urlΣ1..1uri
ifNoneMatchΣ0..1string
ifModifiedSinceΣ0..1instant
ifMatchΣ0..1string
ifNoneExistΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
statusΣ1..1string
locationΣ0..1uri
etagΣ0..1string
lastModifiedΣ0..1instant
outcomeΣ0..1Resource
signatureΣ0..1Signature
Bundle..
Bundle.identifier..
Bundle.identifier.system1..
Bundle.identifier.value1..
Bundle.type..
Bundle.timestamp1..
Bundle.entry2..
Bundle.entry.fullUrl1..
Bundle.entry.resource1..
Bundle.entry.search..0
Bundle.entry.request..0
Bundle.entry.response..0
Bundle.entry1..1
Bundle.entry.resourceMessageHeader..
Bundle.entry1..
Bundle.entry.resourceServiceRequest, Task, Appointment, Communication..

{
    "resourceType": "StructureDefinition",
    "id": "CA-eReC-Bundle",
    "url": "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Bundle",
    "name": "Bundle",
    "status": "draft",
    "description": "The bundle resource is used to package a collection of resources into a single instance. This resource would be used for referral in the following contexts: \n- Sending a set of resources as part of a message exchange\n- Grouping a self-contained set of resources to act as an exchangeable and persistable collection with clinical integrity - e.g. a clinical document",
    "fhirVersion": "4.0.1",
    "kind": "resource",
    "abstract": false,
    "type": "Bundle",
    "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Bundle",
    "derivation": "constraint",
    "differential": {
        "element":  [
            {
                "id": "Bundle.identifier",
                "path": "Bundle.identifier",
                "mustSupport": true
            },
            {
                "id": "Bundle.identifier.system",
                "path": "Bundle.identifier.system",
                "min": 1,
                "mustSupport": true
            },
            {
                "id": "Bundle.identifier.value",
                "path": "Bundle.identifier.value",
                "min": 1,
                "mustSupport": true
            },
            {
                "id": "Bundle.type",
                "path": "Bundle.type",
                "patternCode": "message",
                "mustSupport": true
            },
            {
                "id": "Bundle.timestamp",
                "path": "Bundle.timestamp",
                "min": 1,
                "mustSupport": true
            },
            {
                "id": "Bundle.entry",
                "path": "Bundle.entry",
                "min": 2,
                "slicing": {
                    "discriminator":  [
                        {
                            "type": "profile",
                            "path": "resource"
                        }
                    ],
                    "description": "The specific bundle entries that are needed for an eReC Message Bundle.",
                    "rules": "open"
                },
                "mustSupport": true
            },
            {
                "id": "Bundle.entry.fullUrl",
                "path": "Bundle.entry.fullUrl",
                "min": 1,
                "mustSupport": true
            },
            {
                "id": "Bundle.entry.resource",
                "path": "Bundle.entry.resource",
                "min": 1,
                "mustSupport": true
            },
            {
                "id": "Bundle.entry.search",
                "path": "Bundle.entry.search",
                "max": "0"
            },
            {
                "id": "Bundle.entry.request",
                "path": "Bundle.entry.request",
                "max": "0"
            },
            {
                "id": "Bundle.entry.response",
                "path": "Bundle.entry.response",
                "max": "0"
            },
            {
                "id": "Bundle.entry:Message",
                "path": "Bundle.entry",
                "sliceName": "Message",
                "short": "Entry in the bundle - will have a resource or information",
                "definition": "An entry in a bundle resource - will either contain a resource or information about a resource (transactions and history only).",
                "min": 1,
                "max": "1",
                "mustSupport": true
            },
            {
                "id": "Bundle.entry:Message.resource",
                "path": "Bundle.entry.resource",
                "short": "A resource that describes a message that is exchanged between systems",
                "definition": "The header for a message exchange that is either requesting or responding to an action.  The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle.",
                "type":  [
                    {
                        "code": "Resource",
                        "profile":  [
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-MessageHeader"
                        ]
                    }
                ]
            },
            {
                "id": "Bundle.entry:Focus",
                "path": "Bundle.entry",
                "sliceName": "Focus",
                "short": "Entry in the bundle - will have a resource or information",
                "definition": "An entry in a bundle resource - will either contain a resource or information about a resource (transactions and history only).",
                "min": 1,
                "mustSupport": true
            },
            {
                "id": "Bundle.entry:Focus.resource",
                "path": "Bundle.entry.resource",
                "short": "A resource that describes a message that is exchanged between systems",
                "definition": "The header for a message exchange that is either requesting or responding to an action. The reference(s) that are the subject of the action as well as other information related to the action are typically transmitted in a bundle in which the MessageHeader resource instance is the first resource in the bundle.",
                "type":  [
                    {
                        "code": "Resource",
                        "profile":  [
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-ServiceRequest",
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Task",
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Appointment",
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Communication"
                        ]
                    }
                ]
            }
        ]
    }
}

Usage

The bundle resource is used to package a collection of resources into a single instance. This resource would be used for referral in the following contexts:

  • Sending a set of resources as part of a message exchange
  • Grouping a self-contained set of resources to act as an exchangeable and persistable collection with clinical integrity - e.g. a clinical document

The Bundle SHALL have an entry for each of the FHIR Resources required to convey information about the business event, starting with the MessageHeader which SHALL always be first.

Notes

The following rules apply to message type Bundles.

.id

  • used to uniquely identify a message instance
  • populate this element with a UUID each time a message is sent
  • note: a FHIR message contains two identifiers that are unique within the message stream, rules:
    • a Bundle.id (this element) SHALL be assigned each time the message is sent
    • a MessageHeader.id SHALL be assigned when the message is created

.type

  • Declares that the Bundle contains a message
  • Populate with a fixed value: message

.timestamp

  • Populate with the instant in time when the Bundle was created
  • Format: YYYY-MM-DDThh:mm:ss.sss+zz:zz (e.g. 2015-02-07T13:28:17.239+02:00 or 2017-01-01T00:00:00Z).

.entry

  • Create an entry for each of the FHIR Resources required to convey information about the business event
  • The MessageHeader SHALL be the first entry

.entry.fullUrl

  • Each entry in the Bundle SHALL have a fullUrl which is the identity of the resource in the entry
  • If a persistent identity for the resource is not available to use in the Bundle, a UUID SHOULD be used (urn:uuid:...)

.entry.resource

  • SHALL be populated with the resource for this entry

.entry.Message

  • SHALL have at least one messageHeader

.entry.Focus

  • SHALL have at least one focus resource, same as the focus indicated in the messagerheader.focus