I numeri di quattro poliambulatori, in un cruscotto solo.
Un gruppo romano di quattro poliambulatori leggeva i propri numeri su un QLIK alimentato da estrazioni non più supportate e su un Excel dei compensi tenuto a mano. Abbiamo costruito un cruscotto che parte dai dati del gestionale.
Per un gruppo di quattro poliambulatori a Roma abbiamo costruito un cruscotto direzionale con una scheda per ogni sede, una vista di gruppo e i confronti anno su anno. I dati arrivano dagli export del gestionale usato in accettazione. Le prime versioni erano pagine HTML statiche generate da uno script Python; la quinta è un'applicazione Laravel e Filament, con pazienti nuovi e di ritorno, macro-aree di prestazioni, costi su più livelli ed estrazione automatica dei documenti fiscali.
Contesto
Due sedi del gruppo registrano circa cento accettazioni al giorno, le altre due tra venti e trenta. In accettazione si lavora sul gestionale delle sedi, che produce gli export. La direzione seguiva l'andamento su un'installazione QLIK alimentata da estrazioni che nessuno supportava più, mentre i compensi dei medici stavano in un file Excel aggiornato a mano. Il progetto è nato da una nostra iniziativa, all'interno del ruolo di responsabile IT che svolgiamo per il gruppo.
Il problema
Con estrazioni non supportate, ogni report era fragile: bastava un cambiamento nel gestionale perché i numeri smettessero di tornare. Con i compensi tenuti a mano, ricavi e costi vivevano in due posti diversi, e confrontare le sedi o lo stesso mese dell'anno prima richiedeva ogni volta un lavoro di ricostruzione. In più un poliambulatorio incassa da tre fonti: il paziente privato, il ticket e la quota a carico della Regione. Senza distinguerle, il fatturato dice poco.
Cosa abbiamo fatto
- 01
Partire dagli export
Il cruscotto legge gli export del gestionale di accettazione, non un database parallelo da tenere allineato. In un'analisi abbiamo lavorato su 5.484 fatture, da gennaio 2025 a marzo 2026, divise per tipo di pagante: privato, ticket e quota regionale.
- 02
Pagine statiche per cominciare
Le prime versioni sono uno script Python che genera pagine HTML statiche, pubblicate sul server web con autenticazione di base. Le anteprime v2 e v3 sono state condivise con il team per raccogliere osservazioni prima di aggiungere altro.
- 03
Grafici che rispondono a domande
Mappe di calore per giorno e ora che mostrano quando ogni sede lavora di più, tempi di refertazione, ritmo della settimana. Ogni sede ha la sua scheda, il gruppo la sua vista, e ogni periodo si confronta con lo stesso dell'anno prima.
- 04
La quinta versione su Laravel e Filament
Pazienti nuovi e di ritorno, prestazioni raggruppate in macro-aree, costi gestiti su più livelli. I documenti fiscali vengono estratti in automatico, note di credito comprese.
- 05
Le note di credito contano
Un fatturato che ignora le note di credito è un fatturato gonfiato. Per questo l'estrazione le tratta come documenti fiscali a pieno titolo, accanto alle fatture.
Com'è andata
Il cruscotto prende il posto di QLIK e del file dei compensi, ed è alimentato dagli stessi dati che le accettazioni producono ogni giorno. Le versioni statiche sono servite a capire quali numeri la direzione guarda davvero; la quinta li porta in un'applicazione a cui si aggiungono funzioni senza rifare la base.
Strumenti
Domande frequenti
Bisogna cambiare il gestionale delle sedi?
No. Il cruscotto lavora sugli export del gestionale esistente: le accettazioni continuano a lavorare come prima.
Perché partire da pagine statiche e non subito da un'applicazione?
Per mostrare in fretta numeri veri e capire con il team quali grafici servono. Quando le domande si sono stabilizzate, la quinta versione è passata su Laravel e Filament.
Che differenza c'è tra privato, ticket e quota regionale?
Sono le tre fonti di incasso di un poliambulatorio accreditato: quello che paga il paziente privato, il ticket a carico del paziente per le prestazioni in convenzione e la parte rimborsata dalla Regione. Tenerle separate dice da dove arriva davvero il fatturato.