SMART Health Cards: Vaccination & Testing Implementation Guide
1.0.0 - STU1 Release International flag

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

Resource Profile: Generic Laboratory Result Observation Profile - Data Minimization

Official URL: http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-infectious-disease-laboratory-result-observation-dm Version: 1.0.0
Draft as of 2023-12-27 Computable Name: SHCInfectiousDiseaseLaboratoryResultObservationDM

Defines a primary (DM) profile representing an infectious disease laboratory testing result in a health card.

See here for implementation details.

Start here!

Description:

For representing laboratory test results related to infection with or immunity to an infectious disease.

Primary profile (DM) Fallback profile (AD) Scope of profile pair
Lab results - COVID-19 Fallback COVID-19 only
Lab results - Generic Fallback Other infectious diseases
For more information about the types of profiles in this IG, see the profiles page.

Usage:

Formal Views of Profile Content

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

This structure is derived from SHCInfectiousDiseaseLaboratoryResultObservationAD

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation SHCInfectiousDiseaseLaboratoryResultObservationAD
... id 0..0
... meta
.... id 0..0
.... extension 0..0
.... versionId 0..0
.... lastUpdated 0..0
.... source 0..0
.... profile 0..0
.... tag 0..0
... implicitRules 0..0
... language 0..0
... text 0..0
... contained 0..0
... extension 0..0
... modifierExtension 0..0
... identifier 0..0
... basedOn 0..0
... partOf 0..0
... category 0..0
... code
.... id 0..0
.... extension 0..0
.... coding 1..1CodingCode defined by a terminology system
..... id 0..0
..... extension 0..0
..... system 1..1uriIdentity of the terminology system
..... version 0..0
..... code 1..1codeSymbol in syntax defined by the system
..... display 0..0
..... userSelected 0..0
.... text 0..0
... subject 1..1Reference(Patient Profile - General - Allowable Data)Patient to whom lab result applies
.... id 0..0
.... extension 0..0
... focus 0..0
... encounter 0..0
... issued 0..0
... performer
.... id 0..0
.... extension 0..0
.... reference 0..0
.... type 0..0
.... identifier 0..0
... value[x]:valueCodeableConcept 0..1CodeableConceptActual result
.... id 0..0
.... extension 0..0
.... coding 1..1CodingCode defined by a terminology system
..... id 0..0
..... extension 0..0
..... system 1..1uriIdentity of the terminology system
..... version 0..0
..... code 1..1codeSymbol in syntax defined by the system
..... display 0..0
..... userSelected 0..0
.... text 0..0
... value[x]:valueQuantity 0..1QuantityActual result
.... id 0..0
... value[x]:valueString 0..1stringString representation of results; used ONLY when a computable representation is not possible
.... id 0..0
... dataAbsentReason 0..0
... interpretation 0..0
... note 0..0
... bodySite 0..0
... method 0..0
... specimen 0..0
... device 0..0
... referenceRange
.... id 0..0
.... extension 0..0
.... modifierExtension 0..0
.... type
..... id 0..0
..... extension 0..0
..... text 0..0
.... appliesTo 0..0
.... age 0..0
... hasMember 0..0
... derivedFrom 0..0
... Slices for component 0..1BackboneElementComponent results
Slice: Unordered, Closed by value:code
.... component:All Slices Content/Rules for all slices
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... dataAbsentReason 0..0
..... interpretation 0..0
..... referenceRange 0..0
.... component:specimen-supervision-status 0..1BackboneElementComponent results
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... code
...... id 0..0
...... extension 0..0
...... coding
....... id 0..0
....... extension 0..0
....... version 0..0
....... display 0..0
....... userSelected 0..0
...... text 0..0
..... value[x]:valueCodeableConcept 1..1CodeableConceptActual component result
...... id 0..0
...... coding
....... id 0..0
....... extension 0..0
....... version 0..0
....... display 0..0
....... userSelected 0..0
...... text 0..0
..... dataAbsentReason 0..0
..... interpretation 0..0
..... referenceRange 0..0

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... meta SΣ0..1MetaMetadata about the resource
.... extension 0..0
.... security SΣ0..1CodingLimited security label to convey identity level of assurance for patient referenced by this resource.
Binding: Identity Assurance Level (required)
... status ?!SΣ1..1coderegistered | preliminary | final | amended +
Binding: Completed observation status (required)
... code SΣ1..1CodeableConceptLOINC identifying the lab test
Binding: LOINCCodes (required)
.... extension 0..0
.... coding Σ1..1CodingCode defined by a terminology system
..... extension 0..0
..... system Σ1..1uriIdentity of the terminology system
..... code Σ1..1codeSymbol in syntax defined by the system
.... extension 0..0
.... reference ΣC1..1stringThis SHOULD use an absolute URI like `resource:0` that will resolve within the containing Bundle.
... effective[x] SΣ1..1Clinically relevant time/time-period for observation
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... performer SΣ0..1Reference(Organization)Organization which was responsible for the laboratory test result.
.... extension 0..0
.... display SΣC1..1stringShort, human-readable text representation of the organization.
... Slices for value[x] SΣC1..1Actual result
Slice: Unordered, Closed by type:$this
.... valueCodeableConceptCodeableConcept
.... valueQuantityQuantity
.... valueStringstring
.... value[x]:valueCodeableConcept ΣC0..1CodeableConceptActual result
Binding: Lab result findings (SNOMED CT) (required)
..... extension 0..0
..... coding Σ1..1CodingCode defined by a terminology system
...... extension 0..0
...... system Σ1..1uriIdentity of the terminology system
...... code Σ1..1codeSymbol in syntax defined by the system
.... value[x]:valueQuantity ΣC0..1QuantityActual result
..... comparator ?!Σ0..1code< | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.

