Observation - base profile

  • Profile status: Draft
  • Canonical URL: http://fhir.smart4health.eu/StructureDefinition/s4h-observation-base

This is base profile for all Observation instances in Smart4Health. It is very closely aligned with the International Patient Summary (IPS) Observation results base profile. However, due to differences in the targeted use-cases, there are minor difference:

  1. The Smart4Health profile does not fix the status element to the value "fixed" (to allow e.g. communicating that an already uploaded resources was, in fact, entered in error)
  2. The Smart4Health profile does not require Observation.subject to be a literal reference (a URL), e.g. Observation.subject.reference is not required (since Smart4Health data sources usually cannot provide such a reference - see the general guidelines for data providers)

Hence, the Smart4Health base Observation profile is not a re-profiling of the IPS profile. As a consequence, instances conforming to the former profile are not automatically guaranteed to conform to the IPS Observation-result profile. However, the reverse hold true: An Observation that conforms to the IPS Observation-result profile always conforms to the profile described here.

If further, more specific Smart4Health Observation are added later, they will be derived from this profile.

Mandatory and must-support data elements

A valid instance according to this profile must satisfy the following constraints:

  • have a status (element: status) - base constraint
  • have a code (element: code) - base constraint
  • point to the patient the observation is about (element: subject) - aligns with constraint in the IPS profile (except for difference discussed above)
  • contain the time the observation is being asserted for (element: effective[x]) - aligns with constraint in the IPS profile

In addition, 11 top-level elements are marked as must-support.

Pre-specified observation types used in User Portal Web App

Certain standard observations are used in particular ways in the Smart4Health User Portal web application. One class of such observations are the vital signs (weight, height, blood pressure etc.) for which profiles are defined in the core FHIR standard - see the vital sign page for details. There is a further set of standard observations that are built directly on the base Observation profile described here. They are currently not defined by individual profiles, but are recognized based on the associated codes (in the element code). Observation instances carrying one of these codes are also expected to encode the observation results in particular ways. The table below specifies these special Observation types and the associated constraints.

