Skip to content

Latest commit

 

History

History
1036 lines (996 loc) · 47.9 KB

erp_versicherte.adoc

File metadata and controls

1036 lines (996 loc) · 47.9 KB

gematik logo

E-Rezept API Dokumentation für Versicherte

Hier dokumentiert die gematik die Nutzung der Schnittstellen rund um das E-Rezept aus Sicht der Versicherten, die Ihre E-Rezepte verwalten und einlösen möchten.

1. Anwendungsfälle E-Rezept als Versicherter verwalten

Der Versicherte hat mit der E-Rezept-App die Möglichkeit seine E-Rezepte zu verwalten, Zugriffsprptokolle einzusehen und sich zusätzliche Informationen über das herausgegebene Medikament herunterzuladen.
Verzichtet er bei der HAndhabe des E-Rezepts auf einen Papierausdruck in der Arztpraxis, erfolgt die Einlösung des E-Rezeptes ebenso über die E-Rezept-App. Dafür generiert die E-Rezept-App aus den heruntergeladenen E-Rezept-Daten einen 2D-Code (DataMatrix-Darstellung), den er in der Apotheke vom Bildschirm seines Smartphones abscannen lässt. Mit den abgescannten Informationen erhält der Apotheker die Adresse und Zugriffsberechtigung des E-Rezepts, um seinerseits das E-Rezept herunterzuladen und den Versicherten dann mit dem Medikament versorgen zu dürfen.

Einige der nachfolgenden UseCases sind auch für Vertreter des Versicherten vorgesehen, dabei sind sie bspw. berechtigt, ein E-Rezept einzusehen bzw. herunterzuladen, wenn sie im Wissen um den zugehörigen AccessCode sind, den sie vom Versicherten mitgeteilt bekommen (z.B. durch abscannen des 2D-Codes vom Smartphone des Versicherten).

Die Kommunikation zwischen Versicherten und einer Apotheke über E-Rezepte erfolgt ebenfalls über den Dienst zur Verwaltung der E-Rezepte. Aus Gründen der besseren Lesbarkeit und der Darstellung der Zusammenhänge zwischen Anfrage zur Verfügbarkeit eines Medikaments und der Antwort einer Apotheke erfolgt die Beschreibung über das an dieser Stelle verlinkte Dokument.

2. Profilierung

In diesen Anwendungsfällen werden die FHIR-Resourcen "Task": http://hl7.org/fhir/task.html und AuditEvent https://www.hl7.org/fhir/auditevent.html verwendet. Die Ressource Bundle https://www.hl7.org/fhir/bundle.html kommt in ihrem Standardprofil als Suchergebnis und zusätzlich als signiertes Dokument der Verordnung und als Quittung zur Anwendung Diese werden für das E-Rezept profiliert und werden hier spezifiziert: Task: https://simplifier.net/e-rezept/erxtask AuditEvent: https://simplifier.net/e-rezept/erxauditevent


3. Alle E-Rezepte ansehen

Als Versicherter möchte ich all meine E-Rezepte einsehen.

fdv E-Rezept-App

HTTP-Request

curl -XGET
  -H "Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J" (1)
  https://prescriptionserver.telematik/Task
  1. Mit dem ID Token im Authorization-Header weist sich der Zugreifende als Versicherter aus, im Token ist seine Versichertennummer enthalten. Die Base64-Darstellung des Tokens ist stark gekürzt.

fachdienst E-Rezept-Fachdienst

HTTP-Response

HTTP/1.1 200 OK
Content-Type: application/fhir+json;charset=utf-8
Content-Location: https://prescriptionserver.telematik/Bundle/f5ba6eaf-9052-42f6-ac4e-fadceed7293b