.... value[x]:valueString ΣC0..1stringString representation of results; used ONLY when a computable representation is not possible
... referenceRange SC0..*BackboneElementProvides guide for interpretation. SHOULD include if using valueQuantity.
... Slices for component Σ0..1BackboneElementComponent results
Slice: Unordered, Closed by value:code
.... component:All Slices Content/Rules for all slices
..... code Σ1..1CodeableConceptType of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.

.... component:specimen-supervision-status SΣ0..1BackboneElementComponent results
..... code Σ1..1CodeableConceptType of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.

...... extension 0..0
...... coding Σ1..1CodingCode defined by a terminology system
....... extension 0..0
....... system Σ1..1uriIdentity of the terminology system
Fixed Value: http://snomed.info/sct
....... code Σ1..1codeSNOMED CT concept 'Type of supervision for specimen collection (observable entity)'
Fixed Value: 1208522006
..... Slices for value[x] Σ1..1CodeableConceptActual component result
Slice: Unordered, Closed by type:$this
...... value[x]:valueCodeableConcept Σ1..1CodeableConceptActual component result
Binding: Specimen Collection Supervision Status (required)
....... extension 0..0
....... coding Σ1..1CodingCode defined by a terminology system
........ extension 0..0
........ system Σ1..1uriIdentity of the terminology system
........ code Σ1..1codeSymbol in syntax defined by the system

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Observation.meta.securityrequiredIdentityAssuranceLevel
Observation.statusrequiredCompletedObservationStatus
Observation.coderequiredLOINCCodes (a valid code from LOINC)
Observation.value[x]:valueCodeableConceptrequiredLabResultFindings
Observation.value[x]:valueQuantity.comparatorrequiredQuantityComparator
Observation.component.codeexampleLOINCCodes (a valid code from LOINC)
Observation.component:specimen-supervision-status.codeexampleLOINCCodes (a valid code from LOINC)
Observation.component:specimen-supervision-status.value[x]:valueCodeableConceptrequiredSpecimenCollectionSupervisionStatus

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorObservationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorObservationIf 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-4errorObservationIf 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-5errorObservationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceObservationA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
obs-3errorObservation.referenceRangeMust have at least a low or a high or text
: low.exists() or high.exists() or text.exists()
obs-6errorObservationdataAbsentReason SHALL only be present if Observation.value[x] is not present
: dataAbsentReason.empty() or value.empty()
obs-7errorObservationIf 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-observation-quantity-should-have-rangewarningObservation.value[x]:valueQuantityQuantitative lab results SHOULD include reference range
: %resource.referenceRange.exists()
vc-observation-range-only-quantity-or-stringwarningObservation.referenceRangeReference range SHOULD be included for quantitative lab results, MAY be included for free text (string) results, and SHOULD NOT be included otherwise
: $this.exists() and (%resource.value.ofType(Quantity).exists() or %resource.value.ofType(string).exists())
vc-should-be-under-20-charswarningObservation.value[x]:valueStringLength SHOULD be <20 for data minimization.
: $this.length() < 20
vc-should-be-under-30-charswarningObservation.performer.displayLength SHOULD be <30 for data minimization.
: $this.length() < 30
NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... meta SΣ0..1MetaMetadata about the resource
.... extension 0..0
.... security SΣ0..1CodingLimited security label to convey identity level of assurance for patient referenced by this resource.
Binding: Identity Assurance Level (required)
... status ?!SΣ1..1coderegistered | preliminary | final | amended +
Binding: Completed observation status (required)
... code SΣ1..1CodeableConceptLOINC identifying the lab test
Binding: LOINCCodes (required)
.... extension 0..0
.... coding Σ1..1CodingCode defined by a terminology system
..... extension 0..0
..... system Σ1..1uriIdentity of the terminology system
..... code Σ1..1codeSymbol in syntax defined by the system
.... extension 0..0
.... reference ΣC1..1stringThis SHOULD use an absolute URI like `resource:0` that will resolve within the containing Bundle.
... effective[x] SΣ1..1Clinically relevant time/time-period for observation
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... performer SΣ0..1Reference(Organization)Organization which was responsible for the laboratory test result.
.... extension 0..0
.... display SΣC1..1stringShort, human-readable text representation of the organization.
... Slices for value[x] SΣC1..1Actual result
Slice: Unordered, Closed by type:$this
.... valueCodeableConceptCodeableConcept
.... valueQuantityQuantity
.... valueStringstring
.... value[x]:valueCodeableConcept ΣC0..1CodeableConceptActual result
Binding: Lab result findings (SNOMED CT) (required)
..... extension 0..0
..... coding Σ1..1CodingCode defined by a terminology system
...... extension 0..0
...... system Σ1..1uriIdentity of the terminology system
...... code Σ1..1codeSymbol in syntax defined by the system
.... value[x]:valueQuantity ΣC0..1QuantityActual result
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... value Σ0..1decimalNumerical value (with implicit precision)
..... comparator ?!Σ0..1code< | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.

