<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="epa-observation-body-height" />
  <url value="https://gematik.de/fhir/epa/StructureDefinition/epa-observation-body-height" />
  <version value="1.1.0" />
  <name value="EPAObservationBodyHeight" />
  <title value="EPA Body Height Observation Profile" />
  <status value="active" />
  <experimental value="false" />
  <date value="2024-08-14" />
  <publisher value="mio42 GmbH" />
  <description value="Dieses Profil bildet die Körpergröße/Körperlänge ab." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Observation" />
  <baseDefinition value="http://fhir.de/StructureDefinition/observation-de-vitalsign-koerpergroesse" />
  <derivation value="constraint" />
  <differential>
    <element id="Observation">
      <path value="Observation" />
      <definition value="Dieses Profil bildet die Körpergröße/Körperlänge ab." />
      <constraint>
        <key value="obs-epa-2" />
        <severity value="error" />
        <human value="If it is a valid Observation it must have a value otherwise it must not have a value" />
        <expression value="(Observation.value.exists() implies (Observation.status in ('final' | 'amended' | 'corrected' | 'preliminary')))" />
        <source value="https://gematik.de/fhir/epa/StructureDefinition/epa-observation-body-height" />
      </constraint>
    </element>
    <element id="Observation.meta">
      <path value="Observation.meta" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.meta.versionId">
      <path value="Observation.meta.versionId" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.meta.lastUpdated">
      <path value="Observation.meta.lastUpdated" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.text">
      <path value="Observation.text" />
      <definition value="In diesem Element können die, in der Instanz, enthaltenen Informationen in einer menschenlesbaren Form zusammengefasst werden. Dabei ist zu beachten, dass keine Informationen aufgenommen werden dürfen, die nicht in strukturierter Form an anderer Stelle in der Instanz enthalten sind." />
    </element>
    <element id="Observation.text.status">
      <path value="Observation.text.status" />
      <fixedCode value="extensions" />
    </element>
    <element id="Observation.status">
      <path value="Observation.status" />
      <definition value="Hier wird ein Code aus dem FHIR ValueSet http://hl7.org/fhir/ValueSet/observation-status angegeben." />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code">
      <path value="Observation.code" />
      <definition value="Hier werden die Codes zur Bestimmung des genauen Vitalzeichens/Körpermaßes angegeben." />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding">
      <path value="Observation.code.coding" />
      <definition value="Angabe eines spezifischen Codes zur Bestimmung des genauen Vitalzeichens/Körpermaßes." />
      <comment value="Das MustSupport gilt nur für die vordefinierten Slices." />
      <min value="2" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding:loinc">
      <path value="Observation.code.coding" />
      <sliceName value="loinc" />
      <max value="1" />
      <patternCoding>
        <system value="http://loinc.org" />
      </patternCoding>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/terminology/ValueSet/epa-body-height-loinc-vs" />
      </binding>
    </element>
    <element id="Observation.code.coding:loinc.system">
      <path value="Observation.code.coding.system" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding:loinc.version">
      <path value="Observation.code.coding.version" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding:loinc.code">
      <path value="Observation.code.coding.code" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding:loinc.display">
      <path value="Observation.code.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding:snomed">
      <path value="Observation.code.coding" />
      <sliceName value="snomed" />
      <min value="1" />
      <max value="1" />
      <patternCoding>
        <system value="http://snomed.info/sct" />
      </patternCoding>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/terminology/ValueSet/epa-body-height-snomed-ct-vs" />
      </binding>
    </element>
    <element id="Observation.code.coding:snomed.system">
      <path value="Observation.code.coding.system" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding:snomed.version">
      <path value="Observation.code.coding.version" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding:snomed.code">
      <path value="Observation.code.coding.code" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.code.coding:snomed.display">
      <path value="Observation.code.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.subject">
      <path value="Observation.subject" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.subject.identifier">
      <path value="Observation.subject.identifier" />
      <min value="1" />
      <type>
        <code value="Identifier" />
        <profile value="http://fhir.de/StructureDefinition/identifier-kvid-10" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.focus">
      <path value="Observation.focus" />
      <comment value="Die Observation bezieht sich explizit auf den/die bei subject referenzierten Patient:in, daher ist dieses Element nicht notwendig" />
      <max value="0" />
    </element>
    <element id="Observation.effective[x]">
      <path value="Observation.effective[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="closed" />
      </slicing>
      <definition value="Hier wird der Zeitpunkt der Messung angegeben." />
      <type>
        <code value="dateTime" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.effective[x]:effectiveDateTime">
      <path value="Observation.effective[x]" />
      <sliceName value="effectiveDateTime" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="dateTime" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.performer">
      <path value="Observation.performer" />
      <definition value="Hier wird die behandelnde Person/Einrichtung referenziert, die die Beobachtung durchgeführt hat." />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/RelatedPerson" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/PractitionerRole" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.performer.reference">
      <path value="Observation.performer.reference" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.performer.identifier">
      <path value="Observation.performer.identifier" />
      <type>
        <code value="Identifier" />
        <profile value="http://fhir.de/StructureDefinition/identifier-kvid-10" />
        <profile value="http://fhir.de/StructureDefinition/identifier-telematik-id" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.value[x]">
      <path value="Observation.value[x]" />
      <definition value="Hier wird der Messwert angegeben." />
      <mustSupport value="true" />
    </element>
    <element id="Observation.value[x].value">
      <path value="Observation.value[x].value" />
      <definition value="Hier wird der numerische Messwert angegeben." />
      <mustSupport value="true" />
    </element>
    <element id="Observation.value[x].unit">
      <path value="Observation.value[x].unit" />
      <definition value="Hier wird die Einheit des Messwerts angegeben." />
      <mustSupport value="true" />
    </element>
    <element id="Observation.value[x].system">
      <path value="Observation.value[x].system" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.value[x].code">
      <path value="Observation.value[x].code" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.note">
      <path value="Observation.note" />
      <definition value="Hier können ergänzende freitextliche Kommentare und Notizen vorgenommen werden, die nicht durch die strukturierten Datenelemente erfassbar sind." />
      <mustSupport value="true" />
    </element>
    <element id="Observation.note.author[x]">
      <path value="Observation.note.author[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="closed" />
      </slicing>
      <definition value="Hier wird die Person referenziert, die die Notiz erstellt hat." />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/RelatedPerson" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.note.author[x]:authorReference">
      <path value="Observation.note.author[x]" />
      <sliceName value="authorReference" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.note.author[x]:authorReference.reference">
      <path value="Observation.note.author[x].reference" />
      <mustSupport value="true" />
    </element>
    <element id="Observation.note.author[x]:authorReference.identifier">
      <path value="Observation.note.author[x].identifier" />
      <type>
        <code value="Identifier" />
        <profile value="http://fhir.de/StructureDefinition/identifier-kvid-10" />
        <profile value="http://fhir.de/StructureDefinition/identifier-telematik-id" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Observation.note.time">
      <path value="Observation.note.time" />
      <definition value="Hier wird der Zeitpunkt angegeben, zu dem die Notiz erstellt wurde." />
      <comment value="Dieses Element sollte in der Regel automatisiert ohne Aufwand für die Person, die die Notiz erstellt befüllt werden." />
      <mustSupport value="true" />
    </element>
    <element id="Observation.note.text">
      <path value="Observation.note.text" />
      <definition value="Hier wird der eigentliche Text der Notiz eingetragen." />
      <mustSupport value="true" />
    </element>
    <element id="Observation.specimen">
      <path value="Observation.specimen" />
      <comment value="Die Angabe einer Probe (Element specimen) hat für diese Observation keinen Anwendungsfall." />
      <max value="0" />
    </element>
    <element id="Observation.component">
      <path value="Observation.component" />
      <comment value="Ein gruppierte Angabe des Ergebnis dieser Observation ist aus fachlicher Sicht nicht sinnvoll." />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>