View on GitHub

SPRINT

Sistema PRenotazioni INTelligenti

Object Design Document

1. Introduzione

1.1 Trade-off e scelte nella progettazione degli oggetti

Per quanto riguarda la gestione e la progettazione delle interfacce grafiche sono state scelte le API di Java offerte da Oracle, tra le quali:

Altre librerie utilizzate sono:

A livello di User Interface il sottosistema relativo, dato l’elevatissimo coupling, è stato smembrato e distribuito nei package della logica dell’applicazione.

1.2 Linee guida della documentazione delle interfacce

Il sistema è multi-utente: può accedervi qualsiasi tipo di utenza, dal paziente al personale dell’ospedale (sia medico che amministrativo). A tutta l’utenza vengono nascosti i meccanismi interni di prenotazione e più nello specifico l’algoritmo utilizzato per spostare le varie prenotazioni. Al paziente viene fornita una semplice e intuitiva schermata dalla quale può gestire comodamente tutte le sue prenotazioni ed eventualmente visualizzare anche lo storico delle prestazioni effettuate. Il personale amministrativo, tramite un’interfaccia simile a quella fornita al paziente, è in grado di effettuare le stesse operazioni ma con permessi più ampi come stampare lo storico delle visite di un determinato paziente. Infine, l’interfaccia a disposizione del personale medico è stata realizzata in modo da facilitare la sua professione, permettendo di riempire completamente da software la cartella clinica di un suo paziente.

Di seguito viene illustrata la vista d’insieme che racchiude tutte le classi utilizzate per lo sviluppo del nostro software. Package "TutteLeClassi"

2. Packages

2.1 CreaPrenotazione

Questo package contiene tutte le classi relative alla gestione della creazione di una prenotazione presso la struttura ospedaliera.

Package "CreaPrenotazione"

2.2 ModificaPrenotazione

Questo package racchiude tutte le classi relative alla modifica di un’eventuale prenotazione già effettuata.

Package "CreaPrenotazione"

2.3 VisualizzaFSE

Questo package contiene tutte le classi adibite a far visualizzare a video il fascicolo sanitario elettronico.

Package "CreaPrenotazione"

2.4 InserisciDettagliVisita

Package che contiene le classi che permettono al personale medico di inserire ulteriori informazioni relative alla visita di un paziente.

Package "CreaPrenotazione"

2.5 Autenticazione

Questo package raggruppa le classi che permettono a tutta l’utenza di effettuare il login e/o registrarsi.

Package "CreaPrenotazione"

2.6 Entity

Questo package raggruppa le classi entity che si occupano di gestire i dati permanenti all’interno del database. Tutte le classi che fanno parte di questo package implementano l’interfaccia Comparable.

Package "CreaPrenotazione"

2.7 MainScreen

Questo package contiene le classi responsabili del corretto funzionamento delle schermate principali del software e gestisce le finestre di errore.

Package "CreaPrenotazione"

2.8 ExternalComponentsInterface

Questo package contiene tutte le classi che gestiscono interfacce esterne necessarie al corretto funzionamento del software.

Package "CreaPrenotazione"

Queste classi sono implementate come dei Singleton per impedire che vengano lasciate aperte contemporaneamente più connessioni.

3. Interfacce delle classi

Di seguito vengono documentati i metodi public relativi a tutte le classi raggruppate nei vari package.

3.1 Package CreaPrenotazione

Classe EffettuaPrenotazioneControl

Metodo Descrizione
EffettuaPrenotazioneControl Costruttore della classe che riceve in input un oggetto di tipo Ricetta. Dopo aver correttamente memorizzato l’oggetto Ricetta, effettua un controllo per decidere se si tratta di una prenotazione di tipo ALPI o SSN.
prenotaMedico Accetta in input l’entity Medico. Metodo che ottiene gli orari disponibili e permette di sceglierne uno all’utente inizializzando il form apposito.
finalizzaPrenotazione Metodo che si occupa di creare una prenotazione. Se ne è presente già una gestisce lo spostamento di quest’ultima. Se invece non è stato selezionato nessun medico provvede a farlo scegliere.

Vai al package corrispondente

