Skip to content

Latest commit

 

History

History
619 lines (547 loc) · 30.3 KB

erp_communication.adoc

File metadata and controls

619 lines (547 loc) · 30.3 KB

E-Rezept API-Dokumentation für Nachrichtenaustausch gematik logo

Zielgruppe: AVS E30615 FdV green

Hier dokumentiert die gematik die Nutzung der Schnittstellen rund um den Nachrichtenaustausch zwischen Versicherten und Apotheken zum E-Rezept.

⚠️
In einigen Fällen kann der Fachdienst nicht eineindeutig identifizieren, ob eine Communication von einem PKV- oder GKV-Versicherten eingestellt wurde. In diesen Fällen übermittelt der Fachdienst den KVNR-Typ "GKV".

Hinweis: Laut Spezifikation für das E-Rezept-FdV gilt, dass keine non-printable-characters übertragen werden dürfen. Diese sind z.B. In UTF-8 entspricht das den C0- und C1-Steuercodes.

  1. C0-Steuercodes:

    • Bereich: U+0000 bis U+001F

    • Beispiel: Null-Byte (U+0000), Start of Header (U+0001), Line Feed (U+000A), Tabulator (U+0009), usw.

  2. C1-Steuercodes:

    • Bereich: U+0080 bis U+009F

    • Beispiel: Start of Sentence (U+0082), End of Text (U+0003), Escape (U+001B), usw.

  3. Andere non-printable Zeichen:

    • Null-Byte (U+0000)

    • Byte Order Mark (BOM): U+FEFF

    • Replace Character (U+FFFD)

Anwendungsfall Ein E-Rezept verbindlich einer Apotheke zuweisen

Als Versicherter möchte ich einer Apotheke alle Informationen zukommen lassen, damit diese mein E-Rezept beliefern kann. Über einen JSON-Payload kann ich weitere Informationen zur Belieferung angeben.

Der Aufruf erfolgt als http-POST-Operation. Der Server prüft die Nachricht auf Zulässigkeit und ergänzt Metainformationen wie den Sendezeitpunkt und die Angaben des Absenders aus dessen ACCESS_TOKEN.
Es obliegt der Apotheke, eine hilfreiche Bestätigung an den Versicherten zurückzusenden. Es kann ggfs. zusätzlich erforderlich sein, eventuelle Zuzahlungsmodalitäten, Lieferadresse usw. über einen separaten Kanal (Bestell-Bestätigungs-App) der Apotheke abzuwickeln.

ℹ️
Die Validierung der JSON-payload wird nach folgendem Schema durchgeführt DispReq JSON-Schema.

Request

URI

Method

POST

Requester

FdV green

Responder

eRp—​FD blue

HTTP Header

Content-Type: application/fhir+json; charset=UTF-8
Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J
ℹ️
Im http-Header des äußeren http-Requests an die VAU (POST /VAU) sind die Header X-erp-user: v und X-erp-resource: Communication zu setzen.

Payload

{
  "resourceType": "Communication",
  "id": "erp-communication-05-request-RezeptZuweisen",
  "meta": {
    "profile": [
      "https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_PR_Communication_DispReq|1.4"
    ]
  },
  "status": "unknown",
  "extension": [
    {
      "url": "https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_EX_PrescriptionType",
      "valueCoding": {
        "code": "160",
        "system": "https://gematik.de/fhir/erp/CodeSystem/GEM_ERP_CS_FlowType",
        "display": "Muster 16 (Apothekenpflichtige Arzneimittel)"
      }
    }
  ],
  "recipient": [
    {
      "identifier": {
        "system": "https://gematik.de/fhir/sid/telematik-id",
        "value": "3-2-APO-XanthippeVeilchenblau01"
      }
    }
  ],
  "basedOn": [
    {
      "reference": "Task/160.000.000.000.000.01/$accept?ac=777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea"
    }
  ],
  "payload": [
    {
      "contentString": "{ \"version\": 1, \"supplyOptionsType\": \"onPremise\", \"name\": \"Dr. Maximilian von Muster\", \"address\": [ \"wohnhaft bei Emilia Fischer\", \"Bundesallee 312\", \"123. OG\", \"12345 Berlin\" ], \"phone\": \"004916094858168\" }"
    }
  ]
}
ℹ️
Mit der Übergabe der Referenz auf den E-Rezept-Task inkl. des AccessCodes in `"reference": "Task/160.000.000.000.000.01/$accept?ac=*" ` ist die Apotheke berechtigt, das E-Rezept herunterzuladen und zu beliefern.
ℹ️
Bei der direkten Zuweisung wird im "contentString" des Payloads ein strukturierter Text übergeben. Im Beispiel übermittelt die E-Rezept-App die Details für eine Botenlieferung. Dies erfolgt für Versand mit supplyOptionsType = shipment und für die Filialabholung mit supplyOptionsType = onPremise

