Studio e implementazione di uno strumento di configurazione e visualizzazione...
Progettazione di una base di dati in ambiente office per un reparto di neurologia
1. Università degli studi di Trieste
Facoltà di Ingegneria
Corso di Laurea Triennale in Ingegneria Informatica
Progettazione di una base di dati
in ambiente Office per la gestione
di un reparto di neurologia
Relatore Laureando
Prof. Maurizio Fermeglia Luca Sandonato
Anno Accademico 2009/2010
2. Sommario
1 - Introduzione ................................................................................................................................................. 3
2 - Analisi............................................................................................................................................................ 4
2.1 - Requisiti: intervista col committente. ................................................................................................ 4
2.2 - Riassunto dei punti salienti dell’intervista. ......................................................................................... 5
2.3 - Strutturazione dei dettagli .................................................................................................................. 5
2.4 - Glossario dei termini ......................................................................................................................... 14
3 - Progettazione della base di dati................................................................................................................. 16
3.1 - Progettazione concettuale: ............................................................................................................... 16
3.1.1 - Schema Entity-Relationship: ..................................................................................................... 17
3.1.2 - Dizionario delle ENTITA’............................................................................................................ 18
3.1.3 - Dizionario delle RELAZIONI ....................................................................................................... 21
3.1.4 - Analisi delle CARDINALITA’ ....................................................................................................... 22
3.2 - Progettazione logica: ........................................................................................................................ 23
3.2.1 - Tabella dei volumi ..................................................................................................................... 23
3.2.2 - Tabella delle operazioni ............................................................................................................ 24
3.2.3 - Tabella degli accessi: ................................................................................................................. 24
3.2.4 - Ristrutturazione: ....................................................................................................................... 25
3.2.4.1 - Eliminazione delle generalizzazioni ................................................................................... 25
3.2.4.2 - Raffinamento delle relazioni.............................................................................................. 27
3.2.4.3 - Schema E-R ristrutturato ................................................................................................... 28
3.2.5 - Schema logico ........................................................................................................................... 29
4 - Realizzazione della base di dati.................................................................................................................. 30
4.1 - Viste .................................................................................................................................................. 31
4.2 - Stored Procedure .............................................................................................................................. 32
5 - Realizzazione dell’interfaccia utente ......................................................................................................... 37
5.1 - Creazione delle maschere ................................................................................................................. 37
5.2 - Generazione del codice vba .............................................................................................................. 40
6 - Conclusioni.................................................................................................................................................. 42
7 - Bibliografia .................................................................................................................................................. 43
2
3. 1 - Introduzione
Questa tesi tratta la realizzazione di un’applicazione per la gestione delle
visite mediche ad uso personale del responsabile della “Stroke Unit” della
clinica neurologica di Cattinara.
L’obiettivo finale sarà la realizzazione di un software indipendente dalla
struttura informatica ospedaliera che verrà usato localmente dal solo medico
responsabile del reparto, o al massimo da qualche stretto collaboratore. Il
prototipo realizzato permetterà la gestione dei pazienti ricoverati presso la
clinica e organizzerà tutte le visite mediche sostenute.
Essendo il progetto su misura ed indipendente dai servizi informatici
preesistenti, si renderà necessario lo sviluppo di una base di dati in grado di
gestire tutti i dati richiesti. Successivamente si procederà alla realizzazione di
un’interfaccia utente.
Nelle seguenti pagine verrà illustrato in modo dettagliato i percorso seguito
per la realizzazione di quanto esposto, riassumibile nei seguenti punti chiave:
Analisi del progetto
Progettazione della base di dati
Realizzazione della base di dati
Creazione dell’interfaccia utente
Si concluderà con una quantificazione del lavoro svolto e una valutazione di
eventuali futuri miglioramenti o aggiunte al software.
3
4. 2 - Analisi
Nei seguenti paragrafi procederemo ad un’analisi dettagliata di tutti i
requisiti del committente cercando di organizzarli nel modo più efficace
possibile.
Data la presenza di numerosi termini medici da organizzare in elenchi si
procederà escludendoli dalla sintesi iniziale dei requisiti per includerli
direttamente nella strutturazione dei dettagli.
2.1 - Requisiti: intervista col committente.
Durante il primo incontro con il medico responsabile sono state elencate le
principali caratteristiche del programma da realizzate. Successivamente
verrà fornito un documento contenente i numerosi elenchi di termini medici
la cui presenza è necessaria alla realizzazione del progetto.
Dall’intervista risulta la necessità di realizzare un database per la gestione
delle visite mediche eseguite dal responsabile della “stroke unit” della clinica
neurologica di Cattinara di Trieste.
Il progetto non si appoggerà a nessuna base di dati o struttura informatica
esistente e sarà ad uso esclusivo del responsabile ed alcuni suoi stretti
collaboratori.
Il database in questione sarà gestito da un’interfaccia utente che permette in
maniera intuitiva di gestire una semplice anagrafica dei pazienti e le loro
visite mediche.
Le visite mediche potranno essere di tre tipologie differenti: ricovero, prima
visita e visita successive, ciascuna con dettagli ed esami che possono essere
comuni o specifici del tipo di visita considerato. Principalmente sono
composte da moduli da compilare, le cui specifiche verranno elencate in
modo dettagliato successivamente.
Nelle visite è necessario poter inserire una o più immagini relative ad una
tipologia specifica d’esame. Sarà possibile elencare dei farmaci prescritti che
dovranno essere organizzati per tipologia.
4
5. Non sono stati espressi requisiti riguardanti la sicurezza della base di dati o
dell’interfaccia.
Per quanto riguarda i software da utilizzare, si è richiesto l’utilizzo di MS
Access per l’interfaccia utente e MS Sql Server 2008 Express come DBMS.
2.2 - Riassunto dei punti salienti dell’intervista.
Si vuole realizzare un database per la gestione delle visite mediche
eseguite dal responsabile della “stroke unit” della clinica neurologica
di Cattinara di Trieste.
Il progetto e’ limitato all’uso personale del medico e di conseguenza
non e’ connesso in alcun modo a strutture o sistemi preesistenti
dell’azienda sanitaria.
Si richiede una gestione semplice dell’anagrafica dei pazienti.
Vengono gestite diverse tipologie di visita in base alla situazione in cui
si trova il paziente: ricovero, prima visita e visita successive.
Ogni visita richiede degli esami specifici.
E’ richiesto un elenco di farmaci suddivisi per tipologia.
Le modalità di visita richiedono la compilazione di numerosi moduli
elencati successivamente nel dettaglio.
E’ richiesta la possibilità di inserimento di una o più immagini per
visita.
Nessuna richiesta sulla gestione della sicurezza
E’ richiesto l’uso di Access per l’interfaccia utente.
E’ richiesto l’uso di MS Sql Server 2008 Express per la base di dati.
2.3 - Strutturazione dei dettagli
Una volta individuate le linee guida possiamo procedere ad una analisi
dettagliata degli elementi costituenti del progetto. A questo scopo sono stati
individuati dei termini di rilievo che racchiudono dei concetti base ben
distinti che risulteranno essenziali nella successiva fase di progettazione della
base di dati.
Come accennato nell’intervista col committente, in questa fase si userà un
elenco fornito dal responsabile della clinica, contenente tutti i dettagli tecnici
e le terminologie mediche relative ai vari moduli degli esami.
5
6. Strutturazione di: “Paziente”.
Dettagli da archiviare:
o Nome
o Cognome
o Data di nascita
o Indirizzo
o Città
o Codice fiscale
o Telefono
o E-mail
o Note
Strutturazione di: “Ricovero”.
Dettagli da archiviare:
o Data
o Ora
o Data insorgenza disturbo
o Ora insorgenza disturbo
o Diagnosi all’ingresso:
PACS
TACS
LACS
POCS
Emorragia
TIA
Altro
o NIH all’ingresso
o Trombolisi
o NIH alla dimissione
o Rankin alla dimissione
o Data dimissione
o Destinazione dimissione:
Domicilio
RSA
Altro presidio per acuti
Altro regime di degenza
Istituto di riabilitazione
o Anamnesi:
Familiare:
o Malattie genetiche
o Familiarità per ipertensione
6
7. o Diabete
o Dislipidemia
o Malattie cerebrovascolari
o Malattie cardiovascolari
Fattori di rischio:
o Fumo di sigaretta
o Ipertensione
o Diabete
o Dislipidemia.
Farmaci assunti a domicilio:
o Anticoagulanti
o Antiaggreganti
o Antiipertensivi
o Ipolipemizzanti
o Altri farmaci cardiologici.
o Altri
Patologie concomitanti:
o Cardiopatia
o Arteriopatia obliterante AAII
o Nefropatia
o Altro
Patologica prossima
o Esame obiettivo
o Esami ematochimici:
Hb glicata
Creatinina
Colesterolo totale
Colesterolo HDL
Trigliceridi
HB
MCV
Uricemia
Folati
B12
Set trombofilico completo
INR
o Neuroimaging:
Immagini
TC capo:
o Ischemia
o Emorragia
o Leucoaraiosi
7
8. o Negativa
o Altro
RM encefalo
o Ischemia
o Emorragia
o Leucoaraiosi
o Negativa
o Altro
ANGIO TC
o Stenosi
o Non stenosi
o Altro
ANGIO RM
o Stenosi
o Non stenosi
o Altro
o Esami ultrasonografici:
ECOCOLORDOPPLER TSA
o Stenosi>70%
o Stenosi 50-70%
o Stenosi <50%
ECOCOLORDOPPLER transcranico
o Stenosi
o Shunt destro-sinistro
ECOCARDIO TRANSTORACICO
o Valvulopatia
o Ipertrofia dx
o Ipertrofia sn
ECOCARDIO TRANSESOFAGEO
o Trombo
o Aneurisma del setto
o PFO
o Altri esami:
ECG
o Normale
o Anormale
Consulenze specialistiche
o Terapia durante il ricovero e alla dimissione:
Farmaci prescritti:
o In atto
o Nuovo farmaco prescritto
o Note
8
9. Strutturazione di: “Prima visita”.
Dettagli da archiviare:
o Data
o Diagnosi all’ingresso:
PACS
TACS
LACS
POCS
Emorragia
TIA
Altro
o Data diagnosi
o Anamnesi ed EON:
Familiare:
o malattie genetiche
o Familiarità per ipertensione
o Diabete
o Dislipidemia
o Malattie cerebrovascolari
o Malattie cardiovascolari
Fattori di rischio:
o Fumo di sigaretta
o Ipertensione
o Diabete
o Dislipidemia.
Patologie concomitanti:
o Cardiopatia
o Arteriopatia obliterante AAII
o Nefropatia
o Altro
Patologica prossima
Esame obiettivo
NIH
Rankin
o Ultimi esami ematochimici:
Hb glicata
Creatinina
Colesterolo totale
Colesterolo HDL
Trigliceridi
HB
9
10. MCV
Uricemia
Folati
B12
Set trombofilico completo
INR
o Neuroimaging:
Immagini
TC capo:
o Ischemia
o Emorragia
o Leucoaraiosi
o Negativa
o Altro
RM encefalo
o Ischemia
o Emorragia
o Leucoaraiosi
o Negativa
o Altro
ANGIO TC
o Stenosi
o Non stenosi
o Altro
ANGIO RM
o Stenosi
o Non stenosi
o Altro
o Esami ultrasonografici:
ECOCOLORDOPPLER TSA
o Stenosi>70%
o Stenosi 50-70%
o Stenosi <50%
ECOCOLORDOPPLER transcranico
o Stenosi
o Shunt destro-sinistro
ECOCARDIO TRANSTORACICO
o Valvulopatia
o Ipertrofia dx
o Ipertrofia sn
ECOCARDIO TRANSESOFAGEO
o Trombo
10
11. o Aneurisma del setto
o PFO
o Altri esami:
ECG
o Normale
o Anormale
Consulenze specialistiche
o Terapia in atto e terapia prescritta:
Farmaci prescritti: (vedi note)
o Terapia in atto
o Nuovo farmaco prescritto
o Note
Strutturazione di: “Visite successive”.
Dettagli da archiviare:
o Data
o Note anamnestiche
o Esame obiettivo
o NIH
o Rankin
o Ultimi esami ematochimici:
Hb glicata
Creatinina
Colesterolo totale
Colesterolo HDL
Trigliceridi
HB
MCV
Uricemia
Folati
B12
Set trombofilico completo
INR
o Neuroimaging:
Immagini
TC capo:
o Ischemia
o Emorragia
o Leucoaraiosi
o Negativa
11
12. o Altro
RM encefalo
o Ischemia
o Emorragia
o Leucoaraiosi
o Negativa
o Altro
ANGIO TC
o Stenosi
o Non stenosi
o Altro
ANGIO RM
o Stenosi
o Non stenosi
o Altro
o Esami ultrasonografici:
ECOCOLORDOPPLER TSA
o Stenosi>70%
o Stenosi 50-70%
o Stenosi <50%
ECOCOLORDOPPLER transcranico
o Stenosi
o Shunt destro-sinistro
ECOCARDIO TRANSTORACICO
o Valvulopatia
o Ipertrofia dx
o Ipertrofia sn
ECOCARDIO TRANSESOFAGEO
o Trombo
o Aneurisma del setto
o PFO
o Altri esami:
ECG
o Normale
o Anormale
Consulenze specialistiche
o Terapia in atto e terapia prescritta:
Farmaci prescritti: (vedi note)
o Terapia in atto
o Nuovo farmaco prescritto
o Note
12
13. Strutturazione di: “Farmaci”.
Elenco dei farmaci suddivisi per tipologia:
o Antiaggreganti
ASA 100
ASA 300
Clopidogrel
Dipiridamolo 200 + ASA 25
Altro
o Anticoagulanti
Eparina sodica
Eparina LMW
Warfarin
Acenocumarolo
Dabigatran
Altro
o Antiipertensivi
Calcioantagonisti
Betebloccanti
ACEinibitori
Spartani
Alfa-litici
Diuretici
Altro
o Antiedemigieni
Diuretici osmotici
Steroidi
o Antidiabetici
Insuline
Sulfaniluree
Biguanidi
Glitazoni
Altro
o Ipolipemizzanti
Statine
Fibrati
Altro
o Antiepilettici
Fenobarbitale
Acido valproico
Difenilidantoina
Carbamazepina
Oxcarbazepina
Levitiracetam
Topiramato
Lamotrigina
Zonisamide
Altro
13
14. o Antibiotici
Penicilline
Cefalosporine e altre beta lattamine
Tetracicline
Aminoglicosidi
Macrolidi
Clindamicina
Sulfamidici e trimetoprim
Metronidazolo
Cloramfenicolo
Fluorochinolonici
Altro
o Antidepressivi
Tipici
Atipici
o Antipsicotici
Tipici
Atipici
Nota: E’ stato fornito un elenco di farmaci “generico” visto che sarebbe
impossibile elencare ogni farmaco presente in commercio vista la rapidità
con cui cambiano nome e l’esistenza di moltissimi medicinali equivalenti.
Ogni farmaco necessita di un campo note.
2.4 - Glossario dei termini
Nella seguente tabella vengono elencati i termini più significativi ricavati
durante l’analisi. Ad essi viene associata una breve descrizione con eventuali
sinonimi e collegamenti tra termini.
Questa fase è essenziale e ci prepara alla progettazione della base di dati,
fornendoci un comodo quadro sinottico di tutti gli elementi del progetto.
Termine Descrizione Sinonimi Collegamenti
Soggetto che viene
Paziente sottoposto ad una delle - Visita
differenti tipologie di visita
Elemento principale della Ricovero, Paziente,
Visita
base di dati, contiene i prima visita, destinazione
14
15. dettagli delle visite mediche visita dimissione,
e tutti i documenti ad essa successiva. consulenza
relativi. specialistica,
diagnosi
all’ingresso,
anamnesi, esami
ematochimici,
neuroimaging,
esami
ultrasonografici,
tipo terapia,
farmaco.
Elenco delle possibili
Destinazione destinazioni a seguito della
- Visita
dimissione dimissione nei casi di visite di
ricovero.
Ogni visita puo’ includere una
Consulenza
o piu’ consulenze - Visita
Specialistica
specialistiche
Ogni visita deve includere
Diagnosi una diagnosi all’ingresso che
- Visita
all’ingresso descriva la motivazione che
ha portato alla visita stessa.
A seconda del tipo di visita
Tipo terapia possono essere associate - Visita, farmaco
tipologie differenti di terapia
Ogni terapia di ciascuna visita
richiede la presenza di un Categoria, tipo
Farmaco Medicinale
elenco di farmaci prescritti terapia, visita
con relative note.
Ogni farmaco appartiene ad
Categoria Genere Farmaco
una differente categoria
Ogni visita puo’ richiedere
Immagine l’inserimento di una o piu’ Neuroimaging
immagini con relative note.
Modulo da compilare
Anamnesi contenente l’anamnesi del - Visita
paziente
Modulo da compilare
Esame
contenente l’esame Visita
ematochimico
ematochimico del paziente
Modulo da compilare
Neuroimaging contenente dettagli relativi Visita, immagine
ad alcuni esami.
Modulo da compilare
Esame
contenente l’esame Visita
eultrasonografico
ultrasonografico del paziente
15
16. 3 - Progettazione della base di dati
In questa fase sfrutteremo i risultati dell’analisi, in particolare il glossario dei
termini per iniziare la progettazione della base di dati, iniziando a selezionare
entità e relazioni che andranno a formare lo schema Entity-Reletionship, per
poi passare alla valutazione delle cardinalità e la produzione finale dello
schema logico.
3.1 - Progettazione concettuale:
Dall’analisi delle entità e delle relazioni ricavate precedentemente possiamo
produrre una prima versione dello schema E-R (Entity-Reletionship).
Assieme allo schema E-R compiliamo un Dizionario delle Entità nel quale si
provvede a fornire una breve descrizione della stessa elencandone gli
attributi.
Un altro elemento fondamentale è il Dizionario delle Relazioni che in modo
simile al precedente ne descrive le relazioni, sottolineando gli attributi
interessati.
Infine si procede con l’analisi delle cardinalità, necessaria a capire a fondo le
relazioni tra le entità ed essenziale per la realizzazione dello schema logico.
16
18. 3.1.2 - Dizionario delle ENTITA’
Entità Attributi Descrizione
- ID_Paziente
- Nome
- Cognome
- Data_Nascita
- Indirizzo L’entità paziente elenca tutti i
Paziente
- Città dati personali dello stesso.
- Codice_Fiscale
- Telefono
- Email
- Note
Generalizzato in Ricovero, Prima
Visita -
visita e Visita successiva.
- ID_Visita
- Data
- Ora
- Data_Insorgenza_Disturbo
- Ora_Insorgenza_Disturbo
Rappresenta la tipologia di visita
- NIH_Ingresso
Ricovero ricovero e ne elenca tutte le voci
- Trombolisi
necessarie al medico.
- NIH_Dimissione
- Rankin_Dimissione
- Data_Dimissione
- Esame_Obiettivo
- ECG
- ID_Visita
- Data
- Data_Diagnosi Rappresenta la tipologia di visita
Prima visita - Esame_Obiettivo Prima visita e ne elenca tutte le
- ECG voci necessarie al medico.
- NIH
- RANKIN
- ID_Visita
- Data
Rappresenta la tipologia di visita
- Note_Anamnestiche Visita successiva e ne elenca
Visita successiva - Esame_Obiettivo tutte le voci necessarie al
- ECG medico.
- NIH
- RANKIN
Generalizzato in: Diagnosi
Documento All'ingresso, Esame obiettivo,
ricovero - Destinazione dimissione,
Anamnesi, Esame
ematochimico, Neuroimaging,
18
19. Esame ultrasonografico,
Consulenza specialistica,
Terapia.
Generalizzato in: Diagnosi
All'ingresso, Anamnesi ed EON,
Documento
Ultimo esame ematochimico,
Prima visita -
Neuroimaging, Esame
ultrasonografico, Consulenza
specialistica, Terapia.
Generalizzato in: Esame
obiettivo, Ultimo esame
Documento ematochimico, Neuroimaging,
-
Visita successiva Esame ultrasonografico,
Consulenza specialistica,
Terapia.
Indica il tipo di diagnosi
- ID_Diagnosi
Diagnosi effettuata dal medico al
- Nome
All'ingresso momento della visita del
- Note
paziente.
- ID_Visita
- Malattie_Genetiche
- Familiarità_ipertensione
- Diabete_Familiare
- Dislipidemia_Familiare
- Malattie_cerebrovascolari
- Malattie_cardiovascolari
- Fumo
- Ipertensione
- Diabete_Rischio
- Dislipidemia_Rischio Uno dei documenti compilati
Anamnesi - Anticoagulanti dal medico durante la visita,
- Antiaggreganti elenca tutte le voci necessarie.
- Antiipertensivi
- Ipolipemizzanti
- Altri_Farmaci_Cardiologici
- Altri_Domicilio
- Cardiopatia
- Arteriosatia_Obliterante_AAII
- Nefropatia
- Altro_Concomitanti
- Patologica_Prossima
- Note
- ID_Visita
Uno dei documenti compilati
- Malattie_Genetiche
dal medico durante la visita,
Anamnesi ed - Familiarità_ipertensione
elenca tutte le voci necessarie,
EON - Diabete_Familiare
differisce dall’entità Anamnesi
- Dislipidemia_Familiare
per alcuni attributi.
- Malattie_cerebrovascolari
19
20. - Malattie_cardiovascolari
- Fumo
- Ipertensione
- Diabete_Rischio
- Dislipidemia_Rischio
- Cardiopatia
- Arteriosatia_Obliterante_AAII
- Nefropatia
- Altro_Concomitanti
- Patologica_Prossima
- Note
Rappresenta il documento
- ID_Visita
Esame obiettivo esame obiettivo redatto dal
- Esame_Obiettivo
medico durante la visita.
- ID_Visita
- Creatinina
- Colesterolo_Totale
- Colesterolo_HDL
- Trigliceridi
- HB Uno dei documenti compilati
Esame
- MCV dal medico durante la visita,
ematochimico
- Uricemia elenca tutte le voci necessarie.
- Folati
- B12
- Set_Trombofilico_Completo
- INR
- Hb_Glicata
- ID_Visita
- Ischemia_TC_Capo
- Emorragia_TC_Capo
- Leucoaraiosi_TC_Capo
- Negativa_TC_Capo
- Altro_TC_Capo
- Ischemia_RM_Encefalo
- Emorragia_RM_Encefalo Uno dei documenti compilati
Neuroimaging - Leucoaraiosi_RM_Encefalo dal medico durante la visita,
- Negativa_RM_Encefalo elenca tutte le voci necessarie.
- Altro_RM_Encefalo
- Stenosi_Angio_TC
- Non_Stenosi_Angio_TC
- Altro_Angio_TC
- Stenosi_Angio_RM
- Non_Stenosi_Angio_RM
- Altro_Angio_RM
- ID_Visita
- Stenosi70 Uno dei documenti compilati
Esame
- Stenosi5070 dal medico durante la visita,
ultrasonografico
- Stenosi50 elenca tutte le voci necessarie.
- Stenosi
20
21. - Shunt_Destro_Sinistro
- Valvulopatia
- Ipertrofia_DX
- Ipertrofia_SX
- Trombo
- Aneurisma_Setto
- PFO
- ID_Terapia Generalizzata in Durante il
Terapia - Tipo ricovero, alla dimissione, in atto,
- Note prescritta
- ID_Consulenza Documento riguardante una
Consulenza
- Descrizione visita specialistica, solitamente
specialistica
- Dettaglio presentato dal paziente.
- ID_Destinazione_Dimissione Rappresenta la destinazione di
Destinazione
- Nome dimissione a seguito di una
dimissione
- Note visita di ricovero.
- ID_Immagine
File contenente un’immagine
Immagine - Filename
relativa ad un esame effettuato.
- Note
- ID_Farmaco
Farmaco che può essere
Farmaco - Nome
prescritto dal medico.
- Dettagli
- ID_Categoria
Categoria - Nome Distingue i farmaci per tipologia.
- Note
3.1.3 - Dizionario delle RELAZIONI
Relazioni Attributi Descrizione
Collega in maniera univoca ogni visita al
Accettazione -
paziente che l’ha effettuata.
Rappresenta i documenti compilati in
Compilazione -
ogni visita
Specifica la visita a cui si riferisce la
Inserimento -
singola immagine
Rappresenta i farmaci prescritti dal
Prescrizione -
medico per le varie tipologie di terapia.
Appartenenza - Organizza i farmaci in categorie
Ad una visita il paziente puo’ consegnare
Presentazione - dei referti relativi a consulenze
specialistiche
21
22. Ogni visita ha associata una terapia che
Associazione -
ne elenca i medicinali prescritti.
Una valutazione del paziente alla visita
Valutazione - permette la selezione della diagnosi
all’ingresso
A seguito di un ricovero al paziente
Assegnazione - viene assegnata una destinazione di
dimissione.
3.1.4 - Analisi delle CARDINALITA’
Relazioni Entità collegate Cardinalità
Paziente
Accettazione Uno a Molti
Visita
Ricovero
Compilazione Uno a Uno
Documenti ricovero
Immagine
Inserimento Uno a Molti
Neuroimaging
Farmaco
Prescrizione Molti a Molti
Terapia
Farmaco
Appartenenza Uno a Molti
Categoria
Visita
Presentazione Uno a Molti
Consulenza specialistica
Visita
Associazione Molti a Molti
Terapia
Ricovero
Valutazione Uno a Molti
Diagnosi all’ingresso
Ricovero
Assegnazione Uno a Molti
Destinazione dimissione
22
23. 3.2 - Progettazione logica:
La progettazione logica si occupa di tradurre lo schema concettuale in uno
schema logico in grado di rappresentare gli stessi dati in maniera efficiente e
corretta.
In questo processo andranno valutate le prestazioni determinando i tipi di
operazioni di cui la nostra base di dati si dovrà occupare, cercando di
quantificare la mole di dati che dovrà affrontare.
Queste considerazioni, assieme ad una attenta analisi dello schema E-R ci
permetterà di effettuare delle modifiche allo schema stesso per ottimizzarlo
il più possibile. Come risultato di queste modifiche avremo uno schema E-R
ristrutturato che rappresenta la base di partenza per la creazione dello
schema logico.
3.2.1 - Tabella dei volumi
Concetto Tipo Volume
Paziente E 1000
Visita E 3000
Ricovero E 1000
Prima visita E 1000
Visita successiva E 1000
Documento ricovero E 1000
Documento Prima visita E 1000
Documento Visita successiva E 1000
Diagnosi All'ingresso E 3000
Anamnesi E 2000
Anamnesi ed EON E 1000
Esame obiettivo E 3000
Esame ematochimico E 3000
Neuroimaging E 3000
Esame ultrasonografico E 3000
Terapia E 9000
Consulenza specialistica E 3000
Destinazione dimissione E 10
Immagine E 6000
23
24. Farmaco E 200
Categoria E 10
Concetto Tipo Volume
Accettazione R 3000
Compilazione R 1000
Inserimento R 6000
Prescrizione R 9000
Appartenenza R 200
Presentazione R 3000
Associazione R 9000
Valutazione R 1000
Assegnazione R 1000
3.2.2 - Tabella delle operazioni
Operazione Tipo Frequenza
Inserimento nuovo paziente Interattiva 10/settimana
Inserimento nuovo farmaco Interattiva 10/mese
Visualizzazione elenco dei
Interattiva 20/giorno
pazienti
Visualizzazione elenco visite
Interattiva 40/giorno
per paziente
Inserimento immagine Interattiva 5/giorno
Inserimento nuova visita Interattiva 15/giorno
Inserimento Anamnesi Interattiva 15/giorno
Inserimento terapia Interattiva 50/giorno
Visualizzazione elenco terapie Interattiva 20/giorno
3.2.3 - Tabella degli accessi:
Valutiamo le tre operazioni che hanno luogo con maggior frequenza:
Operazione in esame: Inserimento di una terapia in una visita.
24
25. Concetto Costrutto Accessi Tipo
Terapia Entità 1 Scrittura
Associazione Relazione 1 Scrittura
Visita successiva Entità 1 Lettura
Prescrizione Relazione 1 Scrittura
Farmaco Entità 5 Lettura
Appartenenza Relazione 5 Lettura
Categoria Entità 10 Lettura
Operazione in esame: visualizzazione elenco visite per paziente.
Concetto Costrutto Accessi Tipo
Paziente Entità 1 Lettura
Accettazione Relazione 3 Lettura
Visita Entità 3 Lettura
Operazione in esame: visualizzazione elenco pazienti.
Concetto Costrutto Accessi Tipo
Paziente Entità 1000 Lettura
3.2.4 - Ristrutturazione:
Procediamo ora con l’ottimizzazione dello schema E-R tenendo conto, dove
necessario, dei dati forniti dalle precedenti tabelle.
3.2.4.1 - Eliminazione delle generalizzazioni
Inizialmente si è pensato di sostituire le generalizzazioni con un semplice
attributo da aggiungere alle entità generalizzate. Questo però implicava una
futura mancanza di controllo completo sulla loro immissione, delegando
all’interfaccia tutti i controlli.
Si è quindi preferito aggiungere una relazione con un relativo attributo che
raccogliesse i casi possibili contemplati dalle generalizzazioni.
25
26. Generalizzazione dell’entità “Visita”
Ricovero
Visita Prima Visita
X Tipo_Visita Visita
Visita
successiva
Visita Distinzione Tipo Visita
Generalizzazione dell’entità “Terapia”
Durante il
In atto
ricovero
Terapia Terapia
Alla
Prescritta
dimissione
X
Tipo
Tipo_Terapia Visita Visita assegnazione
Terapia
26
27. 3.2.4.2 - Raffinamento delle relazioni
Dopo aver eliminato la generalizzazione dell'entità "visita" bisogna risolvere
il problema delle corrispettive entità generalizzate, cioè "Documenti
ricovero", “documenti prima visita" e "documenti visite successive". In
questo caso sarebbe possibile considerare un'unica entità "documenti" alla
quale aggiungere un attributo per differenziarne il tipo, per poi procedere
all'inclusione di tutti gli attributi delle generalizzazioni in un unico
"documento" che riassumerebbe tutte le voci dei vari esami.
Questa soluzione e' stata scartata, preferendo mantenere una distinzione
netta tra i vari documenti da compilare.
In alcuni casi, ad esempio per “esame obiettivo”, si è preferito includerlo
direttamente come attributo dell’entita’ “visita”, essendo unico per ogni
visita. Anche l’entita’ “diagnosi all’ingresso” sarebbe potuta diventare un
attributo dell’entità “visita” il cui valore sarebbe stato scelto da un elenco
valori nell’interfaccia grafica, ma si e’ preferito mantenere il controllo dei
dati sul database, evitando di eliminarla.
Anamnesi
Esame obiettivo
Documenti
Ricovero Compilazione
Esame ematochimico
Ricovero
Neuroimaging
Esame ultrasonografico
Anamnesi ed EON
Documenti Ultimo esame ematochimico
Prima Visita Compilazione
Prima Visita Neuroimaging
Esame ultrasonografico
Esame obiettivo
Documenti
Visita Ultimo esame ematochimico
Compilazione Visita
successiva Neuroimaging
successiva
Esame ultrasonografico
Anamnesi
Esame ematochimico
Visita Compilazione
Neuroimaging
Esame ultrasonografico
Distinzione
Tipo Visita
27
28. grande numero.
0-1 1-N Destinazione
Assegnazione
dimissione
0-N 1-1 Consulenza
Presentazione
Specialistica
1-1 0-N Diagnosi
Valutazione
all’ingresso
3.2.4.3 - Schema E-R ristrutturato
28
0-1 1-1
Anamnesi
0-1 1-1
0-N 1-1 Esame ematochimico
Paziente accettazione Visita Compilazione
0-1 1-1 0-N 1-1
Neuroimaging Inserimento Immagine
0-1 1-1
Esame ultrasonografico
1-N 1-N
0-N Tipo 0-N 0-N 1-1 0-N
Associazione Prescrizione Farmaco Appartenenza Categoria
Terapia
quale abbiamo incluso le cardinalità, mentre gli attributi sono omessi visto il
Come risultato della ristrutturazione otteniamo un nuovo schema E-R, nel
29. 3.2.5 - Schema logico
Dallo schema E-R ristrutturato risulta immediato il passaggio allo schema
logico, nel quale andiamo ad individuare per ogni tabelle la chiavi primarie
ed esterne che ci permetteranno una realizzazione rapida della base di dati.
tblTipoVisita tblDiagnosiIngresso tblEsameUltrasonografico tblAnamnesi
PK ID_Tipo_Visita PK ID_Diagnosi PK,FK1 ID_Visita PK,FK1 ID_Visita
Nome Nome Stenosi70 Malattie_Genetiche
Note Note Stenosi5070 Familiarità_ipertensione
tblConsulenza Stenosi50 Diabete_Familiare
Stenosi Dislipidemia_Familiare
PK ID_Consulenza Shunt_Destro_Sinistro Malattie_cerebrovascolari
Valvulopatia Malattie_cardiovascolari
Descrizione Ipertrofia_DX
Dettaglio Fumo
Ipertrofia_SX Ipertensione
FK1 ID_Visita tblVisita
Trombo Diabete_Rischio
PK ID_Visita Aneurisma_Setto Dislipidemia_Rischio
PFO Anticoagulanti
tblPaziente
Data Antiaggreganti
PK ID_Paziente Ora Antiipertensivi
Data_Insorgenza_Disturbo Ipolipemizzanti
Nome Ora_Insorgenza_Disturbo Altri_Farmaci_Cardiologici
Cognome NIH_Ingresso Altri_Domicilio
Data_Nascita Trombolisi tblEsameEmatochimico Cardiopatia
Indirizzo NIH_Dimissione Arteriosatia_Obliterante_AAII
Città Rankin_Dimissione PK,FK1 ID_Visita Nefropatia
Codice_Fiscale Data_Dimissione Altro_Concomitanti
Telefono Data_Diagnosi Hb_Glicata Patologica_Prossima
Email Note_Anamnestiche Creatinina Note
Note Esame_Obiettivo Colesterolo_Totale
ECG Colesterolo_HDL
FK1 ID_Paziente Trigliceridi
tblNeuroimaging FK2 ID_Diagnosi HB
FK3 ID_Destinazione_Dimissione MCV tblTerapia
PK,FK1 ID_Visita FK4 ID_Tipo_Visita Uricemia
Folati PK ID_Terapia
Ischemia_TC_Capo B12
Emorragia_TC_Capo Set_Trombofilico_Completo Tipo
tblImmagine
Leucoaraiosi_TC_Capo INR Note
Negativa_TC_Capo PK ID_Immagine
Altro_TC_Capo
Ischemia_RM_Encefalo Filename
Emorragia_RM_Encefalo Note tblVisitaTerapiaFarmaco
Leucoaraiosi_RM_Encefalo FK1 ID_Visita
Negativa_RM_Encefalo PK,FK3 ID_Visita
Altro_RM_Encefalo PK,FK1 ID_Terapia
tblDestinazioneDimissione tblFarmaco tblCategoriaFarmaco
Stenosi_Angio_TC PK,FK2 ID_Farmaco
Non_Stenosi_Angio_TC PK ID_Farmaco
PK ID_Destinazione_Dimissione PK ID_Categoria
Altro_Angio_TC Note_Farmaco
Stenosi_Angio_RM Nome
Nome Nome
Non_Stenosi_Angio_RM Dettagli
Note Note
Altro_Angio_RM FK1 ID_Categoria
29
30. 4 - Realizzazione della base di dati.
In questa fase si procede con la realizzazione della base di dati nel DBMS
indicato dai requisiti, cioè Microsoft SQL Server 2008 Express R2.
Partendo dallo schema logico realizzato con Microsoft Visio, conoscendo già
le chiavi primarie ed esterne, è stato sufficiente scegliere il tipo di dati per
ogni colonna e configurare le relazioni tra le tabelle.
tblConsulenza tblVisita tblEsameUltraSonografico
ID_Consulenza ID_Visita ID_Visita
Descrizione Data Stenosi70
Dettaglio Ora Stenosi5070
ID_Visita Data_Insorgenza_Disturbo Stenosi50
Ora_Insorgenza_Disturbo Stenosi
NIH_Ingresso Shunt_Destro_Sinistro
Trombolisi Valv ulopatia
tblPaziente
NIH_Dimissione Ipertrofia_DX
ID_Paziente
Rankin_Dimissione Ipertrofia_SX
Nome
Data_Dimissione Trombo
Cognome
Data_Diagnosi Aneurisma_Setto
Data_Nascita
Note_Anamnestiche PFO
Indirizzo
Esame_Obiettivo
Città
ECG
Codice_Fiscale
NIH
Telefono tblEsameEmatochimico
Rankin
Email ID_Visita
ID_Paziente
Note Hb_Glicata
ID_Diagnosi
Creatinina
ID_Destinazione_Dimissione
Colesterolo_Totale
ID_Tipo_Visita
tblDiabnosiIngresso Colesterolo_HDL
ID_Diagnosi Trigliceridi
Nome HB
Note MCV
Uricemia
tblVisitaTerapiaFarmaco
Folati
ID_Visita
B12
tblNeuroimaging ID_Terapia
ID_Visita Set_Trombofilico_Completo
ID_Farmaco
Ischemia_TC_Capo INR
Note_Farmaco
Emorragia_TC_Capo
Leucoaraiosi_TC_Capo tblAnamnesi
Negativ a_TC_Capo tblFarmaco ID_Visita
ID_Farmaco
Altro_TC_Capo Malattie_Genetiche
Ischemia_RM_Encefalo Nome
Familiarità_ipertensione
Emorragia_RM_Encefalo Dettagli
Diabete_Familiare
Leucoaraiosi_RM_Encefalo ID_Categoria
Dislipidemia_Familiare
Negativ a_RM_Encefalo Malattie_cerebrov ascolari
Altro_RM_Encefalo tblCategoriaFarmaco Malattie_cardiov ascolari
Stenosi_Angio_TC ID_Categoria Fumo
Non_Stenosi_Angio_TC Nome Ipertensione
Altro_Angio_TC Note Diabete_Rischio
Stenosi_Angio_RM Dislipidemia_Rischio
Non_Stenosi_Angio_RM Anticoagulanti
Altro_Angio_RM tblTerapia Antiaggreganti
ID_Terapia
Antiipertensiv i
Tipo
Ipolipemizzanti
tblImmagine Note
Altri_Farmaci_Cardiologici
ID_Immagine
Altri_Domicilio
Filename
Cardiopatia
Note
Arteriosatia_Obliterante_AAII
ID_Visita
Nefropatia
Altro_Concomitanti
tblDestinazioneDimissione tblTipoVisita Patologica_Prossima
ID_Destinazione_Dimissione ID_Tipo_Visita
Note
Nome Nome
Note Note
30
31. 4.1 - Viste
Dopo la creazione delle tabelle è necessario preparare numerose viste per
accedere ai dati delle tabelle. La creazione delle viste non è obbligatoria ma
comporta numerosi vantaggi tra i quali l’indipendenza logica dei dati,
riduzione della complessità delle query e una maggiore sicurezza dei dati.
Queste viste verranno ampiamente sfruttate dall’interfaccia utente per
organizzare dati provenienti da più tabelle evitando di accedere
direttamente alle tabelle del database.
Sono state create più di venti viste, ne riportiamo alcune come esempio:
View_VisitaPazienteElenco: questa vista, come suggerito dal nome,
raccoglie i dati di tre tabelle permettendoci di ottenere un elenco delle
visite sostenute da ogni paziente con relativo tipo di visita e data.
31
32. View_TerapiaVisitaFarmaco: questa vista si occupa di organizzare i
farmaci di ogni terapia relativi a ciascuna visita. Ogni farmaco ha i suoi
dettagli e la categoria d’appartenenza.
4.2 - Stored Procedure
Le stored procedure sono uno strumento per creare un livello di astrazione
dal modello fisico del database garantendo un miglioramento prestazionale
e della sicurezza. Inoltre permettono di intervenire sul database senza avere
la necessità di modificare le applicazioni che lo utilizzano.
In questo progetto non sono stati inseriti requisiti in merito a prestazioni o
sicurezza ma si è preferito utilizzare lo stesso in alcuni casi delle stored
procedure per evitare di delegare all’interfaccia delle operazioni critiche.
Le stored procedure sono richiamate dall’interfaccia utente in Access e
richiedono dei parametri in ingresso forniti dalle maschere. A questo scopo è
32
33. stato necessario intervenire sui controlli delle maschere utilizzando il
linguaggio VBA.
Sono state create dieci stored procedure, di seguito ne riportiamo alcuni
esempi significativi con il relativo codice chiamante.
spPazienteNuovo: questa procedura si occupa dell’inserimento di un
nuovo paziente nel database.
USE [Visite]
GO
/****** Object: StoredProcedure [dbo].[spPazienteNuovo] Script Date: 03/22/2011
15:42:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Luca Sandonato
-- Create date:
-- Description: Creazione nuovo paziente
-- =============================================
ALTER PROCEDURE [dbo].[spPazienteNuovo]
-- Add the parameters for the stored procedure here
--@ID_Paziente int,
@Nome nvarchar(30),
@Cognome nvarchar(30),
@Data_Nascita date= NULL,
@Indirizzo nvarchar(30)= NULL,
@Città nvarchar(50)= NULL,
@Codice_Fiscale nchar(16)= NULL,
-- uso nchar per risolvere il problema del campo lasciato vuoto nel form
-- che invierebbe un "" dando errore di data-type
--@Telefono numeric(18,0)= NULL,
@Telefono nvarchar(18)= NULL,
@Email nvarchar(50)= NULL,
@Note nvarchar(250)= NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF @Nome='' OR @Cognome='' RAISERROR 50000 'I campi Nome e Cognome sono obbligatori'
ELSE
BEGIN
IF @Data_Nascita = '1900-01-01' OR @Data_Nascita='' SET @Data_Nascita = NULL
IF @Indirizzo = '' SET @Indirizzo = NULL
IF @Città = '' SET @Città = NULL
IF @Codice_Fiscale = '' SET @Codice_Fiscale = NULL
IF @Telefono = '' SET @Telefono = NULL
IF @Email = '' SET @Email = NULL
IF @Note = '' SET @Note = NULL
INSERT INTO dbo.View_PazienteDettaglio(Nome, Cognome, Data_Nascita,
Indirizzo, Città, Codice_Fiscale, Telefono, Email, Note)
VALUES (@Nome, @Cognome, @Data_Nascita, @Indirizzo, @Città, @Codice_Fiscale,
CAST (@Telefono AS numeric(18,0)), @Email, @Note)
END
END
33
34. In questo caso la procedura è stata chiamata dall’interfaccia adp in Access
alla pressione del pulsante Salva, nella maschera di aggiunta nuovo paziente.
Di seguito un estratto del codice in VBA:
spVisitaTerapiaFarmaco: questa procedura si occupa di associare ad
una visita la relativa terapia con i farmaci prescritti.
USE [Visite]
GO
/****** Object: StoredProcedure [dbo].[spVisitaTerapiaFarmaco] Script Date: 03/22/2011
15:54:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Luca Sandonato
-- Create date: 30/7/2010
-- Description: Associa alla visita la terapia con i relativi farmaci
-- =============================================
ALTER PROCEDURE [dbo].[spVisitaTerapiaFarmaco]
-- Add the parameters for the stored procedure here
@ID_Visita int = 0,
@ID_Tipo_Visita int = 0,
@ID_Terapia_InAtto int = 0,
@ID_Terapia_Prescritta int = 0,
34
35. @ID_Farmaco int = 0,
@Note_Farmaco nvarchar (250)= NULL,
@Temp1 int = 0,
@Temp2 int = 0,
@Temp3 int = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--Controllo preliminare su valori nulli, assenti o ''
IF @ID_Farmaco = '' OR @ID_Farmaco= NULL RAISERROR 50000 'Selezionare Farmaco'
IF @ID_Terapia_InAtto = 0 AND @ID_Terapia_Prescritta = 0 RAISERROR 50000
'Selezionare il tipo di terapia!'
IF @ID_Visita = NULL OR @ID_Farmaco = NULL RAISERROR 50000 'Errore Aggiunta farmaco'
IF @ID_Terapia_InAtto = NULL AND @ID_Terapia_Prescritta = NULL RAISERROR 50000
'Errore Selezione tipo di terapia!'
ELSE
--Controllo se il farmaco e' gia stato scelto per questa visita
SELECT @temp1=ID_Visita, @temp2=ID_Farmaco, @Temp3=ID_Terapia
FROM dbo.View_TerapiaVisitaFarmaco
WHERE (ID_Farmaco = @ID_Farmaco) AND (ID_Visita = @ID_Visita)
IF @Temp3 <> 0 RAISERROR 50000 'Farmaco gia presente in questa visita!'
ELSE
IF @ID_Tipo_Visita <>1
BEGIN
IF @ID_Terapia_InAtto = -1 AND @ID_Terapia_Prescritta = -1
INSERT INTO tblVisitaTerapiaFarmaco (ID_Visita, ID_Terapia, ID_Farmaco,
Note_Farmaco, Terapia1, Terapia2)
VALUES (@ID_Visita, 6, @ID_Farmaco, @Note_Farmaco, @ID_Terapia_InAtto,
@ID_Terapia_Prescritta)
IF @ID_Terapia_InAtto = -1 AND @ID_Terapia_Prescritta = 0
INSERT INTO tblVisitaTerapiaFarmaco (ID_Visita, ID_Terapia, ID_Farmaco,
Note_Farmaco, Terapia1, Terapia2)
VALUES (@ID_Visita, 4, @ID_Farmaco, @Note_Farmaco, @ID_Terapia_InAtto,
@ID_Terapia_Prescritta)
IF @ID_Terapia_Prescritta = -1 AND @ID_Terapia_InAtto = 0
INSERT INTO tblVisitaTerapiaFarmaco (ID_Visita, ID_Terapia, ID_Farmaco,
Note_Farmaco, Terapia1, Terapia2)
VALUES (@ID_Visita, 5, @ID_Farmaco, @Note_Farmaco, @ID_Terapia_InAtto,
@ID_Terapia_Prescritta)
END
ELSE
--Estensione al caso Visita di Ricovero
BEGIN
IF @ID_Terapia_InAtto = -1 AND @ID_Terapia_Prescritta = -1
INSERT INTO tblVisitaTerapiaFarmaco (ID_Visita, ID_Terapia, ID_Farmaco,
Note_Farmaco, Terapia1, Terapia2)
VALUES (@ID_Visita, 3, @ID_Farmaco, @Note_Farmaco, @ID_Terapia_InAtto,
@ID_Terapia_Prescritta)
IF @ID_Terapia_InAtto = -1 AND @ID_Terapia_Prescritta = 0
INSERT INTO tblVisitaTerapiaFarmaco (ID_Visita, ID_Terapia, ID_Farmaco,
Note_Farmaco, Terapia1, Terapia2)
VALUES (@ID_Visita, 1, @ID_Farmaco, @Note_Farmaco, @ID_Terapia_InAtto,
@ID_Terapia_Prescritta)
IF @ID_Terapia_Prescritta = -1 AND @ID_Terapia_InAtto = 0
INSERT INTO tblVisitaTerapiaFarmaco (ID_Visita, ID_Terapia, ID_Farmaco,
Note_Farmaco, Terapia1, Terapia2)
VALUES (@ID_Visita, 2, @ID_Farmaco, @Note_Farmaco, @ID_Terapia_InAtto,
@ID_Terapia_Prescritta)
END
END
35
37. 5 - Realizzazione dell’interfaccia utente
L’interfaccia utente è stata realizzata con Microsoft Access 2007 mediante la
creazione di un progetto ADP (Access Data Project) connesso al database su
SQL Server 2008 Express.
Questa fase del progetto è stata svolta in parte assieme alla precedente, in
particolare le viste e le stored procedure sono state create in concomitanza
della creazione delle maschere, in base ai dati necessari e alle operazioni da
svolgere.
5.1 - Creazione delle maschere
Gli elementi costituenti l’interfaccia utente sono le maschere (o form), le
quali sono state realizzate cercando di ridurre al minimo l’utilizzo di codice
VBA, ma preferendolo comunque all’uso di macro realizzate con strumenti di
generazione automatica.
All’apertura del progetto adp è stata configurata la visualizzazione
automatica di una maschera contenente i collegamenti alle operazioni
principali:
37
38. Da questo menù principale è possibile accedere alle funzionalità principali
del software:
Elenco Pazienti: questa voce ci permette di accedere alla sezione
principale nella quale è possibile visualizzare un elenco di tutti i
pazienti, per i quali sono disponibili alcune opzioni: la gestione
dell’anagrafica, la visualizzazione e gestione delle visite già effettuate e
la creazione di nuove.
Selezionando la voce Elenca visite si visualizza un elenco semplice delle visite
sostenute dal paziente, dal quale è possibile accedere al dettaglio delle
stesse:
38
39. In questa maschera è presente un sistema di gestione a schede che permette
di accedere ai vari moduli da compilare durante la visita.
Tramite la voce Anagrafica si possono gestire le generalità del paziente,
mentre con Nuova visita si visualizza la maschera con i dettagli per le nuove
visite mediche.
Nuovo Paziente: in questa maschera è possibile gestire un’anagrafica
semplice del paziente.
39
40. Gestione farmaci: In questa maschera si possono gestire i farmaci e le
relative categorie di appartenenza.
5.2 - Generazione del codice vba
Come annunciato in precedenza si è cercato di limitare al massimo la
creazione di codice vba per la gestione delle maschere in modo da far gestire
il maggior numero di funzionalità possibile direttamente dal dbms. In questo
modo si potranno evitare future modifiche all’interfaccia nel caso vi fosse la
necessità di intervenire sul database.
Oltre al codice utilizzato per la chiamata delle stored procedure ed il
passaggio dei relativi parametri già menzionato, non è stato possibile evitare
di utilizzare in molti punti alcune righe di codice per operazioni basilari come
il passaggio di parametri durante l’apertura di una nuova maschera,
l’aggiornamento di sottomaschere, operazioni di chiusura e apertura delle
maschere e visualizzazione di messaggi di conferma in caso di eliminazione di
record.
L’unico elemento che ha richiesto un impegno maggiore è stato la gestione
delle immagini, alla quale è richiesta la verifica della presenza di una cartella
immagini sul disco, la sua eventuale creazione, la copia dei file immagine su
disco e la relativa aggiunta di record al database, l’eliminazione delle singole
40
41. immagini e la rimozione di tutte le immagini relative a una visita, in caso di
rimozione della stessa.
Riportiamo di seguito un estratto del codice.
41
42. 6 - Conclusioni
Lo sviluppo della base di dati e dell’interfaccia utente sono stati svolti con
successo, quindi l’obiettivo della presente tesi può considerarsi raggiunto.
Il lavoro svolto può essere approssimativamente quantificato come segue:
Creazione del database:
16 tabelle
24 viste
10 stored procedure con approssimativamente 150 righe di codice T-
SQL
Creazione dell’interfaccia utente:
28 maschere in Access
Circa 100 righe di codice Vba per la gestione delle maschere.
Attualmente il lavoro è in una fase di valutazione da parte del committente il
quale ha già provveduto a visionare il lavoro più volte richiedendo correzioni
o modifiche.
Un eventuale sviluppo futuro potrebbe riguardare un miglioramento della
veste grafica, l’aggiunta di funzionalità o la modifica di quelle esistenti.
La fase di test permetterà di valutarne a fondo le caratteristiche ed
indirizzarne le future modifiche prima della consegna finale del progetto.
42
43. 7 - Bibliografia
M. Fermeglia, materiale didattico del corso “Basi di dati”
M. Fermeglia, materiale didattico del corso “Complementi di basi di dati”
Atzeni, Ceri, Paraboschi, Torlone, “Basi di dati: modelli e linguaggi di
interrogazione”, Seconda edizione, Mc Graw-Hill
Microsoft Developer Network, http://msdn.microsoft.com
MasterDrive.it, http://forum.masterdrive.it
43