{
  "resourceType": "StructureDefinition",
  "id": "dipag-nutzungsprotokoll",
  "url": "https://gematik.de/fhir/dipag/StructureDefinition/dipag-nutzungsprotokoll",
  "version": "1.0.7",
  "name": "DiPagNutzungsprotokoll",
  "title": "Digitale Patientenrechnung Nutzungsprotokoll",
  "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": "AuditEvent",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/AuditEvent",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "AuditEvent.type",
        "path": "AuditEvent.type",
        "comment": "Angabe ob es sich um eine zu protokollierende Nutzerinteraktion nach Abschnittt '5.5.9 Nutzerprotokolle' des Feature-Dokuments 'Digitale Patientenrechnung' handelt oder um eine durchgeführte REST-API-Interaktion durch den FD.",
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "https://gematik.de/fhir/dipag/ValueSet/dipag-audit-event-type-vs"
        }
      },
      {
        "id": "AuditEvent.subtype",
        "path": "AuditEvent.subtype",
        "comment": "Erlaubt die Kodierung aller REST-API Operationen der Spec-Digitale Patientenrechnung",
        "min": 1,
        "max": "1",
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "https://gematik.de/fhir/dipag/ValueSet/dipag-audit-event-sub-type-vs"
        }
      },
      {
        "id": "AuditEvent.action",
        "path": "AuditEvent.action",
        "comment": "Angabe ob es sich um eine lesende/schreibende/ausführende Interaktion handelt.",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.recorded",
        "path": "AuditEvent.recorded",
        "comment": "Der Zeitpunkt des Zugriffs ist zu protokollieren. Siehe Abschnittt '4.8.6 Protokolleintrag'des Feature-Dokuments 'Digitale Patientenrechnung'.",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.outcome",
        "path": "AuditEvent.outcome",
        "comment": "Angabe ob die zu protokollierende Interaktion erfolgreich ausgeführt werden konnte.",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.agent",
        "path": "AuditEvent.agent",
        "comment": "Angaben zum Akteur (Nutzer oder DiPag FD), der den Zugriff durchgeführt hat. Siehe Abschnittt '4.8.6 Protokolleintrag'des Feature-Dokuments 'Digitale Patientenrechnung'.",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.agent.type",
        "path": "AuditEvent.agent.type",
        "min": 1,
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "https://gematik.de/fhir/dipag/ValueSet/dipag-audit-event-agent-type-vs"
        }
      },
      {
        "id": "AuditEvent.agent.who",
        "path": "AuditEvent.agent.who",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.agent.who.identifier",
        "path": "AuditEvent.agent.who.identifier",
        "comment": "Der Identifier wird vom Server gesetzt und kann entweder eine KVNR oder Telematik-ID sein. Im Falle einer Applikations-internen Aktivität muss die OID des FD gesetzt werden.",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.agent.who.display",
        "path": "AuditEvent.agent.who.display",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "AuditEvent.source.observer.identifier",
        "path": "AuditEvent.source.observer.identifier",
        "comment": "Identifier (OID) des DiPag Fachdienst-Server, auf dem das Event ausgelöst wurde",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.source.observer.display",
        "path": "AuditEvent.source.observer.display",
        "comment": "Name des DiPag Fachdienst-Server, auf dem das Event ausgelöst wurde",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity",
        "path": "AuditEvent.entity",
        "slicing": {
          "discriminator": [
            {
              "type": "pattern",
              "path": "what.type"
            }
          ],
          "rules": "open"
        },
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity.detail",
        "path": "AuditEvent.entity.detail",
        "comment": "Details zum Dokument, z.B. die Art der Interaktion",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity.detail.type",
        "path": "AuditEvent.entity.detail.type",
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "https://gematik.de/fhir/dipag/ValueSet/dipag-audit-event-detail-vs"
        }
      },
      {
        "id": "AuditEvent.entity.detail.value[x]",
        "path": "AuditEvent.entity.detail.value[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "ordered": false,
          "rules": "open"
        }
      },
      {
        "id": "AuditEvent.entity.detail.value[x]:valueString",
        "path": "AuditEvent.entity.detail.value[x]",
        "sliceName": "valueString",
        "comment": "Freitextliche Angabe zu den Details der Interaktion. Der Freitext soll verständlich und für die Anzeige im Frontend geeignet sein.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:Versicherter",
        "path": "AuditEvent.entity",
        "sliceName": "Versicherter",
        "min": 1,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:Versicherter.what",
        "path": "AuditEvent.entity.what",
        "comment": "Referenz auf das von der zu protokollierenden Interaktion betroffene Benutzerkonto im Fachdienst."
      },
      {
        "id": "AuditEvent.entity:Versicherter.what.reference",
        "path": "AuditEvent.entity.what.reference",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:Versicherter.what.type",
        "path": "AuditEvent.entity.what.type",
        "min": 1,
        "patternUri": "Patient",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:DocumentReference",
        "path": "AuditEvent.entity",
        "sliceName": "DocumentReference",
        "min": 0,
        "max": "*",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:DocumentReference.what",
        "path": "AuditEvent.entity.what",
        "comment": "Referenz auf alle betroffenen DocumentReference Resourcen"
      },
      {
        "id": "AuditEvent.entity:DocumentReference.what.reference",
        "path": "AuditEvent.entity.what.reference",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:DocumentReference.what.type",
        "path": "AuditEvent.entity.what.type",
        "min": 1,
        "patternUri": "DocumentReference",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:DocumentReference.name",
        "path": "AuditEvent.entity.name",
        "comment": "Freitextname des Dokumentes, auf das sich die Referenz bezieht",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:Binary",
        "path": "AuditEvent.entity",
        "sliceName": "Binary",
        "min": 0,
        "max": "*",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:Binary.what",
        "path": "AuditEvent.entity.what",
        "comment": "Referenz auf alle betroffenen Binary   Resourcen"
      },
      {
        "id": "AuditEvent.entity:Binary.what.reference",
        "path": "AuditEvent.entity.what.reference",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:Binary.what.type",
        "path": "AuditEvent.entity.what.type",
        "min": 1,
        "patternUri": "Binary",
        "mustSupport": true
      },
      {
        "id": "AuditEvent.entity:Binary.name",
        "path": "AuditEvent.entity.name",
        "comment": "Freitextname des Dokumenten-Binary, auf das sich die Referenz bezieht",
        "min": 1,
        "mustSupport": true
      }
    ]
  }
}