Laden...

eGK_to_KVK: Auslesen der Daten der neuen elektronische Gesundheitskarte per CT_API Schnittstelle

Erstellt von Mario123 vor 11 Jahren Letzter Beitrag vor 11 Jahren 6.425 Views
M
Mario123 Themenstarter:in
1 Beiträge seit 2013
vor 11 Jahren
Hinweis von gfoidl vor einem Jahr

ursprünglich gepostet in Zugriff auf KVK & eGK via CTAPI

Hinweis: Von dN!3L gibt alternativ ein API zum Auslesen der KVK & eGK:
KVK- & eGK-API (via CTAPI) - GitHub

eGK_to_KVK: Auslesen der Daten der neuen elektronische Gesundheitskarte per CT_API Schnittstelle
eGK_to_KVK
\==========

Was macht eGK_to_KVK:

  Nun die neuen Lesegeräte für die elektronische Gesundheitskarte (eGK)
  unterstützen leider nicht mehr den 'Modus 2'.
  Dieser bewirkte beim Einstecken einer Krankenkarte in den Kartenleser an
  der Tastatur, dass diese gelesen und die Daten einfach getrennt durch
  Zeilenumbrüche per hardware Tastaturanschlägen ausgegeben wurden.
  Fertig - schön einfach und keine zusätzlichen Treiber oder dll's nötig.

  eGK_to_KVK simuliert dieses Verhalten. Es nutzt die CT_API Schnittstelle
  um die Daten der neuen elektronische Gesundheitskarte abzugreifen, ins
  alte Format zu konvertieren und per Sendkey als Tastatureingabe
  auszugeben.


Verwendung:

  eGK_to_KVK.exe starten (und geöffnet lassen).
  Karte einstecken und die Daten werden als Tastatureingaben
  an die aktive Anwendung ausgegeben.


  * ReadeGK32.exe wird zum Lesen der Daten verwendet

  * CT_API Schnittstelle
      CTPCSC32KV.dll für den Terminal bzw.
      CTCYM.dll für die Tastatur mit Kartenleser
       (API's: CT_init, CT_data, CT_close)

Getestet mit Cherry ST-2052 und ST-1503/G87-1504

Version(en):

  1.1 (april 2013) Beta version
      * TrayIcon
      * Implementierung als Automat(State Machine)
      * Sprüche

  1.0 (april 2013) Alpha Entwicklerversion

Screenshot:

(Download: eGK_to_KVK_Release#3.7z)

Das Programm ist in Visual Basic 6 geschrieben.
(Sorry den DL-Link post ich hier mal besser nicht,
dass der Admin besser schlafen kann 😉
einfach mal nach 'visual basic 6 portable' google)

Im Release #2 ist leider etwas viel Overhead drum rum wie z.B.
Handling des TrayBarIcon, Logausgabe, Formatierungszeugs...
um die App etwa handlicher zu machen.

Am 'interessantesten' in Bezug auf das Nutzen der CT-Api ist da sicher die
CardTerminalClient.cls

Hier ein Auszug des Codes zum ICC Aktivieren, Karte Auswerfen und
ermitteln der FU's Functional Units als Funktional Einheiten des Terminals
(als z.b. ob das Teil ein Display bzw. Keyboard hat)...


Ist angehängt.

Das Einlesen und Entpacken der Daten/Entpacken wird von
'ReadeGK32.exe'(Microsoft Visual C++ ohne SourceCode) erledigt und ist so
leider nicht als Programmcode zu sehen.
Die interessante Funktionen kann man mit IDA+Hexrays Decompilieren -
ist aber trotzdem eine ziemlich Friemelei wo Aufwand und Nutzen wohl nur in
einem günsten Verhältnis stehen, wenn es darum geht
sich in der Kunst der Reverse Engineerings zu üben. 😁

Wenn es um das Konvertieren der Neuen XML-Daten(eGK) ins alte KVK-Format geht,
ist die eGK_Extract.bas zu empfehlen.

Im Release #3 gab es einige kleine Nachbesserungen so ist es z.B. störend
mit RequestICC() to prüfen ob schon eine Karte eingesteckt wurde, weil RequestICC jedesmal mit den Tastaturstatus zurücksetzt.
Wenn man also z.b. zum Scollen cursor-nach-links gedrückt hat, bleibt dieser bei jedem Aufruf von RequestICC() stecken.

Also so erst mit ICC_GET_STATUS die Kontakte prüfen und dann ggf mit RequestICC den IC zu Connecten.

An anderes Geeier ist da der NameSpace bei den XML-Daten. z.B. sieht eine
EF.VD.xml so aus


<Kostentraeger>
    <Name>Techniker Krankenkasse</Name>

XMLDoc.selectSingleNode("//Kostentraeger/Name")
(msxml3.dll)
Während eine meint der Default Namespace gefällt mir nicht und da so macht:


<vsda:Kostentraeger>
    <vsda:Name>BARMER GEK</vsda:Name>

und da die Abfrage nur mit
XMLDoc.selectSingleNode("//vsda:Kostentraeger/vsda:Name")
gelingt.