Response HTTP/1.1 201 Created Content-Type: application/fhir+json;charset=utf-8

{
  "resourceType": "Communication",
  "id": "cd4958ad-da92-453c-aef1-f3e02a4c6c73",
  "meta": {
    "profile": [
      "https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_PR_Communication_DispReq|1.4"
    ]
  },
  "status": "unknown",
  "extension": [
    {
      "url": "https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_EX_PrescriptionType",
      "valueCoding": {
        "code": "160",
        "system": "https://gematik.de/fhir/erp/CodeSystem/GEM_ERP_CS_FlowType",
        "display": "Muster 16 (Apothekenpflichtige Arzneimittel)"
      }
    }
  ],
  "recipient": [
    {
      "identifier": {
        "system": "https://gematik.de/fhir/sid/telematik-id",
        "value": "3-2-APO-XanthippeVeilchenblau01"
      }
    }
  ],
  "sender": {
    "identifier": {
      "system": "http://fhir.de/sid/gkv/kvid-10",
      "value": "X123456789"
    }
  },
  "sent": "2025-01-15T15:29:00.434+00:00",
  "basedOn": [
    {
      "reference": "Task/160.000.000.000.000.01/$accept?ac=777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea"
    }
  ],
  "payload": [
    {
      "contentString": "{ \"version\": 1, \"supplyOptionsType\": \"onPremise\", \"name\": \"Dr. Maximilian von Muster\", \"address\": [ \"wohnhaft bei Emilia Fischer\", \"Bundesallee 312\", \"123. OG\", \"12345 Berlin\" ], \"phone\": \"004916094858168\" }"
    }
  ]
}
⚠️
Die derzeitige Spezifikation sieht vor, dass der E-Rezept Token in .basedOn.reference angegeben wird. Dieser Token entspricht nicht der FHIR-Spezifikation, wodurch die FHIR-Validatoren einen Fehler werfen.
ℹ️
Bei der direkten Zuweisung wird im Payload ein strukturierter Text übergeben. Im Beispiel übermittelt die E-Rezept-App die Details für eine Botenlieferung. Dies erfolgt für Versand mit supplyOptionsType = shipment und für die Filialabholung mit supplyOptionsType = onPremise.

Code

Type Success

201

Created
Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wurde vor dem Senden der Antwort erstellt. Das Location-Header-Feld enthält die Adresse der erstellten Ressource.

Code

Type Warning

253

Die ID einer Ressource und die ID ihrer zugehörigen fullUrl stimmen nicht überein.
Hinweis: Es ist vorgesehen, dass zu einem späteren Zeitpunkt die fehlerhafte Validierung einer Ressource-ID zu einem Fehler statt zu einer Warnung führt.

254

Format der fullUrl ist ungültig.
Hinweis: Es ist vorgesehen, dass zu einem späteren Zeitpunkt das ungültige Format der fullUrl zu einem Fehler anstatt einem Warning führt.

Code

Type Error

400

Bad Request
Die Anfrage-Nachricht war fehlerhaft aufgebaut.

401

Unauthorized
Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im "WWW-Authenticate"-Header-Feld der Antwort übermittelt.

403

Forbidden
Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist.

405

Method Not Allowed
Die Anfrage darf nur mit anderen HTTP-Methoden (zum Beispiel GET statt POST) gestellt werden. Gültige Methoden für die betreffende Ressource werden im "Allow"-Header-Feld der Antwort übermittelt.

408

Request Timeout
Innerhalb der vom Server erlaubten Zeitspanne wurde keine vollständige Anfrage des Clients empfangen.

429

Too Many Requests
Der Client hat zu viele Anfragen in einem bestimmten Zeitraum gesendet.

500

Server Errors
Unerwarteter Serverfehler

