Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca:...

58
UNIVERSITÀ DEGLI STUDI DI TRIESTE Facoltà di Ingegneria Tesi di Laurea Triennale in Ingegneria Informatica PROGETTAZIONE E SVILUPPO DI UN'APPLICAZIONE WEB PER LA GESTIONE DI DATI DI ATTIVITA' DI RICERCA: CASO DELL'IRCCS BURLO GAROFOLO RELATORE Prof. Maurizio Fermeglia LAUREANDO Daniel Zotti Anno Accademico 2010/2011

description

 

Transcript of Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca:...

Page 1: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

UNIVERSITÀ DEGLI STUDI DI TRIESTE

Facoltà di Ingegneria

Tesi di Laurea Triennale in Ingegneria Informatica

PROGETTAZIONE E SVILUPPO DI

UN'APPLICAZIONE WEB PER LA

GESTIONE DI DATI DI ATTIVITA' DI

RICERCA: CASO DELL'IRCCS BURLO

GAROFOLO

RELATORE Prof. Maurizio Fermeglia

LAUREANDO Daniel Zotti

Anno Accademico 2010/2011

Page 2: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)
Page 3: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

i

INDICE

1. INTRODUZIONE ............................................................................... 1

1.1 Obiettivo della tesi ........................................................................... 1

1.2 Risultato della tesi ........................................................................... 1

1.3 Stato dell'arte ................................................................................. 2

1.4 Motivazioni ..................................................................................... 2

1.5 Vincoli di progetto ........................................................................... 3

1.6 Riassunto dei prossimi capitoli ........................................................... 3

2. ANALISI ........................................................................................... 4

2.1 Raccolta informazioni e definizione dei requisiti ................................... 4

3. PROGETTAZIONE DELLA BASE DI DATI ............................................ 6

3.1 Requisiti con rielaborazione delle frasi più significative ......................... 6

3.2 Glossario dei termini ........................................................................ 9

3.3 Operazione di analisi ........................................................................ 9

3.3.1 Operazioni statistiche: ................................................................ 9

3.3.2 Operazioni di controllo: ............................................................... 9

3.4 Progettazione concettuale ............................................................... 10

3.4.1 Analisi delle entità .................................................................... 11

3.4.2 Analisi delle relazioni e delle cardinalità ...................................... 15

3.5 Progettazione logica ....................................................................... 15

3.5.1 Schema scheletro .................................................................... 15

3.5.2 Attributi multipli e composti ...................................................... 17

3.5.3 Scelta degli identificatori primari ................................................ 17

3.5.4 Schema E-R Finale Ristrutturato ................................................ 18

3.5.5 Schema relazionale dedotto dallo schema E-R finale ..................... 19

4. PROGETTAZIONE DELL'APPLICATIVO ............................................ 20

4.1 Use Case Diagram ......................................................................... 20

4.2 Activity Diagram ............................................................................ 22

5. INTERFACCIA ................................................................................. 25

Page 4: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

ii

5.1 Introduzione ................................................................................. 25

5.2 La struttura dell’interfaccia dell'applicativo ........................................ 25

5.2.1 Le pagine di dettaglio ............................................................... 25

5.2.2 Le pagine di ricerca .................................................................. 27

5.2.3 La “Home page” del singolo ricercatore ....................................... 29

5.2.4 Le Statistiche .......................................................................... 30

5.2.5 Il Pannello di controllo .............................................................. 32

6. IMPLEMENTAZIONE ....................................................................... 33

6.1 Strutturazione dell’applicazione ....................................................... 33

6.2 Le funzioni più significative ............................................................. 35

6.2.1 Esempio di una pagina PHP – anagrafica.php ............................... 35

6.2.2 Config.php .............................................................................. 41

6.2.3 Action.php .............................................................................. 41

6.2.4 Inc.php ................................................................................... 44

6.3 L’utilizzo di Javascript e css ............................................................ 45

6.3.1 script.js .................................................................................. 45

6.3.2 style.css ................................................................................. 48

6.4 Esportazione in PDF ....................................................................... 50

6.5 Esportazione in Excel ..................................................................... 51

7. CONCLUSIONI ................................................................................ 52

7.1 Risultati ottenuti ............................................................................ 52

7.2 Lavoro svolto ................................................................................ 52

7.3 Sviluppi Futuri ............................................................................... 53

8. BIBLIOGRAFIA ............................................................................... 54

Page 5: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

1

1. INTRODUZIONE

1.1 Obiettivo della tesi

Si vuole creare un applicativo Web per la gestione dei ricercatori dell’IRCCS Burlo Garofolo.

Più precisamente, lo scopo è quello di implementare un sistema in cui si possano raccogliere tutti i ricercatori che lavorano presso l’IRCCS Burlo Garofolo con i dati relativi alla loro attività di ricerca quali: pubblicazioni, progetti di ricerca ed eventi a cui partecipano.

Inoltre si vuole avere una sezione in cui si possano utilizzare i dati raccolti sia per poter vedere come lavorano i vari dipendenti sia per poter pensare a delle strategie aziendali per quanto riguarda gli investimenti sulla ricerca.

1.2 Risultato della tesi

L’applicazione sviluppata rispetta i vincoli di progetto ed è già installata ed utilizzata dall’IRCCS “Burlo Garofolo”a partire da Aprile 2011.

Figura 1 - Collage di varie immagini dell'applicazione

Page 6: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

2

1.3 Stato dell'arte

Sul mercato esistono già dei software per la gestione delle pubblicazioni come endnote1per Windows o pybligrapher2per Linux, esistono anche moltissimi programmi per la gestione del personale,ma l’integrazione completa tra i due non sembra sia stata ancora pensata.

Inoltre, i programmi citati in precedenza non sono applicazioni web: bisogna quindi installarle sul computer di ogni utente che intende utilizzarle.

Figura 2 - Screenshot del programma endnote

1.4 Motivazioni

Al “Burlo Garofolo”, prima di installare questo software, l’intera attività di ricerca veniva gestita tramite l’uso di un file Excel e di vari file ausiliari, salvati in una cartella condivisa.

In direzione scientifica non era presente nemmeno un programma per gestire i ricercatori.

1Endnote: http://www.endnote.com/ 2Pybligrapher: http://pybliographer.org/

Page 7: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

3

1.5 Vincoli di progetto

o Sistema operativo del Server: Debian5

o DBMS: MySQL 5.0 già installato sul server interno

o Server Web: Apache 2.2 già installato sul server interno

o Browser: MozillaFirefox3.6 e successive

Si è scelto di utilizzare Firefox in quanto è installabile anche su

sistemi operativi Linux e Mac presenti in azienda. Il programma

funziona anche su Opera e Chrome. Per funzionare su Explorer

sarebbe necessario effettuare qualche ulteriore modifica che non

viene descritta in questa tesi.

o Piattaforma di sviluppo: Linux Ubuntu 9.04

o Linguaggi di programmazione utilizzati: Php5, Javascript

o Linguaggio di Markup utilizzato: HTML 4

o Strumento utilizzato per la programmazione: Editor di testo Geany 0.16

1.6 Riassunto dei prossimi capitoli

• Nel capitolo 2 verrà descritta la parte di analisi: raccolta delle

informazioni e definizione dei requisiti.

• Nel capitolo 3 verrà descritta la progettazione della base di dati.

• Nel capitolo 4 verrà descritta la progettazione dell’applicativo con l’ausilio

del linguaggio UML.

• Nel capitolo 5 verrà descritta l’interfaccia del software.

• Nel capitolo 6 verranno analizzate nel dettaglio le funzioni più

significative dell’applicazione.

• Nel capitolo 7 ci saranno le conclusioni.

• Nel capitolo 8 ci sarà la biografia.

Page 8: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

4

2. ANALISI

2.1 Raccolta informazioni e definizione dei requisiti

Il sistema deve essere suddiviso in quattro sezioni fondamentali:

- Anagrafica - Pubblicazioni - Progetti di ricerca - Eventi, Congressi, Convegni, ecc…

Nella sezione dell’anagrafica vengono salvati i dati personali di ogni singolo ricercatore e i dati che riguardano il tipo di lavoro da esso svolto.

Inoltre si vuole avere la possibilità di avere una visione “globale” di ogni singolo ricercatore, di conseguenza ci dev’essere una “home page” nella quale, in breve, si possano vedere le pubblicazioni, i progetti di ricerca e gli eventi a cui ha partecipato ciascun dipendente.

Nella sezione delle pubblicazioni vengono salvati i dati relativi alle pubblicazioni a cui partecipano i ricercatori dell’azienda.

Nella sezione dei progetti di ricerca vengono salvati i dati dei progetti di ricerca, con i relativi costi, ai quali partecipano i ricercatori dell’azienda.

Nella sezione degli eventi vengono salvati i dati relativi agli eventi a cui partecipano i ricercatori dell’azienda.

Per ognuna di queste sezioni fondamentali ci deve essere la possibilità di allegare dei file (ad esempio il curriculum del ricercatore o l’articolo di una pubblicazione) e di fare delle ricerche all’interno della sezione.

Si deve poter accedere al sistema tramite username e password personali e si deve prevedere l’accesso di più utenti contemporaneamente; ci deve essere quindi un pannello di controllo nel quale si possono creare, modificare ed eliminare e credenziali di accesso.