{
  "resourceType": "Bundle",
  "id": "f5ba6eaf-9052-42f6-ac4e-fadceed7293b",
  "meta": {
    "lastUpdated": "2020-03-01T07:02:37.836+00:00"
  },
  "type": "searchset",
  "total": 2,
  "link": [{
    "relation": "self",
    "url": "https://prescriptionserver.telematik/Task/"
  }],
  "entry": [{
    "fullUrl": "https://prescriptionserver.telematik/Task/588780",
    "resource": {
      "resourceType":"Task",
      "id":"588780",
      "meta":{
        "versionId":"2",
        "lastUpdated":"2020-02-18T10:05:05.038+00:00",
        "source":"#AsYR9plLkvONJAiv",
        "profile": [
          "https://gematik.de/fhir/StructureDefinition/erxTask"
        ]
      },
      "identifier": [{
        "use":"official",
        "system":"https://gematik.de/fhir/Namingsystem/prescriptionID",
        "value":"160.123.456.789.123.58"
      },{
        "use":"official",
        "system":"https://gematik.de/fhir/Namingsystem/accessCode",
        "value":"777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea" (1)
      },{
        "use":"official",
        "system":"http://fhir.de/NamingSystem/gkv/kvid-10",
        "value":"X123456789"
      }],
      "intent":"order",
      "status":"ready",
      "extension": [ {
        "url":"https://gematik.de/fhir/StructureDefinition/PrescriptionType",
        valueCodeableConcept":{
          "coding": [ {
            "system":"https://gematik.de/fhir/CodeSystem/FLOWTYPE",
            "code":"160",
            "display":"Muster 16 (Apothekenpflichtige Arzneimittel)"
          } ]
        }
      }, {
        "url":"https://gematik.de/fhir/StructureDefinition/ExpiryDate",
          "valueDateTime": "2020-06-02"
      }, {
        "url":"https://gematik.de/fhir/StructureDefinition/AcceptDate",
          "valueDateTime": "2020-04-01"
      } ],
      "authoredOn":"2020-03-02T08:25:05+00:00",
      "lastModified":"2020-03-02T08:45:05+00:00",
      "performerType": [{
        "coding": [{
          "system":"http://terminology.hl7.org/CodeSystem/task-performer-type",
          "code":"1.2.276.0.76.4.32",
          "display":"Apotheke" (3)
        }],
        "text":"Apotheke"
      }],
      "input": [
        "type": {
          "coding": [{
            "system":"https://gematik.de/fhir/CodeSystem/DOCUMENTTYPE",
            "code":"2"
          }]
        },
        "valueString": "f8c2298f-7c00-4a68-af29-8a2862d55d43" (4)
      ]
    },
    "search": {
      "mode": "match"
    }
  },{
    "resource": {
      "resourceType":"Bundle",
      "id":"f8c2298f-7c00-4a68-af29-8a2862d55d43",
      "meta":{
        "lastUpdated":"2020-02-03T12:30:02Z",
        "profile": [
          "https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Bundle|1.0.0"
        ]
      },
      "identifier":{
          "system":"urn:ietf:rfc:3986",
          "value":"281a985c-f25b-4aae-91a6-41ad744080b0"
      },
      "type":"document",
      "timestamp":"2020-02-03T12:30:02Z",
      "entry": [{
        "fullUrl":"http://pvs.praxis-topp-gluecklich.local/fhir/Composition/ed52c1e3-b700-4497-ae19-b23744e29876",
        "resource":{
          "resourceType":"Composition",
          "id":"ed52c1e3-b700-4497-ae19-b23744e29876",
          "meta":{
            "profile": [
              "https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Composition|1.0.0"
... (5)
                      ]}}}],
      "signature": { (6)
        "type": {
          "system": "http://hl7.org/fhir/ValueSet/signature-type",
          "code": "1.2.840.10065.1.12.1.5"
        },
        "when": "2020-03-20T07:31:34.328+00:00",
        "who": "https://prescriptionserver.telematik/signature/verification",
        "data": "eyJ0eXAiOiJKV1MiLCJhbGciOiJFUzI1NiIsIng1dSI6Imh0dHBzOi8vcHJlc2NyaXB0aW9uc2VydmVyLnRlbGVtYXRpay9zaWduYXR1cmUvY2VydGlmaWNhdGUifQ
        .
        eyJyZXNvdXJjZVR5cGUiOiJCdW5kbGUiLCJpZCI6ImY4YzIyOThmLTdjMDAtNGE2OC1hZjI5LThhMjg2MmQ1NWQ0MyIsImlkZW50aWZpZXIiOnsic3lzdGVtIjoiaHR0cHM6Ly9nZW1hdGlrLmRlL1ZhbHVlU2V0L0VSWF9QUkVTQ1JJUFRJT05fSUQiLCJ2YWx1ZSI6Ik0xNi4xMjMuNDU2Ljc4OS4xMjMuMTMifSwidHlwZSI6ImRvY3VtZW50IiwiZW50cnkiOlt7ImZ1bGxVcmwiOiJodHRwOi8vcHZzLnByYXhpcy10b3BwLWdsdWVja2xpY2gubG9jYWwvZmhpci9Db21wb3NpdGlvbi9lZDUyYzFlMy1iNzAwLTQ0OTctYWUxOS1iMjM3NDRlMjk4NzYiLCJyZXNvdXJjZSI6eyJyZXNvdXJjZVR5cGUiOiJDb21wb3NpdGlvbiJ9fSx7ImZ1bGxVcmwiOiJodHRwOi8vcHZzLnByYXhpcy10b3BwLWdsdWVja2xpY2gubG9jYWwvZmhpci9NZWRpY2F0aW9uUmVxdWVzdC9lOTMwY2RlZS05ZWI1LTRiNDQtODhiNS0yYTE4YjY5ZjNiOWEiLCJyZXNvdXJjZSI6eyJyZXNvdXJjZVR5cGUiOiJNZWRpY2F0aW9uUmVxdWVzdCJ9fV19
        .
        SSBhbSBhIHNpZ25hdHVyZSE="
      }
    },
    "search": {
      "mode": "include"
    }
  }]
}
  1. Mit dem AccessCode wird der Zugriff für Vertreter und Apotheker gesteuert, in dem der Versicherte diesen AccessCode z.B. als QR-Code weitergibt

  2. Der Prozesstyp referenziert die Workflow-Definition, in diesem Fall den Prozess für apothekenpflichtige Arzneimittel

  3. Mit dieser Angabe kann dem Versicherten ein Hinweis angezeigt werden, wo er das E-Rezept einlösen kann (bspw. Apotheke oder Sanitätshaus)

  4. Hier verweist der Task auf das signierte E-Rezept-Bundle im zurückgegebenen Bundle.

  5. Aus Gründen der besseren Lesbarkeit ist das E-Rezept-Bundle hier nicht vollständig dargestellt. Das komplette Beispiel kann hier eingesehen werden: https://simplifier.net/eRezept/Bundle-example/~json.

  6. Bei der Rückgabe an den Versicherten wird der ärztliche Signaturanteil des E-Rezept-Bundles durch eine serverseitige Sinatur in JWS-Format ersetzt. Aus Gründen der besseren Lesbarkeit mit separaten Zeilenumbrüchen zwischen den "."-separierten Header.Payload.Signature

