HRSA 2024 Uniform Data System (UDS) Patient Level Submission (PLS) (UDS+) FHIR IG
2.0.0 - STU2 Release 1 - Standard for Trial-Use International flag

HRSA 2024 Uniform Data System (UDS) Patient Level Submission (PLS) (UDS+) FHIR IG, published by HRSA BPHC. This guide is not an authorized publication; it is the continuous build for version 2.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/drajer-health/uds-plus/ and changes regularly. See the Directory of published versions

Resource Profile: De-Identified UDS Plus Income

Official URL: http://fhir.org/guides/hrsa/uds-plus/StructureDefinition/de-identified-uds-plus-income-observation Version: 2.0.0
Standards status: Trial-use Maturity Level: 2 Computable Name: UDSPlusIncome

The UDS+ profile is based on the Observation resource and establishes the core elements, extensions, vocabularies and value sets for representing Income ranges for UDS+ program.

Introduction

This profile is used to represent de-identified Income information. The de-identification process has to remove all data elements not explicitly identified as "SUPPORTED" in the profile.

The HHS De-identification Guidance is to be followed to ensure appropriate level of de-identification is performed.

In FHIR Resources, text elements and reference.display elements which provide human readable information to the providers may be generated using programs and tools from the data present within the resource. For e.g a Income Observation resource text element may contain Patient information such as names. This type of information will enable identification of the individuals. In order to avoid inadvertent revealing of PII/PHI, text elements cannot be included in the De-identified FHIR resource and the submission will be rejected when text elements are present by the validation process.

Ids and References

The original Observation resource id should not be included in the De-identified Observation instance. Instead a new id should be created and provided as part of the FHIR resource. This Data Submitter should be capable of using the generated id to relink the data to the original Income Observation. All resource references to the Income Observation submitted as part of the UDS+ report should refer to newly generated id.

Resource references cannot contain text element as it may contain PHI/PII. The text element for following references are not allowed

  • subject

Representing Income Ranges

Income ranges are represented using the Observation.valueRange or Observation.valueQuanity element. The following values can be used to represent the Income ranges:

* 100% and below : use valueRange.high to represent 100% (Includes 100)
* 101–150% : use valueRange.low to represent 101, valueRange.high to represent 150 (Includes 101 and 150)
* 151–200% : use valueRange.low to represent 151, valueRange.high to represent 200 (Includes 151 and 200)
* Over 200% : use valueQuantity.value to represent 200, units of % and comparator of ">", valueRange cannot be used for representing more than 200%.
* For unknown use the dataAbsentReason

Date Truncation

The Data Submitter has to truncate the following dates to only have a precision of year

  • effectiveDateTime.

Examples

Examples of identifiable data and its corresponding de-identifiable data is present in Reporting Guidance.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Observation C 0..* Observation De-Identified UDS Plus Income
Constraints: obs-6, obs-7
Observation.id This element must be supported. This element is included in summaries. 0..1 id The de-identified Observation identifier created by the health center to send data to UDS+ Data Receiver
Observation.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Observation.Slices for extension Content/Rules for all slices
Observation.Slices for extension.extension:deidentifiedIssuedTime 0..1 dateTime Indicates the time with a precision of only Year.
URL: http://fhir.org/guides/hrsa/uds-plus/StructureDefinition/uds-plus-deidentified-instant-extension
Observation.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Observation.status This element is a modifier element. This element must be supported. This element is included in summaries. 1..1 code registered | preliminary | final | amended +
Binding: ObservationStatus (required): Codes providing the status of an observation.
Fixed Value: final
Observation.code This element must be supported. This element is included in summaries. 1..1 CodeableConcept Type of observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
Observation.code.id 0..1 string Unique id for inter-element referencing
Observation.code.extension 0..* Extension Additional content defined by implementations
Observation.code.coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
Observation.code.coding.id 0..1 string Unique id for inter-element referencing
Observation.code.coding.extension 0..* Extension Additional content defined by implementations
Observation.code.coding.system 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
Observation.code.coding.version 0..1 string Version of the system - if relevant
Observation.code.coding.code 1..1 code Symbol in syntax defined by the system
Fixed Value: 63058-2
Observation.code.coding.display 0..1 string Representation defined by the system
Observation.code.coding.userSelected 0..1 boolean If this coding was chosen directly by the user
Observation.code.text 0..1 string Plain text representation of the concept
Observation.subject This element must be supported. This element is included in summaries. 1..1 Reference(De-Identified UDS Plus Patient) Who and/or what the observation is about
Observation.effective[x] This element must be supported. This element is included in summaries. C 0..1 Clinically relevant time/time-period for observation
Constraints: uds-plus-inc-1, uds-plus-inc-1a, uds-plus-inc-1b, uds-plus-inc-2, uds-plus-inc-2a, uds-plus-inc-2b, uds-plus-inc-3, uds-plus-inc-3a, uds-plus-inc-3b, uds-plus-inc-4, uds-plus-inc-5, uds-plus-res-5a, uds-plus-res-5b
Observation.effective[x].effectiveDateTime dateTime This target must be supported.
Observation.effective[x].effectivePeriod Period
Observation.effective[x].effectiveTiming Timing
Observation.value[x] This element must be supported. This element is included in summaries. C 0..1 Actual result
Constraints: uds-plus-inc-6, uds-plus-inc-7, uds-plus-inc-8
Observation.value[x].value[x]All Types Content/Rules for all Types
Observation.value[x].value[x]All Types.Slices for extension Content/Rules for all slices
Observation.value[x].value[x]All Types.Slices for extension.extension:dataAbsentReason This element must be supported. 0..1 code Reason why the data is not present
URL: http://hl7.org/fhir/StructureDefinition/data-absent-reason
Binding: DataAbsentReason (required): Used to specify why the normally expected content of the data element is missing.
Observation.value[x].valueRange Range
Observation.value[x].valueQuantity Quantity

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component.​code Base example LOINC Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Observation If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Observation If 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-4 error Observation If 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-5 error Observation If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Observation A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
obs-6 error Observation dataAbsentReason SHALL only be present if Observation.value[x] is not present dataAbsentReason.empty() or value.empty()
obs-7 error Observation If 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()
uds-plus-inc-1 error Observation.effective[x] All dateTime data elements should be truncated to a year only for de-identified resources. $this is DateTime implies $this.toString().length() = 4
uds-plus-inc-1a error Observation.effective[x] All dateTime data elements should have valid year > 1900 $this is DateTime implies $this.toString() >= '1900'
uds-plus-inc-1b error Observation.effective[x] All dateTime data elements should have valid year < 2030 $this is DateTime implies $this.toString() <= '2030'
uds-plus-inc-2 error Observation.effective[x] All Period.start data elements should be truncated to a year only for de-identified resources. $this is Period and Period.start.exists() implies $this.start.toString().length() = 4
uds-plus-inc-2a error Observation.effective[x] All Period.start data elements should have valid year > 1900 $this is Period and Period.start.exists() implies $this.start.toString() >= '1900'
uds-plus-inc-2b error Observation.effective[x] All Period.start data elements should have valid year < 2030 $this is Period and Period.start.exists() implies $this.start.toString() <= '2030'
uds-plus-inc-3 error Observation.effective[x] All Period.emd data elements should be truncated to a year only for de-identified resources. $this is Period and Period.end.exists() implies $this.end.toString().length() = 4
uds-plus-inc-3a error Observation.effective[x] All Period.end data elements should have valid year > 1900 $this is Period and Period.end.exists() implies $this.end.toString() >= '1900'
uds-plus-inc-3b error Observation.effective[x] All Period.end data elements should have valid year < 2030 $this is Period and Period.end.exists() implies $this.end.toString() <= '2030'
uds-plus-inc-4 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.count() = 1
uds-plus-inc-5 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.first().toString().length() = 4
uds-plus-inc-6 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements to be between 101% and 150% or between 151% and 200% $this is Range and Range.low.exists() and Range.high.exists() implies ((Range.low.value >= 101 and Range.high.value <= 150) or (Range.low.value >= 151 and Range.high.value <= 200))
uds-plus-inc-7 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when less than 100% $this is Range and Range.low.exists().not() and Range.high.exists() implies (Range.high.value <= 100)
uds-plus-inc-8 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when more than 200%, Quantity should include value(200), code(%) and comparator(>) $this is Quantity implies ($this.value >= 200 and $this.code = '%' and $this.comparator = '>')
uds-plus-res-5a error Observation.effective[x] All Timing data elements should have valid year > 1900 $this is Timing and Timing.event.exists() implies $this.event.first().toString() >= '1900'
uds-plus-res-5b error Observation.effective[x] All Timing data elements should have valid year < 2030 $this is Timing and Timing.event.exists() implies $this.event.first().toString() <= '2030'