Si deve prevedere una sezione di analisi in cui si possano fare delle statistiche sui dati inseriti. Questa è forse la sezione più importante in quanto, una volta inserito un congruo numero di dati, sarà possibile fare le varie richieste al database e avere una visione dell’andamento dell’attività di ricerca dell’azienda.

Page 9: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

5

Come ultima cosa, si deve avere la possibilità di esportare il risultato di certe query in un file Excel da poter inviare al ministero, o da utilizzare per scambiarsi i dati con un formato che sia leggibile da tutti.

Inoltre, sarebbe comodo poter avere la possibilità di stampare o di esportare in un file pdf le pagine contenenti i risultati delle query.

Page 10: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

6

3. PROGETTAZIONE DELLA BASE DI DATI

3.1 Requisiti con rielaborazione delle frasi più significative

In questa parte, nella quale si affronta nel dettaglio il capitolo 2.1, si descrive la struttura del database in cui verranno salvati i dati dell’intero programma.

Nelle righe successive vengono descritte e rielaborate le frasi più significative dedotte dall’intervista fatta al committente, raggruppate per concetti simili.

Frasi di carattere generale. Si vuole realizzare un database nel quale memorizzare i dati relativi ai ricercatori che lavorano nell’azienda.

L’accesso deve avvenire tramite username e password personali.

Frasi relative ai ricercatori. Per ciascun ricercatore si vogliono avere il nome e il cognome, la data di nascita ed il codice fiscale; si vogliono poter inserire anche i suoi recapiti.

È importante sapere anche se il ricercatore ha un rapporto esclusivo con l’azienda e, in caso affermativo, bisogna indicare data di inizio del rapporto esclusivo ed eventuale data di fine rapporto. Si vuole inoltre sapere se il ricercatore ha il contratto esclusivo scaduto e se è rientrato in azienda dopo un certo periodo di tempo.

Ogni ricercatore deve avere una cartella personale sul server dove verranno salvati gli allegati personali; il percorso di questa cartella verrà salvato nel database.

Oltre a questi dati, si vuole avere uno storico annuale della struttura di appartenenza, della posizione in azienda, del tipo di contratto e della qualifica. In più, per ogni anno, si vuole avere visione dell’H-index3 e della percentuale di ricerca.

Frasi relative alle pubblicazioni. Le pubblicazioni scientifiche sono degli scritti redatti in modo oggettivo su un argomento scientifico.

È importante sapere se si tratta di una pubblicazione indicizzata o meno; le pubblicazioni indicizzate sono quelle che sono state pubblicate su una rivista che è inserita nell'indice mondiale delle pubblicazioni scientifiche. Pubblicare un articolo su di essa ha un indice di rilevanza proporzionale a quello della rivista. Questo indice si chiama Impact Factor4e misura il numero medio di citazioni

3 http://it.wikipedia.org/wiki/Indice_H 4 http://it.wikipedia.org/wiki/Fattore_di_impatto

Page 11: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

7

ricevute in un particolare anno da articoli pubblicati in una rivista scientifica (Journal) nei due anni precedenti

Una sezione molto importante, quindi, è quella in cui si inseriscono i valori relativi agli impact factor grezzo, normalizzato e corretto.

Si vogliono inserire inoltre i dati relativi al tipo (report, capitolo libro, linea guida/protocollo) e alla linea di progetto a cui è collegata una pubblicazione. Ovviamente si devono poter inserire le informazioni riguardanti il titolo, la testata (o rivista), il volume (con fascicolo e pagine), l’editore e il codice DOI associato; in aggiunta si vogliono inserire anche i dati relativi all’anno di pubblicazione e di attribuzione.

Si vogliono avere a disposizione dei campi vero/falso per definire se la pubblicazione ha una ricaduta assistenziale e per segnalare se c’è una doppia affiliazione, se gli autori sono in ordine alfabetico e se l’autore corrispondente si trova in penultima posizione.

Per ogni pubblicazioni, ovviamente, si devono poter inserire gli autori che vi partecipano, che possono essere appartenenti all’azienda oppure esterni. Per gli esterni si devono poter inserire semplicemente nome e cognome, per gli interni invece devono poter essere richiamati direttamente dal database e nella lista degli autori verranno visualizzati nome, cognome, data di nascita e struttura di appartenenza. Per ogni autore bisogna poter impostare la posizione in cui si trova, in quanto è molto importante per l’assegnazione del relativo IF.

Frasi relative ai progetti di ricerca. Anche per quanto riguarda i progetti di ricerca si vuole poter inserire il tipo (corrente, nazionale, internazionale, applications, sperimentazioni) ma anche la tipologia (pre-clinica, osservazionale, clinica-sperimentale, gestionale, metodologica). Come per le pubblicazioni, si deve poter inserire anche l’anno a cui viene attribuito il progetto di ricerca, la linea ed il titolo.

Poiché un progetto di ricerca può avere una durata di diversi anni, si deve poter inserire l’anno di inizio e l’anno di fine ricerca. Inoltre ogni progetto ha un’azienda leader che è capo del progetto e delle aziende partner.

Una parte molto importante per una buona analisi dell’organizzazione dei progetti di ricerca è quella dove si inseriscono il budget assegnato, richiesto e totale. Ci dev’essere anche la possibilità di segnalare se e quando quel determinato budget è stato approvato.

Anche in questo caso, per ogni progetto di ricerca bisogna poter inserire i ricercatori che vi partecipano, con le stesse modalità descritte per le pubblicazioni, tolto ovviamente il campo contenente l’IF.

Page 12: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

8

Frasi relative agli eventi. La gestione degli eventi è molto simile alle due viste in precedenza. Per eventi si intendono convegni, congressi, gruppi di lavoro o più in generale tutte quelle attività che non sono pubblicazioni o progetti di ricerca. Nella sezione degli eventi si deve inserire il tipo di evento (quelli spiegati in precedenza) e il ruolo con cui l’azienda partecipa (moderatore, poster, presentazione orale). Inoltre bisogna inserire il titolo dell’evento, la data in cui inizia, la sede e lo sponsor nel caso in cui sia previsto.

La parte di inserimento dei ricercatori che partecipano all’evento segue le stesse modalità di quella dei progetti di ricerca.

Frasi relative alle credenziali.

Ci deve essere una sezione per la gestione degli utenti dove l’amministratore del sistema può creare, modificare ed eliminare le credenziali di accesso.

Frasi relative alle statistiche. Per quanto riguarda la sezione delle statistiche,si devono poter fare delle query specifiche con relativa esportazione su file Excel.

Si vuole poter conoscere il numero di pubblicazioni fatte tra due date distinte; in più, dato un anno di pubblicazione o di attribuzione, si vogliono calcolare l’IF grezzo, normalizzato e corretto dell’azienda, del singolo ricercatore e di una determinata struttura.

Inoltre, per un determinato anno di pubblicazione o di attribuzione, si vogliono poter avere a disposizione delle liste con relativi IF (grezzo + normalizzato + corretto) di tutti i ricercatori,di tutte le pubblicazioni o di tutti i progetti di ricerca relativi a quell’anno.

Per tenere sotto controllo l’inserimento dei dati, si rende necessario sapere se ci sono dei ricercatori che non afferiscono a nessuna struttura, o se ci sono delle pubblicazioni che non hanno segnalato un anno di pubblicazione o di attribuzione.

Page 13: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

9

3.2 Glossario dei termini

Termine Descrizione Sinonimi Collegamenti

Ricercatore Rappresenta un dipendente dell’azienda

Dipendente, Lavoratore, Anagrafica

Pubblicazione, Progetto di ricerca, Evento

Pubblicazione Rappresenta una qualsiasi pubblicazione su una rivista scientifica

Articolo, Report, Capitolo di un libro, Linea Guida/Protocollo

Ricercatore

Progetto di ricerca

Rappresenta un progetto a carattere scientifico per il quale sono stati stanziati dei soldi

Pre-clinico, Osservazionale, Clinico-Sperimentale, Gestionale, Metodologica

Ricercatore

Evento

Rappresenta la partecipazione da parte del ricercatore ad un qualsiasi evento di carattere scientifico

Congresso, Convegno Ricercatore

3.3 Operazione di analisi

3.3.1 Operazioni statistiche:

- Dato l’anno di pubblicazione (o di attribuzione), calcolare il relativo IF grezzo, normalizzato e corretto dell’azienda;

- Dati il nome del ricercatore e l’anno di pubblicazione (o di attribuzione), calcolare il relativo IF grezzo, normalizzato e corretto;

- Dati il nome della struttura e l’anno di pubblicazione (o di attribuzione), calcolare il relativo IF grezzo, normalizzato e corretto;

- Dato l’anno di pubblicazione (o di attribuzione), stampare la lista di tutti i ricercatori con relativi IF (grezzo, normalizzato e corretto);

- Dato l’anno di pubblicazione (o di attribuzione), stampare la lista di tutte le pubblicazioni con relativi IF (grezzo, normalizzato e corretto);

- Dato un certo anno di pubblicazione (o di attribuzione), stampare la lista di tutti i progetti di ricerca con relativi IF (grezzo, normalizzato e corretto);

3.3.2 Operazioni di controllo:

- Lista di tutti i ricercatori che non afferiscono a nessuna struttura; - Lista di tutte le pubblicazioni che non hanno segnalato un anno di

pubblicazione o di attribuzione;

Page 14: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

10

3.4 Progettazione concettuale

