Seiteninhalt:
Dieser Implementation Guide verwendet die Schlüsselwörter MUSS, DARF NICHT, SOLL NICHT und KANN als deutsche Pendants des [RFC2119], um Anforderungen als Ausdruck normativer Festlegungen zu kennzeichnen. Anforderungen werden im Implementation Guide wie folgt dargestellt:
<IG-ID-Version> - <Titel der Anforderung>
Text / Beschreibung
[<=]
Code | Beschreibung | Error Code | Anmerkung |
---|---|---|---|
200 |
Successful operation | - | - |
403 |
Requestor not authorized | invalAuth |
no user session with valid ID-Token available |
403 |
Requestor has no valid entitlement | notEntitled |
- |
403 |
Requestor role is not in the list of allowed user groups | invalidOid |
- |
403 |
Device registration does not exist | unregisteredDevice |
if requestor role is oid_versicherter only |
404 |
Health record is in state UNKNOWN or INITIALIZED | noHealthRecord |
- |
409 |
Health record is in state SUSPENDED or MAINTENANCE | statusMismatch |
siehe 'Wiederholungsintervalle' |
500 |
Any other error | internalError |
siehe 'Wiederholungsintervalle' |
{
"errorCode": "statusMismatch"
}
Beispiel für ein OperationOutcome mit SVC_IDENTITY_MISMATCH
{
"resourceType" : "OperationOutcome",
"id" : "ad48bf90-a664-44f4-af14-ee6e81db3df4",
"meta" : {
"profile" : [
🔗 "https://gematik.de/fhir/ti/StructureDefinition/operation-outcome"
]
},
"issue" : [
{
"severity" : "error",
"code" : "forbidden",
"details" : {
"coding" : [
{
"system" : "https://gematik.de/fhir/ti/CodeSystem/operation-outcome-details-codes",
"code" : "SVC_IDENTITY_MISMATCH",
"display" : "Telematik-ID inside ID-Token or KVNR in x-insurantid HTTP header does not match FHIR data"
}
]
}
}
]
}
<OperationOutcome xmlns="http://hl7.org/fhir">
<id value="ad48bf90-a664-44f4-af14-ee6e81db3df4"/>
<meta>
<profile
value="https://gematik.de/fhir/ti/StructureDefinition/operation-outcome"/>
</meta>
<issue>
<severity value="error"/>
<code value="forbidden"/>
<details>
<coding>
<system
value="https://gematik.de/fhir/ti/CodeSystem/operation-outcome-details-codes"/>
<code value="SVC_IDENTITY_MISMATCH"/>
<display
value="Telematik-ID inside ID-Token or KVNR in x-insurantid HTTP header does not match FHIR data"/>
</coding>
</details>
</issue>
</OperationOutcome>
Die folgenden Wiederholungsintervalle werden im Falle einer Fehlerantwort definiert:
Zur Identifikation der Organisation, die eine FHIR-Operation auslöst, wird der HTTP-Header X-Requesting-Organization verwendet. Dieser Header überträgt eine FHIR Organization-Ressource im JSON-Format, base64-kodiert gemäß [RFC4648].
Die übermittelte Organization muss dem Profil TIOrganization entsprechen und enthält unter anderem die Telematik-ID der Organisation. Diese wird vom FHIR Data Service mit der im ID-Token enthaltenen Telematik-ID verglichen, um die Identität der Organisation zu verifizieren.
Neben der Validierung dient die übermittelte Organization auch der automatischen Referenzierung in Provenance-Ressourcen, die bei Änderungsoperationen erzeugt werden. So kann jede Änderung systematisch der verantwortlichen Organisation zugeordnet werden.
{
"resourceType" : "OperationOutcome",
"id" : "3e5635b7-5546-4b2b-8509-a138652985e7",
"meta" : {
"profile" : [
🔗 "https://gematik.de/fhir/ti/StructureDefinition/operation-outcome"
]
},
"issue" : [
{
"severity" : "error",
"code" : "structure",
"details" : {
"coding" : [
{
"system" : "https://gematik.de/fhir/epa/CodeSystem/epa-operation-outcome-details-codes",
"code" : "SVC_ORG_HEADER_PROFILE_MISMATCH",
"display" : "Profile mismatch in header Organization"
}
]
}
}
]
}
<OperationOutcome xmlns="http://hl7.org/fhir">
<id value="3e5635b7-5546-4b2b-8509-a138652985e7"/>
<meta>
<profile
value="https://gematik.de/fhir/ti/StructureDefinition/operation-outcome"/>
</meta>
<issue>
<severity value="error"/>
<code value="structure"/>
<details>
<coding>
<system
value="https://gematik.de/fhir/epa/CodeSystem/epa-operation-outcome-details-codes"/>
<code value="SVC_ORG_HEADER_PROFILE_MISMATCH"/>
<display value="Profile mismatch in header Organization"/>
</coding>
</details>
</issue>
</OperationOutcome>
POST /epa/medication/api/v1/fhir/$add-emp-entry HTTP/1.1
Host: epa4all
Content-Type: application/fhir+json
X-Request-ID: bb22b14f-9c95-49fe-b889-d03e2d692bca
x-insurantid: Z123456789
x-useragent: CLIENTID1234567890AB/2.1.12-45
X-Requesting-Organization: ewogICJyZXNvdXJjZVR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAibWV0YSI6IHsKICAgICJwcm9maWxlIjogWwogICAgICAiaHR0cHM6Ly9nZW1hdGlrLmRlL2ZoaXIvdGkvU3RydWN0dXJlRGVmaW5pdGlvbi90aS1vcmdhbml6YXRpb24iCiAgICBdCiAgfSwKICAiaWRlbnRpZmllciI6IFsKICAgIHsKICAgICAgInN5c3RlbSI6ICJodHRwczovL2dlbWF0aWsuZGUvZmhpci9zaWQvdGVsZW1hdGlrLWlkIiwKICAgICAgInZhbHVlIjogIjktMi41OC4wMDAwMDA0MCIKICAgIH0KICBdLAogICJ0eXBlIjogWwogICAgewogICAgICAiY29kaW5nIjogWwogICAgICAgIHsKICAgICAgICAgICJjb2RlIjogIjEuMi4yNzYuMC43Ni40LjU0IiwKICAgICAgICAgICJzeXN0ZW0iOiAiaHR0cHM6Ly9nZW1hdGlrLmRlL2ZoaXIvZGlyZWN0b3J5L0NvZGVTeXN0ZW0vT3JnYW5pemF0aW9uUHJvZmVzc2lvbk9JRCIsCiAgICAgICAgICAiZGlzcGxheSI6ICLDlmZmZW50bGljaGUgQXBvdGhla2UiCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXSwKICAiYWxpYXMiOiBbCiAgICAiQXBvdGhla2UiCiAgXSwKICAiYWRkcmVzcyI6IFsKICAgIHsKICAgICAgImxpbmUiOiBbCiAgICAgICAgIkZyaWVkcmljaHN0ci4gMTM2IgogICAgICBdLAogICAgICAidGV4dCI6ICJnZW1hdGlrIEFwb3RoZWtlXG5GcmllZHJpY2hzdHIuIDEzNixcbjEwMTE3IEJlcmxpbiIsCiAgICAgICJjaXR5IjogIkJlcmxpbiIsCiAgICAgICJkaXN0cmljdCI6ICJNaXR0ZSIsCiAgICAgICJzdGF0ZSI6ICJCZXJsaW4iLAogICAgICAicG9zdGFsQ29kZSI6ICIxMDExNyIsCiAgICAgICJjb3VudHJ5IjogIkRFIgogICAgfQogIF0sCiAgImNvbnRhY3QiOiBbCiAgICB7CiAgICAgICJuYW1lIjogewogICAgICAgICJ0ZXh0IjogImdlbWF0aWsgSVRTTSIKICAgICAgfSwKICAgICAgInRlbGVjb20iOiBbCiAgICAgICAgewogICAgICAgICAgInN5c3RlbSI6ICJlbWFpbCIsCiAgICAgICAgICAidmFsdWUiOiAiYmV0cmllYkBnZW1hdGlrLmRlIgogICAgICAgIH0KICAgICAgXSwKICAgICAgInB1cnBvc2UiOiB7CiAgICAgICAgImNvZGluZyI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImNvZGUiOiAiQURNSU4iLAogICAgICAgICAgICAic3lzdGVtIjogImh0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vY29udGFjdGVudGl0eS10eXBlIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgfQogIF0sCiAgImFjdGl2ZSI6IHRydWUsCiAgIm5hbWUiOiAiZ2VtYXRpayBBcG90aGVrZSIKfQo=
Änderungseinträge im FHIR Data Service der ePA werden mit der Ressource Provenance dokumentiert. Sie erfassen, welche Änderungen an Ressourcen durchgeführt wurden, welche Versionen dieser Ressourcen dadurch entstanden sind, sowie wer für diese Änderung verantwortlich war und wann diese fachlich durchgeführt und technisch dokumentiert wurde.
Für diese Änderungseinträge muss das Profil EPAActivityProvenance verwendet werden. Dieses Profil legt verbindlich fest,
Ein Änderungseintrag dient dabei nicht nur als technisches Audit, sondern als fachlich relevanter Nachweis im Kontext des jeweiligen FHIR Data Service. Jede betroffene Ressourceninstanz wird versioniert referenziert, sodass der genaue Zustand der jeweiligen FHIR-Instanzen zum Zeitpunkt der Änderung eindeutig nachvollzogen werden kann.
Die Provenance-Instanzen werden ausschließlich vom jeweiligen FHIR Data Service selbst erstellt. Eine Erstellung oder Bearbeitung dieser Änderungseinträge durch externe Systeme oder Clients ist nicht vorgesehen. Die Provenance entsteht typischerweise im Rahmen von Operationen, die fachliche Änderungen an Ressourceninstanzen bewirken. Es wird nicht für jede einzelne Ressourceninstanz automatisch ein Änderungseintrag erstellt. Die jeweilige Geschäftslogik des FHIR Data Service definiert, für welche fachlich relevanten Änderungen ein Änderungseintrag erzeugt wird. Beispielsweise kann eine zusammengehörige Gruppe von Instanzen, die gemeinsam einen Verschreibungs- unad Abgdabedatensatz bilden, in einem einzigen Änderungseintrag dokumentiert werden.
Der verantwortliche Akteur wird im Änderungseintrag durch das Element Provenance.agent.who angegeben. Dabei gilt folgende Unterscheidung:
Bei Aufrufen durch Leistungserbringerinstitutionen:
Es ist die im Header X-Requesting-Organization übermittelte Organization-Ressource zu verwenden. Für die Referenzierung in agent.who gilt:
{
"resourceType" : "Provenance",
"id" : "fdfc2842-bfff-436f-ab13-74785d0188c0",
"meta" : {
"versionId" : "1",
"lastUpdated" : "2025-06-02T11:15:00+01:00",
"profile" : [
🔗 "https://gematik.de/fhir/epa/StructureDefinition/epa-activity-provenance"
]
},
"target" : [
{
"reference" : "MedicationStatement/29d46448-b585-4501-9660-a1236436560f/_history/2"
}
],
"occurredDateTime" : "2025-06-02T11:15:00+01:00",
"recorded" : "2025-06-02T11:15:00+01:00",
"activity" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/v3-DataOperation",
"code" : "Update",
"display" : "revise"
}
]
},
"agent" : [
{
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
"code" : "author"
}
]
},
"who" : {
🔗 "reference" : "Organization/e66d6c66-96e0-4725-b48c-73702ee63cdf",
"identifier" : {
"system" : "https://gematik.de/fhir/sid/telematik-id",
"value" : "9-2.58.00000040"
},
"display" : "gematik Praxis"
}
}
]
}
<Provenance xmlns="http://hl7.org/fhir">
<id value="fdfc2842-bfff-436f-ab13-74785d0188c0"/>
<meta>
<versionId value="1"/>
<lastUpdated value="2025-06-02T11:15:00+01:00"/>
<profile
value="https://gematik.de/fhir/epa/StructureDefinition/epa-activity-provenance"/>
</meta>
<target>
<reference
value="MedicationStatement/29d46448-b585-4501-9660-a1236436560f/_history/2"/>
</target>
<occurredDateTime value="2025-06-02T11:15:00+01:00"/>
<recorded value="2025-06-02T11:15:00+01:00"/>
<activity>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/v3-DataOperation"/>
<code value="Update"/>
<display value="revise"/>
</coding>
</activity>
<agent>
<type>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/provenance-participant-type"/>
<code value="author"/>
</coding>
</type>
<who>🔗
<reference value="Organization/e66d6c66-96e0-4725-b48c-73702ee63cdf"/>
<identifier>
<system value="https://gematik.de/fhir/sid/telematik-id"/>
<value value="9-2.58.00000040"/>
</identifier>
<display value="gematik Praxis"/>
</who>
</agent>
</Provenance>
Bei Änderungen, die der FHIR Data Service selbst durchführt:
Es ist ein eindeutiger Identifier des jeweiligen ePA FHIR Data Service anzugeben, z. B. ein Identifier nach dem Profil EPAFHIRDataServiceIdentifier. Auch in diesem Fall ist zusätzlich ein display anzugeben, der den Dienstnamen beschreibt (z. B. “ePA Medication Service”).
{
"resourceType" : "Provenance",
"id" : "c7b6dcfc-d535-4f8f-9d86-841693f788d1",
"meta" : {
"versionId" : "1",
"lastUpdated" : "2025-06-02T11:15:00+01:00",
"profile" : [
🔗 "https://gematik.de/fhir/epa/StructureDefinition/epa-activity-provenance"
]
},
"target" : [
{
"reference" : "MedicationStatement/29d46448-b585-4501-9660-a1236436560f/_history/1"
}
],
"occurredDateTime" : "2025-06-02T11:15:00+01:00",
"recorded" : "2025-06-02T11:15:00+01:00",
"activity" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/v3-DataOperation",
"code" : "CREATE",
"display" : "create"
}
]
},
"agent" : [
{
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/provenance-participant-type",
"code" : "author"
}
]
},
"who" : {
"identifier" : {
"system" : "https://gematik.de/fhir/sid/epa-fhir-data-service",
"value" : "MEDICATIONSVC"
},
"display" : "ePA Medication Service"
}
}
]
}
<Provenance xmlns="http://hl7.org/fhir">
<id value="c7b6dcfc-d535-4f8f-9d86-841693f788d1"/>
<meta>
<versionId value="1"/>
<lastUpdated value="2025-06-02T11:15:00+01:00"/>
<profile
value="https://gematik.de/fhir/epa/StructureDefinition/epa-activity-provenance"/>
</meta>
<target>
<reference
value="MedicationStatement/29d46448-b585-4501-9660-a1236436560f/_history/1"/>
</target>
<occurredDateTime value="2025-06-02T11:15:00+01:00"/>
<recorded value="2025-06-02T11:15:00+01:00"/>
<activity>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/v3-DataOperation"/>
<code value="CREATE"/>
<display value="create"/>
</coding>
</activity>
<agent>
<type>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/provenance-participant-type"/>
<code value="author"/>
</coding>
</type>
<who>
<identifier>
<system value="https://gematik.de/fhir/sid/epa-fhir-data-service"/>
<value value="MEDICATIONSVC"/>
</identifier>
<display value="ePA Medication Service"/>
</who>
</agent>
</Provenance>
Zur Auswertung und Nachverfolgung von Änderungen stellt der FHIR Data Service geeignete Zugriffsmöglichkeiten bereit. Diese ermöglichen es, den Änderungsverlauf zu einer oder mehreren Ressourcen gezielt abzufragen – beispielsweise basierend auf den Provenance-Instanzen, die für diese Ressourcen erstellt wurden. Eine direkte Abfrage kann z. B. über eine FHIR-Suche auf Provenance mit dem Suchparameter target oder über eine spezialisierte Operation des jeweiligen FHIR Data Service erfolgen.
Beispiel
http://epa4all/epa/audit/api/v1/fhir/AuditEvent/ea01ccbc-aa5d-4c34-8292-d95678d52c98