Der Aufruf erfolgt als http-GET-Operation auf die Ressource /Task. Im Aufruf muss das während der Authentisierung erhaltene ID_TOKEN im http-Request-Header Authorization übergeben werden, der Fachdienst filtert die Task-Einträge nach der im ID_TOKEN enthaltenen KVNR des Versicherten. Werden ein oder mehrere Tasks gefunden, erfolgt die Rückgabe eins Tasks immer zusammen mit dem entsprechenden, signierten E-Rezept-Datensatz zu diesem Task, welcher die Verordnungsinformationen des E-Rezepts enthält.

Code

Type Success

200

OK
Die Anfrage wurde erfolgreich bearbeitet. Die angeforderten Ressourcen sind im Response-Body enthalten.

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.

429

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

500

Server Errors
Unerwarteter Serverfehler


4. Ein einzelnes E-Rezept abrufen und in der Apotheke einlösen

Der Zugriff auf ein einzelnes E-Rezept ist durch den Versicherten mit Nachweis seiner Identität immer zulässig. Als Vertreter ist der Zugriff auf ein E-Rezept eines anderen Versicherten nur gestattet, wenn der Vertreter in Kenntnis des beim Einstellen des E-Rezepts erzeugten AccessCodes ist.

fdv E-Rezept-App

HTTP-Request

curl -XGET
  -H "Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J" (1)
  -H "X-AccessCode: 777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea" (2)
  https://prescriptionserver.telematik/Task/4711
  1. Mit dem ID Token im Authorization-Header weist sich der Zugreifende als Versicherter aus, im Token ist seine Versichertennummer enthalten. Die Base64-Darstellung des Tokens ist stark gekürzt.

  2. Als Vertreter (wenn im E-Rezept eine andere Versichertennummer als im Token des Zugreifenden angegeben ist) muss im http-Header der AccessCode übergeben werden

fachdienst E-Rezept-Fachdienst

HTTP-Response

