prezentacija ambulanta "otok"

33
PROJEKTNI ZADATAK AMBULANTA SVEUČILIŠTE JURJA DOBRILE U PULI ODJEL ZA EKONOMIJU I TURIZAM „DR. MIJO MIRKOVIĆ“ PROJEKTNI TIM Ana Mirić Oliver Juračić Tatjana Berc MENTORI Izv. prof.Vanja Bevanda, dr. sc. Jasminka Finderle, Uljanik IRI Pula, veljača 2013.

Upload: ana-marley

Post on 26-Jan-2015

137 views

Category:

Documents


0 download

DESCRIPTION

Projekt nastao unutar kolegija Baze podataka II

TRANSCRIPT

Page 1: Prezentacija Ambulanta "Otok"

PROJEKTNI ZADATAK

AMBULANTA

SVEUČILIŠTE JURJA DOBRILE U PULIODJEL ZA EKONOMIJU I TURIZAM „DR. MIJO MIRKOVIĆ“

PROJEKTNI TIMAna MirićOliver Juračić Tatjana Berc

MENTORIIzv. prof.Vanja Bevanda, dr. sc.Jasminka Finderle, Uljanik IRI

Pula, veljača 2013.

Page 2: Prezentacija Ambulanta "Otok"

PROJEKT AMBULANTA OTOK

Projektni zadatak: stvoriti funkcionalnu bazu podataka koja bi mogla zadovoljiti primarne potrebe liječničke ambulante tvrtke Uljanik d.d.

Osim evidencije o osobama/pacijentima stvorena je evidencija o:

svim pregledimatrajanju pregledakoličini utrošenog sanitetskog materijala (promet)

Page 3: Prezentacija Ambulanta "Otok"

Vodi se evidencija pregleda radnika, kooperanta ili nekog vanjskog na način da se prate ozljede/indikacije u određenom vremenu (satu) uz provedenu terapiju i utrošeni materijal.Po jednom pregledu može se evidentirati jedna ili više indikacija, a za svaku indikaciju može se upisati jedna ili više terapija. Evidentira se i utrošak (izlaz) i ulaz (nabava) sanitetskog materijala 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).

Page 4: Prezentacija Ambulanta "Otok"
Page 5: Prezentacija Ambulanta "Otok"

Upotrebljene su:četiri tabele šifrarnika(EFPU_AMB_MATERIJALI_MJ)(EFPU_AMB_MATERIJALI)(EFPU_AMB_TERAPIJE) (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)

Model je nadograđen na način da je povezan preko dvije tabele (EFPU_SIF_OSOBE) i (EFPU_SIF_PARTNERI) koji su iskorišteni za „uloge“ pacijenata i dobavljača.

Page 6: Prezentacija Ambulanta "Otok"

Šifrarnici sadrže opise pojedinih entiteta kao što su:

mjerne jediniceindikacijeterapije materijali.

Svaki ima svoji šifru, osim tabele mjernih jedinica za koje je umjesto šifre upotrjebljena oznaka, koja je različita od ID-a.

EFPU_AMB_MATERIJALI_MJ (šifrarnik mjernih jedinica)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 materijala

OPIS VARCHAR2(200 BYTE) No Null 3 opis materijala

MJ_ID NUMBER(10,0) No Null 4 ID mjerne jedinice

DAT_DOD DATE No Null 5 datum dodavanja

USER_DOD VARCHAR2(30 BYTE) No Null 6 user dodavanja

DAT_IZM DATE Yes Null 7 datum izmjene

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)

COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS

ID NUMBER(10,0) No Null 1 Null

OZNAKA VARCHAR2(10 BYTE)

No null 2 oznaka mjerne jedinice

OPIS VARCHAR2(60 BYTE)

Yes null 3 opis mjerne jedinice

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

Page 7: Prezentacija Ambulanta "Otok"

Prometne tabele služe za evidencijupregleda i prometa materijala (bilo ulaza ili izlaza).

U njima se osim samih prometa vode i neki jednostavni podaci za koje nismo smatrali za shodno praviti posebne tabele, poput tlaka pacijenta, napomene ili izmjerene temperature na pregledu, a vezane su striktno uz taj pregled .

EFPU_AMB_PREGLEDI (prometna tabela pregleda)

COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS

ID NUMBER(10,0) No null 1 Null

DATUM_VRIJEME DATE No SYSDATE 2 datum i vrijeme prometa

