Sicurezza AI Assistant
Versione 1.0 — 10 maggio 2026
Questa pagina spiega le misure tecniche e organizzative che OmniNeo
applica per garantire che l'AI Assistant non riceva né conservi
dati identificativi di pazienti.
La nostra posizione è chiara: OmniNeo è uno strumento didattico
per professionisti sanitari abilitati. Non è progettato per ricevere dati
identificativi di pazienti. Anthropic (USA, fornitore del modello
Claude) è coperto da Standard Contractual Clauses 2021 e da impegno
contrattuale di non utilizzare i dati per training.
1. Cosa NON conserviamo
- Il contenuto delle conversazioni con l'AI Assistant non viene mai persistito sui server OmniNeo. Conserviamo solo conteggi numerici (crediti consumati, modello scelto, data) per fatturazione e statistiche.
- Gli allegati caricati (immagini, PDF) non vengono mai salvati sui server OmniNeo. Vengono solo trasmessi ad Anthropic per l'analisi e immediatamente scartati al termine della richiesta.
- I file inviati ad Anthropic sono usati solo per generare la risposta. Anthropic, secondo le sue Commercial Terms, non utilizza i dati dell'API for Business per addestramento dei modelli.
2. Filtro automatico anti-PII (Fase 2)
Ogni messaggio inviato all'AI Assistant viene analizzato dal nostro filtro
server-side prima di essere trasmesso ad Anthropic.
Se rileva potenziali dati identificativi del paziente, il messaggio viene
bloccato con codice HTTP 422 e l'utente riceve un avviso
con guida all'anonimizzazione.
Categorie di dati rilevati e bloccati
- Codice fiscale italiano (16 caratteri alfanumerici)
- Tessera sanitaria (in contesto "TS" / "tessera")
- DNI/NIE spagnoli (8 cifre + lettera; X/Y/Z + 7 cifre + lettera)
- SSN statunitense (XXX-XX-XXXX)
- NHS UK number (10 cifre in contesto NHS/paziente)
- IBAN bancari (qualsiasi paese)
- Numeri di telefono italiani (+39 / 3xx / 0xx), statunitensi (+1) e spagnoli (+34)
- Nomi propri preceduti da prefissi clinici in italiano (Sig./Sig.ra/paziente + Cognome), inglese (Mr./Mrs./Dr./patient + Surname) e spagnolo (Sr./Sra./paciente + Apellido)
- Numeri di cartella clinica ("cartella n. NNN")
- Date di nascita complete in contesto anagrafico ("nato il GG/MM/AAAA")
- Email personali diverse da quella dell'utente loggato
❌ Esempio bloccato: "Il paziente Mario Rossi (CF RSSMRA80A01H501Z) presenta ittero a 5 giorni di vita, bilirubina 18 mg/dL..."
✓ Esempio accettato: "Neonato a termine di 5 giorni con ittero ingravescente, bilirubina totale 18 mg/dL, picco a 72h..."
Il filtro è eseguito anche in tempo reale nel browser mentre
l'utente digita: il bordo della casella di testo diventa giallo e appare un
banner di avviso. Questo non blocca l'invio (il blocco è server-side), ma
riduce la probabilità di inviare messaggi che verrebbero rifiutati.
3. Consenso esplicito per upload allegati
Quando si carica un'immagine o un PDF nell'AI Assistant, OmniNeo mostra
una finestra di consenso obbligatorio con tre dichiarazioni
da spuntare prima dell'upload:
- Il file NON contiene nome, cognome, data di nascita, codice fiscale, numero di cartella o altri identificativi del paziente.
- Le immagini sono anonimizzate (oscurati metadati, etichette, badge ospedalieri, codici a barre).
- L'utente comprende che il file viene inviato ad Anthropic (USA) per l'analisi e che OmniNeo non è un dispositivo medico.
Senza tutte e tre le spunte, il bottone "Carica" rimane disabilitato.
OmniNeo registra in modo anonimo solo il fatto che il consenso è stato dato
(no contenuto del file, no metadati identificativi).
4. Vincoli sul prompt di sistema
Anche se il filtro server-side dovesse non rilevare un dato identificativo
(es. un nome proprio in forma dialettale non riconosciuto dalle regex),
il prompt di sistema dell'AI ha un'ulteriore rete di sicurezza:
istruzioni esplicite per rifiutare di rispondere e
invitare l'utente ad anonimizzare qualsiasi dato paziente
identificativo presente nel messaggio.
5. Cosa fare se ti accorgi di aver inviato dati paziente
Anche con tutte le misure sopra, può capitare che un dato identificativo
passi accidentalmente. Cosa fare:
- Lato OmniNeo: il contenuto del messaggio non è stato salvato sui nostri server. Il log interno (security_events) registra solo le categorie di dati rilevati, mai il testo. Niente da cancellare.
- Lato Anthropic: il dato è stato trasmesso ai loro server per l'inferenza. Anthropic dichiara di non usare i dati dell'API for Business per training. Per richiedere la cancellazione contatta privacy@anthropic.com citando l'ID conversazione (visibile nei tuoi log dei conteggi crediti).
- Contatta noi a privacy@omni-test.it se hai dubbi o se ritieni che il filtro abbia avuto un falso negativo (così possiamo migliorarlo).
6. Documentazione tecnica
Per chi volesse leggere il codice:
- Filtro server-side:
site/api/lib/PiiFilter.php nel repository OmniNeo (privato)
- Filtro client-side:
site/ai-widget.js
- Logging strutturato: tabella
security_events, evento ai_pii_blocked (registra categorie + user_id, mai il contenuto)
Per informazioni più ampie su come OmniNeo tratta i tuoi dati personali, consulta la
Privacy Policy.
Contatti privacy: privacy@omni-test.it
Disclosure responsabile vulnerabilità: security@omni-test.it