HTTP/1.1 200 OK
Content-Type: application/fhir+json;charset=utf-8
Content-Location:
  https://prescriptionserver.telematik/Task/4711
{
  "resourceType": "Bundle",
  "id": "f5ba6eaf-9052-42f6-ac4e-fadceed7293b",
  "meta": {
    "lastUpdated": "2020-03-01T07:02:37.836+00:00",
  },
  "type": "searchset",
  "total": 2,
  "link": [{
    "relation": "self",
    "url": "https://prescriptionserver.telematik/Task/4711"
  }],
  "entry": [{
    "fullUrl": "https://prescriptionserver.telematik/Task/4711",
    "resource": {
      "resourceType":"Task",
      "id":"4711",
      "meta":{
        "versionId":"2",
        "lastUpdated":"2020-02-18T10:05:05.038+00:00",
        "source":"#AsYR9plLkvONJAiv"
        "profile": [
          "https://gematik.de/fhir/StructureDefinition/erxTask"
        ]
      },
      "identifier": [{
        "use":"official",
        "system":"https://gematik.de/fhir/Namingsystem/prescriptionID",
        "value":"160.123.456.789.123.58"
      },{
        "use":"official",
        "system":"https://gematik.de/fhir/Namingsystem/accessCode",
        "value":"777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea" (1)
      },{
        "use":"official",
        "system":"http://fhir.de/NamingSystem/gkv/kvid-10",
        "value":"X123456789" (2)
      }],
      "intent":"order",
      "status":"ready",
      "extension": [ {
        "url":"https://gematik.de/fhir/StructureDefinition/PrescriptionType",
        valueCodeableConcept":{
          "coding": [ {
            "system":"https://gematik.de/fhir/CodeSystem/FLOWTYPE",
            "code":"160",
            "display":"Muster 16 (Apothekenpflichtige Arzneimittel)"
          } ]
        }
      }, {
        "url":"https://gematik.de/fhir/StructureDefinition/ExpiryDate",
          "valueDateTime": "2020-06-02"
      }, {
        "url":"https://gematik.de/fhir/StructureDefinition/AcceptDate",
          "valueDateTime": "2020-04-01"
      } ],
      "authoredOn":"2020-03-02T08:25:05+00:00",
      "lastModified":"2020-03-02T08:45:05+00:00",
      "performerType": [{
        "coding": [{
          "system":"http://terminology.hl7.org/CodeSystem/task-performer-type",
          "code":"1.2.276.0.76.4.32",
          "display":"Apotheke" (4)
        }],
        "text":"Apotheke"
      }],
      "input": [
        "type": {
          "coding": [{
            "system":"https://gematik.de/fhir/CodeSystem/DOCUMENTTYPE",
            "code":"2"
          }]
        },
        "valueString": "f8c2298f-7c00-4a68-af29-8a2862d55d43" (5)
      ]
    },
    "search": {
      "mode": "match"
    }
  },{
    "resource": {
      "resourceType":"Bundle",
      "id":"f8c2298f-7c00-4a68-af29-8a2862d55d43",
      "meta":{
        "lastUpdated":"2020-02-03T12:30:02Z",
        "profile": [
          "https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Bundle|1.0.0"
        ]
      },
      "identifier":{
        "system":"urn:ietf:rfc:3986",
        "value":"281a985c-f25b-4aae-91a6-41ad744080b0"
      },
      "type":"document",
      "timestamp":"2020-02-03T12:30:02Z",
      "entry": [{
        "fullUrl":"http://pvs.praxis-topp-gluecklich.local/fhir/Composition/ed52c1e3-b700-4497-ae19-b23744e29876",
        "resource":{
          "resourceType":"Composition",
          "id":"ed52c1e3-b700-4497-ae19-b23744e29876",
          "meta":{
            "profile": [
              "https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Composition|1.0.0"
... (6)
                      ]}}}],
      "signature": { (7)
        "type": {
          "system": "http://hl7.org/fhir/ValueSet/signature-type",
          "code": "1.2.840.10065.1.12.1.5"
        },
        "when": "2020-03-20T07:31:34.328+00:00",
        "who": "https://prescriptionserver.telematik/signature/verification",
        "data": "eyJ0eXAiOiJKV1MiLCJhbGciOiJFUzI1NiIsIng1dSI6Imh0dHBzOi8vcHJlc2NyaXB0aW9uc2VydmVyLnRlbGVtYXRpay9zaWduYXR1cmUvY2VydGlmaWNhdGUifQ
        .
        eyJyZXNvdXJjZVR5cGUiOiJCdW5kbGUiLCJpZCI6ImY4YzIyOThmLTdjMDAtNGE2OC1hZjI5LThhMjg2MmQ1NWQ0MyIsImlkZW50aWZpZXIiOnsic3lzdGVtIjoiaHR0cHM6Ly9nZW1hdGlrLmRlL1ZhbHVlU2V0L0VSWF9QUkVTQ 1JJUFRJT05fSUQiLCJ2YWx1ZSI6Ik0xNi4xMjMuNDU2Ljc4OS4xMjMuMTMifSwidHlwZSI6ImRvY3VtZW50IiwiZW50cnkiOlt7ImZ1bGxVcmwiOiJodHRwOi8vcHZzLnByYXhpcy10b3BwLWdsdWVja2xpY2gubG9jYWwvZmhpci 9Db21wb3NpdGlvbi9lZDUyYzFlMy1iNzAwLTQ0OTctYWUxOS1iMjM3NDRlMjk4NzYiLCJyZXNvdXJjZSI6eyJyZXNvdXJjZVR5cGUiOiJDb21wb3NpdGlvbiJ9fSx7ImZ1bGxVcmwiOiJodHRwOi8vcHZzLnByYXhpcy10b3BwLWd sdWVja2xpY2gubG9jYWwvZmhpci9NZWRpY2F0aW9uUmVxdWVzdC9lOTMwY2RlZS05ZWI1LTRiNDQtODhiNS0yYTE4YjY5ZjNiOWEiLCJyZXNvdXJjZSI6eyJyZXNvdXJjZVR5cGUiOiJNZWRpY2F0aW9uUmVxdWVzdCJ9fV19
        .
        SSBhbSBhIHNpZ25hdHVyZSE="
      }
    }
    "search": {
      "mode": "include"
    }
  }]
}
  1. Mit dem AccessCode wird der Zugriff für Vertreter und Apotheker gesteuert, in dem der Versicherte diesen AccessCode z.B. als QR-Code weitergibt

  2. An dieser Stelle ist die KVNR des Versicherten enthalten, nach welcher die Rezept-Tasks gefiltert wurden. Im Ergebnis wurde nur ein einzelnes E-Rezept gefunden

  3. Der Prozesstyp referenziert die Workflow-Definition, in diesem Fall den Prozess für apothekenpflichtige Arzneimittel

  4. Mit dieser Angabe kann dem Versicherten ein Hinweis angezeigt werden, wo er das E-Rezept einlösen kann (bspw. Apotheke oder Sanitätshaus)

  5. Hier verweist der Task auf das signierte E-Rezept-Bundle im zurückgegebenen Bundle.

  6. Aus Gründen der besseren Lesbarkeit ist das E-Rezept-Bundle hier nicht vollständig dargestellt. Das komplette Beispiel kann hier eingesehen werden: https://simplifier.net/eRezept/Bundle-example/~json.

  7. Bei der Rückgabe an den Versicherten wird der ärztliche Signaturanteil des E-Rezept-Bundles durch eine serverseitige Sinatur in JWS-Format ersetzt. Aus Gründen der besseren Lesbarkeit mit separaten Zeilenumbrüchen zwischen den "."-separierten Header.Payload.Signature

Der Aufruf erfolgt als http-GET-Operation auf eine konkrete Ressource /Task/<task_id>. Im Aufruf muss das während der Authentisierung erhaltene ID_TOKEN im http-Request-Header Authorization übergeben werden. Der Aufruf kann auch durch einen Vertreter des Versicherten erfolgen, hierbei wird lediglich die Rolle Versicherter im ID_TOKEN geprüft. Um die Berechtigung für den Zugriff auf einen Task mit einer fremden KVNR nachzuweisen, muss der Zugreifende den richtigen AccessCode im http-Request-Header X-AccessCode übergeben. Die Rückgabe eins Tasks erfolgt immer zusammen mit dem entsprechenden, signierten E-Rezept-Datensatz zu diesem Task, welcher die Verordnungsinformationen des E-Rezepts enthält.

Code

Type Success

200

OK
Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wird im ResponseBody bereitgestellt.

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.

404

Not found
Die adressierte Ressource wurde nicht gefunden, die übergebene ID ist ungültig.

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.

429

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

500

Server Errors
Unerwarteter Serverfehler