This structure is derived from Observation

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Observation 0..* Observation De-Identified UDS Plus Income
Observation.id This element must be supported. 0..1 id The de-identified Observation identifier created by the health center to send data to UDS+ Data Receiver
Observation.text 0..0 Cannot include any text in the resource as part of the de-identified data.
Observation.contained 0..0 Cannot include any contained resources in the resource as part of the de-identified data.
Observation.Slices for extension.extension:deidentifiedIssuedTime 0..1 dateTime Indicates the time with a precision of only Year.
URL: http://fhir.org/guides/hrsa/uds-plus/StructureDefinition/uds-plus-deidentified-instant-extension
Observation.status This element must be supported. 1..1 code registered | preliminary | final | amended +
Fixed Value: final
Observation.code This element must be supported. 1..1 CodeableConcept Type of observation (code / type)
Required Pattern: At least the following
Observation.code.coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
Observation.code.coding.system 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
Observation.code.coding.code 1..1 code Symbol in syntax defined by the system
Fixed Value: 63058-2
Observation.subject This element must be supported. 1..1 Reference(De-Identified UDS Plus Patient) Who and/or what the observation is about
Observation.subject.display 0..0 Text alternative for the resource
Observation.encounter
Observation.encounter.display 0..0 Text alternative for the resource
Observation.effective[x] This element must be supported. C 0..1 Clinically relevant time/time-period for observation
Constraints: uds-plus-inc-1, uds-plus-inc-1a, uds-plus-inc-1b, uds-plus-inc-2, uds-plus-inc-2a, uds-plus-inc-2b, uds-plus-inc-3, uds-plus-inc-3a, uds-plus-inc-3b, uds-plus-inc-4, uds-plus-inc-5, uds-plus-res-5a, uds-plus-res-5b
Observation.effective[x].effectiveDateTime dateTime This target must be supported.
Observation.effective[x].effectivePeriod Period
Observation.effective[x].effectiveTiming Timing
Observation.issued This element must be supported. 0..0 Date/Time this version was made available
Observation.performer
Observation.performer.display 0..0 Text alternative for the resource
Observation.value[x] This element must be supported. C 0..1 Actual result
Constraints: uds-plus-inc-6, uds-plus-inc-7, uds-plus-inc-8
Observation.value[x].value[x]All Types Content/Rules for all Types
Observation.value[x].value[x]All Types.Slices for extension Content/Rules for all slices
Observation.value[x].value[x]All Types.Slices for extension.extension:dataAbsentReason This element must be supported. 0..1 code Reason why the data is not present
URL: http://hl7.org/fhir/StructureDefinition/data-absent-reason
Binding: DataAbsentReason (required): Used to specify why the normally expected content of the data element is missing.
Observation.value[x].valueRange Range
Observation.value[x].valueQuantity Quantity
Observation.note 0..0 Comments about the observation
Observation.bodySite 0..0 Observed body part
Observation.specimen 0..0 Specimen used for this observation
Observation.device 0..0 (Measurement) Device
Observation.hasMember 0..0 Related resource that belongs to the Observation group
Observation.derivedFrom 0..0 Related measurements the observation is made from
Observation.component 0..0 Component results

