Zasady projektowaia hurtowi Przykład hurtowi daych dla systemu NFZ Krzysztof Goczyła Teresa Zawadzka Katedra Iżyierii Oprogramowaia Wydział Elektroiki, Telekomuikacji i Iformatyki Politechika Gdańska {kris, tegra}@eti.pg.gda.pl - - Szpital - defiicja problemu Zaprojektować hurtowię daych dla Narodowego Fuduszu Zdrowia. Hurtowia ma umożliwiać aalizowaie hospitalizacji w polskich szpitalach, które podpisały umowę z NFZ a świadczeie usług medyczych. Aalizy mają dotyczyć aspektów fiasowych oraz zdrowotych. Hurtowia ma bazować a daych źródłowych zbieraych przez szpitale oraz a daych zawartych w cetralej bazie NFZ. - 2 -
Rodzaje zdarzeń rodzaje faktów Zdarzeia dyskrete Zdarzeia występujące w jedym pukcie czasowym. Zazwyczaj odoszą się do pojedyczych trasakcji w systemach operacyjych. Wykoaie pojedyczej procedury lecziczej NFZ Trasactio Fact Table Zdarzeia rozwijające się Zdarzeia występujące w dłuższym przedziale czasowym. Zazwyczaj staowią serię zdarzeń dyskretych. Pobyt pacjeta w szpitalu Zdarzeia powtarzające się Zdarzeia występujące co określoy przedział czasowy. Zazwyczaj są to zdarzeia reasumujące zdarzeia dyskrete. Miesięcze zestawieie wykoaych procedur NFZ Periodic Sapshot Accumulatig Sapshot - 3 - Zdarzeie dyskrete Wykoaie pojedyczej procedury lecziczej NFZ Faktem będzie wykoaie pojedyczej procedury NFZ. Jest to asze bizesowe zdarzeie dyskrete. Z opisu problemu wyika, że miary będą dotyczyły kwestii fiasowych i kwestii związaych z leczeiem. Miary: o koszt szpitala o opłata wiesioa przez pacjeta o refudacja NFZ o (W) strata = koszt szpitala opłata wiesioa przez pacjeta refudacja NFZ o - 4-2
- 5 - Wykoaie pojedyczej procedury lecziczej () Faktem będzie wykoaie pojedyczej procedury NFZ, w daym diu, w daym szpitalu dla daego pacjeta. Procedura Wykoaie procedury Pacjet Id_pacjeta Id_procedury PESEL (KB) Id_pacjeta Nr_procedury_NFZ azwisko i imię Id_szpiatla Szpital Id_procedury płeć Data czy_ubezpieczoy Id_szpitala Czas zawód azwa (KB) koszt_szpitala wielkość wiek opłata_pacjeta województwo województwo refudacja_nfz miasto miasto rodzaj Czas Czas (KB) Data Data (KB) Ziaristość Określeie ziaristości jest kluczowym krokiem przy defiiowaiu hurtowi daych! Ziaristość atomowa odosi się do ajiższego poziomu, a którym dae są przechwytywae przez day proces bizesowy. Nie wolo różych ziaristości mieszać w ramach tego samego faktu!!! W przykładzie:. Hurtowia daych ma ziaristość odoszącą się do przeprowadzeia pojedyczej procedury w kokretym szpitalu, w daym diu, w daym czasie a kokretym pacjecie. 2. Hurtowia daych ma ziaristość atomową. - 6-3
Techiki projektowaia tabeli faktów () Tabela faktów zawiera ogromą liczbę krotek! Krotki powiy zajmować mało miejsca! Każda krotka powia zawierać tyko wartości umerycze! Mamy trzy rodzaje miar: Miary addytywe (mogą być sumowae po wszystkich wymiarach, w przykładzie wszystkie miary z przykładu), Miary pół-addytywe (po pewych wymiarach mogą być sumowae, a po pewych ie, przykład: sta a rachuku po wykoaiu trasakcji bakowej ie może być sumoway po czasie, może być sumoway po typie rachuku lub wieku właściciela rachuku), Miary ie-addytywe (ie mogą być sumowae po żadych wymiarach, przykład: zysk procetowy ze sprzedaży). - 7 - Techiki projektowaia tabeli faktów (2) W tabeli faktów miary MOGĄ przyjmować wartości NULL! Kluczem główym tabeli faktów jest złożeie kluczy obcych. W tabeli faktów klucze obce NIE MOGĄ przyjmować wartości NULL aruszeie itegralości referecyjej kluczy. W przykładzie, gdy ie zamy pacjeta to dodajemy sztuczy wiersz w tabeli wymiaru Pacjet o wartości Niezay. - 8-4
Techiki projektowaia tabel wymiarów () Tabela wymiarów zawiera liczbę krotek zdecydowaie miejszą od liczby krotek w tabeli faktów! Krotki mogą zajmować dużo miejsca! Każda krotka powia zawierać poza kluczami tylko wartości opisowe! W przykładzie, wielkość szpitala i wiek pacjeta ie są wartościami umeryczymi tylko kategoriami przedziałami liczbowymi określającymi wielkość szpitala i wiek pacjeta. Co zrobimy jeżeli potrzebujemy odpowiedzi a zapytaie: Jaka jest średia wielkość szpitala lub średi wiek pacjeta, który - 9 - Wykoaie pojedyczej procedury lecziczej (2) Wykoaie procedury Id_pacjeta Id_szpiatla data czas koszt_szpitala opłata_pacjeta refudacja_nfz wielkość_szpitala wiek_pacjeta - 0-5
Techiki projektowaia tabel wymiarów (2) W każdej tabeli wymiaru zajduje się jede klucz główy! Każda tabela wymiaru (ewetualie poza tabelą daty/czasu) zawiera klucz główy surogatowy. Klucz surogatowy jest to klucz geeroway od wartości, zwiększay o. Przykładowo Id_pacjeta w tabeli wymiaru Pacjet. Klucz główy tabel wymiarów jest przechowyway w tabeli faktów. Dodatkowo w tabelach wymiaru powiy zajdować się klucze bizesowe. Klucze bizesowe ie są kluczami główymi. Przykładowo PESEL w tabeli Pacjet. - - Techiki projektowaia tabel wymiarów (3) Elemety wymiarów mają być wartościami samoopisującymi się. Nigdy ie kodujemy wartości.w systemach typu BI ie ma dedykowaych pod hurtowię daych aplikacji. Korzysta się z istiejących rozwiązań raportujących. Koluma płeć w tabeli wymiaru Pacjet przyjmuje wartości: kobieta lub mężczyza. Nigdy K lub M albo 0 lub. - 2-6
Wykoaie pojedyczej procedury lecziczej (3) Czas Czas (KB) godzia pora_dia Data Data (KB) rok miesiąc dzień sezo dzień_pracujący dzień_tygodia święta - 3 - Techiki projektowaia tabel wymiarów (4) Dae w tabeli wymiaru Data, Czas zawierają poza datą wartości opisowe opisujące daą datę lub czas. Dae w tabelach wymiaru Data i Czas są geerowae i tabele to powiy być wypełioe przed wykoaiem procesu ETL. W przykładzie tabela wymiaru Data i Czas. - 4-7
- 5 - Wykoaie pojedyczej procedury lecziczej (4) Jede pacjet może w szpitalu pojawić się kilkakrotie. Nie zawsze musi być w tym samym przedziale wiekowym. Te sam szpital, ie zawsze będzie miał taką samą wielkość, może się rozbudować Szpital Id_szpitala azwa (KB) wielkość województwo miasto rodzaj data_wstawieia data_aktualizacji Pacjet Id_pacjeta PESEL (KB) azwisko i imię płeć czy_ubezpieczoy zawód wiek województwo miasto data_wstawieia data_aktualizacji Techiki projektowaia tabel wymiarów (5) Wolo zmieiające się wymiary(ag. Slowly Chagig Dimesios) określają te wymiary które zmieiają się w czasie. SCD wartości są adpisywae, brak historii, aalizy mogą być zakłamae. SCD 2 owe krotki jeżeli jakaś wartość ulega zmiaie, klucz bizesowy ie zmieia wartości, jest geeroway owy klucz surogatowy. Dodatkowo w tabeli przechowywae są Data wstawieia krotki, Data kiedy krotka straciła aktualość i opcjoalie pole określające czy krotka jest aktuala, czy też ie. SCD 3 obie wartości stara i owa przechowywae są w tej samej krotce. - 6 - W przykładzie SCD 2 jest zaimplemetoway w tabeli Szpital i Pacjet. 8
Wykoaie pojedyczej procedury lecziczej (6) Dodatkowo: procedura medycza została wykoaa w sali o zadaym umerze (r_sali), sal w szpitalu jest od. 50 500 w zależości od szpitala; pacjet w czasie wykoaia procedury był/lub ie zieczulay (typ_zieczuleie), mamy około 50 różych typów zieczuleń; w czasie wykoywaia procedury medyczej była z pacjetem osoba towarzysząca (osoba_towarzysząca); procedura wymagała wzywaia dodatkowej pomocy (dodatkowa_pomoc); Ie Id_ie Liczba możliwych krotek = 500x50x2x2x r_sali typ_zieczuleia osoba_towarzysząca dodakowa_pomoc - 7 - Techiki projektowaia tabel wymiarów (7) Tworzymy tabelę wymiarów Ie dla atrybutów wymiarów ze sobą fukcjoalie ie powiązaych. Optymalizacja: wstawiamytylko krotki faktyczie występujące, a ie wszystkie możliwe w przypadku zbyt dużej liczby krotek w tabeli Ie tworzymy tabelę Ie i Ie 2. W przykładzie tabela wymiaru Ie. - 8-9
Wykoaie pojedyczej procedury lecziczej (7) Procedury medycze są wykoywae w ramach jedego leczeia/pobytu. Jest adaway uikaly idetyfikator takiego leczeia: [SYMBOL SZPITALA_NR_LECZENIA]. Poza tą iformacją ie ma dodatkowych iformacji o leczeiu pacjeta (uproszczeie). Wykoaie procedury Id_pacjeta Id_szpiatla data czas Id_ie Nr_leczeia koszt_szpitala opłata_pacjeta wielkość_szpitala wiek_pacjeta refudacja_nfz - 9 - Techiki projektowaia tabel wymiarów (7) Wymiar zdegeeroway to wymiar, który ie posiada pogrupowaych do tej samej kategorii logiczej iych atrybutów iż klucz główy. Wymiar zdegeeroway jest umieszczoy w tabeli faktów z potwierdzeiem, że ie zawiera skojarzoej z im tabeli wymiarów. W przykładzie wymiarem zdegeerowaym jest r_leczeia. - 20-0
Wykoaie pojedyczej procedury lecziczej (8) Jeda procedura medycza może być wykoywaa przez kilku lekarzy. Lekarz Id_lekarza Nr_zezwoleia (KB) azwisko i imię specjalizacja Udział_lekarza_w_procedurze Id_lekarza Id_wykoaia_procedury Wykoaie procedury Id_wykoaia_procedury Id_pacjeta Id_szpiatla data data_opłaceia_pacjet data_opłaceia_nfz czas Id_ie Nr_leczeia koszt_szpitala opłata_pacjeta wielkość_szpitala wiek_pacjeta refudacja_nfz - 2 - Techiki projektowaia tabel wymiarów (8) W przypadku gdy grupy logicze atrybutów opisujących day fakt są powiązae ze sobą związkiem wiele do wiele, związek te zostaje zaimplemetoway zgodie z zasadami określoymi dla relacyjych baz daych. Nowa dodaa tabela to tabela faktów (ajczęściej bez miar). - 22 - W przykładzie mamy kostelację (dwie tabele faktów).
Kostelacja wymiarów faktów wymiarów wymiarów wymiarów wymiarów wymiarów faktów wymiarów faktów - 23 - W przypadku gdy mamy więcej iż jedą tabelę faktów mamy schemat, który azywamy kostelacją. Płatek śiegu T T2 T3 T32 wymiarów faktów wymiarów 3 T33 wymiarów 2 T2 wymiarów k T2 Schemat płatka śiegu powstaje w wyiku ormalizacji schematu gwiazdy. - 24-2
Procedura Id_procedury Nr_procedury_NFZ Szpital Id_szpitala azwa (KB) - 25 - Data data (KB) rok Ie Id_ie r_sali Lekarz Id_lekarza Nr_zezwoleia (KB) Wykoaie procedury Id_wykoaia_procedury Id_pacjeta Id_szpiatla data data_opłaceia_pacjet data_opłaceia_nfz czas Id_ie Nr_leczeia Udział_lekarza_w_procedurze Id_lekarza Id_wykoaia_procedury Pacjet Id_pacjeta PESEL (KB) Czas Czas (KB) godzia pora_dia Model wielowymiarowy fakt i miary Fakt: Wykoaie pojedyczej procedury NFZ, w daym diu, w daym szpitalu dla daego pacjeta. Miary i fukcje agregujące: Koszt szpitala (koszt_szpitala), SUM Opłata pacjeta (oplata_pacjeta), SUM Refudacja NFZ, (refudacja_pacjeta) SUM Wielkość szpitala (wielkosc_szpitala), AVG, MAX, MIN Wiek pacjeta (wiek_pacjeta), AVG, MAX, MIN Liczba wykoaych procedur, COUNT Liczba leczeń (r_leczeia), DISTINCT COUNT Strata = Koszt szpitala Opłata pacjeta Refudacja NFZ To jest miara wyliczaa! Nie defiiujemy fukcji agregującej! - 26-3
Model wielowymiarowy wymiary () Szpital: Nazwa szpitala (Szpital:azwa) Wielkość (Szpital:wielkosc) Województwo (Szpital:wojewodztwo) Miasto (Szpital:miasto) Rodzaj (Szpital: rodzaj) Czas: Godzia wykoaia procedury (Czas:godzia) Pora dia wykoaia procedury (Czas:pora_dia) - 27 - Procedura: Nr procedury NFZ (Procedura:Nr_procedury_NFZ) Pacjet: PESEL pacjeta(pacjet:pesel) Nazwisko i imię pacjeta (Pacjet:azwisko i imię) Czy pacjet jest ubezpieczoy (Pacjet:czy_ubezpieczoy) Zawód pacjeta(pacjet:zawód) Wiek pacjeta (Pacjet:wiek) Województwo, w którym jest zameldoway pacjet (Pacjet:województwo) Miasto, w którym jest zameldoway pacjet (Pacjet:miasto) Model wielowymiarowy wymiary (2) Lekarz wykoujący procedurę: Nr zezwoleia (Lekarz:Nr_zezwoleia) Nazwisko i imię lekarza (Lekarz: azwisko_i_imię) Specjalizacja (Lekarz: specjalizacja) Data opłaceia procedury przez pacjeta: Rok (Data:rok) Miesiąc (Data: miesiąc) Dzień (Data: dzień) Sezo (Data: sezo) Data wykoaia procedury: Czy dzień pracujący (Data: dzień_pracujący) Rok (Data:rok) Dzień tygodia (Data: dzień_tygodia) Miesiąc (Data: miesiąc) Okres świąteczy (Data: święta) Dzień (Data: dzień) Sezo (Data: sezo) Czy dzień pracujący (Data: dzień_pracujący) Dzień tygodia (Data: dzień_tygodia) Okres świąteczy (Data: święta) - 28-4
Model wielowymiarowy wymiary (3) Data opłaceia procedury przez NFZ: Rok (Data:rok) Miesiąc (Data: miesiąc) Dzień (Data: dzień) Sezo (Data: sezo) Czy dzień pracujący (Data: dzień_pracujący) Dzień tygodia (Data: dzień_tygodia) Okres świąteczy (Data: święta) Data wykoaia procedury od roku do dia: Rok Sezo Miesiąc Dzień Lekarze wg specjalizacji: Specjalizacja Nazwisko i imię lekarza Miejsce zamieszkaia pacjeta: Województwo, w którym jest zameldoway pacjet Miasto, w którym jest zameldoway pacjet - 29 - Model wielowymiarowy wymiary (4) Lokalizacja szpitala: Województwo Miasto Nazwa szpitala Charakterystyka szpitala: Wielkość szpitala Rodzaj szpitala Nazwa szpitala Charakterystyka szpitala: Rodzaj szpitala Wielkość szpitala Nazwa szpitala - 30-5
Model wielowymiarowy fakt, miary i wymiary Fakt: Udział daego lekarza w pojedyczej procedurze NFZ. Miary i fukcje agregujące: Ile razy lekarz wykoywał procedurę NFZ, COUNT Wymiary jak dla - 3 - Co każdy studet potrafić powiie Zaprojektować hurtowię daych dla zdarzeń dyskretych. - 32-6