UNIVERSITA’ POLITECNICA DELLE MARCHE FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA PROGETTO DI UN MIDDLEWARE IN “RUBY ON RAILS” PER LA TELEREFERTAZIONE MEDICA: REALIZZAZIONE LATO SERVER Relatore: Prof. Aldo Franco Dragoni Correlatore: Prof. Paolo Puliti Candidato: Romagnoli Luca Ambito Telerefertazione “Possibilità per un medico ,nell'ambito della diagnostica clinica, di effettuare la diagnosi su un paziente che non è fisicamente nello stesso posto del medico, attraverso la trasmissione a distanza di dati prodotti da strumenti diagnostici.” Ruby on Rails Ancona, 04/12/2008 2 Obiettivi Realizzazione di un sistema che offre un servizio di telerefertazione medica accessibile da persone dotate sia di browser recenti che meno recenti, sia da navigatori dotati di connessioni veloci che da utenti con collegamenti lenti utilizzando strumenti open source Ancona, 04/12/2008 3 Open source Vantaggi open source: Ha un basso TCO Non lega al fornitore Innovazione e potenziale per l'evoluzione sono generalmente agevolati Maggiore flessibilità Maggiore efficienza Ancona, 04/12/2008 4 Ruby on Rails è un framework open source per applicazioni web scritto in Ruby la cui architettura è fortemente ispirata al paradigma Model-View-Controller (MVC). Ancona, 04/12/2008 Architettura MVC 5 Ruby on Rails La progettazione di Rails è stata governata da due concetti chiave: DRY (Don’t repeat Yourself): le definizioni devono essere poste una volta soltanto convention-over-configuration: il programmatore ha bisogno di metter mano alla configurazione soltanto per ciò che differisce dalle convenzioni Ancona, 04/12/2008 6 Ruby e Java Somiglianze 1. E’ un linguaggio interpretato 2. è un linguaggio OO (Object Oriented) 3. Dispone di un Garbage Collector per la gestione della memoria 4. è portabile ed è utilizzabile con i principali sistemi operativi 5. dispone di uno strumento di documentazione del sorgente (RDoc) molto simile a JavaDoc Ancona, 04/12/2008 7 Ruby e Java Differenze 1. Il codice non necessita di compilazione 2. E’ dynamically typed 3. non sono presenti primitive 4. non sono presenti interfacce 5. non è possibile fare overloading dei metodi Ancona, 04/12/2008 8 Ruby e Java Vantaggi di Java 1. Comunità con dimensioni molto maggiori 2. Facilità nel trovare componenti di terze parti, frameworks e servizi 3. E’ maturo 4. Offre molta scelta 5. Più indicato per sviluppare progetti con particolari caratteristiche 6. Può gestire situazioni complicate 1. Two Phase Commit 2. Oggetti distribuiti Ancona, 04/12/2008 9 Ruby e Java Perché Ruby? 1. Meno codice • programmi più brevi riducano i costi di mantenimento in maniera proporzionale 2. Maggiore leggibilità 3. Minor tempo per la configurazione PRODUTTIVITA’ Ancona, 04/12/2008 10 Ruby e Java Maggiore leggibilità • Es. Cicli 10.times { ... } RUBY for (int i=0; i<10; i++) { ... } JAVA • Es. vincoli sui modelli: class User < ActiveRecord::Base has_many :events has_many :messages ,:dependent =>:destroy validates_uniqueness_of :username validates_presence_of :name, :surname,:password,:username validates_length_of :username, :minimum=>6, :too_short=>"please enter at least %d character for username" ... Ancona, 04/12/2008 11 Ruby e Java Passi necessari per l’utilizzo di un framework: Task Installare un framework Ruby • gem install framework Java • Identificare tutte le dipendenze • Installare ogni dipendenza • Installare il framework Configurarlo • Configurazione minima • Installare le librerie necessarie con gem • Eseguire l'applicazione • Aggiungere le librerie necessarie al progetto • Settare le variabili come classpath • Configurare con XML • Compilare e eseguire l'applicazione Ancona, 04/12/2008 12 Produttività 1. Uno dei fattori più importanti nello sviluppo di un software 2. Con una maggiore produttività, si ha più tempo per concentrarsi sul miglioramento delle caratteristiche, delle performance, e sulla qualità. 3. Costi con una maggiore produttività 1. Numero minore di sviluppatori per progetto. 2. Si spende meno fatica sulla comunicazione per piccoli progetti. 3. Costi di managment minori per progetto Ancona, 04/12/2008 13 Miro on Rails Il Sistema Sanitario si stia avviando verso nuove frontiere di riorganizzazione e di convergenza delle informazioni. Ancona, 04/12/2008 14 Miro on rails Caratteristiche di una cartella clinica: 1. 2. 3. 4. contiene tutte le informazioni relative al paziente presentata allo stesso modo sia per il dottore che per il requester possibilità per il requester di effettuare operazioni di inserimento e modifica dei dati fornisce con una certa rapidità le informazioni desiderate Ancona, 04/12/2008 15 Miro on Rails Informazioni Cartella clinica: Profilo Anamnesi Allergie Informazioni generali sulla famiglia Patologie familiari Patologie Problemi fisiologici Problemi clinici Ancona, 04/12/2008 16 Miro on Rails Problemi clinici rappresentano anche il vero punto di scambio tra requester e doctor Ciclo di vita: Refertato Chiuso Aperto Richiesta altra opinione Possibilità di aggiungere uno o più allegati relativi a esami di laboratorio effettuati per tale problema Ancona, 04/12/2008 17 Miro on Rails L’intero progetto è accessibile da “http://193.205.130.163/miro/” Ancona, 04/12/2008 18 Conclusioni Obiettivi raggiunti L’architettura che è stata realizzata è in grado di fornire un valido supporto anche per altri servizi tipici di applicazioni di telemedicina come la consultazione della cartella clinica on-line. Servizio accessibile anche da browser meno recenti e da connessioni lente Sviluppi futuri possibilità per il requester di lavorare off-line meccanismo di firma digitale con smart card per i dottori Ancona, 04/12/2008 19 Grazie