SMJER NUMBER(10,0) No null 3 smjer prometa (1=ulaz / 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

USER_DOD VARCHAR2(30 BYTE)

No null 7 user dodavanja

DAT_IZM DATE Yes null 8 datum izmjene

USER_IZM VARCHAR2(30 BYTE)

Yes null 9 user izmjene

EFPU_AMB_MATERIJALI_PROMETI (prometna tabela ulaza i izlaza materijala)

COLUMN_ NAME DATA_ TYPE NULLABLE DATA_ DEFAULT COLUMN_ I D COMMENTS

ID NUMBER(10,0) No Null 1 null

OSOBA_ID NUMBER(10,0) No Null 2 ID osobe

PROMET_ID NUMBER(10,0) Yes Null 3 ID prometa

DATUM_VRIJEME DATE Yes Null 4 datum i vrijeme pregleda

TRAJANJE NUMBER(10,0) Yes Null 5 trajanje pregleda

TLAK_D NUMBER(10,0) Yes Null 6 izmjereni diastolički tlak - "donji"

TEMPERATURA NUMBER(10,1) Yes Null 7 izmjerena temperatura

DAT_DOD DATE No Null 8 datum dodavanja

USER_DOD VARCHAR2(30 BYTE)

No Null 9 user dodavanja

DAT_IZM DATE Yes Null 10 datum izmjene

USER_IZM VARCHAR2(30 BYTE)

Yes Null 11 user izmjene

TLAK_G NUMBER(10,0) Yes Null 12 izmjereni sistolički tlak - "gornji"

NAPOMENA VARCHAR2(2000 BYTE)

Yes Null 13 napomena - slobodan upis

Page 8: Prezentacija Ambulanta "Otok"

EFPU_AMB_MAT_PROM_SASTAVNICE (vezna tabela prometa materijala)

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

INDIKACIJA_ID NUMBER(10,0) No null 3 ID 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_PREGLEDI_INDIKACIJE (vezna tabela indikacija)

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)

Vezne tabele omogućuju vezu više na više.Neophodne u slučajevima kada želimo

omogućiti više indikacija ili terapija po pregledu ili u slučaju prometa materijala kada želimo omogućiti zaprimanje više materijala po jednoj primki ili više utrošenih materijala po pregledu, na način da uvodimo sastavnicu kao veznu tabelu.

COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS

ID NUMBER(10,0) No null 1 Null

PROMET_ID NUMBER(10,0) No null 2 ID prometa

POZICIJA NUMBER(10,0) No null 3 pozicija na sastavnici

MATERIJAL_ID NUMBER(10,0) No null 4 ID materijala

KOLICINA NUMBER(10,2) Yes null 5 količina materijala

DAT_DOD DATE No null 6 datum dodavanja

USER_DOD VARCHAR2(30 BYTE) No null 7 user dodavanja

DAT_IZM DATE Yes null 8 datum izmjene

USER_IZM VARCHAR2(30 BYTE) Yes null 9 user izmjene

Page 9: Prezentacija Ambulanta "Otok"

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.

EFPU_AMB_IND_TER (vezna tabela indikacija i terapija)

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

Page 10: Prezentacija Ambulanta "Otok"

SEKVENCE

Sekvence su napravljene za svaku od tabela i jednake su za svaku od njih Počinju od broja 10000 i korak im je 1.Prilikom kreiranja sekvenci vodilo se računa o pravilima imenovanja.

Prikaz sekvence za tabelu EFPU_AMB_INDIKACIJE imenovane AMB_INDIKACIJE_SEQ

Name Value

CREATED 12.01.13

LAST_DDL_TIME 12.01.13

SEQUENCE_OWNER EFPU_AMBULANTA

SEQUENCE_NAME AMB_INDIKACIJE_SEQ

MIN_VALUE 10000

MAX_VALUE 9999999999999999999999999999

INCREMENT_BY 1

CYCLE_FLAG N

ORDER_FLAG N

CACHE_SIZE 20

LAST_NUMBER 10040

Page 11: Prezentacija Ambulanta "Otok"

TRIGERI

Trigeri koriste sekvence kako bi umetali ID u svaku od tabelaOsim toga trigeri se koriste za umetanje datuma i korisnika koji je umetnuo ili promijenio zapis. Stoga su trigeri generalno isti za sve tabele te ih ima dva po tabeli

Dan je pregled oba trigera za tabelu (EFPU_AMB_PREGLEDI). Prvi triger se aktivira pri insertiranju reda u tabelu .

EFPU_AMB_PREGLEDI_BIR

trigger EFPU_AMB_PREGLEDI_BIR BEFORE INSERT ON EFPU_AMB_PREGLEDI FOR EACH ROW begin :NEW.dat_dod := SYSDATE; :NEW.user_dod := USER; if :NEW.ID is null then SELECT AMB_PREGLEDI_SEQ.NEXTVAL INTO :NEW.ID FROM dual; end if; end;

