{
  "resourceType": "StructureDefinition",
  "id": "dipag-dokumentenmetadaten-eingang",
  "url": "https://gematik.de/fhir/dipag/StructureDefinition/dipag-dokumentenmetadaten-eingang",
  "version": "1.0.7",
  "name": "DiPagDokumentenmetadatenEingang",
  "title": "Digitale Patientenrechnung Dokumentenmetadaten Eingang",
  "status": "active",
  "experimental": false,
  "date": "2026-03-26",
  "publisher": "gematik GmbH",
  "contact": [
    {
      "telecom": [
        {
          "system": "url",
          "value": "http://gematik.de/"
        }
      ]
    }
  ],
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "DocumentReference",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/DocumentReference",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "DocumentReference",
        "path": "DocumentReference",
        "constraint": [
          {
            "key": "RechnungOderAnhang",
            "severity": "error",
            "human": "Ein Dokument kann entweder ein Anhang enthalten oder ein Rechnungsdokument inkl. strukturierten Rechnungsinhalten.",
            "expression": "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": "https://gematik.de/fhir/dipag/StructureDefinition/dipag-dokumentenmetadaten-eingang"
          },
          {
            "key": "MarkierungNurFuerAnhang",
            "severity": "error",
            "human": "Die Markierung darf nur gesetzt sein, wenn das Dokument kein Rechnungsdokument (AM010106) ist.",
            "expression": "meta.extension.where(url = 'https://gematik.de/fhir/dipag/StructureDefinition/dipag-documentreference-markierung').exists() implies type.coding.where(system = 'http://dvmd.de/fhir/CodeSystem/kdl' and code = 'AM010106').exists().not()",
            "source": "https://gematik.de/fhir/dipag/StructureDefinition/dipag-dokumentenmetadaten-eingang"
          },
          {
            "key": "AnhangIdentifierPflicht",
            "severity": "error",
            "human": "Ein identifier:AnhangIdentifier MUSS angegeben werden, wenn das Dokument kein Rechnungsdokument (AM010106) ist.",
            "expression": "type.coding.where(system = 'http://dvmd.de/fhir/CodeSystem/kdl' and code = 'AM010106').exists().not() implies identifier.where(type.coding.where(system = 'https://gematik.de/fhir/dipag/CodeSystem/dipag-rechnung-identifier-type-cs' and code = 'anhang').exists()).exists()",
            "source": "https://gematik.de/fhir/dipag/StructureDefinition/dipag-dokumentenmetadaten-eingang"
          }
        ]
      },
      {
        "id": "DocumentReference.meta.extension:markierung",
        "path": "DocumentReference.meta.extension",
        "sliceName": "markierung",
        "comment": "Beim Submit eines Anhang darf nur die Markierung 'Persönlich' gesetzt werden. Alle anderen Markierungen sind ausschließlich im Fachdienst zu setzen.\n  Ein optionaler Freitext mit Details zur Markierung kann über die Extension 'details' angegeben werden.",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://gematik.de/fhir/dipag/StructureDefinition/dipag-documentreference-markierung"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "DocumentReference.meta.extension:markierung.extension:markierung",
        "path": "DocumentReference.meta.extension.extension",
        "sliceName": "markierung",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.meta.extension:markierung.extension:markierung.value[x]",
        "path": "DocumentReference.meta.extension.extension.value[x]",
        "patternCoding": {
          "code": "persoenlich"
        },
        "mustSupport": true
      },
      {
        "id": "DocumentReference.meta.extension:markierung.extension:details",
        "path": "DocumentReference.meta.extension.extension",
        "sliceName": "details",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.meta.extension:markierung.extension:details.value[x]",
        "path": "DocumentReference.meta.extension.extension.value[x]",
        "maxLength": 1024,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.identifier",
        "path": "DocumentReference.identifier",
        "slicing": {
          "discriminator": [
            {
              "type": "pattern",
              "path": "$this"
            }
          ],
          "rules": "open"
        },
        "mustSupport": true
      },
      {
        "id": "DocumentReference.identifier:AnhangIdentifier",
        "path": "DocumentReference.identifier",
        "sliceName": "AnhangIdentifier",
        "short": "Anhangs-Identifier",
        "comment": "Eindeutiger Identifikator für Anhänge vergeben durch das RE-PS (z.B. Interne Dokumentennummer). Bei Anhängen MUSS das System eindeutig pro Leistungserbringer:in vergeben werden.",
        "min": 0,
        "max": "1",
        "patternIdentifier": {
          "type": {
            "coding": [
              {
                "code": "anhang",
                "system": "https://gematik.de/fhir/dipag/CodeSystem/dipag-rechnung-identifier-type-cs"
              }
            ]
          }
        },
        "mustSupport": true
      },
      {
        "id": "DocumentReference.identifier:AnhangIdentifier.type",
        "path": "DocumentReference.identifier.type",
        "min": 1,
        "patternCodeableConcept": {
          "coding": [
            {
              "code": "anhang",
              "system": "https://gematik.de/fhir/dipag/CodeSystem/dipag-rechnung-identifier-type-cs"
            }
          ]
        },
        "mustSupport": true
      },
      {
        "id": "DocumentReference.identifier:AnhangIdentifier.system",
        "path": "DocumentReference.identifier.system",
        "short": "NamingSystem des Anhangs-Identifier",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.identifier:AnhangIdentifier.value",
        "path": "DocumentReference.identifier.value",
        "short": "Anhangs-Identifier",
        "min": 1,
        "maxLength": 200,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.status",
        "path": "DocumentReference.status",
        "comment": "Versionierung von Dokumenten ist nicht unterstützt. Nur jeweils die aktuelle Version des Dokumentes wird akzeptiert.",
        "patternCode": "current",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.type",
        "path": "DocumentReference.type",
        "comment": "Kodierung des Dokumentes als 'Rechnung', sowie darüber hinausgehende Klassifizierung per KDL",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.type.coding",
        "path": "DocumentReference.type.coding",
        "slicing": {
          "discriminator": [
            {
              "type": "pattern",
              "path": "$this"
            }
          ],
          "rules": "open"
        },
        "min": 1
      },
      {
        "id": "DocumentReference.type.coding:DokumentenKlassifizierung",
        "path": "DocumentReference.type.coding",
        "sliceName": "DokumentenKlassifizierung",
        "min": 0,
        "max": "1",
        "patternCoding": {
          "system": "http://dvmd.de/fhir/CodeSystem/kdl"
        },
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "https://gematik.de/fhir/dipag/ValueSet/dipag-sonstigesdokument-type-vs"
        }
      },
      {
        "id": "DocumentReference.type.coding:DokumentenKlassifizierung.system",
        "path": "DocumentReference.type.coding.system",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.type.coding:DokumentenKlassifizierung.code",
        "path": "DocumentReference.type.coding.code",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.type.coding:DokumentenKlassifizierung.display",
        "path": "DocumentReference.type.coding.display",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.type.coding:Rechnungstyp",
        "path": "DocumentReference.type.coding",
        "sliceName": "Rechnungstyp",
        "min": 0,
        "max": "1",
        "patternCoding": {
          "system": "http://dvmd.de/fhir/CodeSystem/kdl",
          "code": "AM010106"
        },
        "mustSupport": true
      },
      {
        "id": "DocumentReference.description",
        "path": "DocumentReference.description",
        "comment": "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. &quot;Laborbefund vom 28.9.2023&quot;.",
        "min": 1,
        "maxLength": 5000,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content",
        "path": "DocumentReference.content",
        "slicing": {
          "discriminator": [
            {
              "type": "pattern",
              "path": "format"
            }
          ],
          "rules": "open"
        },
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content.attachment.url",
        "path": "DocumentReference.content.attachment.url",
        "comment": "Der FD muss die Base64-kodierten Daten aus attachment.data extrahieren und in eine Binary-Ressource auslagern."
      },
      {
        "id": "DocumentReference.content:originaleRechnung",
        "path": "DocumentReference.content",
        "sliceName": "originaleRechnung",
        "min": 0,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:originaleRechnung.attachment",
        "path": "DocumentReference.content.attachment",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:originaleRechnung.attachment.contentType",
        "path": "DocumentReference.content.attachment.contentType",
        "comment": "Zum Zeitpunkt der Veröffentlichung werden nur PDF-Dokumente als Rechnung seitens der Leistungserbringer:in unterstützt.",
        "min": 1,
        "patternCode": "application/pdf",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:originaleRechnung.attachment.data",
        "path": "DocumentReference.content.attachment.data",
        "comment": "Base64-kodiertes PDF. Dieses Feld muss durch die Applikation der Leistungserbringer:in gefüllt werden.",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:originaleRechnung.attachment.url",
        "path": "DocumentReference.content.attachment.url",
        "max": "0"
      },
      {
        "id": "DocumentReference.content:originaleRechnung.format",
        "path": "DocumentReference.content.format",
        "min": 1,
        "patternCoding": {
          "code": "originaleRechnung",
          "system": "https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs"
        },
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:strukturierterRechnungsinhalt",
        "path": "DocumentReference.content",
        "sliceName": "strukturierterRechnungsinhalt",
        "comment": "Das base64 kodierte Collection-Bundle mit den strukturierten Rechnungsinhalten darf nicht größer als 512 kB sein.",
        "min": 0,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:strukturierterRechnungsinhalt.attachment",
        "path": "DocumentReference.content.attachment",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:strukturierterRechnungsinhalt.attachment.contentType",
        "path": "DocumentReference.content.attachment.contentType",
        "comment": "Strukturierte Rechnungsinhalte können seitens der Leistungserbringer:in sowohl als JSON als auch XML übergeben werden.",
        "min": 1,
        "patternCode": "application/fhir+json",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:strukturierterRechnungsinhalt.attachment.data",
        "path": "DocumentReference.content.attachment.data",
        "comment": "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": 1,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:strukturierterRechnungsinhalt.attachment.url",
        "path": "DocumentReference.content.attachment.url",
        "max": "0"
      },
      {
        "id": "DocumentReference.content:strukturierterRechnungsinhalt.format",
        "path": "DocumentReference.content.format",
        "min": 1,
        "patternCoding": {
          "code": "rechnungsinhalt",
          "system": "https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs"
        },
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:anhang",
        "path": "DocumentReference.content",
        "sliceName": "anhang",
        "min": 0,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:anhang.attachment",
        "path": "DocumentReference.content.attachment",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:anhang.attachment.contentType",
        "path": "DocumentReference.content.attachment.contentType",
        "comment": "Zum Zeitpunkt der Veröffentlichung werden nur PDF-Dokumente als Rechnungsanhänge seitens der Leistungserbringer:in unterstützt.",
        "min": 1,
        "patternCode": "application/pdf",
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:anhang.attachment.data",
        "path": "DocumentReference.content.attachment.data",
        "comment": "Base64-kodiertes PDF. Dieses Feld muss durch die Applikation der Leistungserbringer:in gefüllt werden.",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "DocumentReference.content:anhang.attachment.url",
        "path": "DocumentReference.content.attachment.url",
        "max": "0"
      },
      {
        "id": "DocumentReference.content:anhang.format",
        "path": "DocumentReference.content.format",
        "min": 1,
        "patternCoding": {
          "code": "rechnungsanhang",
          "system": "https://gematik.de/fhir/dipag/CodeSystem/dipag-attachment-format-cs"
        },
        "mustSupport": true
      }
    ]
  }
}