R4: Abfrage von angereicherten PDF/A per Token (Rechnungsersteller) (Bulk)

Die nachfolgende Interaktion ist relevant für den FD als Server, sowie für das RE-PS als Client. Anwendungsfall AF_10271 MUSS durch den FD über die spezifizierte API umgesetzt werden. Die Vorgaben aus "Tabelle 17: Use Case Abfrage von angereicherten PDF/A per Token (Rechnungsersteller)" des Feature-Dokumentes MÜSSEN eingehalten werden durch den FD.

HTTP-Methode POST
Endpunkt / (Root-Endpunkt)

Für die Ausführung der Operation gelten die gleichen Vorgaben wie aus R1: Rechnung mit Dokumenten validieren und versenden. Die Operation $retrieve kann für innerhalb eines Batch-Bundles mehrfach, auch für unterschiedliche Dokumente aufgerufen werden. Es gelten die entsprechenden Vorgaben aus der FHIR-Kernspezifikation.

Asynchrone Verarbeitung

Diese Interaktion ist aufgrund potenziell großer Datenmengen asynchron vom FD auszuführen. Dies MUSS der Client mittels eines Prefer: respond-async-Headers nach RFC7240 dem FD signalisieren.

API-Zustand HTTP-Status-Code
Erfolgsfall 202 - Accepted
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

In einem Location-Header MUSS der FD dem RE-PS eine absolute URL mitteilen unter welcher das RE-PS per Polling prüfen kann, ob die Interaktion abgeschlossen wurde und entsprechende Rückgabewerte seitens der $retrieve-Operation vorliegen. Der Aufbau der Location-URL MUSS aus kryptografisch zufälligen Teilen bestehen, sodass der Aufbau nicht deterministisch ermittelt oder erraten werden kann. Der Server SOLLTE RE-PS-Clients mit einem HTTP-Status-Code 429 Too Many Requests abweisen, falls nach dem Ermessen des FDs die Location-URL zu häufig geprüft wird. Der FD SOLLTE einen Retry-After-Header entsprechend den Vorgaben aus der FHIR-Kernspezifikation verwenden.

Nach der Verarbeitung des batch-Bundles MUSS der FD das batch-response-Bundle unter der Location-URL bereitstellen, welches die Ergebnisse entsprechnd der Verarbeitung der einzelnen Dokumente nach AF_10271 enthält. Es ist zu beachten, dass der FD die Autorisierung für jedes Dokument gemäß den Vorgaben zu AF_10271 individuell prüfen MUSS. Der FD MUSS sicherstellen, dass das batch-response-Bundle nur einem validen Access-Token abgerufen werden kann.

Beispiel

HTTP POST [fachdienst-endpunkt]/
Bundle
<Bundle xmlns="http://hl7.org/fhir">
<id value="BulkRetrieveExampleInput" />
<type value="batch" />
<Parameters>
<id value="BeispielParameterRetrieveInput" />
<name value="token" />
<valueString value="123-456-789" />
</parameter>
<name value="strukturierterRechnungsinhalt" />
<valueBoolean value="false" />
</parameter>
<name value="originaleRechnung" />
<valueBoolean value="false" />
</parameter>
</Parameters>
</resource>
<method value="POST" />
<url value="$retrieve" />
</request>
</entry>
<Parameters>
<id value="BeispielParameterRetrieveInput2" />
<name value="token" />
<valueString value="123-456-123" />
</parameter>
</Parameters>
</resource>
<method value="POST" />
<url value="$retrieve" />
</request>
</entry>
</Bundle>
{
"resourceType": "Bundle",
"id": "BulkRetrieveExampleInput",
"type": "batch",
"entry": [
{
"request": {
"method": "POST",
"url": "$retrieve"
},
"resourceType": "Parameters",
"id": "BeispielParameterRetrieveInput",
{
"name": "token",
"valueString": "123-456-789"
},
{
"name": "strukturierterRechnungsinhalt",
"valueBoolean": false
},
{
"name": "originaleRechnung",
"valueBoolean": false
}
]
}
},
{
"request": {
"method": "POST",
"url": "$retrieve"
},
"resourceType": "Parameters",
"id": "BeispielParameterRetrieveInput2",
{
"name": "token",
"valueString": "123-456-123"
}
]
}
}
]
}