Classe ScegliOrarioDialog

Metodo Descrizione
ScegliOrarioDialog Costruttore della classe che riceve in input la control EffettuaPrenotazione e la lista di orari disponibili. Si occupa di creare correttamente l’interfaccia dalla quale l’utente potrà scegliere gli orari disponibili.
scegliOrario Metodo che si occupa della corretta memorizzazione dei campi selezionati dall’interfaccia di gestione dell’orario.

Vai al package corrispondente

Classe SceltaMedicoDialog

Metodo Descrizione
SceltaMedicoDialog Costruttore della classe che riceve in input la control EffettuaPrenotazione e la lista dei medici disponibili. Si occupa di creare correttamente l’interfaccia dalla quale l’utente potrà scegliere il medico con cui effettuare la visita secondo il regime ALPI.
scegliMedico Metodo che si occupa della corretta memorizzazione del medico scelto tramite l’interfaccia apposita.

Vai al package corrispondente

Classe GeneraRicettaControl

Metodo Descrizione
GeneraRicettaControl Costruttore della classe che crea un’istanza del form che gestisce i dati di una ricetta con i dati passati alla control stessa.
ottieniDati Metodo che memorizza correttamente i dati della ricetta e controlla che non ce ne sia una con lo stesso numero.
SSN Metodo che inizializza il regime di prenotazione in SSN.
ALPI Metodo che inizializza il regime di prenotazione in ALPI.

Vai al package corrispondente

Classe FormRicetta

Metodo Descrizione
FormRicetta Costruttore della classe che istanzia correttamente il form per inserire i dati di una ricetta.
reset Metodo che fa il refesh del campo “codice ricetta”.
getCodiceRicetta Metodo getter che restituisce il codice di una ricetta.
getCodicePrestazione Metodo getter che restituisce il codice della prestazione richiesta.
getUrgenza Metodo getter che restituisce il tipo di urgenza di una relativa ricetta.

Vai al package corrispondente

Classe ScegliRegimeDialog

Metodo Descrizione
ScegliRegimeDialog Costruttore della classe che riceve in input la control GeneraRicetta. Predispone e crea l’interfaccia dalla quale l’utente può scegliere il regime di prenotazione desiderato.

Vai al package corrispondente

3.2 Package ModificaPrenotazione

Classe ScegliPrenotazioneControl

Metodo Descrizione
ScegliPrenotazioneControl Costruttore della classe che acquisisce la lista delle prenotazioni effettuate da un utente.
estraiPrenotazione Metodo che predispone la prenotazione selezionata per eventuali altre operazioni.

Vai al package corrispondente

Classe ScegliPrenotazioneDialog

Metodo Descrizione
ScegliPrenotazioneDialog Costruttore della classe che riceve in input la control ScegliPrenotazione e la lista delle prenotazioni. Crea correttamente l’interfaccia dalla quale l’utente può scegliere la prenotazione da modificare.
selezionaPrenotazione Metodo che seleziona la prenotazione scelta e la passa alla control ScegliPrenotazione per essere gestita.
dispose Metodo che agisce sullo stato della finestra dell’interfaccia di scelta della prenotazione chiudendola.
getPrenotazioneSelezionata Metodo getter che restituisce la prenotazione selezionata dall’utente.

Vai al package corrispondente

Classe ModificaPrenotazioneControl

Metodo Descrizione
ModificaPrenotazioneControl Costruttore della classe che prende in input la prenotazione selezionata dall’utente. Si occupa di inizalizzare la schermata di modifica in base alla prenotazione scelta passata come parametro.
spostaPrenotazione Metodo che dopo aver ottenuto una lista degli orari disponibili li usa per inizializzare la schermata relativa ai nuovi orari data una prenotazione da spostare.
aggiornaPrenotazione Metodo che si occupa di predisporre il dialog relativo alla conferma dell’operazione che avrà esito positivo, spostando la prenotazione selezionata.
eliminaPrenotazione Metodo che si occupa di predisporre il dialog relativo alla conferma dell’operazione che avrà esito negativo, cancellando la prenotazione selezionata.

Vai al package corrispondente

Classe ModificaPrenotazioneDialog

