Amakomaya Nepal FHIR Implementation Guide
2.0.0 - ci-build Nepal

Amakomaya Nepal FHIR Implementation Guide - Local Development build (v2.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

## Resource Profile: AMK Core Observation Profile

Official URL: https://fhir.amakomaya.com/StructureDefinition/amk-observation | Version: 2.0.0
Active as of 2026-08-21 | Computable Name: AMKCoreObservation
Copyright/Legal: Used by permission of HL7 International, all rights reserved Creative Commons License

Observation Profile

Usages:

- Examples for this Profile: Observation/observation-aamako-maya-counseling, Observation/observation-body-weight, Observation/observation-sleep-duration and Observation/observation-water-intake

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 | Measurements and simple assertions Constraints: obs-6, obs-7, obs-10, obs-11, obs-12
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
contained |  | 0..* | Resource | Contained, inline Resources
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored Slice: Unordered, Open by value:url
status | ?!Σ | 1..1 | code | registered | in-process | specimen-in-process | preliminary | final | amended | corrected | appended | cancelled | entered-in-error | unknown | cannot-be-obtained Binding: ObservationStatus (required): Codes providing the status of an observation. Required Pattern: final
code | Σ C | 1..1 | CodeableConcept | Type of observation (code / type) Binding: Observation ValueSet (required)
subject | S Σ | 1..1 | Reference(Patient) | Who and/or what the observation is about
focus | ?!Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record
Slices for effective[x] | Σ | 1..1 | dateTime | Clinically relevant time/time-period for observation Slice: Unordered, Closed by type:$this
effective[x]:effectiveDateTime | Σ | 1..1 | dateTime | Clinically relevant time/time-period for observation
value[x] | Σ C | 1..1 |  | Actual result
valueQuantity |  |  | Quantity |
valueCodeableConcept |  |  | CodeableConcept |
valueString |  |  | string |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueTime |  |  | time |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
valueAttachment |  |  | Attachment |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the result value is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
component | Σ C | 0..* | BackboneElement | Component results
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Slice: Unordered, Open by value:url
code | Σ C | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCObsOrBoth (example): Codes identifying names of simple observations.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Observation.status | Base | required | Observation Status | 📍6.0.0-ballot5 | FHIR Std.
Observation.code | Base | required | Observation ValueSet | 📦2.0.0 | This IG
Observation.dataAbsentReason | Base | extensible | Data Absent Reason | 📍6.0.0-ballot5 | FHIR Std.
Observation.component.​code | Base | example | LOINC codes with Observation or Both | 📍6.0.0-ballot5 | 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.trace('id') in %resource.descendants().select(reference | as(uri))) or descendants().where(reference='#' | as(uri)='#').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())`
obs-6 | error | Observation | Observation.dataAbsentReason SHALL only be present if Observation.value[x] is not present | `dataAbsentReason.empty() or value.empty()`
obs-7 | error | Observation | If Observation.component.code is the same as Observation.code, then Observation.value SHALL NOT be present (the Observation.component.value[x] holds the value). | `value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()`
obs-10 | error | Observation | Observation.component.dataAbsentReason SHALL only be present if Observation.component.value[x] is not present | `component.empty() or component.where(dataAbsentReason.exists()).all(value.empty())`
obs-11 | error | Observation | if organizer exists and organizer = true, then value[x], dataAbsentReason and component SHALL NOT be present | `(organizer.exists() and organizer.allTrue()) implies (value.empty() and dataAbsentReason.empty() and component.empty())`
obs-12 | warning | Observation | All observations SHOULD have a performer | `performer.exists()`

This structure is derived from Observation

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation |  | 0..* | Observation | Measurements and simple assertions
status |  | 1..1 | code | registered | in-process | specimen-in-process | preliminary | final | amended | corrected | appended | cancelled | entered-in-error | unknown | cannot-be-obtained Required Pattern: final
code |  | 1..1 | CodeableConcept | Type of observation (code / type) Binding: Observation ValueSet (required)
subject | S | 1..1 | Reference(Patient) | Who and/or what the observation is about
Slices for effective[x] |  | 1..1 | dateTime | Clinically relevant time/time-period for observation Slice: Unordered, Open by type:$this
effective[x]:effectiveDateTime |  | 1..1 | dateTime | Clinically relevant time/time-period for observation
value[x] |  | 1..1 | Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period, Attachment | Actual result
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Observation.code | Base | required | Observation ValueSet | 📦2.0.0 | This IG

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation | C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7, obs-10, obs-11, obs-12
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: AllLanguages (required): IETF language tag for a human language
Additional Bindings | Purpose
CommonLanguages | Starter
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored Slice: Unordered, Open by value:url
identifier | Σ | 0..* | Identifier | Business Identifier for observation
basedOn | Σ | 0..* | Reference(CarePlan | DeviceRequest | MedicationRequest | NutritionOrder | ServiceRequest) | Fulfills plan, proposal or order
triggeredBy |  | 0..* | BackboneElement | Triggering observation(s)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Slice: Unordered, Open by value:url
observation | Σ | 1..1 | Reference(Observation) | Triggering observation
type | Σ | 1..1 | code | reflex | repeat | re-run Binding: TriggeredBytype (required): The type of TriggeredBy Observation.
reason |  | 0..1 | string | Reason that the observation was triggered
partOf | Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event
status | ?!Σ | 1..1 | code | registered | in-process | specimen-in-process | preliminary | final | amended | corrected | appended | cancelled | entered-in-error | unknown | cannot-be-obtained Binding: ObservationStatus (required): Codes providing the status of an observation. Required Pattern: final
statusReason |  | 0..1 | CodeableConcept | Reason for current status Binding: ObservationStatusReason (example): Codes identifying the reason for the current state of an observation.
category |  | 0..* | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
code | Σ C | 1..1 | CodeableConcept | Type of observation (code / type) Binding: Observation ValueSet (required)
subject | S Σ | 1..1 | Reference(Patient) | Who and/or what the observation is about
focus | ?!Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record
organizer | Σ C | 0..1 | boolean | This observation organizes/groups a set of sub-observations
encounter | Σ | 0..1 | Reference(Encounter) | Healthcare event during which this observation is made. If you need to place the observation within one or more episodes of care, use the workflow-episodeOfCare extension
Slices for effective[x] | Σ | 1..1 | dateTime | Clinically relevant time/time-period for observation Slice: Unordered, Closed by type:$this
effective[x]:effectiveDateTime | Σ | 1..1 | dateTime | Clinically relevant time/time-period for observation
issued | Σ | 0..1 | instant | Date/Time this version was made available
performer | Σ | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson | HealthcareService | Group) | Who is responsible for the observation
value[x] | Σ C | 1..1 |  | Actual result
valueQuantity |  |  | Quantity |
valueCodeableConcept |  |  | CodeableConcept |
valueString |  |  | string |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueTime |  |  | time |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
valueAttachment |  |  | Attachment |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the result value 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.
context |  | 0..* | CodeableReference(Resource) | Context for understanding the observation Binding: ObservationContextCodes (example): Codes identifying contextual factors that affect interpretation of observations.
note |  | 0..* | Annotation | Comments about the observation
bodySite |  | 0..1 | CodeableConcept | DEPRECATED: Observed body part
bodyStructure |  | 0..* | CodeableReference(BodyStructure) | Observed body structure Binding: SNOMEDCTBodyStructures (example): SNOMED CT Body Structures
method |  | 0..1 | CodeableConcept | How it was done Binding: ObservationMethods (example): Methods for simple observations.
specimen | C | 0..1 | Reference(Specimen | Group) | Specimen used for this observation Constraints: obs-9
device |  | 0..1 | Reference(Device | DeviceMetric) | A reference to the device that generates the measurements or the device settings for the device
supportingDevice |  | 0..* | CodeableReference(Device) | Device supporting generation of the measurement Binding: DeviceType (example): Type of device supporting the generation of the measurement.
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 Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Slice: Unordered, Open by value:url
low | C | 0..1 | Quantity | Low Range, if relevant Constraints: obs-13
high | C | 0..1 | Quantity | High Range, if relevant Constraints: obs-14
normalValue |  | 0..1 | CodeableConcept | Normal value, if relevant Binding: ObservationReferenceRangeNormalValueCodes (example): Codes identifying the normal value of the observation.
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 | C | 0..1 | markdown | Text based reference range in an observation
hasMember | Σ | 0..* | Reference(Observation | QuestionnaireResponse) | Related resource that belongs to the Observation group
derivedFrom | Σ | 0..* | Reference(DocumentReference | ImagingStudy | ImagingSelection | QuestionnaireResponse | Observation) | Related resource from which the observation is made
component | Σ C | 0..* | BackboneElement | Component results
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Slice: Unordered, Open by value:url
code | Σ C | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCObsOrBoth (example): Codes identifying names of simple observations.
value[x] | Σ C | 0..1 |  | Actual component result
valueQuantity |  |  | Quantity |
valueCodeableConcept |  |  | CodeableConcept |
valueString |  |  | string |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueTime |  |  | time |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
valueAttachment |  |  | Attachment |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the component result value 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 value
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Observation.language | Base | required | All Languages | 📍6.0.0-ballot5 | FHIR Std.
Observation.triggeredBy.​type | Base | required | triggered Bytype | 📍6.0.0-ballot5 | FHIR Std.
Observation.status | Base | required | Observation Status | 📍6.0.0-ballot5 | FHIR Std.
Observation.statusReason | Base | example | Observation Status Reason | 📍6.0.0-ballot5 | FHIR Std.
Observation.category | Base | preferred | Observation Category Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.code | Base | required | Observation ValueSet | 📦2.0.0 | This IG
Observation.dataAbsentReason | Base | extensible | Data Absent Reason | 📍6.0.0-ballot5 | FHIR Std.
Observation.interpretation | Base | extensible | Observation Interpretation Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.context | Base | example | Observation Context Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.bodyStructure | Base | example | SNOMED CT Body Structures | 📍6.0.0-ballot5 | FHIR Std.
Observation.method | Base | example | Observation Methods | 📍6.0.0-ballot5 | FHIR Std.
Observation.supportingDevice | Base | example | Device Type | 📍6.0.0-ballot5 | FHIR Std.
Observation.referenceRange.​normalValue | Base | example | Observation Reference Range Normal Value Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.referenceRange.​type | Base | preferred | Observation Reference Range Meaning Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.referenceRange.​appliesTo | Base | example | Observation Reference Range Applies To Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.component.​code | Base | example | LOINC codes with Observation or Both | 📍6.0.0-ballot5 | FHIR Std.
Observation.component.​dataAbsentReason | Base | extensible | Data Absent Reason | 📍6.0.0-ballot5 | FHIR Std.
Observation.component.​interpretation | Base | extensible | Observation Interpretation Codes | 📍6.0.0-ballot5 | 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.trace('id') in %resource.descendants().select(reference | as(uri))) or descendants().where(reference='#' | as(uri)='#').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())`
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 | Observation.dataAbsentReason SHALL only be present if Observation.value[x] is not present | `dataAbsentReason.empty() or value.empty()`
obs-7 | error | Observation | If Observation.component.code is the same as Observation.code, then Observation.value SHALL NOT be present (the Observation.component.value[x] holds the value). | `value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()`
obs-9 | error | Observation.specimen | If Observation.specimen is a reference to Group, the group can only have specimens | `(reference.resolve().exists() and reference.resolve() is Group) implies reference.resolve().member.entity.resolve().all($this is Specimen)`
obs-10 | error | Observation | Observation.component.dataAbsentReason SHALL only be present if Observation.component.value[x] is not present | `component.empty() or component.where(dataAbsentReason.exists()).all(value.empty())`
obs-11 | error | Observation | if organizer exists and organizer = true, then value[x], dataAbsentReason and component SHALL NOT be present | `(organizer.exists() and organizer.allTrue()) implies (value.empty() and dataAbsentReason.empty() and component.empty())`
obs-12 | warning | Observation | All observations SHOULD have a performer | `performer.exists()`
obs-13 | error | Observation.referenceRange.low | If low.comparator exists, it must be '>=' or '>'. | `comparator.exists() implies (comparator = '>=' or comparator = '>')`
obs-14 | error | Observation.referenceRange.high | If high.comparator exists, it must be '<=' or '<'. | `comparator.exists() implies (comparator = '<=' or comparator = '<')`

