<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="dipag-dokumentenmetadaten" />
  <url value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-dokumentenmetadaten" />
  <version value="1.0.3" />
  <name value="DiPagDokumentenmetadaten" />
  <title value="Digitale Patientenrechnung Dokumentenmetadaten" />
  <status value="active" />
  <experimental value="false" />
  <date value="2025-10-06" />
  <publisher value="gematik GmbH" />
  <contact>
    <telecom>
      <system value="url" />
      <value value="http://gematik.de/" />
    </telecom>
  </contact>
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="DocumentReference" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/DocumentReference" />
  <derivation value="constraint" />
  <differential>
    <element id="DocumentReference">
      <path value="DocumentReference" />
      <constraint>
        <key value="SignaturVerpflichtendRechnung" />
        <severity value="error" />
        <human value="Eine Signature muss vorhanden sein, falls es sich bei der DocumentReference um eine Rechnung handelt." />
        <expression value="type.coding.where(system = 'http://dvmd.de/fhir/CodeSystem/kdl' and code = 'AM010106').exists() and content.format.where(system = 'https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs' and code = 'angereichertesPDF').exists() implies extension.where(url = 'https://gematik.de/fhir/dipag/StructureDefinition/dipag-docref-signature').exists()" />
        <source value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-dokumentenmetadaten" />
      </constraint>
      <constraint>
        <key value="RechnungOderAnhang" />
        <severity value="error" />
        <human value="Ein Dokument kann entweder ein Anhang enthalten oder ein Rechnungsdokument inkl. strukturierten Rechnungsinhalten." />
        <expression value="content.format.where(system = 'https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs' and code = 'rechnungsanhang').exists() xor (content.format.where(system = 'https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs' and code = 'dipag').exists() and  content.format.where(system = 'https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs' and code = 'rechnungsinhalt').exists())" />
        <source value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-dokumentenmetadaten" />
      </constraint>
    </element>
    <element id="DocumentReference.meta.extension">
      <path value="DocumentReference.meta.extension" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.meta.extension:markierung">
      <path value="DocumentReference.meta.extension" />
      <sliceName value="markierung" />
      <comment value="Vgl. Abschnitt '4.4.2 Markierungen' des Feature-Dokuments Digitale Patientenrechnung" />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-documentreference-markierung" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.meta.tag">
      <path value="DocumentReference.meta.tag" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <comment value="Metaangaben zur Digitalen Patientenrechnung die sich auf das Rechnungsdokument als Ganzes beziehen und nicht Teil des durch den RE-PS erstellten Dokuments sind." />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.meta.tag:dipag-rechnungsstatus">
      <path value="DocumentReference.meta.tag" />
      <sliceName value="dipag-rechnungsstatus" />
      <comment value="Vgl. Abschnitt 4.4.1 Workflow einer Rechnung des Feature-Dokuments Digitale Patientenrechnung" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/dipag/ValueSet/dipag-rechnungsstatus-vs" />
      </binding>
    </element>
    <element id="DocumentReference.meta.tag:dipag-rechnungsstatus.system">
      <path value="DocumentReference.meta.tag.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.meta.tag:dipag-rechnungsstatus.code">
      <path value="DocumentReference.meta.tag.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.extension">
      <path value="DocumentReference.extension" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.extension:docRef-signature">
      <path value="DocumentReference.extension" />
      <sliceName value="docRef-signature" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-docref-signature" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.extension:rechnungsdatum">
      <path value="DocumentReference.extension" />
      <sliceName value="rechnungsdatum" />
      <comment value="Siehe Abschnitt '4.8.1.1 Rechnung' des Feature-Dokuments Digitale Patientenrechnung" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-documentreference-rechnungsdatum" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.extension:zahlungszieldatum">
      <path value="DocumentReference.extension" />
      <sliceName value="zahlungszieldatum" />
      <comment value="Siehe Abschnitt '4.8.1.1 Rechnung' des Feature-Dokuments Digitale Patientenrechnung" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-documentreference-zahlungszieldatum" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.extension:gesamtbetrag">
      <path value="DocumentReference.extension" />
      <sliceName value="gesamtbetrag" />
      <comment value="Siehe Abschnitt '4.8.1.1 Rechnung' des Feature-Dokuments Digitale Patientenrechnung" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-documentreference-gesamtbetrag" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.extension:fachrichtung">
      <path value="DocumentReference.extension" />
      <sliceName value="fachrichtung" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-docref-fachrichtung" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.extension:leistungsart">
      <path value="DocumentReference.extension" />
      <sliceName value="leistungsart" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-docref-leistungsart" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.extension:behandlungsart">
      <path value="DocumentReference.extension" />
      <sliceName value="behandlungsart" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-behandlungsart" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.identifier">
      <path value="DocumentReference.identifier" />
      <comment value="Eindeutiger Identifikator vergeben durch das RE-PS (z.B. Interne Dokumentennummer). Das System MUSS eindeutig pro Leistungserbringer:in vergeben werden." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.identifier.system">
      <path value="DocumentReference.identifier.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.identifier.value">
      <path value="DocumentReference.identifier.value" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.status">
      <path value="DocumentReference.status" />
      <comment value="Versionierung von Dokumenten ist nicht unterstützt. Nur jeweils die aktuelle Version des Dokumentes wird akzeptiert." />
      <patternCode value="current" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.type">
      <path value="DocumentReference.type" />
      <comment value="Kodierung des Dokumentes als 'Rechnung', sowie darüber hinausgehende Klassifizierung per KDL" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.type.coding">
      <path value="DocumentReference.type.coding" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="DocumentReference.type.coding:DokumentenKlassifizierung">
      <path value="DocumentReference.type.coding" />
      <sliceName value="DokumentenKlassifizierung" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/dipag/ValueSet/dipag-sonstigesdokument-type-vs" />
      </binding>
    </element>
    <element id="DocumentReference.type.coding:DokumentenKlassifizierung.system">
      <path value="DocumentReference.type.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.type.coding:DokumentenKlassifizierung.code">
      <path value="DocumentReference.type.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.type.coding:DokumentenKlassifizierung.display">
      <path value="DocumentReference.type.coding.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.type.coding:Rechnungstyp">
      <path value="DocumentReference.type.coding" />
      <sliceName value="Rechnungstyp" />
      <min value="0" />
      <max value="1" />
      <patternCoding>
        <system value="http://dvmd.de/fhir/CodeSystem/kdl" />
        <code value="AM010106" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.subject">
      <path value="DocumentReference.subject" />
      <comment value="Vollständiger Name der behandelten Person. Siehe Abschnitt '4.8.1.1 Rechnung' des Feature-Dokuments Digitale Patientenrechnung." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.subject.display">
      <path value="DocumentReference.subject.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.author">
      <path value="DocumentReference.author" />
      <comment value="Der Fachdienst verknüpft alle Rechnungsdokumente mit der Telematik-ID des einreichenden Akteurs." />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.author.identifier">
      <path value="DocumentReference.author.identifier" />
      <min value="1" />
      <type>
        <code value="Identifier" />
        <profile value="http://fhir.de/StructureDefinition/identifier-telematik-id" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.author.display">
      <path value="DocumentReference.author.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.description">
      <path value="DocumentReference.description" />
      <comment value="Menschenlesbarer Titel des Dokumentes, der dem Versicherten in der UI angezeigt wird. Der Titel kann manuell erfasst oder vom Dateinamen/Metadaten abgeleitet werden. z.B. &amp;quot;Laborbefund vom 28.9.2023&amp;quot;." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content">
      <path value="DocumentReference.content" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="format" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content.attachment.url">
      <path value="DocumentReference.content.attachment.url" />
      <comment value="Der FD muss die Base64-kodierten Daten aus attachment.data extrahieren und in eine Binary-Ressource auslagern." />
    </element>
    <element id="DocumentReference.content:rechnungspdf">
      <path value="DocumentReference.content" />
      <sliceName value="rechnungspdf" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:rechnungspdf.attachment">
      <path value="DocumentReference.content.attachment" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:rechnungspdf.attachment.contentType">
      <path value="DocumentReference.content.attachment.contentType" />
      <comment value="Zum Zeitpunkt der Veröffentlichung werden nur PDF-Dokumente als Rechnung seitens der Leistungserbringer:in unterstützt." />
      <min value="1" />
      <patternCode value="application/pdf" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:rechnungspdf.attachment.data">
      <path value="DocumentReference.content.attachment.data" />
      <comment value="Base64-kodiertes PDF. Dieses Feld muss durch die Applikation der Leistungserbringer:in gefüllt werden." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:rechnungspdf.attachment.url">
      <path value="DocumentReference.content.attachment.url" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:rechnungspdf.format">
      <path value="DocumentReference.content.format" />
      <min value="1" />
      <patternCoding>
        <system value="https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs" />
        <code value="dipag" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:angereicherteRechnung">
      <path value="DocumentReference.content" />
      <sliceName value="angereicherteRechnung" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:angereicherteRechnung.attachment">
      <path value="DocumentReference.content.attachment" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:angereicherteRechnung.attachment.contentType">
      <path value="DocumentReference.content.attachment.contentType" />
      <comment value="Zum Zeitpunkt der Veröffentlichung werden nur PDF-Dokumente als Rechnung seitens der Leistungserbringer:in unterstützt." />
      <min value="1" />
      <patternCode value="application/pdf" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:angereicherteRechnung.attachment.data">
      <path value="DocumentReference.content.attachment.data" />
      <comment value="Die angereicherte Rechnung wird durch den FD direkt als Binary-Ressource unter attachment.url referenziert." />
      <max value="0" />
    </element>
    <element id="DocumentReference.content:angereicherteRechnung.attachment.url">
      <path value="DocumentReference.content.attachment.url" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:angereicherteRechnung.format">
      <path value="DocumentReference.content.format" />
      <min value="1" />
      <patternCoding>
        <system value="https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs" />
        <code value="angereichertesPDF" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:strukturierterRechnungsinhalt">
      <path value="DocumentReference.content" />
      <sliceName value="strukturierterRechnungsinhalt" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:strukturierterRechnungsinhalt.attachment">
      <path value="DocumentReference.content.attachment" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:strukturierterRechnungsinhalt.attachment.contentType">
      <path value="DocumentReference.content.attachment.contentType" />
      <comment value="Strukturierte Rechnungsinhalte können seitens der Leistungserbringer:in sowohl als JSON als auch XML übergeben werden." />
      <min value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/dipag/ValueSet/dipag-restricted-mime-types-vs" />
      </binding>
    </element>
    <element id="DocumentReference.content:strukturierterRechnungsinhalt.attachment.data">
      <path value="DocumentReference.content.attachment.data" />
      <comment value="Base64-kodierte Repräsentation der Rechnungsinhalte. Dieses Feld muss durch die Applikation der Leistungserbringer:in gefüllt werden." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:strukturierterRechnungsinhalt.attachment.url">
      <path value="DocumentReference.content.attachment.url" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:strukturierterRechnungsinhalt.format">
      <path value="DocumentReference.content.format" />
      <min value="1" />
      <patternCoding>
        <system value="https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs" />
        <code value="rechnungsinhalt" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:anhang">
      <path value="DocumentReference.content" />
      <sliceName value="anhang" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:anhang.attachment">
      <path value="DocumentReference.content.attachment" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:anhang.attachment.contentType">
      <path value="DocumentReference.content.attachment.contentType" />
      <comment value="Zum Zeitpunkt der Veröffentlichung werden nur PDF-Dokumente als Rechnungsanhänge seitens der Leistungserbringer:in unterstützt." />
      <min value="1" />
      <patternCode value="application/pdf" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:anhang.attachment.data">
      <path value="DocumentReference.content.attachment.data" />
      <comment value="Base64-kodiertes PDF. Dieses Feld muss durch die Applikation der Leistungserbringer:in gefüllt werden." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:anhang.attachment.url">
      <path value="DocumentReference.content.attachment.url" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:anhang.format">
      <path value="DocumentReference.content.format" />
      <min value="1" />
      <patternCoding>
        <system value="https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs" />
        <code value="rechnungsanhang" />
      </patternCoding>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.context">
      <path value="DocumentReference.context" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.context.related">
      <path value="DocumentReference.context.related" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this.resolve()" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <comment value="Der Fachdienst verknüpft alle Rechnungsdokumente mit der Rechnungsempfänger:in." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.context.related:patient">
      <path value="DocumentReference.context.related" />
      <sliceName value="patient" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.context.related:anhaenge">
      <path value="DocumentReference.context.related" />
      <sliceName value="anhaenge" />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/DocumentReference" />
      </type>
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>