Metodo Descrizione
ModificaPrenotazioneDialog Costruttore della classe che prende in input la control ModificaPrenotazione e la prenotazione selezionata. Crea correttamente l’interfaccia necessaria a modificare una prenotazione.
cancellaPrenotazione Metodo che chiama la control ModificaPrenotazione che si occuperà di cancellare la prenotazione selezionata.
modificaPrenotazione Metodo che chiama la control ModificaPrenotazione che si occuperà di modificare la prenotazione selezionata, spostandola.
confermaOrario Metodo che chiama la control ModificaPrenotazione che si occuperà di aggiornare i dati relativi alla prenotazione selezionata precedentemente.
mostraOrari Metodo che crea l’interfaccia relativa all’orario da selezionare da parte dell’utente in caso di modifica di una prenotazione.

Vai al package corrispondente

Classe ConfermaDialog

Metodo Descrizione
ConfermaDialog Costruttore della classe che prende in input una prenotazione selezionata e un flag. Crea l’interfaccia relativa al popup di conferma operazione che porterà ad un’operazione o ad un’altra a seconda del valore della flag.
prosegui Metodo che tramite un opportuno controllo gestisce la prenotazione nel database a seconda che sia stata cancellata o modificata. In caso di errore gestirà una schermata dove verrà notificato.

Vai al package corrispondente

3.3 Package VisualizzaFSE

Classe FSEControl

Metodo Descrizione
FSEControl Costruttore della classe che dopo essersi fatto passare i dati necessari, predispone la creazione dell’interfaccia relativa al Fascicolo Sanitario Elettronico.
stampa Metodo che gestisce la stampa del FSE.

Vai al package corrispondente

Classe FSEDialog

Metodo Descrizione
FSEDialog Costruttore della classe che prende in input la control FSE. Crea l’interfaccia adibita alla visualizzazione del fascicolo sanitario elettronico specifico di un utente. Inoltre si occupa anche della funzione di visualizzazione dello storico visite di un dato utente.
stampaFSE Metodo che chiama la control FSE che inizierà la procedura di stampa del fasciolo sanitario elettronico.

Vai al package corrispondente

3.4 Package InserisciDettagliVisita

Classe InserisciDettagliVisitaControl

Metodo Descrizione
InserisciDettagliVisita Costruttore della classe che prende in input una prenotazione. Dopo aver acquisito i dati necessari predispone l’interfaccia per inserire i dettagli di una visita.
aggiornaDettagli Aggiorna correttamente i dettagli inseriti.

Vai al package corrispondente

Classe InserisciDettagliVisitaDialog

Metodo Descrizione
InserisciDettagliVisitaDialog Costruttore della classe che accetta come parametri la control InserisciDettagliVisita e la stringa contenente i dettagli. Inizializza e crea correttamente l’interfaccia dalla quale l’utente potrà inserire i dettagli relativi ad una visita negli appositi box.
conferma Metodo che conferma i dati inseriti e comunica alla control di aggiornarli.

Vai al package corrispondente

3.5 Package Autenticazione

Classe LoginControl

Metodo Descrizione
LoginControl Costruttore della classe che riceve un parametro di tipo int per identificare il tipo di utenza. Predispone il login a seconda del valore dell’input passatogli.
controllaDati Metodo che si occupa di effettuare un controllo sulla correttezza dei dati inseriti da parte di tutte le tipologie di utente.

Vai al package corrispondente

Classe LoginForm

Metodo Descrizione
LoginForm Costruttore della classe che accetta in input la control Login memorizzandola correttamente.
dispose Metodo che predispone la finestra relativa al login.
getUsername Metodo astratto che verrà implementato in una sottoclasse di LoginForm.
getPassword Metodo astratto che verrà implementato in una sottoclasse di LoginForm.
reset Metodo astratto che verrà implementato in una sottoclasse di LoginForm.

Vai al package corrispondente

Classe PazienteLoginForm