doco Documentation for this format

Constraints

Id Grade Path(s) Description Expression
uds-plus-inc-1 error Observation.effective[x] All dateTime data elements should be truncated to a year only for de-identified resources. $this is DateTime implies $this.toString().length() = 4
uds-plus-inc-1a error Observation.effective[x] All dateTime data elements should have valid year > 1900 $this is DateTime implies $this.toString() >= '1900'
uds-plus-inc-1b error Observation.effective[x] All dateTime data elements should have valid year < 2030 $this is DateTime implies $this.toString() <= '2030'
uds-plus-inc-2 error Observation.effective[x] All Period.start data elements should be truncated to a year only for de-identified resources. $this is Period and Period.start.exists() implies $this.start.toString().length() = 4
uds-plus-inc-2a error Observation.effective[x] All Period.start data elements should have valid year > 1900 $this is Period and Period.start.exists() implies $this.start.toString() >= '1900'
uds-plus-inc-2b error Observation.effective[x] All Period.start data elements should have valid year < 2030 $this is Period and Period.start.exists() implies $this.start.toString() <= '2030'
uds-plus-inc-3 error Observation.effective[x] All Period.emd data elements should be truncated to a year only for de-identified resources. $this is Period and Period.end.exists() implies $this.end.toString().length() = 4
uds-plus-inc-3a error Observation.effective[x] All Period.end data elements should have valid year > 1900 $this is Period and Period.end.exists() implies $this.end.toString() >= '1900'
uds-plus-inc-3b error Observation.effective[x] All Period.end data elements should have valid year < 2030 $this is Period and Period.end.exists() implies $this.end.toString() <= '2030'
uds-plus-inc-4 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.count() = 1
uds-plus-inc-5 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.first().toString().length() = 4
uds-plus-inc-6 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements to be between 101% and 150% or between 151% and 200% $this is Range and Range.low.exists() and Range.high.exists() implies ((Range.low.value >= 101 and Range.high.value <= 150) or (Range.low.value >= 151 and Range.high.value <= 200))
uds-plus-inc-7 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when less than 100% $this is Range and Range.low.exists().not() and Range.high.exists() implies (Range.high.value <= 100)
uds-plus-inc-8 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when more than 200%, Quantity should include value(200), code(%) and comparator(>) $this is Quantity implies ($this.value >= 200 and $this.code = '%' and $this.comparator = '>')
uds-plus-res-5a error Observation.effective[x] All Timing data elements should have valid year > 1900 $this is Timing and Timing.event.exists() implies $this.event.first().toString() >= '1900'
uds-plus-res-5b error Observation.effective[x] All Timing data elements should have valid year < 2030 $this is Timing and Timing.event.exists() implies $this.event.first().toString() <= '2030'
NameFlagsCard.TypeDescription & Constraints    Filter: doco
Observation C 0..* Observation De-Identified UDS Plus Income
Constraints: obs-6, obs-7
Observation.id This element must be supported. This element is included in summaries. 0..1 id The de-identified Observation identifier created by the health center to send data to UDS+ Data Receiver
Observation.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Observation.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Observation.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
Observation.Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
Observation.Slices for extension.extension:deidentifiedIssuedTime 0..1 dateTime Indicates the time with a precision of only Year.
URL: http://fhir.org/guides/hrsa/uds-plus/StructureDefinition/uds-plus-deidentified-instant-extension
Observation.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Observation.identifier This element is included in summaries. 0..* Identifier Business Identifier for observation
Observation.basedOn This element is included in summaries. 0..* Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest) Fulfills plan, proposal or order
Observation.partOf This element is included in summaries. 0..* Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) Part of referenced event
Observation.status This element is a modifier element. This element must be supported. This element is included in summaries. 1..1 code registered | preliminary | final | amended +
Binding: ObservationStatus (required): Codes providing the status of an observation.
Fixed Value: final
Observation.category 0..* CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
Observation.code This element must be supported. This element is included in summaries. 1..1 CodeableConcept Type of observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
Observation.code.id 0..1 string Unique id for inter-element referencing
Observation.code.extension 0..* Extension Additional content defined by implementations
Observation.code.coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
Observation.code.coding.id 0..1 string Unique id for inter-element referencing
Observation.code.coding.extension 0..* Extension Additional content defined by implementations
Observation.code.coding.system 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
Observation.code.coding.version 0..1 string Version of the system - if relevant
Observation.code.coding.code 1..1 code Symbol in syntax defined by the system
Fixed Value: 63058-2
Observation.code.coding.display 0..1 string Representation defined by the system
Observation.code.coding.userSelected 0..1 boolean If this coding was chosen directly by the user
Observation.code.text 0..1 string Plain text representation of the concept
Observation.subject This element must be supported. This element is included in summaries. 1..1 Reference(De-Identified UDS Plus Patient) Who and/or what the observation is about
Observation.subject.id 0..1 string Unique id for inter-element referencing
Observation.subject.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Observation.subject.reference This element is included in summaries. C 0..1 string Literal reference, Relative, internal or absolute URL
Observation.subject.type This element is included in summaries. 0..1 uri Type the reference refers to (e.g. "Patient")
Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
Observation.subject.identifier This element is included in summaries. 0..1 Identifier Logical reference, when literal reference is not known
Observation.focus This element is included in summaries. 0..* Reference(Resource) What the observation is about, when it is not about the subject of record
Observation.encounter This element is included in summaries. 0..1 Reference(Encounter) Healthcare event during which this observation is made
Observation.encounter.id 0..1 string Unique id for inter-element referencing
Observation.encounter.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Observation.encounter.reference This element is included in summaries. C 0..1 string Literal reference, Relative, internal or absolute URL
Observation.encounter.type This element is included in summaries. 0..1 uri Type the reference refers to (e.g. "Patient")
Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
Observation.encounter.identifier This element is included in summaries. 0..1 Identifier Logical reference, when literal reference is not known
Observation.effective[x] This element must be supported. This element is included in summaries. C 0..1 Clinically relevant time/time-period for observation
Constraints: uds-plus-inc-1, uds-plus-inc-1a, uds-plus-inc-1b, uds-plus-inc-2, uds-plus-inc-2a, uds-plus-inc-2b, uds-plus-inc-3, uds-plus-inc-3a, uds-plus-inc-3b, uds-plus-inc-4, uds-plus-inc-5, uds-plus-res-5a, uds-plus-res-5b
Observation.effective[x].effectiveDateTime dateTime This target must be supported.
Observation.effective[x].effectivePeriod Period
Observation.effective[x].effectiveTiming Timing
Observation.performer This element is included in summaries. 0..* Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) Who is responsible for the observation
Observation.performer.id 0..1 string Unique id for inter-element referencing
Observation.performer.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Observation.performer.reference This element is included in summaries. C 0..1 string Literal reference, Relative, internal or absolute URL
Observation.performer.type This element is included in summaries. 0..1 uri Type the reference refers to (e.g. "Patient")
Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
Observation.performer.identifier This element is included in summaries. 0..1 Identifier Logical reference, when literal reference is not known
Observation.value[x] This element must be supported. This element is included in summaries. C 0..1 Actual result
Constraints: uds-plus-inc-6, uds-plus-inc-7, uds-plus-inc-8
Observation.value[x].value[x]All Types Content/Rules for all Types
Observation.value[x].value[x]All Types.id 0..1 string Unique id for inter-element referencing
Observation.value[x].value[x]All Types.Slices for extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Observation.value[x].value[x]All Types.Slices for extension.extension:dataAbsentReason This element must be supported. 0..1 code Reason why the data is not present
URL: http://hl7.org/fhir/StructureDefinition/data-absent-reason
Binding: DataAbsentReason (required): Used to specify why the normally expected content of the data element is missing.
Observation.value[x].valueRange Range
Observation.value[x].valueQuantity Quantity
Observation.dataAbsentReason C 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
Observation.interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
Observation.method 0..1 CodeableConcept How it was done
Binding: ObservationMethods (example): Methods for simple observations.
Observation.referenceRange C 0..* BackboneElement Provides guide for interpretation
Constraints: obs-3
Observation.referenceRange.id 0..1 string Unique id for inter-element referencing
Observation.referenceRange.extension 0..* Extension Additional content defined by implementations
Observation.referenceRange.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Observation.referenceRange.low C 0..1 SimpleQuantity(4.0.1) Low Range, if relevant
Constraints: sqty-1
Observation.referenceRange.high C 0..1 SimpleQuantity(4.0.1) High Range, if relevant
Constraints: sqty-1
Observation.referenceRange.type 0..1 CodeableConcept Reference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.
Observation.referenceRange.appliesTo 0..* CodeableConcept Reference range population
Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to.
Observation.referenceRange.age 0..1 Range Applicable age range, if relevant
Observation.referenceRange.text 0..1 string Text based reference range in an observation

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.category Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.subject.​type Base extensible ResourceType 📍4.0.1 FHIR Std.
Observation.encounter.​type Base extensible ResourceType 📍4.0.1 FHIR Std.
Observation.performer.​type Base extensible ResourceType 📍4.0.1 FHIR Std.
Observation.dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.method Base example Observation Methods 📍4.0.1 FHIR Std.
Observation.referenceRange.​type Base preferred Observation Reference Range Meaning Codes 📍4.0.1 FHIR Std.
Observation.referenceRange.​appliesTo Base example Observation Reference Range Applies To Codes 📍4.0.1 FHIR Std.
Observation.component.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Observation If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Observation If 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-4 error Observation If 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-5 error Observation If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Observation A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
obs-3 error Observation.referenceRange Must have at least a low or a high or text low.exists() or high.exists() or text.exists()
obs-6 error Observation dataAbsentReason SHALL only be present if Observation.value[x] is not present dataAbsentReason.empty() or value.empty()
obs-7 error Observation If 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()
sqty-1 error Observation.referenceRange.low, Observation.referenceRange.high The comparator is not used on a SimpleQuantity comparator.empty()
uds-plus-inc-1 error Observation.effective[x] All dateTime data elements should be truncated to a year only for de-identified resources. $this is DateTime implies $this.toString().length() = 4
uds-plus-inc-1a error Observation.effective[x] All dateTime data elements should have valid year > 1900 $this is DateTime implies $this.toString() >= '1900'
uds-plus-inc-1b error Observation.effective[x] All dateTime data elements should have valid year < 2030 $this is DateTime implies $this.toString() <= '2030'
uds-plus-inc-2 error Observation.effective[x] All Period.start data elements should be truncated to a year only for de-identified resources. $this is Period and Period.start.exists() implies $this.start.toString().length() = 4
uds-plus-inc-2a error Observation.effective[x] All Period.start data elements should have valid year > 1900 $this is Period and Period.start.exists() implies $this.start.toString() >= '1900'
uds-plus-inc-2b error Observation.effective[x] All Period.start data elements should have valid year < 2030 $this is Period and Period.start.exists() implies $this.start.toString() <= '2030'
uds-plus-inc-3 error Observation.effective[x] All Period.emd data elements should be truncated to a year only for de-identified resources. $this is Period and Period.end.exists() implies $this.end.toString().length() = 4
uds-plus-inc-3a error Observation.effective[x] All Period.end data elements should have valid year > 1900 $this is Period and Period.end.exists() implies $this.end.toString() >= '1900'
uds-plus-inc-3b error Observation.effective[x] All Period.end data elements should have valid year < 2030 $this is Period and Period.end.exists() implies $this.end.toString() <= '2030'
uds-plus-inc-4 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.count() = 1
uds-plus-inc-5 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.first().toString().length() = 4
uds-plus-inc-6 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements to be between 101% and 150% or between 151% and 200% $this is Range and Range.low.exists() and Range.high.exists() implies ((Range.low.value >= 101 and Range.high.value <= 150) or (Range.low.value >= 151 and Range.high.value <= 200))
uds-plus-inc-7 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when less than 100% $this is Range and Range.low.exists().not() and Range.high.exists() implies (Range.high.value <= 100)
uds-plus-inc-8 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when more than 200%, Quantity should include value(200), code(%) and comparator(>) $this is Quantity implies ($this.value >= 200 and $this.code = '%' and $this.comparator = '>')
uds-plus-res-5a error Observation.effective[x] All Timing data elements should have valid year > 1900 $this is Timing and Timing.event.exists() implies $this.event.first().toString() >= '1900'
uds-plus-res-5b error Observation.effective[x] All Timing data elements should have valid year < 2030 $this is Timing and Timing.event.exists() implies $this.event.first().toString() <= '2030'

