R10: Nutzerprotokoll einsehen
Die nachfolgende Interaktion ist relevant für den FD als Server, sowie für das DiPag FdV als Client. Anwendungsfall AF_10203 MUSS durch den FD über die spezifizierte API umgesetzt werden. Die Vorgaben aus "Tabelle 39: Use Case Nutzerprotokoll einsehen" des Feature-Dokumentes MÜSSEN eingehalten werden durch den FD.
| HTTP-Methode | GET |
| Endpunkt | /AuditEvent |
Suchparameter agent-display |
Kardinalität: 0..1 Name Rechnungsersteller/Kostenträger/FachdienstVersicherte Person Hinweis: Alle Akteure werden mit unterschiedlichen Rollen als agent erfasstType: string |
Suchparameter date |
Kardinalität: 0..* Type: date |
Suchresultatparameter _sort |
Als Sortierkriterien können die oben genannten Suchparameter verwendet werden für die Inhalte die als Sortierkriterien in Tabelle 39: Use Case Nutzerprotokoll einsehen - Feature-Dokument Digitale Patientenrechnung genannt sind |
Suchresultatparameter _count |
Durch den Client gewünschte Page-Size, der FD KANN Vorgaben für die Maximale Page-Size definieren |
| API-Zustand | HTTP-Status-Code |
|---|---|
| Erfolgsfall | 200 - OK |
| Weitere Parameter in HTTP-Anfrage enthalten | 400 - Bad Request |
| Syntax für Parameter ist nicht korrekt oder Kardinalitäten werden nicht eingehalten | 400 - Bad Request |
| Kein valides Access-Token wird mitgesendet | 401 - Unauthorized |
| Autorisierter Benutzer verfügt über keine ausreichende Berechtigung die Interaktion auszuführen | 403 - Forbidden |
| Andere HTTP-Methode wird verwendet | 405 - Method Not Allowed |
Als Antwort MUSS der FD ein FHIR-SearchSet-Bundle zurückliefern welches eingegrenzt ist auf die durch den Client übermittelten Suchparameter.
Beispiele
HTTP GET [fachdienst-endpunkt]/AuditEvent?agent-display=Max Mustermann
Antwort des Fachdienstes im Erfolgsfall:
HTTP 200 OK
mit Body:
| Bundle |
| id : BeispielNutzungsprotokollResultBundle |
| type : searchset |
| total : 7 |
| link |
| relation : self |
| url : https://example.com/fhir/AuditEvent?agent-display=Max%20Mustermann |
| entry |
| fullUrl : https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollNutzerkontoEinrichten |
| resource |
| id : BeispielNutzungsprotokollNutzerkontoEinrichten |
| meta |
| profile : https://gematik.de/fhir/dipag/StructureDefinition/dipag-nutzungsprotokoll |
| type |
| system : http://terminology.hl7.org/CodeSystem/audit-event-type |
| code : rest |
| subtype |
| system : http://hl7.org/fhir/restful-interaction |
| code : create |
| action : C |
| recorded : 2024-01-15T10:00:00+00:00 |
| outcome : 0 |
| agent |
| type |
| coding |
| system : http://terminology.hl7.org/CodeSystem/extra-security-role-type |
| code : humanuser |
| who |
| identifier |
| system : http://fhir.de/sid/gkv/kvid-10 |
| value : A123456789 |
| display : Max Mustermann |
| requestor : True |
| source |
| observer |
| identifier |
| system : urn:ietf:rfc:3986 |
| value : urn:oid:1.2.276.0.76.4.323 |
| display : DiPag FD Server |
| entity |
| what |
| reference : Patient/NutzerkontoPatient |
| type : Patient |
| detail |
| type : Allgemein |
| value : Ein Nutzerkonto wurde eingerichtet. |
| search |
| mode : match |
| entry |
| fullUrl : https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollRetrieve |
| resource |
| id : BeispielNutzungsprotokollRetrieve |
| meta |
| profile : https://gematik.de/fhir/dipag/StructureDefinition/dipag-nutzungsprotokoll |
| type |
| system : http://terminology.hl7.org/CodeSystem/audit-event-type |
| code : rest |
| subtype |
| system : https://gematik.de/fhir/dipag/CodeSystem/dipag-operationen-cs |
| code : retrieve |
| action : E |
| recorded : 2024-05-30T09:15:22+00:00 |
| outcome : 0 |
| agent |
| type |
| coding |
| system : http://terminology.hl7.org/CodeSystem/extra-security-role-type |
| code : humanuser |
| who |
| identifier |
| system : http://fhir.de/sid/gkv/kvid-10 |
| value : A123456789 |
| display : Max Mustermann |
| requestor : True |
| source |
| observer |
| identifier |
| system : urn:ietf:rfc:3986 |
| value : urn:oid:1.2.276.0.76.4.323 |
| display : DiPag FD Server |
| entity |
| what |
| reference : Patient/NutzerkontoPatient |
| type : Patient |
| entity |
| what |
| reference : DocumentReference/BeispielDocumentReferenceRechnungRetrieve |
| type : DocumentReference |
| name : Rechnung Reiseimpfung vom 10.01.2024 |
| detail |
| type : Allgemein |
| value : Rechnung abgerufen |
| entity |
| what |
| reference : Binary/id-der-originalen-rechnung |
| type : Binary |
| name : Originale Rechnung zu Rechnung Reiseimpfung vom 10.01.2024 |
| entity |
| what |
| reference : Binary/id-der-angereicherten-rechnung |
| type : Binary |
| name : Angereicherte Rechnung zu Rechnung Reiseimpfung vom 10.01.2024 |
| entity |
| what |
| reference : Binary/id-des-strukturierten-Rechnungsinhalts |
| type : Binary |
| name : Strukturierter Rechnungsinhalt zu Rechnung Reiseimpfung vom 10.01.2024 |
| search |
| mode : match |
| entry |
| fullUrl : https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollChangeStatus |
| resource |
| id : BeispielNutzungsprotokollChangeStatus |
| meta |
| profile : https://gematik.de/fhir/dipag/StructureDefinition/dipag-nutzungsprotokoll |
| type |
| system : http://terminology.hl7.org/CodeSystem/audit-event-type |
| code : rest |
| subtype |
| system : https://gematik.de/fhir/dipag/CodeSystem/dipag-operationen-cs |
| code : change-status |
| action : E |
| recorded : 2024-05-31T14:30:00+00:00 |
| outcome : 0 |
| agent |
| type |
| coding |
| system : http://terminology.hl7.org/CodeSystem/extra-security-role-type |
| code : humanuser |
| who |
| identifier |
| system : http://fhir.de/sid/gkv/kvid-10 |
| value : A123456789 |
| display : Max Mustermann |
| requestor : True |
| source |
| observer |
| identifier |
| system : urn:ietf:rfc:3986 |
| value : urn:oid:1.2.276.0.76.4.323 |
| display : DiPag FD Server |
| entity |
| what |
| reference : Patient/NutzerkontoPatient |
| type : Patient |
| entity |
| what |
| reference : DocumentReference/BeispielDocumentReferenceRechnungRetrieve |
| type : DocumentReference |
| name : Rechnung Reiseimpfung vom 10.01.2024 |
| detail |
| type : DocumentReference.meta.tag:dipag-rechnungsstatus |
| value : Rechnungsstatus geändert auf 'Bezahlt' |
| search |
| mode : match |
| entry |
| fullUrl : https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollProcessFlag |
| resource |
| id : BeispielNutzungsprotokollProcessFlag |
| meta |
| profile : https://gematik.de/fhir/dipag/StructureDefinition/dipag-nutzungsprotokoll |
| type |
| system : http://terminology.hl7.org/CodeSystem/audit-event-type |
| code : rest |
| subtype |
| system : https://gematik.de/fhir/dipag/CodeSystem/dipag-operationen-cs |
| code : process-flag |
| action : E |
| recorded : 2024-06-01T10:00:00+00:00 |
| outcome : 0 |
| agent |
| type |
| coding |
| system : http://terminology.hl7.org/CodeSystem/extra-security-role-type |
| code : humanuser |
| who |
| identifier |
| system : http://fhir.de/sid/gkv/kvid-10 |
| value : A123456789 |
| display : Max Mustermann |
| requestor : True |
| source |
| observer |
| identifier |
| system : urn:ietf:rfc:3986 |
| value : urn:oid:1.2.276.0.76.4.323 |
| display : DiPag FD Server |
| entity |
| what |
| reference : Patient/NutzerkontoPatient |
| type : Patient |
| entity |
| what |
| reference : DocumentReference/BeispielDocumentReferenceRechnungRetrieve |
| type : DocumentReference |
| name : Rechnung Reiseimpfung vom 10.01.2024 |
| detail |
| type : DocumentReference.meta.extension:markierung |
| value : Markierung 'Persönlich' gesetzt |
| search |
| mode : match |
| entry |
| fullUrl : https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollEinreichenFrontend |
| resource |
| id : BeispielNutzungsprotokollEinreichenFrontend |
| meta |
| profile : https://gematik.de/fhir/dipag/StructureDefinition/dipag-nutzungsprotokoll |
| type |
| system : http://terminology.hl7.org/CodeSystem/audit-event-type |
| code : rest |
| subtype |
| system : https://gematik.de/fhir/dipag/CodeSystem/dipag-operationen-cs |
| code : process-flag |
| action : E |
| recorded : 2024-06-03T08:20:00+00:00 |
| outcome : 0 |
| agent |
| type |
| coding |
| system : http://terminology.hl7.org/CodeSystem/extra-security-role-type |
| code : humanuser |
| who |
| identifier |
| system : http://fhir.de/sid/gkv/kvid-10 |
| value : A123456789 |
| display : Max Mustermann |
| requestor : True |
| source |
| observer |
| identifier |
| system : urn:ietf:rfc:3986 |
| value : urn:oid:1.2.276.0.76.4.323 |
| display : DiPag FD Server |
| entity |
| what |
| reference : Patient/NutzerkontoPatient |
| type : Patient |
| entity |
| what |
| reference : DocumentReference/BeispielDocumentReferenceRechnungRetrieve |
| type : DocumentReference |
| name : Rechnung Reiseimpfung vom 10.01.2024 |
| detail |
| type : DocumentReference.meta.extension:markierung |
| value : Die Rechnung wurde über das Frontend eingereicht. |
| search |
| mode : match |
| entry |
| fullUrl : https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollBerechtigungBestaetigen |
| resource |
| id : BeispielNutzungsprotokollBerechtigungBestaetigen |
| meta |
| profile : https://gematik.de/fhir/dipag/StructureDefinition/dipag-nutzungsprotokoll |
| type |
| system : http://terminology.hl7.org/CodeSystem/audit-event-type |
| code : rest |
| subtype |
| system : http://hl7.org/fhir/restful-interaction |
| code : update |
| action : U |
| recorded : 2024-05-21T10:30:00+00:00 |
| outcome : 0 |
| agent |
| type |
| coding |
| system : http://terminology.hl7.org/CodeSystem/extra-security-role-type |
| code : humanuser |
| who |
| identifier |
| system : http://fhir.de/sid/gkv/kvid-10 |
| value : A123456789 |
| display : Max Mustermann |
| requestor : True |
| source |
| observer |
| identifier |
| system : urn:ietf:rfc:3986 |
| value : urn:oid:1.2.276.0.76.4.323 |
| display : DiPag FD Server |
| entity |
| what |
| reference : Patient/NutzerkontoPatient |
| type : Patient |
| detail |
| type : Rechnungsversand-Berechtigung |
| value : Die Berechtigungsregel zum Rechnungsversand für Zahnarztpraxis Müller wurde durch den Rechnungsempfänger bestätigt. |
| search |
| mode : match |
| entry |
| fullUrl : https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollErase |
| resource |
| id : BeispielNutzungsprotokollErase |
| meta |
| profile : https://gematik.de/fhir/dipag/StructureDefinition/dipag-nutzungsprotokoll |
| type |
| system : http://terminology.hl7.org/CodeSystem/audit-event-type |
| code : rest |
| subtype |
| system : https://gematik.de/fhir/dipag/CodeSystem/dipag-operationen-cs |
| code : erase |
| action : E |
| recorded : 2024-06-02T16:45:00+00:00 |
| outcome : 0 |
| agent |
| type |
| coding |
| system : http://terminology.hl7.org/CodeSystem/extra-security-role-type |
| code : humanuser |
| who |
| identifier |
| system : http://fhir.de/sid/gkv/kvid-10 |
| value : A123456789 |
| display : Max Mustermann |
| requestor : True |
| source |
| observer |
| identifier |
| system : urn:ietf:rfc:3986 |
| value : urn:oid:1.2.276.0.76.4.323 |
| display : DiPag FD Server |
| entity |
| what |
| reference : Patient/NutzerkontoPatient |
| type : Patient |
| entity |
| name : Rechnung Reiseimpfung vom 10.01.2024 |
| detail |
| type : Allgemein |
| value : Rechnung gelöscht |
| entity |
| name : Originale Rechnung zu Rechnung Reiseimpfung vom 10.01.2024 |
| entity |
| name : Angereicherte Rechnung zu Rechnung Reiseimpfung vom 10.01.2024 |
| entity |
| name : Strukturierter Rechnungsinhalt zu Rechnung Reiseimpfung vom 10.01.2024 |
| search |
| mode : match |
</link>
<fullUrl value="https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollNutzerkontoEinrichten" />
<AuditEvent>
</meta>
</type>
</subtype>
</coding>
</type>
</identifier>
</who>
</agent>
</identifier>
</observer>
</source>
</what>
</detail>
</entity>
</AuditEvent>
</resource>
</search>
</entry>
<AuditEvent>
</meta>
</type>
</subtype>
</coding>
</type>
</identifier>
</who>
</agent>
</identifier>
</observer>
</source>
</entity>
</what>
</detail>
</entity>
</what>
</entity>
</what>
</entity>
</what>
</entity>
</AuditEvent>
</resource>
</search>
</entry>
<AuditEvent>
</meta>
</type>
</subtype>
</coding>
</type>
</identifier>
</who>
</agent>
</identifier>
</observer>
</source>
</entity>
</what>
</detail>
</entity>
</AuditEvent>
</resource>
</search>
</entry>
<AuditEvent>
</meta>
</type>
</subtype>
</coding>
</type>
</identifier>
</who>
</agent>
</identifier>
</observer>
</source>
</entity>
</what>
</detail>
</entity>
</AuditEvent>
</resource>
</search>
</entry>
<AuditEvent>
</meta>
</type>
</subtype>
</coding>
</type>
</identifier>
</who>
</agent>
</identifier>
</observer>
</source>
</entity>
</what>
</detail>
</entity>
</AuditEvent>
</resource>
</search>
</entry>
<fullUrl value="https://example.com/fhir/AuditEvent/BeispielNutzungsprotokollBerechtigungBestaetigen" />
<AuditEvent>
</meta>
</type>
</subtype>
</coding>
</type>
</identifier>
</who>
</agent>
</identifier>
</observer>
</source>
</what>
<valueString value="Die Berechtigungsregel zum Rechnungsversand für Zahnarztpraxis Müller wurde durch den Rechnungsempfänger bestätigt." />
</detail>
</entity>
</AuditEvent>
</resource>
</search>
</entry>
<AuditEvent>
</meta>
</type>
</subtype>
</coding>
</type>
</identifier>
</who>
</agent>
</identifier>
</observer>
</source>
</entity>
</detail>
</entity>
</entity>
</entity>
</entity>
</AuditEvent>
</resource>
</search>
</entry>
</Bundle>
{
],
{
},
},
],
{
]
},
},
},
}
],
},
}
},
{
},
]
}
]
},
}
},
{
},
},
],
{
]
},
},
},
}
],
},
}
},
{
},
{
},
]
},
{
},
},
{
},
},
{
},
}
]
},
}
},
{
},
},
{
}
],
{
]
},
},
},
}
],
},
}
},
{
},
{
},
{
}
]
}
]
},
}
},
{
},
},
{
}
],
{
]
},
},
},
}
],
},
}
},
{
},
{
},
{
}
]
}
]
},
}
},
{
},
},
{
}
],
{
]
},
},
},
}
],
},
}
},
{
},
{
},
{
}
]
}
]
},
}
},
{
},
},
],
{
]
},
},
},
}
],
},
}
},
{
},
{
"valueString": "Die Berechtigungsregel zum Rechnungsversand für Zahnarztpraxis Müller wurde durch den Rechnungsempfänger bestätigt."
}
]
}
]
},
}
},
{
},
},
],
{
]
},
},
},
}
],
},
}
},
{
},
{
]
},
{
},
{
},
{
}
]
},
}
}
]
}
Verarbeitungsschritte im FD
Lesen von AuditEvent-Ressourcen
- Der FD MUSS die Suche auf AuditEvent-Ressourcen begrenzen die unter
AuditEvent.entity:Versicherter.whatauf einen Benutzer verweisen, welcher durch die KVNR aus dem Access-Token identifiziert wird, um sicherzustellen, dass nur persönliche AuditEvent-Ressourcen des angemeldeten Rechnungsempfänger zurückgegeben werden. - Die oben aufgeführten Suchparameter schränken die Ergebnismenge weiter ein, bzw. modifizieren das Ergebnis bspw. durch Sortierung, um die Suche nach relevanten AuditEvent-Ressourcen zu ermöglichen.
- Bei der Suche mittels
dateSuchparameter sind nur die folgenden Modifikatoren zulässig:eq,gt,lt,ge,le. Alle anderen Modifikatoren werden mit einem Fehlercode 400 beantwortet werden. - Die Suche nach einer
date-Range darf nicht größer als ein Jahr sein. Anfragen, die größer als ein Jahr sind, werden auf ein Jahr begrenzt und in einem OperationsOutcome mit einem entsprechenden Hinweis beantwortet.
Erfassung von AuditEvent-Ressourcen
- Beim Eintreten eines Events muss das FdV den korrekten
typeundsubtypesetzen - Beim Eintreten eines Events muss der Fachdienst die auslösende Instanz korrekt im
agent.whoElement setzen. Um eine Suche für den Versicherten zu ermöglichen, muss auch dasagent.who.displaygesetzt sein. Hierbei ist meist der Name der auslösenden Instanz (z.B. Name des Rechnungserstellers) sinnvoll. - Beim Eintreten eines Events muss der Fachdienst die OID und den Namen des Servers als
observersetzen - Beim Eintreten eines Events muss der Fachdienst das Nutzerkonto des betroffenen Versicherten in
entity:Versicherter.whatreferenzieren. Ein AuditEvent ohne diese Referenz kann aktuell keinem Konto angezeigt werden und ist ungültig. Zusätzlich müssen alle betroffenen DocumentReference und Binary Ressourcen referenziert werden.- Bei DocumentReference wird vom Fachdienst als
entity:DocumentReference.nameder Inhalt des Elementesdescriptionaus dem Profil DiPagDokumentenmetadatenIntern gesetzt. - Bei Binary wird vom Fachdienst als
entity:Binary.nameder Inhalt des Binary spezifiziert und mit dem Inhalt des Elementesdescriptionaus dem Profil DiPagDokumentenmetadatenIntern kombiniert. Beispiel: "Strukturierter Rechnungsinhalt zu Rechnung Reiseimpfung vom 10.01.2024" wobei "Rechnung Reiseimpfung vom 10.01.2024" der Inhalt ausDocumentReference.descriptionist.
- Bei DocumentReference wird vom Fachdienst als