Anwendungsfall Nachricht als Apotheke an einen Versicherten schicken

Uns als Apotheke wurde von einem Versicherten eine Nachricht zu einem E-Rezept geschickt. Der Versicherte fragt, ob ein Medikament vorrätig ist, dieses wurde in der Anfrage über dessen Pharmazentralnummer http://fhir.de/CodeSystem/ifa/pzn|06313728 benannt. Eine interne Warenbestandsprüfung hat ergeben, dass das Medikament vorrätig ist, nun schicken wir dem Versicherten eine Nachricht als Antwort nach der Frage zur Verfügbarkeit des Medikaments. Bieten wir einen Online-Verkauf von Medikamenten an, können wir dem Versicherten einen Link zusenden, um in den Warenkorb unserer Apotheke zu wechseln und dort den Einlöseprozess fortzusetzen.

Der Aufruf erfolgt als http-POST-Operation. Im Aufruf muss das während der Authentisierung erhaltene ACCESS_TOKEN im http-Request-Header Authorization übergeben werden. Im http-RequestBody wird die zu verschickende Nachricht als Communication-Ressource übergeben. Der Server prüft den Inhalt auf Zulässigkeit (z.B. um die Verbreitung von Viren und Schadcode zu unterbinden) und ergänzt Metainformationen wie den Sendezeitpunkt und die Angaben des Absenders aus dessen ACCESS_TOKEN. Die Nachricht steht nun zum Abruf durch den Empfänger bereit, der seine Nachrichten über eine GET-Abfrage herunterladen kann.

ℹ️
Die Validierung der JSON-payload wird nach folgendem Schema durchgeführt Reply JSON-Schema.

Request

URI

Method

POST

Requester

AVS E30615

Responder

eRp—​FD blue

HTTP Header

Content-Type: application/fhir+xml; charset=UTF-8
Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J
ℹ️
Mit dem ACCESS_TOKEN im Authorization-Header weist sich der Zugreifende als Leistungserbringer aus, im Token ist seine Rolle enthalten. Die Base64-Darstellung des Tokens ist stark gekürzt.
ℹ️
Im http-Header des äußeren http-Requests an die VAU (POST /VAU) sind die Header X-erp-user: l und X-erp-resource: Communication zu setzen.

Payload

<Communication xmlns="http://hl7.org/fhir">
    <id value="erp-communication-03-request-PostPharmacyToPatient"/>
    <meta>
        <profile value="https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_PR_Communication_Reply|1.4"/>
    </meta>
    <basedOn>
        <reference value="Task/160.000.000.000.000.01"/>
    </basedOn>
    <status value="unknown"/>
    <recipient>
        <identifier>
            <system value="http://fhir.de/sid/gkv/kvid-10"/>
            <value value="X123456789"/>
        </identifier>
    </recipient>
    <payload>
        <contentString value="{&quot;version&quot;: 1, &quot;supplyOptionsType&quot;: &quot;onPremise&quot;, &quot;info_text&quot;: &quot;Wir möchten Sie informieren, dass Ihre bestellten Medikamente zur Abholung bereitstehen. Den Abholcode finden Sie anbei.&quot;, &quot;pickUpCodeHR&quot;: &quot;12341234&quot;, &quot;pickUpCodeDMC&quot;: &quot;&quot;, &quot;url&quot;: &quot;&quot;}"/>
    </payload>
</Communication>
ℹ️
Die von der Apotheke übermittelte Antwort ist strukturiert in .payload.contentString nach gemSpec_eRp_DM abgelegt.
ℹ️
In der Extension .payload.extension:OfferedSupplyOptions kann das AVS die zur Verfügung gestellten Optionen zur Belieferung angeben. Im JSON unter "supplyOptionsType" wird die ausgewählte Belieferungsart angegeben.
ℹ️
Die Extension .payload.extension:AvailabilityStatus kann genutzt werden, um anzugeben, wann eine Belieferung möglich ist. Die möglichen Werte sind in https://simplifier.net/erezept-workflow/gem-erp-cs-availabilitystatus definiert.

Response HTTP/1.1 201 Created Content-Type: application/fhir+xml;charset=utf-8 Location: https://erp.zentral.erp.splitdns.ti-dienste.de/Communication/12346

