Che cos'è
DHS Agent legge l'archivio di Quaderno Elettronico installato nello studio, ne ricava i dati che servono agli agenti DHS (Victoria, GaLa, Tao e Flux) e li consegna, cifrati, al server che genera le loro basi di conoscenza. Tutto in circa quindici secondi, una o più volte al giorno, senza che nessuno debba ricordarsene.
L'archivio viene aperto in sola lettura: l'agente non modifica mai i dati dello studio e non tocca i file di indice. L'unica connessione che stabilisce è quella in uscita verso il server di consegna; non resta in ascolto su alcuna porta.
Rispetto al vecchio DHSE non serve più installare il driver Visual FoxPro su ogni postazione, e nessuna password viene più conservata in chiaro.
1.Installazione in breve
- Creare una cartella sul disco locale, per esempio
C:\DHS-Agent. - Copiarvi
dhs-agent.exe,dhs-agent-gui.exe, i file.batnumerati econfig.example.jsonrinominato inconfig.json. - Avviare
09-configurazione.bate compilare le schede come descritto qui sotto. - Avviare
01-prima-importazione.bate attendere il completamento. - Avviare
04-esporta.batper il primo export e la prima consegna.
Non installare su un disco di rete o in una cartella condivisa. Il database su condivisione di rete è instabile, e la password di consegna finirebbe dove la vedono tutti.
La procedura completa, con prerequisiti e checklist, è nel documento
INSTALLAZIONE.md fornito con il programma.
2.Scheda Studio
Qui si dice all'agente chi è lo studio e dove sono i dati. È l'unica scheda che va compilata per forza.
- Codice cliente
- Il codice assegnato allo studio. Finisce nel nome dell'archivio
DHSE_<codice>.ziped è la chiave con cui il server distingue i clienti: deve essere quello giusto. - Nominativo
- Il nome dello studio, riportato nei file di servizio.
- Cartella di lavoro
- Dove l'agente tiene il proprio database e i file temporanei.
In una installazione standard è
C:\DHS-Agent\data. - Archivio QE (radice)
- La cartella che contiene i due rami dell'archivio. Indicandola, i due campi sottostanti si compilano da soli.
- Ramo L e Ramo Q
- I due rami dell'archivio: L contiene l'anagrafica degli utenti,
Q tutti i dati clinici. Di norma sono
<radice>\L\WINDENTe<radice>\Q\WINDAT, ma se in questo studio sono su unità mappate vanno corretti a mano. Quello che conta è che dentro ciascun ramo ci sia una sottocartellaDATIcon i file.DBF.
Prima di proseguire premere Verifica archivio: il registro in basso deve indicare quanti file DBF sono stati trovati in ciascun ramo. Se dice «NON trovato», il percorso è sbagliato e non ha senso andare avanti.
3.Scheda Export
Governa cosa viene prodotto e permette di lanciare un export a mano.
- Data di riferimento
- Lasciare spuntato usa la data odierna. Il campo della data fissa serve unicamente a riprodurre un archivio storico.
- Cartella archivio prodotto
- Dove viene depositato
DHSE_<codice>.zipprima dell'invio. - Tracciati da produrre
- Permette di escludere gli agenti che lo studio non usa. In dubbio, lasciarli tutti attivi: è l'unica combinazione verificata a fondo.
- Invia al server dopo l'export
- Se spuntata, al termine dell'export l'archivio parte subito.
- Esporta ora
- Esegue l'export immediatamente. Richiede una quindicina di secondi e l'avanzamento compare nel registro in basso.
La data fissa è la trappola più comune. Se resta valorizzata, l'agente pubblica i dati congelati a quella data invece di quelli correnti. Il programma avvisa nel registro ogni volta che succede: leggerlo.
4.Scheda Invio
Le coordinate del server che riceve l'archivio, e la password per accedervi.
- Server, porta, cartella remota, utente
- Come da credenziali fornite per lo studio.
- Password
- Si digita qui una sola volta. Al salvataggio viene cifrata con la protezione dati di Windows e il campo si svuota. Il file che ne risulta è leggibile solo dall'utente Windows che l'ha creata e solo su quel computer: copiarlo altrove non serve a nulla.
- Credenziale in uso
- Indica da dove il programma sta prendendo la password in questo momento, senza mostrarla. Utile per capire se è stata salvata davvero.
- Cifratura
- Lasciare
explicit: è FTPS, cioè trasferimento cifrato. Usarenonesolo se il server non supporta TLS. - Nome sul certificato
- Da compilare solo se il certificato del server è emesso per un nome diverso dall'indirizzo FTP — sugli hosting condivisi succede quasi sempre. Il messaggio d'errore della prova di connessione dice qual è il nome giusto.
- Prova connessione
- Verifica accesso e credenziali senza trasferire nulla, ed elenca il contenuto della cartella remota. È il primo strumento da usare quando la consegna non funziona.
Un'avvertenza che fa risparmiare una chiamata all'assistenza: configurare la password con lo stesso utente Windows che farà girare le esportazioni automatiche. La cifratura lega il segreto all'account: da un altro utente il programma non riuscirebbe a decifrarlo.
5.Scheda Pianificazione
Quando l'agente deve lavorare da solo.
- Esegui un ciclo all'avvio
- Utile sui computer che vengono spenti ogni sera: il lavoro parte all'accensione invece che a un'ora fissa.
- Ogni N minuti
- Cadenza regolare. Lasciare 0 per disattivarla.
- Orari fissi
- Uno o più orari giornalieri separati da virgola.
01:30va bene se il computer resta acceso di notte; altrimenti conviene un orario di pausa, per esempio13:30. - Sincronizza il database prima di esportare
- Da lasciare spuntato: garantisce che l'export parta da dati aggiornati.
Il programma che esegue la pianificazione si avvia con
08-scheduler.bat e va lasciato aperto. Per farlo partire da solo a
ogni accesso, spuntare avvio automatico nella scheda Avanzate.
6.Scheda QUaESTio
Produce il report «Statistiche produzione» in PDF. È l'unica scheda che richiede un aggiornamento periodico, perché turni, ferie e permessi non stanno nel gestionale: li fornisce lo studio.
- Periodo
- Primo mese in formato
AAAA-MMe numero di mesi da includere. - Medici stampati / Medici attivi
- I primi ricevono un blocco dedicato nel report; i secondi partecipano al calcolo dei valori medi di studio. Sono elenchi di codici separati da virgola.
- Codici prima visita
- Gli onorari che vanno considerati prima visita.
- Griglia turni, ferie e permessi
- Una riga per medico e per mese. Si seleziona una riga per modificarla, si
compilano i campi in basso e si preme Aggiungi / aggiorna; oppure si
inseriscono un medico e un mese nuovi. Il medico
0raccoglie i totali dell'intero studio. - Genera report PDF
- Produce il documento nella cartella indicata in alto.
Se per un medico e un mese mancano i turni, il report esce con
n/d nei rapporti che li usano: non è un errore, è un dato che non è
stato fornito.
7.Scheda Avanzate
Parametri di calcolo, avvisi automatici e avvio con Windows.
Parametri di calcolo
Sono le regole con cui vengono interpretati i dati: la durata oltre la quale un appuntamento è considerato un blocco d'agenda anziché una prestazione, i giorni di preavviso sulle scadenze dei lotti, la finestra su cui si calcolano i consumi, il marcatore che identifica i pazienti fittizi e i nomi utente esclusi dalle statistiche comparative.
Non modificarli senza una ragione precisa. Sono i valori verificati sul tracciato di riferimento: cambiarli cambia i numeri che arrivano agli agenti, e le differenze non sono evidenti a occhio.
Notifica errori
Spuntando avvisa e quando un ciclo fallisce, e indicando un server di posta con i destinatari, il programma manda una mail ogni volta che un'esportazione automatica non va a buon fine, dicendo quale fase è fallita. Il pulsante Invia prova recapita un messaggio di verifica.
Senza questa impostazione, un'esportazione fallita alle 01:30 non la scopre nessuno finché qualcuno non nota che i dati non si aggiornano più. Vale la pena configurarla.
Avvio automatico
Spuntando la casella, la pianificazione parte da sola a ogni accesso a Windows. Non servono privilegi di amministratore e la voce resta visibile — e removibile — nella scheda Avvio di Gestione attività.
8.Impostazioni a distanza
Alcuni parametri si possono cambiare senza raggiungere la postazione: basta depositare un file nello spazio di consegna dello studio. L'agente lo legge all'inizio di ogni ciclo pianificato, applica ciò che è ammesso, lo annota nel registro e ricarica una ricevuta.
Come si fa
- Si crea un file di testo chiamato
settings-<codice>.json— per lo studio 1001,settings-1001.json. - Lo si deposita nella stessa cartella dove arrivano gli archivi dello studio.
- Al ciclo successivo l'agente lo recepisce. Per non aspettare, sulla
postazione si può lanciare
dhs-agent.exe settings -config config.json. - L'agente ricarica
applied-<codice>.jsoncon la versione recepita, l'ora e l'elenco delle modifiche: serve a verificare a colpo d'occhio quali studi hanno applicato le impostazioni.
Esempio di file completo:
{
"version": 3,
"note": "spostato l'export alle 02:15",
"schedule": {
"at_startup": false,
"every_minutes": 0,
"daily_at": ["02:15"],
"sync_before_export": true
},
"agents": { "victoria": true, "gala": true, "tao": true, "flux": false },
"calc": { "flux_expiry_alert_days": 45 },
"questio": { "from_month": "2026-04", "months": 3 },
"notify": { "on_success": true, "to": "studio@esempio.it" }
}
Il campo version conta. L'agente applica un
file solo quando il numero è diverso dall'ultimo recepito. Modificando il
contenuto senza aumentare la versione, non succede nulla. Tutte le sezioni
sono facoltative: si scrivono solo i parametri da cambiare.
Che cosa si può cambiare, e che cosa no
L'elenco qui sotto non è una convenzione: è una lista bianca applicata dal programma. Qualunque altra chiave viene ignorata e segnalata nel registro.
| Modificabile a distanza | Solo sulla postazione |
|---|---|
| Orari, cadenza, esecuzione all'avvio, sincronizzazione preventiva | Percorsi dell'archivio del gestionale |
| Tracciati da produrre (Victoria, GaLa, Tao, Flux) | Indirizzo del server, utente e password di consegna |
| Parametri di calcolo | Cartella di destinazione dell'export |
| Periodo, medici e turni di QUaESTio | Codice cliente e nominativo |
| Attivazione notifiche e destinatari | Data di riferimento; server e credenziali di posta |
Perché questa divisione. Un canale di configurazione a distanza è, di fatto, un telecomando sull'agente. Se fosse possibile cambiare da remoto l'indirizzo del server di consegna, chi riuscisse a scrivere in quello spazio potrebbe farsi recapitare le anagrafiche dei pazienti senza toccare alcun computer. Percorsi, credenziali e destinazione restano quindi modificabili solo di persona: il peggio che può fare un file manomesso è disturbare gli orari o alterare un report, cosa fastidiosa ma reversibile e ben visibile nel registro.
Il programma controlla anche i valori, non solo i nomi: un orario mal scritto,
un numero di mesi fuori scala o un indirizzo webhook che non sia
https vengono scartati singolarmente, lasciando applicare il
resto. Anche questi finiscono nel registro.
9.Che cosa succede lato server
L'agente si ferma alla consegna dell'archivio. Da lì in poi lavora uno script
PHP che gira sull'hosting, cron/kb-sync.php, avviato
automaticamente ogni sei ore dal pannello dell'hosting.
Conoscerne il comportamento serve soprattutto a capire perché un dato appena
esportato non compare subito negli agenti.
Come si comporta, passo per passo
- Si assicura di essere solo. Scrive un file di blocco: se un'altra esecuzione è già in corso esce subito. Se il blocco è più vecchio di trenta minuti lo considera abbandonato e prosegue, così un processo morto non paralizza il sistema.
- Cerca gli archivi. Elenca tutti i file
DHSE_*.zippresenti. Ogni studio ha il proprio, distinto dal codice cliente nel nome: un'unica installazione serve tutti gli studi. - Salta ciò che non è cambiato. Confronta la data dell'archivio con quella dell'ultima elaborazione. Se coincidono non fa nulla: rimandare lo stesso archivio non produce lavoro inutile.
- Verifica che l'archivio sia integro prima di aprirlo. Se risulta danneggiato — per esempio un invio interrotto — lo segnala, manda un avviso e passa oltre senza registrare l'elaborazione: al ciclo successivo riprova da solo.
- Estrae e cerca i cinque file che gli servono in una cartella temporanea. Se ne manca anche uno solo si ferma su quel cliente, sempre senza registrare l'elaborazione.
- Calcola. Legge i file in streaming e produce i conteggi e le somme: è qui che nascono i numeri che gli agenti riportano.
- Scrive la knowledge base in una cartella dedicata al singolo cliente, insieme a un riepilogo con data di generazione e versione.
- Eventuale rilettura in linguaggio naturale. Se attivata, un passaggio di intelligenza artificiale trasforma i numeri in commenti discorsivi. È facoltativo e non bloccante: se fallisce, la knowledge base resta comunque valida.
- Pulisce la cartella temporanea — ma non cancella l'archivio, che resta a disposizione per un controllo.
- Registra l'avvenuta elaborazione solo se tutti i passaggi obbligatori sono riusciti.
Il principio che regge tutto: l'elaborazione viene registrata solo a lavoro finito. Qualunque cosa vada storta — archivio troncato, file mancante, errore di calcolo — lascia la situazione com'era, e il ciclo successivo ritenta senza che nessuno debba intervenire. Un cliente in errore, inoltre, non ferma gli altri.
Perché i numeri li calcola il PHP e non l'intelligenza artificiale
È una scelta deliberata. I conteggi e le somme riguardano decine di migliaia di righe e devono essere esatti al centesimo: un modello linguistico non è affidabile nel contarle. Il motore PHP calcola quindi i numeri in modo deterministico e quei file sono la fonte di verità; l'intelligenza artificiale interviene solo sopra i numeri già calcolati, per scriverne un commento leggibile.
Quanto tempo passa
Nel caso peggiore sei ore fra la consegna e l'aggiornamento degli agenti, perché tanto dista un'esecuzione dall'altra. È normale: se dopo un export i dati sembrano fermi, di solito basta attendere il ciclo successivo.
Quando qualcosa non va
Lo script tiene un registro giornaliero, conservato per trenta giorni, e in caso di errore invia una mail all'indirizzo tecnico configurato. Sono due canali distinti da quelli dell'agente sulla postazione: se un export parte correttamente ma i dati non si aggiornano, il problema va cercato in quel registro, non su quello dello studio.
Un limite da conoscere. Il server elabora oggi soltanto i tracciati di Victoria, GaLa e Tao. Quelli di Flux vengono prodotti e consegnati correttamente dall'agente, ma non esiste ancora la parte che li legge: fino ad allora Flux non dispone di una propria knowledge base.
I file delle impostazioni a distanza convivono senza
problemi con gli archivi nella stessa cartella: lo script raccoglie solo i
file che si chiamano DHSE_*.zip e ignora tutto il resto.
10.Uso quotidiano
A regime non c'è nulla da fare: la pianificazione esegue in sequenza
sincronizzazione, export e consegna, e registra ogni ciclo. Per controllare come
è andata, aprire la finestra di configurazione e leggere il registro in basso,
oppure il file data\scheduler.log.
I comandi rapidi
| File | Cosa fa |
|---|---|
09-configurazione.bat | Apre la finestra di configurazione |
04-esporta.bat | Esporta e consegna subito |
07-invia-ftp.bat | Reinvia l'ultimo archivio prodotto |
08-scheduler.bat | Avvia le esecuzioni automatiche |
02-sincronizza.bat | Aggiorna il database dai dati dello studio |
03-stato.bat | Mostra un riepilogo per tabella |
05-questio.bat | Genera il report QUaESTio in PDF |
Quando serve intervenire
| Situazione | Cosa fare |
|---|---|
| È cambiata la password di consegna | Riaprire la configurazione, digitarla nella scheda Invio, salvare |
| È stato spostato l'archivio del gestionale | Correggere i percorsi nella scheda Studio e premere Verifica archivio |
| Inizio di un nuovo mese | Aggiornare la griglia turni nella scheda QUaESTio |
11.Se qualcosa non va
La consegna non riesce
Premere Prova connessione nella scheda Invio: il messaggio distingue i tre casi. Se parla di certificato, va compilato il campo «Nome sul certificato» con il nome che il messaggio stesso indica. Se parla di accesso, la password è sbagliata o è stata salvata da un altro utente Windows. Se non si collega affatto, è la rete o un blocco del firewall in uscita.
«Verifica archivio» non trova i file
Il percorso indicato non è quello giusto. Dentro ciascun ramo deve esistere una
sottocartella DATI contenente file con estensione .DBF.
Se l'archivio è su un'unità di rete, verificare che sia effettivamente
raggiungibile con l'utente in uso.
L'export è andato bene ma gli agenti non vedono i dati nuovi
Nella maggior parte dei casi non è un guasto: il server elabora gli archivi ogni sei ore, quindi fra la consegna e l'aggiornamento può passare quel tempo. Se dopo un ciclo completo la situazione non cambia, il problema è lato server e va cercato nel suo registro, non su quello della postazione.
I dati sul server sembrano vecchi
Controllare nella scheda Export che sia spuntato usa la data odierna. Se al suo posto è impostata una data fissa, ogni consegna ripubblica i dati di quel giorno.
Le impostazioni depositate non vengono applicate
Nell'ordine: controllare che il nome del file corrisponda al codice dello
studio, che il numero di version sia stato aumentato rispetto
all'ultimo applicato, e che le sezioni usate siano fra quelle ammesse. Il
registro dell'agente elenca sempre le chiavi ignorate e i valori scartati con
il motivo. Se il file c'è ma la ricevuta applied-<codice>.json
non compare, l'agente non lo sta nemmeno leggendo: verificare che le
impostazioni a distanza siano attive nella configurazione della postazione.
Non arriva nulla al server
Verificare che nella scheda Invio sia spuntato invia l'archivio al server remoto, e che la pianificazione sia effettivamente in esecuzione: la finestra dello scheduler deve essere aperta, oppure l'avvio automatico attivo.
Verifica rapida
- Verifica archivio trova i DBF in entrambi i rami
- Prova connessione riesce ed elenca la cartella remota
- Invia prova recapita la mail di avviso
- Nella scheda Export è spuntato «usa la data odierna»
- L'avvio automatico è attivo