SMART Health Cards: Vaccination & Testing Implementation Guide
0.6.2 - STU 1 (Ballot Version)

SMART Health Cards: Vaccination & Testing Implementation Guide, published by HL7 International - Public Health Work Group. This is not an authorized publication; it is the continuous build for version 0.6.2). 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

Defining URL:http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-infectious-disease-laboratory-result-observation-dm
Version:0.6.2
Name:SHCInfectiousDiseaseLaboratoryResultObservationDM
Title:Generic Laboratory Result Observation Profile - Data Minimization
Status:Active as of 2021-08-11T19:30:57+00:00
Definition:

Profile for reporting laboratory results indicating current or previous infection status for a disease without a specified laboratory result profile. Only elements necessary for Verifiers can be populated.

Publisher:HL7 International - Public Health Work Group
Source Resource:XML / JSON / Turtle

The official URL for this profile is:

http://hl7.org/fhir/uv/shc-vaccination/StructureDefinition/shc-infectious-disease-laboratory-result-observation-dm
Laboratory results observation: Profile Group Navigation

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

Implementation instructions Start here!

Primary profile (DM) Fallback Profiles (AD) Scope
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.

Formal Views of Profile Content

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

This structure is derived from SHCInfectiousDiseaseLaboratoryResultObservationAD

Summary

Prohibited: 51 elements

This structure is derived from SHCInfectiousDiseaseLaboratoryResultObservationAD

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation 0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... 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
... subject
.... 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
... valueCodeableConcept 0..1CodeableConceptActual result
.... id 0..0
.... extension 0..0
.... text 0..0
... valueQuantity 0..1QuantityActual result
.... id 0..0
... 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
... component 0..0

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation I0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... meta Σ0..1MetaMetadata about the resource
.... Slices for 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ΣI1..1coderegistered | preliminary | final | amended +
Binding: ObservationStatus (required): Codes providing the status of an observation.

... code SΣI1..1CodeableConceptLOINC identifying the lab test
Binding: LOINCCodes (required)
.... Slices for extension 0..0
.... reference ΣI1..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.
.... Slices for extension 0..0
.... display SΣI1..1stringShort, human-readable text representation of the organization.
... Slices for value[x] SΣI1..1Actual result
Slice: Unordered, Closed by type:$this
.... valueCodeableConceptCodeableConcept
.... valueQuantityQuantity
.... valueStringstring
.... value[x]:valueCodeableConcept ΣI0..1CodeableConceptActual result
Binding: Lab result findings (required)
..... Slices for extension 0..0
..... coding Σ0..*CodingCode defined by a terminology system
.... value[x]:valueQuantity ΣI0..1QuantityActual result
..... Slices for 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 ΣI0..1uriSystem that defines coded unit form
..... code Σ0..1codeCoded form of the unit
.... value[x]:valueString ΣI0..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 SI0..*BackboneElementProvides guide for interpretation. SHOULD include if using valueQuantity.
.... low I0..1SimpleQuantityLow Range, if relevant
.... high I0..1SimpleQuantityHigh Range, if relevant
.... type 0..1CodeableConceptReference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.

..... Slices for extension 0..0
..... coding Σ0..*CodingCode defined by a terminology system
.... text 0..1stringText based reference range in an observation

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation I0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... meta Σ0..1MetaMetadata about the resource
.... security Σ0..1CodingLimited security label to convey identity level of assurance for patient referenced by this resource.
Binding: Identity Assurance Level (required)
... status ?!ΣI1..1coderegistered | preliminary | final | amended +
Binding: ObservationStatus (required): Codes providing the status of an observation.

... code ΣI1..1CodeableConceptLOINC identifying the lab test
Binding: LOINCCodes (required)
... effective[x] Σ1..1Clinically relevant time/time-period for observation
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... performer Σ0..1Reference(Organization)Organization which was responsible for the laboratory test result.
.... display ΣI1..1stringShort, human-readable text representation of the organization.
... Slices for value[x] ΣI1..1Actual result
Slice: Unordered, Closed by type:$this
.... valueCodeableConceptCodeableConcept
.... valueQuantityQuantity
.... valueStringstring
... referenceRange I0..*BackboneElementProvides guide for interpretation. SHOULD include if using valueQuantity.

doco Documentation for this format

This structure is derived from SHCInfectiousDiseaseLaboratoryResultObservationAD

Summary

Prohibited: 51 elements

Differential View

This structure is derived from SHCInfectiousDiseaseLaboratoryResultObservationAD

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation 0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... 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
... subject
.... 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
... valueCodeableConcept 0..1CodeableConceptActual result
.... id 0..0
.... extension 0..0
.... text 0..0
... valueQuantity 0..1QuantityActual result
.... id 0..0
... 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
... component 0..0

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation I0..*SHCInfectiousDiseaseLaboratoryResultObservationADMeasurements and simple assertions
... meta Σ0..1MetaMetadata about the resource
.... Slices for 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ΣI1..1coderegistered | preliminary | final | amended +
Binding: ObservationStatus (required): Codes providing the status of an observation.