<Communication xmlns="http://hl7.org/fhir">
    <id value="erp-communication-04-response-PostPharmacyToPatient"/>
    <meta>
        <profile value="https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_PR_Communication_Reply|1.4"/>
    </meta>
    <basedOn>
        <reference value="Task/160.000.000.000.000.01"/>
    </basedOn>
    <status value="unknown"/>
    <sent value="2025-01-15T15:29:00.434+00:00"/>
    <recipient>
        <identifier>
            <system value="http://fhir.de/sid/gkv/kvid-10"/>
            <value value="X123456789"/>
        </identifier>
    </recipient>
    <sender>
        <identifier>
            <system value="https://gematik.de/fhir/sid/telematik-id"/>
            <value value="3-2-APO-XanthippeVeilchenblau01"/>
        </identifier>
    </sender>
    <payload>
        <contentString value="{&quot;version&quot;: 1,&quot;supplyOptionsType&quot;: &quot;onPremise&quot;,&quot;info_text&quot;: &quot;Hallo, wir haben das Medikament vorraetig. Kommen Sie gern in die Filiale oder wir schicken einen Boten.&quot;,&quot;url&quot;: &quot;https://sonnenschein-apotheke.de&quot;}"/>
    </payload>
</Communication>
ℹ️
Der Server übernimmt beim Absenden der Nachricht den Sendezeitpunkt in die Communication-Ressource ` <sent value="2020-03-12T18:01:10+00:00" />`
ℹ️
Die Informationen zum Absender werden aus dem im Request übergebenen ACCESS_TOKEN übernommen, in diesem Fall die Telematik-ID der Apotheke in ` <sender>` als Absender der Nachricht.

Code

Type Success

201

Created
Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wurde vor dem Senden der Antwort erstellt. Das Location-Header-Feld enthält die Adresse der erstellten Ressource.

Code

Type Warning

253

Die ID einer Ressource und die ID ihrer zugehörigen fullUrl stimmen nicht überein.
Hinweis: Es ist vorgesehen, dass zu einem späteren Zeitpunkt die fehlerhafte Validierung einer Ressource-ID zu einem Fehler statt zu einer Warnung führt.

254

Format der fullUrl ist ungültig.
Hinweis: Es ist vorgesehen, dass zu einem späteren Zeitpunkt das ungültige Format der fullUrl zu einem Fehler anstatt einem Warning führt.

Code

Type Error

400

Bad Request
Die Anfrage-Nachricht war fehlerhaft aufgebaut.
Die Antwort "Referenced Task does not contain a KVNR" weist darauf hin, dass der Task ggf. gelöscht wurde.

401

Unauthorized
Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im "WWW-Authenticate"-Header-Feld der Antwort übermittelt.

403

Forbidden
Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist.

405

Method Not Allowed
Die Anfrage darf nur mit anderen HTTP-Methoden (zum Beispiel GET statt POST) gestellt werden. Gültige Methoden für die betreffende Ressource werden im "Allow"-Header-Feld der Antwort übermittelt.

408

Request Timeout
Innerhalb der vom Server erlaubten Zeitspanne wurde keine vollständige Anfrage des Clients empfangen.

429

Too Many Requests
Der Client hat zu viele Anfragen in einem bestimmten Zeitraum gesendet.

500

Server Errors
Unerwarteter Serverfehler

Anwendungsfall Auf neue Nachrichten im E-Rezept Fachdienst prüfen

Als Versicherter und als Apotheke möchte ich wissen, ob im Fachdienst "ungelesene" Nachrichten für mich vorhanden sind.

Der Aufruf erfolgt als http-GET-Operation auf die Ressource /Communication. Im Aufruf muss das während der Authentisierung erhaltene ACCESS_TOKEN im http-Request-Header Authorization für Filterung der an den Nutzer adressierten Nachrichten übergeben werden.

ℹ️
Der Aufruf ist aus Performance Gründen nicht für die regelmäßige Abfrage von Nachrichten vorgesehen. Es soll nur nach neuen Nachrichten geprüft werden, wenn der Nutzer aktiv eine Aktion ausführt, die eine solche Prüfung erfordert oder in der App ein "refresh" der Daten durchgeführt wird.

Request

URI

