<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="ISiKProzedur" />
  <url value="https://gematik.de/fhir/isik/StructureDefinition/ISiKProzedur" />
  <version value="6.0.0-rc" />
  <name value="ISiKProzedur" />
  <status value="active" />
  <experimental value="false" />
  <date value="2026-04-02" />
  <publisher value="gematik GmbH" />
  <description value="Dieses Profil spezifiziert die Minimalanforderungen für die Bereitstellung von Informationen über die Behandlungen/Prozeduren eines Patienten im Rahmen des Bestätigungsverfahrens der gematik.&#xA;&#xA;**Motivation**&#xA;&#xA;Die Möglichkeit auf eine Übersicht der Prozeduren eines Patienten zuzugreifen, Patienten anhand durchgeführter oder geplanter Prozeduren zu suchen, oder zu prüfen, ob eine konkrete Prozedur bei einem Patienten durchgeführt wurde, sind wichtige Funktionen im klinischen Behandlungsablauf.&#xA;&#xA;In FHIR werden Prozeduren mit der Procedure-Ressource repräsentiert.&#xA;&#xA;Da die Prozeduren in klinischen Primärsystemen, in der Regel, in OPS-codierter Form vorliegen, fordert ISiK in erster Linie diese Form des Austausches. Falls eine Prozedur zwar dokumentiert aber noch nicht codiert wurde (z.B. wenn die Kodierung erst nach der Entlassung erfolgt), ist alternativ eine Repräsentation als Freitext-Prozedur möglich.&#xA;&#xA;**Kompatibilität**&#xA;&#xA;Für das Profil ISIKProzedur wird eine Kompatibilität mit folgenden Profilen angestrebt; allerdings kann nicht sichergestellt werden, dass Instanzen, die gegen ISIKProzedur valide sind, auch valide sind gegen:&#xA;&#xA;* [Profil Prozedur](https://www.medizininformatik-initiative.de/fhir/core/modul-prozedur/StructureDefinition/Procedure) der Medizininformatik Initiative  &#xA;Hinweise zu Inkompatibilitäten können über die [Portalseite](https://service.gematik.de/servicedesk/customer/portal/16) gemeldet werden." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Procedure" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Procedure" />
  <derivation value="constraint" />
  <differential>
    <element id="Procedure">
      <path value="Procedure" />
      <constraint>
        <key value="proc-ISiK-1" />
        <severity value="error" />
        <human value="Falls die Prozedur per OPS kodiert wird, MUSS eine SNOMED-CT kodierte Category abgebildet werden" />
        <expression value="code.coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists() implies category.coding.where(system = 'http://snomed.info/sct').exists()" />
        <source value="https://gematik.de/fhir/isik/StructureDefinition/ISiKProzedur" />
      </constraint>
      <constraint>
        <key value="proc-ISiK-2" />
        <severity value="error" />
        <human value="Falls eine codierte Prozedur vorliegt MUSS eine kodierte Category abgebildet werden" />
        <expression value="code.coding.exists() implies category.coding.exists()" />
        <source value="https://gematik.de/fhir/isik/StructureDefinition/ISiKProzedur" />
      </constraint>
    </element>
    <element id="Procedure.id">
      <path value="Procedure.id" />
      <short value="serverseitige, interne ID des Datensatzes" />
      <comment value="**bedingtes Pflichtfeld/bedingtes MS:** Alle von einem Server bereitgestellten Ressourcen MÜSSEN über eine `id` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über eine `id`verfügen." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.meta.versionId">
      <path value="Procedure.meta.versionId" />
      <short value="Eindeutiger Name der serverseitigen Version des Datensatzes" />
      <comment value="Alle von einem Server bereitgestellten Ressourcen SOLLEN über eine `versionID` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über eine `versionID`verfügen." />
    </element>
    <element id="Procedure.meta.lastUpdated">
      <path value="Procedure.meta.lastUpdated" />
      <short value="Zeitpunkt der letzten Änderung" />
      <comment value="Alle von einem Server bereitgestellten Ressourcen SOLLEN über ein `lastUpdate` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über ein `lastUpdate`verfügen." />
    </element>
    <element id="Procedure.implicitRules">
      <path value="Procedure.implicitRules" />
      <short value="Verweis auf die Regeln, nach denen die Ressource erstellt wurde" />
      <comment value="Begründung Constraint: In ISiK existiert kein Use-Case für dieses Element. Da es sich um ein Modifying Element handelt, wird es daher ausgeschlossen.&#xA;  Darüber hinaus werden die Regeln als URI vorgehalten. Dies führt dazu, dass sich hinter der URI eine beliebige Menge an Regeln befinden kann; wodurch  nicht sichergestellt werden kann, dass alle Clients die Regeln korrekt interpretieren können." />
      <max value="0" />
    </element>
    <element id="Procedure.extension">
      <path value="Procedure.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.extension:Dokumentationsdatum">
      <path value="Procedure.extension" />
      <sliceName value="Dokumentationsdatum" />
      <short value="Dokumentationsdatum" />
      <comment value="Datum, an dem die Prozedur dokumentiert wurde.  &#xA;  Es handelt sich hierbei um das fachliche Dokumentationsdatum, nicht zu verwechseln mit dem Datum der technischen Anlage des Datensatzes im Primärsystem. &#xA;  Diese beiden Daten *können* jedoch identisch sein." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.de/StructureDefinition/ProzedurDokumentationsdatum" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.status">
      <path value="Procedure.status" />
      <short value="Status" />
      <comment value="Zeigt den aktuellen Status der Prozedur an.     &#xA;  **WICHTIGER Hinweis für Implementierer:  &#xA;  * Alle server-seitigen Implementierungen MÜSSEN in der Lage sein, &#xA;  die systemintern möglichen Statuswerte korrekt in FHIR abzubilden, mindestens jedoch die Werte `completed` und `unknown`.&#xA;  * Alle client-seitigen Implementierungen MÜSSEN in der Lage sein, sämtliche Status-Codes zu interpretieren und dem Anwender in angemessener Form darstellen zu können, &#xA;  beispielsweise durch Ausblenden/Durchstreichen von Prozeduren mit dem status `entered-in-error` und Ausgrauen von Prozeduren, die noch nicht stattgefunden haben, o.ä." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.category">
      <path value="Procedure.category" />
      <short value="Kategorie" />
      <comment value="Die Kategorisierung erfolgt vorzugsweise auf Basis von SNOMED CT. Für OPS-codierte Prozeduren MUSS die Kategorie angegeben werden: Sie kann ermittelt werden, &#xA;  indem das erste Zeichen des OPS-Codes mit Hilfe einer [ConceptMap](http://fhir.de/ConceptMap/OPS-SNOMED-Category) auf die zutreffende SNOMED-Kategorie gemappt wird.&#xA;  &#xA;  **Begründung MS:** Die Kategorisierung dient der Verbesserung von Suche und Darstellung." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.category.coding">
      <path value="Procedure.category.coding" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Procedure.category.coding:SNOMED-CT">
      <path value="Procedure.category.coding" />
      <sliceName value="SNOMED-CT" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Coding" />
        <profile value="https://gematik.de/fhir/isik/StructureDefinition/ISiKSnomedCTCoding" />
      </type>
      <mustSupport value="true" />
      <binding>
        <strength value="preferred" />
        <valueSet value="https://gematik.de/fhir/isik/ValueSet/ProzedurenKategorieSCT" />
      </binding>
    </element>
    <element id="Procedure.code">
      <path value="Procedure.code" />
      <short value="Prozeduren-Code" />
      <comment value="Prozeduren SOLLEN mindestens entweder mit einem OPS-Code oder einem SNOMED-Code aus dem angegebenen ValueSet codiert werden. &#xA;  Ist keine Codierung möglich, MUSS statt dessen eine textuelle Beschreibung der Prozedur angegeben werden.  &#xA;  **Begründung Pflichtfeld:** Ist *weder* eine Codierung *noch* eine textuelle Beschreibung vorhanden, besitzt diese Ressource keine medizinische Aussagefähigkeit." />
      <min value="1" />
      <constraint>
        <key value="sct-ops-1" />
        <severity value="error" />
        <human value="Falls die Prozedur kodiert vorliegt, SOLL mindestens ein OPS oder SNOMED-CT Code angegeben werden." />
        <expression value="coding.exists() implies coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://fhir.de/CodeSystem/bfarm/ops').exists()" />
        <source value="https://gematik.de/fhir/isik/StructureDefinition/ISiKProzedur" />
      </constraint>
      <constraint>
        <key value="proc-ISiK-3" />
        <severity value="error" />
        <human value="Entweder MUSS eine kodierte Prozedur vorliegen oder eine textuelle Beschreibung. Stattdessen nur Extensions hinzuzufügen (vgl. https://www.hl7.org/fhir/element.html - ele-1), ist explizit nicht erlaubt." />
        <expression value="coding.exists().not() implies text.exists()" />
        <source value="https://gematik.de/fhir/isik/StructureDefinition/ISiKProzedur" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding">
      <path value="Procedure.code.coding" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <short value="Codierte Darstellung der Prozedur" />
      <comment value="**Hinweis EHDS:** In der HL7 Europe HDR Spezifikation ist ein Binding von Snomed-CT mit der Stärke preferred gesetzt. Dies schließt sich nicht mit der hier vorgenommenen Profilierung aus, und auch eine reine OPS Abbildung spricht nicht gegen diese Anforderung. Allerdings möchten wir darauf hinweisen, dass es in Zukunft möglicherweise sinnvoll sein könnte, die Nutzung von SNOMED-CT Kodierung zur Darstellung einer Prozedur zu nutzen, um die Interoperabilität mit dem HDR zu erhöhen." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding:OPS">
      <path value="Procedure.code.coding" />
      <sliceName value="OPS" />
      <short value="OPS-codierte Darstellung der Prozedur" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Coding" />
        <profile value="http://fhir.de/StructureDefinition/CodingOPS" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding:OPS.extension:Seitenlokalisation">
      <path value="Procedure.code.coding.extension" />
      <sliceName value="Seitenlokalisation" />
      <short value="Seitenlokalisation" />
      <comment value="**Begründung MS:** Bei OPS-codierten Prozeduren an paarigen Organen oder Körperteilen müssen die Zusatzkennzeichen für die Seitigkeit (R, L oder B) angeben werden. &#xA;      &#xA;      **Hinweis EHDS:** Im Kontext des Alignments mit dem EHDS und den damit verbundenen Spezifikationen von HL7 Europe, wird für die Kodierung der Lateralität aktuell die Nutzung einer BodyStructure-Ressource inkl. einer Snomet-CT Kodierung diskutiert. Siehe [bodyStructure-eu-core](https://hl7.eu/fhir/base/StructureDefinition-bodyStructure-eu-core.html)." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding:OPS.system">
      <path value="Procedure.code.coding.system" />
      <short value="Namensraum des Prozeduren-Codes" />
      <comment value="Hier ist stets der Wert `http://fhir.de/CodeSystem/bfarm/ops` anzugeben." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding:OPS.version">
      <path value="Procedure.code.coding.version" />
      <short value="Die Jahresversion des OPS Kataloges. Angegeben wird immer die vierstellige Jahreszahl (z.B. `2017`)" />
      <comment value="**Begründung Pflichtfeld:** Bei Verwendung von OPS ist die Angabe der Version zwingend erforderlich. &#xA;      Hierdurch wird der Tatsache Rechnung getragen, dass jede der jährlich neu erscheinenden Fassung von OPS ein neues Codesystem darstellt." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding:OPS.code">
      <path value="Procedure.code.coding.code" />
      <short value="OPS-Code" />
      <comment value="Hier ist der OPS-Code ohne jegliche Zusatzkennzeichen (z.B. Seitenlokalisation) oder Versionsnummern anzugeben." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding:SNOMED-CT">
      <path value="Procedure.code.coding" />
      <sliceName value="SNOMED-CT" />
      <short value="SNOMED-codierte Darstellung der Prozedur" />
      <comment value="**Hintergrund und Begründung zum Must-Support:** Das BfArM hat ein 'Zielbild für eine semantische Strategie' (https://www.bfarm.de/DE/Kodiersysteme/Services/Terminologieserver/Semantik-Strategie/_node.html) verfasst, in dem die Nutzung von international gängigen Basis-Terminologien vorgestellt wird. Dort wird als grundlegende Position dargestellt, dass basierend auf einer Basisterminologie weitere Use Cases bedient werden sollen. Bei Prozeduren wäre das damit eine klinische Dokumentation mit SNOMED CT als internationalem Kodiersystem und einer Ableitung davon zum OPS. Dies ist insbesondere auch wichtig für den Datentransfer in den European Health Data Space, in dem der OPS keine Rolle spielen wird." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Coding" />
        <profile value="https://gematik.de/fhir/isik/StructureDefinition/ISiKSnomedCTCoding" />
      </type>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/isik/ValueSet/ProzedurenCodesSCT" />
      </binding>
    </element>
    <element id="Procedure.code.text">
      <path value="Procedure.code.text" />
      <short value="Freitextiche Beschreibung der Prozedur" />
      <comment value="Die freitextliche Beschreibung kann ergänzend oder anstelle einer codierten Angabe der Prozedur erfolgen." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.subject">
      <path value="Procedure.subject" />
      <short value="Patientenbezug" />
      <comment value="**Begründung Must-Support:** Ein Patientenbezug der Prozedur MUSS stets zum Zwecke der Nachvollziehbarkeit und Datenintegrität vorliegen." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.subject.reference">
      <path value="Procedure.subject.reference" />
      <short value="Patienten-Link" />
      <comment value="**Begründung MS:** Die Verlinkung auf eine Patienten-Ressource dient der technischen Zuordnung der Dokumentation zu einem Patienten und ermöglicht wichtige API-Funktionen wie verkettete Suche, (Reverse-)Include etc.&#xA;Im ISik Kontext MUSS die referenzierte Ressource konform zu [ISiKPatient](https://gematik.de/fhir/isik/StructureDefinition/ISiKPatient) sein.&#xA;Jenseits von ISiK KÖNNEN weitere Instanzen mit anderen Profilen referenziert werden." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.encounter">
      <path value="Procedure.encounter" />
      <short value="Aufenthaltsbezug" />
      <comment value="**Begründung Must-Support:** Ein Aufenthaltsbezug der Prozedur MUSS stets zum Zwecke der Nachvollziehbarkeit und Datenintegrität vorliegen." />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.encounter.reference">
      <path value="Procedure.encounter.reference" />
      <short value="Encounter-Link" />
      <comment value="**Begründung Pflichtfeld:** Die Verlinkung auf eine Encounter-Ressource dient der technischen Zuordnung der Dokumentation zu einem Aufenthalt und ermöglicht wichtige API-Funktionen wie verkettete Suche, (Reverse-)Include etc.&#xA;Im ISik Kontext MUSS die referenzierte Ressource konform zu [ISiKKontaktGesundheitseinrichtung](https://gematik.de/fhir/isik/StructureDefinition/ISiKKontaktGesundheitseinrichtung) sein.&#xA;Jenseits von ISiK KÖNNEN weitere Instanzen mit anderen Profilen referenziert werden." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.performed[x]">
      <path value="Procedure.performed[x]" />
      <short value="Durchführungsdatum oder -Zeitraum" />
      <comment value="Es muss mindestens entweder ein (partielles) Durchführungsdatum oder der Beginn des Durchführungszeitraumes angegeben werden.&#xA;  **Begründung Pflichtfeld:** Die zeitliche Einordnung einer Prozedur ist in vielen Fällen maßgeblich für deren medizinische Relevanz." />
      <min value="1" />
      <type>
        <code value="dateTime" />
      </type>
      <type>
        <code value="Period" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.bodySite.extension:BodyStructureReference">
      <path value="Procedure.bodySite.extension" />
      <sliceName value="BodyStructureReference" />
      <short value="Referenz auf eine BodyStructure-Ressource" />
      <comment value="Im Kontext des Allingments mit dem EHDS und den damit verbundenen Spezifikationen von HL7 Europe wurde diese Extenion hinzugefügt. Es besteht aber noch keine Must-Support Anforderung, da die Abbildung der Lateralität noch in der Diskussion ist und somit keine klare Vorgabe für die Nutzung der Extension gegeben werden kann. Sobald dies geklärt ist, wird die Anforderung entsprechend angepasst. Eine referenzierte BodyStructure-Ressource sollte valide gegen [bodyStructure-eu-core](https://hl7.eu/fhir/base/StructureDefinition-bodyStructure-eu-core.html) sein." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/StructureDefinition/bodySite" />
      </type>
    </element>
    <element id="Procedure.note">
      <path value="Procedure.note" />
      <short value="Notizen" />
      <comment value="Ergänzende Hinweise und Anmerkungen zur Prozedur" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>