In questo capitolo viene trattato lo schema Entity-Relationship, formato solamente de Entità e Relazioni. Le entità sono gli oggetti principali di un database e rappresentano un gruppo omogeneo di informazioni collegate tramite le relazioni.

Lo schema E-R viene progettato seguendo una strategia di tipo misto, individuando i concetti principali e realizzando uno schema scheletro che contiene solamente i concetti più importanti. In seguito lo si può decomporre, raffinare, espandere ed integrare, fino a raggiungere lo schema finale.

Entità:

• Ricercatore: contiene i dettagli relativi all’anagrafica del ricercatore • Struttura Anno: contiene lo storico delle strutture e contratti del

ricercatore • Pubblicazione: contiene i dettagli della pubblicazione • Progetto di ricerca: raccoglie i dati relativi al progetto di ricerca • Evento: contiene i dettagli relativi all’evento

Relazioni:

• Partecipazione: Relazione quaternaria tra le entità “Ricercatore”, “Pubblicazione” e “Progetto di ricerca”

• Afferenza: Relazione tra le entità “Ricercatore”, “Struttura Anno”

Page 15: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

11

3.4.1 Analisi delle entità

RICERCATORE

ID Ricercatore È il codice univoco che identifica un ricercatore: è candidato ad essere la chiave primaria dell’entità “Ricercatore”.

Nome È il nome del ricercatore

Cognome È il cognome del ricercatore

Data di Nascita Data di nascita del ricercatore

Codice Fiscale Codice Fiscale del ricercatore

Residenza Residenza del ricercatore. Attributo composto

Telefono Telefono aziendale del ricercatore. Attributo multivalore

E-Mail E-Mail del ricercatore

Rapporto Esclusivo Attributo Si/No che indica se il ricercatore ha o meno un rapporto esclusivo con l’azienda

Inizio Rapporto Esclusivo Data di inizio del rapporto esclusivo

Fine Rapporto Esclusivo Data di fine del rapporto esclusivo

Contratto Esclusivo Scaduto Attributo Si/No che indica se il ricercatore ha il contratto esclusivo scaduto

Rientrato Attributo Si/No che indica se il ricercatore è rientrato in azienda dopo la scadenza di un contratto esclusivo

Cartella Ricercatore Percorso della cartella sul server nella quale verranno salvati gli allegati personali del ricercatore

Modifica Data e ora dell’ultima modifica dei dati del ricercatore

Utente Modifica Utente che ha effettuato l’ultima modifica

Note Campo note

STRUTTURA ANNO

ID Struttura È il codice univoco che identifica una struttura in un dato anno: è candidato ad essere la chiave primaria dell’entità “Struttura Anno”.

Page 16: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

12

Anno Anno in cui il ricercatore afferisce alla struttura

Posizione Posizione che il ricercatore assume nella struttura

Ruolo Ruolo assunto nella struttura

Tipologia Contratto Tipo di contratto

Struttura Nome della struttura

H-Index Valore dell’indice H-Index

Alta Produttività Attributo Si/No che indica se il ricercatore è entrato nella zona di alta produttività

Valore Contratto Valore del contratto in euro

Percentuale Ricerca Percentuale di ricerca fatta

Note Campo note

PUBBLICAZIONE

ID Pubblicazione È il codice univoco che identifica una pubblicazione: è candidato ad essere la chiave primaria dell’entità “Pubblicazione”.

Cartella Pubblicazione Percorso della cartella sul server nella quale verranno salvati gli allegati della pubblicazione

Tipo Pubblicazione Indica se si tratta di una pubblicazione indicizzata o meno

Titolo Titolo della pubblicazione

Testata Nome della rivista

Codice DOI Codice univoco DOI

Tipo IF Indica il modo in cui viene fatto il calcolo degli IF

PMID Pub Med ID

Rivista Posizione Volume(Capitolo):Pagine

Editore Editore della rivista

Anno Pubblicazione Anno in cui viene pubblicata la pubblicazione sulla rivista

Anno Attribuzione Anno in cui viene attribuito il valore dell’IF ai ricercatore che sono associati alla rivista

Page 17: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

13

Numero Progetto di Ricerca Indica l’eventuale progetto di ricerca associato

IF Grezzo Valore dell’Impact Factor Grezzo

IF Normalizzato Valore dell’Impact Factor Normalizzato

IF Corretto Valore dell’Impact Factor Corretto

Pubblicazione Scientifica Attributo Si/No che indica se si tratta di una pubblicazione scientifica

Ricaduta Assistenziale Attributo Si/No che indica se la pubblicazione ha una ricaduta assistenziale

Doppia Affiliazione Attributo Si/No che indica se è presente una doppia affiliazione

Documento Supporto Coerenza Attributo Si/No che indica se si tratta di un documento di supporto

Autori ordine alfabetico Attributo Si/No che indica se gli autori della pubblicazione sono stati scritti in ordine alfabetico

Autore Penultima Indica se l’autore principale è in penultima posizione

Linea Indica la linea di ricerca

Tipologia Tipo di pubblicazione (Report, Capitolo Libro, Linea guida/Protocollo, altro)

Note Campo note

PROGETTO DI RICERCA

ID Ricerca È il codice univoco che identifica un progetto di ricerca: è candidato ad essere la chiave primaria dell’entità “Progetto di Ricerca”.

Cartella Ricerca Percorso della cartella sul server nella quale verranno salvati gli allegati del progetto di ricerca

Tipo Ricerca Ricerca corrente, nazionale, internazionale, applications, sperimentazioni

Linea Linea di ricerca

Numero Numero del progetto di ricerca

Titolo Titolo del progetto di ricerca

Anno Anno a cui assegnare il progetto di ricerca

Page 18: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

14

Tipologia Pre-clinica, osservazionale, clinica-sperimentale, gestionale, metodologica

Anno Inizio Anno di inizio del progetto di ricerca

Anno Fine Anno di fine del progetto di ricerca

Leader Azienda leader del progetto di ricerca

Partner Azienda partner del progetto di ricerca

Budget Assegnato Budget assegnato in euro

Budget Richiesto Budget richiesto in euro

Budget Totale Budget totale in euro

Approvato Attributo Si/No che indica se il progetto di ricerca è stato approvato dalla direzione scientifica

Data Approvazione Data in cui è stato approvato il progetto di ricerca

Note Campo note

EVENTO

ID Evento È il codice univoco che identifica un evento: è candidato ad essere la chiave primaria dell’entità “Evento”.

Cartella Evento Percorso della cartella sul server nella quale verranno salvati gli allegati dell’evento

Tipo Evento Tipo di evento

Titolo Titolo dell’evento

Data Data in cui si è svolto l’evento

Anno Anno al quale associare l’evento

Sede Sede dell’evento

Sponsor Sponsor

Ruolo Ruolo con il quale l’azienda ha partecipato all’evento

Note Campo note

Page 19: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

15

3.4.2 Analisi delle relazioni e delle cardinalità

PARTECIPAZIONE

Collega l’entità “Ricercatore” alle entità “Pubblicazione”, “Progetti di ricerca” e “Evento”

Cardinalità Molti a molti: una pubblicazione (progetto di ricerca, evento) può venire assegnato ad uno o più ricercatori differenti, e ad un ricercatore possono venire assegnati una o più pubblicazioni (progetti di ricerca, eventi) diversi.

Valore IF Personale

Valore dell’IF personale, nel caso in cui il ricercatore partecipi a una pubblicazione

Posizione Posizione nel caso in cui il ricercatore sia un autore collegato a una pubblicazione

Responsabile Indica se il ricercatore è il responsabile, nel caso in cui si tratti di un progetto di ricerca

AFFERENZA

Collega l’entità “Ricercatore” all’entità “Struttura Anno”

Cardinalità Uno a molti: un ricercatore afferisce (potenzialmente) ogni anno ad una struttura diversa, con diversi tipi di contratto, ruolo, posizione, ecc.. e quei dati sono relativi esclusivamente a quel ricercatore

3.5 Progettazione logica

3.5.1 Schema scheletro

Analizzando il diagramma E-R, si può notare immediatamente che la generalizzazione “Ricerca” raggruppa tre entità troppo diverse tra loro e quindi conviene sostituirla con tre entità distinte. In questo modo la relazione “Partecipazione” diventa una relazione ternaria che collega l’entità “Ricercatore” alle entità “Progetto di Ricerca”, “Pubblicazione” ed “Evento”.

Page 20: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

16

In seguito si può notare che la relazione ternaria “Partecipazione” può essere scomposta. Si analizza nel dettaglio solamente la relazione tra le entità “Ricercatore” e “Pubblicazione”, ma si può agire allo stesso modo per le coppie di entità “Ricercatore”-“Progetto di ricerca” e “Ricercatore”-“Evento”.

Un singolo ricercatore può partecipare a diverse pubblicazioni e una stessa pubblicazione può avere diversi autori; di conseguenza la nuova relazione tra l’entità “Ricercatore” e l’entità “Pubblicazione” è del tipo molti a molti. Questa relazione viene chiamata “Partecipazione Pubblicazione”.

Page 21: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

17

3.5.2 Attributi multipli e composti

Dall’analisi delle entità che è stata fatta in “Progettazione Concettuale”, relativamente all’entità “Ricercatore” sono stati evidenziati un attributo composto e un attributo multivalore.

L’attributo composto “Residenza” relativo appunto alla residenza del dipendente viene suddiviso, come richiesto dalla direzione scientifica, in due attributi elementari: “Indirizzo” e “Città”.

