oracle apex development u ehealth domeni · –imali smo slu čaj da smo na istom workspaceu imali...
TRANSCRIPT
Oracle APEX development u development u eHealth domeni
Krešimir Perak
1. Zašto APEX?
2. Ukratko o ETK BIS-u
2.1 Tehnička arhitektura
2.2 Arhitektura funkcija
2.3 Look&Feel
AGENDA
Ericsson Internal | 2012-03-22 | Page
2.3 Look&Feel
3. Izdvojeni moduli:
3.1 Master Data Management
3.2 Metastrukture podataka
3.3 Multilanguage
4. Good practice
›Postojeći legacy (Oracle FORMS)
›Tehnološki razlozi
›Podrška – najveći Oracle community
1. Zašto apex?
Ericsson Internal | 2012-03-22 | Page
›Podrška – najveći Oracle community
› Dizajniran za integracijuintegraciju administrativnih, financijskih i kliničkih informacijainformacija
›› ModularanModularan dizajn
›› IntegriraIntegrira sve procese u instituciji,
›› CentraliziraCentralizira sve medicinske i administrativne podatke vezane uz pacijenta
2. UKRATKO O ETK BIS-u
Ericsson Internal | 2012-03-22 | Page
›› OsiguravaOsigurava jednostavniju komunikaciju
›› PodržavaPodržava svakodnevne procese donošenja odluka procese donošenja odluka kod liječenja
›› Izbjegavaju se nepotrebni papirnati dokumentiIzbjegavaju se nepotrebni papirnati dokumenti
› Jaki temelji za automatizacijuautomatizaciju zdravstvenih procesa
›› Različiti moduli sustava Različiti moduli sustava raspoloživi za implementaciju
3 Tier Architecture
ORDS
Oracle APEX
Schemas
2.1 tehnička arhitektura
Ericsson Internal | 2012-03-22 | Page
Browser Mid Tier Database Tier
Tomcat(v7)
Oracle APEX(4.2.6)
Oracle Database(11.2.0.4)
Ho
sp
ita
l a
nd
AN
D
Patient Management
Resource Management
ERICSSON ERICSSON ERICSSON ERICSSON ERICSSON ERICSSON ERICSSON ERICSSON Hospital Information SystemHospital Information SystemHospital Information SystemHospital Information SystemHospital Information SystemHospital Information SystemHospital Information SystemHospital Information System
HL7 Integration
platformPIS
2.2 arhitektura funkcija
Ericsson Internal | 2012-03-22 | Page
Ho
sp
ita
l a
nd
c
lin
ica
lR
ep
or
tin
gA
ND
B
I
ElectronicMedicalrecord
In-PatientCare
AMBULATORYcare
MDM – Master data management
LIS RIS
Nutritionmanagement
Microbiologypathology,
TRANSFUSION,PHARMACY …
CEZIH, eNaručivanje
2.2 arhitektura funkcija
Izdvojene funkcije:Izdvojene funkcije:
›› NeporecivostNeporecivost dokumenata – nalaza, otpusnih pisama, …
›› PraćenjePraćenje svih aktivnosti nad objektima zaštite (vrijeme + korisnik) – unos, sve promjene, brisanje, a nad unaprijed definiranim „osjetljivim“ objektima zaštite praćenje svih pristupa (dohvata za čitanje),
Ericsson Internal | 2012-03-22 | Page
› Mogućnost stavljanja više razina privatnosti više razina privatnosti na nalaz i otp. pisma
›› PatientPatient ConsentConsent – pristanak bolesnika na uvid u medicinske podatke
› Mogućnost konfiguriranjakonfiguriranja nalaza i otpusnog pisma po org. jedinici
›› UtilityUtility funkcijefunkcije – predlošci liječnika, kopiranje prethodnih nalaza, mogućnost povlačenja dijelova prethodnih nalaza ili otp. Pisama, uključivanje nalaza dijagnostike, …
2.3 Look&feel
I. Početna stranica
Ericsson Internal | 2012-03-22 | Page
2.3 Look&feel
II. Glavni menu
Ericsson Internal | 2012-03-22 | Page
2.3 Look&feel
III. Radna lista liječnika
Ericsson Internal | 2012-03-22 | Page
2.3 Look&feel
IV. Dashboard pacijenta
Ericsson Internal | 2012-03-22 | Page
2.3 Look&feel
V. Obrada pacijenta
Ericsson Internal | 2012-03-22 | Page
2.3 Look&feel
VI. Otpusno pismo
Ericsson Internal | 2012-03-22 | Page
3.1 3.1 MasterMaster Data ManagementData Management
› Platforma za upravljanje pravima, zaposlenicima i organizacijom na kojoj leži kompletan BIS
› Zasnovana na konceptu poslovnih funkcija – svaka funkcionalnost sustava koju treba kontrolirati nalazi se u ovom repozitoriju
› Tipovi poslovnih funkcija – Menu, Aplikativna, Infrastrukturna, Report, GUI
3. Izdvojeni MODULI
Ericsson Internal | 2012-03-22 | Page
› Tipovi poslovnih funkcija – Menu, Aplikativna, Infrastrukturna, Report, GUI
› Pravo na poslovnu funkciju moguće je dodijeliti ili oduzeti:
– Roli
– Organizacijskoj jedinici
– Zaposleniku
– Zaposleniku u org. jedinici
– Radnom mjestu
– Radnom mjestu u org. jedinici
3.1 3.1 MasterMaster Data ManagementData Management
3. Izdvojeni MODULI
Ericsson Internal | 2012-03-22 | Page
3.2 3.2 MetastruktureMetastrukture podatakapodataka
› Zdravstveni sustav je vrlo bogat različitim vrstama dokumentacije i drugim strukturama čiji je životni ciklus vrlo dinamičan i koja je vrlo podložna promjenama
› Omogućeno korisnicima da sami kreiraju predloške svojih dokumenata i ostalih podatkovnih struktura
› Podržane funkcionalnosti:
3. Izdvojeni MODULI
Ericsson Internal | 2012-03-22 | Page
› Podržane funkcionalnosti:
I. Upravljanje različitim podatkovnim strukturama – obrasci (prijave, potvrde, suglasnosti, zahtjevi), upitnici, mjerenja (osnovna, specifična), dodatni podaci nalaza i otp. pisma
II. Definiranje vrste podataka za svaku strukturu – tip podatka, dužina, obvezatnost, predefinirana vrijednost, domenske vrijednosti, link na postojeći šifarnik, …
III. Kreiranje podstruktura (detail) za pojedinu strukturu sa funkcionalnostima I i II
IV. Upravljanje životnim ciklusom svake podatkovne strukture
V. Upravljanje pravima na korištenje pojedine podatkovne strukture
VI. Multilanguage podrška
3.2 3.2 MetastruktureMetastrukture podatakapodataka
3. Izdvojeni MODULI
Ericsson Internal | 2012-03-22 | Page
3.2 3.2 MetastruktureMetastrukture podatakapodataka
3. Izdvojeni MODULITabularna forma leži na view čiji source leži na funkciji:IF p_oznaka_tipa IN ('VARCHAR', 'INTEGER', 'REAL') THEN
SELECT COUNT (*) INTO v_domena
FROM TBS_PODACI_VRSTE_DOMENA_VW a
WHERE a.id_vrste_podatka = p_id_vrste_podatka
AND TRUNC (SYSDATE) BETWEEN vrijedi_od AND
NVL (vrijedi_do, TRUNC (SYSDATE))
AND a.status = 'D';
IF v_domena > 0 THEN
v_html := APEX_ITEM.select_list_from_query (……..);
ELSIF p_upit_query IS NOT NULL AND
Ericsson Internal | 2012-03-22 | Page
ELSIF p_upit_query IS NOT NULL AND
NVL (p_prikazi_lov, 'N') = 'D' THEN
v_html := APEX_ITEM.POPUPKEY_FROM_QUERY (…);
ELSIF p_upit_query IS NOT NULL AND
NVL (p_prikazi_lov, 'N') = 'N' THEN
v_html := APEX_ITEM.SELECT_LIST_FROM_QUERY (…..);
ELSIF p_duzina >= 1000 THEN
v_html := APEX_ITEM.TEXTAREA (…..);
ELSIF p_duzina >= 100 THEN
v_html := APEX_ITEM.text (…….);
ELSE
v_html := APEX_ITEM.text (………..);
END IF;
ELSIF p_oznaka_tipa IN ('DATE') THEN
v_html := APEX_ITEM.date_popup (….);
ELSIF p_oznaka_tipa IN ('TIME') THEN
v_html := APEX_ITEM.date_popup (….);
END IF;
3.3 3.3 MultilanguageMultilanguage
› Vlastiti modul za prijevod koji direktno update-a APEX repozitorij -wwv_flow_translatable_text$
› Izbjegli smo manipulaciju i prevođenje XLIFF dokumenta
› Nit vodilja: jednom dohvatiti tekst prijevoda za jedan tip objekta jedan tip objekta (ne za sve tipove) i prevesti ga koliko god puta se ponavlja
3. Izdvojeni MODULI
Ericsson Internal | 2012-03-22 | Page
tipove) i prevesti ga koliko god puta se ponavlja
› Još neki razlozi:
– Nismo ovisni o translate_id koji su na aplikaciji s drugim ID drugačiji nego na originalnoj aplikaciji
– Imali smo slučaj da smo na istom workspaceu imali 2 verzije aplikacije – preveli smo jednu aplikaciju, nije bilo načina taj isti prijevod staviti i na drugu verziju
– Source regije, npr. report, ako ima kolonu u koju smo konkatenirali vrijednosti 3 polja sa svojim labelama, ne može se prevesti – export u XLIFF ovo ne ulovi
3.3 3.3 MultilanguageMultilanguage
3. Izdvojeni MODULI
• Seed aplikacije• Prebacivanje iz APEX
repozitorija u naš• Procedura
(aplikacation_id,
• Svi novi kandidati za prijevod imaju poseban flag i prolaze selekciju da li
2. Markiranje novih
4. Update & Publish
Ericsson Internal | 2012-03-22 | Page
(aplikacation_id, language_code)
• Punimo po svim tipovima i vrstama transl. objekata
• Ako prijevod postoji automatski se prevodi za sve nove objekte
1. Punjenje repozitorija
flag i prolaze selekciju da li ih prevoditi
• Ukoliko Y, prevode se i ulaze u repozitorij
• Ukoliko N, isto ulaze u repozitorij tako da sustav pamti da ih ubuduće ne prevodi (za ISTI tip)
• Prijevod kroz aplikaciju
3. Prijevod
• Update APEX repozitorija• Publish translate aplikacije
3.3 3.3 MultilanguageMultilanguage
3. Izdvojeni MODULI
Ericsson Internal | 2012-03-22 | Page
› Postavljena pravila programiranja i razvoja sustava – blizu 300 stranica
› Svi reporti na view-ima
› Sav PL/SQL u bazi i package-ima, što manje koda na stranicama
– Ovako izbjegavamo redundantnost koda, što je ključno
– Kod je reusabilan
› Package-i podijeljeni prema funkcionalnim cjelinama – dakle sloj poslovne logike
4. GOOD practice
Ericsson Internal | 2012-03-22 | Page
› Package-i podijeljeni prema funkcionalnim cjelinama – dakle sloj poslovne logike je unutar baze, ali je izdvojen
› Script based deployment – od developmenta, prema testu i produkciji
› Session State Protection
› Pazili smo na korištenje dynamic actiona – kod je vidljiv na stranici
› Nismo koristili mnogo plug-ina – selektivni pristup