This structure is derived from Observation

Summary

Mandatory: 3 elements
Must-Support: 8 elements
Fixed: 1 element
Prohibited: 13 elements

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

Maturity: 2

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Observation C 0..* Observation De-Identified UDS Plus Income
Constraints: obs-6, obs-7
Observation.id This element must be supported. This element is included in summaries. 0..1 id The de-identified Observation identifier created by the health center to send data to UDS+ Data Receiver
Observation.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Observation.Slices for extension Content/Rules for all slices
Observation.Slices for extension.extension:deidentifiedIssuedTime 0..1 dateTime Indicates the time with a precision of only Year.
URL: http://fhir.org/guides/hrsa/uds-plus/StructureDefinition/uds-plus-deidentified-instant-extension
Observation.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Observation.status This element is a modifier element. This element must be supported. This element is included in summaries. 1..1 code registered | preliminary | final | amended +
Binding: ObservationStatus (required): Codes providing the status of an observation.
Fixed Value: final
Observation.code This element must be supported. This element is included in summaries. 1..1 CodeableConcept Type of observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
Observation.code.id 0..1 string Unique id for inter-element referencing
Observation.code.extension 0..* Extension Additional content defined by implementations
Observation.code.coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
Observation.code.coding.id 0..1 string Unique id for inter-element referencing
Observation.code.coding.extension 0..* Extension Additional content defined by implementations
Observation.code.coding.system 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
Observation.code.coding.version 0..1 string Version of the system - if relevant
Observation.code.coding.code 1..1 code Symbol in syntax defined by the system
Fixed Value: 63058-2
Observation.code.coding.display 0..1 string Representation defined by the system
Observation.code.coding.userSelected 0..1 boolean If this coding was chosen directly by the user
Observation.code.text 0..1 string Plain text representation of the concept
Observation.subject This element must be supported. This element is included in summaries. 1..1 Reference(De-Identified UDS Plus Patient) Who and/or what the observation is about
Observation.effective[x] This element must be supported. This element is included in summaries. C 0..1 Clinically relevant time/time-period for observation
Constraints: uds-plus-inc-1, uds-plus-inc-1a, uds-plus-inc-1b, uds-plus-inc-2, uds-plus-inc-2a, uds-plus-inc-2b, uds-plus-inc-3, uds-plus-inc-3a, uds-plus-inc-3b, uds-plus-inc-4, uds-plus-inc-5, uds-plus-res-5a, uds-plus-res-5b
Observation.effective[x].effectiveDateTime dateTime This target must be supported.
Observation.effective[x].effectivePeriod Period
Observation.effective[x].effectiveTiming Timing
Observation.value[x] This element must be supported. This element is included in summaries. C 0..1 Actual result
Constraints: uds-plus-inc-6, uds-plus-inc-7, uds-plus-inc-8
Observation.value[x].value[x]All Types Content/Rules for all Types
Observation.value[x].value[x]All Types.Slices for extension Content/Rules for all slices
Observation.value[x].value[x]All Types.Slices for extension.extension:dataAbsentReason This element must be supported. 0..1 code Reason why the data is not present
URL: http://hl7.org/fhir/StructureDefinition/data-absent-reason
Binding: DataAbsentReason (required): Used to specify why the normally expected content of the data element is missing.
Observation.value[x].valueRange Range
Observation.value[x].valueQuantity Quantity

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component.​code Base example LOINC Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Observation If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Observation If 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-4 error Observation If 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-5 error Observation If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Observation A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
obs-6 error Observation dataAbsentReason SHALL only be present if Observation.value[x] is not present dataAbsentReason.empty() or value.empty()
obs-7 error Observation If 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()
uds-plus-inc-1 error Observation.effective[x] All dateTime data elements should be truncated to a year only for de-identified resources. $this is DateTime implies $this.toString().length() = 4
uds-plus-inc-1a error Observation.effective[x] All dateTime data elements should have valid year > 1900 $this is DateTime implies $this.toString() >= '1900'
uds-plus-inc-1b error Observation.effective[x] All dateTime data elements should have valid year < 2030 $this is DateTime implies $this.toString() <= '2030'
uds-plus-inc-2 error Observation.effective[x] All Period.start data elements should be truncated to a year only for de-identified resources. $this is Period and Period.start.exists() implies $this.start.toString().length() = 4
uds-plus-inc-2a error Observation.effective[x] All Period.start data elements should have valid year > 1900 $this is Period and Period.start.exists() implies $this.start.toString() >= '1900'
uds-plus-inc-2b error Observation.effective[x] All Period.start data elements should have valid year < 2030 $this is Period and Period.start.exists() implies $this.start.toString() <= '2030'
uds-plus-inc-3 error Observation.effective[x] All Period.emd data elements should be truncated to a year only for de-identified resources. $this is Period and Period.end.exists() implies $this.end.toString().length() = 4
uds-plus-inc-3a error Observation.effective[x] All Period.end data elements should have valid year > 1900 $this is Period and Period.end.exists() implies $this.end.toString() >= '1900'
uds-plus-inc-3b error Observation.effective[x] All Period.end data elements should have valid year < 2030 $this is Period and Period.end.exists() implies $this.end.toString() <= '2030'
uds-plus-inc-4 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.count() = 1
uds-plus-inc-5 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.first().toString().length() = 4
uds-plus-inc-6 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements to be between 101% and 150% or between 151% and 200% $this is Range and Range.low.exists() and Range.high.exists() implies ((Range.low.value >= 101 and Range.high.value <= 150) or (Range.low.value >= 151 and Range.high.value <= 200))
uds-plus-inc-7 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when less than 100% $this is Range and Range.low.exists().not() and Range.high.exists() implies (Range.high.value <= 100)
uds-plus-inc-8 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when more than 200%, Quantity should include value(200), code(%) and comparator(>) $this is Quantity implies ($this.value >= 200 and $this.code = '%' and $this.comparator = '>')
uds-plus-res-5a error Observation.effective[x] All Timing data elements should have valid year > 1900 $this is Timing and Timing.event.exists() implies $this.event.first().toString() >= '1900'
uds-plus-res-5b error Observation.effective[x] All Timing data elements should have valid year < 2030 $this is Timing and Timing.event.exists() implies $this.event.first().toString() <= '2030'

