Il presente documento si prefigge lo scopo di dettagliare i processi correlati alle tipologie di verifica Green Pass in Italia, onde agevolare gli sviluppatori terzi nell'adeguamento di librerie / applicazioni software per la gestione delle validazioni [1].
Nelle sezioni successive sono pertanto riportati i tracciati dei flussi di validazione attualmente previsti, mostrando le logiche dei relativi controlli attraverso esempi di pseudocodice - basato sul codice SDK Android/Kotlin ufficiale VerificaC19.
Si riporta un breve elenco di alcuni acronimi e termini specifici utilizzati nel documento.
Termine | Descrizione |
---|---|
SDK | Software Development Kit |
DGC | Digital Green Certificate (in Italia conosciuto col nome di GreenPass) |
DRL | DGC Revocation List |
Blacklist | Lista di blocco |
Validation Rules | Regole nazionali di validazione dei GreenPass (tipologie certificati, durate, ..) |
UVCI | Unique Vaccination Certificate Identifier |
CUEV | Codice Univoco Esenzione Vaccinale |
dn | Dose Number (Numero della dose somministrata) |
sd | Total Series of Doses (Totale dosi del ciclo / ciclo + richiami) |
mp | Medicinal Product (Codice prodotto vaccino) |
co | Country of Vaccination/Test/Recovery (Nazione di vaccinazione/tampone/guarigione) |
3G | Verifica BASE (Vaccinazione / Guarigione / Tampone / Esenzione) |
2G (!) | Verifica RAFFORZATA (Vaccinazione / Guarigione / Esenzione) |
BOOSTER (!) | Verifica VISITATORI RSA (Richiamo / Ciclo Completo + Tampone / Guarigione + Tampone / Esenzione + Tampone) |
SCHOOL (!) | Verifica STUDENTI (Richiamo / Ciclo Completo da meno di 120gg / Guarigione da meno di 120gg / Esenzione) (!) |
WORK (!) | Verifica LAVORO (Vaccinazione / Guarigione / Tampone under 50 / Esenzione) |
ENTRY_ITALY (!) | Verifica INGRESSO IT (Richiamo / Ciclo completo da meno di 270gg (+ Tampone per NOT_EMA o più di 180gg) / Guarigione / Tampone) |
IT | Certificato emesso da Italia |
NOT_IT | Certificato emesso da Stato estero |
EMA | Medicinal Product in elenco autorizzati EMA (incluso Sputnik solo SM - San Marino) |
NOT_EMA | Medicinal Product NON in elenco EMA |
(!) Da Febbraio 2022 l'utilizzo della Tipologia di verifica STUDENTI (scanmode SCHOOL) era consentito solo alle app ufficiali VerificaC19 per iOS e Android. Da Aprile 2022 tale tipologia di verifica è stata rimossa anche dalle app ufficiali.
Da Aprile 2022 è stato rimosso anche il supporto per la tipologia di verifica LAVORO (scanmode WORK).
Da Giugno 2022 è stato rimosso anche il supporto per la tipologia di verifica INGRESSO IT (scanmode ENTRY_ITALY).
Da Gennaio 2023 è stato rimosso anche il supporto per le tipologie di verifica VISITATORI RSA (scanmode BOOSTER) e RAFFORZATA (scanmode 2G).
Pertanto tali modalità non devono essere più implementate all'interno degli SDK terzi (autorizzati dal Ministero della Salute in conformità al DPCM 12/10/2021).
Il processo di verifica GreenPass è sintetizzabile nella seguente sequenza di controlli :
-
Conformità a specifiche tecniche DGC di codifica e schema certificato.
-
Validità della firma del certificato.
-
Assenza del codice univoco UVCI (vaccinazione / guarigione / tampone) o CUEV (esenzione) del certificato nella blacklist in Validation Rules e nella lista revoche in DRL.
-
Validità in funzione dei criteri combinati di Validation Rules (tipologie DGC, durate) + Impostazione tipologia di verifica
Nel rispetto delle disposizioni normative e delle indicazioni fornite dagli Organi competenti, alla tipologia BASE (3G) di verifica dei DGC per Vaccinazione / Guarigione / Tampone sono state gradualmente aggiunte le tipologie RAFFORZATA (2G) - VISITATORI RSA - STUDENTI - LAVORO - INGRESSO IT [2], che prevedono criteri addizionali per OK validazione.
Successivamente, in virtù delle disposizioni per il superamento delle misure di contrasto alla diffusione dell'epidemia da COVID-19 [2b], sono state rimosse le tipologie STUDENTI e LAVORO.
Dal 1 giugno 2022 la certificazione verde Covid-19 non è più necessaria per l'ingresso in Italia dai Paesi dell’Unione Europea e da Stati Terzi. Pertanto, è stata successivamente rimossa anche la tipologia INGRESSO IT.
Ne deriva la seguente tabella di riferimento per gli esiti di validazione in ambito di applicazione.
Status | Descrizione | Semaforo | Note |
---|---|---|---|
NOT_EU_DCC | Errore di lettura del QR Code, oppure non è il Certificato verde COVID-19 | ROSSO | |
REVOKED | Certificazione revocata | ROSSO | (1) |
EXPIRED | Certificazione scaduta | ROSSO | (2) |
NOT_VALID_YET | Certificazione non ancora valida | ROSSO | (2) |
NOT_VALID | Certificazione non valida | ROSSO | |
VALID | Certificazione valida | VERDE |
Note :
(1) L'output dell'esito
REVOKED
è ammesso solo in ambito test/debug. In ambito produzione/release va invece utilizzato l'esitoNOT_VALID
qualora il KO validazione sia dovuto a presenza di UVCI/CUEV in blacklist/DRL.(2) In ambito produzione/release è possibile utilizzare in alternativa l'esito generico
NOT_VALID
, qualora lo scenario internal in cui avvengano le validazioni non richieda di dettagliare i KO per inizio/fine validità dei certificati, consentendo quindi di minimizzare ulteriormente il trattamento dati in esito validazione a seguito di KO.
I vari scenari in ambito produzione/release con i rispettivi flussi di validazione DGC sono rappresentati nel seguente diagramma di flusso.
Nei paragrafi successivi vengono analizzati in dettaglio i flussi specifici & in funzione della tipologia DGC sottoposta a validazione.
Questa è la tabella degli esiti possibili per i nuovi certificati CRT E (esenzione) - fuori schema DGC.
Tipologia | BASE |
---|---|
E | VALID o NOT_VALID |
if (EsitoVerificaBase(CRT-E) == VALID) {
return CertificateStatus.VALID
}
else return CertificateStatus.NOT_VALID
Questa è la tabella degli esiti possibili per DGC T (tampone).
Tipologia | BASE |
---|---|
T (PCR/RAT) | VALID o NOT_VALID |
if (EsitoVerificaBase(DGC-T) == VALID) {
return CertificateStatus.VALID
}
else return CertificateStatus.NOT_VALID
Questa è la tabella degli esiti possibili per DGC R (guarigione) e R-PV (guarigione post vaccino).
Tipologia | Condizione | BASE |
---|---|---|
R | DGC IT | VALID o NOT_VALID |
R | DGC NOT_IT <180gg | VALID o NOT_VALID |
R | DGC NOT_IT >=180gg (!) | VALID o NOT_VALID |
R-PV | DGC IT | VALID o NOT_VALID |
(!) Caso previsto nelle recenti disposizioni normative [2], ma non riscontrabile in ambito produzione con le attuali medicinal rules. Queste prevedono infatti la medesima durata di 180gg sia per i certificati DCG R base di guarigione emessi in Italia che per quelli emessi da Stati esteri.
if (EsitoVerificaBase(DGC-R) == VALID) {
return CertificateStatus.VALID
}
else return CertificateStatus.NOT_VALID
Pertanto, anche in questo caso la gestione flussi in funzione della tipologia di verifica è comunque semplice.
Non vi è particolare complicazione di logica, sebbene contestualmente all'introduzione della verifica Booster (rimossa da Gennaio 2023) sia stato aggiunto anche il controllo per i DGC R PV, cioè i GreenPass di guarigione post-vaccinazione.
Se si è contratta l’infezione Covid-19 oltre il quattordicesimo giorno dalla somministrazione della prima dose di vaccino oppure dopo il completamento del ciclo vaccinale primario oppure dopo la dose di richiamo (booster), la Certificazione è generata entro il giorno seguente l’emissione del certificato di guarigione.
Questa nuova Certificazione verde COVID-19 per guarigione post vaccinazione
co = IT
è emessa a partire dal 28 dicembre 2021.
Per quanto riguarda la validazione in funzione della modalità impostata per tipologia di verifica, i DGC R PV vengono gestiti alla stregua dei DGC R base di guarigione co = IT
.
Vengono riconosciuti / distinti da quelli base, onde validarli correttamente in virtù della diversa scadenza, tramite il controllo delle entry extendedKeyUsage
e della corrispondenza del campo co = IT
(la diversa scadenza dei DGC R PV vale solo per quelli emessi in Italia) :
OID | DGC R |
---|---|
1.3.6.1.4.1.1847.2021.1.3 | Guarigione PV co = IT (540gg dal 07/02/2022) |
1.3.6.1.4.1.0.1847.2021.1.3 | Guarigione PV co = IT (540gg dal 07/02/2022) |
Questa è la tabella degli esiti possibili per DGC V (vaccinazione).
Tipologia | Condizione | BASE |
---|---|---|
V Parziale | EMA | VALID o NOT_VALID |
V Parziale | NOT_EMA | NOT_VALID |
V Ciclo | EMA | VALID o NOT_VALID |
V Ciclo | NOT_EMA | NOT_VALID |
V Richiamo | EMA | VALID o NOT_VALID |
V Richiamo | NOT_EMA | NOT_VALID |
Rispetto ai flussi dei casi Tampone e Guarigione vi è un controllo ulteriore di validazione, onde verificare se il prodotto vaccinale rientri o meno in elenco autorizzati EMA (incluso Sputnik solo SM - San Marino).
Non è invece più necessario distinguere le tipologie DGC V Parziale / Ciclo / Richiamo ai fini della validazione, dato che non influenza gli esiti di validazione in modalità di verifica Base.
Nota :
Qualora si intenda comunque mantenere un controllo internal (non necessario/richiesto ai fini di validazione n.d.r.) per la verifica tipologia DGC-V, queste sono le condizioni relative al rapporto dn/sd (numero della dose somministrata / totale dosi).
dn/sd | DGC Vaccinazione |
---|---|
< 1 | Vaccinazione Parziale |
> 1 | Vaccinazione Richiamo |
= 1 | dipende.. servono altre condizioni |
La condizione dn=sd NON è ancora sufficiente, onde distinguere correttamente DGC V Ciclo Completo da DGC V Richiamo. Servono infatti due ulteriori condizioni relative a :
-
Codice prodotto vaccinale (mp)
-
Valore ordinale dello shot somministrato (dn)
La prima (mp) consente infatti di distinguere tra le vaccinazioni con ciclo base 2 dosi e quelle con ciclo monodose. In tal senso la condizione è agevole da implementare, essendovi un solo Medicinal Product monodose definito nelle Validation Rules = EU/1/20/1525 Jannsen - in Italia più noto con il nome Johnson&Johnson.
Unitamente alla seconda condizione (dn) è possibile definire la seguente tabella di riferimento per i controlli internal - secondo le regole di standardizzazione delle codifiche dn/sd per i DGC-V, approvate in data 21 Dicembre 2021 & effettive dal 1 Febbraio 2022 [3].
dn/sd | Medicinal Product | Vaccinazione |
---|---|---|
1/1 | JOHNSON | Ciclo Completo |
1/2 | any | Parziale |
2/1 | any | Booster |
2/2 | JOHNSON | Booster |
2/2 | any tranne JOHNSON | Ciclo Completo |
3/1 | any | Booster |
3/2 | any | Booster |
3/3 | any | Booster |
4/1 | any | Booster |
4/4 | any | Booster |
Questo è quindi l'attuale flusso di controllo per i certificati DGC-V.
if (dn < sd) TipologiaVaccino = "PARZIALE"
if (dn > sd) TipologiaVaccino = "RICHIAMO"
if (dn == sd) {
if (((MedicinalProduct == JOHNSON) AND (dn >=2))
OR ((MedicinalProduct != JOHNSON) AND (dn >=3))
) TipologiaVaccino = "RICHIAMO"
else TipologiaVaccino = "CICLO"
}
if (CertificatoScaduto == VERO) return CertificateStatus.EXPIRED
if (CertificatoNonAttivo == VERO) return CertificateStatus.NOT_VALID_YET
if (VaccinoEMA == FALSO) {
return CertificateStatus.NOT_VALID
}
if (EsitoVerificaBase(DGC-V) == VALID) {
return CertificateStatus.VALID
}
else return CertificateStatus.NOT_VALID
- Repository di SDK/librerie per validazione GreenPass - sviluppate da terze parti in ottemperanza ai commi 12 e 13 del DPCM 12 ottobre 2021 & approvate del Ministero della Salute - VerificaC19 SDK Onboarding
- Disposizioni normative di aggiunta Tipologia Verifica Rafforzata - Art.5 DL 172/2021 26/11/2021
- Disposizioni Normative di aggiunta Tipologia Verifica Visitatori RSA - Art.7 DL 221/2021 24/12/2021
- Disposizioni Normative di aggiunta Tipologia Verifica Studenti - Art.4 DL 1/2022 07/01/2002
- Disposizioni Normative di aggiunta Tipologia Verifica Lavoro - Art.1 DL 1/2022 07/01/2022
- Disposizioni Normative di aggiunta Tipologia Verifica Ingresso IT - Art.3 DL 5/2022 04/02/2022
- Disposizioni normative per il superamento delle misure di contrasto alla diffusione dell'epidemia da COVID-19 - DL 24/2022 24/03/2022