In der Aufruf-Adresse können Suchparameter gemäß https://www.hl7.org/fhir/communication.html#search angegeben werden. Im konkreten Beispiel soll nach Nachrichten gesucht werden, in denen kein received-Datum (?received=NULL) zur Kennzeichnung des erstmaligen Nachrichtenabrufs enthalten ist. Weitere Suchparameter können das Abrufdatum (z.B received=gt2020-03-01, Abgerufen nach dem 01.03.2020) oder eine Sortierung nach dem Sendedatum (_sort=-sent, Absteigende Sortierung) sein. Mehrere Suchparameter werden über das &-Zeichen miteinander kombiniert.

Es wird empfohlen, die KVNR des Versicherten als "recipient" zu übergeben, damit nur die Nachrichten angezeigt werden, die an den Versicherten adressiert sind. Andernfalls würden ebenso die an die Apotheke versendeten Nachrichten abgerufen werden, wenn diese ihre Nachrichten noch nicht abgeholt hat.

Method

GET

Requester

AVS E30615 FdV green

Responder

eRp—​FD blue

URL Parameter

sent, received, sender, recipient

HTTP Header

Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J
ℹ️
Mit dem ACCESS_TOKEN im Authorization-Header weist sich der Zugreifende als Versicherter bzw. Apotheke aus, im Token ist seine Versichertennummer bzw. die Telematik-ID der Apotheke enthalten, nach welcher die Einträge gefiltert werden. Die Base64-Darstellung des Tokens ist stark gekürzt.
ℹ️
Im http-Header des äußeren http-Requests an die VAU (POST /VAU) sind die Header X-erp-user: l ("l" für Abruf durch Apotheke, "v" für die E-Rezept-App) und X-erp-resource: Communication zu setzen.

Payload

-

Response HTTP/1.1 200 OK Content-Type: application/fhir+json;charset=utf-8

{
  "resourceType": "Bundle",
  "id": "erp-communication-07-response-GetMessages",
  "type": "searchset",
  "total": 1,
  "link": [
    {
      "relation": "self",
      "url": "https://erp.zentral.erp.splitdns.ti-dienste.de/Communication?received=NULL"
    }
  ],
  "entry": [
    {
      "fullUrl": "https://erp.zentral.erp.splitdns.ti-dienste.de/Communication/cd4958ad-da92-453c-aef1-f3e02a4c6c73",
      "resource": {
        "resourceType": "Communication",
        "id": "cd4958ad-da92-453c-aef1-f3e02a4c6c73",
        "meta": {
          "profile": [
            "https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_PR_Communication_DispReq|1.4"
          ]
        },
        "status": "unknown",
        "extension": [
          {
            "url": "https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_EX_PrescriptionType",
            "valueCoding": {
              "code": "160",
              "system": "https://gematik.de/fhir/erp/CodeSystem/GEM_ERP_CS_FlowType",
              "display": "Muster 16 (Apothekenpflichtige Arzneimittel)"
            }
          }
        ],
        "recipient": [
          {
            "identifier": {
              "system": "https://gematik.de/fhir/sid/telematik-id",
              "value": "3-2-APO-XanthippeVeilchenblau01"
            }
          }
        ],
        "sender": {
          "identifier": {
            "system": "http://fhir.de/sid/gkv/kvid-10",
            "value": "X123456789"
          }
        },
        "sent": "2025-01-15T15:29:00.434+00:00",
        "basedOn": [
          {
            "reference": "Task/160.000.000.000.000.01/$accept?ac=777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea"
          }
        ],
        "payload": [
          {
            "contentString": "{ \"version\": 1, \"supplyOptionsType\": \"onPremise\", \"name\": \"Dr. Maximilian von Muster\", \"address\": [ \"wohnhaft bei Emilia Fischer\", \"Bundesallee 312\", \"123. OG\", \"12345 Berlin\" ], \"phone\": \"004916094858168\" }"
          }
        ]
      }
    }
  ]
}
ℹ️
Die abgerufene Nachricht enthält kein Element received, da die Nachricht erstmalig vom E-Rezept-Fachdienst abgerufen wurde. Dieses Attribut received wurde beim Abruf durch den Fachdienst auf dessen aktuelle Systemzeit in "sent": "2020-03-12T18:01:10+00:00" aktualisiert, sodass ein erneuter Aufruf mit dem Filter ?received=NULL kein Ergebnis liefert, da keine neuen bzw. ungelesenen Nachrichten vorhanden sind.
ℹ️
In "value": "X234567890" ist die Empfänger-ID (in diesem Fall Versicherten-ID) des Adressaten angegeben, über die die Nachrichten beim Abruf gemäß der Nutzerkennung im übergebenen ACCESS_TOKEN gefiltert werden.
ℹ️
Dies sei die Antwort der Apotheke auf eine verbindliche Zuweisung, dann erhält die E-Rezept-App vom Warenwirtschaftssystem der Apotheke ebenfalls einen strukturierten Text im "contentString". In diesem sind u.a. Details für die Abholung in der Filiale wie z.B. der Abholcode pickUpCodeHR angegeben.