Differential View

This structure is derived from Observation

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Observation 0..* Observation De-Identified UDS Plus Income
Observation.id This element must be supported. 0..1 id The de-identified Observation identifier created by the health center to send data to UDS+ Data Receiver
Observation.text 0..0 Cannot include any text in the resource as part of the de-identified data.
Observation.contained 0..0 Cannot include any contained resources in the resource as part of the de-identified data.
Observation.Slices for extension Content/Rules for all slices
Observation.Slices for extension.extension:deidentifiedIssuedTime 0..1 dateTime Indicates the time with a precision of only Year.
URL: http://fhir.org/guides/hrsa/uds-plus/StructureDefinition/uds-plus-deidentified-instant-extension
Observation.status This element must be supported. 1..1 code registered | preliminary | final | amended +
Fixed Value: final
Observation.code This element must be supported. 1..1 CodeableConcept Type of observation (code / type)
Required Pattern: At least the following
Observation.code.coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
Observation.code.coding.system 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
Observation.code.coding.code 1..1 code Symbol in syntax defined by the system
Fixed Value: 63058-2
Observation.subject This element must be supported. 1..1 Reference(De-Identified UDS Plus Patient) Who and/or what the observation is about
Observation.subject.display 0..0 Text alternative for the resource
Observation.encounter
Observation.encounter.display 0..0 Text alternative for the resource
Observation.effective[x] This element must be supported. C 0..1 Clinically relevant time/time-period for observation
Constraints: uds-plus-inc-1, uds-plus-inc-1a, uds-plus-inc-1b, uds-plus-inc-2, uds-plus-inc-2a, uds-plus-inc-2b, uds-plus-inc-3, uds-plus-inc-3a, uds-plus-inc-3b, uds-plus-inc-4, uds-plus-inc-5, uds-plus-res-5a, uds-plus-res-5b
Observation.effective[x].effectiveDateTime dateTime This target must be supported.
Observation.effective[x].effectivePeriod Period
Observation.effective[x].effectiveTiming Timing
Observation.issued This element must be supported. 0..0 Date/Time this version was made available
Observation.performer
Observation.performer.display 0..0 Text alternative for the resource
Observation.value[x] This element must be supported. C 0..1 Actual result
Constraints: uds-plus-inc-6, uds-plus-inc-7, uds-plus-inc-8
Observation.value[x].value[x]All Types Content/Rules for all Types
Observation.value[x].value[x]All Types.Slices for extension Content/Rules for all slices
Observation.value[x].value[x]All Types.Slices for extension.extension:dataAbsentReason This element must be supported. 0..1 code Reason why the data is not present
URL: http://hl7.org/fhir/StructureDefinition/data-absent-reason
Binding: DataAbsentReason (required): Used to specify why the normally expected content of the data element is missing.
Observation.value[x].valueRange Range
Observation.value[x].valueQuantity Quantity
Observation.note 0..0 Comments about the observation
Observation.bodySite 0..0 Observed body part
Observation.specimen 0..0 Specimen used for this observation
Observation.device 0..0 (Measurement) Device
Observation.hasMember 0..0 Related resource that belongs to the Observation group
Observation.derivedFrom 0..0 Related measurements the observation is made from
Observation.component 0..0 Component results

