<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="MaProcedureProzedur" />
  <text>
    <status value="generated" />
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p>Prozedur</p>
      <p>Dieses Profil bildet eine Prozedur ab. Es erweitert das Profil [KBV_PR_Base_Procedure](https://simplifier.net/base1x0/kbv_pr_base_procedure) und ist kompatibel mit den Profilen [ISiKProzedur](https://simplifier.net/isik-basis-v4/isikprozedur) und [MII_PR_Prozedur_Procedure](https://simplifier.net/mii-basismodul-prozedur-2024/mii_pr_prozedur_procedure).</p>
    </div>
  </text>
  <url value="http://ma-ambulant.de/StructureDefinition/MaProcedureProzedur" />
  <name value="MaProcedureProzedur" />
  <title value="Prozedur" />
  <status value="draft" />
  <description value="Dieses Profil bildet eine Prozedur ab. Es erweitert das Profil [KBV_PR_Base_Procedure](https://simplifier.net/base1x0/kbv_pr_base_procedure) und ist kompatibel mit den Profilen [ISiKProzedur](https://simplifier.net/isik-basis-v4/isikprozedur) und [MII_PR_Prozedur_Procedure](https://simplifier.net/mii-basismodul-prozedur-2024/mii_pr_prozedur_procedure)." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Procedure" />
  <baseDefinition value="https://fhir.kbv.de/StructureDefinition/KBV_PR_Base_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="http://ma-ambulant.de/StructureDefinition/MaProcedureProzedur" />
      </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="http://ma-ambulant.de/StructureDefinition/MaProcedureProzedur" />
      </constraint>
    </element>
    <element id="Procedure.extension:SN-Zeit">
      <path value="Procedure.extension" />
      <sliceName value="SN-Zeit" />
      <short value="Extension zur Abbildung der Schnitt-Naht-Zeit" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://ma-ambulant.de/StructureDefinition/ExtensionSnZeit" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.status">
      <path value="Procedure.status" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.category">
      <path value="Procedure.category" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.category.coding:snomed">
      <path value="Procedure.category.coding" />
      <sliceName value="snomed" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code">
      <path value="Procedure.code" />
      <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="http://ma-ambulant.de/StructureDefinition/MaProcedureProzedur" />
      </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="http://ma-ambulant.de/StructureDefinition/MaProcedureProzedur" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding">
      <path value="Procedure.code.coding" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding:ops">
      <path value="Procedure.code.coding" />
      <sliceName value="ops" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.code.coding:ops.extension:Seitenlokalisation">
      <path value="Procedure.code.coding.extension" />
      <sliceName value="Seitenlokalisation" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.subject">
      <path value="Procedure.subject" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ma-ambulant.de/StructureDefinition/MaPatient" />
        <targetProfile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_Base_Patient" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Group" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.encounter">
      <path value="Procedure.encounter" />
      <short value="Bezug zum Besuch/Aufenthalt" />
      <comment value="Aufenthalt (Encounter), während dessen die Prozedur erstellt oder durchgeführt wurde." />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ma-ambulant.de/StructureDefinition/MaEncounterBesuch" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Encounter" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Procedure.performed[x]">
      <path value="Procedure.performed[x]" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.focalDevice">
      <path value="Procedure.focalDevice" />
      <mustSupport value="true" />
    </element>
    <element id="Procedure.focalDevice.manipulated">
      <path value="Procedure.focalDevice.manipulated" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>