<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="dipag-dokumentenmetadaten-eingang" />
  <url value="https://gematik.de/fhir/dipag/StructureDefinition/dipag-dokumentenmetadaten-eingang" />
  <version value="1.0.5" />
  <name value="DiPagDokumentenmetadatenEingang" />
  <title value="Digitale Patientenrechnung Dokumentenmetadaten Eingang" />
  <status value="active" />
  <experimental value="false" />
  <date value="2026-03-26" />
  <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="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 = 'originaleRechnung').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-eingang" />
      </constraint>
    </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" />
      <patternCoding>
        <system value="http://dvmd.de/fhir/CodeSystem/kdl" />
      </patternCoding>
      <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 Informationsmodell '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.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:originaleRechnung">
      <path value="DocumentReference.content" />
      <sliceName value="originaleRechnung" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:originaleRechnung.attachment">
      <path value="DocumentReference.content.attachment" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:originaleRechnung.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:originaleRechnung.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:originaleRechnung.attachment.url">
      <path value="DocumentReference.content.attachment.url" />
      <max value="0" />
    </element>
    <element id="DocumentReference.content:originaleRechnung.format">
      <path value="DocumentReference.content.format" />
      <min value="1" />
      <patternCoding>
        <system value="https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs" />
        <code value="originaleRechnung" />
      </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" />
      <patternCode value="application/fhir+json" />
      <mustSupport value="true" />
    </element>
    <element id="DocumentReference.content:strukturierterRechnungsinhalt.attachment.data">
      <path value="DocumentReference.content.attachment.data" />
      <comment value="Base64-kodierte Repräsentation der Rechnungsinhalte. Alle Ressourcen sollen in einem collection Bundle zusammengefasst sein, welches durch das Profil [`DiPagRechnungsbundle`](https://gematik.de/fhir/dipag/StructureDefinition/dipag-rechnungsbundle) definiert ist. 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" />
      <max value="0" />
    </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" />
      <max value="0" />
    </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>
  </differential>
</StructureDefinition>