LOINC – IVD Test Code (LIVD) Mapping
0.3.0 - ballot

This page is part of the Loinc/IVD Mapping FHIR IG (v0.3.0: STU 1 (FHIR R4) Ballot 2) based on FHIR R4. . For a full list of available versions, see the Directory of published versions

Resource Profile: LIVD Bundle

Defining URL:http://hl7.org/fhir/uv/livd/StructureDefinition/bundle-uv-livd
Version:0.3.0
Name:LIVDBundle
Status:Draft as of 2018-08-14
Definition:

LIVD constraints on the Bundle resource

Publisher:HL7 International - Orders and Observations Work Group
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://hl7.org/fhir/uv/livd/StructureDefinition/bundle-uv-livd

Description

The LIVD Bundle is a profile on the Bundle resource to include all the necessary resources to express the LIVD catalog.

Formal Views of Profile Content

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

This structure is derived from Bundle

Summary

Mandatory: 2 elements
Must-Support: 8 elements
Prohibited: 7 elements

This structure is derived from Bundle

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle 0..*BundleLIVDBundle
... identifier S1..1IdentifierPersistent identifier for the bundle
... type S1..1codeThe bundle type
Binding: Allowed types of bundles for the LIVD catalog (required): Allowed types of bundles for the LIVD catalog

... timestamp 0..0
... link 0..0
... entry S6..*BackboneElementEntry in the bundle - will have a resource or information
.... link 0..0
.... fullUrl S0..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
.... resource S1..1ResourceA resource in the bundle
.... search 0..0
.... request S0..1BackboneElementTransaction Related Information
..... method S1..1codeGET | POST | PUT | DELETE
..... url S1..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 0..0
... signature 0..0

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle I0..*BundleLIVDBundle
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... identifier SΣ1..1IdentifierPersistent identifier for the bundle
... type SΣ1..1codeThe bundle type
Binding: Allowed types of bundles for the LIVD catalog (required): Allowed types of bundles for the LIVD catalog

... entry SΣI6..*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
.... fullUrl SΣ0..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
.... resource SΣ1..1ResourceA resource in the bundle
.... request SΣI0..1BackboneElementTransaction 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
..... method SΣ1..1codeGET | POST | PUT | DELETE
Binding: HTTPVerb (required): HTTP verbs (in the HTTP command line). See HTTP rfc for details.

..... url SΣ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

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle I0..*BundleLIVDBundle
... identifier Σ1..1IdentifierPersistent identifier for the bundle
... type Σ1..1codeThe bundle type
Binding: Allowed types of bundles for the LIVD catalog (required): Allowed types of bundles for the LIVD catalog

... entry ΣI6..*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
.... fullUrl Σ0..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
.... resource Σ1..1ResourceA resource in the bundle
.... request ΣI0..1BackboneElementTransaction Related Information
..... method Σ1..1codeGET | POST | PUT | DELETE
Binding: HTTPVerb (required): HTTP verbs (in the HTTP command line). See HTTP rfc for details.

..... url Σ1..1uriURL for HTTP equivalent of this entry

doco Documentation for this format

This structure is derived from Bundle

Summary

Mandatory: 2 elements
Must-Support: 8 elements
Prohibited: 7 elements

Differential View

This structure is derived from Bundle

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle 0..*BundleLIVDBundle
... identifier S1..1IdentifierPersistent identifier for the bundle
... type S1..1codeThe bundle type
Binding: Allowed types of bundles for the LIVD catalog (required): Allowed types of bundles for the LIVD catalog

... timestamp 0..0
... link 0..0
... entry S6..*BackboneElementEntry in the bundle - will have a resource or information
.... link 0..0
.... fullUrl S0..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
.... resource S1..1ResourceA resource in the bundle
.... search 0..0
.... request S0..1BackboneElementTransaction Related Information
..... method S1..1codeGET | POST | PUT | DELETE
..... url S1..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 0..0
... signature 0..0

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle I0..*BundleLIVDBundle
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... identifier SΣ1..1IdentifierPersistent identifier for the bundle
... type SΣ1..1codeThe bundle type
Binding: Allowed types of bundles for the LIVD catalog (required): Allowed types of bundles for the LIVD catalog

... entry SΣI6..*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
.... fullUrl SΣ0..1uriURI for resource (Absolute URL server address or URI for UUID/OID)
.... resource SΣ1..1ResourceA resource in the bundle
.... request SΣI0..1BackboneElementTransaction 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
..... method SΣ1..1codeGET | POST | PUT | DELETE
Binding: HTTPVerb (required): HTTP verbs (in the HTTP command line). See HTTP rfc for details.

..... url SΣ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

doco Documentation for this format

 

Other representations of profile: Schematron

Terminology Bindings

PathConformanceValueSet
Bundle.languagepreferredCommonLanguages
Max Binding: AllLanguages
Bundle.typerequiredLivdBundleTypeVS
Bundle.entry.search.moderequiredSearchEntryMode
Bundle.entry.request.methodrequiredHTTPVerb

Constraints

IdPathDetailsRequirements
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-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-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-10BundleA document must have a date
: type = 'document' implies (timestamp.hasValue())
bdl-11BundleA document must have a Composition as the first resource
: type = 'document' implies entry.first().resource.is(Composition)
bdl-12BundleA message must have a MessageHeader as the first resource
: type = 'message' implies entry.first().resource.is(MessageHeader)
ele-1Bundle.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.implicitRulesAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.languageAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.identifierAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.link.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.link.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.link.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.link.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.link.relationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.link.urlAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
bdl-5Bundle.entrymust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
bdl-8Bundle.entryfullUrl cannot be a version specific reference
: fullUrl.contains('/_history/').not()
ele-1Bundle.entryAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.entry.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.entry.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.entry.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.entry.fullUrlAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.search.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.entry.search.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.entry.search.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.entry.search.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.entry.search.modeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.search.scoreAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.requestAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.request.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.entry.request.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.entry.request.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.entry.request.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.entry.request.methodAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.request.urlAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.request.ifNoneMatchAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.request.ifModifiedSinceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.request.ifMatchAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.request.ifNoneExistAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.response.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.entry.response.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.entry.response.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Bundle.entry.response.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Bundle.entry.response.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.response.locationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.response.etagAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Bundle.entry.response.lastModifiedAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())