L’attributo “Telefono”, che inizialmente doveva essere di tipo multivalore, viene trattato come un unico attributo semplice in quanto non è interesse dell’azienda avere più di un numero di telefono per ogni ricercatore.

3.5.3 Scelta degli identificatori primari

ID Ricercatore:Poiché su richiesta del committente il codice fiscale e la data di nascita devono essere opzionali, è necessario inserire un identificatore di questo tipo.

ID Pubblicazione: Scegliere un identificatore formato da titolo pubblicazione + rivista + posizione non è possibile in quanto alcuni di questi attributi possono essere facoltativi, allora bisogna aggiungere un identificatore di questo tipo.

ID Ricerca:Come per la pubblicazione, si aggiunge un attributo ID Ricerca come identificatore univoco

ID Evento: Come per la pubblicazione e per il progetto di ricerca, si aggiunge un attributo ID Evento come identificatore univoco.

ID Struttura Anno:Per le stesse condizioni riguardanti pubblicazione, evento e progetto di ricerca, si sceglie di utilizzare un ID Struttura Anno come identificatore univoco per lo storico delle strutture.

ID Partecipazione Pubblicazione: Poiché nella maggior parte delle pubblicazioni ci possono essere degli autori esterni, non è possibile scegliere un identificatore univoco composto da ID Ricercatore + ID Pubblicazione. In questo caso si opta per aggiungere un identificatore ID Partecipazione Pubblicazione.

ID Partecipazione Ricerca:Come per “Partecipazione Pubblicazione”, si inserisce un identificatore univoco ID Partecipazione Ricerca

ID Partecipazione Evento: Come per “Partecipazione Ricerca” e “Partecipazione Pubblicazione”, si inserisce un identificatore univoco ID Partecipazione Evento

Page 22: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

18

3.5.4 Schema E-R Finale Ristrutturato

Page 23: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

19

3.5.5 Schema relazionale dedotto dallo schema E-R finale

Page 24: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

20

4. PROGETTAZIONE DELL'APPLICATIVO

4.1 Use Case Diagram

Lo Use Case Diagram è lo strumento utilizzato per descrivere le funzionalità offerte dal software; più precisamente è una collezione di scenari che riguardano l'utilizzo del sistema in cui ogni scenario descrive una sequenza di eventi e di attori.

La sequenza di eventi descritta da uno Use Case viene iniziata solitamente da una persona, nel nostro caso l’utente, o da un altro sistema o ancora dal passare del tempo. Le entità che iniziano la sequenza di eventi sono definite Actors e vengono rappresentate graficamente da un omino stilizzato (stickman).

Figura 3 - Use Case Diagram dell'intero programma

Page 25: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

21

Il diagramma sopra fa intuire in modo abbastanza immediato le funzionalità del software:

L’utente accede al programma tramite il browser e, per poter utilizzare le varie funzionalità, deve effettuare il login inserendo username e password che vengono confrontate con quelle presenti nel database.

Una volta effettuato l’accesso può ricercare le varie anagrafica, pubblicazioni, progetti di ricerca ed eventi presenti nel database e può modificare, eliminare o inserire ognuno di questi.

Inoltre per ogni sezione può gestire i file allegati, può interrogare il database per la parte di analisi e infine può esportare in file Excel i risultati ottenuti.

Per modificare le varie impostazioni può utilizzare il pannello di controllo e, una volta finito il lavoro, può uscire dal programma tramite il logout.

Il diagramma descrive in modo più dettagliato la Gestione Anagrafiche:

Figura 4 - Use Case Diagram della gestione delle anagrafiche

Page 26: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

22

4.2 Activity Diagram

Un Activity Diagram viene disegnato per descrivere cosa accade durante un'operazione o un processo e mette in risalto le attività del programma.

Ogni attività è rappresentata da un rettangolo con gli angoli arrotondati e viene collegata alle altre attività tramite delle frecce direzionali che rappresentano la transizione da un'attività alla successiva.

Anche l'Activity Diagram ha un punto di partenza, rappresentato da un cerchio pieno, ed un punto di fine rappresentato da un cerchio pieno con un cerchio più grande all’esterno.

Per descrivere il funzionamento del software vengono considerati nel dettaglio solamente due processi che rappresentano, con qualche piccola modifica, la maggior parte dei processi principali messi in atto dal programma.

Il primo processo che viene preso in considerazione è la modifica dell’anagrafica del ricercatore, che può descrivere in generale anche le modifiche di pubblicazioni, progetti di ricerca ed eventi, considerando solamente i diversi attributi delle vari entità.

L’utente inserisce nel form di ricerca il nome e/o il cognome del ricercatore di cui vuole modificare l’anagrafica, l’applicazione verifica la connessione con il database e, se è andata a buon fine, interroga il database e prepara la pagina HTML con i risultati della ricerca.

Se ci sono più risultati, l’utente clicca sul ricercatore interessato e il programma, dopo aver controllato la connessione, richiede al database tutti i dati relativi all’anagrafica e alle strutture collegate al singolo ricercatore.

Dopo aver ricevuto i dati, l’applicazione prepara la pagina HTML e la invia al browser dell’utente, il quale modifica i campi interessati.

Uno volta premuto il tasto per salvare, viene verificata la connessione e viene fatto un update dei dati nel database; se tutto è andato a buon fine l’applicazione genera un messaggio di avvenuta modifica, altrimenti genera un messaggio d’errore.

Page 27: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

23

Figura 5 - Activity Diagram della modifica di un'anagrafica di un ricercatore

Page 28: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

24

Il secondo processo considera la parte relativa all’analisi e all’esportazione delle statistiche in file Excel.

Nella sezione “statistiche” l’utente inserisce i dati per la richiesta al data base, il programma verifica la connessione, interroga il database e prepara la pagina HTML con i risultati delle statistiche.

L’utente, dopo aver letto la pagina, può scegliere di fare una nuova richiesta o può decidere di esportare i risultati in un file Excel.

Se viene cliccato il pulsante “Esporta”, il programma crea il file Excel e, se non ci sono errori, invia il file al browser dell’utente che cliccherà su “Salva” per salvare il file Excel sul suo computer.

Figura 6 - Activity Diagram delle operazioni di analisi e dell'esportazione in Excel

Page 29: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

25

5. INTERFACCIA

5.1 Introduzione

In questo capitolo vengono descritte le pagine HTML che formano l’interfaccia dell’applicazione, più precisamente verranno affrontati:

- La struttura dell’interfaccia in generale - Le pagine di dettaglio - Le pagine di ricerca - La home page del ricercatore - Le Statistiche - Il Pannello di controllo

5.2 La struttura dell’interfaccia dell'applicativo

Ogni pagina è formata da un menu, che si trova in posizione fissa nella parte superiore, da un tasto “indietro” per tornare alla pagina precedente, che si trova in basso a sinistra, e dal contenuto che a sua volta è suddiviso in diverse parti; quest’ultimo verrà spiegato nel dettaglio nei successivi capitoli.

5.2.1 Le pagine di dettaglio

Le pagine di dettaglio sono presenti solo per quanto riguarda le sezioni di Anagrafica, Pubblicazioni, Progetti di Ricerca ed Eventi.

Per capire meglio com’è strutturata una pagina di dettaglio, può essere d’aiuto osservare uno screenshot:

Page 30: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

Figura

1. Menu È presente in tuttepermette di raggiungere velocemente qualsiasi sezione del programma.

2. Titolo della paginaAnche questa è sempre presente in tutte le pagine utile per far ricordare all’utente in che pagina si trova

3. Dati della paginaQuesta parte si trova solamente nelle pagine di dettaglio e contiene tutti i dati modificabili

4. Allegati Anche questa parte si trova solamente nelle pagine di dettaglio e permette di gestire gli allegati

5. Collegamenti Nelle sezioni Pubblicazione, Progetti di Ricerca ed Eventi raccoglie i ricercatori collegati.

26

Figura 7 - Dettaglio della Pubblicazione

tutte le pagine dell’applicazione web, in posizione fissa, e permette di raggiungere velocemente qualsiasi sezione del programma.

olo della pagina

Anche questa è sempre presente in tutte le pagine dell’applicazione ed è utile per far ricordare all’utente in che pagina si trovaDati della pagina

Questa parte si trova solamente nelle pagine di dettaglio e contiene tutti

Anche questa parte si trova solamente nelle pagine di dettaglio e permette di gestire gli allegati

Nelle sezioni Pubblicazione, Progetti di Ricerca ed Eventi raccoglie i ricercatori collegati.

le pagine dell’applicazione web, in posizione fissa, e permette di raggiungere velocemente qualsiasi sezione del programma.

dell’applicazione ed è utile per far ricordare all’utente in che pagina si trova

Questa parte si trova solamente nelle pagine di dettaglio e contiene tutti

Anche questa parte si trova solamente nelle pagine di dettaglio e

Nelle sezioni Pubblicazione, Progetti di Ricerca ed Eventi raccoglie i

Page 31: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

In questa zona, nel caso in cui il rstruttura relativamente all’anno inserito nella Pubbldi Ricerca o Evento), viene segnalato un errore in modo ben visibile, come mostrato nell’immagine sotto.

Figura

Per quanto riguarda la sezione di Anagrafica, questa zona raccoglie le strutture collegate al singolo ricercatore per ogni anno (vedi immagine sotto)

Figura 9 -

6. Pulsante “Indietro”Cliccando su questo pulsante si può tornare alla pagine precedente