..... unit Σ0..1stringUnit representation
..... system ΣC0..1uriSystem that defines coded unit form
..... code Σ0..1codeCoded form of the unit
.... value[x]:valueString ΣC0..1stringString representation of results; used ONLY when a computable representation is not possible
..... extension 0..*ExtensionAdditional content defined by implementations
..... value 0..1stringPrimitive value for string
Max Length: 1048576
... referenceRange SC0..*BackboneElementProvides guide for interpretation. SHOULD include if using valueQuantity.
.... low C0..1SimpleQuantityLow Range, if relevant
.... high C0..1SimpleQuantityHigh Range, if relevant
.... type 0..1CodeableConceptReference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.

..... extension 0..0
..... coding Σ0..*CodingCode defined by a terminology system
.... text 0..1stringText based reference range in an observation
... Slices for component Σ0..1BackboneElementComponent results
Slice: Unordered, Closed by value:code
.... component:All Slices Content/Rules for all slices
..... code Σ1..1CodeableConceptType of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.

..... value[x] Σ0..1Actual component result
...... valueQuantityQuantity
...... valueCodeableConceptCodeableConcept
...... valueStringstring
...... valueBooleanboolean
...... valueIntegerinteger
...... valueRangeRange
...... valueRatioRatio
...... valueSampledDataSampledData
...... valueTimetime
...... valueDateTimedateTime
...... valuePeriodPeriod
.... component:specimen-supervision-status SΣ0..1BackboneElementComponent results
..... code Σ1..1CodeableConceptType of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.