Metodo Descrizione
PazienteLoginForm Costruttore della classe che accetta in input la control Login. Crea la schermata adibita al login per gli utenti di tipo “Paziente”.
conferma Metodo che conferma i dati inseriti dall’utente facendo partire il controllo degli stessi gestito dalla control Login.
RegistraPaziente Metodo che predispone la registrazione di un nuovo utente di tipo “Paziente” inizializzando la control Registrazione.
getUsername Metodo getter che restituisce l’username inserito.
getPassword Metodo getter che restituisce la password inserita.
reset Metodo che aggiorna i campi relativi a username e password predisponendoli per un nuovo utilizzo.

Vai al package corrispondente

Classe PersonaleLoginForm

Metodo Descrizione
PersonaleLoginForm Costruttore della classe che accetta in input la control Login. Crea la schermata adibita al login per gli utenti di tipo “Personale Amministrativo” e “Personale Medico”.
conferma Metodo che conferma i dati inseriti dall’utente facendo partire il controllo degli stessi gestito dalla control Login.
getUsername Metodo getter che restituisce l’username inserito.
getPassword Metodo getter che restituisce la password inserita.
reset Metodo che aggiorna i campi relativi a username e password predisponendoli per un nuovo utilizzo.

Vai al package corrispondente

Classe RegistrazioneControl

Metodo Descrizione
RegistrazioneControl Costruttore della classe che istanzia correttamente il form che verrà utilizzato.
registraPaziente Metodo che inizializza e predispone il form nel quale verranno inseriti i dati del nuovo utente di tipo “Paziente”.

Vai al package corrispondente

Classe RegistrazioneForm

Metodo Descrizione
RegistrazioneForm Costruttore della classe che crea l’interfaccia nella quale l’utente potrà inserire i dati che verranno memorizzati per la registrazione.
conferma Metodo che conferma i dati inseriti dall’utente facendo partire il controllo degli stessi gestito dalla control Login.
getPasswordConfirmation Metodo getter che restituisce la conferma della password.
getPassword Metodo getter che restituisce la password inserita.
getTelefono Metodo getter che restituisce il numero di telefono inserito.
getIndirizzoMail Metodo getter che restituisce l’indirizzo email inserito.
getCognome Metodo getter che restituisce il cognome del paziente.
getNome Metodo getter che restituisce il nome del paziente.
getCodiceFiscale Metodo getter che restituisce il codice fiscale del paziente.
getDataDiNascita Metodo getter che restituisce la data di nascita del paziente.
dispose Metodo che agisce sullo stato della finestra dell’interfaccia di registrazione chiudendola.

Vai al package corrispondente

Classe SelezionaPazienteControl

Metodo Descrizione
SelezionaPazienteControl Costruttore della classe che istanzia correttamente il form che verrà utilizzato.
ottieniDati Metodo che si occupa di recuperare dal database i dati del paziente scelto.

Vai al package corrispondente

Classe IndividuaPazienteForm

Metodo Descrizione
IndividuaPazienteForm Costruttore della classe che crea l’interfaccia nella quale l’utente di tipo “Personale Amministrativo” potrà inserire il codice fiscale di un paziente per accedere alla sua area servizi.
dispose Metodo che agisce sullo stato della finestra dell’interfaccia di individuazione chiudendola.
getCodiceFiscale Metodo getter che restituisce il codice fiscale del paziente.

Vai al package corrispondente

3.6 Package Entity

Classe PazienteEntity

Metodo Descrizione
PazienteEntity Costruttore della classe che inizializza tutti i campi presenti nella classe stessa.
createInstance Metodo che crea un’istanza corretta dell’oggetto “Paziente”
setPaziente Metodo setter che memorizza in “pazienteSelezionato” l’oggetto “Paziente” passatogli in input.
getCodiceFiscale Metodo getter che restituisce il codice fiscale del paziente.
setCodiceFiscale Metodo setter che memorizza correttamente il codice fiscale passatogli in input.
getNome Metodo getter che restituisce il nome del paziente.
setNome Metodo setter che memorizza correttamente il nome del paziente passatogli in input.
getCognome Metodo getter che restituisce il cognome del paziente.
setCognome Metodo setter che memorizza correttamente il cognome del paziente passatogli in input.
getDataDiNascita Metodo getter che restituisce la data di nascita del paziente.
setDataDiNascita Metodo setter che memorizza correttamente la data di nascita del paziente passata in input.
getIndirizzoMail Metodo getter che restituisce l’indirizzo email inserito.
setIndirizzoMail Metodo setter che memorizza correttamente l’indirizzo email passatogli in input.
getTelefono Metodo getter che restituisce il numero di telefono inserito.
setTelefono Metodo setter che memorizza correttamente il numero di telefono del paziente passatogli in input.
getPassword Metodo getter che restituisce la password inserita.
setPassword Metodo setter che memorizza correttamente la password passata in input.

