Skip to content

Repository files navigation

Intervallo

PWA per il calcolo dell'intervallo libero da terapia fra l'ultima somministrazione di un antitrombotico e un blocco neurassiale o periferico.

Tutto gira nel browser: nessun dato del paziente lascia il dispositivo, nulla viene salvato o trasmesso.

Fonti

ASRA PM, 5ª ed. Kopp SL, Vandermeulen E, McBane RD, Perlas A, Leffert L, Horlocker T. Regional anesthesia in the patient receiving antithrombotic or thrombolytic therapy: ASRA PM Evidence-Based Guidelines (fifth edition). Reg Anesth Pain Med 2025;0:1–29. doi:10.1136/rapm-2024-105766
ESAIC/ESRA Kietaibl S, Ferrandis R, Godier A, et al. Regional anaesthesia in patients on antithrombotic drugs. Joint ESAIC/ESRA guidelines. Eur J Anaesthesiol 2022;39:100–132. doi:10.1097/EJA.0000000000001600

Nessun testo delle linee guida è riprodotto verbatim. Entrambi i documenti sono coperti da copyright con divieto esplicito di riproduzione. L'app codifica i dati (soglie, ore, gradi di raccomandazione — fatti non tutelabili) e ne riporta una parafrasi in italiano, con citazione puntuale e DOI su ogni schermata.

Decisioni di progetto, dichiarate