...... extension 0..0
...... coding Σ1..1CodingCode defined by a terminology system
....... extension 0..0
....... system Σ1..1uriIdentity of the terminology system
Fixed Value: http://snomed.info/sct
....... code Σ1..1codeSNOMED CT concept 'Type of supervision for specimen collection (observable entity)'
Fixed Value: 1208522006
..... Slices for value[x] Σ1..1CodeableConceptActual component result
Slice: Unordered, Closed by type:$this
...... value[x]:valueCodeableConcept Σ1..1CodeableConceptActual component result
Binding: Specimen Collection Supervision Status (required)
....... extension 0..0
....... coding Σ1..1CodingCode defined by a terminology system
........ extension 0..0
........ system Σ1..1uriIdentity of the terminology system
........ code Σ1..1codeSymbol in syntax defined by the system

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Observation.meta.securityrequiredIdentityAssuranceLevel
Observation.statusrequiredCompletedObservationStatus
Observation.coderequiredLOINCCodes (a valid code from LOINC)
Observation.value[x]:valueCodeableConceptrequiredLabResultFindings
Observation.value[x]:valueQuantity.comparatorrequiredQuantityComparator
Observation.referenceRange.typepreferredObservationReferenceRangeMeaningCodes
Observation.component.codeexampleLOINCCodes (a valid code from LOINC)
Observation.component:specimen-supervision-status.codeexampleLOINCCodes (a valid code from LOINC)
Observation.component:specimen-supervision-status.value[x]:valueCodeableConceptrequiredSpecimenCollectionSupervisionStatus

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorObservationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorObservationIf 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-4errorObservationIf 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-5errorObservationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceObservationA resource should have narrative for robust management
: text.`div`.exists()
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()
obs-3errorObservation.referenceRangeMust have at least a low or a high or text
: low.exists() or high.exists() or text.exists()
obs-6errorObservationdataAbsentReason SHALL only be present if Observation.value[x] is not present
: dataAbsentReason.empty() or value.empty()
obs-7errorObservationIf 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-observation-quantity-should-have-rangewarningObservation.value[x]:valueQuantityQuantitative lab results SHOULD include reference range
: %resource.referenceRange.exists()
vc-observation-range-only-quantity-or-stringwarningObservation.referenceRangeReference range SHOULD be included for quantitative lab results, MAY be included for free text (string) results, and SHOULD NOT be included otherwise
: $this.exists() and (%resource.value.ofType(Quantity).exists() or %resource.value.ofType(string).exists())
vc-should-be-under-20-charswarningObservation.value[x]:valueStringLength SHOULD be <20 for data minimization.
: $this.length() < 20
vc-should-be-under-30-charswarningObservation.performer.displayLength SHOULD be <30 for data minimization.
: $this.length() < 30

This structure is derived from SHCInfectiousDiseaseLaboratoryResultObservationAD

Summary

Mandatory: 3 elements (3 nested mandatory elements)
Prohibited: 90 elements

Slices

This structure defines the following Slices:

  • The element Observation.component is sliced based on the value of value:code (Closed)

Differential View

This structure is derived from SHCInfectiousDiseaseLaboratoryResultObservationAD

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation SHCInfectiousDiseaseLaboratoryResultObservationAD
... id 0..0
... meta
.... id 0..0
.... extension 0..0
.... versionId 0..0
.... lastUpdated 0..0
.... source 0..0
.... profile 0..0
.... tag 0..0
... implicitRules 0..0
... language 0..0
... text 0..0
... contained 0..0
... extension 0..0
... modifierExtension 0..0
... identifier 0..0
... basedOn 0..0
... partOf 0..0
... category 0..0
... code
.... id 0..0
.... extension 0..0
.... coding 1..1CodingCode defined by a terminology system
..... id 0..0
..... extension 0..0
..... system 1..1uriIdentity of the terminology system
..... version 0..0
..... code 1..1codeSymbol in syntax defined by the system
..... display 0..0
..... userSelected 0..0
.... text 0..0
... subject 1..1Reference(Patient Profile - General - Allowable Data)Patient to whom lab result applies
.... id 0..0
.... extension 0..0
... focus 0..0
... encounter 0..0
... issued 0..0
... performer
.... id 0..0
.... extension 0..0
.... reference 0..0
.... type 0..0
.... identifier 0..0
... value[x]:valueCodeableConcept 0..1CodeableConceptActual result
.... id 0..0
.... extension 0..0
.... coding 1..1CodingCode defined by a terminology system
..... id 0..0
..... extension 0..0
..... system 1..1uriIdentity of the terminology system
..... version 0..0
..... code 1..1codeSymbol in syntax defined by the system
..... display 0..0
..... userSelected 0..0
.... text 0..0
... value[x]:valueQuantity 0..1QuantityActual result
.... id 0..0
... value[x]:valueString 0..1stringString representation of results; used ONLY when a computable representation is not possible
.... id 0..0
... dataAbsentReason 0..0
... interpretation 0..0
... note 0..0
... bodySite 0..0
... method 0..0
... specimen 0..0
... device 0..0
... referenceRange
.... id 0..0
.... extension 0..0
.... modifierExtension 0..0
.... type
..... id 0..0
..... extension 0..0
..... text 0..0
.... appliesTo 0..0
.... age 0..0
... hasMember 0..0
... derivedFrom 0..0
... Slices for component 0..1BackboneElementComponent results
Slice: Unordered, Closed by value:code
.... component:All Slices Content/Rules for all slices
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... dataAbsentReason 0..0
..... interpretation 0..0
..... referenceRange 0..0
.... component:specimen-supervision-status 0..1BackboneElementComponent results
..... id 0..0
..... extension 0..0
..... modifierExtension 0..0
..... code
...... id 0..0
...... extension 0..0
...... coding
....... id 0..0
....... extension 0..0
....... version 0..0
....... display 0..0
....... userSelected 0..0
...... text 0..0
..... value[x]:valueCodeableConcept 1..1CodeableConceptActual component result
...... id 0..0
...... coding
....... id 0..0
....... extension 0..0
....... version 0..0
....... display 0..0
....... userSelected 0..0
...... text 0..0
..... dataAbsentReason 0..0
..... interpretation 0..0
..... referenceRange 0..0

