Importare dati da Tessera Sanitaria CNS

Discussione in 'Programmazione' iniziata da perseoclub, 29 Settembre 2016.

  1. perseoclub

    perseoclub Utente Attivo

    Registrato:
    28 Novembre 2015
    Messaggi:
    70
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Salve a tutti,

    prima di comprare il lettore per la CNS (compatibile con Ubuntu) vorrei chiedere un'informazione:

    Dovendo progettare un gestionale (in php), è possibile gestire l'accettazione dei clienti tramite la smart card (Tessera sanitaria)?
    Cioè, posso acquisire i dati inserendo la carta nel lettore e trasferire (in automatico) i dati anagrafici nel form dell'accettazione cliente?

    Se sì, mi potete spiegare come si può fare?

    Ciao

    PS: che lettore (compatibile con Ubu16.04 64bit) mi consigliate?
     
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.078
    Mi Piace Ricevuti:
    234
    Punteggio:
    63
    Sesso:
    Maschio
  3. perseoclub

    perseoclub Utente Attivo

    Registrato:
    28 Novembre 2015
    Messaggi:
    70
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Grazie Max,

    ho dato uno sguardo al tuo link, ma non cerco un software closed. Se possibile, ero orientato all'Open-Source, in modo tale da poter procedere da solo per ottenere quei dati che m'interessano (su Ubuntu e Win).
     
  4. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.138
    Mi Piace Ricevuti:
    91
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
  5. perseoclub

    perseoclub Utente Attivo

    Registrato:
    28 Novembre 2015
    Messaggi:
    70
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Grazie caro,

    avevo già letto il tuo prezioso intervento in quel post, ed ho scaricato lo .zip per la applet.. Ora però dovrò capire come muovermi, e soprattutto dovrò comprare il lettore per fare le prove.
    Mi puoi consigliare qualche modello (compatibile anche con Linux) e che abbia una buona assistenza (download manuali e driver/api) dalla casa produttrice?
     
  6. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.138
    Mi Piace Ricevuti:
    91
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    ho acquistato (molti anni fa) il lettore di smart card come "inserto" del Corriere della Sera,
    lo pagai 7 euro + il prezzo del quotidiano
    è marcato Regione Lombardia (è correntemente usato dagli operatori della sanità pubblica)
    si tratta del modello ACR38 USB,
    ha sempre lavorato con XP, win7 e ora win10
    qui trovo tutti i driver aggiornati
    http://www.acs.com.hk/en/products/4/acr38-smart-card-reader/
    ho sempre preferito i driver del "produttore" a quelli resi disponibili dal sito di Regione Lombardia
    utilizzo comunque le funzionalità rese disponibili dalla regione (prenotazioni .....)

    certo è una soluzione "home made"
    non ho recapiti per una soluzione professionale, ma ci sarà un qualche rivenditore ufficiale
     
  7. LinuxOhYeah

    LinuxOhYeah Utente Attivo

    Registrato:
    26 Novembre 2016
    Messaggi:
    122
    Mi Piace Ricevuti:
    3
    Punteggio:
    18
    Interessante. La cosa mi interessa anche a me. Vedo che anche l'ACR38 USB che ha comprato tempo fa Marino51 è compatibile con Linux e Android™ 3.1 and above, oltre a win. Sono disponibili per Linux: PC/SC Drivers (07-Dec-2016), PC/SC Driver Package (07-Dec-2016) e CT-API Library (12-Sep-2011) quindi potrebbero esserci i presupposti per poter fare qualsiasi programma open-source.
     
  8. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.138
    Mi Piace Ricevuti:
    91
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    ero riuscito a leggere i dati dalla tessera sanitaria con pc impostato con win7,
    ma dopo l'installazione di win10 non ho più provato
     
  9. LinuxOhYeah

    LinuxOhYeah Utente Attivo

    Registrato:
    26 Novembre 2016
    Messaggi:
    122
    Mi Piace Ricevuti:
    3
    Punteggio:
    18
    Sul sito, link che hai postato, dice, per windows:
    Codice:
    Operating System Support - Win CE, Win 98, Win ME, Win 2000, Win 2003, Win 2003 R2, Win XP, Win Vista, Win 2008, Win 7, Win 8, Win 8.1
    Win XP x64, Win 2003 x64, Win 2003 R2 x64, Win Vista x64, Win 2008 x64, Win 2008 R2 x64, Win 7 x64, Win 8 x64, Win 8.1 x64, Win 2012 x64, Win 2012 R2 x64
    Non è riportato Win10, ma forse semplicemente non lo hanno aggiornato.
     
  10. perseoclub

    perseoclub Utente Attivo

    Registrato:
    28 Novembre 2015
    Messaggi:
    70
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    UP per gli interessati..

    Oggi ho acquistato (~20€) un lettore USB di banda magnetica (tipo HiCo) su Amazon. Mi arriva in settimana. Legge la banda magnetica, quindi le 3 tracce della tessera sanitaria, e restituirmi i dati in una stringa alfanumerica:
    - Cognome e Nome & Codice Fiscale

    "Pulendo" la stringa dovrei essere in grado di ottenere questi campi, e da lì riottenere tutti i dati necessari all'identificazione dell'utente: Cognome, Nome e CF (→ sesso, data e comune di nascita)

    Vi tengo aggiornati!
     
  11. perseoclub

    perseoclub Utente Attivo

    Registrato:
    28 Novembre 2015
    Messaggi:
    70
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Perfetto, funziona! Striscio la scheda nel lettore e ottengo:
    COGNOME, NOME e CODICE FISCALE ..che, tradotto, mi da SESSO, DATA e LUOGO (codice catastale) di NASCITA

    Procedura:

    - Ho comprato questo lettore usb smartcard (non richiede driver d'installazione; io uso Ubuntu ma l'ho provato anche su Winzoz XP): OSAYDE MSR90D

    - Per interagire con il lettore utilizzo un script js che mi permette di recuperare la stringa dalla scheda.

    - Lavorando sulla stringa riottengo Cognome, Nome e CF che inviato tramite una chiamata ajax ad un file php mi restituisce i dati decodificati.

    NB: per chi fosse interessato, lo script js l'ho reperito a questo link (serve l'account a dropbox). Consiglio di usare la jquery.js (vers. 3.1.1), e non quella presente nel file zip. Il file zip è questo:

    file zip - script js


    Buon lavoro!

    PS: il lettore smart-card legge la striscia magnetica, non il chip delle moderne tessere sanitarie. Quindi è valido solo per l'identificazione del paziente, non per entrare nella sua cartella digitale. Per quello serve un altro tipo di lettore (che ho comprato, ed è in standby.. e quando servirà proverò ad utilizzare..)!!
     
    Ultima modifica: 8 Febbraio 2017
  12. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.138
    Mi Piace Ricevuti:
    91
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    ho riprovato la lettura su win7, ho dovuto inserire lo script nei siti autorizzati di java ( vers 8 . 121 ) perché hanno "migliorato" la sicurezza e di nuovo funziona, legge il chip non la banda, il lettore è il solito distribuito il secolo scorso con il corriere della sera

    il software è il solito già indicato

    ps viene ben riconosciuto il cambio di tessera,
    la prova è stata fatta anche con una tessere "blu", nuova recentemente consegnata
     

    Files Allegati:

  13. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    39
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    Ciao Perseoclub, mi inserisco in questa discussione poiché voglio implementare la funzione di lettura smart card. Volevo chiederti se avevi provato anche le schede col chip, come avevi annunciato. Funzionano?. Nel frattempo hai aggiornato lo script js o continui a lavorare così come hai descritto qui? Grazie!!
     
  14. perseoclub

    perseoclub Utente Attivo

    Registrato:
    28 Novembre 2015
    Messaggi:
    70
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Ciao,

    No, alla fine non provato con il chip perché non mi occorre questa funzione.. al momento utilizzo con profitto lo script come già precedentemente postato.
     
  15. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    39
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    Grazie
     
  16. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    39
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    Scusa se ti disturbo ancora Perseoclub. In attesa che mi arrivi il lettore di card voglio programmare il lavoro. Se ho capito bene si procede così:
    - sul server installo jquery.cardswipe.js, MySwipe.php e jquery 3.x.x
    - installo il lettore che, se non ho capito male, non necessita di drivers
    Quando striscio la TS nella variabile cardData mi ritrovo automaticamente i dati della persona.
    E' davvero così semplice o mi sfugge qualcosa?
     
  17. perseoclub

    perseoclub Utente Attivo

    Registrato:
    28 Novembre 2015
    Messaggi:
    70
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Perdona il ritardo.. ma molto incasitato

    Io ho adattato il plugin per i miei scopi in questo modo:

    Codice:
    // ++++++++ CARDSWIPE ++++++++
    
        // Parses raw scan into name and ID number
        var scan = function (rawData) {
            //if (!$(".cbx").is(':checked')) return false;
            console.log(rawData);
            rawData = rawData.toUpperCase();
            var pattern = /^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/;
            console.log(rawData.substr(1, 16).search(pattern));
            if (!rawData.substr(1, 16).search(pattern)){
    
                vettore = rawData.split("  ");
    
                nome = vettore[1].replace("_", "").trim();
                cognome = vettore[0].substr(17).trim();
                cf = vettore[0].substr(1, 16).trim();
    
                $("[data-cardswipe='cognome']").val(cognome);
                $("[data-cardswipe='nome']").val(nome);
                $("[data-cardswipe='codiceFiscale']").val(cf);
    
                cardData=rawData;
    
                $.ajax({
                    url: "estrai_dati_cf.php",
                    dataType: "json",
                    type: "post", //I want a type as POST
                    data: "cf="+cf,
                    success: function(data){
                        var dataNasc = data.dataNasc;
                        var comune = data.comune;
                        var cod4 = data.cod4;
                        var sesso = data.sesso;
    
                        $("[data-cardswipe='nascitaData']").val(dataNasc);
                        $("[data-cardswipe='nascitaComune']").val(comune);
                        $("[data-cardswipe='nascitaCod4']").val(cod4);
                        if (sesso==='M') {
                            $("[data-cardswipe='sessoM']").prop("checked", true);
                        } else {
                            $("[data-cardswipe='sessoF']").prop("checked", true);
                        }
                    }
                });
    
                return cardData;
            } else {
                console.log("La tessera non è corretta o non leggibile!");
            }
        };
    
        // Initialize the plugin.
        $.cardswipe({
            parser: scan,
            enabled: true
        });
    Logicamente lanci questo script nella .js principale.. e le data-cardswipe='...' sono gli input dei miei form..

    PS: se migliori il parser condividilo.. a me questo va più che bene..

    PPS: "estrai_dati_cf.php" è un mio script php che dal codice fiscale estrae: sesso, luogo di nascita e data di nascita..
     
  18. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    39
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    Grazie Perseoclub, ottima modifica.
     
  19. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    39
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    Ciao Perseoclub, il tuo script funziona perfettamente. L'ho solo personalizzato per adattarlo al mio gestionale, ma nulla di trascendentale. Davvero ottimo lavoro (e ne ha tolto tanto a me:D). Volevo chiederti se hai sotto mano uno script che serva a leggere il chip della tessesa sanitaria. Se ho ben capito quello che striscia la carta non è altro che una tastiera che alla fine della lettura invia un return e quindi completa l'input. Il lettore di chip non è così e non saprei come inviare i dati letti alla applicazione che li dovrà elaborare.
    Grazie come sempre.
     
  20. msccmra51

    msccmra51 Nuovo Utente

    Registrato:
    9 Settembre 2017
    Messaggi:
    39
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Sesso:
    Maschio
    Ho semplificato il mio script di lettura della TS. In particolare, per l'uso che ne faccio, non ho avuto bisogno di JS. Dato che l'ottimo lettore suggerito da Perseoclub si comporta come una tastiera, ho creato una pagina php con un form ed un textedit di input chiamato TesseraSanitaria. Appena striscio la tessera il campo di input si valorizza automaticamente con la stringa in essa contenuta. Il form ha come action una pagina php di elaborazione, per esempio EstraiDati.php dove c'è il seguente codice:
    Codice:
    $ts= $_POST['TesseraSanitaria'];
    $codFis = substr($ts, 1, 16);
    $stringa = substr($ts, 17);
    $stringa = str_replace("  ","_", $stringa);
    $stringa = explode('_', $stringa);
    $nome = $stringa[0];
    $cognome = $stringa[1];
    
    La variabile $codFis può essere inviata ad uno script che ne controlla la validità e restituisce il luogo di nascita e tutto il resto. In rete se ne trovano molti.
    Da notare che la stringa della tessera sanitaria usa DUE spazi per separare il cognome dal nome, immagino per non confondersi con i cognomi composti tipo Di Giacomo. Quindi accertarsi che $stringa = str_replace(" ","_", $stringa) contenga due spazi. Spero possa servire a chi non ha bisogno si usare JS.
     
    Ultima modifica: 18 Marzo 2018
Sto caricando...

Condividi questa Pagina