ˇ ´ UCEN ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
´ ´I V PROSTRED ˇ ´I METODY PRO PODPORU ROZHODOVAN ´ ˇ ´ APLIKACE LEKA RSK E
´ DIPLOMOVA´ PRACE MASTER’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2009
´ Bc. PETR MRAZEK
ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
´ ´I V PROSTRED ˇ ´I METODY PRO PODPORU ROZHODOVAN ´ ˇ ´ APLIKACE LEKA RSK E DECISION SUPPORT METHODS IN A MEDICAL APPLICATION
´ DIPLOMOVA´ PRACE MASTER’S THESIS
´ AUTOR PRACE
´ Bc. PETR MRAZEK
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2009
Ing. VLADIM´IR BART´IK, Ph.D.
Abstrakt Diplomov´ a pr´ ace se zab´ yv´ a rozˇs´ıˇren´ım st´avaj´ıc´ı l´ekaˇrsk´e aplikace o prostˇredky pro podporu rozhodov´ an´ı. Prvn´ı ˇc´ ast pr´ ace je zamˇeˇrena na obecnou problematiku datov´ ych sklad˚ u, OLAP a dolov´ an´ı dat. Druh´ a ˇc´ ast se vˇenuje samotn´emu n´avrhu a implementaci rozˇs´ıˇren´ı v podobˇe samostatn´e aplikace umoˇzn ˇuj´ıc´ı prov´adˇen´ı OLAP anal´ yz nad nashrom´aˇzdˇen´ ymi zdravotnick´ ymi daty.
Kl´ıˇ cov´ a slova C++, datov´ y sklad, OLAP, dolov´an´ı dat, MySQL, XML
Abstract The diploma thesis is dealing with the present medical application extension by the means for decision support. The first part of the work is focused on the general problem of data warehouses, OLAP and the data mining. The second part attends to the very proposal and implementation of the extension in the form of the very application, which enables executing OLAP analysis upon the gathered medical data.
Keywords C++, data warehouse, OLAP, data mining, MySQL, XML
Citace Petr Mr´ azek: Metody pro podporu rozhodov´an´ı v prostˇred´ı l´ekaˇrsk´e aplikace, diplomov´ a pr´ace, Brno, FIT VUT v Brnˇe, 2009
Metody pro podporu rozhodov´ an´ı v prostˇ red´ı l´ ekaˇ rsk´ e aplikace Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto diplomovou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing. Vladim´ıra Bart´ıka, Ph.D. ....................... Petr Mr´azek 18. kvˇetna 2009
Podˇ ekov´ an´ı T´ımto bych r´ ad podˇekoval MUDr. Tom´aˇsi Fabianovi za jeho odbornou pomoc, bez kter´e by tato pr´ ace nemohla vzniknout.
c Petr Mr´
azek, 2009. Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ 1 Uvod
3
2 Datov´ e sklady 2.1 Datov´ y trh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Zp˚ usoby budov´ an´ı datov´eho skladu . . . . . . . . . . . . . . . 2.2.1 Metoda velk´eho tˇresku . . . . . . . . . . . . . . . . . . 2.2.2 Pˇr´ır˚ ustkov´ a metoda . . . . . . . . . . . . . . . . . . . 2.3 Proces ETL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Porovn´ an´ı rozd´ıl˚ u mezi datov´ ym skladem a operaˇcn´ı datab´az´ı
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
4 4 4 5 5 6 7
´ 3 Uvod do problematiky OLAP 3.1 Multidimenzion´ aln´ı datov´ y model . . . . . . . . . . . . . . 3.1.1 Srovn´ an´ı relaˇcn´ıho a multidimenzion´aln´ıho modelu 3.2 Operace nad OLAP kostkou . . . . . . . . . . . . . . . . . 3.3 Typy OLAP . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Sch´emata tabulek dimenz´ı . . . . . . . . . . . . . . . . . . 3.4.1 Sch´ema hvˇezdy . . . . . . . . . . . . . . . . . . . . 3.4.2 Sch´ema snˇehov´e vloˇcky . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
8 9 10 11 11 12 12 12
´ 4 Uvod do problematiky dolov´ an´ı dat 4.1 Asociaˇcn´ı pravidla a frekventovan´e mnoˇziny . . . 4.1.1 Typy asociaˇcn´ıch pravidel . . . . . . . . . 4.2 Klasifikace a predikce . . . . . . . . . . . . . . . 4.2.1 Klasifikace pomoc´ı rozhodovac´ıch strom˚ u 4.2.2 Bayesovsk´ a klasifikace . . . . . . . . . . . 4.2.3 Klasifikace pomoc´ı neuronov´ ych s´ıt´ı . . . 4.3 Shlukov´ a anal´ yza . . . . . . . . . . . . . . . . . . 4.3.1 Typy shlukovac´ıch metod . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
14 14 14 15 15 15 16 16 16
5 N´ avrh rozˇ s´ıˇ ren´ı existuj´ıc´ı l´ ekaˇ rsk´ e aplikace ´ 5.1 Uvod . . . . . . . . . . . . . . . . . . . . . . 5.2 Pojem d´ avka . . . . . . . . . . . . . . . . . 5.2.1 Definice datov´eho rozhran´ı d´avky . . 5.2.2 D´ avka ambulantn´ı sm´ıˇsen´a . . . . . 5.3 Poˇzadavky kladen´e na aplikaci . . . . . . . 5.3.1 Analyzovan´ a data . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
18 18 18 19 19 21 22
1
. . . . . .
. . . . . .
. . . . . .
6 Implementace datov´ eho skladu 6.1 Volba datab´ azov´eho stroje . . 6.2 Proces ETL . . . . . . . . . . 6.3 Struktura datov´eho skladu . . ˇ n´ 6.3.1 Dimenze Cas avˇstˇevy 6.3.2 Dimenze Pacient . . . ˇ ıslo pojiˇstˇence . . . . 6.3.3 C´ 6.3.4 Dimenze Vˇek pacienta 6.3.5 Dimenze V´ ykon . . . . 6.3.6 Dimenze Pojiˇst’ovna . 6.3.7 Dimenze D´ avka . . . . 6.3.8 Dimenze Diagn´ oza . . 6.3.9 Fakta . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
23 23 23 24 25 27 28 30 31 32 32 33 33
7 Implementace aplikace MedOLAP 7.1 Pouˇzit´e v´ yvojov´e prostˇred´ı . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1 Programovac´ı jazyk C++ . . . . . . . . . . . . . . . . . . . . 7.2 Podporovan´e pˇr´ıstupy aplikace k datov´emu skladu . . . . . . . . . . 7.2.1 Vzd´ alen´ y pˇr´ıstup . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.2 Lok´ aln´ı pˇr´ıstup . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.3 Dialog konfigurace pˇripojen´ı . . . . . . . . . . . . . . . . . . . 7.3 Importov´ an´ı ˇc´ıseln´ık˚ u VZP do datov´eho skladu . . . . . . . . . . . . 7.3.1 Form´ at ˇc´ıseln´ık˚ u dod´avan´ ych VZP . . . . . . . . . . . . . . . 7.3.2 Konfigurace komponenty . . . . . . . . . . . . . . . . . . . . 7.3.3 Postup importov´ an´ı z´aznam˚ u z ˇc´ıseln´ıku do datov´eho skladu 7.4 Import d´ avek do datov´eho skladu . . . . . . . . . . . . . . . . . . . . 7.4.1 Dialog pro importov´an´ı d´avek do datov´eho skladu . . . . . . 7.5 OLAP tabulka a podporovan´e operace nad datovou kostkou . . . . . 7.5.1 Podpora OLAP operace Drill down . . . . . . . . . . . . . . . 7.5.2 Podpora OLAP operace Roll up . . . . . . . . . . . . . . . . 7.5.3 Podpora OLAP operace Pivoting . . . . . . . . . . . . . . . . 7.5.4 Podpora OLAP operac´ı Slice & Dice . . . . . . . . . . . . . . 7.6 Pˇrevod OLAP pohledu na dotaz SQL . . . . . . . . . . . . . . . . . 7.6.1 Konfigurace transformaˇcn´ı komponenty . . . . . . . . . . . . 7.7 Spr´ ava importovan´ ych d´ avek . . . . . . . . . . . . . . . . . . . . . . 7.8 Persistence vytvoˇren´ ych OLAP pohled˚ u . . . . . . . . . . . . . . . . 7.8.1 Implementace lok´aln´ıho uloˇziˇstˇe pohled˚ u. . . . . . . . . . . . 7.8.2 Jazyk XML jako prostˇredek pro uloˇzen´ı pohledu . . . . . . . 7.8.3 Uˇzivatelsk´e rozhran´ı pro pr´aci s lok´aln´ım uloˇziˇstˇem . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
35 35 36 37 37 38 39 39 40 40 41 41 42 42 45 45 45 45 49 49 51 51 53 53 55
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
8 Z´ avˇ er
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
57
2
Kapitola 1
´ Uvod Vˇetˇsina l´ekaˇr˚ u vyuˇz´ıv´ a k provozov´an´ı sv´e praxe nˇekter´ y z dostupn´ ych softwarov´ ych produkt˚ u urˇcen´ ych k veden´ı jejich odborn´e agendy. Tyto produkty ovˇsem ve vˇetˇsinˇe pˇr´ıpad˚ u nab´ızej´ı jen velmi omezen´e moˇznosti anal´ yzy nad zdravotnick´ ymi daty, kter´a jsou tˇemito produkty spravov´ ana. Omezuj´ı se jen na poskytnut´ı z´akladn´ıch statistick´ ych report˚ u jako je mnoˇzstv´ı v´ ykon˚ u proveden´ ych za dan´e obdob´ı, mnoˇzstv´ı z´ıskan´ ych bod˚ u, nejˇcastˇejˇs´ı v´ yskyt diagn´oz, celkov´ y poˇcet pacient˚ u v kartot´ece a podobnˇe. C´ılem t´eto diplomov´e pr´ ace je tedy vytvoˇrit pro tyto produkty univerz´aln´ı rozˇs´ıˇren´ı, kter´e by l´ekaˇr˚ um v soukrom´ ych ambulantn´ıch ordinac´ıch umoˇznilo prov´adˇet pokroˇcil´e anal´ yzy nad zdravotnick´ ymi daty, kter´ a bˇehem provozov´an´ı sv´e praxe nashrom´aˇzdili. V prvn´ı ˇc´asti pr´ace se budeme nejprve zab´ yvat obecnou problematikou datov´ ych sklad˚ u, prostˇredk˚ u OLAP a dolov´ an´ı dat. Druh´ a ˇc´ ast se vˇenuje jiˇz samotn´emu n´avrhu a implementaci rozˇs´ıˇren´ı v podobˇe samostatn´e aplikace, kter´a je urˇcena k analyzov´an´ı dat nad datov´ ym skladem prostˇrednictv´ım technologie OLAP. Vybudovan´ y datov´ y sklad bude tvoˇren zdravotnick´ ymi daty extrahovan´ ymi z datov´ ych soubor˚ u obsahuj´ıc´ıch detailn´ı informace o vˇsech zdravotn´ıch v´ ykonech proveden´ ych na jednotliv´ ych pacientech, kter´e l´ekaˇr pˇredkl´ad´a za dan´e z´ uˇctovac´ı obdob´ı jednotliv´ ym pojiˇst’ovn´ am k proplacen´ı. Tyto d´ avky tedy pˇredstavuj´ı z hlediska anal´ yzy pomˇernˇe cenn´ y zdroj informac´ı o chodu dan´eho zdravotnick´eho zaˇr´ızen´ı. Prostˇrednictv´ım implementovan´ ym OLAP operac´ı pak bude l´ekaˇri umoˇznˇeno na tyto data nahl´ıˇzet z r˚ uzn´ ych pohled˚ u pˇri r˚ uzn´ ych u ´rovn´ıch abstrakce, d´ıky ˇcemuˇz si bude schopen uˇcinit zpˇetnˇe detailn´ı obraz o dosavadn´ım provozu sv´e l´ekaˇrsk´e praxe. Na z´avˇer budou shrnuty dosaˇzen´e v´ ysledky a nast´ınˇeno dalˇs´ı moˇzn´e pokraˇcov´an´ı v projektu.
3
Kapitola 2
Datov´ e sklady Datov´ y sklad [1] je moˇzn´e ch´ apat jako strukturovan´e u ´loˇziˇstˇe dat, kter´e slouˇz´ı k ukl´ad´ an´ı informaˇcn´ıho bohatstv´ı organizac´ı za co moˇzn´a nejvˇetˇs´ı ˇcasov´e obdob´ı. N´ıˇze jsou uvedeny poˇzadavky na datov´ y sklad podle Billa Inmona: 1. Subjektov´ a orientace - do datov´eho skladu jsou zan´aˇsena data sp´ıˇse podle pˇredmˇetu z´ ajmu, neˇz podle konkr´etn´ı aplikace, ve kter´e byla tato data vytvoˇrena. 2. Integrovanost - datov´ y sklad mus´ı b´ yt integrovan´ y a jednotn´ y. Data t´ ykaj´ıc´ı se konkr´etn´ıho pˇredmˇetu jsou do skladu uloˇzena pouze jednou. Data pˇrich´azej´ı do datov´eho skladu z nekonzistentn´ıho a neintegrovan´eho operaˇcn´ıho prostˇred´ı, proto mus´ı b´ yt tato data v etapˇe pˇr´ıpravy a zaveden´ı upravena, vyˇciˇstˇena a sjednocena. ˇ 3. Casov´ a variabilita - data jsou do datov´eho skladu zan´aˇsena jako s´erie sn´ımk˚ u, kde kaˇzd´ y pˇredstavuje jist´ y ˇcasov´ yu ´sek. V operaˇcn´ım datab´azov´em prostˇred´ı jsou data ukl´ ad´ ana za kratˇs´ı ˇcasov´e obdob´ı dn´ı, maxim´alnˇe mˇes´ıc˚ u, zat´ımco v datov´em skladu jsou data vˇetˇsinou i za nˇekolik let chodu organizace. 4. Nemˇ ennost - Na rozd´ıl od operaˇcn´ıch transakˇcn´ıch datab´az´ı, kde jsou data vkl´ad´ana, modifikov´ ana i maz´ ana, v datov´em skladu se vˇetˇsinou nemˇen´ı ani neodstraˇ nuj´ı, jen se v pravideln´ ych intervalech pˇrid´avaj´ı novˇe z´ıskan´a data.
2.1
Datov´ y trh
Z hlediska investic i ˇcasu je budov´an´ı datov´eho skladu pomˇernˇe n´aroˇcn´ y projekt a proto se v nˇekter´ ych pˇr´ıpadech pˇristupuje k budov´an´ı datov´eho skladu po menˇs´ıch ˇc´astech datov´ ych trz´ıch. Datov´ y trh lze tedy ch´apat jako podmnoˇzinu datov´eho skladu, kter´a je urˇcena pro menˇs´ı organizaˇcn´ı ˇc´ asti organizace (napˇr. prodej, marketing atd.). Datov´e trhy mohou vzniknout i opaˇcn´ ym zp˚ usobem, kdy je nejprve vybudov´an centr´aln´ı datov´ y sklad a z nˇej je pak vytvoˇreno nˇekolik datov´ ych trh˚ u. V´ ysledkem jsou pak menˇs´ı n´aroky na provoz au ´drˇzbu.
2.2
Zp˚ usoby budov´ an´ı datov´ eho skladu
Existuj´ı dvˇe nejˇcastˇeji pouˇz´ıvan´e metody budov´an´ı datov´eho skladu:
4
Obr´ azek 2.1: Architektura datov´eho skladu s datov´ ymi trhy
• Metoda velk´eho tˇresku • Pˇr´ır˚ ustkov´ a metoda
2.2.1
Metoda velk´ eho tˇ resku
Tato metoda stav´ı na pˇredpokladu, ˇze je moˇzn´e realizovat implementaci datov´eho skladu v r´amci jedin´eho projektu. Metoda je sloˇzena ze tˇr´ı n´asleduj´ıc´ıch etap: 1. Anal´ yza poˇ zadavk˚ u organizace 2. Vytvoˇ ren´ı datov´ eho skladu 3. Vytvoˇ ren´ı pˇ r´ıstupu k datov´ emu skladu bud’ pˇ r´ımo nebo pomoc´ı datov´ ych trh˚ u. Jedinou v´ yhodou t´eto metody je fakt, ˇze je moˇzn´e cel´ y projektov´ y pl´an vypracovat jeˇstˇe pˇred jeho samotnou realizac´ı. Mezi jej´ı hlavn´ı nev´ yhody naopak patˇr´ı jednak velk´e riziko zmˇeny poˇzadavk˚ u a pomˇernˇe dlouh´a doba, neˇz se dostav´ı prvn´ı v´ ysledky investic.
2.2.2
Pˇ r´ır˚ ustkov´ a metoda
Tato metoda pˇredpokl´ ad´ a budov´an´ı datov´eho skladu po jednotliv´ ych etap´ach - postupnˇe pˇrib´ yvaj´ı nov´ a rozˇs´ıˇren´ı, kter´ a zapadaj´ı do celkov´e architektury datov´eho skladu. Typicky se zaˇc´ın´ a s budov´ an´ım nˇekolika m´alo oblast´ı, kter´e se implementuj´ı ve formˇe rozˇsiˇriteln´eho datov´eho trhu a tento trh je n´ aslednˇe poskytnut koncov´ ym uˇzivatel˚ um. Prvn´ı podsyst´emy tedy zaˇcnou pracovat a pˇrin´ aˇset v´ yhody kr´atk´em ˇcase po spuˇstˇen´ı projektu. Pˇr´ır˚ ustkov´ a metoda se skl´ ad´ a z n´asleduj´ıc´ıch krok˚ u(viz obr´azek 2.2): 1. Strategie - Definov´ an´ı jak kr´atkodob´ ych, tak dlouhodob´ ych c´ıl˚ u strategie zahrnuj´ıc´ıch u ´ˇcel datov´eho skladu, jeho vybudov´an´ı, dokumentaci, ˇskolen´ı uˇzivatel˚ u atd. V t´eto f´ azi je definov´ an i z´ aklad architektury datov´eho skladu organizace. 5
2. Definice - Definov´ an´ı c´ıle a rozsahu pˇr´ır˚ ustkov´eho v´ yvoje. F´aze zahrnuje jak n´avrh architektury datov´eho skladu, tak architekturu technick´ ych prostˇredk˚ u. Vytvoˇr´ı se poˇc´ ateˇcn´ı pˇr´ır˚ ustek, zdokumentuj´ı se zdroje dat a vymez´ı se rozsah kvality tˇechto u ´daj˚ u. 3. Anal´ yza - Z´ısk´ av´ an´ı dat a poˇzadavk˚ u na pˇr´ıstup k dat˚ um, informace o uˇzivatel´ıch skladu, vytvoˇren´ı relaˇcn´ıch a multidimenzion´aln´ıch model˚ u a metadat. 4. N´ avrh - Poˇzadavky, kter´e byly z´ıskan´e bˇehem anal´ yzy jsou transformov´any do detailn´ıch podm´ınek n´ avrhu. 5. Sestaven´ı - Bˇehem t´eto f´ aze se vytvoˇr´ı a otestuj´ı navrˇzen´e datab´azov´e struktury a moduly pro pr´ aci s datov´ ym skladem. 6. Produkce - Datov´ y sklad je nasazen do provozu, zaˇc´ın´a se ˇr´ıdit r˚ ust a spr´ava datov´eho skladu.
Obr´ azek 2.2: Iteraˇcn´ı cyklus pˇr´ır˚ ustkov´e metody
K hlavn´ım v´ yhod´ am t´eto metody patˇr´ı: • rychlejˇ s´ı n´ avratnost vloˇ zen´ ych investic • moˇ znost implementace ˇ sk´ alovateln´ e architektury • tvorba datov´ eho skladu po ˇ c´ astech udrˇ zuje kontinuitu projektu s poˇ zadavky uˇ zivatel˚ u
2.3
Proces ETL
Pot´e, co je datov´ y sklad, ˇci datov´ y trh naimplementov´an, je nutn´e ho naplnit daty. Data jsou vˇetˇsinou um´ıstˇena v r˚ uzn´ ych nehomogenn´ıch operaˇcn´ıch prostˇred´ıch, datab´azov´ ych 6
syst´emech, hardwarov´ ych platform´ach, archivn´ıch syst´emech, podnikov´ ych syst´emech a v r˚ uzn´ ych dokumentech. Kromˇe intern´ıch dat v r´amci organizace je tak´e moˇzn´e z´ıskat data anal´ yzou konkurenˇcn´ıho prostˇred´ı, od obchodn´ıch partner˚ u, z internetu, nebo jejich zakoupen´ım, coˇz samozˇrejmˇe jen zvyˇsuje jejich r˚ uznorodost. Takov´ato data je d˚ uleˇzit´e pˇred zaveden´ım do datov´eho skladu nejdˇr´ıve vyextrahovat, vyˇcistit a pak ve vhodn´e formˇe zav´est do datov´eho skladu. Proces ETL se skl´ ad´ a z n´ asleduj´ıc´ıch tˇr´ı etap: • Extrakce - C´ılem t´eto etapy je z´ısk´an´ı dat z v´ yˇse uveden´ ych zdroj˚ u. Pro extrakci jsou k dispozici r˚ uzn´e n´ astroje a technologie. • Tranformace - Jedn´ a se o soubor u ´kon˚ u, kter´e vedou ke zkvalitnˇen´ı dat z´ıskan´ ych v pˇredchoz´ı etapˇe. Bˇehem t´eto etapy tedy doch´az´ı k sjednocov´an´ı form´atov´an´ı dat, sjednocen´ı pˇriˇrazen´ı datov´ ych typ˚ u, penˇeˇzn´ıch jmen atd. Bˇehem transformace se vˇetˇsinou vyskytuj´ı n´ asleduj´ıc´ı typy probl´em˚ u, kter´e je nutn´e vyˇreˇsit: – chybˇej´ıc´ı hodnoty – duplicitn´ı z´ aznamy – nejednoznaˇcnost dat – nejednoznaˇcnost n´ azv˚ u pojm˚ u – nejednoznaˇcnost penˇeˇzn´ıch mˇen – chybˇej´ıc´ı datum – nejednotnost form´ at˚ u ˇc´ısel a textov´ ych ˇretˇezc˚ u • Zaveden´ı(Loading) - V t´eto posledn´ı f´azi procesu ETL doch´az´ı k samotn´emu fyzick´emu pˇresunut´ı extrahovan´ ych a transformovan´ ych dat do datov´eho skladu.
2.4
Porovn´ an´ı rozd´ıl˚ u mezi datov´ ym skladem a operaˇ cn´ı datab´ az´ı
N´asleduj´ıc´ı tabulka shrnuje rozd´ıly mezi typickou operaˇcn´ı datab´az´ı a datov´ ym skladem.
Vlastnost ˇcas odezvy operace p˚ uvod dat organizace dat velikost zdroje dat ˇcinnosti
Operaˇ cn´ı datab´ aze zlomky vteˇrin aˇz vteˇriny DML 30-60 dn´ı podle aplikace mal´ a aˇz velk´a operaˇcn´ı, intern´ı procesy
7
Datov´ y sklad vteˇriny aˇz hodiny prim´arnˇe jen pro ˇcten´ı s´erie sn´ımk˚ u za ˇcasov´ y okamˇzik podle pˇredmˇetu, ˇcasu, atd. velk´a aˇz velmi velk´a operaˇcn´ı, intern´ı, extern´ı anal´ yza
Kapitola 3
´ Uvod do problematiky OLAP Term´ın OLAP(Online Analytical Processing)[1] zavedl Dr. E. F. Cood k popisu technologie, kter´ a by pomohla pˇreklenout mezery mezi vyuˇzit´ım osobn´ıch poˇc´ıtaˇc˚ u a ˇr´ızen´ım podnikov´ ych dat. N´ıˇze je uvedeno dvan´ act p˚ uvodn´ıch pravidel, kter´e by mˇel splˇ novat OLAP od Dr. E. F. Codda: 1. Multidimenzion´ aln´ı konceptu´ aln´ı pohled - OLAP by mˇel poskytovat uˇzivateli multidimenzion´ aln´ı model odpov´ıdaj´ıc´ı jeho podnikatelsk´ ym potˇreb´am tak, aby takov´ y model mohl vyuˇz´ıvat pro anal´ yzu shrom´aˇzdˇen´ ych dat. 2. Transparentnost - Technologie syst´emu OLAP, podˇr´ızen´a datab´aze a architektura v´ ypoˇctu by mˇely b´ yt pro uˇzivatele transparentn´ı, proto aby mohl naplno vyuˇz´ıvat svoji produktivitu a odbornost pouˇzit´ı front-end n´astroj˚ u a prostˇred´ı.D˚ uleˇzit´a je samozˇrejmˇe i heterogennost vstupn´ıch dat, kterou zajist´ıme v procesu ETL. 3. Dostupnost - Syst´em OLAP by mˇel pˇristupovat jen k tˇem dat˚ um, kter´a jsou potˇrebn´ a pro anal´ yzu. Syst´em by mˇel b´ yt tak´e schopen pˇristupovat ke vˇsem dat˚ um potˇrebn´ ym pro anal´ yzu, nez´ avisle na tom, ze kter´eho heterogenn´ıho podnikov´eho zdroje tato data poch´ azej´ı, jak ˇcasto jsou obnovov´ana a podobnˇe. 4. Konzistentn´ı vykazov´ an´ı - I kdyˇz poˇcet z´aznam˚ u a tedy i velikost datab´az´ı postupem ˇcasu roste, uˇzivatel by nemˇel poznat ˇz´adn´e podstatn´e sn´ıˇzen´ı v´ ykonu. 5. Architektura klient-server - Syst´em OLAP mus´ı odpov´ıdat princip˚ um architektury klient-server s pˇrihl´ednut´ım na maxim´aln´ı cenu a v´ ykon, flexibilitu a interoperabilitu. 6. Generick´ a dimenzionalita - Kaˇzd´a dimenze dat mus´ı b´ yt ekvivalentn´ı ve struktuˇre i operaˇcn´ıch schopnostech. 7. Dynamick´ e oˇ setˇ ren´ı ˇ r´ıdk´ ych matic - Syst´em OLAP by mˇel b´ yt schopen adaptovat svoje fyzick´e sch´ema na konkr´etn´ı analytick´ y model, kter´ y optimalizuje oˇsetˇren´ı ˇr´ıdk´ ych matic, pˇriˇcemˇz dos´ ahne a udrˇz´ı poˇzadovanou u ´roveˇ n v´ ykonu. 8. Podpora pro v´ıce uˇ zivatel˚ u - Syst´em OLAP mus´ı b´ yt schopn´ y podporovat pracovn´ı skupinu uˇzivatel˚ u pracuj´ıc´ıch souˇcasnˇe na konkr´etn´ım modelu.
8
9. Neomezen´ e kˇ r´ıˇ zov´ e dimenzion´ aln´ı operace - Syst´em OLAP mus´ı dok´azat rozeznat dimenzion´ aln´ı hierarchie a automaticky vykonat asociovan´e kumulovan´e kalkulace v r´ amci dimenz´ı a i mezi nimi. 10. Intuitivn´ı manipulace s daty - Pravidlo definuje konsolidovan´e pˇreorientov´an´ı cest na detailn´ı u ´roveˇ n a zpˇet drilldown, drillup. Uˇzivatelsk´e rozhran´ı by mˇelo umoˇzn ˇovat vˇsechny manipulace zp˚ usobem ”uk´azat a klepnout, pˇr´ıpadnˇe zachytit a pˇrem´ıstit”v buˇ nk´ ach kostky. 11. Flexibiln´ı vykazov´ an´ı - Mus´ı existovat schopnost uspoˇr´adat ˇr´adky, sloupce a buˇ nky zp˚ usobem, jenˇz umoˇzn´ı anal´ yzu intuitivn´ı vizu´aln´ı prezentac´ı analytick´ ych sestav. 12. Neomezen´ e dimenze a u ´ rovnˇ e agregace - V z´avislosti na poˇzadavc´ıch podnik´ an´ı muˇze m´ıt analytick´ y model v´ıce dimenz´ı, pˇriˇcemˇz kaˇzd´a z nich muˇze m´ıt v´ıcen´asobn´e hierarchie. Syst´em OLAP by nemˇel zav´adˇet ˇz´adn´e umˇel´e omezen´ı poˇctu dimenz´ı nebo u ´rovn´ı agregace.
3.1
Multidimenzion´ aln´ı datov´ y model
Multidimenzion´ aln´ı datov´ y model je moˇzn´e zobrazit ve formˇe v´ıcerozmˇern´e kostky. Takovou kostku lze pak ch´ apat jako jist´ y ekvivalent tabulky v relaˇcn´ı datab´azi. Kaˇzd´a kostka je sloˇzena z nˇekolika dimenz´ı. Dimenze obsahuj´ı organizaˇcnˇe nebo logicky hierarchicky uspoˇr´ adan´ a data(obr´ azek 3.1). V podstatˇe se jedn´a o textov´e popisy obchodov´an´ı.
Obr´ azek 3.1: Pˇr´ıklad hierarchick´ ych u ´rovn´ı pro dimenze ˇcas, produkt a lokalita Data(oznaˇcovan´ a jako fakta) se v kostce nach´azej´ı na pr˚ useˇc´ıc´ıch jednotliv´ ych dimenz´ı. Fakta jsou numerick´e mˇern´e jednotky obchodov´an´ı pˇredstavuj´ıc´ı mnoˇzstv´ı, na jehoˇz z´akladˇe se analyzuj´ı vztahy mezi dimenzemi. Pomoc´ı vhodnˇe zvolen´ ych kombinac´ı dimenz´ı a u ´rovn´ı jejich abstrakce lze z´ıskat informace napˇr. o celkov´em objemu prodeje za jist´e ˇcasov´e obdob´ı, zjistit, jak´e zboˇz´ı ˇslo v jednotliv´ ych obdob´ıch nejv´ıce na odbyt, prodej zboˇz´ı v r˚ uzn´ ych lokalit´ach atd. Pro v´ ypoˇcet OLAP kostek je nutn´e prov´adˇet velk´e mnoˇzstv´ı v´ ypoˇct˚ u a to t´emˇeˇr v re´ aln´em ˇcase. Uved’me si jednoduch´ y pˇr´ıklad tˇr´ıdimenzion´aln´ı datov´e kostky(obr´azek 3.2). Tato kostka obsahuje n´ asleduj´ıc´ı dimenze:
9
• ˇcas • lokalita • produkt
Obr´ azek 3.2: Pˇr´ıklad tˇr´ıdimenzion´aln´ı datov´e kostky.
Pˇredpokl´ adejme, ˇze zkoumanou mˇernou jednotkou(faktem) je objem prodeje. Napˇr´ıklad n´asleduj´ıc´ımi kombinacemi dimenz´ı lze pak z´ıskat tyto informace: • ˇ cas - produkt - informace o objemu prodeje jednotliv´ ych druh˚ u produkt˚ u za urˇcit´e obdob´ı • ˇ cas - informace o celkov´em objemu prodeje za urˇcit´e obdob´ı • ˇ cas - lokalita - produkt - informace o objemu prodeje jednotliv´ ych druh˚ u produkt˚ u za urˇcit´e obdob´ı v jednotliv´ ych lokalit´ach
3.1.1
Srovn´ an´ı relaˇ cn´ıho a multidimenzion´ aln´ıho modelu
N´ıˇze jsou uvedeny z´ akladn´ı v´ yhody a nev´ yhody obou model˚ u. • Relaˇ cn´ı model Mezi hlavn´ı v´ yhody relaˇcn´ıho modelu patˇr´ı: – znaˇcn´e mnoˇzstv´ı odborn´ık˚ u, kteˇr´ı s t´ımto modelem roky pracuj´ı – existence velk´eho mnoˇzstv´ı v´ yvojov´ ych prostˇredk˚ u pro v´ yvoj aplikac´ı a generov´ an´ı report˚ u – uplatnˇen´ı v transakˇcn´ıch datab´az´ıch a datov´ ych skladech Nev´ yhody: 10
– naprost´ y nedostatek komplexn´ıch analytick´ ych n´astroj˚ u – objem dat, k nimˇz lze v rozumn´em ˇcase pˇristoupit je omezen • Multidimenzion´ aln´ı model V´ yhody: – schopnost rychl´eho komplexn´ıho pˇr´ıstupu k velk´emu objemu dat – pˇr´ıstup k relaˇcn´ım a multidimenzion´aln´ım datov´ ym struktur´am – moˇznost prov´ adˇen´ı komplexn´ıch anal´ yz – znaˇcn´e schopnosti pro modelov´an´ı a progn´ozy Nev´ yhody: – pˇri zmˇenˇe dimenz´ı bez pˇrizp˚ usoben´ı ˇcasov´e dimenze nast´avaj´ı komplikace – klade vyˇsˇs´ı poˇzadavky na velikost u ´loˇziˇstˇe
3.2
Operace nad OLAP kostkou
Jak jiˇz bylo zm´ınˇeno v´ yˇse, data v multidimenzion´aln´ım modelu jsou organizov´ana do urˇcit´eho poˇctu dimenz´ı. Kaˇzd´ a takov´a dimenze m´a nˇekolik u ´rovn´ı abstrakce, d´ıky ˇcemuˇz lze na data nahl´ıˇzet z r˚ uzn´ ych pohled˚ u. Pro definov´an´ı poˇzadovan´ ych pohled˚ u jsou k dispozici n´asleduj´ıc´ı z´ akladn´ı OLAP operace: • Roll-Up - Posun v hierarchii dimenze o jednu u ´roveˇ n v´ yˇse. Pokud bychom byly napˇr´ıklad v dimenzi ˇcas na u ´rovni den a provedli operaci Roll-up, pak bychom se posunuli na u ´roveˇ n mˇes´ıc(viz pˇr´ıklad hierarchi´ı na obr´azku 3.1). Nyn´ı by tedy byla data v kostce seskupena nikoliv podle dn˚ u, ale podle jednotliv´ ych mˇes´ıc˚ u. • Drill-Down - Jedn´ a se o opak pˇredchoz´ı operace Roll-up. V hierarchii dimenze se posuneme o jednu u ´roveˇ n hloubˇeji a z´ısk´ame tak detailnˇejˇs´ı v´ ysledky. V pˇr´ıpadˇe dimenze lokalita bychom se posunuli napˇr. z u ´rovnˇe st´at na detailnˇejˇs´ı u ´roveˇ n kraj. • Slice & Dice - Operace Slice slouˇz´ı k proveden´ı selekce nad jednou dimenz´ı. V´ ysledkem operace je podkostka obsahuj´ıc´ı pouze data, kter´a splˇ nuj´ıc´ı danou podm´ınku. Pˇr´ıkladem takov´e podm´ınky m˚ uˇze b´ yt napˇr: (lokalita = Praha). Ve v´ ysledn´e podkostce by tedy byla jen data vztahuj´ıc´ı se k dan´e lokalitˇe. Naproti tomu operace Dice umoˇzn ˇuje selekci nad v´ıce neˇz jednou dimenz´ı. Podm´ınka pro selekci by mohla vypadat n´asledovnˇe: (lokalita = Brno) and (cas = duben) and (produkt = TV). V´ ysledkem bude opˇet podkostka splˇ nuj´ıc´ı danou podm´ınku. • Pivot - Rotace os v 2D nebo 3D kostce, nebo zobrazen´ı 3D kostky jako kolekce 2D kostek za u ´ˇcelem jin´e prezentace dat v kostce.
3.3
Typy OLAP
OLAP syst´emy mohou b´ yt podle typu u ´loˇziˇstˇe multidimenzion´aln´ıch dat rozdˇeleny do n´asleduj´ıc´ıch kategori´ı:
11
• Multidimenzion´ aln´ı OLAP(MOLAP) - Data se z´ısk´avaj´ı bud’ z datov´eho skladu nebo z operaˇcn´ıch zdroj˚ u. Analytick´a data jsou pak uloˇzena ve speci´aln´ıch datov´ ych struktur´ ach a sum´ aˇr´ıch. Bˇehem tohoto procesu se vypoˇc´ıt´a tolik pˇredbˇeˇzn´ ych v´ ysledk˚ u, kolik je z ˇcasov´eho i kapacitn´ıho hlediska moˇzn´e - data se tedy v u ´loˇziˇsti ukl´adaj´ı jako dopˇredu vypoˇc´ıtan´ a pole. Data jsou organizov´ana takov´ ym zp˚ usobem, kter´ y poskytuje maxim´ aln´ı v´ ykon vzhledem k poˇzadovan´ ym dotaz˚ um uˇzivatel˚ u, nev´ yhodou je vˇsak redundance takov´ ych dat, protoˇze jsou uloˇzeny jak v relaˇcn´ı datab´azi, tak v multidimenzion´ aln´ı datab´ azi. Dalˇs´ı znaˇcnou nev´ yhodou je fakt, ˇze v pˇr´ıpadˇe vyˇsˇs´ıho poˇctu dimenz´ı m˚ uˇze velikost takov´e datab´aze extr´emnˇe nar˚ ustat. • Relaˇ cn´ı datab´ azov´ y OLAP(ROLAP) - Data pro anal´ yzu jsou v tomto pˇr´ıpadˇe z´ısk´ av´ ana z relaˇcn´ıho datov´eho skladu. Po zpracov´an´ı jsou data z relaˇcn´ıch datab´ az´ı pˇredkl´ ad´ ana uˇzivatel˚ um jako multidimenzion´aln´ı pohled. Data a metadata jsou ukl´ad´ any jako z´ aznamy v relaˇcn´ı datab´azi. Metadata jsou pak syst´emem ROLAP n´aslednˇe vyuˇz´ıv´ ana ke generov´ an´ı SQL dotaz˚ u, kter´ ymi jsou z´ısk´ana analytick´a data poˇzadovan´ a uˇzivateli. V´ yhodou u ´loˇziˇstˇe typu ROLAP je, ˇze nedoch´az´ı k redundanci, protoˇze data z˚ ust´ avaj´ı uloˇzena v relaˇcn´ı datab´azi, nev´ yhodou je oproti syst´em˚ um MOLAP niˇzˇs´ı dotazovac´ı v´ ykon. • Hybridn´ı OLAP(HOLAP) - Jedn´a se o kombinaci u ´loˇziˇst’ MOLAP a ROLAP. ’ Vyuˇz´ıvaj´ı se v´ yhody jednotliv´ ych typ˚ u u ´loˇziˇst a eliminuj´ı se nev´ yhody. Samotn´ a data z˚ ust´ avaj´ı uloˇzena v relaˇcn´ıch datab´az´ıch a do multidimenzion´aln´ıch struktur se ukl´ adaj´ı pouze vypoˇc´ıtan´e agregace.
3.4
Sch´ emata tabulek dimenz´ı
V pˇr´ıpadˇe syst´em˚ u typu ROLAP, kter´e vyuˇz´ıvaj´ı relaˇcn´ı datov´ y sklad je nutn´e namapovat multidimenzion´ aln´ı model a OLAP operace na relaˇcn´ı tabulky a SQL dotazy. Mezi nejpouˇz´ıvanˇejˇs´ı sch´emata datov´eho skladu patˇr´ı sch´ema hvˇezdy a sch´ema snˇehov´e vloˇcky.
3.4.1
Sch´ ema hvˇ ezdy
Sch´ema hvˇezdy(obr´ azek 3.3) se skl´ad´a z jedn´e centr´aln´ı tabulky fakt˚ u, kter´a obsahuje ciz´ı kl´ıˇce, kter´e se vztahuj´ı k prim´ arn´ım kl´ıˇc˚ um v jednotliv´ ych tabulk´ach dimenz´ı, z nichˇz kaˇzd´ a obsahuje informace o jedn´e z dimenz´ı. Sch´ema nem´a normalizovan´e dimenze ani relaˇcn´ı propojen´ı mezi tabulkami dimenz´ı. Jeho v´ yhodou je vysok´ y dotazovac´ı v´ ykon, nicm´enˇe jeho vytvoˇren´ı je d´ıky nenormalizovan´ ym dimenz´ım pomˇernˇe pomal´e.
3.4.2
Sch´ ema snˇ ehov´ e vloˇ cky
Sch´ema snˇehov´e vloˇcky(obr´ azek 3.4) je podobn´e jako sch´ema hvˇezdy s t´ım rozd´ılem, ˇze nˇekter´e tabulky dimenz´ı jsou normalizovan´e.To znamen´a, ˇze nˇekter´e dimenze jsou sloˇzeny z v´ıce tabulek. V´ yhodou tohoto modelu je d´ıky normalizovan´ ym dimenz´ım sn´ıˇzen´ı redundance, nicm´enˇe pˇri dotazovan´ı je nutn´e prov´est v´ıce tabulkov´ ych spojen´ı, coˇz negativnˇe ovlivˇ nuje dotazovac´ı v´ ykon.
12
Obr´ azek 3.3: Pˇr´ıklad sch´ematu hvˇezdy
Obr´ azek 3.4: Pˇr´ıklad sch´ematu snˇehov´e vloˇcky
13
Kapitola 4
´ Uvod do problematiky dolov´ an´ı dat Proces dolov´ an´ı dat(Data mining) [1][2][3] je zamˇeˇren na anal´ yzu velk´eho mnoˇzstv´ı dat z r˚ uzn´ ych perspektiv a jejich pˇremˇenu na uˇziteˇcn´e informace, kter´e jsou n´aslednˇe vyuˇzity k podpoˇre rozhodov´ an´ı. Z matematick´eho hlediska se jedn´a o hled´an´ı korelac´ı, tedy vzd´ajemn´ ych vztah˚ u nebo vzor˚ u v datech. V n´asleduj´ıc´ıch sekc´ıch jsou uvedeny nejˇcastˇejˇs´ı typy anal´ yz v r´amci procesu dolov´ an´ı dat.
4.1
Asociaˇ cn´ı pravidla a frekventovan´ e mnoˇ ziny
Anal´ yza se z hlediska asociaˇcn´ıch pravidel zamˇeˇruje na hled´an´ı r˚ uzn´ ych souvislost´ı nad mnoˇzinami datov´ ych poloˇzek. Z matematick´eho hlediska se jedn´a o zkoum´an´ı korelace, at’ uˇz pozitivn´ı, nebo negativn´ı. Pozitivn´ı korelace znamen´a, ˇze vysok´a u ´roveˇ n jedn´e promˇenn´e je doprov´ azena vysokou u ´rovn´ı korelaˇcn´ı promˇenn´e. Negativn´ı korelace naopak ud´av´a, ˇze vysok´a u ´roveˇ n jedn´e promˇenn´e bude prov´azena n´ızkou u ´rovn´ı korelaˇcn´ı promˇenn´e. Typick´ ym pˇr´ıkladem vyuˇzit´ı asociaˇcn´ıch pravidel je anal´ yza n´akupn´ıho koˇs´ıku, kdy se snaˇz´ıme zjistit, jak´e zboˇz´ı si z´ akazn´ıci nejbˇeˇznˇeji kupuj´ı dohromady. Na z´akladˇe objeven´ ych vztah˚ u mezi jednotliv´ ymi poloˇzkami v n´akupn´ım koˇs´ıku je pak moˇzn´e rozm´ıstit zboˇz´ı v obchodˇe efektivnˇeji, popˇr´ıpadˇe vhodnˇe sestavovat nab´ıdkov´e akce atd. N´ıˇze je uveden moˇzn´ y tvar asociaˇcn´ıho pravidla: tiskarna ⇒ papir do tiskarny (s = 2%, c = 60%) kde hodnoty s a c pˇredstavuj´ı metriky asociaˇcn´ıho pravidla - podporu a spolehlivost. Podpora ud´ av´ a v kolika transakc´ıch z celkov´eho poˇctu vˇsech transakc´ı se vyskytly tyto dvˇe poloˇzky spoleˇcnˇe a spolehlivost ud´av´a v kolika transakc´ıch z celkov´eho poˇctu transakc´ı obsahuj´ıc´ıch prvn´ı poloˇzku se z´ aroveˇ n vyskytla i druh´a poloˇzka.
4.1.1
Typy asociaˇ cn´ıch pravidel
Asociaˇcn´ı pravidla je moˇzn´e rozdˇelit podle n´ıˇze uveden´ ych krit´eri´ı: • Podle typu hodnot v pravidlech - Pokud pravidla popisuj´ı asociace mezi kvantitativn´ımi atributy nebo poloˇzkami, pak se jedn´a o kvantitativn´ı asociaˇcn´ı pravidla. V pˇr´ıpadˇe, ˇze n´ as zaj´ım´ a pouze pˇr´ıtomnost nebo nepˇr´ıtomnost jist´e poloˇzky, pak se jedn´ a
14
o booleovsk´ a asociaˇcn´ı pravidla. N´ıˇze je uveden pˇr´ıklad kvantitativn´ıho asociaˇcn´ıho pravidla: vek = 30..50 ∧ prijem = 30000 − 48000 ⇒ koupi (tiskarna) • Podle poˇ ctu dimenz´ı obsaˇ zen´ ych v pravidlech - Asociaˇcn´ı pravidla se oznaˇcuj´ı jednodimenzion´ aln´ı, jestliˇze obsahuj´ı pouze jednu dimenzi. V opaˇcn´em pˇr´ıpadˇe se jedn´ a o pravidla v´ıcedimenzion´aln´ı. • Podle u ´ rovn´ı abstrakce v pravidlech - Existuj´ı metody umoˇzn ˇuj´ıc´ı z´ısk´an´ı asociaˇcn´ıch pravidel nad r˚ uzn´ ymi u ´rovni abstrakce. Tato pravidla se oznaˇcuj´ı jako v´ıce´ urovˇ nov´ a. vek = 30..50 ⇒ koupi (tiskarna) vek = 30..50 ⇒ koupi (multif unkcni tiskarna)
4.2
Klasifikace a predikce
Klasifikac´ı rozum´ıme proces umoˇzn ˇuj´ıc´ı pˇriˇrazen´ı vstupn´ıch objekt˚ u do koneˇcn´eho poˇctu jist´ ych tˇr´ıd na z´ akladˇe jejich vlastnost´ı. Predikce je naproti tomu proces pˇriˇrazuj´ıc´ı dat˚ um hodnoty obecnˇe spojit´eho charakteru - tyto hodnoty jsou pˇredpov´ıdany na z´akladˇe vlastnost´ı dan´eho objektu. Proces klasifikace je rozdˇelen na dvˇe f´aze: • F´ aze uˇ cen´ı - Z datab´ aze je vybr´ana tr´enovac´ı mnoˇzina dat. U tˇechto dat je nutn´e zn´ at pˇresnˇe tˇr´ıdu, do kter´e jsou pˇriˇrazeny. Klasifik´ator pak na z´akladˇe tˇechto dat generuje klasifikaˇcn´ı pravidla, prostˇrednictv´ım kter´ ych je pak moˇzn´e jednotliv´e objekty pˇriˇrazovat s jistou pˇresnost´ı do konkr´etn´ıch tˇr´ıd. • F´ aze testov´ an´ı dan´ eho klasifik´ atoru - Jakmile jsou vytvoˇrena klasifikaˇcn´ı pravidla, je nutn´e tyto pravidla otestovat. Je vybr´ana tzv. testovac´ı mnoˇzina dat, u kter´e je nutn´e, stejnˇe jako v pˇr´ıpadˇe tr´enovac´ı mnoˇziny, zn´at klasifikaˇcn´ı tˇr´ıdy, do kter´ ych tato data n´ aleˇz´ı. Data by nemˇela poch´azet z tr´enovac´ı mnoˇziny kv˚ uli moˇzn´emu zkreslen´ı testovac´ıch v´ ysledk˚ u. Data jsou na z´akladˇe klasifikaˇcn´ıch pravidel rozdˇelena do jednotliv´ ych tˇr´ıd. N´ aslednˇe se urˇc´ı procentu´aln´ı u ´spˇeˇsnost klasifik´atoru a na z´akladˇe t´eto u ´spˇeˇsnosti je pak rozhodnuto, zda je tento klasifik´ator moˇzno pouˇz´ıt ke klasifikaci operaˇcn´ıch dat, ˇci nikoliv.
4.2.1
Klasifikace pomoc´ı rozhodovac´ıch strom˚ u
Klasifikace je zaloˇzena na grafu stromov´e struktury. Kaˇzd´ y vnitˇrn´ı uzel grafu obsahuje podm´ınku pro hodnotu jist´eho atributu a koncov´e uzly pˇredstavuj´ı tˇr´ıdy, do kter´ ych jsou objekty klasifikov´ any. Takov´ yto graf je pak moˇzn´e snadno pˇrepsat do tvaru klasifikaˇcn´ıch pravidel.
4.2.2
Bayesovsk´ a klasifikace
Bayesovsk´ a klasifikace je zaloˇzena na statistice. Pro kaˇzd´ y nov´ y vzorek dat je na z´akladˇe statistick´ ych metod vypoˇctena pravdˇepodobnost n´aleˇzen´ı prvku do jednotliv´ ych tˇr´ıd. Vzorek dat je n´ aslednˇe zaˇrazen do tˇr´ıdy s nejvˇetˇs´ı pravdˇepodobnost´ı pˇriˇrazen´ı. 15
4.2.3
Klasifikace pomoc´ı neuronov´ ych s´ıt´ı
Dalˇs´ım klasifikaˇcn´ım modelem jsou neuronov´e s´ıtˇe. Tyto s´ıtˇe jist´ ym zp˚ usobem simuluj´ı strukturu lidsk´eho mozku. Z´ akladn´ım logick´ ym prvkem neuronov´ ych s´ıt´ı je neuron. Do neuronu vstupuj´ı vstupn´ı data z vnˇejˇs´ıho vstupu s´ıtˇe nebo z v´ ystupu jin´eho neuronu. Tato data jsou neuronem ˇc´ asteˇcnˇe zpracov´ana pomoc´ı sumace a aktivaˇcn´ıch funkc´ı a n´aslednˇe se pˇresouvaj´ı na vstup dalˇs´ıho neuronu, nebo na v´ ystup neuronov´e s´ıtˇe. Zpracov´ an´ı pomoc´ı neuronov´ ych s´ıt´ı nevych´az´ı z ˇz´adn´eho statistick´eho hlediska, n´ ybrˇz ’ pracuje na principu rozpozn´ av´ an´ı vzor˚ u a minimalizace chyb. Neuronov´a s´ıt je tvoˇrena uzly uspoˇr´adan´ ymi do vrstev. Data se nejprve rozdˇel´ı do tr´enovac´ı a testovac´ı mnoˇziny. V kaˇzd´e iteraci jsou vstupy zpracov´ any syst´emem a n´aslednˇe porovn´any se skuteˇcnou hodnotou. Zmˇeˇren´ a chyba je pˇred´ ana syst´emu k upraven´ı p˚ uvodn´ı v´ahy. Proces je ukonˇcen v okamˇziku dosaˇzen´ı urˇcen´e minim´ aln´ı chyby.
4.3
Shlukov´ a anal´ yza
Shlukov´ an´ı je rozdˇelov´ an´ı objekt˚ u na z´akladˇe jejich podobnost´ı do tˇr´ıd. Jednotliv´e tˇr´ıdy pak obsahuj´ı navz´ ajem hodnˇe podobn´e objekty, kter´e z´aroveˇ n nejsou pˇr´ıliˇs podobn´e objekt˚ um z jin´ ych tˇr´ıd. Podobnost objekt˚ u je hodnocena podle hodnot jednotliv´ ych atribut˚ u objekt˚ u a ˇcasto se k tomuto u ´ˇcelu vyuˇz´ıvaj´ı vzd´alenostn´ı funkce. Proces shlukov´an´ı nevyˇzaduje na rozd´ıl od klasifikace ˇz´ adnou tr´enovac´ı mnoˇzinu ani ˇz´adn´e pˇreddefinovan´e tˇr´ıdy.
4.3.1
Typy shlukovac´ıch metod
Shlukovac´ı metody lze rozdˇelit do n´asleduj´ıc´ıch kategori´ı: • Metody zaloˇ zen´ e na rozdˇ elov´ an´ı - Metody rozdˇeluj´ı n objekt˚ u do k tˇr´ıd, kde pro k, n plat´ı k ≤ n. Kaˇzd´a tˇr´ıda obsahuje alespoˇ n jeden objekt a kaˇzd´ y objekt patˇr´ı pouze do jedn´e tˇr´ıdy. Je nutn´e zadat poˇcet tˇr´ıd, do kter´ ych se maj´ı objekty rozdˇelovat. Nejprve se vybere n´ahodnˇe k objekt˚ u reprezentuj´ıc´ıch jednotliv´e tˇr´ıdy a ostatn´ı objekty se zaˇrad´ı do jednotliv´ ych tˇr´ıd na z´akladˇe podobnosti. V dalˇs´ım kroku se hledaj´ı interaktivnˇe objekty nejl´epe reprezentuj´ıc´ı jednotliv´e tˇr´ıdy a objekty jsou pˇresouv´ any mezi jednotliv´ ymi tˇr´ıdami tak, aby jejich podobnost byla v r´amci tˇr´ıdy maxim´ aln´ı a podobnost s objekty jin´ ych tˇr´ıd minim´aln´ı. • Hierarchick´ e metody - Vytv´aˇr´ı se hierarchick´ y rozklad mnoˇziny objekt˚ u - vytv´aˇr´ı se strom shluk˚ u. Hierarchick´e metody se rozdˇeluj´ı podle pr˚ ubˇehu rozkladu na Shlukuj´ıc´ı hierarchick´e metody, kdy se nejprve zaˇrad´ı kaˇzd´ y objekt do speci´aln´ı tˇr´ıdy a n´aslednˇe se sluˇcuj´ı nejpodobnˇejˇs´ı tˇr´ıdy, dokud nejsou vˇsechny tˇr´ıdy spojeny do jedn´e tˇr´ıdy, nebo se nedos´ ahne poˇzadovan´e u ´rovnˇe shlukov´an´ı a na Rozdˇeluj´ıc´ı hierarchick´e metody, kdy se vˇsechny objekty nejdˇr´ıve um´ıst´ı do jedin´e tˇr´ıdy a pak se jednotliv´e tˇr´ıdy dˇel´ı na menˇs´ı tˇr´ıdy do t´e doby, neˇz je kaˇzd´ y objekt um´ıstˇen ve zvl´aˇstn´ı tˇr´ıdˇe, nebo se dos´ahlo poˇzadov´ an´e u ´rovnˇe rozdˇelov´an´ı. • Metody zaloˇ zen´ e na hustotˇ e - Za shluky se povaˇzuj´ı oblasti s velkou hustotou objekt˚ u v prostoru dat, kter´e jsou od sebe oddˇelen´e oblastmi s malou hustotou objekt˚ u. Objekty vyskytuj´ıc´ı se v oblastech s malou hustotou se povaˇzuj´ı za ˇsum. V´ yhodou tˇechto metod je skuteˇcnost, ˇze umoˇzn ˇuj´ı nach´azet shluky r˚ uzn´ ych tvar˚ u a jsou schopn´e se vypoˇr´ adat s odlehl´ ymi hodnotami a ˇsumem v datech.
16
• Metody zaloˇ zen´ e na mˇ r´ıˇ zce - Vyuˇz´ıv´a se v´ıce´ urovˇ nov´a mˇr´ıˇzkov´a datov´a struktura. Prostor objekt˚ u je rozdˇelen na koneˇcn´ y poˇcet bunˇek tvoˇr´ıc´ıch mˇr´ıˇzku. Nad touto mˇr´ıˇzkovou strukturou pak prob´ıhaj´ı veˇsker´e operace slukov´an´ı. Pˇrednost´ı tohoto typu metod je doba zpracov´ an´ı datov´e mnoˇziny, kter´a je z´avisl´a pouze na poˇctu bunˇek struktury a nikoliv na celkov´em poˇctu objekt˚ u. • Metody zaloˇ zen´ e na modelech - Snaha o optimalizaci shody mezi datovou mnoˇzinou a nˇejak´ ym dan´ ym matematick´ ym modelem. C´ılem je tedy nalezen´ı takov´ ych shluk˚ u, kter´e by co nejv´ıce odpov´ıdaly dan´emu modelu. Data jsou ve vˇetˇsinˇe pˇr´ıpad˚ u generov´ ana na z´ akladˇe sloˇzen´e pravdˇepodobnostn´ı distribuˇcn´ı funkce. Patˇr´ı zde napˇr. metody neuronov´ ych s´ıt´ı a konceptu´aln´ı shlukov´an´ı. Konceptu´aln´ı shlukov´an´ı nehled´ a na rozd´ıl od bˇeˇzn´eho shlukov´an´ı jen skupiny objekt˚ u,ale snaˇz´ı se pro kaˇzdou skupinu objekt˚ u nal´ezt charakteristick´ y popis. ˇ • Metody pro shlukov´ an´ı vysoce dimenzion´ aln´ıch dat - Rada shlukovac´ıch metod m´ a probl´emy pˇri shlukov´ an´ı vysoce dimenzion´aln´ıch dat, jelikoˇz byly navrˇzeny jen pro pouˇzit´ı s mal´ ym poˇctem dimenz´ı. U rostouc´ıho poˇctu dimenz´ı je totiˇz probl´emem skuteˇcnost, ˇze jen nˇekter´e z tˇechto dimenz´ı jsou relevantn´ı pro jednotliv´e shluky. Data ostatn´ıch dimenz´ı pak generuj´ı pomˇernˇe velk´e mnoˇzstv´ı ˇsumu znemoˇzn ˇuj´ıc´ıho nalezen´ı shluk˚ u. Pro shlukov´ an´ı takov´ ychto dat je moˇzn´e vyuˇz´ıt metodu transformace rys˚ u transformuj´ıc´ı data do prostoru s menˇs´ım poˇctem dimenz´ı pˇri zachov´an´ı relevantn´ıch vzd´ alenost´ı mezi jednotliv´ ymi objekty, nebo metodu v´ ybˇeru atribut˚ u, kter´a je zaloˇzena na nalezen´ı nejv´ıce relevantn´ıch atribut˚ u pro danou u ´lohu a odstranˇen´ı nadbyteˇcn´ ych atribut˚ u.
17
Kapitola 5
N´ avrh rozˇ s´ıˇ ren´ı existuj´ıc´ı l´ ekaˇ rsk´ e aplikace 5.1
´ Uvod
C´ılem t´eto kapitoly je shrnout n´ aroky na aplikaci, kter´a by pˇredstavovala nejen rozˇs´ıˇren´ı st´avaj´ıc´ı l´ekaˇrsk´e ambulantn´ı datab´azov´e aplikace, ale bylo by ji moˇzn´e vyuˇz´ıt i spolu s ostatn´ımi podobnˇe zamˇeˇren´ ymi zdravotnick´ ymi produkty. Takov´ato rozˇs´ıˇren´a pouˇzitelnost s sebou samozˇrejmˇe pˇrin´ aˇs´ı jeden z´asadn´ı probl´em - jak´ ym zp˚ usobem extrahovat z libovoln´e aplikace data, nad kter´ ymi bude n´aslednˇe prov´adˇena pokroˇcil´a anal´ yza. Pˇrestoˇze si mohou b´ yt jednotliv´e aplikace velmi podobn´e a z hlediska funkcionality a ovl´ad´an´ı si opravdu podobn´e jsou, tak kaˇzd´a takov´ato aplikace ukl´ad´a ambulantn´ı data sv´ ym vlastn´ım zp˚ usobem, at’ uˇz do sv´ ych vlastn´ıch datov´ ych struktur, nebo za pouˇzit´ı r˚ uzn´ ych typ˚ u datab´ azov´ ych syst´em˚ u. Pokud by mˇelo navrhovan´e rozˇs´ıˇren´ı pracovat pˇr´ımo s intern´ımi daty vˇsech tˇechto aplikac´ı, bylo by nutn´e zn´ at dopodrobna zp˚ usob uloˇzen´ı dat pro kaˇzdou z nich, coˇz by bylo bez intenzivn´ı spolupr´ ace se softwarov´ ymi spoleˇcnostmi, kter´e tyto aplikace vytvoˇrily nere´aln´e. ˇ sen´ım tohoto probl´emu je vyuˇzit´ı jedn´e vlastnosti, kterou maj´ı vˇsechny pouˇziteln´e amReˇ bulantn´ı aplikace spoleˇcn´e. Touto vlastnost´ı je generov´an´ı datov´ ych d´avek pro pojiˇst’ovny. Kaˇzd´a datov´ a d´ avka m´ a dopodrobna definovan´e datov´e rozhran´ı, kter´e mus´ı vˇsechny tyto aplikace dodrˇzovat. Navrhovan´ a aplikace tedy bude pracovat nad importovan´ ymi z´aznamy z vygenerovan´ ych datov´ ych d´ avek, tzn. nad stejn´ ymi daty, jak´a jsou ambulantn´ımi l´ekaˇri pˇred´avan´ a pojiˇst’ovn´ am ke zpracov´an´ı.
5.2
Pojem d´ avka
D´avka[4][5] je vyvrcholen´ım l´ekaˇrovy pr´ace, t´ ykaj´ıc´ı se pojiˇst’ovny. Jsou do n´ı vtˇesn´any vˇsechny u ´ˇcty, kter´e l´ekaˇr za posledn´ı obdob´ı nashrom´aˇzdil a kter´e budou odesl´any pojiˇst’ovnˇe na datov´em nosiˇci. D´ avky jsou uloˇzeny v ASCII souboru, kter´ y m´a pˇredepsan´e standardn´ı jm´eno KDAVKA.XXX, kde XXX pˇredstavuje k´od pojiˇst’ovny. Plat´ı z´asada, ˇze na kaˇzd´em datov´em nosiˇci je jen jeden soubor.
18
5.2.1
Definice datov´ eho rozhran´ı d´ avky
D´avka zaˇc´ın´ a u ´vodn´ı vˇetou d´ avky, kter´a obsahuje z´akladn´ı informace o zdravotnick´em zaˇr´ızen´ı a d´ avce. N´ asleduj´ıc´ı vˇety reprezentuj´ı jednotliv´e doklady. Doklady se skl´adaj´ı z typ˚ u vˇet pevn´e d´elky ˇrazen´ ych za sebou. Jednotliv´e vˇety jsou od sebe oddˇeleny znaky ”posun voz´ıku a nov´ a ˇr´ adka”(CRLF). Atributy vˇety nejsou oddˇeleny delimitory.
5.2.2
D´ avka ambulantn´ı sm´ıˇ sen´ a
Jelikoˇz je navrhovan´ a aplikace urˇcena pouze pro vyuˇzit´ı v soukrom´ ych ambulantn´ıch ordinac´ıch, bude pracovat jen se z´ aznamy z´ıskan´ ymi z d´avek typu ambulantn´ı sm´ıˇsen´e. Tento typ je urˇcen pro vykazov´ an´ı v´ ykon˚ u v ambulantn´ı p´eˇci. V podstatˇe se jedn´a o elektronickou verzi klasick´eho pap´ırov´eho formul´aˇre uveden´eho na obr´azku 5.1.
Kód pojišťovny
IČP
Odbornost
Čís. dokladu
Var. symbol
Poř. č.
VYÚČTOVÁNÍ VÝKONŮ V AMBULANTNÍ PÉČI Příjmení a jméno pacienta: Čís. pojištěnce
Základní diagnóza
Ostatní diagnózy
Datum
Kód
Poč. Odbornost
Diagnóza
1 2 ind.
NÁHRADY 3 úraz zaviněný jinou osobou 4 požití alkoholu, omamné látky 5 pracovní úraz 7 porušení léčebného režimu 8 jiný důvod 9 nemoc z povolání
3 4 5 6 7 8 9 10 11 12
Obr´ azek 5.1: Pap´ırov´ y formul´aˇr pro vy´ uˇctov´an´ı v´ ykon˚ u
Typy vˇ et
Doklady se v t´eto d´ avce skl´adaj´ı z n´asleduj´ıc´ıch ˇctyˇr typ˚ u vˇet:
1. z´ ahlav´ı – vyskytuje se pro kaˇzd´ y doklad jednou a obsahuje pˇrev´aˇznˇe informace o pacientovi, jemuˇz je doklad pˇriˇrazen, poˇctu vykazovan´ ych v´ ykon˚ u, poˇrad´ı dokladu v d´ avce a dalˇs´ı. N´ıˇze jsou uvedeny jej´ı atributy. Popis typ˚ u v tabulk´ ach atribut˚ u: C -znakov´ y atribut, N - numerick´ y atribut, D - datum ve tvaru “DDMMRRRR“, $ - penˇeˇzn´ı atribut, form´at x.y ( x m´ıst vˇcetnˇe desetinn´e teˇcky, z toho y desetinn´ ych m´ıst). 19
N´ azev TYP HCID HSTR HPOC HPOR
Typ C N N N N
D´ elka 1 7 1 1 3
Zaˇ c´ atek 0 1 8 9 10
HCPO HTPP HICO HVAR HODB HROD HZDG
C C C C C C C
3 1 8 6 3 10 5
13 16 17 25 31 34 44
HKON HICZ HCDZ HREZ HCCEL HCBOD DTYP
C C N C $ N C
1 8 7 10 10.2 7 1
49 50 58 65 75 85 95
Popis typ vˇety “A“ - z´ahlav´ı ˇc´ıslo dokladu Poˇradov´e ˇc´ıslo listu dokladu Celkov´ y poˇcet list˚ u dokladu Poˇradov´e ˇc´ıslo listu v d´avce. Povolen´ y rozsah od 1-999. ˇc´ıslo pojiˇst’ovny Typ pˇripojiˇstˇen´ı ˇ Identifikaˇcn´ı ˇc´ıslo pracoviˇstˇe - ICP Variabiln´ı symbol Smluvn´ı odbornost pracoviˇstˇe ˇ ıslo pojiˇstˇence C´ ˇ ıslo z´akladn´ı diagn´ozy, pro kterou C´ byl pacient v tomto obdob´ı l´eˇcen nevyplˇ nuje se nevyplˇ nuje se nevyplˇ nuje se nevyplˇ nuje se Cena celkem - nepovinn´e Body celkem - nepovinn´e Doplnˇek typu vˇety z´ahlav´ı nevyplˇ nuje se
Celkov´ a d´elka vˇety: 93 znak˚ u 2. v´ ykony - prostˇrednictv´ım t´eto vˇety se zad´avaj´ı jednotliv´e v´ ykony, kter´e byly na pacientovi bˇehem dan´eho z´ uˇctovac´ıho obdob´ı provedeny. Maxim´alnˇe 99 v´ ykon˚ u. N´ azev TYP VDAT
Typ C D
D´ elka 1 8
Zaˇ c´ atek 0 1
VKOD VPOC VODB
C N C
5 1 3
9 14 15
VDIA
C
5
18
VBOD VTYP
N C
5 1
23 28
Celkov´ a d´elka vˇety: 29 znak˚ u 20
Popis Typ vˇety ”V” - v´ ykony Datum proveden´ı v´ ykonu. Uveden´ı je povinn´e u prvn´ıho v´ ykonu v dan´em dnu ˇ ıslo v´ C´ ykonu Poˇcet proveden´ı v´ ykonu Odbornost - uv´ad´ı se povinnˇe v pˇr´ıpadˇe, kdy byl v´ ykon proveden na pracoviˇsti jin´e smluvn´ı odbornosti, neˇz je uvedena v z´ahlav´ı dokladu Diagn´oza - je-li uvedena z´akladn´ı diagn´oza, uv´ad´ı se jen u v´ ykon˚ u, kter´e se k z´akladn´ı diagn´oze nevztahuj´ı. Nevyplnˇen´a diagn´oza se povaˇzuje za diagn´ozu z´akladn´ı. Body za v´ ykon - nepovinn´ yu ´daj Doplnˇek typu vˇety v´ ykony. Rezerva, nevyplˇ nuje se
3. n´ ahrady za zdravotn´ı p´ eˇ ci - v´ yskyt podle poˇctu n´ahrad, maxim´alnˇe 2 N´ azev TYP
Typ C
D´ elka 1
Zaˇ c´ atek 0
NTYP TYPN
C C
1 1
1 2
Popis Typ vˇety “N” n´ahrady za zdravotn´ı p´eˇci Typ n´ahrady Doplnˇek typu vˇety n´ahrady. Rezerva, nevyplˇ nuje se
Celkov´ a d´elka vˇety: 3 znaky 4. ostatn´ı diagn´ ozy - v´ yskyt podle poˇctu diagn´oz, maxim´alnˇe 4 N´ azev TYP GCIS
Typ C C
D´ elka 1 5
Zaˇ c´ atek 0 1
GTYP
C
1
6
Popis Typ vˇety “G“ - ostatn´ı diagn´ozy ˇ ıslo dalˇs´ı vyskytuj´ıc´ı se diagn´ozy C´ souvisej´ıc´ı s poskytovanou p´eˇc´ı Doplnˇek typu vˇety ostatn´ı diagn´ozy. Rezerva, nevyplˇ nuje se
Celkov´ a d´elka vˇety: 7 znak˚ u Vˇety uveden´e v´ yˇse maj´ı v d´ avce pˇresnˇe definovan´e poˇrad´ı v´ yskytu. Na obr´azku 5.2 je zn´azornˇen stavov´ y diagram fiktivn´ıho automatu, kter´ y by byl schopen ovˇeˇrit spr´avn´e poˇrad´ı jednotliv´ ych vˇet.
Obr´ azek 5.2: Stavov´ y diagram zn´azorˇ nuj´ıc´ı posloupnost jednotliv´ ych vˇet v d´avce
5.3
Poˇ zadavky kladen´ e na aplikaci
Aplikace je uˇcena k prov´ adˇen´ı anal´ yz nad zdravotnick´ ymi daty z´ıskan´ ymi prostˇrednictv´ım datov´ ych d´ avek, kter´e jsou generovan´e ambulantn´ımi aplikacemi za u ´ˇcelem vy´ uˇctov´ an´ı v´ ykon˚ u jednotliv´ ym pojiˇst’ovn´ am. Anal´ yza dat bude uˇzivatelem prov´adˇena prostˇrednictv´ım OLAP operac´ı nad multidimenzion´aln´ım modelem, kter´ y bude namapov´an na relaˇcn´ı tabulky datov´eho skladu. 21
Aplikace tedy mus´ı umoˇzn ˇovat zpracov´an´ı jednotliv´ ych d´avkov´ ych soubor˚ u, kter´e je sloˇzeno z n´ asleduj´ıc´ıch krok˚ u: 1. nalezen´ı vˇsech v´ yskyt˚ u d´ avek typu ambulantn´ı sm´ıˇsen´e v tˇechto souborech 2. selekci dat, kter´ a jsou poˇzadov´ana pro anal´ yzu 3. jejich transformaci do vhodn´eho tvaru 4. zaveden´ı transformovan´ ych dat do relaˇcn´ıho datov´eho skladu
5.3.1
Analyzovan´ a data
Z jednotliv´ ych z´ aznam˚ u uveden´ ych v d´avce lze pro kaˇzd´eho pacienta u kter´eho bylo za dan´e z´ uˇctovac´ı obdob´ı provedeno alespoˇ n jedno vyˇsetˇren´ı extrahovat n´asleduj´ıc´ı, z hlediska anal´ yzy zaj´ımav´ a data pˇrestavuj´ıc´ı v navrhovan´em multidimenzion´aln´ım modelu jednotliv´e dimenze: • Pacient - identifikace pacienta na z´akladˇe rodn´eho ˇc´ısla • Vˇek pacienta - vˇek, kter´eho pacient dovrˇsil pˇri dan´e n´avˇstˇevˇe zdravotnick´eho zaˇr´ızen´ı • Pojiˇst’ovna, u kter´e je dan´ y pacient veden • V´ ykon - typ v´ ykonu proveden´eho na pacientovi bˇehem n´avˇstˇevy • Diagn´ oza - informace o hlavn´ı diagn´oze pacienta na kterou byl bˇehem dan´eho obdob´ı l´eˇcen a diagn´ oze vztahuj´ıc´ı se k proveden´emu v´ ykonu ˇ - datum n´ • Cas avˇstˇevy, v r´ amci kter´e byl proveden nˇekter´ y z v´ ykon˚ u • D´ avka - informace o konkr´etn´ı d´avce, ze kter´e byla data importov´ana do datov´eho skladu Hlavn´ımi mˇern´ ymi jednotkami(faktem), nad kter´ ymi bude prov´adˇena anal´ yza jsou mnoˇzstv´ı bod˚ u z´ıskan´ ych za proveden´ı v´ ykon˚ u, poˇcet proveden´ı v´ ykonu, vyfakturovan´a ˇc´astka a poˇcet minut v´ ykonu. Vhodn´ ym aplikov´ an´ım OLAP operac´ı nad v´ yˇse uveden´ ymi dimenzemi pak bude moˇzn´e z´ıskat napˇr´ıklad n´ asleduj´ıc´ı informace: • celkov´e mnoˇzstv´ı z´ıskan´ ych bod˚ u za dan´e ˇcasov´e obdob´ı • mnoˇzstv´ı z´ıskan´ ych bod˚ u podle jednotliv´ ych pojiˇst’oven v r´amci dan´eho obdob´ı • vliv vˇeku na v´ yskyt jednotliv´ ych diagn´oz • selekce pacient˚ u podle dan´e diagn´ozy a dalˇs´ı
22
Kapitola 6
Implementace datov´ eho skladu 6.1
Volba datab´ azov´ eho stroje
Datov´ y sklad je provozov´ an na multiplatformn´ım datab´azov´em stroji MySQL. MySQL byl zvolen na z´ akladˇe pozitivn´ıch zkuˇsenost´ı z jin´ ych projekt˚ u, kter´e tento stroj vyuˇz´ıvaly a rovnˇeˇz pro mnoˇzstv´ı dostupn´ ych kvalitn´ıch n´astroj˚ u umoˇzn ˇuj´ıc´ıch efektivn´ı spr´avu datab´ aze a v´ yvoj datab´ azov´ ych aplikac´ı postaven´ ych na tomto ˇreˇsen´ı.
6.2
Proces ETL
Data, kter´ a se v datov´em skladu vyskytuj´ı, lze rozdˇelit na dvˇe skupiny na z´akladˇe zdroj˚ u, ze kter´ ych jsou extrahov´ ana. Tˇemito zdroji jsou datov´e soubory obsahuj´ıc´ı jednotliv´e d´avky ambulantnˇe sm´ıˇsen´e a pomocn´e ˇc´ıseln´ıky dod´avan´e pojiˇst’ovnou VZP. Oba tyto zdroje maj´ı pˇresnˇe definovanou strukturu z´aznam˚ u a povolen´ y obsah prostˇrednictv´ım datov´eho rozhran´ı. L´ekaˇrsk´e aplikace generuj´ıc´ı tyto datov´e soubory tedy mus´ı toto rozhran´ı striktnˇe dodrˇzovat, jinak by ze strany pojiˇst’ovny doˇslo k jejich odm´ıtnut´ı. Z toho vypl´ yv´a, ˇze d´avka m˚ uˇze b´ yt importov´ ana z jak´ekoliv aplikace a pˇritom je st´ale zajiˇstˇen jak pˇresn´ y zp˚ usob uloˇzen´ı z´ aznam˚ u, tak validita obsaˇzen´ ych dat. D´ıky tomu je proces extrakce a n´asledn´e transformace z´ıskan´ ych dat znaˇcnˇe zjednoduˇsen. C´ılem extrakce je tedy na z´akladˇe rozhran´ı obsah jednotliv´ ych zdroj˚ u naˇc´ıst do vnitˇrn´ıch struktur a tyto struktury n´aslednˇe pˇredat transformaˇcn´ımu procesu ke zpracov´an´ı. Z´aznamy v obou zdroj´ıch obsahuj´ı sadu doprovodn´ ych atribut˚ u, kter´e nejsou z hlediska prov´adˇen´ı anal´ yz nad datov´ ym skladem potˇreba. C´ılem transformaˇcn´ı procesu je tedy tyto data z jednotliv´ ych z´aznam˚ u odstranit pˇred t´ım, neˇz jsou zavedena do datov´eho skladu. Z nˇekter´ ych atribut˚ u obsaˇzen´ ych v importovan´ ych z´ aznamech je t´eˇz moˇzn´e dodateˇcnˇe extrahovat dalˇs´ı, z hlediska anal´ yzy cenn´e informace. Takov´ ymi atributy jsou napˇr´ıklad ˇretˇezec datumu pacientovy n´avˇstˇevy ambulantn´ıho zaˇr´ızen´ı, kter´ y je nutn´e pro zkvalitnˇen´ı dotazovac´ıch schopnost´ı v´ ysledn´eho syst´emu rozdˇelit na jednotliv´e ˇcasov´e podsloˇzky a tyto uloˇzit do samostatn´ ych sloup˚ u c´ılov´e dimenze. Dalˇs´ım takov´ ym atributem je pak ˇc´ıslo pojiˇstˇence, kter´e je reprezentov´ano rodn´ ym ˇc´ıslem. Z tohoto ˇc´ısla je pak moˇzn´e extahovat informace o narozen´ı a pohlav´ı pacienta. Zp˚ usob extrakce tˇechto dat bude detailnˇe vysvˇetlen u popisu jednotliv´ ych tabulek dimenz´ı, kter´e jsou k uloˇzen´ı tˇechto dat urˇceny. Zat´ımco import d´avek bude do datov´eho skladu prov´adˇen v pravideln´ ych ˇcasov´ ych intervalech odpov´ıdaj´ıc´ıch smluven´emu u ´ˇctovac´ımu obdob´ı, aktualizace podp˚ urn´ ych ˇc´ıseln´ık˚ u bude prov´adˇena pouze v pˇr´ıpadˇe, kdy bude obsah nˇekter´eho ˇc´ıseln´ıku pojiˇst’ovnou pozmˇenˇen. Zmˇena v datov´em rozhran´ı obou zdroj˚ u si vˇzdy vyˇz´ad´ a
23
vyd´an´ı aktualizovan´e verze aplikace, kdy bude v z´avislosti na m´ıˇre proveden´ ych zmˇen nutn´e automatick´ ym procesem pˇrizp˚ usobit strukturu datov´eho skladu nov´ ym poˇzadavk˚ um.
6.3
Struktura datov´ eho skladu
Datov´ y sklad pro u ´ˇcely OLAP anal´ yzy nad zdravotnick´ ymi daty je realizov´an na z´akladˇe sch´ematu hvˇezdy, kdy jsou pˇr´ıtomny tabulky reprezentuj´ıc´ı jednotliv´e dimenze a jedna tabulka fakt˚ u s odkazy na tyto dimenze a mˇern´ ymi jednotkami, jejiˇz anal´ yza se bude prov´adˇet. Sch´ema datov´eho skladu je zobrazeno na obr´azku 6.1.
Obr´ azek 6.1: Sch´ema datov´eho skladu Datov´ y sklad obsahuje celkem 7 n´asleduj´ıc´ıch tabulek dimenz´ı ˇ n´ • Cas avˇstˇevy • Pacient • V´ ykon • Vˇek pacienta • Pojiˇst’ovna • D´ avka • Diagn´ oza 24
6.3.1
ˇ n´ Dimenze Cas avˇ stˇ evy
Dimenze slouˇz´ı pro uchov´ av´ an´ı ˇcas˚ u jednotliv´ ych n´avˇstˇev pacient˚ u zdravotnick´eho zaˇr´ızen´ı. Z hlediska anal´ yzy by ovˇsem bylo velmi omezuj´ıc´ı pracovat pouze s konkr´etn´ım datumem a proto jsou z toho datumu d´ ale extrahov´any n´asleduj´ıc´ı informace: • Rok • Kvart´ al • T´ yden ˇ ıslo mˇes´ıce v rozsahu 1-12 • C´ • N´ azev mˇes´ıce • Den v mˇes´ıci • Den v t´ ydnu • Den v t´ ydnu - n´ azev dne • Datum Pro extrakci v´ yˇse uveden´ ych ˇcasov´ ym poloˇzek obsahuje datab´aze MySQL sadu funkc´ı, kter´e je moˇzn´e pouˇz´ıt pˇr´ımo v SQL dotazu a nen´ı tedy nutn´e ˇreˇsit extrakci programovˇe v samotn´em k´ odu aplikace. Extrakce roku K tomuto u ´ˇcelu je urˇcena funkce YEAR(datum), kter´a pˇrij´ım´a jako parametr konkr´etn´ı datum a vrac´ı hodnoty v rozsahu 1000 - 9999, nebo 0 v pˇr´ıpadˇe nulov´eho o datumu. Pˇr´ıklad pouˇzit´ı: SELECT YEAR(’2009-02-01’); -> 2009 Extrakce kvart´ alu K extrakci kvart´ alu je urˇcena funkce QUARTER(datum), kter´a pˇrij´ım´a jako parametr konkr´etn´ı datum a vrac´ı hodnotu v rozsahu 1 - 4. Pˇr´ıklad pouˇzit´ı: SELECT QUARTER(’2009-02-01’); -> 1 Extrakce t´ ydne K extrakci t´ ydne je urˇcena funkce WEEK(datum), kter´a pˇrij´ım´a jako parametr konkr´etn´ı datum a vrac´ı hodnotu v rozsahu 0 - 53. Pˇr´ıklad pouˇzit´ı: SELECT WEEK(’2008-02-01’); -> 4 25
Extrakce ˇ c´ısla mˇ es´ıce K extrahov´ an´ı ˇc´ısla mˇes´ıce je urˇcena funkce MONTH(datum), kter´a pˇrij´ım´a jako parametr konkr´etn´ı datum a vrac´ı hodnotu mˇes´ıce v rozsahu 1 - 12. Pˇr´ıklad pouˇzit´ı: SELECT MONTH(’2009-02-01’); -> 2 Extrakce n´ azvu mˇ es´ıce Kromˇe samotn´eho ˇc´ısla mˇes´ıce je tak´e vhodn´e poskytnou uˇzivateli volbu, zda zobrazit mˇes´ıc ve formˇe ˇc´ıseln´e, nebo ve formˇe textu. Proto je nutn´e do tabulky dimenze pˇridat dalˇs´ı sloupec, obsahuj´ıc´ı textov´ y n´azev mˇes´ıce. Uˇzivatel pak bude m´ıt bˇehem konstrukce aktu´aln´ıho pohledu moˇznost volby zobrazen´ı. K extrakci n´azvu mˇes´ıce datab´aze MySQL opˇet poskytuje odpov´ıdaj´ıc´ı funkci. Touto funkc´ı je MONTHNAME(datum), jejiˇz v´ ysledkem je pln´e jm´eno mˇes´ıce. Pˇr´ıklad pouˇzit´ı: SELECT MONTHNAME(’2009-02-01’); -> ’´ Unor’ Pˇri pouˇzit´ı t´eto funkce je ovˇsem nutn´e m´ıt spr´avnˇe nastavenu hodnotu syst´emov´e promˇenn´e lc time names, kter´ a urˇcuje, v jak´em n´arodn´ım jazyce budou ˇcasov´e funkce vracet textov´e reprezentace. V tomto pˇr´ıpadˇe je poˇzadov´ano navr´acen´ı n´azvu mˇes´ıce v ˇcesk´em jazyce, proto mus´ı b´ yt tato promˇenn´ a nastavena na cs CZ. Zde se nab´ız´ı ot´ azka, proˇc ukl´ adat n´azev mˇes´ıce do datab´aze, kdyˇz by bylo moˇzn´e oˇsetˇrit pˇrevod mˇes´ıce z ˇc´ıseln´e reprezentace na textovou bˇehem interpretace vr´acen´eho v´ ysledku OLAP dotazu pˇr´ımo v aplikaci. Je to z toho d˚ uvodu, aby bylo moˇzn´e implementovan´ y datov´ y sklad analyzovat i prostˇrednictv´ım jin´ ych reportovac´ıch n´astroj˚ u, kter´e vych´azej´ı pouze z dat uloˇzen´ ych v jednotliv´ ych tabulk´ach dimenz´ı. Pokud by tato poloˇzka v tabulce neexistovala, tak by reportovac´ı n´ astroj nebyl schopen tuto textovou reprezentaci nab´ıdnout a uˇzivatel by se musel spokojit s pouhou ˇc´ıselnou reprezentac´ı. Pˇrid´an´ım t´eto poloˇzky se datov´ y sklad st´ av´ a univerz´ alnˇejˇs´ım, nicm´enˇe za cenu dalˇs´ı redundance a zv´ yˇsen´ı poˇzadavk˚ u na u ´loˇzn´ y prostor. Extrakce dne v mˇ es´ıci Pro z´ısk´ an´ı konkr´etn´ıho dne v mˇes´ıci v rozsahu 1 aˇz 31 slouˇz´ı funkce DAYOFMONTH(datum). Pˇr´ıklad pouˇzit´ı: SELECT DAYOFMONTH(’2009-02-01’); -> 1 Extrakce dne v t´ ydnu Pro z´ısk´ an´ı poˇradov´eho ˇc´ısla dne v t´ ydnu slouˇz´ı funkce DAYOFWEEK(date). Pˇr´ıklad pouˇzit´ı: 26
SELECT DAYOFWEEK(’2009-02-01’); -> ’1’ Extrakce n´ azvu dne v t´ ydnu Stejnˇe jako v pˇr´ıpadˇe n´ azvu mˇes´ıce je i v tomto pˇr´ıpadˇe nab´ıdnuta uˇzivateli volba form´ atu zobrazen´ı. Pro z´ısk´ an´ı n´ azvu dne v t´ ydnu slouˇz´ı funkce DAYNAME(datum). Pro vr´acen´ı n´azvu ve spr´ avn´em n´ arodn´ım jazyce plat´ı stejn´e z´asady, jako pˇri extrakci n´azvu mˇes´ıce uveden´eho v´ yˇse. Pˇr´ıklad pouˇzit´ı: SELECT DAYNAME(’2009-02-01’); -> ’Nedˇ ele’ Vytvoˇ ren´ı poloˇ zky v dimenzi Na z´akladˇe v´ yˇse uveden´ ych ˇcasov´ ych funkc´ı poskytovan´ ych datab´azov´ ym serverem je zˇrejm´e, ˇze vloˇzen´ı jedn´e poloˇzky do tabulky dimenze lze elegantnˇe vyˇreˇsit pouh´ ym jedn´ım SQL pˇr´ıkazem nad datab´ az´ı, kdy jsou z pˇredan´eho datumu automaticky extrahov´any vˇsechy poˇzadovan´e poloˇzky. Pˇr´ıklad vloˇzen´ı datumu n´ avˇstˇevy pacienta ’12.3.2009’ do ˇcasov´e dimenze: INSERT INTO cas (rok,tyden,kvartal,mesic,nazev_mesice,den,den_tydne,nazev_dne_tydne, datum) VALUES(YEAR(’2009-03-12’),WEEK(’2009-03-12’),QUARTER(’2009-03-12’), MOUNTH(’2009-03-12’),MONTHNAME(’2009-03-12’),DAYOFMONTH(’2009-03-12’), DAYOFWEEK(’2009-03-12’),DAYNAME(’2009-03-12’),’2009-03-12’); Vytvoˇ ren´ı tabulky dimenze CREATE TABLE ‘cas‘ ( ‘idcas‘ int(11) NOT NULL auto_increment, ‘rok‘ int(11) NOT NULL, ‘tyden‘ int(11) NOT NULL, ‘kvartal‘ int(11) NOT NULL, ‘mesic‘ int(11) NOT NULL, ‘nazev_mesice‘ varchar(45) NOT NULL, ‘den‘ int(11) NOT NULL, ‘nazev_dne_tydne‘ varchar(45) default NULL, ‘den_tydne‘ int(11) NOT NULL, ‘datum‘ date NOT NULL, PRIMARY KEY (‘idcas‘), KEY ‘index1‘ USING BTREE (‘datum‘) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs;
6.3.2
Dimenze Pacient
Dimenze Pacient slouˇz´ı pro uchov´av´an´ı informac´ı o konkr´etn´ım pacientovi, kter´ y dan´e zdravotnick´e zaˇr´ızen´ı nˇekdy navˇst´ıvil a na nˇemˇz byl l´ekaˇrem proveden a n´aslednˇe pojiˇst’ovnˇe prostˇrednictv´ım pˇredan´e d´ avky vyk´az´an v´ ykon. 27
6.3.3
ˇ ıslo pojiˇ C´ stˇ ence
Zdravotn´ı pojiˇst’ovny pˇridˇeluj´ı kaˇzd´emu sv´emu klientovi tzv. ˇc´ıslo pojiˇstˇence, kter´e slouˇz´ı k jeho jednoznaˇcn´e identifikaci a je obsaˇzeno i na kartiˇcce pojiˇst’ovny. Pod t´ımto ˇc´ıslem je rovnˇeˇz klient veden u zdravotnick´ ych zaˇr´ızen´ı, s nimiˇz pˇriˇsel bˇehem l´eˇcby do styku. Pr´ avˇe toto ˇc´ıslo pouˇz´ıvaj´ı zdravotnick´ a zaˇr´ızen´ı pˇri fakturaci v´ ykon˚ u proveden´ ych na konkr´etn´ım pacientovi a na pˇred´ avan´ ych vygenerovan´ ych datov´ ych d´avk´ach pˇredstavuje jedin´eho nositele informace o dan´em pacientovi. Vzhledem k tomu, ˇze hodnotou tohoto ˇc´ısla je pr´avˇe rodn´e ˇc´ıslo klienta pojiˇst’ovny, je moˇzn´e z´ıskat o pacientovi sice znaˇcnˇe omezenou, ovˇsem z hlediska prov´adˇen´ı n´ asledn´e OLAP anal´ yzy ˇci dolov´an´ı dat, v´ yznamnou sadu informac´ı. Form´ at rodn´ eho ˇ c´ısla Existuj´ıc´ı rodn´ a ˇc´ısla [6] mohou b´ yt ve dvou d´elkov´ ych variant´ach. Rodn´a ˇc´ısla s d´elkou dev´ıti znak˚ u byla pˇridˇelov´ ana do 1. ledna roku 1954. Od tohoto data je k rodn´emu ˇc´ıslu pˇrid´av´ ana na konec jeˇstˇe jedna kontroln´ı ˇc´ıslice, kter´a slouˇz´ı k ovˇeˇren´ı validity rodn´eho ˇc´ısla a to, zda je rodn´e ˇc´ıslo dˇeliteln´e beze zbytku jeden´acti. Ovˇsem, existuj´ı i rodn´a ˇc´ısla, kter´a tuto podm´ınku nesplˇ nuj´ı a i pˇresto jsou povaˇzov´ana za validn´ı. Jedn´a se o ty pˇr´ıpady, kdy je zbytek po dˇelen´ı rodn´eho ˇc´ısla jeden´acti roven des´ıti. Zde pak nelze pouˇz´ıt ˇz´adnou kontroln´ı ˇc´ıslici, kter´ a by rodn´e ˇc´ıslo uˇcinila dˇeliteln´ ym beze zbytku a m´ısto kontroln´ı ˇc´ıslice se vkl´ad´ a nula. Pˇr´ıklad rodn´eho ˇc´ısla, kter´e nen´ı beze zbytku dˇeliteln´e jeden´acti a pˇresto je povaˇzov´ano za zcela validn´ı: 8
4
0
5
0
1
1
3
3
0
840501133 mod 11 = 10 Z kaˇzd´eho rodn´eho ˇc´ısla lze extrahovat n´asleduj´ıc´ı informace: • Rok narozen´ı • Mˇes´ıc narozen´ı • Den narozen´ı • Pohlav´ı Pˇresn´e pozice jednotliv´ ych poloˇzek rodn´eho ˇc´ısla jsou uvedeny v tabulce 6.1. Poloˇ zka Zaˇ c´ atek Poˇ cet znak˚ u Rok narozen´ı 1 2 Mˇes´ıc narozen´ı 3 2 Den narozen´ı 5 2 Poˇradov´e ˇc´ıslo 7 3 Od 1. ledna roku 1954 Kontroln´ı ˇc´ıslice 10 1 Tabulka 6.1: Poloˇzky rodn´eho ˇc´ısla Poˇradov´e ˇc´ıslo slouˇz´ı k rozliˇsen´ı osob narozen´ ych ve stejn´ y den. 28
Extrakce roku narozen´ı Vzhledem k tomu, ˇze je rok narozen´ı v rodn´em ˇc´ısle zad´an pouze pomoc´ı dvou posledn´ıch ˇc´ıslic, je nutn´e dodateˇcnˇe urˇcit tak´e spr´avn´e stolet´ı. K tomu je moˇzn´e vyuˇz´ıt jednoduch´e kontroly sloˇzen´e ze dvou ˇc´ ast´ı: 1. Nejprve se zkontroluje d´elka rodn´eho ˇc´ısla. Pokud je d´elka rovna 9, tak se jedn´ a o stolet´ı 20.. Tato podm´ınka vych´az´ı ze skuteˇcnosti, ˇze do roku 1954 byla pˇridˇelov´ana rodn´ a ˇc´ısla pr´ avˇe s d´elkou 9 a od roku 1954 s d´elkou o jednu ˇc´ıslici vˇetˇs´ı, tedy 10. 2. V pˇr´ıpadˇe, kdy je d´elka rodn´eho ˇc´ısla rovna 10, tak lze stolet´ı urˇcit n´asledovnˇe: Pokud je rok narozen´ı menˇs´ı neˇz 54 (posledn´ı dvˇe ˇc´ıslice roku 1954), tak je v´ ysledkem stolet´ı 21., v opaˇcn´em pˇr´ıpadˇe pak stolet´ı 20.. Protoˇze je rok narozen´ı zad´ av´ an pr´avˇe dvˇemi posledn´ımi ˇc´ıslicemi, bude st´avaj´ıc´ı form´ at rodn´eho ˇc´ısla od roku 2054 nepouˇziteln´ y, protoˇze by bez dodateˇcn´ ych u ´prav standardu nebylo moˇzn´e ˇz´ adn´ ym zp˚ usobem rozliˇsit spr´avn´e stolet´ı narozen´ı. Extrakce mˇ es´ıce, dne a pohlav´ı Na z´akladˇe hodnoty mˇes´ıce lze jednoznaˇcnˇe urˇcit pohlav´ı obˇcana. Mˇes´ıc je zad´an pomoc´ı dvou ˇc´ıslic, kdy u muˇz˚ u jsou hodnoty v intervalu 1 - 12, kdeˇzto u ˇzen je k ˇc´ıslu mˇes´ıce jeˇstˇe pˇriˇcteno ˇc´ıslo 50. Od roku 2004 je zavedena moˇznost v pˇr´ıpadˇe, ˇze jsou v nˇejak´ y den vyˇcerp´ ana vˇsechna platn´ a koncov´a ˇctyˇrˇc´ısl´ı, pouˇz´ıt alternativn´ı rodn´e ˇc´ıslo, u kter´eho maj´ı muˇzi k ˇc´ıslu mˇes´ıce pˇriˇctenu hodnotu 20 a ˇzeny hodnotu 70. Den narozen´ı pˇredstavuje ve vˇsech rodn´ ych ˇc´ıslech jiˇz skuteˇcnou hodnotu, proto se na nˇej jiˇz ˇz´adn´a pravidla neaplikuj´ı. Pˇri urˇcov´ an´ı ˇc´ısla mˇes´ıce a pohlav´ı se tedy postupuje n´asledovnˇe: 1. Pokud je ˇc´ıslo mˇes´ıce v intervalu 1-12, tak se jedn´a o pohlav´ı muˇzsk´e a ˇc´ıslo mˇes´ıce jiˇz reprezentuje spr´ avnou hodnotu. 2. Pokud je interval v rozsahu 21 - 32, tak se opˇet jedn´a o muˇze, ale k z´ısk´an´ı spr´avn´e hodnoty mˇes´ıce je nutn´e od tohoto ˇc´ısla odeˇc´ıst hodnotu 20. 3. V pˇr´ıpadˇe, kdy je ˇc´ıslo mˇes´ıce vˇetˇs´ı neˇz 32, tak lze jiˇz bezpeˇcnˇe prohl´asit, ˇze nositelem rodn´eho ˇc´ısla je ˇzena. 4. Pokud je u ˇzeny ˇc´ıslo mˇes´ıce v intervalu 51-62, tak se pro z´ısk´an´ı spr´avn´e hodnoty odeˇcte 50, pokud v intervalu 71-82, tak 70. Vzorov´ y pˇ r´ıklad extrakce informac´ı z rodn´ eho ˇ c´ısla Uvaˇzujme dvˇe n´ asleduj´ıc´ı smyˇslen´a, nicm´enˇe dle standardu zcela validn´ı, rodn´a ˇc´ısla: 4 9
7 3
5 5
9 4
2 1
0 8
4 4
0 4
4 7
7
C´ılem je urˇcit o vlastn´ıkovi vˇsechny dostupn´e informace na z´akladˇe postup˚ u uveden´ ych v´ yˇse.
29
1. cel´ y rok narozen´ı V prvn´ım pˇr´ıpadˇe m´ a rodn´e ˇc´ıslo d´elku 9 ˇc´ıslic, proto se jedn´a o stolet´ı dvac´at´e. V´ ysledkem konkatenace stolet´ı a roku narozen´ı je pak rok 1947. V druh´em pˇr´ıpadˇe je d´elka rodn´eho ˇc´ısla rovna 10, proto se porovn´a rok narozen´ı s rokem 1954. V tomto pˇr´ıpadˇe je rok narozen´ı vˇetˇs´ı, proto je v´ ysledkem stolet´ı 20. a cel´ y rok narozen´ı m´ a hodnotu 1993. 2. mˇ es´ıc narozen´ı, pohlav´ı V obou pˇr´ıpadech spad´ a hodnota mˇes´ıce do intervalu 51-62. Jedn´a se proto o pohlav´ı ˇzensk´e a od hodnoty mˇes´ıce je nutn´e odeˇc´ıst hodnotu 50. Prvn´ı ˇzena se tedy narodila v z´ aˇr´ı, druh´ a pak dubnu. 3. den narozen´ı Den narozen´ı je v prvn´ım pˇr´ıpadˇe 20. a v druh´em 18.. Vytvoˇ ren´ı tabulky dimenze CREATE TABLE ‘pacient‘ ( ‘idpacient‘ int(11) NOT NULL auto_increment, ‘rodne_cislo‘ varchar(45) NOT NULL, ‘rok_narozeni‘ year(4) NOT NULL, ‘pohlavi_muzske‘ tinyint(1) NOT NULL, ‘datum_narozeni‘ date NOT NULL, PRIMARY KEY (‘idpacient‘), KEY ‘index1‘ USING BTREE (‘rodne_cislo‘) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs;
6.3.4
Dimenze Vˇ ek pacienta
Dimenze reprezentuje vˇek, kter´eho pacient dovrˇsil ke dni, ve kter´em byla uskuteˇcnˇena n´avˇstˇeva zdravotnick´eho zaˇr´ızen´ı a vyk´az´an pˇr´ısluˇsn´ y v´ ykon. D´ıky t´eto informaci je pak moˇzn´e prostˇrednictv´ım vhodnˇe navrˇzen´ ych OLAP pohled˚ u analyzovat napˇr´ıklad n´asleduj´ıc´ı: • Kolik v´ ykon˚ u bylo provedeno na pacientech ve vˇeku 30 - 35 za obdob´ı leden aˇz bˇrezen roku 2008? • Jak´ a byla celkov´ a ˇc´ astka vyfakturovan´a jednotliv´ ym pojiˇst’ovn´am k proplacen´ı za pacienty starˇs´ı 70 let za rok 2008 a 2009? • Na z´ akladˇe jak´ ych diagn´ oz byly prov´adˇeny v´ ykony na pacientech mladˇs´ıch 20 let? Atd. Vytvoˇ ren´ı tabulky dimenze CREATE TABLE ‘vek‘ ( ‘idvek‘ int(11) NOT NULL auto_increment, ‘vek‘ int(11) NOT NULL, PRIMARY KEY (‘idvek‘) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs;
30
6.3.5
Dimenze V´ ykon
Dimenze obsahuje seznam vˇsech dostupn´ ych zdravotnick´ ych v´ ykon˚ u, kter´e jsou vyd´av´any Vˇseobecnou zdravotn´ı pojiˇst’ovnou ve formˇe ˇc´ıseln´ık˚ u. S hodnotami tohoto ˇc´ıseln´ıku rovnˇeˇz pracuj´ı vˇsechny zdravotnick´e aplikace, kter´e vyuˇz´ıvaj´ı jednotliv´e poloˇzky jednak k zaznamen´av´ an´ı proveden´ ych v´ ykon˚ u, tak k v´ ypoˇctu statistick´ ych u ´daj˚ u. Data importovan´ azˇ c´ıseln´ıku Kaˇzd´ y zdravotnick´ y v´ ykon obsaˇzen´ y v ˇc´ıseln´ıku je reprezentov´an sadou parametr˚ u. Z hlediska zamˇeˇren´ı implementovan´e aplikace nen´ı nutn´e z ˇc´ıseln´ıku importovat vˇsechny dostupn´e poloˇzky kaˇzd´eho v´ ykonu, ale pouze ty, kter´e jsou pˇr´ımo vyuˇzity k prov´adˇen´ı OLAP anal´ yz, nebo jsou jejich hodnoty pouˇzity bˇehem samotn´eho importu d´avek ambulantnˇe sm´ıˇsen´ ych do datov´eho skladu. Tˇemito poloˇzkami jsou: • K´ od v´ ykonu - jednoznaˇcn´ a ˇc´ıseln´a reprezentace zdravotnick´eho v´ ykonu. Pr´avˇe tato ˇc´ıseln´ a reprezentace se vyuˇz´ıv´a pˇri komunikaci zdravotnick´eho zaˇr´ızen´ı s jednotliv´ ymi pojiˇst’ovnami prostˇrednictv´ım d´avek vygenerovan´ ych zdravotnickou aplikac´ı. • N´ azev v´ ykonu - textov´ a reprezentace zdravotnick´eho v´ ykonu. Stejnˇe jako v pˇr´ıpadˇe ˇ u poloˇzek mˇes´ıc a den v mˇes´ıci je i zde umoˇznˇena uˇzivateli pˇri konstrukci dimenze Cas OLAP pohledu volba, zda zobrazit ve vr´acen´em v´ ysledku OLAP dotazu v´ ykony ve formˇe k´ odu, nebo ve formˇe textov´e reprezentace. Pˇrestoˇze l´ekaˇr prov´ad´ı v r´amci sv´e praxe omezenou sadu v´ ykon˚ u a d´ıky tomu jiˇz podle ˇc´ısla v´ ykonu pˇresnˇe pozn´a o jak´ y v´ ykon ve skuteˇcnosti jde, aniˇz by potˇreboval textov´ y popis, je z hlediska univerz´alnosti aplikace vhodn´e, aby aplikace tuto volbu umoˇzn ˇovala a proto se do datov´eho skladu zav´ ad´ı i tato informace. • Body za v´ ykon - pˇredstavuj´ı formu ohodnocen´ı n´aroˇcnosti kaˇzd´eho zdravotnick´eho v´ ykonu v ˇc´ıseln´ıku a na z´ akladˇe t´eto hodnoty je l´ekaˇri vypoˇc´ıt´ana zdravotnickou ’ pojiˇst ovnou ˇc´ astka k proplacen´ı. S kaˇzd´ ym l´ekaˇrem m´a zdravotnick´a pojiˇst’ovna sjednanou cenu za jeden bod a proto je fin´aln´ı fakturovan´a ˇc´astka k proplacen´ı vypoˇc´ıt´ana jako: fakturovan´ a ˇc´ astka = (souˇcet bod˚ u za vˇsechny proveden´e v´ykony) * (cena za bod ) Hodnota t´eto poloˇzky je n´aslednˇe pouˇzita bˇehem importov´an´ı d´avky ambulantnˇe sm´ıˇsen´e do do datov´eho skladu, kdy je od n´ı odvozuj´ı nˇekter´e mˇern´e jednotky. • minuty - pˇredstavuj´ı celkov´ y poˇcet minut, kter´ ym je kaˇzd´ y v´ ykon ohodnocen. Vytvoˇ ren´ı tabulky dimenze CREATE TABLE ‘vykon‘ ( ‘idvykon‘ int(11) NOT NULL auto_increment, ‘kod‘ varchar(45) NOT NULL, ‘nazev‘ text NOT NULL, ‘body‘ int(11) NOT NULL, ‘minuty‘ float NOT NULL, PRIMARY KEY (‘idvykon‘), 31
KEY ‘index1‘ USING BTREE (‘kod‘) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs;
6.3.6
Dimenze Pojiˇ st’ovna
ˇ e republice. Tento Dimenze obsahuje seznam vˇsech zdravotn´ıch pojiˇst’oven p˚ usob´ıc´ıch v Cesk´ seznam je rovnˇeˇz poskytov´ an ve formˇe ˇc´ıseln´ıku, kdy je kaˇzd´ y z´aznam o pojiˇst’ovnˇe sloˇzen z n´asleduj´ıc´ıch dvou poloˇzek, kter´e se obˇe importuj´ı do datov´eho skladu. • K´ od pojiˇ st’ovny - jedineˇcn´ y tˇr´ım´ıstn´ y ˇc´ıseln´ y k´od reprezentuj´ıc´ı pojiˇst’ovnu. • N´ azev pojiˇ st’ovny - pln´ y n´azev zdravotn´ı pojiˇst’ovny. V tabulce se t´eˇz vyskytuje sloupec ”cena bodu”, kter´ y slouˇz´ı k uchov´av´an´ı smluvn´ı ’ ceny za jeden bod pro kaˇzdou zdravotn´ı pojiˇst ovnu. Hodnoty tohoto sloupce se vyuˇz´ıvaj´ı pˇri importu d´ avky do datov´eho skladu. Vytvoˇ ren´ı tabulky dimenze CREATE TABLE ‘pojistovna‘ ( ‘idpojistovna‘ int(11) NOT NULL auto_increment, ‘kod‘ varchar(10) NOT NULL, ‘nazev‘ varchar(100) NOT NULL, ‘cena_bodu‘ float NOT NULL default ’1’, PRIMARY KEY (‘idpojistovna‘) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs;
6.3.7
Dimenze D´ avka
Dimenze obsahuje informace o vˇsech d´avk´ach, kter´e byly importov´any do datov´eho skladu. Na z´akladˇe t´eto dimenze je pak moˇzn´e prov´adˇet anal´ yzu pouze tˇech dat, kter´e n´aleˇz´ı konkr´etn´ı d´ avce. Kaˇzd´ y z´ aznam obsahuje n´asleduj´ıc´ı poloˇzky: • Poˇradov´e ˇc´ıslo d´ avky • Rok uzavˇren´ı z´ aznam˚ u v d´ avce • Mˇes´ıc uzavˇren´ı z´ aznam˚ u v d´avce • Pojiˇst’ovna, pro kterou je d´ avka urˇcena • Datum a ˇcas importu d´ avky do datov´eho skladu Pro u ´ˇcely OLAP anal´ yzy se vyuˇz´ıv´a pouze poˇradov´e ˇc´ıslo d´avky. Ostatn´ı poloˇzky jsou vyuˇzity aplikac´ı pouze pro veden´ı evidence naimportovan´ ych d´avek.
32
Vytvoˇ ren´ı tabulky dimenze CREATE TABLE ‘davka‘ ( ‘iddavka‘ int(11) NOT NULL auto_increment, ‘poradove_cislo‘ int(11) NOT NULL, ‘rok_uzavreni‘ year(4) NOT NULL, ‘mesic_uzavreni‘ int(11) NOT NULL, ‘pojistovna‘ int(11) NOT NULL, ‘importovana_v‘ datetime NOT NULL, PRIMARY KEY (‘iddavka‘), KEY ‘fk_davka_pojistovna‘ (‘pojistovna‘) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs;
6.3.8
Dimenze Diagn´ oza
Dimenze obsahuje seznam vˇsech diagn´oz, kter´ y je rovnˇeˇz dod´av´an ve formˇe ˇc´ıseln´ıku. Z kaˇzd´eho z´ aznamu o diagn´ oze se do datov´eho skladu importuj´ı n´asleduj´ıc´ı dvˇe poloˇzky: • K´ od diagn´ ozy - jedineˇcn´ y k´od reprezentuj´ıc´ı diagn´ozu. • N´ azev diagn´ ozy Vytvoˇ ren´ı tabulky dimenze CREATE TABLE ‘diagnoza‘ ( ‘iddiagnoza‘ int(11) NOT NULL auto_increment, ‘kod‘ varchar(45) NOT NULL, ‘nazev‘ varchar(100) NOT NULL, PRIMARY KEY (‘iddiagnoza‘), KEY ‘index+‘ USING BTREE (‘kod‘) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs;
6.3.9
Fakta
Tabulka fakt˚ u obsahuje odkazy na jednotliv´e tabulky dimenz´ı definovan´ ych v´ yˇse a mˇern´e jednotky, nad kter´ ymi bude prob´ıhat samotn´a Anal´ yza. Tˇemito mˇern´ ymi jednotkami jsou: • Poˇcet proveden´ı v´ ykonu • Body za v´ ykon • Fakturovan´ a ˇc´ astka za v´ ykon • Minuty v´ ykonu Vytvoˇ ren´ı tabulky dimenze CREATE TABLE ‘fakta‘ ( ‘idfakta‘ int(11) NOT NULL auto_increment, ‘cas‘ int(11) NOT NULL, ‘pacient‘ int(11) NOT NULL, 33
‘vek‘ int(11) NOT NULL, ‘pojistovna‘ int(11) NOT NULL, ‘diagnoza‘ int(11) NOT NULL, ‘vykon‘ int(11) NOT NULL, ‘davka‘ int(11) NOT NULL, ‘opakovani_vykonu‘ int(11) NOT NULL, ‘bodu_za_vykon‘ int(11) NOT NULL, ‘castka‘ float NOT NULL, ‘minuty‘ float NOT NULL, PRIMARY KEY (‘idfakta‘), KEY ‘fk_fakta_pacient‘ (‘pacient‘), KEY ‘fk_fakta_vykon‘ (‘vykon‘), KEY ‘fk_fakta_vek‘ (‘vek‘), KEY ‘fk_fakta_pojistovna‘ (‘pojistovna‘), KEY ‘fk_fakta_diagnoza‘ (‘diagnoza‘), KEY ‘fk_fakta_cas‘ (‘cas‘), KEY ‘fk_fakta_davka‘ (‘davka‘) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs;
34
Kapitola 7
Implementace aplikace MedOLAP Kapitola se zab´ yv´ a implementac´ı aplikace MedOLAP, kter´a je urˇcena k prov´adˇen´ı anal´ yz nad datov´ ym skladem, jehoˇz struktura byla detailnˇe pops´ana v pˇredchoz´ı kapitole.
Obr´ azek 7.1: Hlavn´ı okno aplikace
7.1
Pouˇ zit´ e v´ yvojov´ e prostˇ red´ı
Aplikace byla vytvoˇrena ve v´ yvojov´em prostˇred´ı C++ Builder 2006 [8][9] spoleˇcnosti Borland. Jedn´ a se o dvoucestn´ y vizu´aln´ı n´astroj pro v´ yvoj aplikac´ı v jazyce C++. Slouˇz´ı k v´ yvoji jak graficky orientovan´ ych aplikac´ı, tak i konzolov´ ych aplikac´ı, distribuovan´ ych datab´azov´ ych aplikac´ı, aplikac´ı pro WWW atd. Hlavn´ı pˇrednost´ı C++ builderu stejnˇe jako v pˇr´ıpadˇe v´ yvojov´eho prostˇred´ı Delphi je vyuˇzit´ı komponent. 35
Komponenty pˇredstavuj´ı pˇreddefinovan´e a speci´aln´ım zp˚ usobem pˇreloˇzen´e tˇr´ıdy, kter´e zapouzdˇruj´ı v´ıcem´enˇe samostatn´e a univerz´alnˇe pouˇziteln´e stavebn´ı prvky program˚ u jako jsou napˇr´ıklad n´ astroje pro pr´ aci s datab´azemi, ovl´adac´ı prvky Windows a dalˇs´ı. V´ ystavba aplikace prostˇrednictv´ım komponent tedy v´ yraznˇe sniˇzuje poˇzadavky na ˇcas, kter´ y je potˇrebn´ y k jej´ımu vytvoˇren´ı. Kromˇe standardn´ıch komponent, kter´e jsou um´ıstˇeny v knihovnˇe VCL(Visual Component library), je moˇzn´e t´eˇz pˇri vytv´aˇren´ı aplikace vyuˇz´ıt i komponenty tˇret´ıch stran, at’ uˇz volnˇe dostupn´e, ˇci placen´e.
7.1.1
Programovac´ı jazyk C++
C++ [4] navrhl Bjarne Stroustrup. Pˇr´ıˇcinou byla jeho negativn´ı zkuˇsenost z disertaˇcn´ı pr´ace, jeˇz obsahovala program v jazyce Simula. Tento objektovˇe orientovan´ y jazyk mu umoˇznil efektivn´ı anal´ yzu probl´emu a v´ yvoj programu, ale pro pouˇzit´ı na re´aln´ ych datech byl pˇr´ıliˇs pomal´ y. Alternativu poskytovaly niˇzˇs´ı jazyky, zejm´ena BCPL - prapˇredek dneˇsn´ıho C. Ty byly dostateˇcnˇe rychl´e, ale neumoˇznily dostateˇcnˇe pˇrirozen´ y n´avrh a t´ım i efektivn´ı v´ yvoj programu. Pozdˇeji v Bellov´ ych laboratoˇr´ıch ˇreˇsil Stroustrup podobn´ y probl´em jako ve sv´e disertaˇcn´ı pr´aci. Navrhl a implementoval proto jazyk, kter´ y mˇel b´ yt stejnˇe efektivn´ı a pˇrenositeln´ y jako C, umoˇznil vytv´ aˇren´ı knihoven, kombinov´an´ı s jin´ ymi jazyky (C, Fortran, ...), ale z´aroveˇ n mˇel obsahovat podporu pro objektovˇe orientovan´e programov´an´ı. Tento jazyk se jmenoval C with Classes, umoˇznil do C pˇridat simulovsk´e tˇr´ıdy a pˇrekl´adal se pomoc´ı speci´aln´ıho preprocesoru Cpre do ˇcist´eho C. D˚ uvodem byla pˇredevˇs´ım dostupnost a efektivita jazyka C, nav´ıc nebylo nutn´e ps´ at pro kaˇzdou platformu zvl´aˇst’ gener´ator k´odu. V dalˇs´ıch verz´ıch se nov´ y jazyk pˇrejmenoval na C++ a pˇrekladaˇc na Cfront. Pˇrekladaˇc byl postupnˇe uvolnˇen pro ˇskoly, pozdˇeji vyˇsla i komerˇcn´ı verze. Z´aroveˇ n s pˇrekladaˇcem se podstatn´ ym zp˚ usobem vyv´ıjel i samotn´ y jazyk, u ´pravami proˇsel n´avrh objektovˇe orientovan´eho programov´ an´ı, pˇridaly se v´ yjimky, ˇsablony a prostory jmen. Neofici´aln´ı normou se stala kniha The C++ Annotated Reference Manual z roku 1990. Organizace ANSI a ISO zaˇcaly postupnˇe vyv´ıjet standard. Jednotliv´e verze n´avrhu standardu uvolˇ novaly, aby mohli v´ yrobci pˇrekladaˇc˚ u implementovat zmˇeny. Standard byl schv´alen v roce 1998. Filozofie jazyka Ve sv´e knize [7] Bjarne Stroustrup popisuje nˇekter´a pravidla, kter´e pouˇzil pˇri n´avrhu C++: • C++ je navrhnut jako staticky typov´ y, univerz´aln´ı jazyk, kter´ y je v´ ykonn´ y a portovateln´ y jako jazyk C. • C++ je navrhnut k pˇr´ım´e a u ´pln´e podpoˇre r˚ uzn´ ych programovac´ıch styl˚ u (procedur´ aln´ı programov´ an´ı, datov´e abstrakce, objektovˇe orientovan´e programov´an´ı a generick´e programov´ an´ı). • C++ je navrhnut, aby byl co moˇzn´a nejv´ıce zpˇetnˇe kompatibiln´ı s jazykem C. Z toho vypl´ yv´ a, ˇze poskytuje snadn´ y pˇrechod z jazyka C. • C++ se vyh´ yb´ a vlastnostem, kter´e jsou z´avisl´e na konkr´etn´ı platformˇe, nebo nejsou obecn´eho pouˇzit´ı. • C++ je navrˇzen tak, aby fungoval bez nutnosti m´ıt nˇejak´e sloˇzit´e programovac´ı prostˇred´ı. 36
Nov´ e vlastnosti C++ oproti jeho pˇ redch˚ udci Kromˇe nˇekolika drobn´ ych omezen´ı a pomˇernˇe m´alo v´ yznamn´ ych rozˇs´ıˇren´ı najdeme v C++ nav´ıc pˇredevˇs´ım podporu objektovˇe orientovan´eho programov´an´ı (OOP), moˇznost ps´ at ˇsablony s nimiˇz m˚ uˇzeme nˇejakou funkci nebo tˇr´ıdu parametrizovat typem a zpracov´ an´ı chybov´ ych stav˚ u pomoc´ı v´ yjimek. Za zm´ınku stoj´ı tak´e prostory jmen a pˇretˇeˇzov´an´ı funkc´ı a oper´ator˚ u. Nejd˚ uleˇzitˇejˇs´ı novou vlastnost´ı je urˇcitˇe podpora OOP. Pˇri spr´avn´em n´avrhu vyv´ıjen´eho programu podle ideologie OOP je v C++ urˇcitˇe menˇs´ı riziko konfliktu identifik´ator˚ u, menˇs´ı mnoˇzstv´ı pamˇet’ov´ ych chyb typu n + 1 (vyv´aˇzen´e spoustou nov´ ych a stejnˇe nebezpeˇcn´ ych chyb spojen´ ych s OOP). Je-li vyv´ıjen program, kter´ y ˇreˇs´ı probl´em, jeˇz je uˇz ”od pˇr´ırody”a nikoli n´asiln´ ym n´ avrhem objektovˇe orientovan´ y, pom˚ uˇze v C++ OOP na u ´rovni syntaxe jazyka k ˇcistˇs´ımu k´ odu m´enˇe n´ achyln´emu na chyby. Standardn´ı knihovna C++ standard z roku 1998 se skl´ad´a ze dvou ˇc´ast´ı: j´adra jazyka a standardn´ı knihovny. Druh´a jmenovan´ a obsahuje mnoho z STL (Standard Template Library) a nepatrnˇe modifikovanou verzi standardn´ı knihovny jazyka C. STL je standardn´ı knihovna ˇsablon jazyka C++. Knihovna by mˇela b´ yt dod´av´ana s kaˇzd´ ym pˇrekladaˇcem C++. V STL m˚ uˇzeme naj´ıt mnoho r˚ uzn´ ych a uˇziteˇcn´ ych ˇsablon. Mimo jin´e zde jsou ˇsablony datov´ ych kontejner˚ u, iter´atory a ˇsablony algoritm˚ u, kter´e pomoc´ı iter´ator˚ u pracuj´ı s datov´ ymi kontejnery. Pˇ renositelnost mezi jazyky C++ a C C++ je ˇcasto oznaˇcov´ an jako n´ adstavba na jazykem C, ale nen´ı to tak u ´plnˇe pravda. Vˇetˇsina k´odu napsan´eho v C m˚ uˇze b´ yt bez probl´em˚ u pˇreloˇzena pˇrekladaˇcem jazyka C++, ale je zde nˇekolik rozd´ıl˚ u, kter´e mohou zp˚ usobit, ˇze k´od nebude fungovat, nebo jeho chov´an´ı bude v C++ odliˇsn´e. Bˇeˇzn´ ym portaˇcn´ım probl´emem je, ˇze C++ definuje mnoho nov´ ych kl´ıˇcov´ ych slov jako this nebo class, kter´e mohou b´ yt v C programu pouˇzity jako identifik´atory. Nˇekter´e nekompatibility byly odstranˇeny posledn´ım (C99) C standardem, avˇsak na druhou stranu, tento standard pˇrin´ aˇs´ı do jazyka C mnoˇzstv´ı nov´ ych vlastnost´ı, takˇze se oba jazyky sp´ıˇse odchyluj´ı, neˇz sbliˇzuj´ı.
7.2
Podporovan´ e pˇ r´ıstupy aplikace k datov´ emu skladu
Aplikace podporuje dva typy pˇr´ıstupu k datov´emu skladu: • vzd´ alen´ y pˇr´ıstup • lok´ aln´ı pˇr´ıstup
7.2.1
Vzd´ alen´ y pˇ r´ıstup
V pˇr´ıpadˇe vzd´ alen´eho pˇr´ıstupu se aplikace pˇripojuje prostˇrednictv´ım protokolu TCP / IP k plnohodnotn´emu datab´ azov´emu serveru, na kter´em je datov´ y sklad provozov´an. Jedn´ a se tedy o klasickou architekturu klient / server, kdy aplikace v roli lehk´eho klienta pouze generuje dotazy, kter´e jsou vzd´ alen´emu serveru zasl´any a server po jejich zpracov´an´ı vrac´ı poˇzadovan´e v´ ysledky.
37
Databázový server MySQL Aplikace MedOLAP datový sklad
intranet/Internet TCP/IP
Obr´ azek 7.2: Vzd´alen´ y pˇr´ıstup k datov´emu skladu
7.2.2
Lok´ aln´ı pˇ r´ıstup
V pˇr´ıpadˇe lok´ aln´ıho pˇr´ıstupu aplikace pracuje jako klient i server z´aroveˇ n. Tento pˇr´ıstup je realizov´ an prostˇrednictv´ım embedded verze datab´azov´eho serveru MySQL, kter´ y je poskytov´an ve formˇe dynamick´e knihovny. Instance serveru pro obsluhu klientsk´ ych poˇzadavk˚ u je pak zav´ adˇena pˇr´ımo do adresov´eho prostoru aplikace a umoˇzn ˇuje pˇr´ım´ y pˇr´ıstup k datab´ azi. Datab´azov´e soubory reprezentuj´ıc´ı datov´ y sklad jsou v tomto pˇr´ıpadˇe um´ıstˇeny na stejn´em poˇc´ıtaˇci, jako samotn´ a aplikace. Vzhledem k souˇcasn´emu zamˇeˇren´ı aplikace, kdy m´a b´ yt vyuˇz´ıv´ ana v ambulanc´ıch soukrom´ ych l´ekaˇr˚ u, bude pˇredstavovat lok´aln´ı pˇr´ıstup k datov´emu skladu preferovanou volbu. Mezi z´ asadn´ı v´ yhody t´eto embedded verze patˇr´ı zejm´ena: • nulov´ a administrace - uˇzivatel nem´a v˚ ubec povˇedom´ı o tom, ˇze na jeho stroji bˇeˇz´ı datab´ azov´ y server. Odpad´a tedy jak´akoliv administrace, kterou by bylo nutn´e v pˇr´ıpadˇe plnohodnotn´eho serveru ˇreˇsit. • mal´ a velikost - cel´ a dynamick´a knihovna v pouˇzit´e verzi 4.1 m´a velikost necel´ ych 6 MB. • vysok´ y dotazovac´ı v´ ykon - data nen´ı nutn´e transportovat mezi vzd´alen´ ym datab´ azov´ ym serverem a aplikac´ı, ale pracuje se s nimi pˇr´ımo v pamˇeti, coˇz vede ke znaˇcn´emu sn´ıˇzen´ı doby mezi zad´ an´ım dotazu a vr´acen´ım v´ ysledku operace. Nicm´enˇe v pˇr´ıpadˇe, kdy bude aplikace provozov´ana na stroji s horˇs´ı hardwarovou konfigurac´ı m˚ uˇze naopak doj´ıt pˇri n´aroˇcnˇejˇs´ıch dotazech nad rozs´ahl´ ym datov´ ym skladem vyˇzaduj´ıc´ıch zv´ yˇsen´e n´ aroky na mnoˇzstv´ı pamˇeti a v´ ypoˇcetn´ı v´ ykon naopak ke znaˇcn´e degradaci odezvy na zadan´ y dotaz.
Obr´ azek 7.3: Lok´aln´ı pˇr´ıstup k datov´emu skladu
38
7.2.3
Dialog konfigurace pˇ ripojen´ı
Na z´akladˇe v´ yˇse zm´ınˇen´ ych pˇr´ıstup˚ u byl vytvoˇren konfiguraˇcn´ı dialog, kter´ y umoˇzn ˇuje uˇzivateli zvolit preferovan´ y typ pˇripojen´ı a nastavit jednotliv´e parametry. V pˇr´ıpadˇe zvolen´ı volby vzd´ alen´eho pˇr´ıstupu k datov´emu skladu jsou od uˇzivatele poˇzadov´ any n´asleduj´ıc´ı informace: • Server - adresa datab´ azov´eho serveru MySQL, na kter´em je provozov´an datov´ y sklad • Port - ˇc´ıslo portu vzd´ alen´eho serveru • Datab´ aze - n´ azev datab´ aze obsahuj´ıc´ı tabulky datov´eho skladu • Uˇ zivatelsk´ e jm´ eno a heslo - pˇrihlaˇsovac´ı u ´daje pro pˇripojen´ı k datab´azi Pokud se uˇzivatel rozhodne pro lok´aln´ı pˇr´ıstup, tak je nutn´e zadat plnou cestu k adres´ aˇri obsahuj´ıc´ıho datab´ azov´e soubory datov´eho skladu. Dialog konfigurace pˇripojen´ı je zobrazen na obr´ azku 7.4. Aplikace rovnˇeˇz uˇzivateli umoˇzn ˇuje tyto nastaven´e parametry uloˇzit a d´ıky tomu t´eˇz poskytnout volbu automatick´eho pˇripojen´ı k datov´emu skladu, kdy aplikace provede pˇripojen´ı k datov´emu skladu ihned po sv´em spuˇstˇen´ı.
Obr´ azek 7.4: Konfigurace pˇripojen´ı k datov´emu skladu
7.3
Importov´ an´ı ˇ c´ıseln´ık˚ u VZP do datov´ eho skladu
Jak jiˇz bylo zm´ınˇeno dˇr´ıve, obsah dimenz´ı v´ ykon, diagn´oza a pojiˇst’ovna je z´ısk´av´an z jednotliv´ ych ˇc´ıseln´ık˚ u poskytovan´ ych VZP. K tomu, aby bylo moˇzn´e data z tˇechto ˇc´ıseln´ık˚ u importovat do datov´eho skladu, byla vytvoˇrena univerz´aln´ı komponenta, jej´ımˇz u ´kolem je import jak´ehokoliv ˇc´ıseln´ıku pouze na z´akladˇe pˇredan´e konfigurace. 39
7.3.1
Form´ at ˇ c´ıseln´ık˚ u dod´ avan´ ych VZP
Poloˇzky, kter´e m˚ uˇze ˇc´ıseln´ık obsahovat lze rozdˇelit do dvou typ˚ u: • ˇc´ıseln´ a hodnota • textov´ y ˇretˇezec Jednotliv´e poloˇzky kaˇzd´eho z´ aznamu jsou mezi sebou oddˇeleny ˇc´arkou a poloˇzky typu textov´ y ˇretˇezec jsou ohraniˇceny dvojit´ ymi uvozovkami. Importovac´ı komponenta pˇrij´ım´a na vstupu dva parametry: • plnou cestu k souboru ˇc´ıseln´ıku, jehoˇz obsah se m´a zpracovat • konfiguraci vytvoˇrenou pro konkr´etn´ı ˇc´ıseln´ık
7.3.2
Konfigurace komponenty
Konfigurace obsahuje n´ azev tabulky c´ılov´e dimenze a kolekci objekt˚ u, kter´e reprezentuj´ı jednotliv´e poloˇzky z´ aznamu. Kaˇzd´ y takov´ yto objekt je tvoˇren sadou parametr˚ u, na z´akladˇe kter´ ych je moˇzn´e pˇresnˇe lokalizovat jak poˇzadovanou poloˇzku ve zdrojov´em ˇc´ıseln´ıku, tak c´ılovou poloˇzku dimenze v datov´em skladu. Tˇemito parametry jsou: • poˇrad´ı poloˇzky v z´ aznamu - ˇc´ıslov´ano od 0. • typ poloˇzky - jedn´ a se bud’ o ˇc´ıslo nebo ˇretˇezec • n´ azev sloupce v c´ılov´e tabulce datov´eho skladu, do kter´e se m´a hodnota poloˇzky uloˇzit.
Poloˇ zka k´ od v´ ykonu n´ azev trv´ an´ı v´ ykonu body za v´ ykon
N´ azev tabulky dimenze: vykon parametry objektu Poˇ rad´ı poloˇ zky typ sloupec v dimenzi 0 ˇretˇezec kod 4 ˇretˇezec nazev 7 ˇc´ıslo body 12 ˇc´ıslo minuty
Tabulka 7.1: Konfigurace importu dat pro ˇc´ıseln´ık V´ ykony N´ azev tabulky dimenze: diagnoza Kolekce objekt˚ u poloˇzek: Poloˇ zka Poˇ rad´ı poloˇ zky typ sloupec v dimenzi k´ od diagn´ ozy 0 ˇretˇezec kod n´ azev diagn´ ozy 5 ˇretˇezec nazev Tabulka 7.2: Konfigurace importu dat pro ˇc´ıseln´ık Diagn´ozy
40
N´ azev tabulky dimenze: pojistovna Kolekce objekt˚ u poloˇzek: Poloˇ zka Poˇ rad´ı poloˇ zky typ sloupec v dimenzi ’ k´ od pojiˇst ovny 0 ˇretˇezec kod n´ azev pojiˇst’ovny 1 ˇretˇezec nazev Tabulka 7.3: Konfigurace importu dat pro ˇc´ıseln´ık Pojiˇst’ovny
7.3.3
Postup importov´ an´ı z´ aznam˚ uzˇ c´ıseln´ıku do datov´ eho skladu
1. Otevˇri ˇc´ıseln´ık, jehoˇz pln´ a cesta byla pˇred´ana jako parametr 2. Pro kaˇzd´ y naˇcten´ y z´ aznam(ˇr´adek ˇc´ıseln´ıku) proved’ n´asleduj´ıc´ı: (a) Vyber ze z´ aznamu jen ty poloˇzky, kter´e jsou nadefinov´any v konfiguraci (b) Na z´ akladˇe konfigurace jednotliv´ ych poloˇzek a pˇredan´eho n´azvu tabulky c´ılov´e dimenze vygeneruj v´ ysledn´ y SQL INSERT pˇr´ıkaz (c) Zaˇsli vygenerovan´ y pˇr´ıkaz datab´azov´emu serveru ke zpracov´an´ı
7.4
Import d´ avek do datov´ eho skladu
Aby bylo moˇzn´e prov´ adˇet nad datov´ ym skladem OLAP anal´ yzy, je nejprve nutn´e tento sklad naplnit daty z importovan´ ych d´avek. Metodika vyhodnocov´an´ı doklad˚ u jednotliv´ ych pojiˇst’oven umoˇzn ˇuje prostˇrednictv´ım jednoho souboru pˇred´avat pojiˇst’ovnˇe ke zpracov´ an´ı v´ıce neˇz jen jednu d´ avku, kdy jednotliv´e d´avky mohou b´ yt r˚ uzn´eho typu, podle toho, jak´ a ’ data je nutn´e pojiˇst ovnˇe za dan´ a z´ uˇctovac´ı obdob´ı poskytnout. Na obr´azku 7.5 je zobrazen pˇr´ıklad rozloˇzen´ı d´ avek v datov´em souboru. Aplikace tedy mus´ı b´ yt schopna v kaˇzd´em pˇredan´em souboru naleznout vˇsechny d´avky typu ambulantnˇe sm´ıˇsen´e a d´avky ostatn´ıch typ˚ u ignorovat.
Obr´ azek 7.5: Pˇr´ıklad obsahu datov´eho souboru V takov´ ych pˇr´ıpadech, kdy je v jednom souboru nalezeno v´ıce d´avek k importov´an´ı, mus´ı aplikace uˇzivateli umoˇznit, aby mohl s´am pˇr´ıpadnˇe zvolit, kter´e z nalezen´ ych d´avek maj´ı b´ yt importov´ any do datov´eho skladu a kter´e naopak maj´ı b´ yt bˇehem zpracov´an´ı pˇreskoˇceny. 41
7.4.1
Dialog pro importov´ an´ı d´ avek do datov´ eho skladu
K v´ ybˇeru poˇzadovan´ ych d´ avek, kter´e si uˇzivatel pˇreje importovat do datov´eho skladu, byl vytvoˇren dialog zobrazen´ y na obr´azku 7.6. Dialog obsahuje celkem tˇri seznamy, kdy horn´ı seznam zobrazuje soubory, ze kter´ ych se maj´ı jednotliv´e d´avky importovat a rovnˇeˇz pro kaˇzd´ y soubor celkov´ y poˇcet nalezen´ ych d´avek. Nad t´ımto seznamem lze prov´adˇet n´asleduj´ıc´ı operace: • Pˇrid´ an´ı datov´ ych soubor˚ u • Odebr´ an´ı konkr´etn´ıho souboru ze seznamu • Odebr´ an´ı vˇsech soubor˚ u ze seznamu Prostˇredn´ı seznam pak slouˇz´ı pro zobrazen´ı vˇsech d´avek, kter´e byly v konkr´etn´ım souboru nalezeny a rovnˇeˇz umoˇzn ˇuje uˇzivateli dodateˇcn´e zak´az´an´ı importu pro nˇekterou z d´avek v souboru. Pro kaˇzdou nalezenou d´avku se zobrazuje seznam informac´ı, kter´e slouˇz´ı pro z´akladn´ı pˇrehled. Tˇemito informacemi jsou: • ˇ c´ıslo d´ avky - jedineˇcn´e ˇc´ıslo d´avky • charakter d´ avky - jedn´ a se o informaci, zda se jedn´a o p˚ uvodn´ı d´avku, kter´a byla pojiˇst’ovnˇe pˇred´ ana, nebo o d´avku opravnou. • rok - pˇredstavuje rok, ve kter´em byly data v d´avce uzavˇreny • mˇ es´ıc - pˇredstavuje mˇes´ıc, ve kter´em byly data v d´avce uzavˇreny • poˇ cet doklad˚ u - celkov´ y poˇcet doklad˚ u nalezen´ ych v d´avce • celkem v´ ykon˚ u - celkov´ y poˇcet vykazovan´ ych v´ ykon˚ u Spodn´ı seznam je urˇcen k nastaven´ı sjednan´e ceny za jeden bod pro jednotliv´e pojiˇst’ovny. Pˇri importu z´ aznam˚ u d´ avky do datov´eho skladu se pak tato cena vyuˇz´ıv´a pro v´ ypoˇcet v´ ysledn´e fakturovan´e ˇc´ astky za proveden´ y v´ ykon. Hodnotu ceny bodu je nutn´e upravit vˇzdy, kdyˇz dojde mezi l´ekaˇrem a pojiˇst’ovnou ke zmˇenˇe smluvn´ıho vztahu zahrnuj´ıc´ı i novou cenu za bod.
7.5
OLAP tabulka a podporovan´ e operace nad datovou kostkou
K prov´ adˇen´ı OLAP anal´ yz nad datov´ ym skladem prostˇrednictv´ım t´eto aplikace byla vytvoˇrena OLAP tabulka, kter´ a podporuje vˇsechny z´akladn´ı OLAP operace. Tˇemito operacemi jsou: • Drill down • Roll up • Pivoting • Slice & Dice
42
Obr´ azek 7.6: Importov´an´ı d´avek z pˇredan´ ych soubor˚ u Dˇr´ıve, neˇz bude detailnˇeji vysvˇetlena implementace v´ yˇse uveden´ ych OLAP operac´ı, je nutn´e zm´ınit, jak´ ym zp˚ usobem jsou v aplikaci prezentov´any jednotliv´e dimenze, kter´e se vyskytuj´ı v datov´em skladu a kter´e byly podrobnˇe pops´any v pˇredchoz´ı kapitole. Pˇri konstruov´ an´ı pohledu v OLAP tabulce se nevyuˇz´ıv´a ˇz´adn´ ych pˇredem nadefinovan´ ych hierarchi´ı, kter´e jsou vytvoˇren´e na z´akladˇe vztah˚ u mezi jednotliv´ ymi ˇcleny dan´e dimenze tak, jak je to ˇreˇseno v mnoha reportovac´ıch n´astroj´ıch, kdy je v dan´em pohledu pro kaˇzdou dimenzi vybr´ ana ze seznamu jedna z nˇekolika dostupn´ ych hierarchi´ı a na z´akladˇe prov´adˇen´ı pˇrechodu mezi jednotliv´ ymi u ´rovnˇemi t´eto hierarchie se mˇen´ı u ´roveˇ n detailnosti aktu´aln´ıho pohledu na mˇern´e jednotky. M´ısto toho je kaˇzd´ y ˇclen kaˇzd´e dimenze v datov´em skladu v aplikaci reprezentov´ an jako atomick´ a, na ostatn´ıch ˇclenech nez´avisl´a, dimenze. Pr´avˇe tyto umˇele vytvoˇren´e dimenze pak vystupuj´ı jako zcela samostatn´e poloˇzky, ze kter´ ych je pohled na mˇern´e jednotky
43
prostˇrednictv´ım operac´ı nad tabulkou tvoˇren.Uˇzivatel si d´ıky tomu pˇr´ıpadn´e hierarchick´e pˇrechody namodeluje dle potˇreby jednoduˇse pˇr´ımo v tabulce pˇrid´av´an´ım ˇci odeb´ır´an´ım atomick´ ych dimenz´ı a nen´ı tedy omezov´an pouˇz´ıv´an´ım pouze pˇredem nadefinovan´ ych hierarchi´ı. N´ıˇze je uveden seznam vˇsech takto odvozen´ ych dimenz´ı, se kter´ ymi OLAP tabulka pracuje: ˇ n´ • Odvozeno z dimenze Cas avˇstˇevy: – dimenze rok – dimenze kvart´ al – dimenze mˇes´ıc – dimenze t´ yden v roce – dimenze kvart´ al – dimenze den v mˇes´ıc´ı – dimenze den v t´ ydnu – dimenze datum • Odvozeno z dimenze Pacient: – dimenze Rodn´e ˇc´ıslo – dimenze Rok narozen´ı – dimenze Pohlav´ı • Odvozeno z dimenze Diagn´ oza (obsahuje pouze jeden ˇclen): – dimenze Diagn´ oza • Odvozeno z dimenze V´ ykon (vyuˇz´ıv´a se pouze jeden ˇclen): – dimenze V´ ykon • Odvozeno z dimenze D´ avka (vyuˇz´ıv´a se pouze jeden ˇclen): ˇ ıslo d´ – dimenze C´ avky • Odvozeno z dimenze Pojiˇst’ovna (obsahuje se pouze jeden ˇclen): – dimenze Pojiˇst’ovna • Odvozeno z dimenze Vˇek (obsahuje se pouze jeden ˇclen): – dimenze Vˇek Z pohledu OLAP tabulky vystupuj´ı i mˇern´e jednotky, kter´e se v konstruovan´em pohledu vyskytuj´ı, jako zcela nez´ avisl´e dimenze, na kter´e lze aplikovat vˇsechny operace, jak´e je moˇzn´e prov´ adˇet se standardn´ımi dimenzemi uveden´ ymi v´ yˇse, coˇz umoˇzn ˇuje pracovat se vˇsemi poloˇzkami dan´eho pohledu jednotn´ ym zp˚ usobem.
44
7.5.1
Podpora OLAP operace Drill down
Operace Drill down je realizov´ ana pˇrid´an´ım nov´e dimenze z panelu dimenz´ı do aktu´aln´ıho pohledu. Novˇe pˇridan´ a dimenze se automaticky pˇrid´a za aktu´alnˇe posledn´ı standardn´ı dimenzi a pˇred nejlevˇejˇs´ı dimenzi typu mˇern´a jednotka v pˇr´ıpadˇe, kdy jiˇz byly nˇekter´e mˇern´e jednotky do pohledu pˇrid´ any. Uvaˇzujme n´ asleduj´ıc´ı pˇr´ıklad, kdy je aktu´alnˇe konstruovan´ y pohled sloˇzen z tˇechto dimenz´ı: dimenze Rok, mˇern´a jednotka Fakturovan´ aˇ c´ astka Takto navrˇzen´ y pohled poskytuje uˇzivateli informaci o vyfakturovan´e ˇc´astce za jednotliv´e roky sv´e l´ekaˇrsk´e praxe. Uˇzivatel by nyn´ı r´ad zjistil, jak byla zjiˇstˇen´a ˇc´astka v dan´ ych letech rozfaturov´ ana mezi jednotliv´e zdravotn´ı pojiˇst’ovny. Z panelu dimenz´ı tedy ’ vybere dimenzi Pojiˇst ovna. Nov´ a dimenze se v tabulce vloˇz´ı na pozici mezi dimenzi rok a dimenzi Fakturovan´ a ˇc´ astka a OLAP tabulka od t´eto chv´ıle jiˇz zobrazuje fakturovan´e ˇc´astky rozdˇelen´e podle jednotliv´ ych pojiˇst’oven.
7.5.2
Podpora OLAP operace Roll up
Operace Roll up je realizov´ ana odebr´an´ım st´avaj´ıc´ı dimenze z OLAP tabulky. Uˇzivatel m˚ uˇze dimenzi odebrat celkem dvˇema zp˚ usoby: • Pˇ res panel dimenz´ı - uˇzivatel vyhled´a v panelu dimenz´ı tu dimenzi, kterou si pˇreje odstranit a odˇskrtnut´ım asociovan´eho checkboxu se provede jej´ı odebr´an´ı z OLAP tabulky. • Pˇ r´ımo v OLAP tabulce - kaˇzd´a dimenze pˇr´ıtomn´a v OLAP tabulce obsahuje tlaˇc´ıtko, jehoˇz stisknut´ım dojde k jej´ımu odebr´an´ı.
7.5.3
Podpora OLAP operace Pivoting
Operace Pivoting se prov´ ad´ı pˇresunut´ım zvolen´e dimenze ze sv´e st´avaj´ıc´ı pozice v OLAP tabulce na pozici novou. Pˇresunut´ı je uskuteˇcnˇeno stiskem lev´eho tlaˇc´ıtka myˇsi v okamˇziku, kdy je kurzor nad danou dimenz´ı a pˇresunem na novou pozici zp˚ usobem drag & drop. Bˇehem samotn´eho pˇresouv´ an´ı aplikace kontroluje, zda se uˇzivatel nesnaˇz´ı pˇresunout standardn´ı dimenzi za nˇekterou z dimenz´ı typu mˇern´a jednotka. V takov´em pˇr´ıpadˇe k pˇresunut´ı nedojde. Pˇresouvat lze mezi sebou i dimenze typu mˇern´a jednotka, ovˇsem tento pˇresun jiˇz nespad´ a do operace pivoting, ale slouˇz´ı pouze k pˇreorganizov´an´ı sloupc˚ u mˇern´ ych jednotek bez toho, aniˇz by se jakkoliv zmˇenil OLAP pohled na tyto mˇern´e jednotky.
7.5.4
Podpora OLAP operac´ı Slice & Dice
Na kaˇzdou dimenzi pˇr´ıtomnou v OLAP tabulce lze aplikovat sadu filtrovac´ıch podm´ınek. Ve v´ ysledn´em pohledu se pak vyskytuj´ı pouze ty hodnoty, kter´e splˇ nuj´ı alespoˇ n jednu z nastaven´ ych podm´ınek pro danou dimenzi. Filtrov´ an´ı hodnot se prov´ ad´ı prostˇrednictv´ım pˇeti n´asleduj´ıc´ıch dialog˚ u: 45
Dialog pro dimenzi Datum Dialog je urˇcen k nastavov´ an´ı filtrovac´ıch podm´ınek dimenze Datum. Umoˇzn ˇuje jak v´ ybˇer konkr´etn´ıch datum˚ u, tak i jednotliv´ ych ˇcasov´ ych interval˚ u. Dialog je zobrazen na obr´azku 7.7. Uˇzivatel m˚ uˇze volit mezi n´ asleduj´ıc´ımi typy interval˚ u • < datum - podm´ınku splˇ nuj´ı vˇsechny datumy, kter´e jsou starˇs´ı neˇz zadan´ y datum • ≤ datum - podm´ınku splˇ nuj´ı vˇsechny datumy, kter´e jsou starˇs´ı nebo stejn´e jako zadan´ y datum. • > datum - podm´ınku splˇ nuj´ı vˇsechny datumy, kter´e jsou novˇejˇs´ı neˇz zadan´ y datum • ≥ datum - podm´ınku splˇ nuj´ı vˇsechny datumy, kter´e jsou novˇejˇs´ı nebo stejn´e jako zadan´ y datum. • interval datum 1, datum 2 - podm´ınku splˇ nuj´ı vˇsechny datumy, kter´e jsou novˇejˇs´ı nebo stejn´e jako datum 1 a z´aroveˇ n starˇs´ı nebo rovny datumu 2.
Obr´ azek 7.7: Dialog pro filtrov´an´ı hodnot dimenze Datum
Dialog pro filtrov´ an´ı ˇ c´ıseln´ ych hodnot Dialog je urˇcen pro filtrov´ an´ı vˇsech dimenz´ı, kter´e obsahuj´ı ˇc´ıseln´e hodnoty. Mezi tyto dimenze patˇr´ı: Rok, Kvart´ al, Mˇ es´ıc, T´ yden v roce, Den v mˇ es´ıci, Den v t´ ydnu, ˇ Rok narozen´ı, Vˇ ek, C´ıslo d´ avky a vˇsechny dimenze typu mˇern´a jednotka. 46
Umoˇzn ˇuje zad´ avat jak konkr´etn´ı ˇc´ıseln´e hodnoty, tak jednotliv´e intervaly. Popis oper´ator˚ u urˇcen´ ych pro vytv´ aˇren´ı interval˚ u je totoˇzn´ y, jako v pˇr´ıpadˇe pˇredchoz´ıho dialogu ovˇsem s t´ım rozd´ılem, ˇze se nezad´ avaj´ı datumy ale ˇc´ıseln´e hodnoty. Dialog je zobrazen na obr´azku 7.8.
Obr´ azek 7.8: Dialog pro filtrov´an´ı ˇc´ıseln´ ych hodnot dimenz´ı
Dialog pro dimenzi Pohlav´ı Dialog slouˇz´ı pro v´ ybˇer pohlav´ı pacienta a je zobrazen na obr´azku 7.9
Obr´ azek 7.9: Dialog pro filtrov´an´ı pohlav´ı
Dialog pro dimenzi Rodn´ eˇ c´ıslo Dialog je urˇcen pro filtrov´ an´ı rodn´ ych ˇc´ısel pacient˚ u. Ve v´ ysledn´em pohledu se pak vyskytnou pouze ti pacienti, jiˇz rodn´e ˇc´ıslo odpov´ıd´a nˇekter´emu v seznamu. Dialog je zobrazen na obr´ azku 7.10 Dialog pro filtrov´ an´ı hodnot ˇ c´ıseln´ıkov´ ych dimenz´ı Dialog je urˇcen pro filtrov´ an´ı hodnot v dimenz´ıch, jejiˇz obsah je tvoˇren daty importovan´ ymi z ˇc´ıseln´ık˚ u VZP. Jedn´ a se o tyto dimenze: • V´ ykon • Diagn´ oza
47
Obr´ azek 7.10: Dialog pro filtrov´an´ı rodn´ ych ˇc´ısel pacient˚ u • Pojiˇst’ovna Dialog obsahuje celkem dva seznamy, kdy v horn´ım jsou zobrazeny vˇsechny hodnoty dimenze a v doln´ım pak pouze ty hodnoty, kter´e byly uˇzivatelem vybr´any z horn´ıho seznamu. Ve v´ ysledn´em pohledu se pak budou vyskytovat pouze tyto vybran´e hodnoty. V horn´ım seznamu lze vyhled´ avat konkr´etn´ı poloˇzky na z´akladˇe kl´ıˇcov´ ych slov zadan´ ych do vyhled´avac´ıho panelu. Dialog je zobrazen na obr´ azku 7.11.
Obr´ azek 7.11: Dialog pro filtrov´an´ı ˇc´ıseln´ıkov´ ych dimenz´ı
48
7.6
Pˇ revod OLAP pohledu na dotaz SQL
Aby bylo moˇzn´e z datov´eho skladu z´ıskat data, kter´a jsou pˇredepsan´a zkonstruovan´ ym OLAP pohledem, je nutn´e tento pohled transformovat do pˇr´ıkazu jazyka SQL, kter´ y je n´aslednˇe zasl´ an datab´ azov´emu serveru ke zpracov´an´ı. Data pˇredstavuj´ıc´ı v´ ysledek zpracov´an´ı dotazu jsou n´ aslednˇe zobrazena v OLAP tabulce. K samotn´emu pˇrevodu OLAP pohledu do podoby pˇr´ıkazu SQL byla vytvoˇrena transformaˇcn´ı komponenta. Pˇri n´ avrhu t´eto komponenty byl kladen velk´ y d˚ uraz na to, aby ji bylo moˇzn´e bez dalˇs´ıch vˇetˇs´ıch modifikac´ı pouˇz´ıt i v jin´ ych komerˇcn´ıch projektech vyuˇz´ıvaj´ıc´ıch ve vˇetˇs´ı ˇci menˇs´ı m´ıˇre OLAP anal´ yzu nad datov´ ym skladem typu hvˇezda, kter´ y je provozov´an na relaˇcn´ım datab´ azov´em serveru. Z toho je zˇrejm´e, ˇze komponenta nesm´ı b´ yt nijak z´avisl´a na zamˇeˇren´ı konkr´etn´ı aplikace v niˇz je vyuˇzita a rovnˇeˇz nesm´ı m´ıt ˇz´adn´e implicitn´ı povˇedom´ı o konkr´etn´ım datov´em skladu, pro kter´ y je dan´ y dotaz sestavov´an. Veˇsker´e informace potˇrebn´e k u ´spˇeˇsn´emu proveden´ı transformace jsou proto komponentˇe pˇred´av´any explicitnˇe.
7.6.1
Konfigurace transformaˇ cn´ı komponenty
Komponenta pˇrij´ım´ a na vstupu konkr´etn´ı OLAP pohled, pro kter´ y se m´a dotaz SQL vygenerovat a kolekci informac´ı o jednotliv´ ych tabulk´ach datov´eho sladu. Kaˇzd´a dimenze pˇr´ıtomn´ a v pohledu obsahuje sadu parametr˚ u, kter´e ve spojen´ı s informacemi o jednotliv´ ych tabulk´ ach dimenz´ı poskytuj´ı komponentˇe dostatek informac´ı k sestaven´ı dotazu. Sch´ema transformace OLAP pohledu na pˇr´ıkaz jazyka SQL je zobrazeno na obr´azku 7.12.
!"#$$%& '( )*+
Obr´ azek 7.12: Sch´ema transformace OLAP pohledu na pˇr´ıkaz jazyka SQL
Kolekce informac´ı o tabulk´ ach datov´ eho sladu Kaˇzd´a poloˇzka v t´eto kolekci reprezentuje jednu tabulku v datov´em skladu a obsahuje n´asleduj´ıc´ı informace: • N´ azev - n´ azev tabulky • Prim´ arn´ı kl´ıˇ c - urˇcuje n´ azev sloupce, kter´ y je prim´arn´ım kl´ıˇcem tabulky • Ciz´ı kl´ıˇ c - urˇcuje n´ azev sloupce v tabulce fakt˚ u, kter´ y reprezentuje vazbu na tuto tabulku a spolu s prim´ arn´ım kl´ıˇcem je urˇcen pro vygenerov´an´ı obsahu klauzule JOIN pˇri sestavov´ an´ı v´ ysledn´eho dotazu. Pˇri sestavov´ an´ı t´eto kolekce plat´ı pravidlo, ˇze na prvn´ım m´ıstˇe v kolekci se vyskytuje poloˇzka obsahuj´ıc´ı informace o tabulce fakt˚ u. V tabulce 7.4 je zobrazen obsah kolekce, kter´ y 49
N´ azev fakta cas pacient vykon vek pojistovna davka diagnoza
Prim´ arn´ı kl´ıˇ c idcas idpacient idvykon idvek idpojistovna iddavka iddiagnoza
Ciz´ı kl´ıˇ c cas pacient vykon vek pojistovna davka diagnoza
Reprezentovan´ a tabulka tabulka fakta tabulka cas tabulka pacient tabulka vykon tabulka vek tabulka pojistovna tabulka davka tabulka diagnoza
Tabulka 7.4: Kolekce informac´ı o tabulk´ach implementovan´eho datov´eho skladu reprezentuje informace o tabulk´ ach datov´eho skladu implementovan´eho v r´amci tohoto diplomov´eho projektu. Parametry dimenz´ı Kaˇzd´a dimenze v OLAP pohledu obsahuje pro potˇreby transformaˇcn´ı komponenty n´asleduj´ıc´ı sadu parametr˚ u: • Tabulka - index poloˇzky v kolekci informac´ı o tabulk´ach datov´eho skladu, kter´ a obsahuje informace o asociovan´e tabulce • Sloupce - kolekce n´ azv˚ u sloupc˚ u v asociovan´e tabulce dimenz´ı, kter´ ymi je tato dimenze reprezentov´ ana. Napˇr´ıklad u dimenze Mˇes´ıc budou obsahem t´eto kolekce hodnoty mesic a nazev mesice. • Aktivn´ı sloupec - index do kolekce Sloupce odkazuj´ıc´ı na n´azev sloupce, kter´ y se m´ a pouˇz´ıt v seznamu vr´ acen´ ych sloupc˚ u v klauzuli SELECT a n´aslednˇe v seznamu sloupc˚ u v klauzuli GROUP BY, podle kter´ ych se m´a prov´adˇet seskupov´an´ı(pokud se nejedn´ a o dimenzi typu mˇern´a jednotka). • Filtrovac´ı sloupec - index do kolekce Sloupce odkazuj´ıc´ı na n´azev sloupce, kter´ y je pouˇzit pˇri definov´ an´ı podm´ınek v klauzuli WHERE. • Typ dimenze - informace o tom, zda se jedn´a o standardn´ı dimenzi, nebo o dimenzi typu mˇern´ a jednotka. • Agregaˇ cn´ı funkce - V pˇr´ıpadˇe dimenze typu mˇern´a jednotka se zde definuje agregaˇcn´ı operace, kter´ a se m´ a prov´est nad aktivn´ım sloupcem. • Filtrovac´ı podm´ınky - kolekce podm´ınek, kter´e jsou aplikov´any v klauzuli WHERE pro zvolen´ y filtrovac´ı sloupec. Obsah t´eto kolekce je generov´an prostˇrednictv´ım jiˇz zm´ınˇen´ ych filtrovac´ıch dialog˚ u. • Filtrovat dimenzi - pˇr´ıznak, kter´ y urˇcuje, zda se maj´ı pˇri sestavov´an´ı dotazu aplikovat nadefinovan´e filtrovac´ı podm´ınky ˇci nikoliv. N´ıˇze je uveden pˇr´ıklad dotazu SQL vygenerovan´eho transformaˇcn´ı komponentou pouze na z´akladˇe pˇredan´e konfigurace.
50
SELECT B.rok, B.tyden, D.nazev, SUM(A.opakovani_vykonu) FROM fakta A JOIN cas B ON A.cas = B.idcas JOIN vykon D ON A.vykon = D.idvykon WHERE (( B.rok = 2008 )) AND(( B.tyden >= 47 AND B.tyden <= 50 )) AND (( D.kod = "63011")OR ( D.kod = "63013")) GROUP BY B.rok, B.tyden, D.nazev HAVING (( SUM(A.opakovani_vykonu ) >= 56 ))
7.7
Spr´ ava importovan´ ych d´ avek
Pˇri pr´ aci s aplikac´ı m˚ uˇze nastat situace, kdy si uˇzivatel nevystaˇc´ı s pouhou schopnost´ı aplikace importovat data z d´ avek do datov´eho skladu, ale je tˇreba, aby mu byla poskytnuta moˇznost m´ıt kontrolu i nad tˇemi daty, kter´e se v datov´em skladu jiˇz vyskytuj´ı. Uvaˇzujme n´asleduj´ıc´ı situaci: Uˇzivatel provede omylem import d´avky obsahuj´ıc´ı data, kter´a nejsou zcela validn´ı. Prov´adˇen´ı anal´ yz nad datov´ ym skladem obsahuj´ıc´ım takov´eto ”smet´ı”m˚ uˇze v´ yrazn´ ym zp˚ usobem negativnˇe ovlivnit v´ ysledek dotazovac´ı operace. Uˇzivateli jsou pak prezentov´any zcela zav´ adˇej´ıc´ı informace, na z´ akladˇe kter´ ych m˚ uˇze doj´ıt k chybn´ ym z´avˇer˚ um, coˇz je zcela nepˇr´ıpustn´e. Pokud tedy podobn´ y pˇr´ıpad nastane, uˇzivatel mus´ı m´ıt moˇznost tato nevalidn´ı data z datov´eho skladu zpˇetnˇe odstranit. K tomuto u ´ˇcelu byl vytvoˇren dialog zobrazen´ y na obr´azku 7.13. Dialog obsahuje celkem dva seznamy. Horn´ı seznam slouˇz´ı k zobrazen´ı vˇsech d´avek, kter´e se v datov´em skladu vyskytuj´ı. Kaˇzd´a d´avka je zde doprov´azena sadou informac´ı, kter´e slouˇz´ı k pˇresn´e identifikaci poˇzadovan´e d´avky. Tˇemito informacemi jsou rok uzavˇren´ı, mˇes´ıc uzavˇren´ı, datum a ˇcas, kdy byla d´avka importov´ana do datov´eho skladu, pro kterou pojiˇst’ovnu byla urˇcena a jej´ı jedineˇcn´e poˇradov´e ˇc´ıslo. Uˇzivatel si m˚ uˇze v tomto seznamu oznaˇcit ty d´ avky, kter´e potˇrebuje a jedin´ ym stisknut´ım tlaˇc´ıtka odstranit z datov´eho skladu veˇsker´a data, kter´ a pˇredstavuj´ı obsah tˇechto d´avek. V ojedinˇel´ ych pˇr´ıpadech nen´ı ˇz´adouc´ı odstraˇ novat celou d´avku, ale pouze nˇekter´e jej´ı z´aznamy. K tomuto u ´ˇcelu slouˇz´ı druh´ y seznam dialogu. V pˇr´ıpadˇe, kdy uˇzivatel klikne na nˇekterou d´ avku ze seznamu, zobraz´ı se zde vˇsechny importovan´e z´aznamy o proveden´ ych v´ ykonech asociovan´ ych s vybranou d´avkou. Zde si pak uˇzivatel m˚ uˇze stejn´ ym zp˚ usobem jako v pˇr´ıpadˇe maz´ an´ı cel´ ych d´ avek vybrat poˇzadovan´e z´aznamy, a prov´est jejich odstranˇen´ı z datov´eho skladu.
7.8
Persistence vytvoˇ ren´ ych OLAP pohled˚ u
Vzhledem k zamˇeˇren´ı aplikace je velmi pravdˇepodobn´e, ˇze kromˇe jedno´ uˇcelovˇe zkonstruovan´ ych pohled˚ u, zde bude existovat i urˇcit´a skupina tˇech pohled˚ u, kter´e bude uˇzivatel vyuˇz´ıvat k analyzov´ an´ı dat v datov´em skladu opakovanˇe. Bylo by velmi pracn´e a ˇcasovˇe n´aroˇcn´e, pokud by byl uˇzivatel nucen tyto pohledy znovu konstruovat pokaˇzd´e, kdyˇz by je bylo potˇreba vyuˇz´ıt.
51
Obr´ azek 7.13: Dialog pro spr´avu importovan´ ych d´avek
52
Z tohoto d˚ uvodu aplikace umoˇzn ˇuje kaˇzd´ y zkonstruovan´ y pohled, u kter´eho je pˇredpoklad, ˇze bude vyuˇzit opakovanˇe i nˇekdy v budoucnu, uloˇzit do lok´aln´ıho uloˇziˇstˇe pohled˚ u.
7.8.1
Implementace lok´ aln´ıho uloˇ ziˇ stˇ e pohled˚ u
K realizaci lok´ aln´ıho uloˇziˇstˇe byla pouˇzita volnˇe dostupn´a VCL komponenta kbmMemTable. Tato komponenta reprezentuje virtu´aln´ı tabulku v pamˇet’ov´em prostoru aplikace urˇcenou pro doˇcasn´e ukl´ ad´ an´ı dat. Mezi jej´ı hlavn´ı vlastnosti patˇr´ı: • pln´ a kompatibilita s TDataset. • podpora index˚ u • komprese dat v tabulce • vyhled´ av´ an´ı z´ aznam˚ u • pln´ a podpora transakc´ı • nen´ı potˇreba Borland Database Engine(BDE). BDE je API(Application Programming Interface), prostˇrednictv´ım kter´eho aplikace pˇristupuje k datab´az´ım. V pˇr´ıpadˇe, kdy aplikace BDE vyuˇz´ıv´ a, mus´ı b´ yt BDE rovnˇeˇz nainstalov´ano a spr´avnˇe nakonfigurov´ ano i u z´ akazn´ıka. Pro u ´ˇcely t´eto aplikace je z´ asadn´ı vlastnost´ı komponenty jej´ı schopnost uloˇzit cel´ y obsah vytvoˇren´e tabulky na disk do souboru a tak´e ho opˇet naˇc´ıst zpˇet do pamˇeti. Struktura pamˇ et’ov´ e tabulky Tabulka pohled˚ u obsahuje celkem tˇri n´asleduj´ıc´ı sloupce: • id - Jedineˇcn´ y identifik´ ator z´aznamu pohledu v tabulce. Tento identifik´ator reprezentuje asociaci mezi objektem pohledu v aplikaci a jeho z´aznamem v uloˇziˇsti. • nazev - N´ azev uloˇzen´eho pohledu - tento n´azev zad´av´a uˇzivatel pˇri ukl´ad´an´ı pohledu do uloˇziˇstˇe. • data - Kompletn´ı konfigurace pohledu ve form´atu XML.
7.8.2
Jazyk XML jako prostˇ redek pro uloˇ zen´ı pohledu
Vzhledem k tomu, ˇze jednotliv´e pohledy mohou obsahovat r˚ uzn´ y poˇcet parametr˚ u (r˚ uzn´ y poˇcet a poˇrad´ı dimenz´ı a d´ ale pak u kaˇzd´e dimenze r˚ uzn´ y poˇcet filtrovac´ıch podm´ınek), nen´ı moˇzn´e pohled uloˇzit do pamˇet’ov´e tabulku uloˇziˇstˇe ve formˇe, kdy by hodnotˇe kaˇzd´emu ˇ sen´ım by samozˇrejmˇe bylo i vyuˇzit´ı parametru pohledu odpov´ıdal jeden sloupec tabulky. Reˇ v´ıce jak jedn´e pamˇet’ov´e tabulky, nicm´enˇe tato volba nen´ı pˇr´ıliˇs vhodn´a uˇz z toho d˚ uvodu, ˇze by bylo nutn´e udrˇzovat pro kaˇzdou tabulku samostatn´ y soubor na disku pro uloˇzen´ı jejich dat. C´ılem je dod´ avat uˇzivateli co moˇzn´a nejmenˇs´ı poˇcet dodateˇcn´ ych soubor˚ u, kter´e jsou nutn´e pro bˇeh aplikace, coˇz toto ˇreˇsen´ı vyluˇcuje. M´ısto toho byl zvolen zcela jin´ y zp˚ usob, kdy se cel´a konfigurace pohledu nejprve zak´oduje do textov´eho ˇretˇezce a aˇz tento fin´aln´ı ˇretˇezec je n´aslednˇe uloˇzen do jednoho textov´eho sloupce pamˇet’ov´e tabulky uloˇziˇstˇe. Jako vhodn´ y zp˚ usob k´odov´an´ı ˇretˇezce do textov´eho tvaru byl zvolen pr´ avˇe znaˇckovac´ı jazyk XML. 53
Struˇ cn´ y popis jazyka XML XML (eXtensible Markup Language) [10] je obecn´ y znaˇckovac´ı jazyk, kter´ y byl vyvinut a standardizov´ an konsorciem W3C. Je urˇcen k snadn´emu vytv´aˇren´ı konkr´etn´ıch znaˇckovac´ıch jazyk˚ u pro r˚ uzn´e u ´ˇcely a ˇsirok´e spektrum r˚ uzn´ ych typ˚ u dat. Pˇredstavuje vhodn´ y prostˇredek pˇredevˇs´ım pro publikov´ an´ı dokument˚ u a v´ ymˇenu dat mezi aplikacemi. Umoˇzn ˇuje strukturu dokumentu popsat z hlediska vˇecn´eho obsahu jednotliv´ ych ˇc´ast´ı, kdy se s´am o sobˇe nezab´ yv´ a vzhledem dokumentu nebo jeho ˇc´ast´ı. Jazyk neobsahuje ˇz´adn´e konkr´etn´ı pˇreddefinovan´e znaˇcky - k pops´ an´ı dokumentu je nutn´e vytvoˇrit znaˇcky vlastn´ı. Pˇri generov´ an´ı XML dokument˚ u mus´ı b´ yt splnˇena n´asleduj´ıc´ı pravidla, aby byl dokument prohl´ aˇsen za validn´ı: • Dokument obsahuje pr´ avˇe jeden koˇrenov´ y element • Nepr´ azdn´e elementy mus´ı b´ yt ohraniˇceny startovac´ı a ukonˇcovac´ı znaˇckou. Pr´azdn´e elementy mohou b´ yt oznaˇceny tagem ”pr´azdn´ y element”. • Hodnoty atribut˚ u elementu mus´ı b´ yt uzavˇreny v uvozovk´ach. • Elementy se do sebe mohou vnoˇrovat, ale nen´ı povoleno jejich pˇrekr´ yv´an´ı. Pro pr´ aci s XML dokumenty je v aplikaci vyuˇzita standardn´ı komponenta TXMLDocument, kter´ a umoˇzn ˇuje jak naˇc´ıst a zpracovat existuj´ıc´ı XML dokument, tak zkonstruovat XML dokument zcela od zaˇc´atku. N´ıˇze je uvedena uk´azka pohledu zak´odovan´eho do validn´ıho XML ˇretˇezce prostˇrednictv´ım t´eto komponenty.
<SEZNAM_DIMENZI> 54
7.8.3
Uˇ zivatelsk´ e rozhran´ı pro pr´ aci s lok´ aln´ım uloˇ ziˇ stˇ em
Ukl´ad´an´ı pohled˚ u do lok´ aln´ıho uloˇziˇstˇe je prov´adˇeno prostˇrednictv´ım toolbaru zobrazen´eho na obr´ azku 7.14. V tomto toolbaru se vyskytuj´ı celkem tˇri n´asleduj´ıc´ı tlaˇc´ıtka: • Uloˇ zit zmˇ eny - Slouˇz´ı pro uloˇzen´ı novˇe proveden´ ych zmˇen, kter´e byly na pohledu provedeny. V tomto pˇr´ıpadˇe se v uloˇziˇsti nevytv´aˇr´ı nov´ y zaznam pohledu, ale pouze se vyhled´ a z´ aznam asociovan´ y s aktu´aln´ım pohledem v OLAP tabulce na z´akladˇe pˇridˇelen´eho identifik´ atoru a jeho obsah je pˇreps´an novou konfigurac´ı. • Uloˇ zit jako nov´ y - Slouˇz´ı pro vytvoˇren´ı zcela nov´eho z´aznamu pohledu v uloˇziˇsti. V tomto pˇr´ıpadˇe je uˇzivatel vyzv´an k zad´an´ı n´azvu, pod kter´ ym m´a b´ yt aktivn´ı pohled v uloˇziˇsti uloˇzen. Aktivn´ı pohled v OLAP tabulce je nyn´ı asociov´an jiˇz s t´ımto novˇe vytvoˇren´ ym z´ aznamem a z´ aznam, se kter´ ym byl pohled asociov´an pˇred stiskem tohoto tlaˇc´ıtka z˚ ust´ av´ a v uloˇziˇsti beze zmˇeny. Tato vlastnost umoˇzn ˇuje uˇzivateli elegantnˇe vytv´ aˇret nov´e pohledy odvozen´ım z pohled˚ u jiˇz dˇr´ıve uloˇzen´ ych v uloˇziˇsti, aniˇz by byl nucen dan´ y pohled vytv´ aˇret od zaˇc´atku. • Vypr´ azdnit - Toto tlaˇc´ıtko jiˇz nem´a nic spoleˇcn´eho s persitenc´ı pohled˚ u ale je urˇceno k rychl´emu vypr´ azdnˇen´ı aktivn´ıho pohledu v OLAP tabulce pro ty pˇr´ıpady, kdy si uˇzivatel pˇreje rozpracovan´ y pohled v tabulce zaˇc´ıt konstruovat u ´plnˇe od zaˇc´atku. Samotn´e vypr´ azdnˇen´ı pohledu by mohl samozˇrejmˇe prov´est t´eˇz opakovan´ ym prov´adˇen´ım operace Roll up, nicm´enˇe v pˇr´ıpadˇe sloˇzitˇejˇs´ıho pohledu obsahuj´ıc´ıho v´ıce dimenz´ı by to bylo velmi nepraktick´e.
Obr´ azek 7.14: Toolbar pro uloˇzen´ı a vyˇciˇstˇen´ı aktivn´ıho pohledu Pro spr´ avu pohled˚ u uloˇzen´ ych v lok´aln´ım uloˇziˇsti je urˇcen toolbar zobrazen´ y na obr´azku 7.15. Tento toolbar obsahuje n´ asleduj´ıc´ı poloˇzky: • Seznam pohled˚ u - kolekce vˇsech pohled˚ u, kter´e se vyskytuj´ı v uloˇziˇsti. • Tlaˇ c´ıtko Pouˇ z´ıt - Slouˇz´ı pro aktivov´an´ı pohledu, kter´ y je aktu´alnˇe vybr´an ve v´ yˇse zm´ınˇen´em seznamu dostupn´ ych pohled˚ u. V tomto pˇr´ıpadˇe se v uloˇziˇsti vyhled´a odpov´ıdaj´ıc´ı z´ aznam, v aplikaci je vytvoˇren nov´ y objekt pohledu, kter´ y se napln´ı konfigurac´ı z tohoto z´ aznamu a takto vytvoˇren´ y pohled je n´aslednˇe zasl´an OLAP tabulce k zobrazen´ı. • Tlaˇ c´ıtko Odstranit - Slouˇz´ı pro odstranˇen´ı pohledu z lok´aln´ıho uloˇziˇstˇe. Pokud se odstraˇ nuje pohled, kter´ y je rovnˇeˇz aktivn´ım pohledem v OLAP tabulce, bude aplikace v pˇr´ıpadˇe pokusu o uloˇzen´ı mˇen v pohledu reagovat stejnˇe, jako by se mˇel vytv´aˇret zcela nov´ y z´ aznam v uloˇziˇsti. • Tlaˇ c´ıtko Importovat - Slouˇz´ı pro import vybran´eho pohledu ze souboru form´ atu XML do lok´ aln´ıho uloˇziˇstˇe. • Tlaˇ c´ıtko Exportovat - Slouˇz´ı pro export vybran´eho pohledu v seznamu z lok´aln´ıho uloˇziˇstˇe do souboru form´ atu XML.
55
Obr´ azek 7.15: Toolbar pro pr´aci s uloˇzen´ ymi pohledy Implementovan´ a podpora exportu a importu pohled˚ u z uloˇziˇstˇe je urˇcena pˇredevˇs´ım pro ty pˇr´ıpady, kdy uˇzivatel potˇrebuje na data v datov´em skladˇe nahl´ednout jist´ ym zp˚ usobem, nicm´enˇe s´ am nen´ı schopen odpov´ıdaj´ıc´ı pohled u ´spˇeˇsnˇe zkonstruovat. Tato situace se bude t´ ykat pˇredevˇs´ım nov´ ych z´ akazn´ık˚ u, kteˇr´ı nebudou m´ıt s aplikac´ı jeˇstˇe dostateˇcn´e zkuˇsenosti pro sestaven´ı komplikovanˇejˇs´ıch pohled˚ u. V takov´em pˇr´ıpadˇe se provede zkonstruov´ an´ı pohledu na stranˇe dodavatele. Tento pohled je n´aslednˇe vyexportov´an do souboru a zasl´ an uˇzivateli. Uˇzivatel pak provede pouh´ y import dodan´eho pohledu do sv´eho uloˇziˇstˇe a m˚ uˇze ho zaˇc´ıt pouˇz´ıvat. Nic rovnˇeˇz nebr´ an´ı tomu, aby si jednotliv´e pohledy mezi sebou vymˇen ˇovali sami uˇzivatel´e.
56
Kapitola 8
Z´ avˇ er V r´amci t´eto diplomov´e pr´ ace byla navrˇzena a implementov´ana aplikace, jej´ımˇz u ´kolem je poskytnout uˇzivatel˚ um z ˇrad ambulantn´ıch l´ekaˇr˚ u moˇznost prov´adˇet pokroˇcil´e anal´ yzy nad nashrom´ aˇzdˇen´ ymi zdravotnick´ ymi daty, kter´a jsou extrahov´ana z d´avek ambulantnˇe sm´ıˇsen´ ych obsahuj´ıc´ıch doklady o vˇsech proveden´ ych v´ ykonech, kter´e l´ekaˇr pˇred´av´a jednotliv´ ym zdravotn´ım pojiˇst’ovn´ am k vy´ uˇctov´an´ı. Aplikace tedy pˇredstavuje rozˇs´ıˇren´ı pro vˇsechny ty st´ avaj´ıc´ı l´ekaˇrsk´e aplikace, kter´e generov´an´ı tˇechto d´avek umoˇzn ˇuj´ı. V souˇcasn´em v´ yvojov´em st´ adiu aplikace podporuje analyzov´an´ı dat prostˇrednictv´ım technologie OLAP, kdy jsou implementov´any vˇsechny z´akladn´ı operace pro modelov´ an´ı poˇzadovan´e datov´e kostky vˇcetnˇe dalˇs´ıch dodateˇcn´ ych funkcionalit, kter´e uˇzivateli samotn´e analyzov´ an´ı dat d´ ale zefektivˇ nuj´ı. Pˇrestoˇze je aplikace jiˇz pˇripravena k testovac´ımu provozu v prostˇred´ı ambulantn´ı ordinace, nab´ız´ı se zde cel´ a ˇrada dalˇs´ıch rozˇs´ıˇren´ı, kter´a je vhodn´e v budoucnu implementovat. Zde patˇr´ı zejm´ena vytvoˇren´ı dynamick´e knihovny urˇcen´e pro st´avaj´ıc´ı l´ekaˇrsk´e aplikace, kter´e by ji vyuˇz´ıvaly k automatick´emu plnˇen´ı datov´eho skladu bez nutnosti manu´aln´ıho z´asahu ze strany uˇzivatele. Rovnˇeˇz by umoˇzn ˇovala import z´akladn´ıch informac´ı o jednotliv´ ych pacientech z kartot´eky, ˇc´ımˇz by se datov´ y sklad rozrostl o dalˇs´ı dimenze, na z´akladˇe kter´ ych by bylo moˇzn´e data d´ale analyzovat. Ovˇsem s jak´ ym z´ajmem se moˇznost vyuˇzit´ı knihovny setk´ a u autor˚ u tˇechto aplikac´ı zat´ım nelze ˇr´ıci. Rovnˇeˇz by bylo vhodn´e rozˇs´ıˇrit aplikaci o moˇznost generov´an´ı pokroˇcil´ ych tiskov´ ych sestav a r˚ uzn´ ych typ˚ u graf˚ u. V posledn´ı ˇradˇe je pl´ anov´ ana implementace nˇekter´ ych metod z kategorie dolov´an´ı dat. Jedn´a se zejm´ena o klasifikaci prostˇrednictv´ım klasifik´ator˚ u v podobˇe neuronov´e s´ıtˇe ˇci implementace bayesovsk´e klasifikace. Pacienty by pak napˇr´ıklad bylo moˇzn´e na z´akladˇe nalezen´ ych vztah˚ u mezi prodˇelan´ ymi nemocemi a dalˇs´ımi vlastnosti jako vˇek a pohlav´ı rozdˇelit do tˇr´ıd, kter´e by reprezentovaly stupeˇ n rizika n´achylnosti ke konkr´etn´ı nemoci, kter´a by se u nich mohla v budoucnu objevit. Dalˇs´ı rozˇsiˇruj´ıc´ı funkcionalita bude do aplikace zabudov´ana aˇz na z´akladˇe zpˇetn´e vazby uˇzivatel˚ u bˇehem samotn´eho pouˇz´ıv´an´ı aplikace.
57
Literatura [1] Lacko, L.: Business Inteligence v SQL Serveru 2005. Computer Press, 2006. ISBN 80-251-1110-5. [2] Zendulka, J. aj.: Studijn´ı opora k pˇredmˇetu Z´ısk´ av´ an´ı znalost´ı z datab´ az´ı. FIT VUT, 2006. [3] Han, J., Kamber, M.: Data Mining: Concepts and Techniques. Morgan Kaufmann Publishers, 2006. ISBN 1558609016. [4] Mr´ azek, P.: Datab´ azov´ a aplikace pro l´ekaˇre. Bakal´aˇrsk´a pr´ace. FIT VUT, 2006. ˇ Datov´e rozhran´ı Vˇseobecn´e zdravotn´ı pojiˇst’ovny [5] Vˇseobecn´ a zdravotn´ı pojiˇst’ovna CR. ˇ CR [online]. verze 6.2. c2009 [citov´ano. 10.04.2009]. Dostupn´e z WWW:
´ e znˇen´ı z´ [6] Upln´ akona o evidenci obyvatel ˇc. 133/2000 Sb. ve znˇen´ı pozdˇejˇs´ıch z´ akon˚ u, vyhl´ aˇsen´e jako ˇc. 302/2004 Sb. [7] Stroustrup, B.: The Design and Evolution of C++. 1.vyd. Addison-Wesley, 1994. ISBN 0-201-54330-3. [8] Virius, M.: C++ Builder 4.0 - podrobn´y pr˚ uvodce. Grada Publishing, 1999. ISBN 807169-796-6. [9] Matouˇsek, D.: C++ Builder - v´yvojov´e prostˇred´ı. 2.vyd. BEN - technick´a literatura, 2000. ISBN 80-86056-70-8. [10] Kosek, J.: XML pro kaˇzd´eho: podrobn´y pr˚ uvodce. 1.vyd. Grada Publishing, 2000. ISBN 80-7169-860-1.
58