Progettazione di una base di dati in ambiente office per un reparto di neurologia

43
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

description

 

Transcript of Progettazione di una base di dati in ambiente office per un reparto di neurologia

Page 1: 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

Page 2: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 3: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 4: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 5: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 6: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 7: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 8: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 9: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 10: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 11: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 12: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 13: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 14: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 15: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 16: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 17: Progettazione di una base di dati in ambiente office per un reparto di neurologia

17

3.1.1 - Schema Entity-Relationship:

Page 18: Progettazione di una base di dati in ambiente office per un reparto di neurologia

18

3.1.2 - Dizionario delle ENTITA’

Entità Attributi Descrizione

Paziente

- ID_Paziente

- Nome

- Cognome

- Data_Nascita

- Indirizzo

- Città

- Codice_Fiscale

- Telefono

- Email

- 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,

Page 19: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 20: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 21: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 22: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 23: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 24: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 25: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 26: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 27: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 28: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 29: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Email

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

Page 30: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Email

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

Page 31: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 32: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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 è

Page 33: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 34: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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,

Page 35: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 36: Progettazione di una base di dati in ambiente office per un reparto di neurologia

36

Di seguito riportiamo la chiamata alla procedura dalla maschera in Access.

Page 37: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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:

Page 38: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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:

Page 39: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 40: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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

Page 41: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 42: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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.

Page 43: Progettazione di una base di dati in ambiente office per un reparto di neurologia

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