doco Documentation for this format

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... meta SΣ0..1MetaMetadata about the resource
.... extension 0..0
.... security SΣ0..1CodingLimited security label to convey identity level of assurance for patient referenced by this resource.
Binding: Identity Assurance Level (required)
... status ?!SΣ1..1coderegistered | preliminary | final | amended +
Binding: Completed observation status (required)
... code SΣ1..1CodeableConceptLOINC identifying the lab test
Binding: LOINCCodes (required)
.... extension 0..0
.... coding Σ1..1CodingCode defined by a terminology system
..... extension 0..0
..... system Σ1..1uriIdentity of the terminology system
..... code Σ1..1codeSymbol in syntax defined by the system
.... extension 0..0
.... reference ΣC1..1stringThis SHOULD use an absolute URI like `resource:0` that will resolve within the containing Bundle.
... effective[x] SΣ1..1Clinically relevant time/time-period for observation
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... performer SΣ0..1Reference(Organization)Organization which was responsible for the laboratory test result.
.... extension 0..0
.... display SΣC1..1stringShort, human-readable text representation of the organization.
... Slices for value[x] SΣC1..1Actual result
Slice: Unordered, Closed by type:$this
.... valueCodeableConceptCodeableConcept
.... valueQuantityQuantity
.... valueStringstring
.... value[x]:valueCodeableConcept ΣC0..1CodeableConceptActual result
Binding: Lab result findings (SNOMED CT) (required)
..... extension 0..0
..... coding Σ1..1CodingCode defined by a terminology system
...... extension 0..0
...... system Σ1..1uriIdentity of the terminology system
...... code Σ1..1codeSymbol in syntax defined by the system
.... value[x]:valueQuantity ΣC0..1QuantityActual result
..... comparator ?!Σ0..1code< | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.

.... value[x]:valueString ΣC0..1stringString representation of results; used ONLY when a computable representation is not possible
... referenceRange SC0..*BackboneElementProvides guide for interpretation. SHOULD include if using valueQuantity.
... Slices for component Σ0..1BackboneElementComponent results
Slice: Unordered, Closed by value:code
.... component:All Slices Content/Rules for all slices
..... code Σ1..1CodeableConceptType of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.

.... component:specimen-supervision-status SΣ0..1BackboneElementComponent results
..... code Σ1..1CodeableConceptType of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.

