🏥 Med-Anonymizer
Servizio REST open source per la de-identificazione automatica di informazioni personali sensibili (PII) da testi clinici italiani, risorse FHIR e messaggi HL7 v2, basato sui modelli AI italiani di OpenMed.
⚙️ Come funziona
-
1
Invio del testo — il client invia il documento tramite REST (JSON, testo libero, FHIR o HL7).
-
2
Chunking automatico — per documenti lunghi (>1 200 char) il testo viene diviso in segmenti ai confini di paragrafo/frase.
-
3
NER con OpenMed — il modello BERT token-classification rileva le entità PII con posizione e score di confidenza.
-
4
Redazione — le entità vengono sostituite con
[ENTITY_TYPE]o[REDACTED]preservando offset e struttura. -
5
Risposta — il testo anonimizzato, le entità rilevate e i metadati vengono restituiti in JSON.
🤖 Modelli OpenMed disponibili
| Chiave | Modello HuggingFace | Params | F1 Micro | Note |
|---|---|---|---|---|
| italian-superclinical-base | OpenMed-PII-Italian-SuperClinical-Base-184M-v1 | 184M | 0.960 | default DeBERTa-v3-base · veloce |
| italian-bigmed-large | OpenMed-PII-Italian-BigMed-Large-560M-v1 | 560M | 0.967 | XLM-RoBERTa-large · note cliniche |
| italian-superclinical-large | OpenMed-PII-Italian-SuperClinical-Large-434M-v1 | 434M | 0.973 | DeBERTa-v3-large · #1 IT |
Tutti i modelli sono ottimizzati per l'italiano e valutati sul dataset AI4Privacy PII Masking 400k (subset italiano).
🔌 Endpoint REST
/api/v1/health — health check e modelli caricati/api/v1/models — lista modelli disponibili e metriche/api/v1/anonymize/text
Anonimizza testo clinico libero. Chunking automatico per testi lunghi.
/api/v1/anonymize/fhir
Anonimizza una risorsa FHIR R4 (JSON) ricorsivamente.
/api/v1/anonymize/hl7
Anonimizza messaggi HL7 v2.x preservando la struttura a segmenti.
/api/v1/detect
Solo rilevamento NER (senza redazione). Restituisce entità con posizione e score.
/docs — Swagger UI interattivo · /redoc — ReDoc🏷️ Categorie PII rilevabili (54 tipi)
👤 Identità personale
🆔 Identificatori
📍 Localizzazione
📞 Contatti & Rete
📅 Temporale
🏢 Organizzazione
🚀 Quick start
Anonimizza con curl:
curl -X POST http://localhost:8000/api/v1/anonymize/text \
-H "Content-Type: application/json" \
-d '{
"text": "Paziente Mario Rossi, SSN: 123-45-6789",
"model": "biomedbert-base"
}'
🏗️ Architettura
🔒 Conformità
-
✓
HIPAA Safe Harbor — rileva tutte le 18 categorie PHI
-
✓
GDPR Art. 4(5) — pseudonimizzazione dei dati personali
-
⚠
Strumento assistivo: per applicazioni critiche verificare sempre il risultato