Progettazione di una base di dati in ambiente office per un reparto di neurologia
-
Upload
thediabloz -
Category
Education
-
view
866 -
download
0
description
Transcript of Progettazione di una base di dati in ambiente office per un reparto di neurologia
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
Prof. Maurizio Fermeglia
Laureando
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
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.
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.
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.
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
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
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
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
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
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
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
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
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
Paziente Soggetto che viene sottoposto ad una delle differenti tipologie di visita
- Visita
Visita Elemento principale della base di dati, contiene i
Ricovero, prima visita,
Paziente, destinazione
15
dettagli delle visite mediche e tutti i documenti ad essa relativi.
visita successiva.
dimissione, consulenza
specialistica, diagnosi
all’ingresso, anamnesi, esami
ematochimici, neuroimaging,
esami ultrasonografici,
tipo terapia, farmaco.
Destinazione dimissione
Elenco delle possibili destinazioni a seguito della dimissione nei casi di visite di ricovero.
- Visita
Consulenza Specialistica
Ogni visita puo’ includere una o piu’ consulenze specialistiche
- Visita
Diagnosi all’ingresso
Ogni visita deve includere una diagnosi all’ingresso che descriva la motivazione che ha portato alla visita stessa.
- Visita
Tipo terapia A seconda del tipo di visita possono essere associate tipologie differenti di terapia
- Visita, farmaco
Farmaco
Ogni terapia di ciascuna visita richiede la presenza di un elenco di farmaci prescritti con relative note.
Medicinale Categoria, tipo terapia, visita
Categoria Ogni farmaco appartiene ad una differente categoria
Genere Farmaco
Immagine Ogni visita puo’ richiedere l’inserimento di una o piu’ immagini con relative note.
Neuroimaging
Anamnesi Modulo da compilare contenente l’anamnesi del paziente
- Visita
Esame ematochimico
Modulo da compilare contenente l’esame ematochimico del paziente
Visita
Neuroimaging Modulo da compilare contenente dettagli relativi ad alcuni esami.
Visita, immagine
Esame eultrasonografico
Modulo da compilare contenente l’esame ultrasonografico del paziente
Visita
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.
17
3.1.1 - Schema Entity-Relationship:
18
3.1.2 - Dizionario delle ENTITA’
Entità Attributi Descrizione
Paziente
- ID_Paziente
- Nome
- Cognome
- Data_Nascita
- Indirizzo
- Città
- Codice_Fiscale
- Telefono
- Note
L’entità paziente elenca tutti i dati personali dello stesso.
Visita - Generalizzato in Ricovero, Prima visita e Visita successiva.
Ricovero
- ID_Visita
- Data
- Ora
- Data_Insorgenza_Disturbo
- Ora_Insorgenza_Disturbo
- NIH_Ingresso
- Trombolisi
- NIH_Dimissione
- Rankin_Dimissione
- Data_Dimissione
- Esame_Obiettivo
- ECG
Rappresenta la tipologia di visita ricovero e ne elenca tutte le voci necessarie al medico.
Prima visita
- ID_Visita
- Data
- Data_Diagnosi
- Esame_Obiettivo - ECG - NIH - RANKIN
Rappresenta la tipologia di visita Prima visita e ne elenca tutte le voci necessarie al medico.
Visita successiva
- ID_Visita
- Data
- Note_Anamnestiche
- Esame_Obiettivo - ECG - NIH - RANKIN
Rappresenta la tipologia di visita Visita successiva e ne elenca tutte le voci necessarie al medico.
Documento ricovero
-
Generalizzato in: Diagnosi All'ingresso, Esame obiettivo, Destinazione dimissione, Anamnesi, Esame ematochimico, Neuroimaging,
19
Esame ultrasonografico, Consulenza specialistica, Terapia.
Documento Prima visita
-
Generalizzato in: Diagnosi All'ingresso, Anamnesi ed EON, Ultimo esame ematochimico, Neuroimaging, Esame ultrasonografico, Consulenza specialistica, Terapia.
Documento Visita successiva
-
Generalizzato in: Esame obiettivo, Ultimo esame ematochimico, Neuroimaging, Esame ultrasonografico, Consulenza specialistica, Terapia.
Diagnosi All'ingresso
- ID_Diagnosi
- Nome
- Note
Indica il tipo di diagnosi effettuata dal medico al momento della visita del paziente.
Anamnesi
- ID_Visita
- Malattie_Genetiche
- Familiarità_ipertensione
- Diabete_Familiare
- Dislipidemia_Familiare
- Malattie_cerebrovascolari
- Malattie_cardiovascolari
- Fumo
- Ipertensione
- Diabete_Rischio
- Dislipidemia_Rischio
- Anticoagulanti
- Antiaggreganti
- Antiipertensivi
- Ipolipemizzanti
- Altri_Farmaci_Cardiologici
- Altri_Domicilio
- Cardiopatia
- Arteriosatia_Obliterante_AAII
- Nefropatia
- Altro_Concomitanti
- Patologica_Prossima
- Note
Uno dei documenti compilati dal medico durante la visita, elenca tutte le voci necessarie.
Anamnesi ed EON
- ID_Visita
- Malattie_Genetiche
- Familiarità_ipertensione
- Diabete_Familiare
- Dislipidemia_Familiare
- Malattie_cerebrovascolari
Uno dei documenti compilati dal medico durante la visita, elenca tutte le voci necessarie, differisce dall’entità Anamnesi per alcuni attributi.
20
- Malattie_cardiovascolari
- Fumo
- Ipertensione
- Diabete_Rischio
- Dislipidemia_Rischio
- Cardiopatia
- Arteriosatia_Obliterante_AAII
- Nefropatia
- Altro_Concomitanti
- Patologica_Prossima
- Note
Esame obiettivo - ID_Visita
- Esame_Obiettivo
Rappresenta il documento esame obiettivo redatto dal medico durante la visita.
Esame ematochimico
- ID_Visita
- Creatinina
- Colesterolo_Totale
- Colesterolo_HDL
- Trigliceridi
- HB
- MCV
- Uricemia
- Folati
- B12
- Set_Trombofilico_Completo - INR - Hb_Glicata
Uno dei documenti compilati dal medico durante la visita, elenca tutte le voci necessarie.
Neuroimaging
- ID_Visita
- Ischemia_TC_Capo
- Emorragia_TC_Capo
- Leucoaraiosi_TC_Capo
- Negativa_TC_Capo
- Altro_TC_Capo
- Ischemia_RM_Encefalo
- Emorragia_RM_Encefalo
- Leucoaraiosi_RM_Encefalo
- Negativa_RM_Encefalo
- Altro_RM_Encefalo
- Stenosi_Angio_TC
- Non_Stenosi_Angio_TC
- Altro_Angio_TC
- Stenosi_Angio_RM
- Non_Stenosi_Angio_RM
- Altro_Angio_RM
Uno dei documenti compilati dal medico durante la visita, elenca tutte le voci necessarie.
Esame ultrasonografico
- ID_Visita
- Stenosi70
- Stenosi5070
- Stenosi50
- Stenosi
Uno dei documenti compilati dal medico durante la visita, elenca tutte le voci necessarie.
21
- Shunt_Destro_Sinistro
- Valvulopatia
- Ipertrofia_DX
- Ipertrofia_SX
- Trombo
- Aneurisma_Setto
- PFO
Terapia - ID_Terapia
- Tipo
- Note
Generalizzata in Durante il ricovero, alla dimissione, in atto, prescritta
Consulenza specialistica
- ID_Consulenza
- Descrizione
- Dettaglio
Documento riguardante una visita specialistica, solitamente presentato dal paziente.
Destinazione dimissione
- ID_Destinazione_Dimissione
- Nome
- Note
Rappresenta la destinazione di dimissione a seguito di una visita di ricovero.
Immagine - ID_Immagine
- Filename
- Note
File contenente un’immagine relativa ad un esame effettuato.
Farmaco - ID_Farmaco
- Nome
- Dettagli
Farmaco che può essere prescritto dal medico.
Categoria - ID_Categoria
- Nome
- Note
Distingue i farmaci per tipologia.
3.1.3 - Dizionario delle RELAZIONI
Relazioni Attributi Descrizione
Accettazione - Collega in maniera univoca ogni visita al paziente che l’ha effettuata.
Compilazione - Rappresenta i documenti compilati in ogni visita
Inserimento - Specifica la visita a cui si riferisce la singola immagine
Prescrizione - Rappresenta i farmaci prescritti dal medico per le varie tipologie di terapia.
Appartenenza - Organizza i farmaci in categorie
Presentazione - Ad una visita il paziente puo’ consegnare dei referti relativi a consulenze specialistiche
22
Associazione - Ogni visita ha associata una terapia che ne elenca i medicinali prescritti.
Valutazione - Una valutazione del paziente alla visita permette la selezione della diagnosi all’ingresso
Assegnazione - A seguito di un ricovero al paziente viene assegnata una destinazione di dimissione.
3.1.4 - Analisi delle CARDINALITA’
Relazioni Entità collegate Cardinalità
Accettazione Paziente
Uno a Molti Visita
Compilazione Ricovero
Uno a Uno Documenti ricovero
Inserimento Immagine
Uno a Molti Neuroimaging
Prescrizione Farmaco
Molti a Molti Terapia
Appartenenza Farmaco
Uno a Molti Categoria
Presentazione Visita
Uno a Molti Consulenza specialistica
Associazione Visita
Molti a Molti Terapia
Valutazione Ricovero
Uno a Molti Diagnosi all’ingresso
Assegnazione Ricovero
Uno a Molti Destinazione dimissione
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
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 pazienti
Interattiva 20/giorno
Visualizzazione elenco visite per paziente
Interattiva 40/giorno
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.
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.
26
Generalizzazione dell’entità “Visita”
XVisita
Ricovero
Prima Visita
Visita
successiva
VisitaTipo_Visita
Tipo VisitaVisita Distinzione
Generalizzazione dell’entità “Terapia”
Terapia Terapia
Durante il
ricovero
Alla
dimissione
In atto
Prescritta
X
Visita assegnazioneTipo
TerapiaVisitaTipo_Terapia
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.
Esame ematochimico
Neuroimaging
Esame ultrasonografico
Anamnesi
CompilazioneVisita
Ricovero
Prima Visita
Visita
successiva
Compilazione
Compilazione
Compilazione
Tipo Visita
Distinzione
Esame ematochimico
Neuroimaging
Esame ultrasonografico
Anamnesi
Esame obiettivo
Ultimo esame ematochimico
Neuroimaging
Esame ultrasonografico
Anamnesi ed EON
Ultimo esame ematochimico
Neuroimaging
Esame ultrasonografico
Esame obiettivo
Documenti
Ricovero
Documenti
Prima Visita
Documenti
Visita
successiva
28
3.2.4.3 - Schema E-R ristrutturato
Come risultato della ristrutturazione otteniamo un nuovo schema E-R, nel
quale abbiamo incluso le cardinalità, mentre gli attributi sono omessi visto il
grande numero.
Esa
me
em
ato
ch
imic
o
Ne
uro
ima
gin
g
Esa
me
ultra
so
no
gra
fico
An
am
ne
si
Co
mp
ilazio
ne
Vis
ita
Pa
zie
nte
acce
tta
zio
ne
Pre
scrizio
ne
Fa
rma
co
Ca
teg
oria
Ap
pa
rte
ne
nza
Inse
rim
en
toIm
ma
gin
e
1-1
0-N
0-1
0-1
0-1
0-1
1-1
1-1
1-1
1-1
1-1
0-N
0-N
0-N
1-1
0-N
Asso
cia
zio
ne
Tip
o
Te
rap
ia
0-N
1-N
1-N
Pre
se
nta
zio
ne
Co
nsu
len
za
Sp
ecia
listica
0-N
1-1
Va
luta
zio
ne
Dia
gn
osi
all’ingre
sso
1-1
Asse
gn
azio
ne
De
stin
azio
ne
dim
issio
ne
1-N
0-1
0-N
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.
tblPaziente
PK ID_Paziente
Nome
Cognome
Data_Nascita
Indirizzo
Città
Codice_Fiscale
Telefono
Note
tblVisita
PK ID_Visita
Data
Ora
Data_Insorgenza_Disturbo
Ora_Insorgenza_Disturbo
NIH_Ingresso
Trombolisi
NIH_Dimissione
Rankin_Dimissione
Data_Dimissione
Data_Diagnosi
Note_Anamnestiche
Esame_Obiettivo
ECG
FK1 ID_Paziente
FK2 ID_Diagnosi
FK3 ID_Destinazione_Dimissione
FK4 ID_Tipo_Visita
tblDiagnosiIngresso
PK ID_Diagnosi
Nome
Note
tblAnamnesi
PK,FK1 ID_Visita
Malattie_Genetiche
Familiarità_ipertensione
Diabete_Familiare
Dislipidemia_Familiare
Malattie_cerebrovascolari
Malattie_cardiovascolari
Fumo
Ipertensione
Diabete_Rischio
Dislipidemia_Rischio
Anticoagulanti
Antiaggreganti
Antiipertensivi
Ipolipemizzanti
Altri_Farmaci_Cardiologici
Altri_Domicilio
Cardiopatia
Arteriosatia_Obliterante_AAII
Nefropatia
Altro_Concomitanti
Patologica_Prossima
Note
tblEsameEmatochimico
PK,FK1 ID_Visita
Hb_Glicata
Creatinina
Colesterolo_Totale
Colesterolo_HDL
Trigliceridi
HB
MCV
Uricemia
Folati
B12
Set_Trombofilico_Completo
INR
tblNeuroimaging
PK,FK1 ID_Visita
Ischemia_TC_Capo
Emorragia_TC_Capo
Leucoaraiosi_TC_Capo
Negativa_TC_Capo
Altro_TC_Capo
Ischemia_RM_Encefalo
Emorragia_RM_Encefalo
Leucoaraiosi_RM_Encefalo
Negativa_RM_Encefalo
Altro_RM_Encefalo
Stenosi_Angio_TC
Non_Stenosi_Angio_TC
Altro_Angio_TC
Stenosi_Angio_RM
Non_Stenosi_Angio_RM
Altro_Angio_RM
tblImmagine
PK ID_Immagine
Filename
Note
FK1 ID_Visita
tblEsameUltrasonografico
PK,FK1 ID_Visita
Stenosi70
Stenosi5070
Stenosi50
Stenosi
Shunt_Destro_Sinistro
Valvulopatia
Ipertrofia_DX
Ipertrofia_SX
Trombo
Aneurisma_Setto
PFO
tblConsulenza
PK ID_Consulenza
Descrizione
Dettaglio
FK1 ID_Visita
tblTerapia
PK ID_Terapia
Tipo
Note
tblFarmaco
PK ID_Farmaco
Nome
Dettagli
FK1 ID_Categoria
tblVisitaTerapiaFarmaco
PK,FK3 ID_Visita
PK,FK1 ID_Terapia
PK,FK2 ID_Farmaco
Note_Farmaco
tblCategoriaFarmaco
PK ID_Categoria
Nome
Note
tblDestinazioneDimissione
PK ID_Destinazione_Dimissione
Nome
Note
tblTipoVisita
PK ID_Tipo_Visita
Nome
Note
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.
tblPazienteID_Paziente
Nome
Cognome
Data_Nascita
Indirizzo
Città
Codice_Fiscale
Telefono
Note
tblVisitaID_Visita
Data
Ora
Data_Insorgenza_Disturbo
Ora_Insorgenza_Disturbo
NIH_Ingresso
Trombolisi
NIH_Dimissione
Rankin_Dimissione
Data_Dimissione
Data_Diagnosi
Note_Anamnestiche
Esame_Obiettivo
ECG
NIH
Rankin
ID_Paziente
ID_Diagnosi
ID_Destinazione_Dimissione
ID_Tipo_VisitatblDiabnosiIngresso
ID_Diagnosi
Nome
Note
tblConsulenzaID_Consulenza
Descrizione
Dettaglio
ID_Visita
tblEsameEmatochimicoID_Visita
Hb_Glicata
Creatinina
Colesterolo_Totale
Colesterolo_HDL
Trigliceridi
HB
MCV
Uricemia
Folati
B12
Set_Trombofilico_Completo
INR
tblAnamnesiID_Visita
Malattie_Genetiche
Familiarità_ipertensione
Diabete_Familiare
Dislipidemia_Familiare
Malattie_cerebrovascolari
Malattie_cardiovascolari
Fumo
Ipertensione
Diabete_Rischio
Dislipidemia_Rischio
Anticoagulanti
Antiaggreganti
Antiipertensiv i
Ipolipemizzanti
Altri_Farmaci_Cardiologici
Altri_Domicilio
Cardiopatia
Arteriosatia_Obliterante_AAII
Nefropatia
Altro_Concomitanti
Patologica_Prossima
Note
tblCategoriaFarmacoID_Categoria
Nome
Note
tblFarmacoID_Farmaco
Nome
Dettagli
ID_Categoria
tblTerapiaID_Terapia
Tipo
Note
tblVisitaTerapiaFarmacoID_Visita
ID_Terapia
ID_Farmaco
Note_Farmaco
tblImmagineID_Immagine
Filename
Note
ID_Visita
tblDestinazioneDimissioneID_Destinazione_Dimissione
Nome
Note
tblTipoVisitaID_Tipo_Visita
Nome
Note
tblNeuroimagingID_Visita
Ischemia_TC_Capo
Emorragia_TC_Capo
Leucoaraiosi_TC_Capo
Negativa_TC_Capo
Altro_TC_Capo
Ischemia_RM_Encefalo
Emorragia_RM_Encefalo
Leucoaraiosi_RM_Encefalo
Negativa_RM_Encefalo
Altro_RM_Encefalo
Stenosi_Angio_TC
Non_Stenosi_Angio_TC
Altro_Angio_TC
Stenosi_Angio_RM
Non_Stenosi_Angio_RM
Altro_Angio_RM
tblEsameUltraSonograficoID_Visita
Stenosi70
Stenosi5070
Stenosi50
Stenosi
Shunt_Destro_Sinistro
Valvulopatia
Ipertrofia_DX
Ipertrofia_SX
Trombo
Aneurisma_Setto
PFO
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.
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 è
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
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,
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
36
Di seguito riportiamo la chiamata alla procedura dalla maschera in Access.
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:
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:
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.
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
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.
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.
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