...... extension 0..0
...... coding Σ1..1CodingCode defined by a terminology system
....... extension 0..0
....... system Σ1..1uriIdentity of the terminology system
Fixed Value: http://snomed.info/sct
....... code Σ1..1codeSNOMED CT concept 'Type of supervision for specimen collection (observable entity)'
Fixed Value: 1208522006
..... Slices for value[x] Σ1..1CodeableConceptActual component result
Slice: Unordered, Closed by type:$this
...... value[x]:valueCodeableConcept Σ1..1CodeableConceptActual component result
Binding: Specimen Collection Supervision Status (required)
....... extension 0..0
....... coding Σ1..1CodingCode defined by a terminology system
........ extension 0..0
........ system Σ1..1uriIdentity of the terminology system
........ code Σ1..1codeSymbol in syntax defined by the system

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Observation.meta.securityrequiredIdentityAssuranceLevel
Observation.statusrequiredCompletedObservationStatus
Observation.coderequiredLOINCCodes (a valid code from LOINC)
Observation.value[x]:valueCodeableConceptrequiredLabResultFindings
Observation.value[x]:valueQuantity.comparatorrequiredQuantityComparator
Observation.component.codeexampleLOINCCodes (a valid code from LOINC)
Observation.component:specimen-supervision-status.codeexampleLOINCCodes (a valid code from LOINC)
Observation.component:specimen-supervision-status.value[x]:valueCodeableConceptrequiredSpecimenCollectionSupervisionStatus

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorObservationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorObservationIf 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-4errorObservationIf 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-5errorObservationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceObservationA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
obs-3errorObservation.referenceRangeMust have at least a low or a high or text
: low.exists() or high.exists() or text.exists()
obs-6errorObservationdataAbsentReason SHALL only be present if Observation.value[x] is not present
: dataAbsentReason.empty() or value.empty()
obs-7errorObservationIf 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-observation-quantity-should-have-rangewarningObservation.value[x]:valueQuantityQuantitative lab results SHOULD include reference range
: %resource.referenceRange.exists()
vc-observation-range-only-quantity-or-stringwarningObservation.referenceRangeReference range SHOULD be included for quantitative lab results, MAY be included for free text (string) results, and SHOULD NOT be included otherwise
: $this.exists() and (%resource.value.ofType(Quantity).exists() or %resource.value.ofType(string).exists())
vc-should-be-under-20-charswarningObservation.value[x]:valueStringLength SHOULD be <20 for data minimization.
: $this.length() < 20
vc-should-be-under-30-charswarningObservation.performer.displayLength SHOULD be <30 for data minimization.
: $this.length() < 30

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... meta SΣ0..1MetaMetadata about the resource
.... extension 0..0
.... security SΣ0..1CodingLimited security label to convey identity level of assurance for patient referenced by this resource.
Binding: Identity Assurance Level (required)
... status ?!SΣ1..1coderegistered | preliminary | final | amended +
Binding: Completed observation status (required)
... code SΣ1..1CodeableConceptLOINC identifying the lab test
Binding: LOINCCodes (required)
.... extension 0..0
.... coding Σ1..1CodingCode defined by a terminology system
..... extension 0..0
..... system Σ1..1uriIdentity of the terminology system
..... code Σ1..1codeSymbol in syntax defined by the system
.... extension 0..0
.... reference ΣC1..1stringThis SHOULD use an absolute URI like `resource:0` that will resolve within the containing Bundle.
... effective[x] SΣ1..1Clinically relevant time/time-period for observation
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... performer SΣ0..1Reference(Organization)Organization which was responsible for the laboratory test result.
.... extension 0..0
.... display SΣC1..1stringShort, human-readable text representation of the organization.
... Slices for value[x] SΣC1..1Actual result
Slice: Unordered, Closed by type:$this
.... valueCodeableConceptCodeableConcept
.... valueQuantityQuantity
.... valueStringstring
.... value[x]:valueCodeableConcept ΣC0..1CodeableConceptActual result
Binding: Lab result findings (SNOMED CT) (required)
..... extension 0..0
..... coding Σ1..1CodingCode defined by a terminology system
...... extension 0..0
...... system Σ1..1uriIdentity of the terminology system
...... code Σ1..1codeSymbol in syntax defined by the system
.... value[x]:valueQuantity ΣC0..1QuantityActual result
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... value Σ0..1decimalNumerical value (with implicit precision)
..... comparator ?!Σ0..1code< | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.

..... unit Σ0..1stringUnit representation
..... system ΣC0..1uriSystem that defines coded unit form
..... code Σ0..1codeCoded form of the unit
.... value[x]:valueString ΣC0..1stringString representation of results; used ONLY when a computable representation is not possible
..... extension 0..*ExtensionAdditional content defined by implementations
..... value 0..1stringPrimitive value for string
Max Length: 1048576
... referenceRange SC0..*BackboneElementProvides guide for interpretation. SHOULD include if using valueQuantity.
.... low C0..1SimpleQuantityLow Range, if relevant
.... high C0..1SimpleQuantityHigh Range, if relevant
.... type 0..1CodeableConceptReference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.

