SVEUČILIŠTE JURJA DOBRILE U PULIODJEL ZA EKONOMIJU I TURIZAM „DR. MIJO MIRKOVIĆ“ PROJEKTNI ZADATAK ...
PROJEKT AMBULANTA OTOKProjektni zadatak: stvoriti funkcionalnu bazu podatakakoja bi mogla zadovoljiti primarne potrebe lij...
Vodi se evidencija pregleda radnika, kooperanta ili nekogvanjskog na način da se prate ozljede/indikacije uodređenom vreme...
Model je nadograđen na Upotrebljene su:način da je povezan preko četiri tabele šifrarnikadvije tabele ...
COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS ...
COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMEN TSPrometne tabele služe za eviden...
Vezne tabele omogućuju vezu COLUMN_NAME ID ...
Poseban slučaj vezne tabele je veza između indikacija i terapija koja služi za: praćenje dodijeljenih terapija po indika...
SEKVENCESekvence su napravljene za svaku od Name Valuetabela i jednake su za svaku od njih ...
TRIGERITrigeri koriste sekvence kako bi EFPU_AMB_PREGLEDI _BIRumetali ID u svaku od tabela trigger...
TRIGERIDrugi se aktivira kod EFPU_AMB_PREGLEDI _BURizmjene zapisa u tabeli trigger EFPU_AMB_PREGLEDI_BU...
EFPU_SIF_OSOBE_P create or replace PACKA...
PREGLED POSLOVNIH PRAVILA U BAZI Tabele su razrađene na način da je potrebno držati se samo nekoliko pravila. Najvažnije s...
Ostala pravila vezana su za vanjske ključevekojima se osigurava referentni integritet na nivoubaze i jedinstvene ključeve ...
SQL UPITBroj pregleda po radniku/kooperantu u periodu sa prosječnim trajanjem pregleda. ...
Korištena je funkcijaAVG kojom se dobivaprosjek trajanjapregleda
SQL UPITBroj pregledanih osoba po satima u danu PREGLEDI_PO_DANU_SATU SELECT COUNT(*) AS BROJ_LJ...
upit koji je dorađen dapruži ljepši ispis (odtoliko do toliko sati)Rezultat upita je izlistajna slici
SQL UPITBroj sati boravka u ambulanti po OJ (po odjelu) SATI_U_AMB_PO_OJ SELECT COUNT(*) AS ...
U ovom upitu sumira se trajanje pregleda po OJ(odjelu). Substring je korišten kako bi se ukupan brojminuta pretvorio u sat...
SQL UPITBroj radnika/kooperanata po OJ prema indikacijama u periodu BR_PAC_PO_OJ_I_IND ...
Jednostavan upitkoji zbraja posjeteambulanti premaindikacijama i OJ(odjelu)Kao rezultat dajeizlistaj na slici
SQL UPIT Pregled utroška sanitetskog materijala (s podacima iz pregleda ako postoji veza) za per...
Upit prikazuje utrošak sanitetskogmaterijala po količini i u periodu,te vezu prema pregledu u kojemje utrošen
SQL UPIT Zaliha sanitetskog materijala po šifri i nazivuZALIHA_PO_SIFRI SELECT M.opis AS MATERIJAL, M.sifra AS ...
Ovaj upit je ostvaren spajanjem više tablica preko leftouter joina te upotrebom dva pod selecta kojima jesumirana nabava k...
SIGURNOST Kreiranje dva korisnika s dodjelom prava Prvi ima...
SUČELJE ZA BAZU EFPU_AMBULANTA Prijedlog sučelja koji je dio tima paralelno r...
Početni prozor aplikacije Slike iz aplikacije
ZAKLJUČAKProjekt je nastao timskim radom. Iako u početku članovi timanisu bili osposobljeni za samostalni rad unutar zadat...
Nakon korektno obavljenih podzadataka druge fazetimovi se spajaju i zajednički se generiraju upiti.Prije izrade upita u ba...
Smatramo da je projekt uspješno odrađen i da jestvorena funkcionalna baza podataka za praćenjerada zdravstvene ambulante. ...
Prezentacija Ambulanta "Otok"
of 33

Prezentacija Ambulanta "Otok"

Projekt nastao unutar kolegija Baze podataka II
Published on: Mar 4, 2016
Source: www.slideshare.net