4.1. Informationen an den Apotheker übergeben.

Um den Apotheker in die Lage zu versetzen, das E-Rezept einsehen zu können, müssen ihm die folgenden zwei Parameter für seinen Abruf übergeben werden, z.B. in Form eines QR-Codes oder DataMatrix-Codes:

Diese Informationen lassen sich nach den Vorgaben in ISO/IEC 18004:2015 in einen QR-Code oder gemäß ISO/IEC 16022:2006 in einen DataMatrix-Code transformieren.

Task/4711/$accept?ac=777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea

datamatrix sample

In DataMatrix-Darstellung gemäß ISO/IEC 16022:2006

Sammlung von drei E-Rezept-Referenzen in einem 2D-Code
[{Task/4711/$accept?ac=777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea}, {Task/4712/$accept?ac=d1b8fdaa9e1be1b14a6302457468136923ecbfc7c48f88af5997f4271b736d1b}, {Task/4713/$accept?ac=2a38b04e400ec97183bd00b98bb74fd73c9d2afa2a54f6f841e527ecb0df3e0c}]

datamatrix sample 3

In DataMatrix-Darstellung gemäß ISO/IEC 16022:2006

Task/4711/$accept?ac=777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea

qr sample

In QR-Code-Darstellung gemäß ISO/IEC 18004:2006


4.2. Eine Apotheke aus dem Apotheken-Verzeichnis auswählen.

Als Versicherter möchte ich eine Apotheke aus einem Verzeichnis wählen, um ihr eine Verfügbarkeitsanfrage zu meinem E-Rezept zu schicken oder ihr ein E-Rezept direkt zuzuweisen. Der Verzeichnisdienst der Telematikinfrastruktur führt eine Liste aller (Zahn-)Arztpraxen, Krankenhäuser und Apotheken in Deutschland, in der nach einer Apotheke über z.B. den Namen oder die Postleitzahl für eine Umgebungssuche gesucht werden kann. Im folgenden Beispiel wird die Suche nach Apotheken im Postleitzahlengebiet 10117 ausgeführt.
Hinweis: um ausschließlich nach Apotheken zu suchen, muss der folgende Typ-Filter immer angegeben werden: type=urn:oid|1.2.276.0.76.4.32

Folgende Suchalternativen sind ebenfalls möglich:

fdv E-Rezept-App

HTTP-Request
curl -XGET
  -H "Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J" (1)
  https://directoryservice.telematik/Organization?type=urn:oid|1.2.276.0.76.4.32&address-postalcode=10117 (2)
  1. Im Aufruf muss ein ID_TOKEN im Authorization-Header des http-Requests übergeben werden, um die Rolle "Versicherter" zu prüfen, damit keine unberechtigten Zugriffe von außerhalb des deutschen Gesundheitswesens erfolgen. Es findet weder eine Protokollierung der zugreifenden Nutzers noch eine Filterung auf Basis der Nutzeridentität statt.

  2. In der Aufruf-Adresse können Suchparameter gemäß https://www.hl7.org/fhir/organization.html#search angegeben werden. Im konkreten Beispiel soll nach Apotheken (Organization) im Postleitzahlengebiet 10117 gefiltert werden. Weitere Suchparameter können bspw. der Name der Apotheke (z.B. name=Bahnhofsapotheke) oder eine Ortsangabe (z.B. address-city=Köln bzw. address-city=K%C3%B6ln) sein. Mehrere Suchparameter werden über das &-Zeichen miteinander kombiniert.

fachdienst E-Rezept-Fachdienst

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