..... extension 0..0
..... coding Σ0..*CodingCode defined by a terminology system
.... text 0..1stringText based reference range in an observation
... Slices for component Σ0..1BackboneElementComponent results
Slice: Unordered, Closed by value:code
.... component:All Slices Content/Rules for all slices
..... code Σ1..1CodeableConceptType of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.

..... value[x] Σ0..1Actual component result
...... valueQuantityQuantity
...... valueCodeableConceptCodeableConcept
...... valueStringstring
...... valueBooleanboolean
...... valueIntegerinteger
...... valueRangeRange
...... valueRatioRatio
...... valueSampledDataSampledData
...... valueTimetime
...... valueDateTimedateTime
...... valuePeriodPeriod
.... component:specimen-supervision-status SΣ0..1BackboneElementComponent results
..... code Σ1..1CodeableConceptType of component observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.

...... extension 0..0
...... coding Σ1..1CodingCode defined by a terminology system
....... extension 0..0
....... system Σ1..1uriIdentity of the terminology system
Fixed Value: http://snomed.info/sct
....... code Σ1..1codeSNOMED CT concept 'Type of supervision for specimen collection (observable entity)'
Fixed Value: 1208522006
..... Slices for value[x] Σ1..1CodeableConceptActual component result
Slice: Unordered, Closed by type:$this
...... value[x]:valueCodeableConcept Σ1..1CodeableConceptActual component result
Binding: Specimen Collection Supervision Status (required)
....... extension 0..0
....... coding Σ1..1CodingCode defined by a terminology system
........ extension 0..0
........ system Σ1..1uriIdentity of the terminology system
........ code Σ1..1codeSymbol in syntax defined by the system

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
Observation.meta.securityrequiredIdentityAssuranceLevel
Observation.statusrequiredCompletedObservationStatus
Observation.coderequiredLOINCCodes (a valid code from LOINC)
Observation.value[x]:valueCodeableConceptrequiredLabResultFindings
Observation.value[x]:valueQuantity.comparatorrequiredQuantityComparator
Observation.referenceRange.typepreferredObservationReferenceRangeMeaningCodes
Observation.component.codeexampleLOINCCodes (a valid code from LOINC)
Observation.component:specimen-supervision-status.codeexampleLOINCCodes (a valid code from LOINC)
Observation.component:specimen-supervision-status.value[x]:valueCodeableConceptrequiredSpecimenCollectionSupervisionStatus

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorObservationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorObservationIf 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-4errorObservationIf 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-5errorObservationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceObservationA resource should have narrative for robust management
: text.`div`.exists()
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()
obs-3errorObservation.referenceRangeMust have at least a low or a high or text
: low.exists() or high.exists() or text.exists()
obs-6errorObservationdataAbsentReason SHALL only be present if Observation.value[x] is not present
: dataAbsentReason.empty() or value.empty()
obs-7errorObservationIf 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-observation-quantity-should-have-rangewarningObservation.value[x]:valueQuantityQuantitative lab results SHOULD include reference range
: %resource.referenceRange.exists()
vc-observation-range-only-quantity-or-stringwarningObservation.referenceRangeReference range SHOULD be included for quantitative lab results, MAY be included for free text (string) results, and SHOULD NOT be included otherwise
: $this.exists() and (%resource.value.ofType(Quantity).exists() or %resource.value.ofType(string).exists())
vc-should-be-under-20-charswarningObservation.value[x]:valueStringLength SHOULD be <20 for data minimization.
: $this.length() < 20
vc-should-be-under-30-charswarningObservation.performer.displayLength SHOULD be <30 for data minimization.
: $this.length() < 30

This structure is derived from SHCInfectiousDiseaseLaboratoryResultObservationAD

Summary

Mandatory: 3 elements (3 nested mandatory elements)
Prohibited: 90 elements

Slices

This structure defines the following Slices:

  • The element Observation.component is sliced based on the value of value:code (Closed)

 

Other representations of profile: CSV, Excel, Schematron