Pravidlové systémy - implementace s využitím SQL Jakub Kozák MFF UK 29. 4. 2011
1 Úvod 2 Deduktivní databáze 3 Aktivní databáze 4 MTBC-RBS Úvod Architektura Pravidlová základna Engine Uživatelské rozhraní Výsledky 5 Závěr
Co to jsou pravidla? Téměř ve všech životních situacích se řídíme pravidly. - Když je mi horko, svléknu si svetr. - Když vidím překážku, obejdu ji. - OBECNĚ: Když podmínka, pak činnost. Při hledání odpovědi se řídíme pravidly. - Pokud je hledaná osoba syn mého strýce, pak je to můj bratranec. - Pokud A B, pak A. - OBECNĚ: Logické uvažování, dedukce.
Pravidlové systémy Pravidlové systémy se vyvinuly z prvotních prací umělé inteligence. Tyto systémy využívají expertní znalosti pro řešení problémů reálného světa. Používají se v systémech pro řízení (viz. např. fuzzy logika), při zpracování jazyka (např. regulární výrazy) Využívají se ovšem také jako rozšíření DB systémů. 2 hlavní proudy: - Deduktivní databáze - Aktivní databáze
Deduktivní databáze Ovlivněno logickým programováním Rozšiřuje relační algebru o nové možnosti - rekurze, tranzitivní uzávěr Deklarativní sémantika - jde o dotaz, ne o způsob jeho vyhodnocení Pravidla ve formě p : q 1, q 2,..., q n Použití pro aplikace s velkým množstvím dat a komplexními dotazy - finanční analýza, vědecké výpočty apod.
Deduktivní databáze Historie deduktivních databází sahá až do 70. let 20. století V roce 1984 začaly 3 hlavní výzkumné projekty: - The Nail! - projekt Stanfordovy univerzity - LDL projekt na MCC v Austinu - ECRC - projekt v Evropě Dále vzniklo poměrně velké množství dalších jazyků a projektů (viz. Literatura)
Aktivní databáze Reprezentují reaktivní chování (akce reakce) Běžný přístup modelování pravidel sestává ze tří komponent: UDÁLOST PODMÍNKA AKCE UPA pravidla (EVENT CONDITION ACTION ECA rules) Někdy mohou být některé části vypuštěny - např. událost, nebo podmínka.
Aktivní databáze Velmi podrobně se popisem aktivních databází zabývá článek Paton N. P., Díaz O.: Active Database Systems, ACM Computing Surveys, Vol. 31, No. 1, March 1999. Věnuje se všem aspektům dané problematiky. Referát dostupný na stránkach prof. Pokorného o aktivních databázích ze zimního semestru.
Aktivní databáze - implementace Relační Starburst POSTGRES Ariel SQL-3 Objektově orientované HiPAC, EXACT, NAOS, Chimera Ode, SAMOS, Sentinel, REACH
Abstraktní architektura systému aktivních pravidel
Úvod Konkrétní implementace pravidlového systému MTBC-RBS
Úvod IT ve zdravotnictví Zdravotnictví je pro IT v USA v současné době velký byznys - státní dotace a zákonem stanovené podoby dokumentací Konkrétní implementace pravidlového systému pro sekci zdravotní péče v USA Budou nás zajímat žádosti o platby od zdravotních pojišt oven Důležitá položka v účetnictví, nebot až 30 % žádostí je poprvé zamítnuto a z nich dalších 35 % zamítnuto opakovaně
Úvod Co je to MTBC? Společnost založená v roce 1999 v USA Software pro sektor zdravotní péče Medicínské účetnictví, elektronické lékařské záznamy Management lékařské praxe - plánování schůzek, vedení evidence, postoupení nároků na platby od pojišt ovny Údajně využívají moderní softwarové metody MTBC zpracovává tisíce žádostí pro pojišt ovny denně
Úvod Proč žádosti pro pojišt ovny Žádost musí obsahovat korektní informace - správné datum, validní číslo diagnózy apod. Tyto požadavky se často mění a udržovat řízení přímo v nějaké aplikaci je komplikované Proto byl pro vývoj zvolen pravidlový systém založený na SQL Tento systém je nyní v MTBC plně funkční
Architektura Architektura MTBC Data se do databáze MTBC importují z různých zdrojů bez aplikace jakékoliv kontroly dat. Kontrola žádostí tedy probíhá po zápisu do databáze a před odesláním plátcům pojistného.
Pravidlová základna Pravidlová základna Jak budeme pravidla reprezentovat a ukládat? Budeme potřebovat tři základní entity: - Logické proměnné - Pravidla - Meta-pravidla Všechny si rozebereme podrobněji.
Pravidlová základna Logické proměnné Logickou proměnnou rozumíme symbol uzavřený ve špičatých závorkách <> Pravidla se provádějí až po nahrazení proměnných jejich skutečnými hodnotami Skutečné hodnoty jsou získany dotazem příslušným k dané proměnné Příklad: <PAC_POHLAVI> := SELECT Pohlavi FROM Pacient WHERE pac_ucet = @pac_ucet @pac_ucet je SQL proměnná, v níž je uložena hodnota účtu pacienta, na který je aplikováno dané pravidlo
Pravidlová základna Logické proměnné Další příklady: - <DATUM_NEHODY> := SELECT datum_nehody FROM pozadavky WHERE id_pozadavku = @id_pozadavku - <DG_KOD> := SELECT dg_kod FROM pozadavky WHERE id_pozadavku = @id_pozadavku - <DATUM_SLUZBY> := SELECT datum_sluzby FROM pozadavky WHERE id_pozadavku = @id_pozadavku - <ID_POZADAVKU> := SELECT @id_pozadavku AS id_pozadavku
Pravidlová základna Pravidla Typicky pravidla sestávají z konjunkce podmínek v if-části a množiny akcí v then-části. V tomto systému jsou podmínky části SQL dotazů. Pravidla mají své priority (přirozená čísla od 1 do 100), podle nichž se vyhodnocují. Existují hodnoty, pro které se pravidla zkouší aplikovat vždy. Jinak musí být platné meta-pravidlo.
Pravidlová základna Pravidla Název pravidla: R4 Priorita: 25 Popis: Datum nehody chybí pro MKN v intervalu od 800 do 999 Dotaz: WHERE ISNULL( <DATUM_NEHODY>, 1900-01-01 ) = 1900-01-01 AND LEFT( <DG_KOD>,3) BETWEEN 800 AND 999 ; IF @Recordcnt = 1 BEGIN UPDATE pozadavky SET datum_nehody = <DATUM_SLUZBY> WHERE id_pozadavku = <ID_POZADAVKU> END MKN je zkratka pro mezinárodní klasifikaci nemocí Každé pravidlo je na začátku opatřeno konstantním řetězcem SELECT @Recordcnt = COUNT(*) @Recordcnt je 0, pokud se nic s danou podmínkou nenajde, jinak 1 a požadavek je prohlášen za chybný.
Pravidlová základna Pravidla Popis některých pravidel, které se v současnosti v MTBC-RBS používají. SR Popis pravidla 2 Chybí datum nehody pro MKN od 800 do 900 4 Stáří požadavku překračuje limit následujícího roku společnosti Medicare 5 Stáří požadavku větší než 365-denní limit plátce pojistného 7 Kód diagnózy nesouhlasí s věkem pacienta 8 Kód diagnózy nesouhlasí s pohlavím pacienta Akcí většiny pravidel je zobrazení chybového hlášení uživateli. Některé chyby jsou označeny jako kritické a blokují odeslání požadavku.
Pravidlová základna Metapravidla Společné podmínky pro více pravidel mohou být uloženy jako speciální metapravidla. Nejdříve se vyhodnotí metapravidlo. Pokud je výsledkem pravda, provedou se podřízená pravidla v pořadí podle priority. Příklad - rozdělení pravidla R4 Název meta pravidla: MR1 Popis: Chybí datum nehody Dotaz: WHERE ISNULL( <DATUM_NEHODY>, 1900-01-01 ) = 1900-01-01
Pravidlová základna Metapravidla Název pravidla: R4 Název metapravidla: MR1 Priorita: 35 Popis: Datum nehody chybí pro MKN v intervalu od 800 do 999 Dotaz: WHERE LEFT( <DG_KOD>,3) BETWEEN 800 AND 999 ; IF @Recordcnt = 1 BEGIN UPDATE pozadavky SET datum_nehody = <DATUM_SLUZBY> WHERE id_pozadavku = <ID_POZADAVKU> END
Engine Engine systému Vstupem pro MTBC-RBS je číslo požadavku. Žádost se skládá z: - kód diagnózy - léčebné procedury - údaje o pacientovi - jméno, datum narození, RČ... - další informace pro potřeby pojišt oven Výše uvedená data jsou uložena v relační DB a pravidlový systém si je vybírá z příslušných tabulek. Logika systému je vcelku jednoduchá: 1 Vezmi jednu žádost 2 Pamatuj priority pravidel a metapravidla, aplikuj pravidla jedno po druhém 3 Spust akci těch pravidel, jejichž podmínka je splněna (tzn. se záznamem není něco v pořádku)
Engine Engine systému 4 tabulky v relační DB - 3 pro uložení pravidel, 1 pro uložení výsledků aplikace pravidel 3 hlavní kroky při aplikaci pravidel: 1 najít všechna aplikovatelná pravidla (sp_find_applicable_rules) všechna aktivní pravidla, pak priorita 25, 75 a do tabulky #Apprules se uloží pravidla, jejichž metapravidla vrací pravdu 2 nahradit logické proměnné (sp_replace_lv_values) pokud má logická proměnná více hodnot, vytvoří se více kopíı dotazu 3 spuštění pravidla - tj. kontrola podmínky, uložení výsledku do záznamu a případné spuštění akce
Engine Engine systému
Uživatelské rozhraní Editor pravidel Obrázek: Hlavní okno pro editaci pravidel má 3 panely
Výsledky Výsledky Aplikace 5230 pravidel na jeden požadavek trvá přibližně 3 sekundy V testovaném období bylo denně průměrně vyplaceno 4128 žádostí a nalezeno 1289 chyb. (2 chyby v jedné žádosti byly počítány jako 2 chyby) Tento typ systému se hodí pro prostředí s častou změnou pravidel.
Závěr Základní přehled o pravidlových systémech Co to jsou deduktivní a aktivní databáze Konkrétní implementace systému v zajímavém prostředí zdravotní péče
Literatura Ceri S., Ramakrishnan R.: Rules in Database Systems, ACM Computing Surveys, Vol. 28, No. 1, March 1996. Ramakrishnan R., Ullman J. D.: A Survey of Deductive Database Systems, The Journal of Logic Programming, 1995. Paton N. P., Díaz O.: Active Database Systems, ACM Computing Surveys, Vol. 31, No. 1, March 1999. Abdullah U., Sawar M. J., Ahmed A.: Design of a rule based system using Structured Query Language, DASC 09 Proceedings of the 2009 Eighth IEEE International Conference on Dependable, Autonomic and Secure Computing.
Konec Děkuji za pozornost.