Antwort des Fachdienstes nach der Verarbeitung des batch-Bundles:

HTTP 200 OK

mit Body:

Bundle
<Bundle xmlns="http://hl7.org/fhir">
<id value="BulkRetrieveExampleOutput" />
<type value="batch-response" />
<fullUrl value="[FD-endpunkt]/DocumentReference/BeispielDocumentReferenceRechnungRetrieve" />
<DocumentReference>
<id value="BeispielDocumentReferenceRechnungRetrieve" />
<system value="https://gematik.de/fhir/sid/dipag-token" />
<value value="123-456-789" />
</identifier>
<status value="current" />
<system value="http://dvmd.de/fhir/CodeSystem/kdl" />
<code value="AM010106" />
<display value="Rechnung ambulante/stationäre Behandlung" />
</coding>
</type>
<system value="http://fhir.de/sid/gkv/kvid-10" />
<value value="A000000000" />
</identifier>
</subject>
<description value="Rechnung Reiseimpfung vom 10.01.2024" />
<contentType value="application/xml" />
<url value="[FD-endpunkt]/Binary/xrechnung" />
</attachment>
<code value="xrechnung" />
</format>
</content>
</DocumentReference>
</resource>
</entry>
<fullUrl value="[FD-endpunkt]/DocumentReference/BeispielDocumentReferenceRechnungRetrieve2" />
<DocumentReference>
<id value="BeispielDocumentReferenceRechnungRetrieve2" />
<system value="https://gematik.de/fhir/sid/dipag-token" />
<value value="123-456-123" />
</identifier>
<status value="current" />
<system value="http://dvmd.de/fhir/CodeSystem/kdl" />
<code value="AM010106" />
<display value="Rechnung ambulante/stationäre Behandlung" />
</coding>
</type>
<system value="http://fhir.de/sid/gkv/kvid-10" />
<value value="A000000000" />
</identifier>
</subject>
<description value="Rechnung Reiseimpfung vom 11.01.2024" />
<contentType value="application/xml" />
<url value="[FD-endpunkt]/Binary/xrechnung" />
</attachment>
<code value="xrechnung" />
</format>
</content>
</DocumentReference>
</resource>
</entry>
</Bundle>
{
"resourceType": "Bundle",
"id": "BulkRetrieveExampleOutput",
"type": "batch-response",
"entry": [
{
"fullUrl": "[FD-endpunkt]/DocumentReference/BeispielDocumentReferenceRechnungRetrieve",
"resourceType": "DocumentReference",
"id": "BeispielDocumentReferenceRechnungRetrieve",
{
"system": "https://gematik.de/fhir/sid/dipag-token",
"value": "123-456-789"
}
],
"status": "current",
"type": {
"coding": [
{
"code": "AM010106",
"system": "http://dvmd.de/fhir/CodeSystem/kdl",
"display": "Rechnung ambulante/stationäre Behandlung"
}
]
},
"description": "Rechnung Reiseimpfung vom 10.01.2024",
"subject": {
"system": "http://fhir.de/sid/gkv/kvid-10",
"value": "A000000000"
}
},
"content": [
{
"format": {
"code": "xrechnung"
},
"contentType": "application/xml",
"url": "[FD-endpunkt]/Binary/xrechnung"
}
}
]
}
},
{
"fullUrl": "[FD-endpunkt]/DocumentReference/BeispielDocumentReferenceRechnungRetrieve2",
"resourceType": "DocumentReference",
"id": "BeispielDocumentReferenceRechnungRetrieve2",
{
"system": "https://gematik.de/fhir/sid/dipag-token",
"value": "123-456-123"
}
],
"status": "current",
"type": {
"coding": [
{
"code": "AM010106",
"system": "http://dvmd.de/fhir/CodeSystem/kdl",
"display": "Rechnung ambulante/stationäre Behandlung"
}
]
},
"description": "Rechnung Reiseimpfung vom 11.01.2024",
"subject": {
"system": "http://fhir.de/sid/gkv/kvid-10",
"value": "A000000000"
}
},
"content": [
{
"format": {
"code": "xrechnung"
},
"contentType": "application/xml",
"url": "[FD-endpunkt]/Binary/xrechnung"
}
}
]
}
}
]
}