This structure is derived from Observation

Summary

Mandatory: 4 elements
Must-Support: 1 element

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of Observation.effective[x]

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation | C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7, obs-10, obs-11, obs-12
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
contained |  | 0..* | Resource | Contained, inline Resources
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored Slice: Unordered, Open by value:url
status | ?!Σ | 1..1 | code | registered | in-process | specimen-in-process | preliminary | final | amended | corrected | appended | cancelled | entered-in-error | unknown | cannot-be-obtained Binding: ObservationStatus (required): Codes providing the status of an observation. Required Pattern: final
code | Σ C | 1..1 | CodeableConcept | Type of observation (code / type) Binding: Observation ValueSet (required)
subject | S Σ | 1..1 | Reference(Patient) | Who and/or what the observation is about
focus | ?!Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record
Slices for effective[x] | Σ | 1..1 | dateTime | Clinically relevant time/time-period for observation Slice: Unordered, Closed by type:$this
effective[x]:effectiveDateTime | Σ | 1..1 | dateTime | Clinically relevant time/time-period for observation
value[x] | Σ C | 1..1 |  | Actual result
valueQuantity |  |  | Quantity |
valueCodeableConcept |  |  | CodeableConcept |
valueString |  |  | string |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueTime |  |  | time |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
valueAttachment |  |  | Attachment |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the result value is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
component | Σ C | 0..* | BackboneElement | Component results
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Slice: Unordered, Open by value:url
code | Σ C | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCObsOrBoth (example): Codes identifying names of simple observations.
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Observation.status | Base | required | Observation Status | 📍6.0.0-ballot5 | FHIR Std.
Observation.code | Base | required | Observation ValueSet | 📦2.0.0 | This IG
Observation.dataAbsentReason | Base | extensible | Data Absent Reason | 📍6.0.0-ballot5 | FHIR Std.
Observation.component.​code | Base | example | LOINC codes with Observation or Both | 📍6.0.0-ballot5 | 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.trace('id') in %resource.descendants().select(reference | as(uri))) or descendants().where(reference='#' | as(uri)='#').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())`
obs-6 | error | Observation | Observation.dataAbsentReason SHALL only be present if Observation.value[x] is not present | `dataAbsentReason.empty() or value.empty()`
obs-7 | error | Observation | If Observation.component.code is the same as Observation.code, then Observation.value SHALL NOT be present (the Observation.component.value[x] holds the value). | `value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()`
obs-10 | error | Observation | Observation.component.dataAbsentReason SHALL only be present if Observation.component.value[x] is not present | `component.empty() or component.where(dataAbsentReason.exists()).all(value.empty())`
obs-11 | error | Observation | if organizer exists and organizer = true, then value[x], dataAbsentReason and component SHALL NOT be present | `(organizer.exists() and organizer.allTrue()) implies (value.empty() and dataAbsentReason.empty() and component.empty())`
obs-12 | warning | Observation | All observations SHOULD have a performer | `performer.exists()`

Differential View

This structure is derived from Observation

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation |  | 0..* | Observation | Measurements and simple assertions
status |  | 1..1 | code | registered | in-process | specimen-in-process | preliminary | final | amended | corrected | appended | cancelled | entered-in-error | unknown | cannot-be-obtained Required Pattern: final
code |  | 1..1 | CodeableConcept | Type of observation (code / type) Binding: Observation ValueSet (required)
subject | S | 1..1 | Reference(Patient) | Who and/or what the observation is about
Slices for effective[x] |  | 1..1 | dateTime | Clinically relevant time/time-period for observation Slice: Unordered, Open by type:$this
effective[x]:effectiveDateTime |  | 1..1 | dateTime | Clinically relevant time/time-period for observation
value[x] |  | 1..1 | Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period, Attachment | Actual result
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Observation.code | Base | required | Observation ValueSet | 📦2.0.0 | This IG

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Observation | C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7, obs-10, obs-11, obs-12
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: AllLanguages (required): IETF language tag for a human language
Additional Bindings | Purpose
CommonLanguages | Starter
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored Slice: Unordered, Open by value:url
identifier | Σ | 0..* | Identifier | Business Identifier for observation
basedOn | Σ | 0..* | Reference(CarePlan | DeviceRequest | MedicationRequest | NutritionOrder | ServiceRequest) | Fulfills plan, proposal or order
triggeredBy |  | 0..* | BackboneElement | Triggering observation(s)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Slice: Unordered, Open by value:url
observation | Σ | 1..1 | Reference(Observation) | Triggering observation
type | Σ | 1..1 | code | reflex | repeat | re-run Binding: TriggeredBytype (required): The type of TriggeredBy Observation.
reason |  | 0..1 | string | Reason that the observation was triggered
partOf | Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event
status | ?!Σ | 1..1 | code | registered | in-process | specimen-in-process | preliminary | final | amended | corrected | appended | cancelled | entered-in-error | unknown | cannot-be-obtained Binding: ObservationStatus (required): Codes providing the status of an observation. Required Pattern: final
statusReason |  | 0..1 | CodeableConcept | Reason for current status Binding: ObservationStatusReason (example): Codes identifying the reason for the current state of an observation.
category |  | 0..* | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
code | Σ C | 1..1 | CodeableConcept | Type of observation (code / type) Binding: Observation ValueSet (required)
subject | S Σ | 1..1 | Reference(Patient) | Who and/or what the observation is about
focus | ?!Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record
organizer | Σ C | 0..1 | boolean | This observation organizes/groups a set of sub-observations
encounter | Σ | 0..1 | Reference(Encounter) | Healthcare event during which this observation is made. If you need to place the observation within one or more episodes of care, use the workflow-episodeOfCare extension
Slices for effective[x] | Σ | 1..1 | dateTime | Clinically relevant time/time-period for observation Slice: Unordered, Closed by type:$this
effective[x]:effectiveDateTime | Σ | 1..1 | dateTime | Clinically relevant time/time-period for observation
issued | Σ | 0..1 | instant | Date/Time this version was made available
performer | Σ | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson | HealthcareService | Group) | Who is responsible for the observation
value[x] | Σ C | 1..1 |  | Actual result
valueQuantity |  |  | Quantity |
valueCodeableConcept |  |  | CodeableConcept |
valueString |  |  | string |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueTime |  |  | time |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
valueAttachment |  |  | Attachment |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the result value 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.
context |  | 0..* | CodeableReference(Resource) | Context for understanding the observation Binding: ObservationContextCodes (example): Codes identifying contextual factors that affect interpretation of observations.
note |  | 0..* | Annotation | Comments about the observation
bodySite |  | 0..1 | CodeableConcept | DEPRECATED: Observed body part
bodyStructure |  | 0..* | CodeableReference(BodyStructure) | Observed body structure Binding: SNOMEDCTBodyStructures (example): SNOMED CT Body Structures
method |  | 0..1 | CodeableConcept | How it was done Binding: ObservationMethods (example): Methods for simple observations.
specimen | C | 0..1 | Reference(Specimen | Group) | Specimen used for this observation Constraints: obs-9
device |  | 0..1 | Reference(Device | DeviceMetric) | A reference to the device that generates the measurements or the device settings for the device
supportingDevice |  | 0..* | CodeableReference(Device) | Device supporting generation of the measurement Binding: DeviceType (example): Type of device supporting the generation of the measurement.
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 Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Slice: Unordered, Open by value:url
low | C | 0..1 | Quantity | Low Range, if relevant Constraints: obs-13
high | C | 0..1 | Quantity | High Range, if relevant Constraints: obs-14
normalValue |  | 0..1 | CodeableConcept | Normal value, if relevant Binding: ObservationReferenceRangeNormalValueCodes (example): Codes identifying the normal value of the observation.
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 | C | 0..1 | markdown | Text based reference range in an observation
hasMember | Σ | 0..* | Reference(Observation | QuestionnaireResponse) | Related resource that belongs to the Observation group
derivedFrom | Σ | 0..* | Reference(DocumentReference | ImagingStudy | ImagingSelection | QuestionnaireResponse | Observation) | Related resource from which the observation is made
component | Σ C | 0..* | BackboneElement | Component results
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized Slice: Unordered, Open by value:url
code | Σ C | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCObsOrBoth (example): Codes identifying names of simple observations.
value[x] | Σ C | 0..1 |  | Actual component result
valueQuantity |  |  | Quantity |
valueCodeableConcept |  |  | CodeableConcept |
valueString |  |  | string |
valueBoolean |  |  | boolean |
valueInteger |  |  | integer |
valueRange |  |  | Range |
valueRatio |  |  | Ratio |
valueSampledData |  |  | SampledData |
valueTime |  |  | time |
valueDateTime |  |  | dateTime |
valuePeriod |  |  | Period |
valueAttachment |  |  | Attachment |
dataAbsentReason | C | 0..1 | CodeableConcept | Why the component result value 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 value
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Observation.language | Base | required | All Languages | 📍6.0.0-ballot5 | FHIR Std.
Observation.triggeredBy.​type | Base | required | triggered Bytype | 📍6.0.0-ballot5 | FHIR Std.
Observation.status | Base | required | Observation Status | 📍6.0.0-ballot5 | FHIR Std.
Observation.statusReason | Base | example | Observation Status Reason | 📍6.0.0-ballot5 | FHIR Std.
Observation.category | Base | preferred | Observation Category Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.code | Base | required | Observation ValueSet | 📦2.0.0 | This IG
Observation.dataAbsentReason | Base | extensible | Data Absent Reason | 📍6.0.0-ballot5 | FHIR Std.
Observation.interpretation | Base | extensible | Observation Interpretation Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.context | Base | example | Observation Context Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.bodyStructure | Base | example | SNOMED CT Body Structures | 📍6.0.0-ballot5 | FHIR Std.
Observation.method | Base | example | Observation Methods | 📍6.0.0-ballot5 | FHIR Std.
Observation.supportingDevice | Base | example | Device Type | 📍6.0.0-ballot5 | FHIR Std.
Observation.referenceRange.​normalValue | Base | example | Observation Reference Range Normal Value Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.referenceRange.​type | Base | preferred | Observation Reference Range Meaning Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.referenceRange.​appliesTo | Base | example | Observation Reference Range Applies To Codes | 📍6.0.0-ballot5 | FHIR Std.
Observation.component.​code | Base | example | LOINC codes with Observation or Both | 📍6.0.0-ballot5 | FHIR Std.
Observation.component.​dataAbsentReason | Base | extensible | Data Absent Reason | 📍6.0.0-ballot5 | FHIR Std.
Observation.component.​interpretation | Base | extensible | Observation Interpretation Codes | 📍6.0.0-ballot5 | 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.trace('id') in %resource.descendants().select(reference | as(uri))) or descendants().where(reference='#' | as(uri)='#').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())`
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 | Observation.dataAbsentReason SHALL only be present if Observation.value[x] is not present | `dataAbsentReason.empty() or value.empty()`
obs-7 | error | Observation | If Observation.component.code is the same as Observation.code, then Observation.value SHALL NOT be present (the Observation.component.value[x] holds the value). | `value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()`
obs-9 | error | Observation.specimen | If Observation.specimen is a reference to Group, the group can only have specimens | `(reference.resolve().exists() and reference.resolve() is Group) implies reference.resolve().member.entity.resolve().all($this is Specimen)`
obs-10 | error | Observation | Observation.component.dataAbsentReason SHALL only be present if Observation.component.value[x] is not present | `component.empty() or component.where(dataAbsentReason.exists()).all(value.empty())`
obs-11 | error | Observation | if organizer exists and organizer = true, then value[x], dataAbsentReason and component SHALL NOT be present | `(organizer.exists() and organizer.allTrue()) implies (value.empty() and dataAbsentReason.empty() and component.empty())`
obs-12 | warning | Observation | All observations SHOULD have a performer | `performer.exists()`
obs-13 | error | Observation.referenceRange.low | If low.comparator exists, it must be '>=' or '>'. | `comparator.exists() implies (comparator = '>=' or comparator = '>')`
obs-14 | error | Observation.referenceRange.high | If high.comparator exists, it must be '<=' or '<'. | `comparator.exists() implies (comparator = '<=' or comparator = '<')`

This structure is derived from Observation

Summary

Mandatory: 4 elements
Must-Support: 1 element

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of Observation.effective[x]

Other representations of profile: CSV, Excel, Schematron