De-identified, Anonymized FHIR Profiles Library
1.0.0-ballot - STU 1 Ballot

De-identified, Anonymized FHIR Profiles Library - Downloaded Version 1.0.0-ballot See the Directory of published versions

## Resource Profile: DAPL Clinical Result Observation

Official URL: http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-clinical-result-observation | Version: 1.0.0-ballot
Standards status: Trial-use | Maturity Level: 2 | Computable Name: DAPLClinicalResultObservation

The profile establishes the core elements, extensions, vocabularies and value sets for representing deidentified or anonymized clinical result observations.

### Introduction

This profile is used to represent de-identified Observation for Clinical Result 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.

According to the HHS guidance, dates should not have a precision of more than the year. This means month and day cannot be included. This includes Observation for Lab Result.period.

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 Observation for Clinical Result resource text element may contain information such as the Observation for Clinical Result date, patient information. 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 for Clinical Result resource id should not be included in the De-identified Observation for Clinical Result instance. Instead a new id should be created and provided as part of the FHIR resource. The Data Submitter should be capable of using the generated id to relink the data to the original Observation for Lab Result. All resource references to the Observation for Clinical Result submitted as part of the data exchange 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
- encounter

Date Truncation

The DARTS Service Provider has to truncate the following dates to only have a precision of year

- effective[x]

Usages:

- Examples for this Profile: Observation/de-identified-clinical-result-observation-example

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.

