An Observation contains the result of a measurement performed by the Patient. It is based on a ProcedureRequest that contains information about what to measure and when to measure.
In addition to the result and context, the Observation also contains information about the device used to perform the measurement and reference ranges copied from the ProcedureRequest. Reference ranges can change over time, so the copy ensures that the reference range at the time of measurement is preserved.
The eHealth Infrastructure will assist in calculating qualities of the measurement. The observation will be annotated with these qualities.
In the eHealth Infrastructure the Observation resource is used in conjunction with the following resources.
Observations can be submitted using the submit-measurement operation. It is possible to submit a bundle of related resources containing:
The submit-measurement operation is intended for uploading single measurements, not bulk uploads. Uploading large batches of resources is considered misuse.
The entire bundle is validated and then saved in a single transaction.
Observations are generally immutable once the bundle is saved. Further information about the observation can be added in separate resources like Provenance and Communication.
When a submitted Observation is actually reuse of a previous measurement, this must be marked by the submitter by added a Provenance resource with certain pre-defined properties.
Provenance
.target
must reference all reused resources in the submitted bundle; e.g. the Observation, QuestionnaireResponse or Media containing a copy of the reused values..activity
must have value “Quotation” (“wasQuotedFrom”) from FHIR ValueSet https://www.hl7.org/fhir/stu3/codesystem-w3c-provenance-activity-type.html#w3c-provenance-activity-type-Quotation.policy
must have value “http://ehealth.sundhed.dk/policy/ehealth/reuse-by-patient”.agent.whoReference
must reference the Patient who decided to reuse.entity.role
= “quotation”.entity.what
= must be reference to Observation, QuestionnaireResponse or Media being reused.The Provenance resource needs not be supplied for resources which are not being used. However, for non-reused resources, a Provenance resource with .activity
= “Primary-Source” can be used to indicate a newly obtained
(not reused) Observation, QuestionnaireResponse or Media.
When an Observation-bundle is submitted the eHealth Infrastructure will automatically create a Provenance resource, which identifies the resources which were submitted in the same bundle.
The search-measurements operation can return the resources submitted as part of the same bundle.
It is possible to search for Observations based on:
At least one of “subject” and “context” must be provided. “period” searches on range of “effective”.
See Searching for more information about searching in REST, messaging, and services.
The official URL for this profile is:
http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-observation
This profile builds on Observation.
This profile was published on Wed May 08 06:17:13 UTC 2019 as a draft by ehealth.sundhed.dk.
Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.
This structure is derived from Observation
Summary
Mandatory: 7 elements
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
This structure is derived from Observation
This structure is derived from Observation
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | Measurements and simple assertions made about a patient, device or other subject. | |
id | Σ | 0..1 | id | Logical id of this artifact |
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: Common Languages (extensible) | |
text | I | 0..1 | Narrative | Text summary of the resource, for human interpretation |
contained | 0..* | Resource | Contained, inline Resources | |
extension | 0..* | Extension | Extension Slice: Unordered, Open by value:url | |
ehealth-quality | 0..* | (Complex) | Extension URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-quality | |
ehealth-sharingPolicy | 1..1 | CodeableConcept | Extension URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-sharingPolicy Binding: SubmissionSharingPolicies (required) | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | Σ | 0..* | Identifier | Business Identifier for observation |
basedOn | Σ | 1..1 | Reference(eHealth ProcedureRequest) {r} | Fulfills procedure request. |
status | ?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required) |
category | 0..* | CodeableConcept | Classification of type of observation Binding: Observation Category Codes (preferred) | |
code | Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: ObservationCodes (required) |
subject | Σ | 1..1 | Reference(eHealth Patient) {r} | Who and/or what this is about |
context | 1..1 | Reference(eHealth EpisodeOfCare) {r} | Healthcare event during which this observation is made | |
effective[x] | Σ | 1..1 | dateTime, Period | Clinically relevant time/time-period for observation |
issued | Σ | 0..1 | instant | Date/Time this was made available |
performer | Σ | 1..1 | Reference(eHealth Practitioner | eHealth Organization | eHealth Patient | eHealth RelatedPerson) {r} | Who is responsible for the observation |
value[x] | ΣI | 0..1 | Quantity, CodeableConcept | Actual result |
dataAbsentReason | I | 0..1 | CodeableConcept | Why the result is missing Binding: Observation Value Absent Reason (extensible) |
interpretation | 0..1 | CodeableConcept | High, low, normal, etc. Binding: Observation Interpretation Codes (extensible) | |
comment | 0..1 | string | Comments about result | |
bodySite | 0..1 | CodeableConcept | Observed body part Binding: SNOMED CT Body Structures (example) | |
method | 0..1 | CodeableConcept | How it was done Binding: Observation Methods (example) | |
specimen | 0..1 | Reference(Specimen) {r} | Specimen used for this observation | |
device | 1..1 | Reference(eHealth Device) {r} | (Measurement) Device | |
referenceRange | I | 0..* | BackboneElement | Provides guide for interpretation |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored |
low | I | 0..1 | SimpleQuantity | Low Range, if relevant |
high | I | 0..1 | SimpleQuantity | High Range, if relevant |
type | 0..1 | CodeableConcept | Reference range qualifier Binding: Observation Reference Range Meaning Codes (extensible) | |
appliesTo | 0..* | CodeableConcept | Reference range population Binding: Observation Reference Range Applies To Codes (example) | |
age | 0..1 | Range | Applicable age range, if relevant | |
text | 0..1 | string | Text based reference range in an observation | |
related | ΣI | 0..* | BackboneElement | Resource related to this observation |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored |
type | 0..1 | code | has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by Binding: ObservationRelationshipType (required) | |
target | 1..1 | Reference(eHealth Observation | eHealth QuestionnaireResponse | Sequence) {r} | Resource that is related to this one | |
component | ΣI | 0..* | BackboneElement | Component results |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored |
code | Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINC Codes (example) |
value[x] | Σ | 0..1 | Quantity, CodeableConcept, string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Actual component result |
dataAbsentReason | I | 0..1 | CodeableConcept | Why the component result is missing Binding: Observation Value Absent Reason (extensible) |
interpretation | 0..1 | CodeableConcept | High, low, normal, etc. Binding: Observation Interpretation Codes (extensible) | |
referenceRange | 0..* | Unknown reference to #Observation.referenceRange Provides guide for interpretation of component result | ||
Documentation for this format |
This structure is derived from Observation
Summary
Mandatory: 7 elements
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Differential View
This structure is derived from Observation
Snapshot View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | Measurements and simple assertions made about a patient, device or other subject. | |
id | Σ | 0..1 | id | Logical id of this artifact |
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: Common Languages (extensible) | |
text | I | 0..1 | Narrative | Text summary of the resource, for human interpretation |
contained | 0..* | Resource | Contained, inline Resources | |
extension | 0..* | Extension | Extension Slice: Unordered, Open by value:url | |
ehealth-quality | 0..* | (Complex) | Extension URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-quality | |
ehealth-sharingPolicy | 1..1 | CodeableConcept | Extension URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-sharingPolicy Binding: SubmissionSharingPolicies (required) | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | Σ | 0..* | Identifier | Business Identifier for observation |
basedOn | Σ | 1..1 | Reference(eHealth ProcedureRequest) {r} | Fulfills procedure request. |
status | ?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required) |
category | 0..* | CodeableConcept | Classification of type of observation Binding: Observation Category Codes (preferred) | |
code | Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: ObservationCodes (required) |
subject | Σ | 1..1 | Reference(eHealth Patient) {r} | Who and/or what this is about |
context | 1..1 | Reference(eHealth EpisodeOfCare) {r} | Healthcare event during which this observation is made | |
effective[x] | Σ | 1..1 | dateTime, Period | Clinically relevant time/time-period for observation |
issued | Σ | 0..1 | instant | Date/Time this was made available |
performer | Σ | 1..1 | Reference(eHealth Practitioner | eHealth Organization | eHealth Patient | eHealth RelatedPerson) {r} | Who is responsible for the observation |
value[x] | ΣI | 0..1 | Quantity, CodeableConcept | Actual result |
dataAbsentReason | I | 0..1 | CodeableConcept | Why the result is missing Binding: Observation Value Absent Reason (extensible) |
interpretation | 0..1 | CodeableConcept | High, low, normal, etc. Binding: Observation Interpretation Codes (extensible) | |
comment | 0..1 | string | Comments about result | |
bodySite | 0..1 | CodeableConcept | Observed body part Binding: SNOMED CT Body Structures (example) | |
method | 0..1 | CodeableConcept | How it was done Binding: Observation Methods (example) | |
specimen | 0..1 | Reference(Specimen) {r} | Specimen used for this observation | |
device | 1..1 | Reference(eHealth Device) {r} | (Measurement) Device | |
referenceRange | I | 0..* | BackboneElement | Provides guide for interpretation |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored |
low | I | 0..1 | SimpleQuantity | Low Range, if relevant |
high | I | 0..1 | SimpleQuantity | High Range, if relevant |
type | 0..1 | CodeableConcept | Reference range qualifier Binding: Observation Reference Range Meaning Codes (extensible) | |
appliesTo | 0..* | CodeableConcept | Reference range population Binding: Observation Reference Range Applies To Codes (example) | |
age | 0..1 | Range | Applicable age range, if relevant | |
text | 0..1 | string | Text based reference range in an observation | |
related | ΣI | 0..* | BackboneElement | Resource related to this observation |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored |
type | 0..1 | code | has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by Binding: ObservationRelationshipType (required) | |
target | 1..1 | Reference(eHealth Observation | eHealth QuestionnaireResponse | Sequence) {r} | Resource that is related to this one | |
component | ΣI | 0..* | BackboneElement | Component results |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored |
code | Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINC Codes (example) |
value[x] | Σ | 0..1 | Quantity, CodeableConcept, string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Actual component result |
dataAbsentReason | I | 0..1 | CodeableConcept | Why the component result is missing Binding: Observation Value Absent Reason (extensible) |
interpretation | 0..1 | CodeableConcept | High, low, normal, etc. Binding: Observation Interpretation Codes (extensible) | |
referenceRange | 0..* | Unknown reference to #Observation.referenceRange Provides guide for interpretation of component result | ||
Documentation for this format |
Path | Name | Conformance | ValueSet |
Observation.language | Common Languages | extensible | Common Languages |
Observation.status | ObservationStatus | required | ObservationStatus |
Observation.category | Observation Category Codes | preferred | Observation Category Codes |
Observation.code | ObservationCodes | required | ObservationCodes |
Observation.dataAbsentReason | Observation Value Absent Reason | extensible | Observation Value Absent Reason |
Observation.interpretation | Observation Interpretation Codes | extensible | Observation Interpretation Codes |
Observation.bodySite | SNOMED CT Body Structures | example | SNOMED CT Body Structures |
Observation.method | Observation Methods | example | Observation Methods |
Observation.referenceRange.type | Observation Reference Range Meaning Codes | extensible | Observation Reference Range Meaning Codes |
Observation.referenceRange.appliesTo | Observation Reference Range Applies To Codes | example | Observation Reference Range Applies To Codes |
Observation.related.type | ObservationRelationshipType | required | ObservationRelationshipType |
Observation.component.code | LOINC Codes | example | LOINC Codes |
Observation.component.dataAbsentReason | Observation Value Absent Reason | extensible | Observation Value Absent Reason |
Observation.component.interpretation | Observation Interpretation Codes | extensible | Observation Interpretation Codes |
Id | Path | Details | Requirements |
dom-2 | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-1 | Observation | If the resource is contained in another resource, it SHALL NOT contain any narrative : contained.text.empty() | |
dom-4 | 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-3 | Observation | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource : contained.where(('#'+id in %resource.descendants().reference).not()).empty() | |
obs-7 | Observation | If code is the same as a component code then the value element associated with the code SHALL NOT be present : value.empty() or code!=component.code | |
obs-6 | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present : dataAbsentReason.empty() or value.empty() | |
ele-1 | Observation.referenceRange | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
obs-3 | Observation.referenceRange | Must have at least a low or a high or text : low.exists() or high.exists() or text.exists() | |
ele-1 | Observation.related | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ele-1 | Observation.component | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) |