<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="DAV-PR-Base-ZusatzdatenHerstellung" />
  <url value="http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-PR-Base-ZusatzdatenHerstellung" />
  <version value="1.5.0" />
  <name value="DAV_PR_Base_ZusatzdatenHerstellung" />
  <title value="DAV_PR_Base_ZusatzdatenHerstellung" />
  <status value="active" />
  <date value="2025-03-31" />
  <publisher value="Deutscher Apothekerverband e.V. (DAV)" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="MedicationDispense" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/MedicationDispense" />
  <derivation value="constraint" />
  <differential>
    <element id="MedicationDispense.meta">
      <path value="MedicationDispense.meta" />
      <min value="1" />
      <type>
        <code value="Meta" />
        <profile value="http://fhir.abda.de/StructureDefinition/DAV-PR-ERP-Meta" />
      </type>
    </element>
    <element id="MedicationDispense.implicitRules">
      <path value="MedicationDispense.implicitRules" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.language">
      <path value="MedicationDispense.language" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.text">
      <path value="MedicationDispense.text" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.contained">
      <path value="MedicationDispense.contained" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.extension">
      <path value="MedicationDispense.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="closed" />
      </slicing>
      <min value="2" />
    </element>
    <element id="MedicationDispense.extension:ZaehlerHerstellung">
      <path value="MedicationDispense.extension" />
      <sliceName value="ZaehlerHerstellung" />
      <short value="Angabe des Zählers zur Kennzeichnung des Herstellungsvorgangs" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-EX-ERP-Zaehler" />
      </type>
    </element>
    <element id="MedicationDispense.extension:ZaehlerHerstellung.value[x]">
      <path value="MedicationDispense.extension.value[x]" />
      <short value="Zähler zur Kennzeichnung des Herstellungsvorgangs" />
      <definition value="Jeder Herstellungsvorgang ist beginnend mit „1“ lückenlos fortlaufend zu nummerieren." />
      <constraint>
        <key value="PR-ZaehlerHerstellung-1" />
        <severity value="error" />
        <human value="Das Element ZusatzdatenHerstellung kann 0 bis 99 mal angegeben werden. Daher hat der Zähler einen Wertebereich von 1 bis 99." />
        <expression value="toString().matches('^\\d{1,2}$')" />
        <source value="http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-PR-Base-ZusatzdatenHerstellung" />
      </constraint>
    </element>
    <element id="MedicationDispense.extension:Einheit">
      <path value="MedicationDispense.extension" />
      <sliceName value="Einheit" />
      <min value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-EX-ERP-ZusatzdatenEinheit" />
      </type>
    </element>
    <element id="MedicationDispense.identifier">
      <path value="MedicationDispense.identifier" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.partOf">
      <path value="MedicationDispense.partOf" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.status">
      <path value="MedicationDispense.status" />
      <definition value="A code specifying thcompleted state of the set of dispense events." />
      <fixedCode value="completed" />
    </element>
    <element id="MedicationDispense.statusReason[x]">
      <path value="MedicationDispense.statusReason[x]" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.category">
      <path value="MedicationDispense.category" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.medication[x]">
      <path value="MedicationDispense.medication[x]" />
      <type>
        <code value="CodeableConcept" />
      </type>
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/data-absent-reason" />
          <code value="not-applicable" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="MedicationDispense.medication[x].coding">
      <path value="MedicationDispense.medication[x].coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="MedicationDispense.medication[x].coding.system">
      <path value="MedicationDispense.medication[x].coding.system" />
      <min value="1" />
    </element>
    <element id="MedicationDispense.medication[x].coding.version">
      <path value="MedicationDispense.medication[x].coding.version" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.medication[x].coding.code">
      <path value="MedicationDispense.medication[x].coding.code" />
      <min value="1" />
    </element>
    <element id="MedicationDispense.medication[x].coding.display">
      <path value="MedicationDispense.medication[x].coding.display" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.medication[x].coding.userSelected">
      <path value="MedicationDispense.medication[x].coding.userSelected" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.medication[x].text">
      <path value="MedicationDispense.medication[x].text" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.subject">
      <path value="MedicationDispense.subject" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.context">
      <path value="MedicationDispense.context" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.supportingInformation">
      <path value="MedicationDispense.supportingInformation" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer">
      <path value="MedicationDispense.performer" />
      <max value="1" />
    </element>
    <element id="MedicationDispense.performer.function">
      <path value="MedicationDispense.performer.function" />
      <short value="Funktion der abrechnenden Apotheke" />
      <definition value="Angabe, ob die abrechnende Apotheke auch der Hersteller ist oder nicht." />
      <min value="1" />
    </element>
    <element id="MedicationDispense.performer.function.coding">
      <path value="MedicationDispense.performer.function.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="MedicationDispense.performer.function.coding.system">
      <path value="MedicationDispense.performer.function.coding.system" />
      <min value="1" />
    </element>
    <element id="MedicationDispense.performer.function.coding.version">
      <path value="MedicationDispense.performer.function.coding.version" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.function.coding.code">
      <path value="MedicationDispense.performer.function.coding.code" />
      <short value="Information, ob die abrechnende Apotheke auch Hersteller ist" />
      <min value="1" />
    </element>
    <element id="MedicationDispense.performer.function.coding.display">
      <path value="MedicationDispense.performer.function.coding.display" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.function.coding.userSelected">
      <path value="MedicationDispense.performer.function.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.function.text">
      <path value="MedicationDispense.performer.function.text" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.actor.reference">
      <path value="MedicationDispense.performer.actor.reference" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.actor.type">
      <path value="MedicationDispense.performer.actor.type" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.actor.identifier">
      <path value="MedicationDispense.performer.actor.identifier" />
      <short value="Kennzeichen des Herstellenden" />
      <definition value="Institutionskennzeichen der herstellenden Apotheke oder der von der Avoxa/ABDATA im Auftrag des DAV vergebene Schlüssel des Herstellenden." />
      <min value="1" />
      <constraint>
        <key value="PR-ZusatzdatenHerstellung-1" />
        <severity value="error" />
        <human value="Die Angabe des Identifiers für den Herstellerschlüssel muss dem Profil http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-PR-ERP-DAVHerstellerSchluessel oder http://fhir.de/StructureDefinition/identifier-iknr entsprechen." />
        <expression value="conformsTo('http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-PR-ERP-DAVHerstellerSchluessel') or conformsTo('http://fhir.de/StructureDefinition/identifier-iknr')" />
        <source value="http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-PR-Base-ZusatzdatenHerstellung" />
      </constraint>
      <constraint>
        <key value="PR-ZusatzdatenHerstellung-2" />
        <severity value="error" />
        <human value="Wenn der Herstellerschlüssel als IK-Nummer angegeben wird, muss die Angabe 9-stellig inklusive Prüfziffer erfolgen." />
        <expression value="conformsTo('http://fhir.de/StructureDefinition/identifier-iknr') implies value.matches('^[0-9]{9}$')" />
        <source value="http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-PR-Base-ZusatzdatenHerstellung" />
      </constraint>
    </element>
    <element id="MedicationDispense.performer.actor.identifier.use">
      <path value="MedicationDispense.performer.actor.identifier.use" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.actor.identifier.type">
      <path value="MedicationDispense.performer.actor.identifier.type" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.actor.identifier.system">
      <path value="MedicationDispense.performer.actor.identifier.system" />
      <min value="1" />
      <mustSupport value="false" />
    </element>
    <element id="MedicationDispense.performer.actor.identifier.value">
      <path value="MedicationDispense.performer.actor.identifier.value" />
      <min value="1" />
    </element>
    <element id="MedicationDispense.performer.actor.identifier.period">
      <path value="MedicationDispense.performer.actor.identifier.period" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.actor.identifier.assigner">
      <path value="MedicationDispense.performer.actor.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.performer.actor.display">
      <path value="MedicationDispense.performer.actor.display" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.location">
      <path value="MedicationDispense.location" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.authorizingPrescription">
      <path value="MedicationDispense.authorizingPrescription" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.type">
      <path value="MedicationDispense.type" />
      <min value="1" />
      <patternCodeableConcept>
        <coding>
          <system value="http://fhir.abda.de/eRezeptAbgabedaten/CodeSystem/DAV-CS-ERP-MedicationDispenseTyp" />
          <code value="ZusatzdatenHerstellung" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="MedicationDispense.type.coding">
      <path value="MedicationDispense.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="MedicationDispense.type.coding.system">
      <path value="MedicationDispense.type.coding.system" />
      <min value="1" />
    </element>
    <element id="MedicationDispense.type.coding.version">
      <path value="MedicationDispense.type.coding.version" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.type.coding.code">
      <path value="MedicationDispense.type.coding.code" />
      <min value="1" />
    </element>
    <element id="MedicationDispense.type.coding.display">
      <path value="MedicationDispense.type.coding.display" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.type.coding.userSelected">
      <path value="MedicationDispense.type.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.type.text">
      <path value="MedicationDispense.type.text" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.quantity">
      <path value="MedicationDispense.quantity" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.daysSupply">
      <path value="MedicationDispense.daysSupply" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.whenPrepared">
      <path value="MedicationDispense.whenPrepared" />
      <short value="Herstellungsdatum und Zeitpunkt der Herstellung" />
      <definition value="Die Angabe muss im Format ISO 8601 (z.B.: YYYY-MM-DDTHH:MM:00Z oder YYYY-MM-DDThh:mm:ss+zz:zz) erfolgen." />
      <constraint>
        <key value="PR-DatumMitZeit" />
        <severity value="error" />
        <human value="Die DateTimeAngabe muss eine Zeit beinhalten." />
        <expression value="toString().substring(10, 1) = 'T'" />
        <source value="http://fhir.abda.de/eRezeptAbgabedaten/StructureDefinition/DAV-PR-Base-ZusatzdatenHerstellung" />
      </constraint>
    </element>
    <element id="MedicationDispense.whenHandedOver">
      <path value="MedicationDispense.whenHandedOver" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.destination">
      <path value="MedicationDispense.destination" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.receiver">
      <path value="MedicationDispense.receiver" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.note">
      <path value="MedicationDispense.note" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.dosageInstruction">
      <path value="MedicationDispense.dosageInstruction" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.substitution">
      <path value="MedicationDispense.substitution" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.detectedIssue">
      <path value="MedicationDispense.detectedIssue" />
      <max value="0" />
    </element>
    <element id="MedicationDispense.eventHistory">
      <path value="MedicationDispense.eventHistory" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>