#5ad7015fa0daa2a6628f1cc2c6c3a5c4

Turni Medici

Una web app per organizzare i turni dei medici in una Casa della Comunità.

Monica, la mia ragazza, adesso si occupa dei turni di una Casa della Comunità.

All’inizio praticamente doveva segnarsi su un foglio di calcolo le disponibilità di ogni medico, sentendoli uno per uno in ordine di graduatoria.

Ho sinceramente provato pietà e ho iniziato a dare un senso a quel CAOS. Anche perché l’informatica che in sanità fa ostruzionismo è un po’ una mia fissa.

Anno
2026
Tipo
Web app open source
Stack
WordPress · React
Ruolo
UX/UI · Sviluppo
Calendario del medico con fasce libere, assegnate e chiuse, nella demo con dati fittizi.
Le immagini vengono tutte dalla demo, con medici e strutture inventati.

E facciamo questo calendario

Allora, la base è il calendario della struttura, mese per mese, con le fasce della mattina e del pomeriggio da coprire. Il punto è chi le sceglie e in che ordine, perché i medici non scelgono quando gli pare. Va prima chi sta più in alto in graduatoria, poi il secondo con quello che è rimasto, e avanti così fino in fondo.

In pratica l’app va a turno. Quando tocca a un medico gli arriva una mail con un link, ci clicca, entra senza password e si ritrova il calendario con le fasce ancora libere. Sceglie le sue, controlla il totale delle ore e conferma, e a quel punto la mail parte per il prossimo.

Se in quelle ore ha già un turno in un’altra struttura, non glielo fa prenotare.

Il medico seleziona due fasce, controlla il riepilogo di sei ore e conferma i turni.

E siccome c’è sempre chi preferisce il telefono, Monica può scegliere al posto suo. Rimane segnato che l’ha fatto lei.

La graduatoria… parliamone

Per i medici di famiglia la graduatoria si ricava dalle regole, e la calcola l’app. Per la guardia medica invece arriva dal distretto, in un file Excel.

Il problema è che è un file pensato per essere stampato. Ci sono i gruppi per postazione, le liste mese per mese, lo stesso medico ripetuto su più righe, e in certi file nome e cognome sono pure invertiti.

L’ideale sarebbe riceverlo già strutturato, con una riga per contratto e le colonne sempre uguali, così l’importazione diventerebbe una formalità. Per ora non funziona così, e allora nel mezzo ci ho messo Claude.

Gli passo l’Excel, lui lo apre con un po’ di Python e me lo restituisce come CSV con le colonne che dico io. Le regole del file gliele ho scritte nel prompt una per una, tipo queste.

Un medico con PIÙ contratti va su PIÙ righe, una per periodo.
(l'ordine dei gruppi NON è una priorità)
Le righe "NON ASSEGNATO" vanno ignorate.
Non inventare dati: se un valore non è deducibile, cella vuota.
Animazione della ricerca di un medico nella graduatoria dimostrativa.

Comunque non salva niente da solo. Prima l’app confronta il CSV con i medici che ha già e fa vedere chi è nuovo, chi è cambiato e chi ha perso posizione, e importa solo dopo che hai confermato.

Da lì in poi la graduatoria sta nell’app, e per trovare un medico lo cerchi per nome.

E sotto c’è WordPress

L’app è in React, ma dietro c’è WordPress. Utenti, ruoli, permessi ed editor c’erano già, e io ho potuto pensare solo ai turni.

Le strutture sono delle pagine fatte a blocchi, che ho costruito con Define Blocks, così orari e chiusure Monica se li cambia da sola dall’editor. Anche la graduatoria imposta a una struttura è un blocco, e se lo togli non vale più ma la lista resta salvata.

Editor WordPress della struttura con il blocco Orari settimanali realizzato con Define Blocks.
Il blocco degli orari nell’editor della struttura.

Per gli stili e l’editor ho usato Core Editor. Sono altri due plugin miei.

Dove WordPress non bastava ho aggiunto delle tabelle per i turni e dei lock sul database, perché può capitare che Monica tocchi la griglia mentre un medico sta ancora scegliendo.

Altre cose, in ordine sparso

La notula

È il foglio presenze che il medico consegna a fine mese. Gliela prepara l’app, già compilata con i turni, e il PDF lo genero da zero senza librerie.

Il calendario pubblico

Ogni struttura ha un link da girare nel gruppo WhatsApp. Si vede cosa è libero e cosa no, ma senza nomi.

Quanti pazienti ha un medico

ESTAR, l’ente della Regione Toscana, pubblica l’elenco dei medici di famiglia con le scelte che hanno ancora libere. Quanti pazienti hanno non lo dice, ma conoscendo il massimale si ricava per differenza.

Se vuoi provarla

Il codice è su GitHub, con una demo da installare in locale con due strutture, tre medici e un coordinatore finti. In modalità demo non partono mail e non si chiama né ESTAR né Claude, puoi smanettare tranquillo.

Il codice su GitHub ↗