Architettura del Sistema: Astro + Vanilla Logic
In questo ecosistema, Astro funge da scheletro statico per la interfaccia visiva (UI), mentre il comportamento dinamico (il “motore” clinico) è isolato in un blocco <script> che manipola il DOM, che è un po’ il “motore” delle pagine web, in modo reattivo. Questa scelta garantisce buone performance, portabilità e indipendenza da framework pesanti, con possibilità di avere uno strumento nei pochi kb di una pagina html leggibile su wualsiasi browser moderno.
Questa versione semplifica l’architettura logica del software di sorveglianza TBC, eliminando la prosa accademica e focalizzandosi sui componenti funzionali. Il sistema opera come una macchina a stati finiti dove l’interfaccia reagisce agli input clinici in tempo reale.
1. Gestione Navigazione (State Switching)
Il programma non ricarica la pagina. Usa una funzione per nascondere il blocco attuale e mostrare il successivo. La funzione showStep manipola la visibilità delle sezioni tramite CSS.
function showStep(id) {
// Nasconde tutti i passaggi
document.querySelectorAll(".tbc-step")
.forEach(s => s.classList.remove("active"));
// Attiva lo step richiesto e resetta lo scroll
document.getElementById(`step-${id}`).classList.add("active");
window.scrollTo(0, 0);
}
2. Motore Decisionale Anamnestico
Prima del test, il software analizza le controindicazioni. Se l’utente ha fattori di interferenza (es. vaccino BCG), il sistema suggerisce il test IGRA (QuantiFERON) rispetto alla Mantoux (TST).
// Analisi dei fattori di rischio per scelta test
const checks = {
bcg: getCheck("q-bcg"),
immuno: getCheck("q-immuno"),
prevPos: getCheck("q-prev-pos")
};
if (checks.bcg || checks.prevPos) {
// Logica di prevenzione falsi positivi
advice = "Metodo: Preferire IGRA (QuantiFERON).";
} else if (getCheck("q-recent-vac")) {
// Gestione interferenza biologica
warning = "Rischio Falso Negativo. Rimandare di 4 settimane.";
}
3. Calcolo Finestra Biologica (T1)
In caso di esposizione accidentale (contatto con paziente infetto), il protocollo prevede un re-test dopo la “finestra” di 12 settimane (84 giorni) se il primo test è negativo.
const t0Date = new Date(t0Input.value);
const t1Date = new Date(t0Date);
// Incremento automatico di 12 settimane medico-legali
t1Date.setDate(t0Date.getDate() + 84);
const scadenzaT1 = t1Date.toLocaleDateString("it-IT");
4. Gerarchia degli Esiti (Priorità Clinica)
L’algoritmo processa i dati seguendo una scala di gravità decrescente. La rilevazione di sintomi o RX positivo ha la priorità assoluta su qualsiasi altro dato.
| Priorità | Condizione | Azione Software |
|---|---|---|
| 1 (Massima) | Sintomi + / RX + | Blocco Idoneità (Sospetta TB attiva) |
| 2 | IGRA + / TST > 10mm | Idoneità con prescrizione (Infezione Latente) |
| 3 | Test Negativi | Idoneità Piena / Programmazione Follow-up |
// Logica di filtraggio esiti
if (symptoms || rx === "pos") {
esito = "NON IDONEO (Invio a specialista)";
} else if (igra === "pos" || tst >= 10) {
esito = "IDONEO CON PRESCRIZIONE (Terapia preventiva)";
} else {
esito = "IDONEO (Sorveglianza periodica)";
}
5. Configurazione Sorveglianza (DVR)
La periodicità dei controlli futuri viene iniettata nel verbale in base alla classe di rischio del reparto definita nel Documento di Valutazione dei Rischi.
// Mapping Rischio -> Periodicità
const protocolli = {
"C": "Controllo biennale (Rischio Medio)",
"D": "Controllo annuale (Rischio Alto)",
"E": "Controllo semestrale (Cluster/Emergenza)"
};
let frequenza = protocolli[riskLevel] || "Solo Baseline";
Note Tecniche Finali
- Performance: L’uso di Vanilla JS riduce il peso della pagina a pochi KB.
- Sicurezza: La sezione “Terapia” viene mostrata nel DOM solo se i trigger di positività sono attivi (riduzione rumore visivo).
- Standardizzazione: L’output finale genera una stringa pronta per il caricamento in cartella clinica informatizzata.
LO STRUMENTO DESCRITTO NON SOSTITUISCE IN ALCUN MODO LIL GIUDIZIO CLINICO
Questo articolo descrive una minima parte del codice utilizzato e vuole essere una semplice presentazione delle potenzialità dell’uso di strumenti informatici nell’implementazione di algoritmi decisionali in ambito sanitario.
In basso il link allo strumento interattivo descritto in questo tutorial e altri link a ulteriori articoli correlati in tema di TBC e prevenzione.
Algoritmo Decisionale per il Rischio TBC: Tool online
- Algoritmo Decisionale Sorveglianza TBC – Tool interattivo per la gestione dei test e del rischio professionale.
Bibliografia e Riferimenti
Riferimento Documentale: Accordo Conferenza Stato-Regioni 7 febbraio 2013 - Ministero della Salute, Direzione Generale della Prevenzione.
- Premessa e Valutazione del Rischio (Parte 1) – Classificazione delle strutture e analisi del DVR.
- Misure di Controllo, Isolamento e DPI (Parte 2) – Protezione tecnica e facciali filtranti FFP2/FFP3.
- Sorveglianza Sanitaria ITBL (Parte 3) – Protocolli basali e periodici per operatori e studenti.
- Vaccinazione BCG (Parte 4) – Evoluzione normativa e obbligatorietà.
- Terapia dell’Infezione Latente (Parte 5) – Gestione farmacologica dei soggetti positivi.
- Formazione e Informazione (Parte 6) – Obblighi educativi e riferimenti finali.