Read patient name from Swiss Health Card
# Initialize smart card:
Set Variable [ $$SmartCard ; Value: MBS( "SmartCard.Init" ) ]
If [ MBS("IsError") ]
Show Custom Dialog [ "Failed to initialize SmartCard" ; $$SmartCard ]
Exit Script [ Text Result: ]
End If
#
# Connect to a reader
Set Variable [ $reader ; Value: "Identiv SCR3310 uTrust 2700 R" ]
Set Variable [ $r ; Value: MBS( "SmartCard.Connect"; $$SmartCard; $Reader; "Shared"; "any" ) ]
If [ MBS("IsError") ]
Show Custom Dialog [ "Connect failed" ; $r ]
Exit Script [ Text Result: ]
End If
#
# Read file from smartcard with APDU protocol.
#
# Read record with name
Set Variable [ $result ; Value: MBS( "SmartCard.ReadFile"; $$SmartCard; "2F06") ]
If [ MBS("IsError") ]
Set Field [ Card::Status ; $result ]
Show Custom Dialog [ "Error" ; $result ]
Exit Script [ Text Result: ]
End If
# Pick result
Set Variable [ $filedata ; Value: Middle ( $result ; 5; Length($result) ) ]
#
# Split in values
Set Variable [ $json ; Value: MBS("SmartCard.SplitValues"; $FileData) ]
# Get item 128, which is full name
Set Variable [ $name ; Value: JSONGetElement ( $json ; "128" ) ]
Set Variable [ $NameList ; Value: Substitute($name; ", "; ¶) ]
Set Variable [ $LastName ; Value: GetValue($nameList; 1) ]
Set Variable [ $FirstName ; Value: GetValue($nameList; 2) ]
#
Show Custom Dialog [ "Name" ; $FirstName & " " & $LastName ]
Set Variable [ $r ; Value: MBS( "SmartCard.DisConnect"; $$SmartCard; "Eject") ]