Vysoká škola báňská – technická univerzita Ostrava
Databázové a informační systémy Blood – Data – Bank Informační systém krevních bank (semestrální projekt)
Václav Bašniar, BAS064
1 Zadání ●
Proč?
Nemocniční zařízení potřebují evidenci uskladněné krve, evidenci dárců schopných darovat krev, evidenci pacientů potřebujících transfúzi atp. S IS mohou potřebné údaje získat v relativně krátkém čase. ●
K čemu?
Lékaři potřebují mít přehled nad aplikací krve. Určují komu a kdy bude krev aplikována. Lékařští pracovníci potřebují evidenci krevních konzerv, aby v případě akutní transfúze mohli rychle získat informace o objemech dostupné krve a případně kontaktovat možné dárce. Je potřeba mít informace o tom jestli je krve dostatek, zda-li není třeba v dohledné době získat větší počet dárců. Lékařští pracovníci musí určit, zda-li krev v krevní konzervě nenese zárodky nemocí, či už neuběhla doba její životnosti, aby mohla být krevní konzerva označena k likvidaci. Lékařští pracovníci musí určit jestli je dárce schopen darovat krev pomocí zaevidovaných údajů o dárci. Je potřeba znát kolik je u transfúzních stanic evidováno dárců. U každého z dárců i pacientů je třeba znát jakou má krevní skupinu a RhD faktor. Neziskové organizace chtějí znát statistické informace, aby mohly organizovat informační kampaně či odměňovat aktivní dárce. ●
Kdo? Lékařští pracovníci – zápis, úprava, mazání a získávání dat Lékaři – zápis nových pacientů, mazání starých, získávání informací Neziskové organizace – statistické údaje
●
Vstupy U transfúzní stanice evidujeme její jednoznačné číslo, adresu, datum registrace, telefon a e-
mail. U dárce evidujeme jeho jednoznačné číslo dárce, jeho jméno, příjmení, pohlaví, adresu, rodné číslo, číslo pojišťovny, u které je registrován, jednoznačné číslo stanice, u které je registrován, datum registrace dárce u této stanice, jeho krevní skupinu, RhD faktor, zda-li byla u dárce zjištěna nemoc přenositelná krví a zda-li je dárce aktivní. U pacienta evidujeme jeho jednoznačné číslo, jméno, příjmení, pohlaví, adresu, rodné číslo, číslo pojišťovny, u které je registrován, krevní skupinu a RhD faktor. U lékařského pracovníka evidujeme jeho jednoznačné číslo, jméno, příjmení, jednoznačné číslo stanice, u které pracuje a zda-li je ještě u této stanice zaměstnán. U transfúze evidujeme jednoznačné číslo transfúze, jednoznačné číslo krevní konzervy, která byla aplikována, jednoznačné číslo pacienta, na kterého byla aplikována, jednoznačné číslo lékařského pracovníka, který provedl transfúzi, datum a čas transfúze a důvod provedení transfúze. U krevní konzervy evidujeme její jednoznačné číslo, jednoznačné číslo dárce, jednoznačné číslo lékařského pracovníka, který provedl odběr, datum a čas odběru, objem odebrané krve v konzervě, jednotku objemu odebrané krve v konzervě, zda-li se jedná o vzorek a jestli je určena k likvidaci, případně kdy k likvidaci došlo. U každého dárce uvádíme, u které stanice je registrován. U stanice může být registrován libovolný počet dárců, i žádný, ale dárce musí být registrován právě u jedné stanice. U každého lékařského pracovníka uvádíme stanici, kde pracuje. U stanice může pracovat libovolný počet lékařských pracovníků, i žádný, ale lékařský pracovník musí pracovat právě u jedné
stanice. U každé transfúze uvádíme která krevní konzerva byla použita. Při každé transfúzi musí být použita alespoň jedna krevní konzerva a každá konzerva může být použita právě k jedné transfúzi. U každé transfúze dále uvádíme který lékařský pracovník transfúzi provedl. Transfúzi musí provést právě jeden lékařský pracovník, ale lékařský pracovník může provést více transfúzi, i žádnou. U každé transfúze dále uvádíme který pacient transfúzi přijal. Pacient může přijmout libovolný počet transfúzí, i žádnou, ale transfúze musí být přijata právě jedním pacientem. U každé krevní konzervy uvádíme dárce krve. Dárce může darovat libovolný počet krevních konzerv, i žádnou, ale každá krevní konzerva musí být darována pouze jedním dárcem. U každé krevní konzervy dále uvádíme lékařského pracovníka, který krev odebral. Lékařský pracovník může naplnit libovolný počet krevních konzerv, i žádnou, ale krevní konzerva musí být naplněna právě jedním lékařským pracovníkem. ●
Výstupy
Měsíční inventura krve (stáří krevních konzerv (v týdnech čí měsících), krevní skupina, RhD faktor, objem) Etiketa krevní konzervy (id konzervy, krevní skupina, RhD faktor, datum a čas odběru, objem, id dárce, id stanice, id pracovníka) Doklad o provedené transfúzi (datum a čas provedené transfúze, id konzervy, informace o pacientovi) Statistické údaje o dárci (objem darované krve) ●
Funkce
událost
reakce
aktér
nový dárce
zapíše nového dárce
lékařský pracovník
nová krevní konzerva
zapíše novou krevní konzervu
lékařský pracovník
aktivace/deaktivace dárce
nastaví jeAktivni u Darce
lékařský pracovník
zrušení dárce
odstraní dárce
lékařský pracovník
likvidace krevní konzervy
nastaví likvidace u Krevni_konzerva
lékařský pracovník
získej pacienta
získá informace o zadaném pacientovi z IS evidujícího pacienty
lékařský pracovník, lékař
konec dne
nastaví likvidace = true u všech konzerv s IS prošlou dobou použitelnosti, odstraní všechny konzervy zlikvidované déle než před měsícem, získá informace o nových lék. pracovnících z IS evidujícího lék. pracovníky
●
Okolí IS evidence pacientů
BLOOD DATA BANK
Dárce
Lékařský pracovník
Lékař
Úředník
IS evidence lék. pracovníků
Kresba 1: Kontextový diagram
●
Nefunkční požadavky
Tento IS by měl být rychlý, nenáročný a uživatelsky přívětivý, dále by měl umět zpracovat přístup pro více uživatelů najednou s možností čtení i zápisu. Měl by být používán pouze v rámci interní sítě nemocničních zařízení, bez přístupu neoprávněných osob. Informační systém bude implementován v jazyce JAVA pomocí JDBC nad SŘBD MySql. Systém by měl umět spolupracovat s již existujícími systémy evidujícími pacienty a lékařské pracovníky, ze kterých bude informační systém získávat informace o pacientech a lékařských pracovnících.
2 Datová analýza ●
ER diagram
Kresba 2: ER diagram
●
Lineární zápis typů entit
Primární klíč, cizí klíč Transfuzni_stanice (id_stanice, nazev_stanice, ulice_cp_stanice, mesto_stanice, stat_stanice, psc_stanice, datum_registrace_stanice, telefon_stanice, e-mail_stanice) Darce (id_darce, jmeno_darce, prijmeni_darce, pohlavi_darce, ulice_cp_darce, mesto_darce, stat_darce, psc_darce, rodne_cislo_darce, cislo_pojistovny_darce, telefon_darce, krevni_skupina_darce, rhd_faktor_darce, nemoc, id_stanice, datum_registrace_darce, jeAktivni) Pacient (id_pacienta, jmeno_pacienta, prijmeni_pacienta, pohlavi_pacienta, ulice_cp_pacienta, mesto_pacienta, stat_pacienta, psc_pacienta, rodne_cislo_pacienta, cislo_pojistovny_pacienta, telefon_pacienta, krevni_skupina_pacienta, rhd_faktor_pacienta) Lekarsky_pracovník (id_pracovnika, id_stanice, jmeno_pracovnika, prijmeni_pracovnika, jeZamestnan) Krevni_konzerva (id_konzervy, id_darce, id_pracovnika, id_transfuze, datum_odberu, cas_odberu, objem, vzorek, likvidace, datum_likvidace) Transfuze (id_transfuze, id_pacienta, id_pracovnika, datum_transfuze, cas_transfuze, duvod_transfuze)
●
Lineární zápis typů vztahů
JE_REGISTROVAN (Darce, Transfuzni_stanice)
N:1
POSKYTUJE (Darce, Krevni_konzerva)
1:N
PRACUJE (Lekarsky_pracovnik, Transfuzni_stanice)
N:1
PROVADI (Lekarsky_pracovnik, Transfuze)
1:N
JE_POUZITA (Krevni_konzerva, Transfuze)
N:1
JE_POSKYTNUTA (Transfuze, Pacient)
N:1
●
Datový slovník
Transfuzni_stanice name
type
size key
null
index IO
id_stanice
int
10
yes
no
yes
nazev_stanice
char
20
no
yes
no
ulice_cp_stanice
char
20
no
no
no
mesto_stanice
char
20
no
no
no
stat_stanice
char
3
no
no
no
psc_stanice
int
5
no
no
no
datum_registrace_stanice date
10
no
no
yes
DD.MM.YYYY
telefon_stanice
text
20
no
yes
no
číslice a znaky +, -, /
e-mail_stanice
char
50
no
yes
no
[email protected]
size
key
null
unikátní klíč
třimístný kód země
Darce name
type
id_darce
int
15
yes
no
yes
jmeno_darce
char
20
no
no
no
prijmeni_darce
char
20
no
no
yes
pohlavi_darce
char
1
no
no
no
ulice_cp_darce
char
20
no
no
no
mesto_darce
char
20
no
no
no
stat_darce
char
3
no
no
no
psc_darce
int
5
no
no
no
rodne_cislo_darce
char
11
no
no
no
cislo_pojistovny_darce
int
3
no
no
no
telefon_darce
text
20
no
yes
no
číslice a znaky +, -, /
krevni_skupina_darce
char
2
no
no
yes
A, B, AB, 0
rhd_faktor_darce
char
1
no
no
yes
P – pozitivní, N – negativní
nemoc
text
255
no
yes
no
id_stanice
int
10
yes
no
yes
cizí klíč, z tabulky Stanice
10
no
no
yes
DD.MM.YYYY
1
no
no
no
datum_registrace_darce date jeAktivni
bool
index IO generovaný klíč z RČ
m – muž, f - žena
třímístný kód země XXXXXX/XXXX
Pacient name
type
size
key
null
id_pacienta jmeno_pacienta
index IO
int
15
yes
no
yes
char
20
no
no
no
generovaný klíč z RČ
prijmeni_pacienta
char
20
no
no
yes
pohlavi_pacienta
char
1
no
no
no
ulice_cp_pacienta
char
20
no
no
no
mesto_pacienta
char
20
no
no
no
stat_pacienta
char
3
no
no
no
psc_pacienta
int
5
no
no
no
rodne_cislo_pacienta
char
11
no
no
no
cislo_pojistovny_pacienta
int
3
no
no
no
krevni_skupina_pacienta
char
2
no
no
yes
A, B, AB, 0
rhd_faktor_pacienta
char
1
no
no
yes
P – pozitivní, N – negativní
name
type
size
key
null
index IO
id_pracovnika
int
10
yes
no
yes
generovaný inkrementální klíč
id_stanice
int
10
yes
yes
yes
cizí klíč, z tabulky Stanice
jmeno_pracovnika
char
20
no
no
no
prijmeni_pracovnika
char
20
no
no
yes
jeZamestnan
bool
1
no
no
no
m – muž, f - žena
třímístný kód země XXXXXX/XXXX
Lekarsky_pracovnik
Krevni_konzerva name
type
size
key
null
id_konzervy
index IO
int
10
yes
no
yes
generovaný inkrementální klíč
id_darce
int
10
yes
no
yes
cizí klíč, z tabulky Darce
id_pracovnika
int
10
yes
no
yes
cizí klíč, z tabulky Lekarsky_pracovnik
id_transfuze
int
10
yes
yes
yes
cizí klíč, z tabulky Transfuze
datum_odberu
date
10
no
no
yes
DD.MM.YYYY
cas_odberu
char
5
no
no
no
hh:mm, 24h formát
objem
real
6.2
no
no
no
v mililitrech
vzorek
bool
1
no
no
no
likvidace
bool
1
no
no
no
datum_likvidace
date
10
no
yes
no
DD.MM.YYYY
Transfuze name
type
size
key
null
id_transfuze
int
10
yes
no
yes
generovaný inkrementální klíč
id_pacienta
int
10
yes
no
yes
cizí klíč, z tabulky Pacient
id_pracovnika
int
10
yes
yes
yes
cizí klíč, z tabulky Lekarsky_pracovnik
10
no
yes
yes
DD.MM.YYYY
char
5
no
yes
no
hh:mm, 24h formát
duvod_transfuze text
255
no
yes
no
datum_transfuze date cas_transfuze
●
index IO
Klíč univerzálního schématu Klíčem univerzálního schématu bude id_konzervy.
●
Normální formy Tabulky Pacient a Darce jsou v 3.NF, ostatní jsou v BCNF.
3 Funkční analýza ●
DF diagramy
0. úroveň Lékař
1 evide nce přenos u krve
Lékařský pracovník
Úředník
2 evide nce transfúzních stanic
IS evidence pacientů
Lé k. prac.
3 evide nce lé kařsk ých pracovník ů
Dárce
IS evidence lék. pracovníků
1. úroveň
1. evidence přenosu krve Lé k. prac.
Lékař
1.1. Evidence krve
Krevní konz.
Dárci
Pacienti
IS evidence pacientů
1.2. Evidence dárců a pacientů Dárce
Lékařský pracovník
2. evidence transfúzních stanic Úředník
2.1. Nová stanice
Transf. s t.
2.2. Editace stanice
transf.st.
2.3. Přidání lék. prac. stanici
Lé k. prac.
2.4. Odebrání lék. prac. stanici
3. evidence lékařských pracovníků IS evidence lék. pracovníků
lekar_prac
3.1. Přidání lékař. prac. z IS aktual_lekar_prac Lé k. prac.
3.2. Aktualizace lékař. prac.
3.2. Odstranění lékař. prac.
2. úroveň
Lékařský pracovník
1.1. evidence krve
IS evidence pacientů
1.1.1. Evidence transfúzí Pacienti
Krevní konz.
1.1.2. Evidence krevních konzerv Lé k. prac.
Dárci
Lékař
Lékařský pracovník
1.2. evidence dárců a pacientů Dárce
1.2.1. Evidence dárců
Krevní konz.
Pacienti
1.2.2. Evidence pacientů Dárci
IS evidence pacientů
3. úroveň
1.1.1. evidence transfúzí Krevní konz.
zapis_id_transf
Lékařský pracovník
lek.prac.
1.1.1.1. Provedení transfúze
Lé k. prac.
zapis_transf
IS evidence pacientů
pacienti Transfúze
Pacienti
ziskej_id_pac
1.1.1.2. Kontrola transfúze
1.1.1.3. Odstranění transfúze
ziskej_id_dar
Dárci
Lékař
1.1.2. evidence krevních konzerv darci Lékařský pracovník
1.1.2.1. Nová krevní konzerva
Dárci
lek.prac Lé k. prac.
1.1.2.2. Kontrola krevní konzervy
krevni konz. likvidace
1.1.2.3. Likvidace krevní konzervy Lékař
1.1.2.4. Odstranění krevní konzervy
Krevní konz.
1.2.1. evidence dárců darce
Dárce
1.2.1.1. Nový dárce
Lékařský pracovník
1.2.1.2. Editace dárce
Dárci
1.2.1.3. Kontrola dárce
1.2.1.4. Odstranění dárce ziskej_id_kk Krevní konz.
1.2.2. evidence pacientů Lékařský pracovník
1.2.2.1. Získání pacienta z IS
pacient
1.2.2.2. Aktualizace pacienta
aktual_pacienti IS evidence pacientů
1.2.2.3. Kontrola pacienta
1.2.2.4. Odstranění pacienta
Pacienti
●
●
Datové toky lekar_prac
(id_pracovnika, jmeno_pracovnika, prijmeni_pracovnika)
aktual_lekar_prac
(id_pracovnika, id_stanice, jmeno_pracovnika, prijmeni_pracovnika, jeZamestnan)
zapis_id_transf
(id_transfuze)
zapis_transf
(id_transfuze, id_pacienta, datum_transfuze, cas_transfuze, duvod_transfuze)
ziskej_id_pac
(id_pacienta)
ziskej_id_dar
(id_darce)
likvidace
(likvidace, datum_likvidace)
darce
(id_darce, jmeno_darce, prijmeni_darce, pohlavi_darce, ulice_cp_darce, mesto_darce, stat_darce, psc_darce, rodne_cislo_darce, cislo_pojistovny_darce, telefon_darce, krevni_skupina_darce, rhd_faktor_darce, nemoc, id_stanice, datum_registrace_darce, jeAktivni)
ziskej_id_kk
(id_krevni_konzervy)
pacient
(id_pacienta, jmeno_pacienta, prijmeni_pacienta, pohlavi_pacienta, ulice_cp_pacienta, mesto_pacienta, stat_pacienta, psc_pacienta, rodne_cislo_pacienta, cislo_pojistovny_pacienta, telefon_pacienta, krevni_skupina_pacienta, rhd_faktor_pacienta)
aktual_pacient
(id_pacienta, jmeno_pacienta, prijmeni_pacienta, ulice_cp_pacienta, mesto_pacienta, stat_pacienta, psc_pacienta, rodne_cislo_pacienta, cislo_pojistovny_pacienta, telefon_pacienta)
Minispecifikace 1.1.1.1. Provedení transfúze Lékařský pracovník
zapis_id_transf lek.prac.
1.1.1.1. Provedení transfúze
Krevní konz.
Lé k. prac.
zapis_transf pacienti
Lékař Transfúze
1. 2. 3. 4.
Pacienti
IS evidence pacientů
Generuj nové jednoznačné číslo transfúze do p.id_transfuze Zobraz formulář Transfúze Uživatel vybere z paměti Pacienti pacienta do p.id_pacienta (pacienti) Uživatel vybere z paměti Lék.prac. Lékařského pracovníka do p.id_pracovnika (lek.prac) 5. Pro každou použitou krevní konzervu proveď 5.1. Uživatel zadá id_konzervy do p.id_konzervy 5.2. Uprav v paměti Krevní.konz záznam s klíčem p.id_konzervy: id_transfuze = p.id_transfuze (zapis_id_transf)
6. 7. 8. 9.
Doplň aktuální datum do p.datum_transfuze Uživatel zadá čas začátku podávání transfúze do p.cas_transfuze Uživatel zapíše důvod transfúze do p.duvod_transfuze Ulož p.id_transfuze, p.id_pracovnika, p.id_pacienta, p.datum_transfuze, p.cas_transfuze, p.duvod_transfuze do paměti Transfúze 10. Odešli p.id_transfuze, p.id_pacienta, p.datum_transfuze, p.cas_transfuze, p.duvod_transfuze do IS evidence pacientů (zapis_transf)
1.1.2.1. Nová krevní konzerva Lékařský pracovník
darci
Dárci
1.1.2.1. Nová krevní konzerva lek.prac Krevní konz.
Lé k. prac.
1. 2. 3. 4.
Generuj nové jednoznačné číslo krevní konzervy do p.id_konzervy Zobraz formulář Krevní konzerva Uživatel vybere z paměti Dárci dárce do p.id_darce (darci) Uživatel vybere z paměti Lék.prac. lékařského pracovníka do p.id_pracovnika (lek.prac) 5. Uživatel zadá datum odběru do p.datum_odberu 6. Uživatel zadá čas odběru do p.cas_odberu 7. Uživatel zadá objem v ml do p.objem 8. Uživatel zadá true/false do p.vzorek 9. Uživatel zadá true/false do p.likvidace 10. Pokud uživatel nezadá datum do p.datum_likvidace pak: Ulož null do p.datum_likvidace 11. Ulož p.id_konzervy, p.id_darce, p.id_pracovnika, p.id_transfuze, p.datum_odberu, p.cas_odberu, p.objem, p.vzorek, p.likvidace, p.datum_likvidace do paměti Krevní konz.
1.1.1.3. Odstranění transfúze Lékařský pracovník
ziskej_id_pac
Pacienti
1.1.1.3. Odstranění transfúze ziskej_id_dar Lékař
Dárci Transfúze
1. Zobraz formulář Odstranění transfúze 2. Uživatel zadá id_transfuze do p.id_transfuze 3. Pokud uživatel vybere možnost Odstranit záznam pak: 3.1. Načti z paměti Transfúze záznam s klíčem p.id_transfuze: p.id_pacienta = id_pacienta p.id_darce = id_darce 3.2. Pokud najdeš v paměti Pacienti záznam s klíčem p.id_pacienta pak ulož true do p.pacient_existuje
3.3.
Pokud najdeš v paměti Dárci záznam s klíčem p.id_dárce pak ulož true do p.dárce_existuje 3.4. Pokud p.pacient_existuje = true a nebo p.dárce_existuje = true pak jdi na 4., jinak označ záznam v paměti Transfúze s klíčem p.id_transfuze za neplatný Jinak pokud vybere možnost Odstranit vše: 3.5. Pro každý záznam v paměti Transfúze proveď kroky 3.1. až 3.4. 4. Vypiš na obrazovku: Záznam nelze odstranit.
4 Časová analýza ●
Stavové diagramy (STD)
naplnění konzervy nový záznam
Nová konzerva
aplikace
vzorek = false skladování
vzorek = true testování
Skladována
id_transfuze = t.id_transfuze
Aplikována
zkažená likvidace = true použitá
Testována
otestovaná likvidace = true
K likvidaci zlikvidovaná datum_likvidace = CURDATE()
Zlikvidována odstraněna zrušení záznamu
likvidace = true
registrace dárce nový záznam
Nový dárce první odběr jeAktivni = true
dlouhodobě nečinný
rozpoznaná nemoc
Aktivován
jeAktivni = false nemoc = nemoc
S nemocí
jeAktivni = false zaznamenán odběr jeAktivni = true
Deaktivován dlouhodobě deaktivovaný id_stanice = null
dlouhodobá nečinnost
Odhlášen
čištění systému zrušení záznamu
id_stanice = null
5 Indexová analýza ●
Datový slovník pro indexovou analýzu
Transfuzni_stanice name
index
type
explanation
id_stanice
yes
udržovaný spojování s tabulkou Lekarsky_pracovnik spojování s tabulkou Darce
nazev_stanice
yes
udržovaný časté vyhledávání dle názvu stanice
ulice_cp_stanice
no
mesto_stanice
yes
stat_stanice
no
psc_stanice
no
datum_registrace_stanice
no
telefon_stanice
no
e-mail_stanice
no
udržovaný časté vyhledávání stanic v určitém městě
Darce name
index
type
explanation
id_darce
yes
udržovaný spojování s tabulkou Krevni_konzerva
jmeno_darce
no
prijmeni_darce
yes
pohlavi_darce
no
ulice_cp_darce
no
mesto_darce
yes
stat_darce
no
psc_darce
no
rodne_cislo_darce
no
cislo_pojistovny_darce
no
telefon_darce
no
krevni_skupina_darce
yes
udržovaný časté vyhledávání dle krevní skupiny
rhd_faktor_darce
yes
udržovaný časté vyhledávání dle RHd faktoru
nemoc
no
id_stanice
no
datum_registrace_darce
no
jeAktivni
no
udržovaný časté vyhledávání dle příjmení dárce
dočasný
měsíční statistika o počtu dárců
Pacient name
index
id_pacienta
yes
jmeno_pacienta
no
prijmeni_pacienta
yes
pohlavi_pacienta
no
ulice_cp_pacienta
no
mesto_pacienta
no
stat_pacienta
no
psc_pacienta
no
rodne_cislo_pacienta
yes
cislo_pojistovny_pacienta
no
krevni_skupina_pacienta
no
rhd_faktor_pacienta
no
type
explanation
udržovaný spojování s tabulkou Transfuze udržovaný časté vyhledávání dle příjmení pacienta
udržovaný časté vyhledávání dle r.č. pacienta
Lekarsky_pracovnik name
index
id_pracovnika
yes
id_stanice
no
jmeno_pracovnika
no
prijmeni_pracovnika
yes
jeZamestnan
no
type
explanation
udržovaný spojování s tabulkou Transfuze spojování s tabulkou Krevni_konzerva
udržovaný časté vyhledávání dle příjmení lékařského pracovníka
Krevni_konzerva name
index
type
explanation
id_konzervy
yes
udržovaný časté vyhledávání dle id konzervy spojování s tabulkou Transfuze
id_darce
yes
dočasný
měsíční statistika
id_pracovnika
yes
dočasný
měsíční statistika
id_transfuze
no
datum_odberu
yes
dočasný
periodická kontrola životnosti krevní konzervy
cas_odberu
no
objem
no
vzorek
no
likvidace
no
datum_likvidace
no
Transfuze name
index
id_transfuze
no
id_pacienta
yes
id_pracovnika
no
datum_transfuze
yes
cas_transfuze
no
duvod_transfuze
no
type
explanation
dočasný
periodická kontrola
dočasný
periodická kontrola
6 Transakční analýza ●
1.1.1.1. Provedení transfúze
1. Generuj nové jednoznačné číslo transfúze do p.id_transfuze 2. Zobraz formulář Transfúze LS (Pacient) 3. Zobraz seznam pacientů z Pacient (pacienti) UN (Pacient) 4. Uživatel vybere pacienta 5. Ulož id_pacienta do p.id_pacienta LS (Lekarsky_pracovnik) 6. Zobraz seznam lékařského pracovníků z Lekarsky_pracovnik (lek.prac) UN (Lekarsky_pracovnik) 7. Uživatel vybere lékařského pracovníka 8. Ulož id_pracovnika do p.id_pracovnika LS (Lekarsky_pracovnik) 9. Zobraz seznam krevních konzerv z Krevni_konzerva UN (Lekarsky_pracovnik) 10. Uživatel vybere krevní konzervy 11. Ulož id_konzervy vybraných konzerv do pole begin transaction 12. Pro každý prvek v poli p.id_konzerv proveď: LX (záznam s p.id_konzervy v Krevni_konzerva) 12.2. Uprav v paměti Krevní.konz záznam s klíčem p.id_konzervy: id_transfuze = p.id_transfuze (zapis_id_transf) UN (záznam s p.id_konzervy v Krevni_konzerva) 12.3. Konec cyklu end transaction 13. Doplň aktuální datum do p.datum_transfuze 14. Uživatel zadá čas začátku podávání transfúze do p.cas_transfuze 15. Uživatel zapíše důvod transfúze do p.duvod_transfuze LX (Transfuze) 16. Ulož p.id_transfuze, p.id_pracovnika, p.id_pacienta, p.datum_transfuze, p.cas_transfuze, p.duvod_transfuze do paměti Transfúze UN (Transfuze) 17. Odešli p.id_transfuze, p.id_pacienta, p.datum_transfuze, p.cas_transfuze, p.duvod_transfuze do IS evidence pacientů (zapis_transf)
●
1.1.1.3. Odstranění transfúze
1. Zobraz formulář Odstranění transfúze LS (Transfuze) 2. Zobraz seznam transfúzí z Transfuze UN (Transfuze) 3. Uživatel zadá vybere transfúzi 4. Ulož id_transfuze do p.id_transfuze 5. Pokud uživatel vybere možnost Odstranit záznam pak: begin transaction LX (záznam s p.id_pacienta a p.id_darce v Transfuze) 6.1. Načti z paměti Transfúze záznam s klíčem p.id_transfuze: p.id_pacienta = id_pacienta p.id_darce = id_darce LS (záznam s p.id_pacienta v Pacient) 6.2. Pokud najdeš v paměti Pacienti záznam s klíčem p.id_pacienta pak ulož true do p.pacient_existuje LS (záznam s p.id_darce v Darce) 6.3. Pokud najdeš v paměti Dárci záznam s klíčem p.id_dárce pak ulož true do p.dárce_existuje UN (záznam s p.id_darce v Darce) UN (záznam s p.id_pacienta v Pacient) 6.4. Pokud p.pacient_existuje = true a nebo p.dárce_existuje = true pak jdi na 4., jinak označ záznam v paměti Transfúze s klíčem p.id_transfuze za neplatný UN (záznam s p.id_pacienta a p.id_darce v Transfuze) end transaction Jinak pokud vybere možnost Odstranit vše: 6.5. Pro každý záznam v paměti Transfúze proveď kroky 3.1. až 3.4. 7. Vypiš na obrazovku: Záznam nelze odstranit.
7 Popis implementačního prostředí Prostředí pro práci s databází bude implementováno v jazyce Java verze 1.6.0 revize 10, pomocí integrovaného vývojového prostředí NetBeans 6.0.1. Samotná databáze bude realizována v SŘBD MySQL 5.0 community version. Spolupráce s databází bude zajištěna ovladačem MySQL JDBC Driver verze 5.0.7. ●
Požadavky na hardware a software
Procesor o taktovací frekvenci minimálně 1,2 GHz, operační paměť minimálně 512 MB, pevný disk minimálně160 GB, síťová karta, operační systém Windows XP nebo Linux. Nainstalované Java JDK 1.6.0 revize 10 s knihovnou mysql-connector-java-5.0.7, NetBeans IDE 6.0.1, MySQL 5.0 community server, pro WinXP navíc MySQL GUI Tools.
8 Návrh uživatelského rozhraní Po spuštění program se objeví přihlašovací okno s pod sebou jdoucími prvky: textarea se základními údaji o aplikaci, label Role s comoboxem pro vybrání role, label Login s textfieldem pro zadání loginu, label Heslo s textfieldem pro zadání hesla a tlačítka Ukončit a Pokračovat. ●
Úvodní obrazovka
Po úspěšném zadání loginu a hesla a stisknutí tlačítka pokračovat se objeví hlavní okno aplikace. Dle zvolené role se zobrazí: Pro roli Úředník: menubar s položkami Soubor, Úpravy a Nápověda a panely Transfúzní stanice a Zaměstnanci. V panelu Transfúzní stanice budou prvky: table s obsahem tabulky Transfuzni_stanice pod ním vedle sebe: tlačítka Obnovit, Vyhledat a Zobrazit. Totéž bude i v panelu Zaměstnanci s tím rozdílem, že v prvku table bude obsah tabulky Lekarsky_pracovnik. Pro role Lékař a Lékařský pracovník: stejný menubar jako pro roli Úředník a panely Krevní konzervy, Transfúze a Pacienti, všechny panely budou mít stejné rozložení jako panel Transfúzní stanice u role Úředník. Prvky table budou obsahovat: u panelu Krevní konzervy obsah tabulky Krevni_konzervy, u panelu Transfúze obsah tabulky Transfuze a u panelu Pacienti obsah tabulky Pacient. ●
Formulář
Po otevření nabídky Úpravy v menubaru a vybrání položky Nová položka se při aktivním panelu Transfúze otevře nové okno s pro přidání transfúze do tabulky. V okně budou pod sebou prvky: label ID pacienta s textfieldem a tlačítkem Vyhledat, label ID lékařského pracovníka a tlačítko Vyhledat, label Seznam použitých krevních konzerv se seznamem a tlačítky přidat a odebrat, label Datum s textfieldem s předvyplněným datem, label Čas s textfieldem s předvyplněným časem, tlačítka Zrušit, Tisk a Potvrdit. ●
Tisková sestava
Po otevření nabídky Soubor v menubaru a vybrání položky Tisk se při aktivním panelu Krevní konzerva a vybrané položce v tabulce otevře nové okno s radiobuttony s labely Formulář a Etiketa a tlačítka potvrdit a zrušit. Po výběru radiobuttonu s labelem Etiketa se vytiskne sestava pro etiketu na krevní konzervě. Na etiketě bude: název stanice s celou poštovní adresou, telefonním číslem, případně e-mailovou adresou a logem stanice. Pod nimi bude ID krevní konzervy, krevní skupina, RHd faktor, objem konzervy, dva checkboxy s popisky Vzorek a K likvidaci, datum a čas plnění krevní konzervy a místo pro podpis lékařského pracovníka s jeho jménem a příjmením.