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.
| 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.
| 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. |
Terapie antitrombotiche combinate · emergenze · paziente pediatrico · rischio emorragico della chirurgia. Con più antitrombotici in corso vale l'intervallo più lungo (ESAIC R19, 1C).
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.
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).
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.
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.
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.
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 mainPoi 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.
node test.cjs105 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.
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.