Git Product home page Git Product logo

ref-erp-client-cs's Introduction


ref-erp-client-cs

Table of Contents
  1. Motivation
  2. Funktionsumfang
  3. Konfiguration
  4. xsds-Ordner

Motivation

Der Beispiel-Code zeigt exemplarisch die Ansteuerung von IDP und ERezept-Fachdienst aus Arzt- und Apothekensystemen in C# mit Hilfe der TITUS-Demoumgebung.
Der Beispielcode versucht viele Aspekte der Spezifikation umzusetzen, ist aber nicht geeignet 1:1 in einer Produktivumgebung eingesetzt zu werden, weil vor allem Robustheit und Fehlertoleranz nicht ausreichend umgesetzt sind. Weiterhin ist die Prüfung der Signatur- und Verschlüsselungs-Zertifikate vom IDP und vom E-Rezept-Fachdienst nur ansatzweise dargestellt. Es fehlt die Prüfung der Zertifikate gemäß [gemSpec_PKI#TUK_PKI_018].

Funktionsumfang

  • Beispiel zur Verschlüsselung für die VAU gemäß [gemSpec_Krypt#7]

  • Arzt: E-Rezept erstellen

    • TestCreateERezeptInPraxis();
    • führt die Authentifizierung als Arzt-Praxis mit dem IDP durch und lädt das Access_Token als BearerToken vom IDP (300s gültig!)
    • erzeugt mittels FHIR-Operation $create des E-Rezept-Fachdienstes eine Task-Ressource, um die RezeptID zu erzeugen. Der Request wird verschlüsselt und an die VAU verschickt
      siehe https://github.com/gematik/api-erp/blob/master/docs/authentisieren.adoc
    • der Vorgang wird ein 2. mal wiederholt um zu demonstrieren, wie mit der VAU und deren Nutzer-Pseudonym ab dem 2. Call umzugehen ist
    • das macht das Bsp nicht:
      • auf ähnliche Weise kann dann der mit dem Konnektor signierte FHIR-Datensatz (Rezept-Bundle) als Rezept angelegt werden ($activate-Operation).
  • Apotheke: E-Rezept abholen

    • führt die Authentifizierung als Apotheke mit dem IDP durch und lädt das Access_Token als BearerToken vom IDP
    • Beispiel lädt ein ERezept in die Apotheke unter Angabe von Access_Token, taskid und accesscode (unter Nutzung von IDP und VAU).
      TestAcceptRezeptInApotheke(taskid : "19b56423-201c-11b2-804f-df8a779f13bd", accesscode : "c8a8086dc855bd7fb19630bfaae254b86068eca45131f32382cb6b27d75841ee");
      Dieses Rezept sollte vor jedem Lauf in Titus unter Rezeptverwaltung neu erzeugt werden, da derzeit jedes ERezept nur genau einmal geladen werden kann. (Sonst gibt es einen Fehler)
    • bildet den $accept-Request zum E-Rezept-Fachdienst, um ein E-Rezept abzurufen und auszugeben.
    • Der Request wird verschlüsselt an die VAU verschickt.
      siehe https://github.com/gematik/api-erp/blob/master/docs/authentisieren.adoc

Derzeit sind im Code noch einige Stellen mit TITUS BUG markiert, die in den nächsten TITUS-Releases behoben werden und dann in diesem Projekt korrigiert werden können

Konfiguration

In Program.cs sind alle URLs, und variablen Einstellungsparameter für den Konnektorkontext, IDP als Konstanten angelegt und so konfiguriert, dass man nur einen Parmameter zwingend anpassen muss:

/// Client-Zertifikat für die Kommunikation mit dem lokalen Konnektor des PS
/// kann aus Download aus TITUS unter Mandanteninformation heruntergeladen werden
static readonly X509Certificate2 KonnektorCommunikationCert = new(File.ReadAllBytes(@"C:\work\ps_erp_aps_01.p12"), "00");

Ersetzen Sie C:\work\ps_erp_aps_01.p12 durch das Client-Zertifikat aus Ihrem TITUS-Account!

xsds-Ordner

enthält die für die Generierung der Konnektor-Webserviceendpunkt nötigen WDSL Dateien
VS2029 -> Add Service Reference ...
Download unter: https://fachportal.gematik.de/fileadmin/Fachportal/Downloadcenter/Schemata-_und_WSDL-Dateien/Schema-_und_WSDL-Dateien/OPB3.1_Schemadateien_R3.1.2_Kon_PTV3_20191002.zip

ref-erp-client-cs's People

Contributors

bneidhold avatar gematik1 avatar hendrejvr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ref-erp-client-cs's Issues

Payload leer beim erzeugen der jwe

Hallo,

ich bin leider festgeklebt bei der Stelle wo man durch JWT.Encode den "jwe" erstellen müsste. Der generierte Payload wird immer leer.

var jwePayloadJson = new JObject { ["njwt"] = jws }.ToString(Formatting.None);
string jwe = JWT.Encode(jwePayloadJson, idpEncKeyPublic, JweAlgorithm.ECDH_ES, JweEncryption.A256GCM, settings: new JwtSettings().RegisterJwa(JweAlgorithm.ECDH_ES, new ExampleEcdhKeyManagement()), extraHeaders: new Dictionary<string, object> { {"exp", exp}, {"cty", "NJWT"}, });

Der generierte Token sieht dann so aus: Header..Signature (Payload ist nirgendswo zu finden)

jwePayloadJson wird in Ordnung generiert.

Könnten Sie bitte mir ein bisschen weiterhelfen worauf das Problem liegen könnte?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.