<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="EmigaHospitalRoomLocation" />
  <url value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
  <version value="0.2.0" />
  <name value="EmigaHospitalRoomLocation" />
  <title value="Krankenhaus - Raum" />
  <status value="active" />
  <experimental value="false" />
  <date value="2026-03-09" />
  <publisher value="Robert Koch-Institut" />
  <description value="Dieses Profil bildet einen Raum in einem Krankenhaus im Kontext von EMIGA ab. Es dient der strukturierten Erfassung von räumlichen Einheiten innerhalb eines Krankenhausstandorts (z. B. Zimmer, Behandlungsräume, Isolationsbereiche) einschließlich ihrer Identifikation und Zuordnung zu übergeordneten Organisationseinheiten." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Location" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Location" />
  <derivation value="constraint" />
  <differential>
    <element id="Location.meta">
      <path value="Location.meta" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.profile">
      <path value="Location.meta.profile" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.profile:emigaprofile">
      <path value="Location.meta.profile" />
      <sliceName value="emigaprofile" />
      <min value="1" />
      <max value="*" />
      <patternCanonical value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.security">
      <path value="Location.meta.security" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <description value="Slicing security attribute by coding system" />
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <min value="2" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.security:visibility">
      <path value="Location.meta.security" />
      <sliceName value="visibility" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://emiga.rki.de/fhir/ValueSet/ORGVResourceVisibilityTypeVS" />
      </binding>
    </element>
    <element id="Location.meta.security:visibility.system">
      <path value="Location.meta.security.system" />
      <min value="1" />
      <patternUri value="https://emiga.rki.de/fhir/common/CodeSystem/ResourceVisibilityType" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.security:visibility.code">
      <path value="Location.meta.security.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.security:responsibility">
      <path value="Location.meta.security" />
      <sliceName value="responsibility" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://emiga.rki.de/fhir/common/ValueSet/ResourceResponsibility" />
      </binding>
    </element>
    <element id="Location.meta.security:responsibility.system">
      <path value="Location.meta.security.system" />
      <min value="1" />
      <patternUri value="https://emiga.rki.de/fhir/common/CodeSystem/ResourceResponsibility" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.security:responsibility.code">
      <path value="Location.meta.security.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag">
      <path value="Location.meta.tag" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:relevance">
      <path value="Location.meta.tag" />
      <sliceName value="relevance" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://emiga.rki.de/fhir/common/ValueSet/Relevance" />
      </binding>
    </element>
    <element id="Location.meta.tag:relevance.system">
      <path value="Location.meta.tag.system" />
      <min value="1" />
      <patternUri value="https://emiga.rki.de/fhir/common/CodeSystem/Relevance" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:relevance.code">
      <path value="Location.meta.tag.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:relevance.display">
      <path value="Location.meta.tag.display" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:orgvBundleId">
      <path value="Location.meta.tag" />
      <sliceName value="orgvBundleId" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="preferred" />
        <valueSet value="https://emiga.rki.de/fhir/ValueSet/OrgVBundleId" />
      </binding>
    </element>
    <element id="Location.meta.tag:orgvBundleId.system">
      <path value="Location.meta.tag.system" />
      <min value="1" />
      <patternUri value="https://emiga.rki.de/fhir/vzd/CodeSystem/OrgVBundleId" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:orgvBundleId.code">
      <path value="Location.meta.tag.code" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:orgvBundleId.display">
      <path value="Location.meta.tag.display" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:orgvBundleVersion">
      <path value="Location.meta.tag" />
      <sliceName value="orgvBundleVersion" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="preferred" />
        <valueSet value="https://emiga.rki.de/fhir/vzd/ValueSet/OrgVBundleVersion" />
      </binding>
    </element>
    <element id="Location.meta.tag:orgvBundleVersion.system">
      <path value="Location.meta.tag.system" />
      <min value="1" />
      <patternUri value="https://emiga.rki.de/fhir/vzd/CodeSystem/OrgVBundleVersion" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:orgvBundleVersion.code">
      <path value="Location.meta.tag.code" />
      <mustSupport value="true" />
    </element>
    <element id="Location.meta.tag:orgvBundleVersion.display">
      <path value="Location.meta.tag.display" />
      <mustSupport value="true" />
    </element>
    <element id="Location.implicitRules">
      <path value="Location.implicitRules" />
      <max value="0" />
    </element>
    <element id="Location.text">
      <path value="Location.text" />
      <max value="0" />
    </element>
    <element id="Location.contained">
      <path value="Location.contained" />
      <max value="0" />
    </element>
    <element id="Location.modifierExtension">
      <path value="Location.modifierExtension" />
      <max value="0" />
    </element>
    <element id="Location.identifier">
      <path value="Location.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <short value="Logischer Identifier" />
      <definition value="Logischer Identifier der Standort" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Location.identifier:emigaOrgvId">
      <path value="Location.identifier" />
      <sliceName value="emigaOrgvId" />
      <definition value="EMIGA Organizationsverzeichnis ID to be used in Identifiers" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Identifier" />
        <profile value="https://emiga.rki.de/fhir/vzd/StructureDefinition/IdentifierEmigaOrgvId" />
      </type>
      <patternIdentifier>
        <system value="https://emiga.rki.de/fhir/vzd/sid/EmigaOrgvId" />
      </patternIdentifier>
      <mustSupport value="true" />
    </element>
    <element id="Location.identifier:emigaOrgvFileNumber">
      <path value="Location.identifier" />
      <sliceName value="emigaOrgvFileNumber" />
      <definition value="EMIGA Organizationsverzeichnis Aktenzeichen to be used in Identifiers" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Identifier" />
        <profile value="https://emiga.rki.de/fhir/vzd/StructureDefinition/IdentifierEmigaOrgvFileNumber" />
      </type>
      <patternIdentifier>
        <system value="https://emiga.rki.de/fhir/vzd/sid/EmigaOrgvFileNumber" />
      </patternIdentifier>
      <mustSupport value="true" />
    </element>
    <element id="Location.identifier:standortnummer-dkg">
      <path value="Location.identifier" />
      <sliceName value="standortnummer-dkg" />
      <comment value="Motivation : Entsprechend der Festlegung der DKG laut Basisprofile-DE 1.5.0 (https://simplifier.net/packages/de.basisprofil.r4/)" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Identifier" />
        <profile value="http://fhir.de/StructureDefinition/identifier-standortnummer" />
      </type>
      <patternIdentifier>
        <system value="http://fhir.de/sid/dkgev/standortnummer" />
      </patternIdentifier>
      <mustSupport value="true" />
    </element>
    <element id="Location.identifier:standortnummer-dkg.system">
      <path value="Location.identifier.system" />
      <mustSupport value="true" />
    </element>
    <element id="Location.identifier:standortnummer-dkg.value">
      <path value="Location.identifier.value" />
      <mustSupport value="true" />
    </element>
    <element id="Location.status">
      <path value="Location.status" />
      <short value="Status" />
      <definition value="Aktivitätsstatus des Standortes" />
      <comment value="Wir wollen des Status zwingend unterscheiden können und verlangen daher dessen Angabe. Wird für InEK Szenario von Standort.GültigVon-GültigBis abgeleitet." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Location.operationalStatus">
      <path value="Location.operationalStatus" />
      <mustSupport value="true" />
    </element>
    <element id="Location.name">
      <path value="Location.name" />
      <short value="Bezeichnung" />
      <definition value="Bezeichnung des Standortes , z.B. 'Niederlassung Berliner Str." />
      <min value="1" />
      <constraint>
        <key value="validString" />
        <severity value="error" />
        <human value="Zeichenlänge maximal 255 Zeichen" />
        <expression value="$this.matches('^.{1,255}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.alias">
      <path value="Location.alias" />
      <short value="Kürzel / Referenz" />
      <definition value="Alternativ oder Kurznamme, in InEK Szenarios wird der Haupt-IK des Refererenz-Krankenhauses verwendet." />
      <comment value="Aus dem Feld Standort::Referenzkrankenhaus wird das Element „HauptIK“ gelesen. Daraufhin wird in der Krankenhaus-Map nach der IK gesucht und der Wert (= Bezeichnung) als alias gespeichert. Da manche Standorte nur „Hauptstandort“ heißen, ist das zum Teil nötig" />
      <constraint>
        <key value="validString" />
        <severity value="error" />
        <human value="Zeichenlänge maximal 255 Zeichen" />
        <expression value="$this.matches('^.{1,255}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.description">
      <path value="Location.description" />
      <short value="zusätzliche Informationen" />
      <definition value="zusätzliche Informationen" />
      <comment value="Begründung: Es kann sinnvoll sein, Standorte durch zusätzliche Informationen zu identifizieren" />
      <mustSupport value="true" />
    </element>
    <element id="Location.mode">
      <path value="Location.mode" />
      <comment value="Wir wollen im Verzeichnis lediglich tatsächliche Standorte verwalten. Typen/Arten von Standorten sind nicht von Interesse." />
      <min value="1" />
      <patternCode value="instance" />
      <mustSupport value="true" />
    </element>
    <element id="Location.type">
      <path value="Location.type" />
      <mustSupport value="true" />
    </element>
    <element id="Location.telecom">
      <path value="Location.telecom" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address">
      <path value="Location.address" />
      <comment value="Besuchbare Anschrift des Standortes" />
      <type>
        <code value="Address" />
        <profile value="http://fhir.de/StructureDefinition/address-de-basis" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Location.address.extension:Stadtteil">
      <path value="Location.address.extension" />
      <sliceName value="Stadtteil" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address.extension:Stadtteil.value[x]">
      <path value="Location.address.extension.value[x]" />
      <constraint>
        <key value="validString" />
        <severity value="error" />
        <human value="Zeichenlänge maximal 255 Zeichen" />
        <expression value="$this.matches('^.{1,255}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.address.type">
      <path value="Location.address.type" />
      <short value="Addressen-Typ" />
      <definition value="Kennzeichnet den physische Addressen-Typ" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address.type.value">
      <path value="Location.address.type.value" />
      <fixedCode value="physical" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address.line.extension:Strasse">
      <path value="Location.address.line.extension" />
      <sliceName value="Strasse" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address.line.extension:Strasse.value[x]">
      <path value="Location.address.line.extension.value[x]" />
      <constraint>
        <key value="validString" />
        <severity value="error" />
        <human value="Zeichenlänge maximal 255 Zeichen" />
        <expression value="$this.matches('^.{1,255}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.address.line.extension:Hausnummer">
      <path value="Location.address.line.extension" />
      <sliceName value="Hausnummer" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address.line.extension:Hausnummer.value[x]">
      <path value="Location.address.line.extension.value[x]" />
      <constraint>
        <key value="validHouseNumber" />
        <severity value="error" />
        <human value="Die Hausnummer muss valide sein. Zeichenlänge maximal 50 Zeichen" />
        <expression value="$this.matches('^.{1,50}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.address.line.extension:Adresszusatz">
      <path value="Location.address.line.extension" />
      <sliceName value="Adresszusatz" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address.line.extension:Adresszusatz.value[x]">
      <path value="Location.address.line.extension.value[x]" />
      <constraint>
        <key value="validString" />
        <severity value="error" />
        <human value="Zeichenlänge maximal 255 Zeichen" />
        <expression value="$this.matches('^.{1,255}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.address.line.extension:Postfach">
      <path value="Location.address.line.extension" />
      <sliceName value="Postfach" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address.line.extension:Postfach.value[x]">
      <path value="Location.address.line.extension.value[x]" />
      <constraint>
        <key value="validString" />
        <severity value="error" />
        <human value="Zeichenlänge maximal 255 Zeichen" />
        <expression value="$this.matches('^.{1,255}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.address.city">
      <path value="Location.address.city" />
      <constraint>
        <key value="validString" />
        <severity value="error" />
        <human value="Zeichenlänge maximal 255 Zeichen" />
        <expression value="$this.matches('^.{1,255}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.address.state">
      <path value="Location.address.state" />
      <mustSupport value="true" />
    </element>
    <element id="Location.address.postalCode">
      <path value="Location.address.postalCode" />
      <constraint>
        <key value="validPLZ" />
        <severity value="error" />
        <human value="Die PLZ muss valide sein. Zeichenlänge maximal 10 Zeichen" />
        <expression value="$this.matches('^.{1,10}$')" />
        <source value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalRoomLocation" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Location.physicalType">
      <path value="Location.physicalType" />
      <mustSupport value="true" />
    </element>
    <element id="Location.physicalType.coding.system">
      <path value="Location.physicalType.coding.system" />
      <min value="1" />
      <patternUri value="http://terminology.hl7.org/CodeSystem/location-physical-type" />
      <mustSupport value="true" />
    </element>
    <element id="Location.physicalType.coding.version">
      <path value="Location.physicalType.coding.version" />
      <mustSupport value="true" />
    </element>
    <element id="Location.physicalType.coding.code">
      <path value="Location.physicalType.coding.code" />
      <min value="1" />
      <patternCode value="ro" />
      <mustSupport value="true" />
    </element>
    <element id="Location.physicalType.coding.display">
      <path value="Location.physicalType.coding.display" />
      <patternString value="Room" />
      <mustSupport value="true" />
    </element>
    <element id="Location.position">
      <path value="Location.position" />
      <mustSupport value="true" />
    </element>
    <element id="Location.position.longitude">
      <path value="Location.position.longitude" />
      <short value="Längengrad" />
      <definition value="Längengrad des Standortes in Dezimalgrad" />
      <mustSupport value="true" />
    </element>
    <element id="Location.position.latitude">
      <path value="Location.position.latitude" />
      <short value="Breitengrad" />
      <definition value="Breitengrad des Standortes in Dezimalgrad" />
      <mustSupport value="true" />
    </element>
    <element id="Location.managingOrganization">
      <path value="Location.managingOrganization" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalOrganization" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Location.managingOrganization.identifier">
      <path value="Location.managingOrganization.identifier" />
      <short value="Haupt-IK" />
      <definition value="Haupt-IK des Referenz-Krankenhauses, das den Standort verwaltet." />
      <mustSupport value="true" />
    </element>
    <element id="Location.partOf">
      <path value="Location.partOf" />
      <type>
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-hierarchy">
          <valueBoolean value="true" />
        </extension>
        <code value="Reference" />
        <targetProfile value="https://emiga.rki.de/fhir/vzd/StructureDefinition/EmigaHospitalLocation" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Location.hoursOfOperation">
      <path value="Location.hoursOfOperation" />
      <max value="0" />
    </element>
    <element id="Location.availabilityExceptions">
      <path value="Location.availabilityExceptions" />
      <max value="0" />
    </element>
    <element id="Location.endpoint">
      <path value="Location.endpoint" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>