Observation type LOINC code Code in category element Restrictions on value[x]
Blood group (ABO group [Type] in Blood) 883-9 laboratory (system: http://terminology.hl7.org/CodeSystem/observation-category) valueCodeableConcept must be present and contain one of the values from the LOINC Answer List LL2419-1 (FHIR ValueSet with canonical URL http://loinc.org/vs/LL2419-1)
Rh factor (Rh [Type] in Blood) 10331-7 laboratory (system: http://terminology.hl7.org/CodeSystem/observation-category) valueCodeableConcept must be present and contain one of the values the LOINC Answer List LL360-9 (FHIR ValueSet with canonical URL http://loinc.org/vs/LL360-9)
Occupation (job) 85658-3 social-history (system: http://terminology.hl7.org/CodeSystem/observation-category) valueString must be present

Data from wearable devices

Health data such as step counts collected by wearable devices (e.g. smartwatches) is typically stored as Observation resources. The Smart4Health IG does not define specific profiles for such data - implementers should simply use this general observation profile. However, the following guidance should be observed (see also the example below):

  • Whenever possible, a LOINC code should be provided in Observation.code. Note that if the observation reported is an average over an interval (e.g. heart-rate averaged over a day), the chosen code should reflect that and not be a code for a point-in-time measurement.
  • Whenever possible, UCUM units should be used for measurement results (identifying URL: http://unitsofmeasure.org).
  • Clients using the SDK to communicate directly with the Smart4Health platform can refer to the user via the platform user ID (which is available via the SDK). That is, the user ID should be used as a business identifier in Observation.subject.identifier - see the documentation of the user ID for details.
  • Information about the wearable device collecting the data can be stored in a Device resource (for which no specific Smart4Health profile is provided). It can then be referenced using a business ID. That is, the Device resource should be assigned a unique identifier in Device.identifier and this identifier should subsequently be referred to in Observation.device.identifier. The identifier itself can e.g. be taken from a custom namespace controlled by the client, such as a namespace associated with a unique device ID assigned by the manufacturer (if it has an identifying URL or OID that can be used to fill the identifier.system element). It can also be a generic universally unique ID (UUID), in which case one should use the namespace urn:ietf:rfc:3986 in the system element and prefix the UUID itself with urn:uuid: - see the UUID identifier example in the FHIR specification.

Note that the Smart4Health platform does not fully implement the HL7 Personal Health Device (PHD) Implementation Guide or the Continua Design Guidelines, and diverges from them in some aspect. In particular, the Smart4Health IG does not require Observation.subject.reference to be filled. This difference comes from the end-to-end encryption of the Smart4Health platform and resulting differences in the data handling compared to FHIR servers that do not use such encryption. Nonetheless, implementers are encouraged to look at the PHD IG and the Continua guidelines for general guidance on handling data from wearable devices in FHIR, and to follow that guidance whenever it is compatible with the Smart4Health IG.

Example resources

Formal views of profile content

Differential view

Shows only differences relative to the base resource definition.

idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
extensionI0..*Extension
modifierExtension?! I0..*Extension
identifierS Σ0..*Identifier
basedOnΣ I0..*Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest)
partOfΣ I0..*Reference(MedicationAdministration | MedicationDispense | Procedure | Immunization | ImagingStudy | S4hMedicationStatement)
statusS Σ ?!1..1codeBinding
categoryS0..*CodeableConceptIPSBinding
codeS Σ1..1CodeableConceptIPS
id0..1string
extensionI0..*Extension
referenceS Σ I0..1string
typeΣ0..1uriBinding
identifierΣ0..1Identifier
displayΣ0..1string
focusΣ I0..*Reference(Resource)
encounterS Σ I0..1Reference(S4hEncounter)
effectiveDateTimedateTime
effectivePeriodPeriod
issuedΣ0..1instant
performerS Σ I0..*Reference(PractitionerUvIps | PractitionerRoleUvIps | OrganizationUvIps | CareTeam | S4hPatient | RelatedPerson)
valueQuantityQuantity
valueCodeableConceptCodeableConcept
valueStringstring
valueBooleanboolean
valueIntegerinteger
valueRangeRange
valueRatioRatio
valueSampledDataSampledData
valueTimetime
valueDateTimedateTime
valuePeriodPeriod
dataAbsentReasonI0..1CodeableConceptBinding
interpretation0..*CodeableConceptBinding
note0..*Annotation
bodySite0..1CodeableConcept
method0..1CodeableConcept
specimenI0..1Reference(Specimen)
deviceI0..1Reference(Device | DeviceMetric)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
lowI0..1SimpleQuantity
highI0..1SimpleQuantity
type0..1CodeableConceptBinding
appliesTo0..*CodeableConcept
ageI0..1Range
text0..1string
hasMemberS Σ I0..*Reference(ObservationResultsUvIps | QuestionnaireResponse | MolecularSequence)
derivedFromΣ I0..*Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
codeΣ1..1CodeableConcept
valueQuantityQuantity
valueCodeableConceptCodeableConcept
valueStringstring
valueBooleanboolean
valueIntegerinteger
valueRangeRange
valueRatioRatio
valueSampledDataSampledData
valueTimetime
valueDateTimedateTime
valuePeriodPeriod
dataAbsentReasonI0..1CodeableConceptBinding
interpretation0..*CodeableConceptBinding
referenceRange0..*see (referenceRange)

Snapshot view

Shows all constraints, from both base resource definition and profile.

idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
extensionI0..*Extension
modifierExtension?! I0..*Extension
identifierS Σ0..*Identifier
basedOnΣ I0..*Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest)
partOfΣ I0..*Reference(MedicationAdministration | MedicationDispense | Procedure | Immunization | ImagingStudy | S4hMedicationStatement)
statusS Σ ?!1..1codeBinding
categoryS0..*CodeableConceptIPSBinding
codeS Σ1..1CodeableConceptIPS
id0..1string
extensionI0..*Extension
referenceS Σ I0..1string
typeΣ0..1uriBinding
identifierΣ0..1Identifier
displayΣ0..1string
focusΣ I0..*Reference(Resource)
encounterS Σ I0..1Reference(S4hEncounter)
effectiveDateTimedateTime
effectivePeriodPeriod
issuedΣ0..1instant
performerS Σ I0..*Reference(PractitionerUvIps | PractitionerRoleUvIps | OrganizationUvIps | CareTeam | S4hPatient | RelatedPerson)
valueQuantityQuantity
valueCodeableConceptCodeableConcept
valueStringstring
valueBooleanboolean
valueIntegerinteger
valueRangeRange
valueRatioRatio
valueSampledDataSampledData
valueTimetime
valueDateTimedateTime
valuePeriodPeriod
dataAbsentReasonI0..1CodeableConceptBinding
interpretation0..*CodeableConceptBinding
note0..*Annotation
bodySite0..1CodeableConcept
method0..1CodeableConcept
specimenI0..1Reference(Specimen)
deviceI0..1Reference(Device | DeviceMetric)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
lowI0..1SimpleQuantity
highI0..1SimpleQuantity
type0..1CodeableConceptBinding
appliesTo0..*CodeableConcept
ageI0..1Range
text0..1string
hasMemberS Σ I0..*Reference(ObservationResultsUvIps | QuestionnaireResponse | MolecularSequence)
derivedFromΣ I0..*Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
codeΣ1..1CodeableConcept
valueQuantityQuantity
valueCodeableConceptCodeableConcept
valueStringstring
valueBooleanboolean
valueIntegerinteger
valueRangeRange
valueRatioRatio
valueSampledDataSampledData
valueTimetime
valueDateTimedateTime
valuePeriodPeriod
dataAbsentReasonI0..1CodeableConceptBinding
interpretation0..*CodeableConceptBinding
referenceRange0..*see (referenceRange)