diff --git a/docs/ti_configuration.adoc b/docs/ti_configuration.adoc index 15bc07a8..8b9e3251 100644 --- a/docs/ti_configuration.adoc +++ b/docs/ti_configuration.adoc @@ -141,3 +141,31 @@ Name: erp.zentral.erp.splitdns.ti-dienste.de Addresses: 100.102.28.10 100.102.29.10 .... + +== Fehlerbehandlung Konnektor + +In besonderen Konstellationen kann es zu Fehlern im Verbindungsaufbau der TI kommen. Folgende Probleme und Workarounds wurden derzeit identifiziert und definiert. + +=== Verwendung SMC-B G2 mit secunet Konnektor + +==== Problemstellung +Der secunet Konnektor bietet Funktionalitäten an, welche die Migration von RSA zu ECC vorbereiten. Es ist zu beachten, dass Smartcards der Generation G2 (bspw. SMC-B) noch keine ECC Zertifikate beinhalten und somit kein ECC unterstützen können und somit der TLS-Verbindungsaufbau (bspw. zwischen Fachmodul VSDM und Intermediär VSDM) auf Basis ECC nicht funktioniert. + +==== Lösung +Es ist bei der Verwendung von Smartcards G2 darauf zu achten, dass im Setting des secunet Konnektors für TLS die Verwendung von ECC-Ciphersuiten deaktiviert ist. + +image:SMC-B_ECC_secunet_setting.png[width=100%] + +=== Fehlerhafter VSDM Aufruf mit PN3 + +==== Problemstellung +Der VSDM++-Abruf für das Feature „eGK in der Apotheke“ führt in einigen Fällen zu einem Timeout. Dies äußert sich dadurch, dass der Abrufå etwa 25 Sekunden dauert und mit einem Prüfnachweis mit dem Code „3“ quittiert wird. + +Dies betrifft nachweislich AVS-Systeme mit einem secunet-Konnektor. Andere Konfigurationen mit einem RISE- oder KoCo-Konnektor können ebenso von einer signifikanten Anzahl an Prüfnachweisen mit dem Code „3“ betroffen sein. + +==== Lösung +Die Konnektor-Einstellung "nonQES-Authentifizierungstimeout" wird von 3 Sekunden auf 6 Sekunden erhöht. Das führt dazu, dass der Timeout für OCSP-Abfragen erhöht wird. Hierbei reduziert sich die Fehlerrate signifikant. Es ist darauf zu achten, dass dies nur von AVS zu implementieren ist, wenn die Operation ReadVSD() asynchon umgesetzt wird, da es sonst zu Seiteneffekten kommen kann. + +Möglicherweise sind durch diese Einstellung auch andere TI-Anwendungen betroffen, bspw. KIM, VZD. + +image:secunet-ocsp-timeout.png[width=100%] diff --git a/docs_sources/ti_configuration-source.adoc b/docs_sources/ti_configuration-source.adoc index 39f4618b..5400e396 100644 --- a/docs_sources/ti_configuration-source.adoc +++ b/docs_sources/ti_configuration-source.adoc @@ -131,3 +131,31 @@ Name: erp.zentral.erp.splitdns.ti-dienste.de Addresses: 100.102.28.10 100.102.29.10 .... + +== Fehlerbehandlung Konnektor + +In besonderen Konstellationen kann es zu Fehlern im Verbindungsaufbau der TI kommen. Folgende Probleme und Workarounds wurden derzeit identifiziert und definiert. + +=== Verwendung SMC-B G2 mit secunet Konnektor + +==== Problemstellung +Der secunet Konnektor bietet Funktionalitäten an, welche die Migration von RSA zu ECC vorbereiten. Es ist zu beachten, dass Smartcards der Generation G2 (bspw. SMC-B) noch keine ECC Zertifikate beinhalten und somit kein ECC unterstützen können und somit der TLS-Verbindungsaufbau (bspw. zwischen Fachmodul VSDM und Intermediär VSDM) auf Basis ECC nicht funktioniert. + +==== Lösung +Es ist bei der Verwendung von Smartcards G2 darauf zu achten, dass im Setting des secunet Konnektors für TLS die Verwendung von ECC-Ciphersuiten deaktiviert ist. + +image:SMC-B_ECC_secunet_setting.png[width=100%] + +=== Fehlerhafter VSDM Aufruf mit PN3 + +==== Problemstellung +Der VSDM++-Abruf für das Feature „eGK in der Apotheke“ führt in einigen Fällen zu einem Timeout. Dies äußert sich dadurch, dass der Abrufå etwa 25 Sekunden dauert und mit einem Prüfnachweis mit dem Code „3“ quittiert wird. + +Dies betrifft nachweislich AVS-Systeme mit einem secunet-Konnektor. Andere Konfigurationen mit einem RISE- oder KoCo-Konnektor können ebenso von einer signifikanten Anzahl an Prüfnachweisen mit dem Code „3“ betroffen sein. + +==== Lösung +Die Konnektor-Einstellung "nonQES-Authentifizierungstimeout" wird von 3 Sekunden auf 6 Sekunden erhöht. Das führt dazu, dass der Timeout für OCSP-Abfragen erhöht wird. Hierbei reduziert sich die Fehlerrate signifikant. Es ist darauf zu achten, dass dies nur von AVS zu implementieren ist, wenn die Operation ReadVSD() asynchon umgesetzt wird, da es sonst zu Seiteneffekten kommen kann. + +Möglicherweise sind durch diese Einstellung auch andere TI-Anwendungen betroffen, bspw. KIM, VZD. + +image:secunet-ocsp-timeout.png[width=100%] diff --git a/images/SMC-B_ECC_secunet_setting.png b/images/SMC-B_ECC_secunet_setting.png new file mode 100644 index 00000000..01ceec79 Binary files /dev/null and b/images/SMC-B_ECC_secunet_setting.png differ diff --git a/images/puml_fdv_zustaende_sequenz.png b/images/puml_fdv_zustaende_sequenz.png new file mode 100644 index 00000000..41a61262 Binary files /dev/null and b/images/puml_fdv_zustaende_sequenz.png differ diff --git a/images/secunet-ocsp-timeout.png b/images/secunet-ocsp-timeout.png new file mode 100644 index 00000000..bf3ad157 Binary files /dev/null and b/images/secunet-ocsp-timeout.png differ diff --git a/puml/fdv_zustaende_sequenz.puml b/puml/fdv_zustaende_sequenz.puml new file mode 100644 index 00000000..9c101da4 --- /dev/null +++ b/puml/fdv_zustaende_sequenz.puml @@ -0,0 +1,75 @@ +@startuml Aktualisierte Abgabeinformationen + +actor Versicherter +participant "E-Rezept-Fachdienst" as FD +participant AVS +actor Apotheker + +group E-Rezept abrufen +Versicherter -> Apotheker: Zeige Rezeptcode +Apotheker -> AVS: scanCode():E-Rezept-Token +AVS -> FD: POST /Task//$accept +FD -> FD: updateTaskStatus(id, 'in-progress') +FD -> AVS: E-Rezept +AVS -> Apotheker: showEPrescription() +end + +group Bereitstellen der Dispensierinformationen +Apotheker -> AVS: dispenseMedication() +AVS -> FD: POST /Task//$dispense +FD -> FD: storeMedicationDispense() +FD -> FD: setReferenceForMedicationDispense() +FD -> FD: setLastModified() +FD -> FD: setLastMedicationDispense(currentTime()) +FD --> AVS: ok +AVS --> Apotheker: ok +Apotheker -> Versicherter: Übergabe Medikament +end + +group Aktualisierung der Dispensierinformationen +Versicherter -> Apotheker: Bitte um Aktualisierung der Dispensierinformation +Apotheker -> AVS: updateMedication() +AVS -> FD: POST /Task//$dispense +FD -> FD: replaceMedicationDispense() +FD -> FD: setReferenceForMedicationDispense() +FD -> FD: setLastModified() +FD -> FD: setLastMedicationDispense(currentTime()) +FD --> AVS: ok +AVS --> Apotheker: ok +Apotheker -> Versicherter: Abgabe neues Medikament +end + +group Löschen der Dispensierinformationen +Versicherter -> Apotheker: Bitte um Rückgabe +Apotheker -> Apotheker: Medikament zurücknehmen +Apotheker -> AVS: deleteDispense() +AVS -> FD: POST /Task//$reject +FD -> FD: deleteReferenceForMedicationDispense() +FD -> FD: deleteMedicationDispense() +FD -> FD: setLastModified() +FD -> FD: updateTaskStatus(id, 'ready') +FD --> AVS: ok +AVS --> Apotheker: ok +end + +group E-Rezept löschen +Apotheker -> AVS: deletePrescription() +AVS -> FD: POST /Task//$abort +FD -> FD: deleteReferenceForMedicationDispense() +FD -> FD: deleteMedicationDispense() +FD -> FD: deleteEPrescription() +FD -> FD: deleteTask() +FD --> AVS: ok +AVS --> Apotheker: ok +end + +group E-Rezept Abgabe vollziehen +Apotheker -> AVS: getReceipt() +AVS -> FD: POST /Task//$close +FD -> FD: updateTaskStatus(id, 'completed') +FD -> FD: generateReceipt() +FD -> AVS: ePrescriptionReceipt() +end + + +@enduml \ No newline at end of file