Code

Type Success

200

OK
Die Anfrage wurde erfolgreich bearbeitet. Die Response enthält die angefragten Daten.

Code

Type Error

400

Bad Request
Wird zurückgegeben, wenn ungültige Daten an den Server geschickt werden.

401

Unauthorized
Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im "WWW-Authenticate"-Header-Feld der Antwort übermittelt.

403

Forbidden
Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist.

404

Not found
Es wurde kein passender Eintrag gefunden.

500

Server Errors
Unerwarteter Serverfehler

Anwendungsfall Alle Nachrichten vom E-Rezept-Fachdienst abrufen

Als Apotheke möchten wir alle Nachrichten des Monats April 2020 abrufen, um uns einen Überblick der bisherigen E-Rezept-Anfragen zu beschaffen.

Request

URI

  1. Mit dem URL-Paramter recipient=TelematikID können die Nachrichten serverseitig nach der TelematikID gefiltert werden, um nur Nachrichten abzurufen, die AN die Apotheke gerichtet sind. Andernfalls würden ebenso die von der Apotheke versendeten Nachrichten abgerufen werden.

  2. Im konkreten Beispiel soll nach Nachrichten gesucht werden, die älter als 30. April 2020 sind (?sent=lt2020-04-30).
    Eine Suche nach Nachrichten innerhalb eines Intervalls ist nicht möglich (?sent=gt2020-04-01&sent=lt2020-04-30).

  3. Vgl. auch https://www.hl7.org/fhir/communication.html#search

Method

GET

Requester

AVS E30615

Responder

eRp—​FD blue

URL Parameter

sent, received, sender, recipient

HTTP Header

Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J
ℹ️
Mit dem ACCESS_TOKEN im Authorization-Header weist sich der Zugreifende als Versicherter bzw. Apotheke aus, im Token ist seine Versichertennummer bzw. die Telematik-ID der Apotheke enthalten, nach welcher die Einträge gefiltert werden. Die Base64-Darstellung des Tokens ist stark gekürzt.
ℹ️
Im http-Header des äußeren http-Requests an die VAU (POST /VAU) sind die Header X-erp-user: l ("l" für Abruf durch Apotheke, "v" für die E-Rezept-App) und X-erp-resource: Communication zu setzen.

Payload

-

Der E-Rezept-Fachdienst verarbeitet Zeitstempel nach deutscher Zeit.

Response HTTP/1.1 200 OK Content-Type: application/fhir+xml;charset=utf-8

<Bundle xmlns="http://hl7.org/fhir">
    <id value="erp-communication-08-response-GetAllMessages"/>
    <type value="searchset"/>
    <total value="1"/>
    <link>
        <relation value="self"/>
        <url value="https://erp.zentral.erp.splitdns.ti-dienste.de/Communication?_sort=sent&amp;_count=50&amp;sent=gt2025-01-14"/>
    </link>
    <entry>
        <fullUrl value="https://erp.zentral.erp.splitdns.ti-dienste.de/Communication/a3384a5a-4180-4be5-b6e4-df80a88554dd"/>
        <resource>
            <Communication>
                <id value="a3384a5a-4180-4be5-b6e4-df80a88554dd"/>
                <meta>
                    <profile value="https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_PR_Communication_DispReq|1.4"/>
                </meta>
                <extension url="https://gematik.de/fhir/erp/StructureDefinition/GEM_ERP_EX_PrescriptionType">
                    <valueCoding>
                        <system value="https://gematik.de/fhir/erp/CodeSystem/GEM_ERP_CS_FlowType"/>
                        <code value="160"/>
                        <display value="Muster 16 (Apothekenpflichtige Arzneimittel)"/>
                    </valueCoding>
                </extension>
                <basedOn>
                    <reference value="Task/160.000.000.000.000.01/$accept?ac=777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea"/>
                </basedOn>
                <status value="unknown"/>
                <sent value="2025-01-15T15:29:00.434+00:00"/>
                <recipient>
                    <identifier>
                        <system value="https://gematik.de/fhir/sid/telematik-id"/>
                        <value value="3-2-APO-XanthippeVeilchenblau01"/>
                    </identifier>
                </recipient>
                <sender>
                    <identifier>
                        <system value="http://fhir.de/sid/gkv/kvid-10"/>
                        <value value="X123456789"/>
                    </identifier>
                </sender>
                <payload>
                    <contentString value="{ &quot;version&quot;: 1, &quot;supplyOptionsType&quot;: &quot;onPremise&quot;, &quot;name&quot;: &quot;Dr. Maximilian von Muster&quot;, &quot;address&quot;: [ &quot;wohnhaft bei Emilia Fischer&quot;, &quot;Bundesallee 312&quot;, &quot;123. OG&quot;, &quot;12345 Berlin&quot; ], &quot;phone&quot;: &quot;004916094858168&quot; }"/>
                </payload>
            </Communication>
        </resource>
        <search>
            <mode value="match"/>
        </search>
    </entry>