Page 12: Prezentacija Ambulanta "Otok"

TRIGERI

Drugi se aktivira kod izmjene zapisa u tabeli te je različit od prvog po tome što ne ubacuje novi ID.

EFPU_AMB_PREGLEDI_BUR

trigger EFPU_AMB_PREGLEDI_BUR BEFORE UPDATE ON EFPU_AMB_PREGLEDI FOR EACH ROW begin :NEW.dat_izm := SYSDATE; :NEW.user_izm := USER; end;

Iz priloženog je vidljivo da se vodilo računa o pravilima imenovanja trigera

Page 13: Prezentacija Ambulanta "Otok"

PAKETI I FUNKCIJE

Primjer paketa prikazan je kroz paket na tablicu (EFPU_SIF_OSOBE)Paket se sastoji od dva dijela:

zaglavlja tijela paketa koji sadrži funkcije

EFPU_SIF_OSOBE_P

create or replace

PACKAGE EFPU_SIF_OSOBE_P AS

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

PACKAGE BODY EFPU_SIF_OSOBE_P

AS

FUNCTION UK2ID(

P_OIB IN EFPU_SIF_OSOBE.OIB%TYPE)

RETURN EFPU_SIF_OSOBE.ID%TYPE

IS

V_id EFPU_SIF_OSOBE.id%TYPE;

BEGIN

SELECT t.id INTO v_id FROM efpu_sif_osobe t WHERE t.oib=p_oib;

RETURN v_id;

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;

Page 14: Prezentacija Ambulanta "Otok"

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 SMJER.

Potrebno je kroz aplikaciju voditi računa da se ne 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.

Page 15: Prezentacija Ambulanta "Otok"

Ostala pravila vezana su za vanjske ključeve kojima se osigurava referentni integritet na nivou baze i jedinstvene ključeve kojima se osigurava integritet šifrarnika kao na primjeru iz tabele (EFPU_AMB_INDIKACIJE) gdje je jedinstveni ključ korišten na polju ŠIFRA. Isti je postupak primijenjen na svim šifrarnicima..

INDEX _OW NE R INDEX _NA ME TABLE _OW NE R TABLE _NA ME COL UMN_NA ME

EFPU_AMBULANTA EFPU_AMB_SIF_INDIKACIJE_UK EFPU_AMBULANTA EFPU_AMB_INDIKACIJE SIFRA

Page 16: Prezentacija Ambulanta "Otok"

SQL UPIT Broj 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_TRAJANJEFROM efpu_sif_osobe o, efpu_amb_pregledi pWHERE p.osoba_id = o.idAND p.datum_vrijeme BETWEEN '21.06.2012' AND '27.06.2012'GROUP BY o.ime, o.prezime, o.tip_osobe, p.datum_vrijemeORDER BY 4;

Page 17: Prezentacija Ambulanta "Otok"

Korištena je funkcija AVG kojom se dobiva prosjek trajanja pregleda

Page 18: Prezentacija Ambulanta "Otok"

PREGLEDI_PO_DANU_SATUSELECT 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_vrijeme,'hh24')+1))),-2)||' sati' AS DATUM_SAT FROM efpu_amb_pregledi tGROUP 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_vrijeme,'hh24')+1))),-2)||' sati'ORDER BY 2;

SQL UPIT Broj pregledanih osoba po satima u danu

Page 19: Prezentacija Ambulanta "Otok"

upit koji je dorađen da pruži ljepši ispis (od toliko do toliko sati)Rezultat upita je izlistaj na slici

Page 20: Prezentacija Ambulanta "Otok"

SATI_U_AMB_PO_OJ

SQL UPIT Broj sati boravka u ambulanti po OJ (po odjelu)

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 OJFROM efpu_sif_osobe o, efpu_amb_pregledi p, efpu_sif_odjeli odWHERE p.osoba_id = o.idAND o.odjel_id = od.idGROUP BY od.nazivORDER BY 1 desc,2,3;

Page 21: Prezentacija Ambulanta "Otok"

U ovom upitu sumira se trajanje pregleda po OJ (odjelu). Substring je korišten kako bi se ukupan broj minuta pretvorio u sate i ostatak minuta radi ljepšeg ispisaKao rezultat daje izlistaj na slici

Page 22: Prezentacija Ambulanta "Otok"

BR_PAC_PO_OJ_I_IND

SQL UPIT Broj radnika/kooperanata po OJ prema indikacijama u periodu