Scelta Motivo
ASRA come fonte primaria del conto alla rovescia; ESAIC mostrata a fianco. Quando le due divergono l'app segnala la differenza e non sceglie.
Range → estremo superiore. Es. clopidogrel 5–7 gg → conta 7 gg, tacca a 5 gg sulla barra. Coerente con l'impostazione antiemorragica di ASRA.
Nessun fallthrough silenzioso. Se manca la ClCr (o l'età, per il fondaparinux) l'app dice "non calcolo". Un numero costruito su un'ipotesi è peggio di nessun numero.
Peso corretto (AdjBW = IBW Devine + 0,4 × eccesso) se BMI ≥ 30 e altezza inserita. Inferenza dell'app, non prevista dalle linee guida, dichiarata nell'interfaccia. Senza correzione la ClCr è sovrastimata e l'intervallo troppo corto — l'errore andrebbe nella direzione sbagliata.
Soglia "anziano" = 75 anni per il fondaparinux. ASRA distingue young/elderly senza definirli. Inferenza dell'app, marcata come tale a schermo.

Fuori scope

Terapie antitrombotiche combinate · emergenze · paziente pediatrico · rischio emorragico della chirurgia. Con più antitrombotici in corso vale l'intervallo più lungo (ESAIC R19, 1C).

Scheda "Embricazione" (v1.1.0)

Stratificazione del rischio tromboembolico secondo ASRA Tabella 3 (adattata da Douketis) su tre indicazioni — protesi valvolare meccanica, fibrillazione atriale, TEV — e decisione sul ponte.

Scelta Motivo
Default: non embricare. Il ponte compare solo dove le fonti lo sostengono. ASRA registra che l'entusiasmo per il bridging si è raffreddato: il rischio tromboembolico non è sempre migliorato, il sanguinamento perioperatorio è aumentato. ACCP raccomanda contro il bridging nel rischio basso-moderato.
Due regole ASRA tenute separate, non fuse. Per protesi valvolari e TEV il testo ASRA è più permissivo della regola generica ACCP (embrica anche nel rischio moderato). L'app segue la regola specifica e segnala la divergenza, confrontando la direzione della decisione e non l'etichetta ("si può usare" e "si può considerare" concordano).
Inizio EBPM non ha una data. ASRA lo lega all'INR ("quando scende sotto il limite inferiore del range target"), non al calendario. L'app non inventa un G−3.
Controllo di coerenza fra i due moduli. L'ultima dose di EBPM "la mattina del giorno precedente" deve anche soddisfare le 24 h dell'EBPM ad alta dose. L'app calcola l'intervallo reale e segnala se scende sotto le 24 h. Assume le 08:00 come "mattina" — inferenza dichiarata, ASRA non dà l'ora.
CHA₂DS₂-VASc 0, oppure 1–4 con pregresso ictus/TIA → "non classifico". La Tabella 3 non li contempla: la fascia bassa parte da 1 e richiede l'assenza di pregresso ictus/TIA.

Contraddizione fra le fonti, esposta nell'app: ASRA considera sicura la rimozione del catetere entro 24 h dall'inizio del warfarin (Parvizi, >12 000 pazienti); ESAIC R1 (1C) prescrive che nessuna dose di AVK sia somministrata finché il catetere è in sede, usando nel frattempo EBPM a dose bassa (2C).

Buco dichiarato: nessuna delle due fonti specifica la durata dell'overlap EBPM–AVK fino all'INR terapeutico. La regola classica (≥5 giorni e INR ≥2 per 2 giorni consecutivi) viene da ACCP, non è in questi documenti, e non è codificata.

Modo 2 — Ponte antiaggregante (v1.2.0)

Scenario ESAIC R20: catetere neurassiale o profondo già in sede, e il paziente ha bisogno con urgenza di una doppia antiaggregazione (SCA o stent nel postoperatorio). Il catetere non si può rimuovere sotto DAPT e la DAPT non si può rimandare.

Protocollo: mantenere ASA 100 mg · sostituire il secondo antiaggregante con tirofiban (stop 8 h) o cangrelor (stop 3 h) · pausa dell'anticoagulante concomitante (ENF bassa 4 h, EBPM bassa 12 h) · rimozione · ripresa del P2Y12 solo dopo la rimozione (R17, 2C).

Scelta Motivo
Il "preavviso" è il max fra le pause, non la somma. Le sospensioni corrono in parallelo. Con EBPM bassa (12 h) e tirofiban (8 h) il preavviso è 12 h, e l'app dice quale farmaco lo detta.
Interazione recettoriale cangrelor / P2Y12 orali codificata da ASRA. Clopidogrel e prasugrel non funzionano durante l'infusione di cangrelor (il metabolita non lega il recettore occupato) → vanno dati subito dopo la sospensione. Il ticagrelor ha un sito distinto → può essere dato durante.
Le due fonti conciliate esplicitamente. ASRA vuole clopidogrel subito dopo lo stop del cangrelor; ESAIC vuole la dose successiva solo dopo la rimozione. L'app calcola il primo istante che soddisfa entrambe: il momento della rimozione.
Dose di carico ASA + clopidogrel = scenario a sé. ESAIC prevede la rimozione immediata, prima che il clopidogrel raggiunga il pieno effetto (2C). Nessun ponte: la finestra è farmacocinetica. ESAIC non la quantifica e l'app non la inventa.

Tutto grado 2C — il livello più debole. Nessuno studio confronta il ponte con l'alternativa. ESAIC lo propone come gestione ragionevole di uno scenario in cui ogni opzione è cattiva.

Convergenze verificate: tirofiban stop 8 h (ESAIC) coincide con l'estremo superiore del recupero piastrinico 4–8 h (ASRA); cangrelor 3 h è identico nelle due fonti, derivato indipendentemente.

Non coperto: bridging pre-operatorio dei DOAC (assente da entrambe le fonti); soglie stent/DAPT — quando iniziare a preoccuparsi in base al tipo di stent e al tempo trascorso (assenti da entrambe — richiedono ESC/ACC).

Copertura

20 molecole/regimi: apixaban, rivaroxaban, edoxaban, dabigatran, warfarin (+ nota acenocumarolo e fenprocumone), EBPM dose bassa e alta, ENF e.v. e s.c. (tre fasce), fondaparinux dose bassa e alta, ASA dose bassa e alta, clopidogrel, prasugrel, ticagrelor, cangrelor, cilostazolo, inibitori GP IIb/IIIa, inibitori parenterali della trombina, fibrinolitici. Per ognuno: intervallo pre-procedura, ripresa post-procedura, gestione del catetere in sede.

Struttura

index.html            guscio — carica rules.js, poi app.js (l'ordine conta)
app.css               fogli di stile
app.js                motore + rendering (IIFE, script classico)
rules.js              DATI DELLE LINEE GUIDA — separati dalla UI
test.cjs              105 asserzioni sui valori delle linee guida
manifest.webmanifest  · sw.js · icon*.png|svg

Script classici, non moduli ES. Scelta obbligata: i moduli ES non si caricano da file:// (il browser li blocca per CORS, origin null), quindi l'app non partirebbe aprendo index.html con un doppio clic. rules.js espone globalThis.INTERVALLO_RULES, app.js è una IIFE che lo legge ed espone globalThis.INTERVALLO_ENGINE per i test. La separazione dati/UI resta intatta.

Uso in locale

Doppio clic su index.html. Funziona offline e senza server. Unica differenza: il service worker non si registra da file:// (richiede HTTPS) — irrilevante, i file sono già sul disco.

Pubblicazione su GitHub Pages

git init && git add . && git commit -m "Intervallo v1.2.0"
git branch -M main
git remote add origin git@github.com:<utente>/intervallo.git
git push -u origin main

Poi Settings → Pages → Source: Deploy from a branch → main / (root). Tutti i percorsi sono relativi: funziona anche in sottocartella (utente.github.io/intervallo/). Il service worker richiede HTTPS — GitHub Pages lo fornisce.

Test

node test.cjs

105 asserzioni: ogni soglia renale, ogni fascia di dose, entrambe le fonti, Cockcroft-Gault (mg/dL e µmol/L, correzione del peso), e un controllo di completezza dei dati.

Aggiornare i dati

Modifica solo rules.js, poi alza META.version e la costante CACHE in sw.js (altrimenti i client restano sulla versione in cache). La UI non contiene valori clinici.

About

Regional anesthesia and anticoaugulation

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages