<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="hddt-blood-pressure-value" />
  <url value="https://gematik.de/fhir/hddt/StructureDefinition/hddt-blood-pressure-value" />
  <version value="1.0.1" />
  <name value="HddtBloodPressureValue" />
  <title value="Observation - HDDT Blood Pressure Value" />
  <status value="active" />
  <date value="2026-04-29" />
  <publisher value="gematik GmbH" />
  <description value="Profile for capturing blood pressure value as FHIR Observation resources.&#xA;&#xA;This profile defines the exchange of blood pressure value data for the Mandatory Interoperable Value (MIV) \&quot;Blood Pressure Monitoring\&quot; which is technically defined &#xA;by the ValueSet _hddt-miv-blood-pressure-value_. This MIV is e.g. implemented by automated sphygmomanometers (oszillometric, auscultatory) that can connect to &#xA;a Personal Health Gateway (e.g. a mobile app for tracking blood pressure values) through wireless communication.&#xA;&#xA;Blood pressure measurements consist of multiple components: systolic blood pressure, diastolic blood pressure, and optionally mean blood pressure. &#xA;This profile uses the LOINC panel code #85354-9 &quot;Blood pressure panel with all children optional&quot; defined in the MIV _hddt-miv-blood-pressure-value_ to represent the complete measurement.&#xA;&#xA;**Obligations and Conventions:**&#xA;&#xA;Each Blood Pressure Measurement MUST either hold a reference to a _Sensor Type And Calibration Status_ [DeviceMetric](https://hl7.org/fhir/R4/devicemetric.html) resource or to a &#xA;_Personal Health Device_ [Device](https://hl7.org/fhir/R4/device.html) resource (eXclusive OR). Typically the reference will be &#xA;to a [Device](https://hl7.org/fhir/R4/device.html) resource, but the option to reference a [DeviceMetric](https://hl7.org/fhir/R4/devicemetric.html) &#xA;resource is provided for compatibility with the overarching HDDT specification.&#xA;&#xA;This profile inherits from the FHIR Blood Pressure profile (`http://hl7.org/fhir/StructureDefinition/bp`) and adds HDDT-specific constraints. The blood pressure components &#xA;(systolic and diastolic are mandatory; mean is optional) are inherited from the parent profile with the MeanBP component added as an optional slice.&#xA;Each component MUST include a value in mmHg (millimeters of mercury).&#xA;&#xA;Caution: For privacy and data protection, the subject reference MUST only use pseudonymized or anonymized identifiers. Direct patient identification is not permitted.&#xA;&#xA;**Constraints applied:**  &#xA;- `code.coding[BPCode]` is constrained to ValueSet HddtMivBloodPressureValue containing LOINC panel code 85354-9&#xA;- `component` cardinality is set to 2..3 to require systolic and diastolic components (inherited from parent), with mean blood pressure as optional&#xA;- `component[MeanBP]` is added as an optional slice (0..1) for mean blood pressure with LOINC code 8478-0&#xA;- Each component's `valueQuantity` MUST use UCUM code mm[Hg] for the unit&#xA;- `device` is set to be mandatory in order to provide the DiGA with information about the sensor's calibration status and with information about the static and dynamic attributes of the Personal Health Device." />
  <copyright value="Copyright (c) 2025 gematik GmbH" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Observation" />
  <baseDefinition value="http://fhir.de/StructureDefinition/observation-de-vitalsign-blutdruck" />
  <derivation value="constraint" />
  <differential>
    <element id="Observation.code">
      <path value="Observation.code" />
      <short value="Type of blood pressure measurement" />
      <binding>
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="ObservationCode" />
        </extension>
        <strength value="example" />
        <description value="Specifies the type of blood pressure measurement using codes from the ValueSet for blood pressure measurements." />
        <valueSet value="http://hl7.org/fhir/ValueSet/observation-codes" />
      </binding>
    </element>
    <element id="Observation.code.coding:loinc">
      <path value="Observation.code.coding" />
      <sliceName value="loinc" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/hddt/ValueSet/hddt-miv-blood-pressure-value" />
      </binding>
    </element>
    <element id="Observation.code.coding:snomed">
      <path value="Observation.code.coding" />
      <sliceName value="snomed" />
      <max value="0" />
    </element>
    <element id="Observation.subject">
      <path value="Observation.subject" />
      <short value="Patient reference in anonymized or pseudonymized form only" />
      <definition value="Reference to the patient. The patient MUST NOT be identified directly. Only anonymized or pseudonymized forms are permitted." />
    </element>
    <element id="Observation.device">
      <path value="Observation.device" />
      <short value="Reference to the blood pressure measurement device" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://gematik.de/fhir/hddt/StructureDefinition/hddt-personal-health-device" />
        <targetProfile value="https://gematik.de/fhir/hddt/StructureDefinition/hddt-sensor-type-and-calibration-status" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.component:SystolicBP">
      <path value="Observation.component" />
      <sliceName value="SystolicBP" />
    </element>
    <element id="Observation.component:SystolicBP.value[x]">
      <path value="Observation.component.value[x]" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.component:SystolicBP.value[x]:valueQuantity">
      <path value="Observation.component.value[x]" />
      <sliceName value="valueQuantity" />
      <type>
        <code value="Quantity" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.component:DiastolicBP">
      <path value="Observation.component" />
      <sliceName value="DiastolicBP" />
    </element>
    <element id="Observation.component:DiastolicBP.value[x]">
      <path value="Observation.component.value[x]" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.component:DiastolicBP.value[x]:valueQuantity">
      <path value="Observation.component.value[x]" />
      <sliceName value="valueQuantity" />
      <type>
        <code value="Quantity" />
      </type>
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>