ADR: Frontend di Consultazione Offline¶
Stato¶
Accettata.
Contesto¶
Il frontend SaniKey viene aperto direttamente dalla chiavetta USB, spesso con
browser e PC non noti in anticipo. Deve quindi funzionare senza server locale,
senza rete e senza richieste fetch() verso file locali. L'archivio puo'
contenere migliaia di eventi timeline e documenti: una pagina lineare rende la
ricerca poco usabile perche' gli esiti restano sotto una timeline lunga.
Decisione¶
Il frontend di consultazione resta statico e offline. Usa HTML, CSS, JavaScript generati localmente e asset Material Web vendorizzati nel repository. L'export non dipende da CDN, backend o build frontend eseguita sulla chiavetta.
La UI predefinita e' responsiva:
- su schermi larghi usa un header a due aree, con identita' paziente e controlli a sinistra e ricerca a destra;
- su schermi stretti adatta header, ricerca e controlli alla larghezza disponibile;
- la ricerca base e quella avanzata usano lo stesso box e si alternano dal frame superiore, con accento visivo diverso e aiuto accanto al rispettivo bottone;
- gli aiuti della ricerca base e avanzata sono separati e si aprono in modal locali richiudibili;
- durante una ricerca l'utente vede subito i risultati, senza dover scorrere oltre la timeline;
- la sezione clinica si chiama
Sintesi Clinicae sposta i conteggi tecnici in fondo; - le terapie hanno anche un bottone diretto di primo livello quando presenti;
- gli studi DICOM aggregati hanno una sezione autonoma, separata dai documenti ordinari e dai supporti tecnici non visualizzabili; gli studi senza viewer HTML vengono mostrati come anomalie da verificare;
- su schermi larghi la UI puo' mostrare due sezioni affiancate, con azioni esplicite per aprire una sezione a sinistra o a destra;
- la timeline e' mostrata per default in ordine cronologico inverso;
- i link ai documenti originali nella chiavetta sono relativi al frontend esportato e non puntano mai ai percorsi sorgente del computer di build.
La radice USB contiene index.html: con un solo paziente apre direttamente il
frontend del paziente; con piu' pazienti mostra una lista di scelta.
La personalizzazione e' configurabile in config/accounts.toml con una tabella
[global.ui] e override opzionali in [[person]].ui. I valori sono chiusi e
validati, non CSS libero:
accent_color;density;default_tab;timeline_order;document_link_mode;subtitle.
Conseguenze¶
La UI rimane consultabile da file://, ma adotta componenti locali piu'
strutturati. La configurazione permette di adattare l'export senza rendere
fragile il rendering. La scelta richiede test espliciti sugli asset locali e sui
link relativi.
Verifica¶
I test devono coprire:
- parsing e validazione della configurazione UI;
- precedenza
[[person]].uisu[global.ui]; - assenza di path assoluti nei link documentali esportati;
- ordine timeline configurato;
- presenza dei controlli header, ricerca, modal e sintesi nel frontend generato;
- presenza dell'entrypoint root USB;
- consultazione manuale da directory locale e da chiavetta fisica.