7. Pulsanti di Modifica ed EliminazioneSono dei pulsanti essenziali per salvare le modifiche fatte o eliminare un’anagrafica, progetto di ricerca, p

5.2.2 Le pagine di ricerca

Anche le pagine di ricerca sono presenti solo per quanto riguarda le sezioni di Anagrafica, Pubblicazioni, Progetti di Ricerca ed Eventi.

E anche in questo caso pricerca, può essere d’aiuto osservare

NB: Nelle pagine di ricerca sono sempre presenti le sezioni 1,2,6 viste in

precedenza

27

zona, nel caso in cui il ricercatore non sia collegato a nessuna struttura relativamente all’anno inserito nella Pubblidi Ricerca o Evento), viene segnalato un errore in modo ben visibile, come mostrato nell’immagine sotto.

Figura 8 - Errore negli autori della pubblicazione

Per quanto riguarda la sezione di Anagrafica, questa zona raccoglie le strutture collegate al singolo ricercatore per ogni anno (vedi immagine

- Dettaglio delle strutture del singolo ricercatore

Pulsante “Indietro”

Cliccando su questo pulsante si può tornare alla pagine precedentePulsanti di Modifica ed Eliminazione

Sono dei pulsanti essenziali per salvare le modifiche fatte o eliminare un’anagrafica, progetto di ricerca, pubblicazione o evento.

5.2.2 Le pagine di ricerca

Anche le pagine di ricerca sono presenti solo per quanto riguarda le sezioni di Anagrafica, Pubblicazioni, Progetti di Ricerca ed Eventi.

E anche in questo caso per capire meglio com’è strutturata una pagind’aiuto osservare uno screenshot:

ricerca sono sempre presenti le sezioni 1,2,6 viste in

icercatore non sia collegato a nessuna icazione (o Progetto

di Ricerca o Evento), viene segnalato un errore in modo ben visibile,

della pubblicazione

Per quanto riguarda la sezione di Anagrafica, questa zona raccoglie le strutture collegate al singolo ricercatore per ogni anno (vedi immagine

el singolo ricercatore

Cliccando su questo pulsante si può tornare alla pagine precedente

Sono dei pulsanti essenziali per salvare le modifiche fatte o eliminare ubblicazione o evento.

Anche le pagine di ricerca sono presenti solo per quanto riguarda le sezioni di

capire meglio com’è strutturata una pagina di

ricerca sono sempre presenti le sezioni 1,2,6 viste in

Page 32: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

Figura 10 - Risultati della ricerca delle anagrafiche dei ricercatori

Figura

A. Form di ricerca Ogni sezione possiede un form di ricerca con campi diversi per anagrafica, pubblicazione, progetto di ricerca o evento.

B. Risultati della ricercaÈ una lista in cui vengono mostrati iSe mancano dei campi importanti progetti di ricerca e gli eventirosso.

28

Risultati della ricerca delle anagrafiche dei ricercatori

Figura 11 - Lista delle pubblicazioni: Errori

Ogni sezione possiede un form di ricerca con campi diversi per anagrafica, pubblicazione, progetto di ricerca o evento.Risultati della ricerca

È una lista in cui vengono mostrati i risultati della ricerca.Se mancano dei campi importanti per quanto riguarda le pubblicazioni, i progetti di ricerca e gli eventi, le relative righe ve

Risultati della ricerca delle anagrafiche dei ricercatori

Ogni sezione possiede un form di ricerca con campi diversi per anagrafica, pubblicazione, progetto di ricerca o evento.

risultati della ricerca. per quanto riguarda le pubblicazioni, i

vengono segnalate in

Page 33: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

C. Modifica Collegamento alla pagina di dettaglio anagrafica, pubblicazione, progdi ricerca o evento.

D. Collegamento alla “Viene descritto nel dettaglio nel capitolo successivo.

E. Eliminazione diretta del ricercatore (solo per anagrafica)

5.2.3 La “Home page” del singolo ricercatore

La “Home page” è una pagina che raccoglie tutte le pubblicazioni, i progetti di ricerca e gli eventi a cui ha partecipato il singolo ricercatore. Essa è raggiungibile tramite la sezione di anagrafica come si è visto nel capitolo precedente.

Figura

È una sezione utile se si vuole avere un riassunto di cosa ha fatto un dipendente da quando fa parte dell’azienda.

Oltre a leggere le varie attività del ricercatore, si possono anche modificare o aggiungerne di nuove.

29

Collegamento alla pagina di dettaglio anagrafica, pubblicazione, progdi ricerca o evento. Collegamento alla “Home page” del ricercatore (solo per anagrafica)Viene descritto nel dettaglio nel capitolo successivo.

diretta del ricercatore (solo per anagrafica)

del singolo ricercatore

“Home page” è una pagina che raccoglie tutte le pubblicazioni, i progetti di ricerca e gli eventi a cui ha partecipato il singolo ricercatore. Essa è raggiungibile tramite la sezione di anagrafica come si è visto nel capitolo

Figura 12 - Home page del singolo ricercatore

È una sezione utile se si vuole avere un riassunto di cosa ha fatto un dipendente da quando fa parte dell’azienda.

Oltre a leggere le varie attività del ricercatore, si possono anche modificare o

Collegamento alla pagina di dettaglio anagrafica, pubblicazione, progetto

” del ricercatore (solo per anagrafica).

diretta del ricercatore (solo per anagrafica)

“Home page” è una pagina che raccoglie tutte le pubblicazioni, i progetti di ricerca e gli eventi a cui ha partecipato il singolo ricercatore. Essa è raggiungibile tramite la sezione di anagrafica come si è visto nel capitolo

È una sezione utile se si vuole avere un riassunto di cosa ha fatto un

Oltre a leggere le varie attività del ricercatore, si possono anche modificare o

Page 34: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

5.2.4 Le Statistiche

Questa è la parte più importante dell’applicazione in quanto, dopo aver inserito molti dati, si possono fare tutte le statistiche per controllare come sta andando la ricerca nell’azienda.

Figura 13

La pagina principale delle statistiche si presenta come una lista di formricerca preformattati nei quali l’utente deve inserire i dati necessari e cliccare sul tasto “play”.

30

Questa è la parte più importante dell’applicazione in quanto, dopo aver inserito molti dati, si possono fare tutte le statistiche per controllare come sta andando

- Lista delle possibili interrogazioni al Database

La pagina principale delle statistiche si presenta come una lista di formi nei quali l’utente deve inserire i dati necessari e cliccare

Figura 14 - Dettaglio di una query

Questa è la parte più importante dell’applicazione in quanto, dopo aver inserito molti dati, si possono fare tutte le statistiche per controllare come sta andando

al Database

La pagina principale delle statistiche si presenta come una lista di form di i nei quali l’utente deve inserire i dati necessari e cliccare

Page 35: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

Un esempio di query potrebbe essere quella vista nelle“Calcolare l’Impact Factor di Daniel Zotti per il 2010 (anno di pubbli

E il risultato sarebbe quello nell’immagine sotto:

Un’altra richiesta da fare al database potrebbe essere quella di voler vedere la “Lista dei ricercatori con i relativi Impact Factor per il 2010 (Anno di Pubblicazione)”

Figura

In questo caso, oltre ad avere la lista dei ricercatori, compare il pulsante “Esporta” per esportare il risultato su un file

31

Un esempio di query potrebbe essere quella vista nelle due immagini “Calcolare l’Impact Factor di Daniel Zotti per il 2010 (anno di pubbli

E il risultato sarebbe quello nell’immagine sotto:

Figura 15 - Risultato della query

Un’altra richiesta da fare al database potrebbe essere quella di voler vedere la “Lista dei ricercatori con i relativi Impact Factor per il 2010 (Anno di

Figura 16 - Altro dettaglio di una query

In questo caso, oltre ad avere la lista dei ricercatori, compare il pulsante “Esporta” per esportare il risultato su un file Excel.

due immagini sopra: “Calcolare l’Impact Factor di Daniel Zotti per il 2010 (anno di pubblicazione)”

Un’altra richiesta da fare al database potrebbe essere quella di voler vedere la “Lista dei ricercatori con i relativi Impact Factor per il 2010 (Anno di

In questo caso, oltre ad avere la lista dei ricercatori, compare il pulsante

Page 36: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

5.2.5 Il Pannello di contro

In questa sezione si all’applicazione.

Figura

32

Figura 17 - Risultato della query

Pannello di controllo

si possono gestire gli utenti che hanno accesso

Figura 18 - Pagina del "Pannello di controllo"

possono gestire gli utenti che hanno accesso

Page 37: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

33

6. IMPLEMENTAZIONE

6.1 Strutturazione dell’applicazione

RICERCATORI [cartella]

- config.php

o file di configurazione per server web e collegamenti al database

- action.php

o raccoglie le funzioni per leggere/scrivere sul database

- inc.php

o file che raccoglie tutte le funzioni da utilizzare nelle varie pagine

PHP

- allegati.php

o raccoglie le funzioni e le pagine della sezione degli allegati

- elimina_file.php

o pagina pop up per l’eliminazione di un allegato

- rinomina_file.php

o pagina per la ridenominazione degli allegati

- upload.php

o pagina per fare l’upload di un allegato

- anagrafica.php

o dettaglio dell’anagrafica e delle strutture del singolo ricercatore

- cerca.php

o raccoglie i risultati di ricerca di anagrafica, pubblicazione, progetti

di ricerca ed evento

- footer.php

o pulsante indietro presente in quasi tutte le pagine php

- header.php

o header con il menu presente in tutte le pagine php

- home.php

o raccoglie le home di pubblicazione, progetto di ricerca e evento

- index.php

Page 38: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

34

o pagina che fa da contenitore a tutte le altre pagine che vengono

caricate al momento della richiesta

- modifica_utente.php

o pagina di modifica delle credenziali

- pannello.php

o pagina del pannello di controllo

- principale.php

o pagina principale in cui ci sono i vari form per la ricerca di

anagrafica, pubblicazione, progetto di ricerca ed evento, più i

collegamenti a pannello di controllo e statistiche

- scelta_persona.php

o pagina popup per scegliere i ricercatori da collegare alla

pubblicazione o al progetto di ricerca o all’evento

- statistiche.php

o pagina con la lista dei form delle statistiche

- statistiche_risultati.php

o pagina con i risultati della singola statistica

- TMP [cartella]

o Cartella in cui vengono salvati i file provvisori delle esportazioni in

Excel

- IMMAGINI [cartella]

o Cartella che contiene tutte le immagini che servono a creare

l’interfaccia del programma

- PUBBLICAZIONE [cartella]

• home_pubblicazione.php

o pagina che viene inclusa nella home.php con la lista delle

pubblicazioni relative al singolo ricercatore

• dettaglio_pubblicazione.php

o pagina di dettaglio della singola pubblicazione

• inserisci_pubblicazione.php

o pagina di inserimento di una nuova pubblicazione

- PROGETTO DI RICERCA [cartella]

Page 39: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

35

• home_ricerca.php

o pagina che viene inclusa nella home.php con la lista dei

progetti di ricerca relativi al singolo ricercatore

• dettaglio_ricerca.php

o pagina di dettaglio del singolo progetto di ricerca

• inserisci_ricerca.php

o pagina di inserimento di un nuovo progetto di ricerca

- EVENTO [cartella]

• home_evento.php

o pagina che viene inclusa nella home.php con la lista degli

eventi relativi al singolo ricercatore

• dettaglio_evento.php

o pagina di dettaglio del singolo evento

• inserisci_evento.php

o pagina di inserimento di un nuovo evento

- INC [cartella]

• style.css

o foglio di stile dell’applicazione

• script.js

o file contenente tutti gli script javascript utilizzati

dall’applicazione

6.2 Le funzioni più significative

In questo capitolo vengono analizzate le pagine e le funzioni più significative.

6.2.1 Esempio di una pagina PHP – anagrafica.php

Lo scenario è il seguente:

Dalla pagina cerca.php si clicca sul pulsante della “carta di identità” per andare nel dettaglio dell’anagrafica (anagrafica.php).

Per prima cosa la pagina anagrafica.phpdeve andare a leggere il valore dell’identificatore dell’anagrafica che potrebbe essere stato inviato tramite il metodo POST dal form della pagina precedente, o tramite una variabile di sessione negli altri casi (che non andremo a specificare):

Page 40: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

36

if(isset($_POST['idanagrafica']))

{

$idanagrafica=$_POST['idanagrafica'];

$_SESSION['idanagrafica']=$_POST['idanagrafica'];

}

else

{

$idanagrafica=$_SESSION['idanagrafica'];

}

In seguito vengono salvati, se presenti, i criteri di ricerca (dati del form e pagina selezionata) per ritornare alla pagina precedente:

if(isset($_POST['nome_ricerca'])||isset($_POST['cognome_ricerca']))

{

$nome_ricerca=$_POST['nome_ricerca'];

$cognome_ricerca=$_POST['cognome_ricerca'];

$_SESSION['nome_ricerca']=$_POST['nome_ricerca'];

$_SESSION['cognome_ricerca']=$_POST['cognome_ricerca'];

}

else

{

$nome_ricerca=$_SESSION['nome_ricerca'];

$cognome_ricerca=$_SESSION['cognome_ricerca'];

}

$pagina_ricerca=$_POST['pag'];

Ora si può interrogare il database per avere tutti i dati del singolo ricercatore:

//PREPARAZIONE QUERY

$qsel="SELECT * FROM anagrafica WHERE idanagrafica = $idanagrafica";

//CONNESSIONE DATABASE

$conn=dbconn(); //dbconn si trova in "inc.php"

//INTERROGAZIONE DATABASE

$risultato=dbquery($qsel,$conn); //dbquery si trova in "inc.php"

//ESPORTAZIONE

$riga = mysql_fetch_assoc($risultato);

//SALVATAGGIO DEI DATI NELLE VARIABILI PHP

$nome=$riga["nome"];

Page 41: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

37

$cognome=$riga["cognome"];

$data_di_nascita=$riga["natoil"];

//CONVERSIONE DATA DA FORMATO MYSQL A FORMATO GG/MM/AAAA

$natoil=converti_data_da_mysql($data_di_nascita);

...omissis...

//SE NON È STATA CREATA UNA CARTELLA PER IL RICERCATORE, NE CREO UNA

If(($cartella_anagrafica=='')||(strlen($cartella_anagrafica)!=30)||($cartella_anagrafic

a==NULL))

{

$cartella_anagrafica=random_string(30);

}

Si preferisce dare un nome RANDOM di lunghezza fissa (30 caratteri) alla cartella dell’anagrafica, invece di rinominare la cartella con un nome standard (ES:NOME+COGNOME), così i file che vengono salvati sul server non possono essere associati direttamente al ricercatore, a meno che non si abbia accesso al database per vedere il collegamento nome cartella – ricercatore.

Dopo aver esportato i dati dal database, si può stampare l’intera pagina dei dettagli con tutti i dati da modificare:

//TITOLO DELLA PAGINA CON NOME E COGNOME ED EVENTUALE DATA DI NASCITA

<p class=titolo>

<?$nome $cognome?>

if ($natoil!=''){echo "($natoil)";}

</p>

//FORM CON I DATI DA MODIFICARE

<form name=anagrafica id=anagrafica method=POST>

<div class=anagrafica_sinistra>

<table align=right>

<input type=hidden name=idanagrafica Value="<?$idanagrafica?>">

<input type=hiddenname=cartella_anagraficavalue="<?$cartella_anagrafica?>">

<tr>

<td align=right>Nome: </td>

<td>

<input type=text name=nome size=40 value="<?$nome?>">

</td>

</tr>

<tr>

Page 42: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

38

<td align=right>Cognome: </td>

<td>

<input type=text name=cognome size=40 value="<?$cognome?>">

</td>

</tr>

...omissis...

<tr>

<td></td>

<td><buttontype=submitname=anagrafica value=MODIFICA>Modifica

Anagrafica</button></td>

</tr>";

<tr>

<td></td>

<td><buttontype=submitname=anagrafica value=ELIMINA>Elimina

Anagrafica</button></td>

</tr>

</table>

</div>

</form>

In seguito si visualizzano tutti gli allegati dell’anagrafica del ricercatore

<div class=allegati>

<?

$cartella_post=$cartella="documenti/".$cartella_anagrafica."/";

include('allegati.php');

?>

<div>

<button class=immagine type=button onclick="apriFinestraUpload('<?$cartella_post?>');">

<div class=anagrafica_upload_nuovo>

<imgsrc=\"immagini/upload.png\">Nuovo Upload

<div>

</button>

</div>

</div>

Successivamente si esportano dal database e si stampano sulla pagina tutte le strutture per ogni anno collegate al ricercatore:

Page 43: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

39

//ESPORTAZIONE

$qsel="SELECT * FROM anagrafica2 WHERE idanagrafica = $idanagraficaorder by anno DESC";

$conn=dbconn();

$risultato=dbquery($qsel,$conn);

$num = mysql_num_rows ($risultato);

//STAMPA

<div class=dettagli_annuali>

<p>DETTAGLI ANNUALI</p>

<div id=contenitore_anagrafica2>

<?

if ($num==0){

echo "<div><p id=vuoto style=\"display:inline;\">vuoto</p></div>";

}

else {

echo "<div><p id=vuoto style=\"display:none;\">vuoto</p></div>";

}

?>

<table id=anagrafica2_table>

<tbody id=anagrafica2_tbody>

<?

if ($num==0){

echo "<tr id=intestazione style=\"visibility:hidden\">";

$i=1;

}

else{

echo "<tr id=intestazione style=\"visibility:visible\">";

$i=0;

}

?>

<th>Anno</th><th>Posizione</th><th>Qualifica(Ruolo)</th><th>Tipo

Contratto</th><th>Struttura</th><th>H-

index</th><th>A.P.</th><th>Valore</th><th>%</th><th>Note</th>

</tr>

<?

while ($riga = mysql_fetch_assoc($risultato)){

$idanagrafica2=$riga["idanagrafica2"];

Page 44: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

40

$idanagrafica=$riga["idanagrafica"];

$anno=$riga["anno"];

...omissis...

<input type=hiddenname=<?idanagrafica2_$i?>value=<?$idanagrafica2?>>

<tr id=row<?$i?>>

<td>

<input type=text id=<?anno_$i?> name=<?anno_$i?> value=<?$anno?>>

</td>

...omissis...

<td onclick=”eliminaRigaAnagrafica2(this);">

<imgsrc="immagini/ics.png" alt="elimina">

</td>

</tr>

$i++;

}//while

?>

</tbody>

</table>

<p><a href="javascript:

aggiungiRigaAnagrafica2('anagrafica2_tbody','<?$i?>');">[aggiungi un campo]</a></p>

</div>

Ed infine si visualizzano i due bottoni di modifica ed eliminazione

<div id=bottoni>

<input type=hidden id=righe_tot name=righe_tot value="<?($i-1)?>">

<input type=hidden id=righe_provvisorie value="<?($i-1)?>">

<input type=hidden id=riga_iniziale value="<?($i-1)?>">

<input type=hidden name=idanagrafica value="<?$idanagrafica?>">

<buttonclass=immagine type=button

onclick="azioneConferma('anagrafica','index.php?pagina=action&azione=elimina_anagrafica

','index.php?pagina=cerca','eliminare questa anagrafica?');">

<div>

<imgsrc="immagini/ics.png"><br>ELIMINA<br>ANAGRAFICA

</div>

</button>

Page 45: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

41

<buttonclass=immagine type=button

onclick="azioneConferma('anagrafica','index.php?pagina=action&azione=modifica_anagrafic

a','index.php?pagina=cerca','modificare questa anagrafica?');">

<div>

<imgsrc="immagini/tick.png"><br>MODIFICA<br>ANAGRAFICA

</div>

</button>

</div>

6.2.2 Config.php

Questo file contiene tutte le informazioni di configurazione; nel caso in cui si sposti l’applicazione su un altro server, basta modificare questo file.

Nella prima variabile viene indicata la cartella del webserver dove si trova il programma:

$percorso="/ricercatori";

In seguito vengono indicate le credenziali di accesso al database:

$dbhost = 'localhost'; //nome dell'host

$dbuser = 'ricercatori'; //nome utente db

$dbpass = 'ricercatori'; //password db

$dbname = 'ricercatori'; //nome del db

Nell’ultima parte del file si impostano i collegamenti con il foglio di stile e le funzioni javascript:

<head>

<link rel=stylesheet type=text/css href="inc/style.css">

<script type="text/javascript" src="inc/script.js"></script>

</head>

6.2.3 Action.php

L’applicativo raccoglie, in un file chiamato “action.php”, tutte le procedure che contengono le query per scrivere/leggere sul data base. La funzione interessata viene richiamata tramite la variabile di tipo GET “azione”.

//AZIONI RELATIVA ALL’ANAGRAFICA

if ($_GET['azione']=="modifica_anagrafica"){

modifica_anagrafica();

}

Page 46: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

42

elseif ($_GET['azione']=="inserisci_anagrafica"){

inserisci_anagrafica();

}

elseif ($_GET['azione']=="elimina_anagrafica"){

elimina_anagrafica();

}

//AZIONI RELATIVE ALLA PUBBLICAZIONE

elseif ($_GET['azione']=="modifica_pubblicazione"){

modifica_pubblicazione();

}

elseif ($_GET['azione']=="inserisci_pubblicazione")

...omissis...

else

{

<div>

echo$_GET['azione']." non e' un'azione valida...";

</div>

}

Nel resto del file vengono definite le funzioni chiamate in precedenza. Prendiamo come esempio la funzione “modifica anagrafica”:

functionmodifica_anagrafica()

{

//SALVO NELLE VARIABILI I DATI DA MODIFICARE

$idanagrafica=$_POST['idanagrafica'];

$nome=$_POST['nome'];

...omissis

$cartella=$_POST['cartella_anagrafica'];

if (!file_exists("documenti/".$cartella))mkdir("documenti/$cartella", 0777);

//FORMATTAZIONE DEI CAMPI

$nome=strtolower($nome);

$timestamp=date('Y-m-d H:m:s'); //2010-01-02 17:01:13

$codice_fiscale=strtoupper($codice_fiscale);

...omissis...

//PREPARAZIONE DELLA QUERY

$q="UPDATE `anagrafica` SET

Page 47: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

43

`nome` = '$nome',

`cognome` = '$cognome',

...omissis...

//CONNESSIONE CON IL DB E ESECUZIONE DELLA QUERY

$conn=dbconn();

dbquery($q,$conn);

<p>Modifica dell’anagrafica effettuata con successo</p>

//MODIFICA DEI DATI DI STRUTTURA ANNO

$righe_tot=$_POST['righe_tot'];

if (isset($_POST['righe_tot']))

{

for ($cont=0;$cont<=$righe_tot;$cont++){

$nuovo_aggiunto=$_POST["nuovo_$cont"];

$anno_aggiunto=$_POST["anno_$cont"];

$struttura_aggiunto=$_POST["struttura_$cont"];

...omissis...

//SE CI SONO DEI CAMPI NUOVI, LI AGGIUNGO

if (($nuovo_aggiunto=='nuovo')&&(($anno_aggiunto!='')||($ruolo_aggiunto!='') ||

($struttura_aggiunto!='') || ($note_aggiunto!='')))

{

//PREPARAZIONE QUERY

$q="insertinto anagrafica2 ( idanagrafica, anno, posizione, ruolo,

..., note ) values ( ";

$q.="'$idanagrafica' ";

$q.=",'$anno_aggiunto' ";

...omissis...

$q.=")";

//CONNESSIONE DB E ESPORTAZIONE QUERY

$conn=dbconn();

dbquery($q,$conn);

}

else

{

$idanagrafica2=$_POST["idanagrafica2_$cont"];

$anno=$_POST["anno_$cont"];

Page 48: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

44

if ( ($anno=='')&&($ruolo=='')&&($struttura=='')&&($hindex=='')&&($note=='') &&

($idanagrafica2!='') )

{

//SE I CAMPI SONO VUOTI, LI ELIMINO

$q="DELETE FROM `anagrafica2` WHERE `anagrafica2`.`idanagrafica2` = '$idanagrafica2'";

$conn=dbconn();

dbquery($q,$conn);

}

else

{

//SE SONO STATI MODIFICATI DEI CAMPI, LI MODIFICO

$q="UPDATE `anagrafica2` SET `anno`='$anno',`posizione`=...

...omissis...

$q.="`note` = '$note' WHERE `anagrafica2`.`idanagrafica2`='$idanagrafica2'";

$conn=dbconn();

dbquery($q,$conn);

}

dbclose();

}//modifica_anagrafica

6.2.4 Inc.php

Questa pagina racchiude tutte le funzioni ausiliarie come le procedure per il collegamento al db o le funzioni di conversioni dei dati. Vediamo alcune funzioni di esempio:

//CONNESSIONE AL DB

function dbconn()

{

global $dbhost,$dbuser,$dbpass,$dbname;

mysql_connect($dbhost, $dbuser, $dbpass)

or die('Errore nella connessione con MySql');

mysql_select_db($dbname)

or die('Errore nella connessione al database');

}

//CHIUSURA CONNESSIONE AL DB

function dbclose()

Page 49: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

45

{

global $dbhost, $dbuser, $dbpass;

mysql_close(mysql_connect($dbhost, $dbuser, $dbpass));

}

//ESECUZIONE QUERY

function dbquery($q,$conn)

{

$rs=mysql_query("$q") or die("Query non valida:" .mysql_error());

return $rs;

}

//CONVERSIONE DATA DA FORMATO MYSQL A FORMATO GG/MM/AAAA

function converti_data_da_mysql($date)

{

if ($date=="0000-00-00")

{

$newdate='';

}

else

{

list($anno, $mese, $giorno) = explode("-","$date");

$newdate="".$giorno."/".$mese."/".$anno."";

}

return $newdate;}

6.3 L’utilizzo di Javascript e css

Per rendere l’interfaccia user-friendly ed evitare di ricaricare le pagine php ad ogni modifica, vengono utilizzate delle funzioni javascript e dei fogli di stile css.

6.3.1 script.js

Il file script.js contiene tutte le funzioni javascript utilizzate dal programma. In questo capitolo viene analizzata nel dettaglio solamente la funzione che aggiunge dinamicamente, lato client,un autore ad una pubblicazione.

Lo scenario è il seguente: l’utente clicca in fondo alla pagina del dettaglio pubblicazione sul link “aggiungi autore Burlo”; si apre, quindi, una finestra popup nella quale può ricercare un dipendente da aggiungere come autore.

Page 50: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

Dalla lista dei risultati di ricerca clicca sul pulsante “+”

Qui di seguito si analizza nel dettaglio la funzione javascriptchiamata dopo aver cliccato sul pulsante “+”:

functionaggiungiRigaAutoreBurlo

{

//LEGGO I DATI DEL RICERCATORE DALLA PAGINA POPUP

varidanagrafica = document.ge

var nome = document.getElementById('nome'+e).value;

var cognome = document.getElementById('cognome'+e).value;

varnatoil = document.getElementById('natoil'+e).value;

if(! document.getElementById&&document.createElement)

46

Dalla lista dei risultati di ricerca l’utente sceglie il dipendente

Qui di seguito si analizza nel dettaglio la funzione javascriptchiamata dopo aver cliccato sul pulsante “+”:

Burlo (idTbody,num_riga)

//LEGGO I DATI DEL RICERCATORE DALLA PAGINA POPUP

varidanagrafica = document.getElementById('idanagrafica'+e).value;

var nome = document.getElementById('nome'+e).value;

var cognome = document.getElementById('cognome'+e).value;

varnatoil = document.getElementById('natoil'+e).value;

if(! document.getElementById&&document.createElement) { return; }

sceglie il dipendente da aggiungere e

Qui di seguito si analizza nel dettaglio la funzione javascript che viene

tElementById('idanagrafica'+e).value;

Page 51: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

47

//OPENER È LA PAGINA DEL DETTAGLIO PUBBLCAZIONE

vartbody = opener.document.getElementById(idTbody);

varriga_inizialeVal = opener.document.getElementById('riga_iniziale').value;

varriga_provvisoria = opener.document.getElementById('righe_provvisorie');

varriga_provvisoriaVal = opener.document.getElementById('righe_provvisorie').value;

var riga = Number(riga_inizialeVal)+Number(riga_provvisoriaVal);

//CREAO LA NUOVA RIGA DELLA TABELLA CON I CAMPI DI INPUT

vartr= opener.document.createElement("tr");

vartdNome = opener.document.createElement("td");

vartdCognome = opener.document.createElement("td");

...omissis...

varinputNuovo = opener.document.createElement("input");

varinputNome = opener.document.createElement("input");

...omissis...

inputNuovo.name="nuovo_"+riga;

inputNuovo.type="hidden";

inputNuovo.value="nuovo";

...omissis..

tdNome.appendChild(inputNome);

tdNome.appendChild(inputNuovo);

tdCognome.appendChild(inputCognome);

tdVuoto.appendChild(testoVuoto);

...omissis...

tr.id="row"+riga;

tr.appendChild(tdNome);

...omissis...

tbody.appendChild(tr);

var intestazione = opener.document.getElementById('intestazione');

if (intestazione.style.visibility=='hidden')

//L’INTESTAZIONE DELLA TABELLA È PRESENTE SOLO SE È PRESENTE UN AUTORE. SE AGGIUNGO

UNA RIGA DEVO RENDERE VISIBILE L’INTESTAZIONE

{intestazione.style.visibility='visible';}

else { intestazione.style.visibility='visible'; }

//LEGGO IL VALORE DELLA RIGA CORRENTE E NE AGGIUNGO UNA AL CONTATORE

varrighe_totali = opener.document.getElementById('righe_tot');

Page 52: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

varrighe_totaliVal = opener.

righe_totali.setAttribute('value',riga);

calcolo=Number(riga_provvisoriaVal)+Number(1);

riga_provvisoria.setAttribute('value',calcolo);

//RENDO INVISIBILE LA SCRITTA “

var vuoto = opener.document.getElementById('vuoto');

vuoto.setAttribute('style','display:none');

}

E nell’immagine successiva ilcome autore della pubbli

6.3.2 style.css

Senza bisogno di scomodare il linguaggio javascript, si possono creare dei tooltip anche utilizzando solamente i fogli di stile css.

Di seguito si evidenzia il codice per far apparire un tooltip che fa vedere l’intero titolo di una pubblicazione quando l’utente passa sopra con il mouse sul titolo ridotto ai primi 40 caratteri.

Nella pagina HTML:

<td>

<a class=tooltip>

<?$titolo_limitato

48

opener.document.getElementById('righe_tot').value;

righe_totali.setAttribute('value',riga);

calcolo=Number(riga_provvisoriaVal)+Number(1);

riga_provvisoria.setAttribute('value',calcolo);

A SCRITTA “Nessun ricercatore del Burlo selezionato

document.getElementById('vuoto');

vuoto.setAttribute('style','display:none');

nell’immagine successiva il risultato finale: il ricercatore è statdella pubblicazione.

Senza bisogno di scomodare il linguaggio javascript, si possono creare dei tooltip anche utilizzando solamente i fogli di stile css.

il codice per far apparire un tooltip che fa vedere l’intero una pubblicazione quando l’utente passa sopra con il mouse sul titolo

ridotto ai primi 40 caratteri.

<?$titolo_limitato

document.getElementById('righe_tot').value;

Nessun ricercatore del Burlo selezionato”

risultato finale: il ricercatore è stato aggiunto

Senza bisogno di scomodare il linguaggio javascript, si possono creare dei

il codice per far apparire un tooltip che fa vedere l’intero una pubblicazione quando l’utente passa sopra con il mouse sul titolo

Page 53: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

49

if (strlen($titolo_limitato)<strlen($titolo))

{

echo "<span class=tooltip>";

echo "$titolo";

echo "</span>";

}

?>

</a>

</td>

Nel file style.css contenente lo stile del tooltip:

a.tooltip

{

position:relative;

z-index:14;

text-decoration:none

}

a.tooltip:hover

{

z-index: 15;

background-color: #FFCCFF

}

a.tooltipspan.tooltip

{

display: none

}

//LO SPAN VERRÀ MOSTRATO SOLTANTO SULLO STATO :hover

a.tooltip:hoverspan.tooltip

{

display: block;

position: absolute;

bottom: 20px;

left: 30px;

min-width: 200px;

border: 1px solid #000000;

background-color: #FFFFFF;

Page 54: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

50

color:#000000;

padding:3px;

text-align: center;

cursor:default;

}

6.4 Esportazione in PDF

Il browser Firefox dà la possibilità di stampare su file PDF l’intera pagina HTML. Approfittando di questa funzione e dell’attributo “@media” del css, possiamo diversificare lo stile perla visualizzazione a schermo (@media screen) e la visualizzazione per la stampa (@media print).

@media print{

html

{

background-color: #FFFFFF;

}

div.menu_basso,div.menu_alto,.immagine,div#crea_file,div#crea_file

a,a.tooltipspan.tooltip

{

display:none;

}

}

Nell’immagine si può vedere il risultato dell’esportazione in PDF:

Page 55: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

51

6.5 Esportazione in Excel

Per esportare un risultato in Excel è stata usata la seguente procedura:

//INIZIALIZZO L’ARRAY DOVE SALVARE I RECORD

$esportazione=array();

$i=0; //inizializzo il contatore dei record

//ESPORTO OGNI RIGA DEL RISULTATO DELLA QUERY NELL’ARRAY

while ($riga = mysql_fetch_array($risultato, MYSQL_ASSOC))

{

$idanagrafica=$riga['idanagrafica'];

...omissis...

$esportazione[$i]=array("$idanagrafica","$nome","$cognome","$struttura",da_punto_

a_virgola($ifgrezzo),da_punto_a_virgola($ifnormalizzato),da_punto_a_virgola($ifcorretto

));

$i++;

}

//CREO IL FILE EXCEL PARTENDO DALL’ARRAY

$nome_file="statistiche.xls";

if (($file = fopen("tmp/$nome_file", "w")) !== FALSE)

{

$esportazione_header=array("id","NOME","COGNOME","STRUTTURA","IFgrezzo","IFnormal

izzato","IF corretto");

fputcsv($file, $esportazione_header,chr(9),'"'); for ($k=1;$k<=$i;$k++)

{

//NB: chr(9)=TABULAZIONE

fputcsv($file, $esportazione[$k],chr(9),'"');

}

}

fclose($file);

//CREO IL PULSANTE PER SALVARE IL FILE EXCEL

echo "<div id=crea_file><a href=tmp/$nome_file>Esporta</a></div>";

Page 56: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

52

7. CONCLUSIONI

7.1 Risultati ottenuti

I risultati ottenuti rispettano i vincoli di progetto discussi in fase di analisi. L’applicazione web creata permette la gestione completa dei dati di attività di ricerca dei ricercatori dell’IRCCS Burlo Garofolo. Il software è installato sul server web interno del Burlo ed è utilizzato da Aprile 2011.

Per quanto riguarda i dati che erano presenti nel file Excel condiviso utilizzato in precedenza, sono stati importati nel nuovo database, e, quindi, il file è stato definitivamente eliminato.

7.2 Lavoro svolto

DATABASE:

• Tabelle: 9

CODICE HTML/PHP:

• Pagine: 29 • Funzioni: 38

o inc.php: 20 o action.php: 18

CODICE JAVASCRIPT:

• Funzioni:31 • Righe:1150

CODICE CSS:

• Classi e ID: 35 • Righe: 380

Page 57: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

53

7.3 Sviluppi Futuri

In questo momento le persone che hanno accesso al programma sono cinque e fanno tutte parte della direzione scientifica. Per un prossimo futuro si può pensare di dare l’accesso al programma ad ogni singolo ricercatore in modalità “ospite”, dandogli la possibilità di leggere esclusivamente i dati che lo riguardano personalmente.

Un altro sviluppo alquanto interessante, che potrebbe venire implementato a breve,è l’importazione automatica dei nomi delle riviste e dei relativi IF grezzi all’interno del programma.

Page 58: Progettazione e sviluppo di un'applicazione web per la gestione di dati di attività di ricerca: caso dell'IRCCS Burlo Garofolo (Tesi)

54

8. BIBLIOGRAFIA

M. Fermeglia, materiale didattico del corso “Basi di dati”

F. Sbroiavacca, materiale didattico del corso “Sistemi Informativi”

C. Wenz, “JavaScript in tasca”, Pearson Education, 2007

Riferimenti Web:

http://database.html.it/guide/leggi/87/guida-mysql/

http://dev.mysql.com/doc/refman/5.0/en/index.html

http://php.html.it/guide/leggi/77/guida-php-e-mysql-pratica/

http://php.html.it/guide/leggi/99/guida-php-di-base/

http://php.html.it/guide/leggi/92/guida-php-su-linux/

http://php.html.it/guide/leggi/101/guida-php-pratica/

http://php.net/

http://javascript.html.it/guide/leggi/25/guida-javascript-di-base/