Transcripts - Prezentacija Ambulanta "Otok"

  • 1. SVEUČILIŠTE JURJA DOBRILE U PULIODJEL ZA EKONOMIJU I TURIZAM „DR. MIJO MIRKOVIĆ“ PROJEKTNI ZADATAK AMBULANTA PROJEKTNI TIM MENTORI Ana Mirić Izv. prof.Vanja Bevanda, dr. sc. Oliver Juračić Jasminka Finderle, Uljanik IRI Tatjana Berc Pula, veljača 2013.
  • 2. PROJEKT AMBULANTA OTOKProjektni zadatak: stvoriti funkcionalnu bazu podatakakoja bi mogla zadovoljiti primarne potrebe liječničkeambulante tvrtke Uljanik d.d. Osim evidencije o osobama/pacijentima stvorena je evidencija o: svim pregledima trajanju pregleda količini utrošenog sanitetskog materijala (promet)
  • 3. Vodi se evidencija pregleda radnika, kooperanta ili nekogvanjskog na način da se prate ozljede/indikacije uodređenom vremenu (satu) uz provedenu terapiju iutrošeni materijal.Po jednom pregledu može se evidentirati jedna ili višeindikacija, a za svaku indikaciju može se upisati jedna iliviše terapija.Evidentira se i utrošak (izlaz) i ulaz (nabava) sanitetskogmaterijala po pregledu. Za radnika, kooperanta i/ili vanjsku osobu korištena je već postojeća evidencija osoba, kao i za društva, odjele i partnere (dobavljače).
  • 4. Model je nadograđen na Upotrebljene su:način da je povezan preko četiri tabele šifrarnikadvije tabele (EFPU_AMB_MATERIJALI_MJ)(EFPU_SIF_OSOBE) i(EFPU_SIF_PARTNERI) (EFPU_AMB_MATERIJALI)koji su iskorišteni za „uloge“ (EFPU_AMB_TERAPIJE)pacijenata i dobavljača. (EFPU_AMB_INDIKACIJE) dvije prometne tabele (EFPU_AMB_MATERIJALI_PROMETI) (EFPU_AMB_PREGLEDI) četiri vezne tabele (EFPU_AMB_MAT_PROM_SASTAVNICE) (EFPU_AMB_PREGLEDI_TERAPIJE) (EFPU_AMB_PREGLEDI_INDIKACIJE) (EFPU_AMB_IND_TER)
  • 5. COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS ID NUMBER(10,0) No Null 1 Null VARCHAR2(10 oznaka mjerneŠifrarnici sadrže opise pojedinih OZNAKA No null 2 BYTE) jedinice VARCHAR2(60 OPIS Yes null 3 opis mjerne jediniceentiteta kao što su: BYTE) DAT_DOD DATE No null 4 datum dodavanja mjerne jedinice VARCHAR2(30 USER_DOD No null 5 user dodavanja BYTE) DAT_IZM DATE Yes null 6 datum izmjene indikacije USER_IZM VARCHAR2(30 BYTE) Yes null 7 user izmjene terapije EFPU_AMB_MATERIJALI_MJ (šifrarnik mjernih jedinica) COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN _ID COMMENTS materijali. ID NUMBER(10,0) No Null 1 Null SIFRA VARCHAR2(10 BYTE) No Null 2 šifra materijalaSvaki ima svoji šifru, osim tabele OPIS VARCHAR2(200 BYTE) No Null 3 opis materijala MJ_ID NUMBER(10,0) No Null 4 ID mjerne jedinicemjernih jedinica za koje je umjesto DAT_DOD DATE No Null 5 datum dodavanjašifre upotrjebljena oznaka, koja je USER_DOD VARCHAR2(30 BYTE) No Null 6 user dodavanja DAT_IZM DATE Yes Null 7 datum izmjenerazličita od ID-a. USER_IZM VARCHAR2(30 BYTE) Yes Null 8 user izmjene EFPU_AMB_MATERIJALI ( šifrarnik materijala) COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS ID NUMBER(10,0) No Null 1 Null SIFRA VARCHAR2(10 BYTE) No null 2 šifra indikacije OPIS VARCHAR2(200 BYTE) No null 3 opis indikacije DAT_DOD DATE No null 4 datum dodavanja USER_DOD VARCHAR2(30 BYTE) No null 5 user dodavanja DAT_IZM DATE Yes null 6 datum izmjene USER_IZM VARCHAR2(30 BYTE) Yes null 7 user izmjene EFPU_AMB_INDIKACIJE (šifrarnik indikacija) COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS ID NUMBER(10,0) No null 1 Null SIFRA VARCHAR2(10 BYTE) No null 2 šifra terapije OPIS VARCHAR2(200 BYTE) No null 3 opis terapije DAT_DOD DATE No null 4 datum dodavanja USER_DOD VARCHAR2(30 BYTE) No null 5 user dodavanja DAT_IZM DATE Yes null 6 datum izmjene USER_IZM VARCHAR2(30 BYTE) Yes null 7 user izmjene EFPU_AMB_TERAPIJE (šifrarnik terapija)
  • 6. COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMEN TSPrometne tabele služe za evidenciju ID OSOBA_ID NUMBER(10,0) NUMBER(10,0) No No Null Null 1 2 null ID osobe pregleda i PROMET_ID NUMBER(10,0) Yes Null 3 ID prometa datum i vrijeme prometa materijala (bilo ulaza ili DATUM_VRIJEME DATE Yes Null 4 pregleda TRAJANJE NUMBER(10,0) Yes Null 5 trajanje pregleda izlaza). TLAK_D NUMBER(10,0) Yes Null 6 izmjereni diastolički tlak - "donji" izmjerena TEMPERATURA NUMBER(10,1) Yes Null 7 temperaturaU njima se osim samih prometa DAT_DOD DATE VARCHAR2(30 No Null 8 datum dodavanja USER_DOD No Null 9 user dodavanjavode i neki jednostavni podaci za DAT_IZM BYTE) DATE Yes Null 10 datum izmjenekoje nismo smatrali za shodno praviti USER_IZM VARCHAR2(30 BYTE) Yes Null 11 user izmjeneposebne tabele, poput tlaka izmjereni sistolički TLAK_G NUMBER(10,0) Yes Null 12 tlak - "gornji" VARCHAR2(2000 napomena -pacijenta, napomene ili izmjerene NAPOMENA Yes Null 13 BYTE) slobodan upis EFPU_AMB_PREGLEDI (prometna tabela pregleda)temperature na pregledu, a vezanesu striktno uz taj pregled . COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS ID NUMBER(10,0) No null 1 Null datum i vrijeme DATUM_VRIJEME DATE No SYSDATE 2 prometa smjer prometa (1=ulaz / SMJER NUMBER(10,0) No null 3 0=izlaz) PREGLED_ID NUMBER(10,0) Yes null 4 ID pregleda PARTNER_ID NUMBER(10,0) Yes null 5 ID partnera (dobavljaca) DAT_DOD DATE No null 6 datum dodavanja VARCHAR2(30 USER_DOD No null 7 user dodavanja BYTE) DAT_IZM DATE Yes null 8 datum izmjene VARCHAR2(30 USER_IZM Yes null 9 user izmjene BYTE) EFPU_AMB_MATERIJALI_PROMETI (prometna tabela ulaza i izlaza materijala)
  • 7. Vezne tabele omogućuju vezu COLUMN_NAME ID DATA_TYPE NUMBER(10,0) NULLABLE No DATA_DEFAULT null COLUMN_ID 1 COMMENTS Nullviše na više. PROMET_ID NUMBER(10,0) No null 2 ID prometa POZICIJA NUMBER(10,0) No null 3 pozicija na sastavniciNeophodne u slučajevima kada MATERIJAL_ID KOLICINA NUMBER(10,0) NUMBER(10,2) No Yes null null 4 5 ID materijala količina materijalaželimo DAT_DOD USER_DOD DATE VARCHAR2(30 BYTE) No No null null 6 7 datum dodavanja user dodavanja omogućiti više indikacija ili DAT_IZM USER_IZM DATE VARCHAR2(30 BYTE) Yes Yes null null 8 9 datum izmjene user izmjene terapija po pregledu ili EFPU_AMB_MAT_PROM_SASTAVNICE (vezna tabela prometa materijala) u slučaju prometa materijala kada želimo omogućiti COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS zaprimanje više materijala po ID NUMBER(10,0) No null 1 Null PREGLED_ID NUMBER(10,0) No null 2 ID pregleda jednoj primki ili više utrošenih INDIKACIJA_ID DAT_DOD NUMBER(10,0) DATE No No null null 3 4 ID indikacije datum dodavanja materijala po pregledu, na USER_DOD DAT_IZM VARCHAR2(30 BYTE) DATE No Yes null null 5 6 user dodavanja datum izmjene način da uvodimo sastavnicu USER_IZM VARCHAR2(30 BYTE) Yes null 7 user izmjene EFPU_AMB_PREGLEDI_INDIKACIJE (vezna tabela indikacija) kao veznu tabelu. COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS ID NUMBER(10,0) No null 1 Null PREGLED_ID NUMBER(10,0) No null 2 ID pregleda TERAPIJA_ID NUMBER(10,0) No null 3 ID terapije DAT_DOD DATE No null 4 datum dodavanja USER_DOD VARCHAR2(30 BYTE) No null 5 user dodavanja DAT_IZM DATE Yes null 6 datum izmjene USER_IZM VARCHAR2(30 BYTE) Yes null 7 user izmjene EFPU_AMB_PREGLEDI_TERAPIJE (vezna tabela terapija)
  • 8. Poseban slučaj vezne tabele je veza između indikacija i terapija koja služi za: praćenje dodijeljenih terapija po indikaciji omogućava developeru aplikacije da „predloži“ terapiju nakon odabira indikacije. COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS ID NUMBER(10,0) No null 1 Null INDIKACIJA_ID NUMBER(10,0) Yes null 2 ID indikacije TERAPIJA_ID NUMBER(10,0) Yes null 3 ID terapije DAT_DOD DATE No null 4 datum dodavanja USER_DOD VARCHAR2(30 BYTE) No null 5 user dodavanja DAT_IZM DATE Yes null 6 datum izmjene USER_IZM VARCHAR2(30 BYTE) Yes null 7 user izmjene EFPU_AMB_IND_TER (vezna tabela indikacija i terapija)
  • 9. SEKVENCESekvence su napravljene za svaku od Name Valuetabela i jednake su za svaku od njih CREATED 12.01.13 LAST_DDL_TIME 12.01.13Počinju od broja 10000 i korak im je SEQUENCE_OWNER EFPU_AMBULANTA1. SEQUENCE_NAME AMB_INDIKACIJE_SEQ MIN_VALUE 10000Prilikom kreiranja sekvenci vodilo se MAX_VALUE 9999999999999999999999999999računa o pravilima imenovanja. INCREMENT_BY 1 CYCLE_FLAG N ORDER_FLAG N CACHE_SIZE 20 LAST_NUMBER 10040 Prikaz sekvence za tabelu EFPU_AMB_INDIKACIJE imenovane AMB_INDIKACIJE_SEQ
  • 10. TRIGERITrigeri koriste sekvence kako bi EFPU_AMB_PREGLEDI _BIRumetali ID u svaku od tabela trigger EFPU_AMB_PREGLEDI_BIR BEFORE INSERT ON EFPU_AMB_PREGLEDIOsim toga trigeri se koriste za FOR EACH ROWumetanje datuma i korisnika koji je begin :NEW.dat_dod := SYSDATE;umetnuo ili promijenio zapis. Stoga :NEW.user_dod := USER;su trigeri generalno isti za sve if :NEW.ID is null thentabele te ih ima dva po tabeli SELECT AMB_PREGLEDI_SEQ.NEXTVAL INTO :NEW.ID FROM dual; end if; end; Dan je pregled oba trigera za tabelu (EFPU_AMB_PREGLEDI). Prvi triger se aktivira pri insertiranju reda u tabelu .
  • 11. TRIGERIDrugi se aktivira kod EFPU_AMB_PREGLEDI _BURizmjene zapisa u tabeli trigger EFPU_AMB_PREGLEDI_BUR BEFORE UPDATE ON EFPU_AMB_PREGLEDIte je različit od prvog po FOR EACH ROW begintome što ne ubacuje :NEW.dat_izm := SYSDATE;novi ID. :NEW.user_izm := USER; end; Iz priloženog je vidljivo da se vodilo računa o pravilima imenovanja trigera
  • 12. EFPU_SIF_OSOBE_P create or replace PACKAGE EFPU_SIF_OSOBE_P ASPAKETI I FUNKCIJE FUNCTION UK2ID(P_OIB IN EFPU_SIF_OSOBE.OIB%TYPE) RETURN EFPU_SIF_OSOBE.ID%TYPE; FUNCTION GET_NEXT_ID RETURN NUMBER; END EFPU_SIF_OSOBE_P; create or replace Primjer paketa prikazan je PACKAGE BODY EFPU_SIF_OSOBE_P AS kroz paket na tablicu FUNCTION UK2ID( P_OIB IN EFPU_SIF_OSOBE.OIB%TYPE) (EFPU_SIF_OSOBE) RETURN EFPU_SIF_OSOBE.ID%TYPE IS Paket se sastoji od dva dijela: V_id EFPU_SIF_OSOBE.id%TYPE; BEGIN zaglavlja SELECT t.id INTO v_id FROM efpu_sif_osobe t WHERE t.oib=p_oib; RETURN v_id; tijela paketa koji sadrži funkcije END UK2ID; FUNCTION GET_NEXT_ID RETURN NUMBER IS v_result NUMBER; BEGIN SELECT SF_OS_SEQ.nextval INTO v_result FROM dual; RETURN(v_result); EXCEPTION WHEN OTHERS THEN RETURN NULL; END get_next_id; END EFPU_SIF_OSOBE_P;
  • 13. PREGLED POSLOVNIH PRAVILA U BAZI Tabele su razrađene na način da je potrebno držati se samo nekoliko pravila. Najvažnije se odnosi na tabelu (EFPU_AMB_MATERIJALI_PROMETI) u kojoj se između ostaloga nalaze tri polja: PARTNER_ID PREGLED_ID te polje Potrebno je kroz aplikaciju voditi računa da se ne SMJER. dozvoli upis u prva dva polja istovremeno jer se obzirom na taj upis i smjer razlikuje je li riječ o ulazu ili izlazu robe/materijala u/iz ambulante. Ukoliko je riječ o ulazu SMJER mora biti 1 te polje PARTNER_ID treba ispuniti, a PREGLED_ID ostaviti prazno (null) Ako je riječ o izlazu onda je SMJER 0, a PREGLED_ID ispunjen.
  • 14. Ostala pravila vezana su za vanjske ključevekojima se osigurava referentni integritet na nivoubaze i jedinstvene ključeve kojima se osiguravaintegritet šifrarnika kao na primjeru iz tabele(EFPU_AMB_INDIKACIJE) gdje je jedinstveniključ korišten na polju ŠIFRA.Isti je postupak primijenjen na svim šifrarnicima.. I ND E X _ OW NE R I ND E X _ NA M E T A B L E _ OW NE R T A B L E _ NA M E C OL U M N _ NA M E EFPU_AMBULANTA EFPU_AMB_SIF_INDIKACIJE_UK EFPU_AMBULANTA EFPU_AMB_INDIKACIJE SIFRA
  • 15. SQL UPITBroj pregleda po radniku/kooperantu u periodu sa prosječnim trajanjem pregleda. BROJ_PROSJEK_PREGLEDA SELECT COUNT(*) AS KOLICINA,o.ime AS IME,o.prezime AS PREZIME,p.datum_vrijeme AS DATUM, o.tip_osobe AS TIP, AVG(p.trajanje) AS PROST_TRAJANJE FROM efpu_sif_osobe o, efpu_amb_pregledi p WHERE p.osoba_id = o.id AND p.datum_vrijeme BETWEEN 21.06.2012 AND 27.06.2012 GROUP BY o.ime, o.prezime, o.tip_osobe, p.datum_vrijeme ORDER BY 4;
  • 16. Korištena je funkcijaAVG kojom se dobivaprosjek trajanjapregleda
  • 17. SQL UPITBroj pregledanih osoba po satima u danu PREGLEDI_PO_DANU_SATU SELECT COUNT(*) AS BROJ_LJUDI, to_char(t.datum_vrijeme,dd.mm.yyyy)|| od ||to_char(t.datum_vrijeme,hh24)|| do ||substr((0||to_char(to_number(to_char(t.datum_v rijeme,hh24)+1))),-2)|| sati AS DATUM_SAT FROM efpu_amb_pregledi t GROUP BY to_char(t.datum_vrijeme,dd.mm.yyyy)|| od ||to_char(t.datum_vrijeme,hh24)|| do ||substr((0||to_char(to_number(to_char(t.datum_v rijeme,hh24)+1))),-2)|| sati ORDER BY 2;
  • 18. upit koji je dorađen dapruži ljepši ispis (odtoliko do toliko sati)Rezultat upita je izlistajna slici
  • 19. SQL UPITBroj sati boravka u ambulanti po OJ (po odjelu) SATI_U_AMB_PO_OJ SELECT COUNT(*) AS BROJ_POSJETA, substr((to_char(sum ((p.trajanje)/60 ), FM99999990D00)),1,instr((to_char(sum ((p.trajanje)/60 ), FM99999990D00)),,,1,1)-1) || sati ||round(((to_number(substr((to_char(sum ((p.trajanje)/60 ), FM99999990D00)), instr((to_char(sum ((p.trajanje)/60 ), FM99999990D00)),,,1,1)+1, length(to_char(sum ((p.trajanje)/60 ), FM99999990D00))- 1)))*0.6),0)|| minuta AS SATI_U_AMBULANTI, od.naziv AS OJ FROM efpu_sif_osobe o, efpu_amb_pregledi p, efpu_sif_odjeli od WHERE p.osoba_id = o.id AND o.odjel_id = od.id GROUP BY od.naziv ORDER BY 1 desc,2,3;
  • 20. U ovom upitu sumira se trajanje pregleda po OJ(odjelu). Substring je korišten kako bi se ukupan brojminuta pretvorio u sate i ostatak minuta radi ljepšegispisaKao rezultat daje izlistaj na slici
  • 21. SQL UPITBroj radnika/kooperanata po OJ prema indikacijama u periodu BR_PAC_PO_OJ_I_IND SELECT COUNT(*) AS BR_RAD,i.opis AS INDIKACIJA,od.naziv AS OJ FROM efpu_amb_pregledi p, efpu_amb_indikacije i, efpu_amb_pregledi_indikacije pi, efpu_sif_odjeli od, efpu_sif_osobe o WHERE p.id = pi.pregled_id AND i.id= pi.indikacija_id AND p.osoba_id = o.id AND o.odjel_id = od.id AND p.datum_vrijeme between 21.06.12 and 27.06.12 GROUP BY opis,naziv ORDER BY 1 desc;
  • 22. Jednostavan upitkoji zbraja posjeteambulanti premaindikacijama i OJ(odjelu)Kao rezultat dajeizlistaj na slici
  • 23. SQL UPIT Pregled utroška sanitetskog materijala (s podacima iz pregleda ako postoji veza) za period UTROSAK_PO SELECT ami.opis AS INDIKACIJA, am.opis AS MATERIJAL, sum(ams.kolicina) AS KOLIČINA, amj.oznaka AS MJ,_PREGLEDU to_char(ampr.datum_vrijeme,dd.mm.yyyy) AS DATUM_PREGLEDA, oso.prezime AS PREZIME, oso.ime AS IME FROM efpu_amb_materijali am, efpu_amb_materijali_mj amj, efpu_amb_mat_prom_sastavnice ams, efpu_amb_pregledi ampr, efpu_amb_pregledi_indikacije ampi, efpu_amb_indikacije ami, efpu_amb_materijali_prometi amp, efpu_sif_osobe oso WHERE am.mj_id = amj.id AND ams.materijal_id = am.id AND ams.promet_id = amp.id AND amp.smjer = 0 AND amp.pregled_id = ampr.id AND ampi.pregled_id = ampr.id AND ampi.indikacija_id = ami.id AND ampr.osoba_id = oso_id AND amp.datum_vrijeme BETWEEN 21.06.2012 AND 23.06.2012 GROUP BY ami.opis, am.opis, amj.oznaka, oso.prezime, oso.ime, ampr.datum_vrijeme ORDER BY 5;
  • 24. Upit prikazuje utrošak sanitetskogmaterijala po količini i u periodu,te vezu prema pregledu u kojemje utrošen
  • 25. SQL UPIT Zaliha sanitetskog materijala po šifri i nazivuZALIHA_PO_SIFRI SELECT M.opis AS MATERIJAL, M.sifra AS SIFRA, COALESCE(ulaz.kol, 0) - COALESCE(izlaz.kol1, 0) AS ZALIHA, MJ.oznaka AS MJ FROM efpu_amb_materijali_mj MJ, efpu_amb_materijali M LEFT OUTER JOIN (SELECT SUM (mps.kolicina) as KOL, mps.materijal_id as MAT FROM efpu_amb_materijali_prometi mp, efpu_amb_mat_prom_sastavnice mps WHERE mps.promet_id= mp.id AND mp.smjer = 1 GROUP BY mps.materijal_id) ULAZ ON M.ID = ULAZ.MAT LEFT OUTER JOIN (SELECT SUM (mps.kolicina) as KOL1, mps.materijal_id as MAT1 FROM efpu_amb_materijali_prometi mp, efpu_amb_mat_prom_sastavnice mps WHERE mps.promet_id= mp.id AND mp.smjer =0 GROUP BY mps.materijal_id) IZLAZ ON M.ID = IZLAZ.MAT1 WHERE M.mj_id = MJ.id;
  • 26. Ovaj upit je ostvaren spajanjem više tablica preko leftouter joina te upotrebom dva pod selecta kojima jesumirana nabava kao ulaz te rashod kao izlaz te jeoduzimanjem izlaza od ulaza dobivena zaliha. Posebnu pozornost trebalo je obratiti na one materijale koji su u šifrarniku a nisu nikada ušli niti izašli. Radi njih se koristi funkcija coalesce koja „null“ vrijednost ukoliko postoji pretvara u „0“
  • 27. SIGURNOST Kreiranje dva korisnika s dodjelom prava Prvi ima naziv Ambulanta_ADM i treba mu dodijeliti sva prava nad bazom CREATE USER Ambulanta_ADM IDENTIFIED BY pass;Petlja u posljednjoj naredbi COMMIT;olakšava nam davanje prava GRANT ALL PRIVILEGES TO Ambulanta_ADM;„select“ na sve tabele u bazi, kako COMMIT;ih ne bi morali davati jednu pojednu. Drugi naziva Ambulanta_UPIT treba ima samo prava daKreirani korisnici su testirani i rade vidi podatke u bazi te da može raditi upite.kako je zamišljeno. CREATE USER Ambulanta_UPIT IDENTIFIED BY pass; COMMIT; GRANT CREATE SESSION TO Ambulanta_UPIT; COMMIT; BEGIN FOR t IN (SELECT * FROM user_tables) LOOP EXECUTE IMMEDIATE GRANT SELECT ON || t.table_name || TO Ambulanta_UPIT; END LOOP; END; COMMIT;
  • 28. SUČELJE ZA BAZU EFPU_AMBULANTA Prijedlog sučelja koji je dio tima paralelno razvijao u periodima dok je za to imao vremena nije u potpunosti funkcionalno poslužilo je radi lakšeg unosa podataka u bazu.
  • 29. Početni prozor aplikacije Slike iz aplikacije
  • 30. ZAKLJUČAKProjekt je nastao timskim radom. Iako u početku članovi timanisu bili osposobljeni za samostalni rad unutar zadatka koji imje bio dodijeljen međusobnom suradnjom i zajedničkimsastancima došlo se do konačnog rezultata i otklonjene su svepočetne nejasnoće.Sastanci su održani u više navrata, a tijek izrade projekta jepodijeljen u dvije faze. U prvoj fazi definiran je koncept baze, osmišljen načelni rad, kreirane su tabele, postavljeni vanjski ključevi te indeksiranje. Drugu faza u izradi projekta čine dvije podfaze pri čemu je tim podijeljen u dvije grupe koje samostalno rade na ostvarenju podzadataka. Prva je grupa u drugoj fazi izrađivala sekvence i trigere dok je druga proučavala i izrađivala funkcije i pakete.
  • 31. Nakon korektno obavljenih podzadataka druge fazetimovi se spajaju i zajednički se generiraju upiti.Prije izrade upita u bazu su uneseni zadani generičkipodaci. Izrada upita oduzela je najviše vremena zbognedovoljnog poznavanja SQL naredbi od strane članovatima.Ipak, uz mnogobrojne sastanke, instrukcije i nadopuneprethodno stečenog znanja dolazi se do kvalitetnogrješenja tog dijela projektnog zadatka. Nakon što je baza izrađena kreirana je projektna dokumentacija te Powerpoint prezentacija. U fazi izrade dokumentacje i prezentacije nije bilo potrebe za održavanjem sastanaka te su korišteni suvremeni načini komuniciranja na daljinu putem interneta (chat, Voice over IP), servisi (Dropbox) i program Team Wiewer.
  • 32. Smatramo da je projekt uspješno odrađen i da jestvorena funkcionalna baza podataka za praćenjerada zdravstvene ambulante. HVALA NA POZORNOSTI IMATE LI PITANJA?

Related Documents