- Key Elements Table
- Differential Table
- Snapshot Table
- Statistics/References
- All

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation | C | 0..* | Observation | DAPL Clinical Result Observation Constraints: obs-6, obs-7
id | S Σ | 0..1 | id | The Observation identifier generated by the DARTS deidentification or anonymization service
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  |  |  | Content/Rules for all slices
extension:deidentifiedIssuedTime |  | 0..1 | dateTime | Indicates the time with a precision of only Year. URL: http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-instant-extension
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
status | ?!S Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation.
category | S | 1..* | CodeableConcept | Classification of type of observation Binding: US Core Clinical Result Observation Category (extensible): The set of codes indicating the category of the observation
code | S Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
subject | S Σ | 1..1 | Reference(DAPL De-identified Patient) | Who and/or what the observation is about
encounter | S Σ | 0..1 | Reference(DAPL De-identified Encounter) | Healthcare event during which this observation is made
effective[x] | S Σ C | 0..1 |  | Clinically relevant time/time-period for observation Constraints: dapl-res-1, dapl-res-1a, dapl-res-2, dapl-res-2a, dapl-res-3, dapl-res-3a, dapl-res-4, dapl-res-5, uds-plus-res-5a
effectiveDateTime |  |  | dateTime S |
effectivePeriod |  |  | Period |
effectiveTiming |  |  | Timing |
issued | S Σ | 0..1 | instant | Date/Time this version was made available
performer | S Σ | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) | Who is responsible for the observation
value[x] | S Σ C | 0..1 |  | Actual result Constraints: dapl-res-6, dapl-res-6a, dapl-res-7, dapl-res-7a, dapl-res-8, dapl-res-8a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
bodySite | S | 0..1 | CodeableConcept | Observed body part Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
component | S Σ | 0..* | BackboneElement | Component results
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
code | S Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
value[x] | S Σ C | 0..1 |  | Actual component result Constraints: dapl-res-9, dapl-res-9a, dapl-res-10, dapl-res-10a, dapl-res-11, dapl-res-11a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std.
Observation.category | Base | extensible | US Core Clinical Result Observation Category | 📦8.0.1 | US Core v8.0
Observation.code | Base | extensible | LOINC Codes | 📦4.0.1 | FHIR Std.
Observation.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std.
Observation.component.​code | Base | extensible | LOINC Codes | 📦4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dapl-res-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`
dapl-res-10 | error | Observation.component.value[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`
dapl-res-10a | error | Observation.component.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-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`
dapl-res-11 | error | Observation.component.value[x] | All Period.end 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`
dapl-res-11a | error | Observation.component.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-1a | error | Observation.effective[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-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'`
dapl-res-3 | error | Observation.effective[x] | All Period.end 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`
dapl-res-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'`
dapl-res-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`
dapl-res-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`
dapl-res-6 | error | Observation.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-6a | error | Observation.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-7 | error | Observation.value[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`
dapl-res-7a | error | Observation.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-8 | error | Observation.value[x] | All Period.end 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`
dapl-res-8a | error | Observation.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-9 | error | Observation.component.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-9a | error | Observation.component.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
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-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'`

This structure is derived from Observation

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation |  | 0..* | Observation | DAPL Clinical Result Observation
id | S | 0..1 | id | The Observation identifier generated by the DARTS deidentification or anonymization service
text |  | 0..0 |  | Cannot include any text in the resource as part of the deidentified or anonymized data.
contained |  | 0..0 |  | Cannot include any contained resources in the resource as part of the deidentified or anonymized data.
Slices for extension |  |  |  | Content/Rules for all slices
extension:deidentifiedIssuedTime |  | 0..1 | dateTime | Indicates the time with a precision of only Year. URL: http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-instant-extension
status | S | 1..1 | code | registered | preliminary | final | amended +
category | S | 1..* | CodeableConcept | Classification of type of observation Binding: US Core Clinical Result Observation Category (extensible): The set of codes indicating the category of the observation
code | S | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
subject | S | 1..1 | Reference(DAPL De-identified Patient) | Who and/or what the observation is about
display |  | 0..0 |  | Text alternative for the resource
encounter | S | 0..1 | Reference(DAPL De-identified Encounter) | Healthcare event during which this observation is made
display |  | 0..0 |  | Text alternative for the resource
effective[x] | S C | 0..1 |  | Clinically relevant time/time-period for observation Constraints: dapl-res-1, dapl-res-1a, dapl-res-2, dapl-res-2a, dapl-res-3, dapl-res-3a, dapl-res-4, dapl-res-5, uds-plus-res-5a
effectiveDateTime |  |  | dateTime S |
effectivePeriod |  |  | Period |
effectiveTiming |  |  | Timing |
issued | S | 0..1 | instant | Date/Time this version was made available
performer | S | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) | Who is responsible for the observation
display |  | 0..0 |  | Text alternative for the resource
value[x] | S C | 0..1 |  | Actual result Constraints: dapl-res-6, dapl-res-6a, dapl-res-7, dapl-res-7a, dapl-res-8, dapl-res-8a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
note |  | 0..0 |  | Comments about the observation
bodySite | S | 0..1 | CodeableConcept | Observed body part
component | S | 0..* | BackboneElement | Component results
code | S | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
value[x] | S C | 0..1 |  | Actual component result Constraints: dapl-res-9, dapl-res-9a, dapl-res-10, dapl-res-10a, dapl-res-11, dapl-res-11a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Observation.category | Base | extensible | US Core Clinical Result Observation Category | 📦8.0.1 | US Core v8.0
Observation.code | Base | extensible | LOINC Codes | 📦4.0.1 | FHIR Std.
Observation.component.​code | Base | extensible | LOINC Codes | 📦4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dapl-res-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`
dapl-res-10a | error | Observation.component.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-11a | error | Observation.component.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-1a | error | Observation.effective[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-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`
dapl-res-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'`
dapl-res-3 | error | Observation.effective[x] | All Period.end 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`
dapl-res-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'`
dapl-res-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`
dapl-res-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`
dapl-res-6 | error | Observation.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-6a | error | Observation.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-7 | error | Observation.value[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`
dapl-res-11 | error | Observation.component.value[x] | All Period.end 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`
dapl-res-7a | error | Observation.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-8 | error | Observation.value[x] | All Period.end 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`
dapl-res-8a | error | Observation.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-9 | error | Observation.component.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-10 | error | Observation.component.value[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`
dapl-res-9a | error | Observation.component.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
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'`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation | C | 0..* | Observation | DAPL Clinical Result Observation Constraints: obs-6, obs-7
id | S Σ | 0..1 | id | The Observation identifier generated by the DARTS deidentification or anonymization service
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:deidentifiedIssuedTime |  | 0..1 | dateTime | Indicates the time with a precision of only Year. URL: http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-instant-extension
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | Business Identifier for observation
basedOn | Σ | 0..* | Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest) | Fulfills plan, proposal or order
partOf | Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event
status | ?!S Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation.
category | S | 1..* | CodeableConcept | Classification of type of observation Binding: US Core Clinical Result Observation Category (extensible): The set of codes indicating the category of the observation
code | S Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
subject | S Σ | 1..1 | Reference(DAPL De-identified Patient) | Who and/or what the observation is about
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 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).
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
focus | Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record
encounter | S Σ | 0..1 | Reference(DAPL De-identified Encounter) | Healthcare event during which this observation is made
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 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).
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
effective[x] | S Σ C | 0..1 |  | Clinically relevant time/time-period for observation Constraints: dapl-res-1, dapl-res-1a, dapl-res-2, dapl-res-2a, dapl-res-3, dapl-res-3a, dapl-res-4, dapl-res-5, uds-plus-res-5a
effectiveDateTime |  |  | dateTime S |
effectivePeriod |  |  | Period |
effectiveTiming |  |  | Timing |
issued | S Σ | 0..1 | instant | Date/Time this version was made available
performer | S Σ | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) | Who is responsible for the observation
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 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).
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
value[x] | S Σ C | 0..1 |  | Actual result Constraints: dapl-res-6, dapl-res-6a, dapl-res-7, dapl-res-7a, dapl-res-8, dapl-res-8a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
interpretation |  | 0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
bodySite | S | 0..1 | CodeableConcept | Observed body part Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
method |  | 0..1 | CodeableConcept | How it was done Binding: ObservationMethods (example): Methods for simple observations.
specimen |  | 0..1 | Reference(Specimen) | Specimen used for this observation
device |  | 0..1 | Reference(Device | DeviceMetric) | (Measurement) Device
referenceRange | C | 0..* | BackboneElement | Provides guide for interpretation Constraints: obs-3
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
low | C | 0..1 | SimpleQuantity(4.0.1) | Low Range, if relevant
high | C | 0..1 | SimpleQuantity(4.0.1) | High Range, if relevant
type |  | 0..1 | CodeableConcept | Reference range qualifier Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.
appliesTo |  | 0..* | CodeableConcept | Reference range population Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to.
age |  | 0..1 | Range | Applicable age range, if relevant
text |  | 0..1 | string | Text based reference range in an observation
hasMember | Σ | 0..* | Reference(Observation | QuestionnaireResponse | MolecularSequence) | Related resource that belongs to the Observation group
derivedFrom | Σ | 0..* | Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) | Related measurements the observation is made from
component | S Σ | 0..* | BackboneElement | Component results
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
code | S Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
value[x] | S Σ C | 0..1 |  | Actual component result Constraints: dapl-res-9, dapl-res-9a, dapl-res-10, dapl-res-10a, dapl-res-11, dapl-res-11a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the component result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
interpretation |  | 0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
referenceRange |  | 0..* | See referenceRange (Observation) | Provides guide for interpretation of component result
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 | extensible | US Core Clinical Result Observation Category | 📦8.0.1 | US Core v8.0
Observation.code | Base | extensible | 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.bodySite | Base | example | SNOMED CT Body Structures | 📍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 | extensible | 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
dapl-res-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`
dapl-res-10 | error | Observation.component.value[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`
dapl-res-10a | error | Observation.component.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-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`
dapl-res-11 | error | Observation.component.value[x] | All Period.end 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`
dapl-res-11a | error | Observation.component.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-1a | error | Observation.effective[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-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'`
dapl-res-3 | error | Observation.effective[x] | All Period.end 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`
dapl-res-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'`
dapl-res-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`
dapl-res-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`
dapl-res-6 | error | Observation.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-6a | error | Observation.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-7 | error | Observation.value[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`
dapl-res-7a | error | Observation.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-8 | error | Observation.value[x] | All Period.end 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`
dapl-res-8a | error | Observation.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-9 | error | Observation.component.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-9a | error | Observation.component.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
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()`
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'`

This structure is derived from Observation

Summary

Mandatory: 4 elements(1 nested mandatory element)
Must-Support: 14 elements
Prohibited: 6 elements

Structures

This structure refers to these other structures:

- DAPL De-identified Patient (http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-patient)
- DAPL De-identified Encounter (http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-encounter)

Extensions

This structure refers to these extensions:

- http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-instant-extension

Maturity: 2

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation | C | 0..* | Observation | DAPL Clinical Result Observation Constraints: obs-6, obs-7
id | S Σ | 0..1 | id | The Observation identifier generated by the DARTS deidentification or anonymization service
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  |  |  | Content/Rules for all slices
extension:deidentifiedIssuedTime |  | 0..1 | dateTime | Indicates the time with a precision of only Year. URL: http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-instant-extension
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
status | ?!S Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation.
category | S | 1..* | CodeableConcept | Classification of type of observation Binding: US Core Clinical Result Observation Category (extensible): The set of codes indicating the category of the observation
code | S Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
subject | S Σ | 1..1 | Reference(DAPL De-identified Patient) | Who and/or what the observation is about
encounter | S Σ | 0..1 | Reference(DAPL De-identified Encounter) | Healthcare event during which this observation is made
effective[x] | S Σ C | 0..1 |  | Clinically relevant time/time-period for observation Constraints: dapl-res-1, dapl-res-1a, dapl-res-2, dapl-res-2a, dapl-res-3, dapl-res-3a, dapl-res-4, dapl-res-5, uds-plus-res-5a
effectiveDateTime |  |  | dateTime S |
effectivePeriod |  |  | Period |
effectiveTiming |  |  | Timing |
issued | S Σ | 0..1 | instant | Date/Time this version was made available
performer | S Σ | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) | Who is responsible for the observation
value[x] | S Σ C | 0..1 |  | Actual result Constraints: dapl-res-6, dapl-res-6a, dapl-res-7, dapl-res-7a, dapl-res-8, dapl-res-8a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
bodySite | S | 0..1 | CodeableConcept | Observed body part Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
component | S Σ | 0..* | BackboneElement | Component results
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
code | S Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
value[x] | S Σ C | 0..1 |  | Actual component result Constraints: dapl-res-9, dapl-res-9a, dapl-res-10, dapl-res-10a, dapl-res-11, dapl-res-11a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std.
Observation.category | Base | extensible | US Core Clinical Result Observation Category | 📦8.0.1 | US Core v8.0
Observation.code | Base | extensible | LOINC Codes | 📦4.0.1 | FHIR Std.
Observation.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std.
Observation.component.​code | Base | extensible | LOINC Codes | 📦4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dapl-res-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`
dapl-res-10 | error | Observation.component.value[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`
dapl-res-10a | error | Observation.component.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-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`
dapl-res-11 | error | Observation.component.value[x] | All Period.end 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`
dapl-res-11a | error | Observation.component.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-1a | error | Observation.effective[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-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'`
dapl-res-3 | error | Observation.effective[x] | All Period.end 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`
dapl-res-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'`
dapl-res-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`
dapl-res-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`
dapl-res-6 | error | Observation.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-6a | error | Observation.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-7 | error | Observation.value[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`
dapl-res-7a | error | Observation.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-8 | error | Observation.value[x] | All Period.end 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`
dapl-res-8a | error | Observation.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-9 | error | Observation.component.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-9a | error | Observation.component.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
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-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'`

Differential View

This structure is derived from Observation

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation |  | 0..* | Observation | DAPL Clinical Result Observation
id | S | 0..1 | id | The Observation identifier generated by the DARTS deidentification or anonymization service
text |  | 0..0 |  | Cannot include any text in the resource as part of the deidentified or anonymized data.
contained |  | 0..0 |  | Cannot include any contained resources in the resource as part of the deidentified or anonymized data.
Slices for extension |  |  |  | Content/Rules for all slices
extension:deidentifiedIssuedTime |  | 0..1 | dateTime | Indicates the time with a precision of only Year. URL: http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-instant-extension
status | S | 1..1 | code | registered | preliminary | final | amended +
category | S | 1..* | CodeableConcept | Classification of type of observation Binding: US Core Clinical Result Observation Category (extensible): The set of codes indicating the category of the observation
code | S | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
subject | S | 1..1 | Reference(DAPL De-identified Patient) | Who and/or what the observation is about
display |  | 0..0 |  | Text alternative for the resource
encounter | S | 0..1 | Reference(DAPL De-identified Encounter) | Healthcare event during which this observation is made
display |  | 0..0 |  | Text alternative for the resource
effective[x] | S C | 0..1 |  | Clinically relevant time/time-period for observation Constraints: dapl-res-1, dapl-res-1a, dapl-res-2, dapl-res-2a, dapl-res-3, dapl-res-3a, dapl-res-4, dapl-res-5, uds-plus-res-5a
effectiveDateTime |  |  | dateTime S |
effectivePeriod |  |  | Period |
effectiveTiming |  |  | Timing |
issued | S | 0..1 | instant | Date/Time this version was made available
performer | S | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) | Who is responsible for the observation
display |  | 0..0 |  | Text alternative for the resource
value[x] | S C | 0..1 |  | Actual result Constraints: dapl-res-6, dapl-res-6a, dapl-res-7, dapl-res-7a, dapl-res-8, dapl-res-8a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
note |  | 0..0 |  | Comments about the observation
bodySite | S | 0..1 | CodeableConcept | Observed body part
component | S | 0..* | BackboneElement | Component results
code | S | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
value[x] | S C | 0..1 |  | Actual component result Constraints: dapl-res-9, dapl-res-9a, dapl-res-10, dapl-res-10a, dapl-res-11, dapl-res-11a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Observation.category | Base | extensible | US Core Clinical Result Observation Category | 📦8.0.1 | US Core v8.0
Observation.code | Base | extensible | LOINC Codes | 📦4.0.1 | FHIR Std.
Observation.component.​code | Base | extensible | LOINC Codes | 📦4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dapl-res-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`
dapl-res-10a | error | Observation.component.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-11a | error | Observation.component.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-1a | error | Observation.effective[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-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`
dapl-res-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'`
dapl-res-3 | error | Observation.effective[x] | All Period.end 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`
dapl-res-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'`
dapl-res-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`
dapl-res-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`
dapl-res-6 | error | Observation.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-6a | error | Observation.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-7 | error | Observation.value[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`
dapl-res-11 | error | Observation.component.value[x] | All Period.end 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`
dapl-res-7a | error | Observation.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-8 | error | Observation.value[x] | All Period.end 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`
dapl-res-8a | error | Observation.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-9 | error | Observation.component.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-10 | error | Observation.component.value[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`
dapl-res-9a | error | Observation.component.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
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'`

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation | C | 0..* | Observation | DAPL Clinical Result Observation Constraints: obs-6, obs-7
id | S Σ | 0..1 | id | The Observation identifier generated by the DARTS deidentification or anonymization service
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:deidentifiedIssuedTime |  | 0..1 | dateTime | Indicates the time with a precision of only Year. URL: http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-instant-extension
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | Business Identifier for observation
basedOn | Σ | 0..* | Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest) | Fulfills plan, proposal or order
partOf | Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event
status | ?!S Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation.
category | S | 1..* | CodeableConcept | Classification of type of observation Binding: US Core Clinical Result Observation Category (extensible): The set of codes indicating the category of the observation
code | S Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
subject | S Σ | 1..1 | Reference(DAPL De-identified Patient) | Who and/or what the observation is about
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 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).
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
focus | Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record
encounter | S Σ | 0..1 | Reference(DAPL De-identified Encounter) | Healthcare event during which this observation is made
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 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).
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
effective[x] | S Σ C | 0..1 |  | Clinically relevant time/time-period for observation Constraints: dapl-res-1, dapl-res-1a, dapl-res-2, dapl-res-2a, dapl-res-3, dapl-res-3a, dapl-res-4, dapl-res-5, uds-plus-res-5a
effectiveDateTime |  |  | dateTime S |
effectivePeriod |  |  | Period |
effectiveTiming |  |  | Timing |
issued | S Σ | 0..1 | instant | Date/Time this version was made available
performer | S Σ | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) | Who is responsible for the observation
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 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).
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known
value[x] | S Σ C | 0..1 |  | Actual result Constraints: dapl-res-6, dapl-res-6a, dapl-res-7, dapl-res-7a, dapl-res-8, dapl-res-8a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
interpretation |  | 0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
bodySite | S | 0..1 | CodeableConcept | Observed body part Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
method |  | 0..1 | CodeableConcept | How it was done Binding: ObservationMethods (example): Methods for simple observations.
specimen |  | 0..1 | Reference(Specimen) | Specimen used for this observation
device |  | 0..1 | Reference(Device | DeviceMetric) | (Measurement) Device
referenceRange | C | 0..* | BackboneElement | Provides guide for interpretation Constraints: obs-3
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
low | C | 0..1 | SimpleQuantity(4.0.1) | Low Range, if relevant
high | C | 0..1 | SimpleQuantity(4.0.1) | High Range, if relevant
type |  | 0..1 | CodeableConcept | Reference range qualifier Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.
appliesTo |  | 0..* | CodeableConcept | Reference range population Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to.
age |  | 0..1 | Range | Applicable age range, if relevant
text |  | 0..1 | string | Text based reference range in an observation
hasMember | Σ | 0..* | Reference(Observation | QuestionnaireResponse | MolecularSequence) | Related resource that belongs to the Observation group
derivedFrom | Σ | 0..* | Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) | Related measurements the observation is made from
component | S Σ | 0..* | BackboneElement | Component results
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
code | S Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (extensible): The set of codes indicating the Observations
value[x] | S Σ C | 0..1 |  | Actual component result Constraints: dapl-res-9, dapl-res-9a, dapl-res-10, dapl-res-10a, dapl-res-11, dapl-res-11a
valueQuantity |  |  | Quantity S |
valueCodeableConcept |  |  | CodeableConcept S |
valueString |  |  | string S |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the component result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
interpretation |  | 0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
referenceRange |  | 0..* | See referenceRange (Observation) | Provides guide for interpretation of component result
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 | extensible | US Core Clinical Result Observation Category | 📦8.0.1 | US Core v8.0
Observation.code | Base | extensible | 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.bodySite | Base | example | SNOMED CT Body Structures | 📍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 | extensible | 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
dapl-res-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`
dapl-res-10 | error | Observation.component.value[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`
dapl-res-10a | error | Observation.component.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-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`
dapl-res-11 | error | Observation.component.value[x] | All Period.end 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`
dapl-res-11a | error | Observation.component.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-1a | error | Observation.effective[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-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'`
dapl-res-3 | error | Observation.effective[x] | All Period.end 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`
dapl-res-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'`
dapl-res-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`
dapl-res-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`
dapl-res-6 | error | Observation.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-6a | error | Observation.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
dapl-res-7 | error | Observation.value[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`
dapl-res-7a | error | Observation.value[x] | All Period.start data elements should have valid year > 1900 | `$this is Period and Period.start.exists() implies $this.start.toString() >= '1900'`
dapl-res-8 | error | Observation.value[x] | All Period.end 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`
dapl-res-8a | error | Observation.value[x] | All Period.end data elements should have valid year > 1900 | `$this is Period and Period.end.exists() implies $this.end.toString() >= '1900'`
dapl-res-9 | error | Observation.component.value[x] | All dateTime data elements should be truncated to a year only for de-identified resources. | `$this is dateTime implies $this.toString().length() = 4`
dapl-res-9a | error | Observation.component.value[x] | All dateTime data elements should have valid year > 1900 | `$this is DateTime implies $this.toString() >= '1900'`
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()`
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'`

This structure is derived from Observation

Summary

Mandatory: 4 elements(1 nested mandatory element)
Must-Support: 14 elements
Prohibited: 6 elements

Structures

This structure refers to these other structures:

- DAPL De-identified Patient (http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-patient)
- DAPL De-identified Encounter (http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-encounter)

Extensions

This structure refers to these extensions:

- http://hl7.org/fhir/us/dapl/StructureDefinition/dapl-deidentified-instant-extension

Maturity: 2

Other representations of profile: CSV, Excel, Schematron