{
  "resourceType": "Bundle",
  "id": "f8125c3c-5e51-43e3-b3f4-fce87474f6dc",
  "meta": {
    "lastUpdated": "2020-03-30T13:40:46.970+00:00"
  },
  "type": "searchset",
  "total": 2, (1)
  "link": [ {
    "relation": "self",
    "url": "http://directoryservice.telematik/Organization?type=urn:oid

Mit dem Suchergebnis kennt der Versicherte nun die Apotheken in seinem Umkreis (unter der Annahme er hat nach Apotheken im PLZ-Bereich gesucht, in dem er sich befindet). Eine Navigationsanwendung könnte ihm nun den kürzesten Weg zu einer der beiden Apotheken berechnen, unter folgendem Link stellen wir dar, wie der Apotheke eine Nachricht geschickt werden kann.


5. Abgabeinformationen abrufen

Als Versicherter möchte ich die Abgabeinformationen aus der Apotheke zu meinem belieferten E-Rezept erhalten, um mir darüber einen digitalen Beipackzettel herunterzuladen und weitere Anwendungshinweise für mein Medikament zu erhalten.

fdv E-Rezept-App

HTTP-Request

curl -XGET
  -H "Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J" (1)
  https://prescriptionserver.telematik/MedicationDispense?whenhandedover=gt2020-03-01 (2)
  1. Mit dem ID Token im Authorization-Header weist sich der Zugreifende als Versicherter aus, im Token ist seine Versichertennummer enthalten nach welcher die Einträge gefiltert werden. Die Base64-Darstellung des Tokens ist stark gekürzt.

  2. In der Aufruf-Adresse können Suchparameter gemäß https://www.hl7.org/fhir/medicationdispense.html#search angegeben werden. Im konkreten Beispiel soll nach Dispensierinformationen zu Medikamenten mit einem Abholdatum whenhandedover größer (gt) dem Datum 01.03.2020 gesucht werden.

fachdienst E-Rezept-Fachdienst

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

{
  "resourceType": "Bundle",
  "id": "187dc298-c2b8-40f5-8938-c6c4078660ed",
  "meta": {
    "lastUpdated": "2020-04-07T08:05:42.225+00:00"
  },
  "type": "searchset",
  "total": 1,
  "link": [ {
    "relation": "self",
    "url": "https://prescriptionserver.telematik//MedicationDispense?whenhandedover=gt2020-01-01"
  } ],
  "entry": [ {
    "fullUrl": "https://prescriptionserver.telematik//MedicationDispense/1093629",
    "resource": {
      "resourceType": "MedicationDispense",
      "id": "1093629",
      "meta": {
        "versionId": "1",
        "lastUpdated": "2020-04-02T09:06:40.735+00:00",
        "source": "#IanTxrBta61i4om4",
        "profile": [ "https://gematik.de/fhir/StructureDefinition/erxMedicationDispense" ]
      },
      "contained": [ {
        "resourceType":"Medication",
        "id":"med0314",
        "meta":{
          "profile": [
            "https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Medikament_PZN"
          ] },
        "extension": [ {
          "url":"https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_MEDIKAMENT_KATEGORIE",
          "valueCoding":{
            "system":"https://fhir.kbv.de/CodeSystem/KBV_CS_MEDIKAMENT_KATEGORIE",
            "code":"00"
          }
        }, {
          "url":"https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_MEDIKAMENT_IMPFSTOFF",
          "valueBoolean":false
        }, {
          "url":"http://fhir.de/StructureDefinition/normgroesse",
          "valueCode":"N1"
        } ],
        "code":{
          "coding": [ {
            "system":"http://fhir.de/CodeSystem/ifa/pzn",
            "code":"06313728"
          } ],
          "text":"Sumatriptan-1a Pharma 100 mg Tabletten"
        },
        "form":{
          "coding": [ {
            "system":"KBV_CS_SFHIR_KBV_DARREICHUNGSFORM",
            "code":"TAB"
          } ]
        },
        "amount":{
          "numerator":{
            "value":"12",
            "system":"http://unitsofmeasure.org",
            "code":"{tbl}"
          },
          "denominator":{
            "value":"1"
          }
        }
      } ],
      "identifier": [ {
        "use":"official",
        "system":"http://fhir.de/NamingSystem/gkv/kvid-10",
        "value":"X234567890"
      } ],
      "status":"completed",
      "medicationReference":{
        "reference":"#med0314",
        "display":"Sumatriptan-1a Pharma 100 mg Tabletten"
      },
      "supportingInformation": [ {
        "reference":"Task/4711" (1)
      } ],
      "performer": [ { (2)
        "actor":{
          "identifier":{
            "use":"official",
            "system":"https://fhir.kbv.de/NamingSystem/KBV_NS_Base_BSNR",
            "value":"606358757"
          },
          "display":"Ihre Apotheke um die Ecke"
        }
      } ],
      "whenPrepared":"2020-03-20T07:13:00+05:00",
      "whenHandedOver":"2020-03-20T07:13:00+05:00", (3)
      "dosageInstruction": [ {
        "extension": [ {
          "url":"https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DOSIERUNGSKENNZEICHEN",
          "valueBoolean":true
        } ],
        "text":"1-0-1-0"
      } ]
    },
    "search": {
      "mode": "match"
    }
  } ]
}
  1. Hier ist der Task des eingelösten E-Rezepts referenziert. Über den Link könenn weitere Informationen wie E-Rezept-Datensatz und ggfs. die Quittung abgerufen werden.

  2. Der Name und die Betriebsstättennummer Telematik-ID als BSNR der Apotheke, bei der das E-Rezept eingelöst wurde.

  3. Dieser Wert wurde als Filterkriterium verwendet, das Medikament wurde hier am 20.03.2020 ausgehändigt (whenhandedover) und ist damit vom Datumswert "größer" als das Datum des Filterkriteriums der Suchanfrage 01.01.2020 (whenhandedover=gt2020-01-01)

Der Aufruf erfolgt als http-GET-Operation auf die Ressource /MedicationDispense. Im Aufruf muss das während der Authentisierung erhaltene ID_TOKEN im http-Request-Header Authorization übergeben werden, der Fachdienst filtert die MedicationDispense-Einträge nach der im ID_TOKEN enthaltenen KVNR des Versicherten und ggfs. in der Aufrufadresse angegebenen weiteren Suchparametern. Die Rükgabe erfolgt als Liste im Bundle eines oder mehrerer MedicationDispenses, welche den ggfs. angegebenen Suchparametern entsprechen.

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 mehr als 100 Einträge gefunden wurden. Zur genaueren Suche müssen die Filter Parameter vom Client genauer belegt 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 Verzeichniseintrag gefunden.

500

Server Errors
Unerwarteter Serverfehler


6. Ein E-Rezept löschen

Als Versicherter möchte ich ein E-Rezept löschen können, um mein Recht auf informationelle Selbstbestimmung wahrzunehmen.

fdv E-Rezept-App

HTTP-Request

curl -XPOST
  -H "Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J" (1)
  -H "X-AccessCode: 777bea0e13cc9c42ceec14aec3ddee2263325dc2c6c699db115f58fe423607ea" (2)
  https://prescriptionserver.telematik/Task/4711/$abort
  1. Mit dem ID Token im Authorization-Header weist sich der Zugreifende als Versicherter aus, im Token ist seine Versichertennummer enthalten. Die Base64-Darstellung des Tokens ist stark gekürzt.

  2. Als Vertreter (wenn im E-Rezept eine andere Versichertennummer als im Token des Zugreifenden angegeben ist) muss im http-Header der AccessCode übergeben werden

fachdienst E-Rezept-Fachdienst

HTTP-Response

HTTP/1.1 204 No Content  (1)
  1. Im Eegebnis der $abort-Operation wird der referenzierte Task gelöscht. Dementsprechend werden keine Daten an den aufrufenden Client zurückgegeben.

Der Aufruf erfolgt als http-POST-Operation auf eine konkrete Ressource /Task/<task_id> mit dem Zusatz der FHIR-Operation $abort. Im Aufruf muss das während der Authentisierung erhaltene ID_TOKEN im http-Request-Header Authorization übergeben werden. Der Aufruf kann auch durch einen Vertreter des Versicherten erfolgen, hierbei wird lediglich die Rolle Versicherter im ID_TOKEN geprüft. Um die Berechtigung für den Zugriff auf einen Task mit einer fremden KVNR nachzuweisen, muss der Zugreifende den richtigen AccessCode im http-Request-Header X-AccessCode übergeben. Die Operation löscht alle personenbezogenen und medizinischen Daten.

Code

Type Success

204

No Content
Die Anfrage wurde erfolgreich bearbeitet. Die Response enthält jedoch keine Daten.

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.

404

Not found
Die adressierte Ressource wurde nicht gefunden, die übergebene ID ist ungültig.

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.

409

Conflict
Die Anfrage wurde unter falschen Annahmen gestellt. Das E-Rezept befindet sich bereits in Belieferung

429

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

500

Server Errors
Unerwarteter Serverfehler


7. Einsicht in das Zugriffsprotokoll

Als Versicherter möchte ich Einsicht in das Zugriffsprotokoll meiner Daten im E-Rezept-Fachdienst nehmen, um Zugriffe nachvollziehen zu können und eine unberechtigte Einsicht in meine Daten zu prüfen.

fdv E-Rezept-App

HTTP-Request

curl -XGET
  -H "Authorization: Bearer eyJraWQ.ewogImL2pA10Qql22ddtutrvx4FsDlz.rHQjEmB1lLmpqn9J" (1)
  https://prescriptionserver.telematik/AuditEvent
  1. Mit dem ID Token im Authorization-Header weist sich der Zugreifende als Versicherter aus, im Token ist seine Versichertennummer enthalten, nach der die Protokolleinträge gefiltert werden. Die Base64-Darstellung des Tokens ist stark gekürzt.

fachdienst E-Rezept-Fachdienst

HTTP-Response

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

{
  "resourceType": "Bundle",
  "id": "12653b13-5fca-4e3b-860c-9558bdfef9a1",
  "meta": {
    "lastUpdated": "2020-03-29T13:44:18.783+00:00"
  },
  "type": "searchset", (1)
  "link": [ {
    "relation": "self",
    "url": "https://prescriptionserver.telematik/AuditEvent"
  }, {
    "relation": "next",
    "url": "https://prescriptionserver.telematik/AuditEvent?_getpages=12653b13-5fca-4e3b-860c-9558bdfef9a1&_getpagesoffset=20&_count=20" (2)
  } ],
  "entry": [ {
    "fullUrl": "https://prescriptionserver.telematik/AuditEvent/58862", (3)
    "resource": {
      "resourceType": "AuditEvent",
      "id": "58862",
      "meta": {
        "versionId": "1",
        "lastUpdated": "2020-02-27T08:04:27.434+00:00",
        "source": "#IkMt252YovlsJTAE",
        "profile": [
          "https://gematik.de/fhir/StructureDefinition/erxAuditEvent"
        ]
      },
      "text": {
        "status": "generated",
        "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Praxis Dr. Müller,
        Bahnhofstr. 78 hat ein E-Rezept 160.123.456.789.123.58 eingestellt</div>" (4)
      },
      "type": {
        "code": "rest"
      },
      "subtype": [ {
        "system": "http://hl7.org/fhir/restful-interaction",
        "code": "create",
        "display": "create"
      } ],
      "action": "C",
      "recorded": "2020-02-27T08:04:27.434+00:00",
      "outcome": "0",
      "agent": [ {
        "type": {
          "coding": [ {
            "system": "http://terminology.hl7.org/CodeSystem/extra-security-role-type",
            "code": "humanuser",
            "display": "human user"
          } ]
        },
        "who": {
          "identifier": {
            "value": "Praxis Dr. Müller,  Bahnhofstr. 78"
          }
        },
        "requestor": false
      }],
      "source": {
        "site": "E-Rezept Fachdienst",
        "observer": {
      "status": "active",
          "serialNumber": "R4.0.0.287342834"
        }
      },
      "entity": [ {
        "what": {
          "identifier": {
            "use":"official",
            "system":"https://gematik.de/fhir/Namingsystem/prescriptionID",
            "value":"160.123.456.789.123.58"
          },
          "reference": "https://prescriptionserver.telematik/Task/4711"
        },
        "name": "X123456789" (5)
      } ]
    },
    "search": {
      "mode": "match"
    }
  }, {
    "fullUrl": "https://prescriptionserver.telematik/AuditEvent/58863",
    "resource": {
      "resourceType": "AuditEvent",
      "id": "58863",
      "meta": {
        "versionId": "1",
        "lastUpdated": "2020-02-27T09:04:27.434+00:00",
        "source": "#IkMt252YovlsJTAE",
        "profile": [
          "https://gematik.de/fhir/StructureDefinition/erxAuditEvent"
        ]
      },
      "text": {
        "status": "generated",
        "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Max Mustermann hat ein E-Rezept 160.123.456.789.123.58 heruntergeladen</div>"
      },
      "type": {
        "code": "rest"
      },
      "subtype": [ {
        "system": "http://hl7.org/fhir/restful-interaction",
        "code": "read",
        "display": "read"
      } ],
      "action": "R",
      "recorded": "2020-02-27T09:04:27.434+00:00",
      "outcome": "0",
      "agent": [ {
        "type": {
          "coding": [ {
            "system": "http://terminology.hl7.org/CodeSystem/extra-security-role-type",
            "code": "humanuser",
            "display": "human user"
          } ]
        },
        "who": {
          "identifier": {
            "value": "Max Mustermann, KVNR X123456789"
          }
        },
        "requestor": false
      }],
      "source": {
        "site": "E-Rezept Fachdienst",
        "observer": {
      "status": "active",
          "serialNumber": "R4.0.0.287342834"
        }
      },
      "entity": [ {
        "what": {
          "identifier": {
            "use":"official",
            "system":"https://gematik.de/fhir/Namingsystem/prescriptionID",
            "value":"160.123.456.789.123.58"
          },
          "reference": "https://prescriptionserver.telematik/Task/4711"
        },
        "name": "X123456789"
      } ]
    },
    "search": {
      "mode": "match"
    }
  }, {
    "fullUrl": "https://prescriptionserver.telematik/AuditEvent/620049",
    "resource": {
      "resourceType": "AuditEvent",
      "id": "620049",
      "meta": {
        "versionId": "1",
        "lastUpdated": "2020-02-27T10:04:27.434+00:00",
        "source": "#IkMt252YovlsJTAE",
        "profile": [
          "https://gematik.de/fhir/StructureDefinition/erxAuditEvent"
        ]
      },
      "text": {
        "status": "generated",
        "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Ihre Apotheke um die Ecke,
        Hauptstraße 1 hat ein E-Rezept 160.123.456.789.123.58 beliefert</div>"
      },
      "type": {
        "code": "rest"
      },
      "subtype": [ {
        "system": "http://hl7.org/fhir/restful-interaction",
        "code": "update",
        "display": "update"
      } ],
      "action": "U",
      "recorded": "2020-02-27T10:04:27.434+00:00",
      "outcome": "0",
      "agent": [ {
        "type": {
          "coding": [ {
            "system": "http://terminology.hl7.org/CodeSystem/extra-security-role-type",
            "code": "humanuser",
            "display": "human user"
          } ]
        },
        "who": {
          "identifier": {
            "value": "Ihre Apotheke um die Ecke, Hauptstraße 1"
          }
        },
        "requestor": false
      }],
      "source": {
        "site": "E-Rezept Fachdienst",
        "observer": {
      "status": "active",
          "serialNumber": "R4.0.0.287342834"
        }
      },
      "entity": [ {
        "what": {
          "identifier": {
            "use":"official",
            "system":"https://gematik.de/fhir/Namingsystem/prescriptionID",
            "value":"160.123.456.789.123.58"
          },
          "reference": "https://prescriptionserver.telematik/Task/4711"
        },
        "name": "X123456789"
      } ]
    },
    "search": {
      "mode": "match"
    }
  } ]
}
  1. Beim Abrufen der Protokolleinträge erfolgt die Rückgabe als Bundle, in dem die Protokolleinträge mit Bezug zum authentifizierten Versicherten über dessen KVNR aufgelistet werden. In diesem vereinfachten Beispiel werden nur drei Eintäge dargestellt.

  2. Für eine komfortable Darstellung vieler Protkolleinträge und zur Reduktion der übertragenen Datenmennge kommt ein Paging-Mechanismus zum Einsatz. Über diese url können die nächsten 20 Protokolleinträge abgerufen werden (sofern weitere vorhanden)

  3. Die Darstellung eines Protokolleintrags erfolgt als AuditEvent

  4. Hier wird eine lesbare Darstellung in HTML-Format bereitgestellt.

  5. Der Versichertenbezug wird über die Versichertennummer des jeweils gelesenen/eingestellten/gelöschten E-Rezept oder auch MedicationDispense hergestellt.

Der Aufruf erfolgt als http-GET-Operation auf die Ressource /AuditEvent. Im Aufruf muss das während der Authentisierung erhaltene ID_TOKEN im http-Request-Header Authorization übergeben werden, der Fachdienst filtert die AuditEvent-Einträge nach der im ID_TOKEN enthaltenen KVNR des Versicherten. Der E-Rezept-Fachdienst liefert eine Liste von Protokolleinträgen, die mit einem zusätzlichen Suchparameter in der Anfrage-URL sortiert werden kann: https://prescriptionserver.telematik/AuditEvent?_sort=-date sortiert die Protokolleinträge nach dem Protokollierungszeitpunkt recorded gemäß https://www.hl7.org/fhir/auditevent.html#search, das Minuszeichen in -date bewirkt die absteigende Sortierung (jüngster Eintrag zuerst).

Code

Type Success

200

OK
Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wird im ResponseBody bereitgestellt.

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.

429

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

500

Server Errors
Unerwarteter Serverfehler