Vai al package corrispondente

Classe PersonaleEntity

Metodo Descrizione
PersonaleEntity Costruttore della classe che inizializza tutti i campi presenti nella classe stessa.
getMatricola Metodo getter che restituisce la matricola dell’utente.
getMedico Metodo getter che restituisce un utente di tipo “PersonaleMedico”.
setMedico Metodo setter che memorizza un utente di tipo “PersonaleMedico” passatogli in input.

Vai al package corrispondente

Classe Prenotazione

Metodo Descrizione
Prenotazione Costruttore della classe che inizializza tutti i campi presenti nella classe stessa.
getDataOraAppuntamento Metodo getter che restituisce la data e l’ora della prenotazione.
getId Metodo getter che restituisce l’ID della prenotazione.
setDataOraAppuntamento Metodo setter che memorizza correttamente la data e l’ora della prenotazione passata in input.
getPaziente Metodo getter che restituisce l’utente di tipo “Paziente” associato alla prenotazione.
getCodicePrestazione Metodo getter che restituisce il codice della prestazione relativa ad una prenotazione.
getMedico Metodo getter che restituisce l’utente di tipo “PersonaleMedico” associato alla prenotazione.
getRicetta Metodo getter che restituisce la ricetta specifica di una data visita legata alla prenotazione.
getDescrizionePrestazione Metodo getter che restituisce la descrizione della prestazione correlata alla prenotazione.
getLimiteMassimo Metodo getter che restituisce la data massima entro la quale la prenotazione può essere spostata.
getCodiceRicetta Metodo getter che restituisce il codice della ricetta specifica di una data visita legata alla prenotazione.

Vai al package corrispondente

Classe Ricetta

Metodo Descrizione
Ricetta Costruttore della classe che inizializza tutti i campi presenti nella classe stessa.
getUrgenza Metodo getter che restituisce il tipo di urgenza di una relativa ricetta.
setUrgenza Metodo setter che inizializza la data massima entro la quale la prenotazione può essere spostata in base al tipo di urgenza passatogli in input.
getPrestazione Metodo getter che restituisce la prestazione relativa ad una ricetta.
setPrestazione Metodo setter che memorizza la prestazione di una ricetta.
getCodiceRicetta Metodo getter che restituisce il codice di una ricetta.
setCodiceRicetta Metodo setter che memorizza il codice di una ricetta passatogli in input.
getRegime Metodo getter che restituisce il regime di prenotazione.
setRegime Metodo setter che memorizza il regime di prenotazione passatogli in input.
getLimiteMassimo Metodo getter che restituisce la data massima entro la quale la prenotazione può essere spostata.

Vai al package corrispondente

3.7 Package MainScreen

Classe MainScreen

Metodo Descrizione
creaPrenotazioni Metodo che crea una prenotazione chiamando la control GeneraRicetta che la gestirà.
modificaPrenotazione Metodo che modifica una prenotazione chiamando la control ScegliPrenotazione.
visualizzaStoricoVisite Metodo che fa visualizzare a schermo lo storico delle visite chiamando la control FSE.
visualizzaCartellaClinica Metodo che fa visualizzare la cartella clinica chiamando la control FSE.
inserisciDettagliVisita Metodo che accettando in input una visita permette di inserirne i dettagli chiamando la control InserisciDettagliVisita.
individuaPaziente Metodo che permette all’utente di tipo “Personale Amministrativo” di accedere all’area riservata di un paziente chiamando la control SelezionaPaziente.

Vai al package corrispondente

Classe MainScreenPaziente

Metodo Descrizione
MainScreenPaziente Costruttore della classe che crea l’interfaccia della schermata principale personalizzata per l’utente di tipo “Paziente”.