doco Documentation for this format

Constraints

Id Grade Path(s) Description Expression
uds-plus-inc-1 error Observation.effective[x] All dateTime data elements should be truncated to a year only for de-identified resources. $this is DateTime implies $this.toString().length() = 4
uds-plus-inc-1a error Observation.effective[x] All dateTime data elements should have valid year > 1900 $this is DateTime implies $this.toString() >= '1900'
uds-plus-inc-1b error Observation.effective[x] All dateTime data elements should have valid year < 2030 $this is DateTime implies $this.toString() <= '2030'
uds-plus-inc-2 error Observation.effective[x] All Period.start data elements should be truncated to a year only for de-identified resources. $this is Period and Period.start.exists() implies $this.start.toString().length() = 4
uds-plus-inc-2a error Observation.effective[x] All Period.start data elements should have valid year > 1900 $this is Period and Period.start.exists() implies $this.start.toString() >= '1900'
uds-plus-inc-2b error Observation.effective[x] All Period.start data elements should have valid year < 2030 $this is Period and Period.start.exists() implies $this.start.toString() <= '2030'
uds-plus-inc-3 error Observation.effective[x] All Period.emd data elements should be truncated to a year only for de-identified resources. $this is Period and Period.end.exists() implies $this.end.toString().length() = 4
uds-plus-inc-3a error Observation.effective[x] All Period.end data elements should have valid year > 1900 $this is Period and Period.end.exists() implies $this.end.toString() >= '1900'
uds-plus-inc-3b error Observation.effective[x] All Period.end data elements should have valid year < 2030 $this is Period and Period.end.exists() implies $this.end.toString() <= '2030'
uds-plus-inc-4 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.count() = 1
uds-plus-inc-5 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.first().toString().length() = 4
uds-plus-inc-6 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements to be between 101% and 150% or between 151% and 200% $this is Range and Range.low.exists() and Range.high.exists() implies ((Range.low.value >= 101 and Range.high.value <= 150) or (Range.low.value >= 151 and Range.high.value <= 200))
uds-plus-inc-7 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when less than 100% $this is Range and Range.low.exists().not() and Range.high.exists() implies (Range.high.value <= 100)
uds-plus-inc-8 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when more than 200%, Quantity should include value(200), code(%) and comparator(>) $this is Quantity implies ($this.value >= 200 and $this.code = '%' and $this.comparator = '>')
uds-plus-res-5a error Observation.effective[x] All Timing data elements should have valid year > 1900 $this is Timing and Timing.event.exists() implies $this.event.first().toString() >= '1900'
uds-plus-res-5b error Observation.effective[x] All Timing data elements should have valid year < 2030 $this is Timing and Timing.event.exists() implies $this.event.first().toString() <= '2030'

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Observation C 0..* Observation De-Identified UDS Plus Income
Constraints: obs-6, obs-7
Observation.id This element must be supported. This element is included in summaries. 0..1 id The de-identified Observation identifier created by the health center to send data to UDS+ Data Receiver
Observation.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Observation.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Observation.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
Observation.Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
Observation.Slices for extension.extension:deidentifiedIssuedTime 0..1 dateTime Indicates the time with a precision of only Year.
URL: http://fhir.org/guides/hrsa/uds-plus/StructureDefinition/uds-plus-deidentified-instant-extension
Observation.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Observation.identifier This element is included in summaries. 0..* Identifier Business Identifier for observation
Observation.basedOn This element is included in summaries. 0..* Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest) Fulfills plan, proposal or order
Observation.partOf This element is included in summaries. 0..* Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) Part of referenced event
Observation.status This element is a modifier element. This element must be supported. This element is included in summaries. 1..1 code registered | preliminary | final | amended +
Binding: ObservationStatus (required): Codes providing the status of an observation.
Fixed Value: final
Observation.category 0..* CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
Observation.code This element must be supported. This element is included in summaries. 1..1 CodeableConcept Type of observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.
Required Pattern: At least the following
Observation.code.id 0..1 string Unique id for inter-element referencing
Observation.code.extension 0..* Extension Additional content defined by implementations
Observation.code.coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
Observation.code.coding.id 0..1 string Unique id for inter-element referencing
Observation.code.coding.extension 0..* Extension Additional content defined by implementations
Observation.code.coding.system 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
Observation.code.coding.version 0..1 string Version of the system - if relevant
Observation.code.coding.code 1..1 code Symbol in syntax defined by the system
Fixed Value: 63058-2
Observation.code.coding.display 0..1 string Representation defined by the system
Observation.code.coding.userSelected 0..1 boolean If this coding was chosen directly by the user
Observation.code.text 0..1 string Plain text representation of the concept
Observation.subject This element must be supported. This element is included in summaries. 1..1 Reference(De-Identified UDS Plus Patient) Who and/or what the observation is about
Observation.subject.id 0..1 string Unique id for inter-element referencing
Observation.subject.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Observation.subject.reference This element is included in summaries. C 0..1 string Literal reference, Relative, internal or absolute URL
Observation.subject.type This element is included in summaries. 0..1 uri Type the reference refers to (e.g. "Patient")
Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
Observation.subject.identifier This element is included in summaries. 0..1 Identifier Logical reference, when literal reference is not known
Observation.focus This element is included in summaries. 0..* Reference(Resource) What the observation is about, when it is not about the subject of record
Observation.encounter This element is included in summaries. 0..1 Reference(Encounter) Healthcare event during which this observation is made
Observation.encounter.id 0..1 string Unique id for inter-element referencing
Observation.encounter.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Observation.encounter.reference This element is included in summaries. C 0..1 string Literal reference, Relative, internal or absolute URL
Observation.encounter.type This element is included in summaries. 0..1 uri Type the reference refers to (e.g. "Patient")
Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
Observation.encounter.identifier This element is included in summaries. 0..1 Identifier Logical reference, when literal reference is not known
Observation.effective[x] This element must be supported. This element is included in summaries. C 0..1 Clinically relevant time/time-period for observation
Constraints: uds-plus-inc-1, uds-plus-inc-1a, uds-plus-inc-1b, uds-plus-inc-2, uds-plus-inc-2a, uds-plus-inc-2b, uds-plus-inc-3, uds-plus-inc-3a, uds-plus-inc-3b, uds-plus-inc-4, uds-plus-inc-5, uds-plus-res-5a, uds-plus-res-5b
Observation.effective[x].effectiveDateTime dateTime This target must be supported.
Observation.effective[x].effectivePeriod Period
Observation.effective[x].effectiveTiming Timing
Observation.performer This element is included in summaries. 0..* Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) Who is responsible for the observation
Observation.performer.id 0..1 string Unique id for inter-element referencing
Observation.performer.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Observation.performer.reference This element is included in summaries. C 0..1 string Literal reference, Relative, internal or absolute URL
Observation.performer.type This element is included in summaries. 0..1 uri Type the reference refers to (e.g. "Patient")
Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
Observation.performer.identifier This element is included in summaries. 0..1 Identifier Logical reference, when literal reference is not known
Observation.value[x] This element must be supported. This element is included in summaries. C 0..1 Actual result
Constraints: uds-plus-inc-6, uds-plus-inc-7, uds-plus-inc-8
Observation.value[x].value[x]All Types Content/Rules for all Types
Observation.value[x].value[x]All Types.id 0..1 string Unique id for inter-element referencing
Observation.value[x].value[x]All Types.Slices for extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Observation.value[x].value[x]All Types.Slices for extension.extension:dataAbsentReason This element must be supported. 0..1 code Reason why the data is not present
URL: http://hl7.org/fhir/StructureDefinition/data-absent-reason
Binding: DataAbsentReason (required): Used to specify why the normally expected content of the data element is missing.
Observation.value[x].valueRange Range
Observation.value[x].valueQuantity Quantity
Observation.dataAbsentReason C 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
Observation.interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
Observation.method 0..1 CodeableConcept How it was done
Binding: ObservationMethods (example): Methods for simple observations.
Observation.referenceRange C 0..* BackboneElement Provides guide for interpretation
Constraints: obs-3
Observation.referenceRange.id 0..1 string Unique id for inter-element referencing
Observation.referenceRange.extension 0..* Extension Additional content defined by implementations
Observation.referenceRange.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Observation.referenceRange.low C 0..1 SimpleQuantity(4.0.1) Low Range, if relevant
Constraints: sqty-1
Observation.referenceRange.high C 0..1 SimpleQuantity(4.0.1) High Range, if relevant
Constraints: sqty-1
Observation.referenceRange.type 0..1 CodeableConcept Reference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.
Observation.referenceRange.appliesTo 0..* CodeableConcept Reference range population
Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to.
Observation.referenceRange.age 0..1 Range Applicable age range, if relevant
Observation.referenceRange.text 0..1 string Text based reference range in an observation

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.category Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.subject.​type Base extensible ResourceType 📍4.0.1 FHIR Std.
Observation.encounter.​type Base extensible ResourceType 📍4.0.1 FHIR Std.
Observation.performer.​type Base extensible ResourceType 📍4.0.1 FHIR Std.
Observation.dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.method Base example Observation Methods 📍4.0.1 FHIR Std.
Observation.referenceRange.​type Base preferred Observation Reference Range Meaning Codes 📍4.0.1 FHIR Std.
Observation.referenceRange.​appliesTo Base example Observation Reference Range Applies To Codes 📍4.0.1 FHIR Std.
Observation.component.​code Base example LOINC Codes 📍4.0.1 FHIR Std.
Observation.component.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Observation If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Observation If 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-4 error Observation If 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-5 error Observation If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Observation A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
obs-3 error Observation.referenceRange Must have at least a low or a high or text low.exists() or high.exists() or text.exists()
obs-6 error Observation dataAbsentReason SHALL only be present if Observation.value[x] is not present dataAbsentReason.empty() or value.empty()
obs-7 error Observation If 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()
sqty-1 error Observation.referenceRange.low, Observation.referenceRange.high The comparator is not used on a SimpleQuantity comparator.empty()
uds-plus-inc-1 error Observation.effective[x] All dateTime data elements should be truncated to a year only for de-identified resources. $this is DateTime implies $this.toString().length() = 4
uds-plus-inc-1a error Observation.effective[x] All dateTime data elements should have valid year > 1900 $this is DateTime implies $this.toString() >= '1900'
uds-plus-inc-1b error Observation.effective[x] All dateTime data elements should have valid year < 2030 $this is DateTime implies $this.toString() <= '2030'
uds-plus-inc-2 error Observation.effective[x] All Period.start data elements should be truncated to a year only for de-identified resources. $this is Period and Period.start.exists() implies $this.start.toString().length() = 4
uds-plus-inc-2a error Observation.effective[x] All Period.start data elements should have valid year > 1900 $this is Period and Period.start.exists() implies $this.start.toString() >= '1900'
uds-plus-inc-2b error Observation.effective[x] All Period.start data elements should have valid year < 2030 $this is Period and Period.start.exists() implies $this.start.toString() <= '2030'
uds-plus-inc-3 error Observation.effective[x] All Period.emd data elements should be truncated to a year only for de-identified resources. $this is Period and Period.end.exists() implies $this.end.toString().length() = 4
uds-plus-inc-3a error Observation.effective[x] All Period.end data elements should have valid year > 1900 $this is Period and Period.end.exists() implies $this.end.toString() >= '1900'
uds-plus-inc-3b error Observation.effective[x] All Period.end data elements should have valid year < 2030 $this is Period and Period.end.exists() implies $this.end.toString() <= '2030'
uds-plus-inc-4 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.count() = 1
uds-plus-inc-5 error Observation.effective[x] All Timing.event data elements should be truncated to a year only for de-identified resources. $this is Timing and Timing.event.exists() implies $this.event.first().toString().length() = 4
uds-plus-inc-6 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements to be between 101% and 150% or between 151% and 200% $this is Range and Range.low.exists() and Range.high.exists() implies ((Range.low.value >= 101 and Range.high.value <= 150) or (Range.low.value >= 151 and Range.high.value <= 200))
uds-plus-inc-7 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when less than 100% $this is Range and Range.low.exists().not() and Range.high.exists() implies (Range.high.value <= 100)
uds-plus-inc-8 error Observation.value[x] Income Ranges should be coded according to the UDS+ requirements when more than 200%, Quantity should include value(200), code(%) and comparator(>) $this is Quantity implies ($this.value >= 200 and $this.code = '%' and $this.comparator = '>')
uds-plus-res-5a error Observation.effective[x] All Timing data elements should have valid year > 1900 $this is Timing and Timing.event.exists() implies $this.event.first().toString() >= '1900'
uds-plus-res-5b error Observation.effective[x] All Timing data elements should have valid year < 2030 $this is Timing and Timing.event.exists() implies $this.event.first().toString() <= '2030'

This structure is derived from Observation

Summary

Mandatory: 3 elements
Must-Support: 8 elements
Fixed: 1 element
Prohibited: 13 elements

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

Maturity: 2

 

Other representations of profile: CSV, Excel, Schematron