static void Main() { // Verbindung mit einem Chipkartenterminal herstellen und (falls eingesteckt) die Versichertenstammdaten einer eGK oder KVK/PKV-Card auslesen CardResult result = CardTerminalClient.ReadCard("ctacs.dll"); if (result.Success) { // die ausgelesenen Versichertenstammdaten als JSON auf der Konsole ausgeben string json = JsonConvert.SerializeObject(result, Formatting.Indented); Console.WriteLine(json); Console.ReadKey(); } }
/// <summary> /// Stellt eine Verbindung mit einem Chipkartenterminal her und liest (falls eingesteckt) die Versichertenstammdaten einer eGK oder KVK/PKV-Card aus /// </summary> /// <param name="path">der Pfad zur herstellerspezifischen DLL mit der CT-API-Implementierung</param> /// <param name="portNumber">Portnummer der physikalischen Schnittstelle des Kartenterminals</param> /// <param name="terminalID">die logische Kartenterminal-Nummer</param> /// <param name="requestCardWaitingPeriodInSeconds">die Zeit (in Sekunden), die auf das Einstecken einer Chipkarte gewartet wird</param> /// <param name="ejectCardWaitingPeriodInSeconds">die Zeit (in Sekunden), die gewartet wird, bis eine eingesteckte Chipkarte entnommen wurde</param> /// <returns></returns> public static CardResult ReadCard(string path, ushort portNumber = 1, ushort terminalID = 1, byte requestCardWaitingPeriodInSeconds = 0, byte ejectCardWaitingPeriodInSeconds = 0) { using (CardTerminalClient cardTerminalClient = new CardTerminalClient(path, portNumber, terminalID)) // eine neue Host/CT-Verbindung mithilfe der herstellerspezifischen CT-API-Bibliothek initiieren { cardTerminalClient.ResetCT(); // das Gerät in einen definierten Grundzustand versetzen cardTerminalClient.RequestICC(requestCardWaitingPeriodInSeconds); // zum Einstecken einer Chipkarte auffordern (ggf. mit Wartezeit) und nach dem Einstecken einer Karte einen Reset durchführen CardResult result = new CardResult(); // Daten einer elektronischen Versichertenkarte (eGK) auslesen try { if (!cardTerminalClient.SelectEGK().StatusIsError()) // Container mit den eGK-Daten für folgende Auslesevorgänge auswählen { result.EgkResult = cardTerminalClient.ReadEGK(); // ggf. eGK-Datensätze für die Patientendaten und die Versicherungsdaten auslesen } } catch (CtException ex) when(ex.ErrorCode == -128) { } // ERR_HTSI // Daten einer Krankenversichertenkarte (KVK) bzw. Card für Privatversicherte (PVK-Card) auslesen try { if (!cardTerminalClient.SelectKVK().StatusIsError()) // Container mit den KVK-Daten für folgende Auslesevorgänge auswählen { result.KvKResult = cardTerminalClient.ReadKVK(); // ggf. KVK-Datensatz auslesen } } catch (CtException ex) when(ex.ErrorCode == -128) { } // ERR_HTSI cardTerminalClient.EjectICC(ejectCardWaitingPeriodInSeconds); // Auslesevorgang beenden und Chipkarte auswerfen (ggf. mit Wartezeit) return(result); } }