Vai al package corrispondente

Classe MainScreenAmministrativo

Metodo Descrizione
MainScreenAmministrativo Costruttore della classe che crea l’interfaccia della schermata principale personalizzata per l’utente di tipo “PersonaleAmministrativo”.

Vai al package corrispondente

Classe MainScreenMedico

Metodo Descrizione
MainScreenMedico Costruttore della classe che crea l’interfaccia della schermata principale personalizzata per l’utente di tipo “PersonaleMedico”.

Vai al package corrispondente

Classe ErroreDialog

Metodo Descrizione
ErroreDialog Costruttore della classe che crea l’interfaccia del popup di errore. Ce ne sono quattro all’interno della classe che variano a seconda dei parametri passati in input.

Vai al package corrispondente

3.8 Package ExternalComponentsInterface

Classe DatabaseInterface

Metodo Descrizione
getInstance Metodo statico che restituisce l’istanza di DatabaseInterface
aggiornaDettagliVisita Questo metodo modifica gli attributi Diagnosi, Referti, e Osservazioni della relazione Visita.
inserisciPaziente Metodo che Metodo che aggiunge una nuova entry nella relazione Paziente.
inserisciPrenotazione Questo metodo prende in input una prenotazione e la inserisce nel database, insieme alle relazioni correlate.
modificaPrenotazione Metodo che va a modificare la colonna FasciaOraria_Data_e_ora per la prenotazione passata come argomento.
ottieniDettagliVisita Questo metodo restituisce gli attributi Diagnosi, Referti, e Osservazioni della relazione Visita.
ottieniDocumentiNecessari Metodo che restituisce la lista dei documenti necessari per una determinata prestazione.
ottieniElencoPrenotazioni Questo metodo restitiusce l’elenco di tutte le prenotazioni modificabili a nome di un determinato paziente.
ottieniElencoVisite A seconda degli argomenti restituisce: le visite mediche di un determinato medico nel giorno corrente, le prenotazioni passate non annullate di un paziente, o tutte le prenotazioni in un dato range di orari.
ottieniListaMedici Metodo che, data una tipologia di prestazione, restituisce tutti i medici che la erogano.
ottieniOrari A seconda degli argomenti passati restituisce gli orari entro un certo limite massimo in cui è possibile erogare una prestazione o gli orari in cui un dato medico è libero e può effettuare visite.
ottieniPaziente Restituisce il paziente individuato univocamente dai dati passati per argomento al metodo.
ottieniPersonale Restituisce il personale (medico o amministrativo, dipendentemente dal flag passato come argomento) individuato univocamente dai dati passati per argomento al metodo.
ottieniPrenotazione Restituisce la prenotazione corrispondente ad un dato codice identificativo
ottieniPrenotazioneSpostabile Metodo per individuare una prenotazione che può eventualmente essere spostata per permettere di effettuare una prenotazione più urgente.
ottieniPrestazioniErogabili Questo metodo restituisce la lista delle prestazioni che l’ospedale è in grado di erogare.
rimuoviPrenotazione Questo metodo permette di cancellare dal database la prenotazione selezionata e tutte le relazioni collegate.
verificaDuplicati Metodo per controllare che una data ricetta non sia stata già utilizzata per prenotare una visita.

Classe MailInterface

Metodo Descrizione
getInstance Metodo statico che restituisce l’istanza di MailInterface
notificaCreazionePrenotazione Metodo per l’invio di una mail di notifica alla creazione di una nuova prenotazione.
notificaSpostamentoPrenotazione Questo metodo invia una mail per avvisare dell’avvenuta modifica della data di appuntamento per una prenotazione.
notificaCancellazionePrenotazione Metodo per l’invio di una mail segnalante la cancellazione di una prenotazione.
notificaReminderPrenotazione Questo metodo invia una mail per ricordare al paziente della prestazione prenotata.

Classe PDFInterface

Metodo Descrizione
getInstance Metodo statico che restituisce l’istanza di PDFInterface
stampa Questo metodo crea un file PDF contenete il testo passato come argomento

Vai al package corrispondente