... code SΣI1..1CodeableConceptLOINC identifying the lab test
Binding: LOINCCodes (required)
.... Slices for extension 0..0
.... reference ΣI1..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.
.... Slices for extension 0..0
.... display SΣI1..1stringShort, human-readable text representation of the organization.
... Slices for value[x] SΣI1..1Actual result
Slice: Unordered, Closed by type:$this
.... valueCodeableConceptCodeableConcept
.... valueQuantityQuantity
.... valueStringstring
.... value[x]:valueCodeableConcept ΣI0..1CodeableConceptActual result
Binding: Lab result findings (required)
..... Slices for extension 0..0
..... coding Σ0..*CodingCode defined by a terminology system
.... value[x]:valueQuantity ΣI0..1QuantityActual result
..... Slices for 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 ΣI0..1uriSystem that defines coded unit form
..... code Σ0..1codeCoded form of the unit
.... value[x]:valueString ΣI0..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 SI0..*BackboneElementProvides guide for interpretation. SHOULD include if using valueQuantity.
.... low I0..1SimpleQuantityLow Range, if relevant
.... high I0..1SimpleQuantityHigh Range, if relevant
.... type 0..1CodeableConceptReference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.

..... Slices for extension 0..0
..... coding Σ0..*CodingCode defined by a terminology system
.... text 0..1stringText based reference range in an observation

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet
Observation.meta.securityrequiredIdentityAssuranceLevel
Observation.statusrequiredObservationStatus
Observation.coderequiredLOINCCodes
Observation.value[x]:valueCodeableConceptrequiredLabResultFindings
Observation.value[x]:valueQuantity.comparatorrequiredQuantityComparator
Observation.referenceRange.typepreferredObservationReferenceRangeMeaningCodes
Observation.component.codeexampleLOINCCodes
Observation.component.dataAbsentReasonextensibleDataAbsentReason
Observation.component.interpretationextensibleObservationInterpretationCodes

Constraints

IdPathDetailsRequirements
dom-2ObservationIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3ObservationIf 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-4ObservationIf 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-5ObservationIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6ObservationA resource should have narrative for robust management
: text.`div`.exists()
obs-6ObservationdataAbsentReason SHALL only be present if Observation.value[x] is not present
: dataAbsentReason.empty() or value.empty()
obs-7ObservationIf 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()
ele-1Observation.metaAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.meta.securityAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.statusAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
vc-observation-status-shall-be-completeObservation.statusSHALL be `final`, `amended`, or `corrected`
: $this.lower() in ('final'|'amended'|'corrected')
ele-1Observation.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
vc-shall-not-be-a-covid-loincObservation.codeThis profile SHALL NOT be used to report results from COVID lab tests (https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1114.9/expansion). Use Covid19LaboratoryResultObservation instead.
: $this.coding.memberOf('http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1114.9').not()
ele-1Observation.subjectAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.subject.referenceAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.effective[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.performerAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.performer.displayAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
vc-should-be-under-30-charsObservation.performer.displayLength SHOULD be <30 for data minimization.
: $this.length() < 30
ele-1Observation.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.value[x]:valueCodeableConceptAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.value[x]:valueCodeableConcept.codingAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.value[x]:valueQuantityAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
vc-observation-quantity-should-have-rangeObservation.value[x]:valueQuantityQuantitative lab results SHOULD include reference range
: %resource.referenceRange.exists()
ele-1Observation.value[x]:valueQuantity.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Observation.value[x]:valueQuantity.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Observation.value[x]:valueQuantity.valueAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.value[x]:valueQuantity.comparatorAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.value[x]:valueQuantity.unitAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.value[x]:valueQuantity.systemAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.value[x]:valueQuantity.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.value[x]:valueStringAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
vc-should-be-under-20-charsObservation.value[x]:valueStringLength SHOULD be <20 for data minimization.
: $this.length() < 20
ele-1Observation.value[x]:valueString.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Observation.value[x]:valueString.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Observation.referenceRangeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
obs-3Observation.referenceRangeMust have at least a low or a high or text
: low.exists() or high.exists() or text.exists()
vc-observation-range-only-quantity-or-stringObservation.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())
ele-1Observation.referenceRange.lowAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.referenceRange.highAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.referenceRange.typeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.referenceRange.type.codingAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.referenceRange.textAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.component.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Observation.component.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Observation.component.modifierExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Observation.component.modifierExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Observation.component.codeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.component.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.component.dataAbsentReasonAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.component.interpretationAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Observation.component.referenceRangeAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())