</Bundle>
ℹ️
<total value="391"/> gibt Auskunft über die Anzahl der Ergebnis-Einträge.
ℹ️
Der E-Rezept-Fachdienst setzt in <relation value="next"/> ein Paging ein, mit dem die ersten 50 Einträge des gesamten Suchergebnisses zurückgegeben werden. Die nächsten 50 Ergebnis-Einträge werden über die nachfolgende URL next abgerufen.
ℹ️
Die Eigenschaft <received value="2020-04-12T18:02:10+00:00" /> gibt an, dass diese Nachricht bereits gelesen bzw. schon einmal heruntergeladen wurde.
ℹ️
Das Beispiel ist der Übersichtlichkeit halber bei […​] gekürzt, weitere Nachrichten-Einträge folgen als entry-Elemente.

Code

Type Success

200

OK
Die Anfrage wurde erfolgreich bearbeitet. Die Response enthält die angefragten Daten.

Code

Type Error

400

Bad Request
Wird zurückgegeben, wenn ungültige Daten an den Server geschickt werden.

401

Unauthorized
Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im "WWW-Authenticate"-Header-Feld der Antwort übermittelt.

403

Forbidden
Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist.

404

Not found
Es wurde kein passender Eintrag gefunden.

500

Server Errors
Unerwarteter Serverfehler

Anwendungsfall Nachricht als Apotheke löschen

Als Apotheke möchten wir eine von uns versendete Nachricht auf dem Fachdienst entfernen.

Request

URI

Method

DELETE

Requester

AVS E30615

Responder

eRp—​FD blue

HTTP Header

Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J
ℹ️
Mit dem ACCESS_TOKEN im Authorization-Header weist sich der Zugreifende als Versicherter bzw. Apotheke aus, im Token ist seine Versichertennummer bzw. die Telematik-ID der Apotheke enthalten, nach welcher die Einträge gefiltert werden. Die Base64-Darstellung des Tokens ist stark gekürzt.
ℹ️
Im http-Header des äußeren http-Requests an die VAU (POST /VAU) sind die Header X-erp-user: l ("l" für Abruf durch Apotheke, "v" für die E-Rezept-App) und X-erp-resource: Communication zu setzen.

Payload

-

Response

HTTP/1.1 204 No Content
Warning: 'Deleted message delivered at 2020-07-01 10:30:00'
ℹ️
Wenn die Nachricht vor dem Löschen bereits durch den Versicherten abgerufen wurde, wird zusätzlich ein Response-Header mit einer entsprechenden Warnung zurückgegeben.

Code

Type Success

204

No Content
Die Anfrage wurde erfolgreich bearbeitetdie, Antwort enthält jedoch bewusst keine Daten.

Code

Type Error

400

Bad Request
Wird zurückgegeben, wenn ungültige Daten an den Server geschickt werden.

401

Unauthorized
Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im "WWW-Authenticate"-Header-Feld der Antwort übermittelt.

403

Forbidden
Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist.

404

Not found
Es wurde kein passender Eintrag gefunden.

500

Server Errors
Unerwarteter Serverfehler