logo SBA

ETD

Archivio digitale delle tesi discusse presso l’Università di Pisa

Tesi etd-06202020-120723


Tipo di tesi
Tesi di laurea magistrale
Autore
MURA, ALESSANDRO
URN
etd-06202020-120723
Titolo
Integrazione della nuova banca dati del nomenclatore farmaceutico "Farmadati" versione 2.0, architettura a servizi, con la cartella clinica elettronica della fondazione Monasterio.
Dipartimento
INGEGNERIA DELL'INFORMAZIONE
Corso di studi
INGEGNERIA BIOMEDICA
Relatori
relatore Prof. Mangione, Maurizio
Parole chiave
  • C#
  • css
  • database
  • desktop application
  • farmaci
  • fxml
  • java
  • javafx
  • mvc
  • netbeans
  • oracle
  • pl/sql
  • server
  • service oriented architecture
  • servizi web
  • soa
  • sql
  • web service
  • xml
Data inizio appello
10/07/2020
Consultabilità
Non consultabile
Data di rilascio
10/07/2090
Riassunto
Il seguente lavoro di tesi tratta la progettazione e lo sviluppo di un software Desktop dedicato all’aggiornamento automatico delle banche dati farmaceutiche della Fondazione Monasterio.
La banca dati dei prodotti farmaceutici della Fondazione è utilizzata da molti applicativi all’interno dell’ospedale e necessita di aggiornamenti periodici costanti.
Il software è stato sviluppato all’interno della Fondazione utilizzando l’infrastruttura già presente con l’obiettivo di aggiornarla e integrare al suo interno una architettura orientata ai servizi (SOA).
Di fondamentale importanza è stata la collaborazione con l’azienda italiana Farmadati che ha fornito i web service per l’accesso alle proprie banche dati Federfarma (BDF 2.0) all’interno delle quali sono catalogati tutti i prodotti farmaceutici di interesse nazionale.
Farmadati attualmente fornisce alla Fondazione la versione 1.0 del BDF sotto forma di file testuali. L’idea del progetto è nata dalla necessità di aggiornare il BDF 1.0 alla versione 2.0 mantenendo la struttura del data base sottostante, ma cambiando totalmente la modalità di interfacciamento con Farmadati.
La prima parte di questo lavoro di tesi ha affrontato lo studio dell’architettura orientata ai servizi definendo quelli che sono i suoi componenti costitutivi e i linguaggi che la caratterizzano.
Questo tipo di architettura è basata sull’interazione tra diversi servizi, ovvero qualsiasi forma di applicazione, funzione o procedura informatica che realizza una particolare funzione. Tale interazione avviene per mezzo dei web service, tecnologie software che consentono di stabilire delle connessioni tra diversi elaboratori su una medesima rete oppure in un contesto distribuito.
L’interconnessione dei servizi tramite servizi web consente di creare una rete di providers e utilizzatori in cui ognuno di essi ha totale libertà di scelta sull’hardware e il software da utilizzare per la fornitura o l’utilizzo dei servizi stessi. La potenza e la versatilità dei servizi web è data proprio dalla libertà di realizzazione degli applicativi. Gli applicativi che sfruttano questa tecnologia possono essere scritti in qualsiasi linguaggio e possono essere eseguiti su qualsiasi hardware purché implementino l’interfaccia fornita dal provider; questa interfaccia è scritta in WSDL (Web Service Definition Language) e contenuta all’interno di registri UDDI (Universal Description, Discovery and Integration) consultabili tramite un Endpoint URL.
All’interno della definizione del servizio web si trovano tutti i metodi e le operazioni che un utilizzatore può evocare per usufruire del servizio. Le interazioni tra servizi quindi avvengono secondo le definizioni fornite dal provider attraverso lo scambio di messaggi che utilizzano la tecnologia SOAP (Simple Object Access Protocol).
Il SOAP è l’architettura dei messaggi basata su linguaggio XML. Ogni messaggio ha un contenitore (envelope) all’interno de quale vengono confezionati l’intestazione o header e un corpo o body. L’header contiene i metadati necessari all’instradamento, l’autenticazione e le informazioni di codifica e di sicurezza del messaggio. Il body contiene il messaggio stesso formattato secondo la definizione del fornitore.
I messaggi scambiati tramite tecnologia SOAP viaggiano attraverso le reti sfruttando i normali protocolli web come http, ftp, smtp.
Il passo successivo è stato lo studio e l’analisi dei web service forniti da Farmadati. Tali servizi web consentono di prelevare l’intera banca dati farmaceutica per popolare il proprio data base locale e di aggiornare i record posseduti con le variazioni rilasciate dall’azienda. Le operazioni sono eseguite tramite l’invocazione dei metodi: GetEnabledDataSet, GetSchemaDataSet, GetDataSet, GetDataSetChanges.
Ogni operazione è richiesta tramite un messaggio soap nel quale è necessario specificare il proprio nome utente, la propria password e i parametri di ingresso della richiesta; la risposta prodotta contiene le informazioni richieste.
Nel caso di GetEnabledDataSet si ricava la lista delle informazioni principali sulle tabelle abilitate, come il codice, la descrizione e il codice schema.
Con i nomi delle tabelle abilitate si può invocare il metodo GetSchemaDataSet che restituisce per ogni tabella lo schema della tabella stessa diviso per campi, ognuno dei quali possiede informazioni relative al nome, al tipo di dato e alla lunghezza del campo stesso. Sfruttando le informazioni relative ai campi sono state create delle routine di creazione dinamica di query SQL per la creazione delle tabelle ex novo, in modo da popolare il data base in fase di prima importazione.
Dopo aver creato tutte le tabelle, è possibile invocare il metodo GetDataSet che restituisce un file zip contenente un file XML dove sono riportati tutti i record relativi alla tabella specificata nella richiesta. Un’operazione analoga può essere effettuata invocando GetDataSetChanges che permette di ottenere i file XML con le variazioni, gli inserimenti e gli annullamenti dei record relativi alla tabella richiesta.
Nell’implementazione del software sono state create delle operazioni che sfruttano i metodi forniti dai webservice automatizzando le procedure di prima importazione, aggiornamento e aggiornamento programmato.
Per poter popolare le tabelle del database locale con i record contenuti nei file XML è stato necessario incorporare dei metodi di parsing di questi file con dei metodi di creazione dinamica di query di INSERT e UPDATE e successiva esecuzione.
Il metodo scelto per il parsing dei file XML è un metodo basato sullo streaming sequenziale del file e sulla gestione di eventi relativi ai tag, questo sistema è denominato StAX, Streaming API for XML.
Nella gestione degli eventi durante la lettura dei file XML vengono generate ed eseguite delle query di insert personalizzate per ogni record in base ai campi valorizzati da esso.
Tramite le query dinamiche vengono popolate le tabelle temporanee nel database locale che serviranno per trasferire solo alcune colonne selezionate sulle tabelle definitive.
Il passaggio dei dati alle tabelle definitive avviene tramite procedure PL/SQL richiamate direttamente dal software al termine delle routine di riempimento delle temporanee.
Ogni record presente nelle temporanee è contrassegnato da un tag che indica il tipo di variazione: A per l’annullamento del record, V per la variazione del record, I per l’inserimento di un nuovo record. In base al tag le procedure PL/SQL modificano i record inserendone nuovi (I), aggiornando quelli presenti (V) e annullando quelli non più validi(A). Ogni variazione o annullamento consiste in una query di update. Per le variazioni l’update aggiorna i campi variati mentre per l’annullamento viene impostata una data finale del record con la data corrente.
Dopo aver analizzato i meccanismi di funzionamento e progettato le routine di caricamento e aggiornamento tabelle è stato implementato il software.
Il punto di partenza nell’implementazione è stata l’interfaccia grafica con le funzioni necessarie all’utente per effettuare le operazioni descritte precedentemente. Tutte le funzioni sono state accompagnate da un corrispettivo grafico come: campi di inserimento delle password e nome utente, campi per l’inserimento dei dati di connessione al data base, tasti di avvio e interruzione per le procedure di importazione e aggiornamento, radio button per la selezione del periodo di ripetizione dell’aggiornamento automatico, Spinner per l’impostazione dell’orario, stringhe di output dello stato dei processi, barra di avanzamento operazioni. Il design della GUI è stato eseguito tramite SceneBuilder, programma di manipolazione interfacce in formato XML. Lo styling degli elementi grafici è stato ottenuto tramite script CSS.
Ogni routine di importazione e aggiornamento è stata implementata in modo da essere eseguita in background tramite il Concurrent Framework di JavaFX.
Il programma è stato scritto in linguaggio Java utilizzando un approccio MVC, Model View Controller. Tale paradigma è stato sviluppato tramite il framework JavaFX, mentre per tutte le funzioni di interfacciamento del data base Oracle è stato utilizzato il driver Ojdbc.
Il software è stato sviluppato e testato tramite vari IDE come Netbeans, IntelliJ IDEA mentre l’implementazione relativa a procedure PL/SQL e manipolazione di data base è stata fatta in SQL Developer. La distribuzione e la creazione di un installer è stata fatta tramite Launch4j e inno setup, due programmi dedicati a wrapping e bundling di applicazioni java all’interno di file eseguibili su Windows (.EXE).
Gli obiettivi prefissati sono stati raggiunti, il software progettato implementa tutte le funzioni necessarie all’aggiornamento di un database farmaceutico, sia manuale che automatico, la GUI facilita le operazioni fornendo una grafica intuitiva e immediata rendendo le operazioni il più efficienti possibili. L’applicazione è stata installata sul server di destinazione e risulta funzionante e attiva. Eventuali sviluppi futuri saranno l’aggiunta di altre funzioni e ottimizzazione del software stesso.



File