SELECT COUNT(*) AS BR_RAD,i.opis AS INDIKACIJA,od.naziv AS OJFROM efpu_amb_pregledi p, efpu_amb_indikacije i, efpu_amb_pregledi_indikacije pi, efpu_sif_odjeli od, efpu_sif_osobe oWHERE p.id = pi.pregled_idAND i.id= pi.indikacija_idAND p.osoba_id = o.idAND o.odjel_id = od.idAND p.datum_vrijeme between '21.06.12' and '27.06.12'GROUP BY opis,nazivORDER BY 1 desc;

Page 23: Prezentacija Ambulanta "Otok"

Jednostavan upit koji zbraja posjete ambulanti prema indikacijama i OJ (odjelu)Kao rezultat daje izlistaj na slici

Page 24: Prezentacija Ambulanta "Otok"

SQL UPITPregled utroška sanitetskog materijala (s podacima iz pregleda ako postoji veza) za

period

UTROSAK_PO _PREGLEDU

SELECT ami.opis AS INDIKACIJA, am.opis AS MATERIJAL, sum(ams.kolicina) AS KOLIČINA, amj.oznaka AS MJ, to_char(ampr.datum_vrijeme,'dd.mm.yyyy') AS DATUM_PREGLEDA, oso.prezime AS PREZIME, oso.ime AS IMEFROM 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.idAND ams.materijal_id = am.idAND ams.promet_id = amp.idAND amp.smjer = 0AND amp.pregled_id = ampr.idAND ampi.pregled_id = ampr.idAND ampi.indikacija_id = ami.idAND ampr.osoba_id = oso_idAND 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_vrijemeORDER BY 5;

Page 25: Prezentacija Ambulanta "Otok"

Upit prikazuje utrošak sanitetskog materijala po količini i u periodu, te vezu prema pregledu u kojem je utrošen

Page 26: Prezentacija Ambulanta "Otok"

ZALIHA_PO_SIFRI

SQL UPITZaliha sanitetskog materijala po šifri i nazivu

SELECT M.opis AS MATERIJAL, M.sifra AS SIFRA, COALESCE(ulaz.kol, 0) - COALESCE(izlaz.kol1, 0) AS ZALIHA, MJ.oznaka AS MJFROM 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.MAT1WHERE M.mj_id = MJ.id;

Page 27: Prezentacija Ambulanta "Otok"

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“

Ovaj upit je ostvaren spajanjem više tablica preko left outer joina te upotrebom dva pod selecta kojima je sumirana nabava kao ulaz te rashod kao izlaz te je oduzimanjem izlaza od ulaza dobivena zaliha.

Page 28: Prezentacija Ambulanta "Otok"

SIGURNOSTKreiranje 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;COMMIT;GRANT ALL PRIVILEGES TO Ambulanta_ADM;COMMIT;

Drugi naziva Ambulanta_UPIT treba ima samo prava da vidi podatke u bazi te da može raditi upite.

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;

Petlja u posljednjoj naredbi olakšava nam davanje prava „select“ na sve tabele u bazi, kako ih ne bi morali davati jednu po jednu. Kreirani korisnici su testirani i rade kako je zamišljeno.

Page 29: Prezentacija Ambulanta "Otok"

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 funkcionalnoposlužilo je radi lakšeg unosa podataka u bazu.

Page 30: Prezentacija Ambulanta "Otok"

Početni prozor aplikacije

Slike iz aplikacije

Page 31: Prezentacija Ambulanta "Otok"

ZAKLJUČAKProjekt je nastao timskim radom. Iako u početku članovi tima nisu bili osposobljeni za samostalni rad unutar zadatka koji im je bio dodijeljen međusobnom suradnjom i zajedničkim sastancima došlo se do konačnog rezultata i otklonjene su sve početne nejasnoće. Sastanci su održani u više navrata, a tijek izrade projekta je podijeljen 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.

Page 32: Prezentacija Ambulanta "Otok"

Nakon korektno obavljenih podzadataka druge faze timovi se spajaju i zajednički se generiraju upiti. Prije izrade upita u bazu su uneseni zadani generički podaci. Izrada upita oduzela je najviše vremena zbog nedovoljnog poznavanja SQL naredbi od strane članova tima. Ipak, uz mnogobrojne sastanke, instrukcije i nadopune prethodno stečenog znanja dolazi se do kvalitetnog rješ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.

Page 33: Prezentacija Ambulanta "Otok"

Smatramo da je projekt uspješno odrađen i da je stvorena funkcionalna baza podataka za praćenje rada zdravstvene ambulante.

HVALA NA POZORNOSTIIMATE LI PITANJA?