UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky
Moduly pro onkologick´y syst´em Tom´aˇs Peˇsek
Bakal´aˇrsk´a pr´ace 2011
Prohlaˇsuji, ˇze jsem tuto pr´aci vypracoval samostatnˇe. Veˇsker´e liter´arn´ı prameny a informace, kter´e jsem v pr´aci vyuˇzil, jsou uvedeny v seznamu pouˇzit´e literatury. Byl jsem sezn´amen s t´ım, ˇze se na moji pr´aci vztahuj´ı pr´ava a povinnosti vypl´ yvaj´ıc´ı ze z´akona ˇc. 121/2000 Sb., autorsk´ y z´akon, zejm´ena se skuteˇcnost´ı, ˇze Univerzita Pardubice m´a pr´avo na uzavˇren´ı licenˇcn´ı smlouvy o uˇzit´ı t´eto pr´ace jako ˇskoln´ıho d´ıla podle § 60 odst. 1 autorsk´eho z´akona, a s t´ım, ˇze pokud dojde k uˇzit´ı t´eto pr´ace mnou nebo bude poskytnuta licence o uˇzit´ı jin´emu subjektu, je Univerzita Pardubice opr´avnˇena ode mne poˇzadovat pˇrimˇeˇren´ y pˇr´ıspˇevek na u ´hradu n´aklad˚ u, kter´e na vytvoˇren´ı d´ıla vynaloˇzila, a to podle okolnost´ı aˇz do jejich skuteˇcn´e v´ yˇse. Souhlas´ım s prezenˇcn´ım zpˇr´ıstupnˇen´ım sv´e pr´ace v Univerzitn´ı knihovnˇe. V Pardubic´ıch dne 3. kvˇetna 2012
Tom´aˇs Peˇsek
Podˇ ekov´ an´ı ˇ R´ad bych podˇekoval sv´emu vedouc´ımu bakal´aˇrsk´e pr´ace panu Ing. Luk´aˇsovi Ceganovi, Ph.D za veden´ı t´eto pr´ace, za cenn´e rady a trpˇelivost. D´ale bych chtˇel podˇekovat vˇsem, kteˇr´ı mˇe podporovali bˇehem cel´eho m´eho studia, zejm´ena m´e rodinˇe a pˇr´atel˚ um.
Anotace Tato pr´ace se zab´ yv´a probleamtikou spr´avy nemocniˇcn´ı agendy. Je zamˇeˇrena na pˇredstaven´ı souˇcasn´ ych nemocniˇcn´ıch informaˇcn´ıch syst´em˚ u (s d˚ urazem na pouˇzit´ı v onkologick´ ych ambulanc´ıch) a na pˇredstaven´ı v´ yvoje nov´eho onkologick´eho IS M2 (n´astupce onkologick´eho IS Medoro). Tato pr´ace se d´ale zab´ yv´a pouˇzit´ ymi technologiemi, kter´e byly zvoleny pro v´ yvoj. Je to skriptovac´ı jazyk PHP s d˚ urazem na jeho frameworky, datab´azov´ y syst´em postgreSQL a dalˇs´ı technologie pro v´ yvoj online aplikac´ı.
Kl´ıˇ cov´ a slova Onkologick´ y informaˇcn´ı syst´em, nemocniˇcn´ı agenda, Zend framework, PHP, postgreSQL
Title Modules for oncological system.
Annotation This thesis si dealing with issues of management of hospital agenda. It’s aimed on presentation of contemporary hospital information systems ( with emphasis on utilization in oncological ambulances) and on presenation of development of new oncological IS M2 (successor of oncological IS Medoro) This thesis is also dealing with used technologies, which were selected for development. It is scripting language PHP with emphsis on its frameworks, database system postgreSQL and other technologies for development online applications.
Keywords Oncological information system, hospital agend, Zend framework, PHP, postgreSQL
Obsah ´ 1 Uvod a c´ıl pr´ ace 12 ´ 1.1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2 C´ıl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 Dostupn´ e technologie a syst´ emy 2.1 Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Hlavn´ı scriptovac´ı jazyk . . . . . . . . . . . . . . . . . . . 2.2.1 PHP vs. ASP.NET . . . . . . . . . . . . . . . . . . 2.2.2 MVC architektura . . . . . . . . . . . . . . . . . . 2.2.3 Frameworky jazyka PHP . . . . . . . . . . . . . . . 2.3 Form´atov´an´ı v´ ystupu a scripty na stranˇe klienta . . . . . . 2.3.1 XHTML a kask´adov´e styly . . . . . . . . . . . . . . 2.3.2 SVG . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Ecmascript, Javascript a AJAX . . . . . . . . . . . 2.4 Datab´azov´a vrstva . . . . . . . . . . . . . . . . . . . . . . 2.4.1 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . 2.4.2 MySQL . . . . . . . . . . . . . . . . . . . . . . . . 2.5 NIS na trhu . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Produktov´e ˇrady FONS spoleˇcnosti STAPRO s.r.o. 2.5.2 Medical process assistant spoleˇcnosti ICZ a.s. . . . 2.5.3 Zhodnocen´ı . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
13 13 13 13 14 15 17 17 18 18 18 18 19 19 19 21 22
3 Onkologick´ y informaˇ cn´ı syst´ em M2 3.1 Sezn´amen´ı s OIS M2 . . . . . . . . . . 3.2 Architektura . . . . . . . . . . . . . . . 3.2.1 Nov´a verze . . . . . . . . . . . . 3.2.2 Celkov´a koncepce OIS M2 . . . 3.3 Modul Kartot´eka . . . . . . . . . . . . 3.3.1 Modelov´a ˇca´st . . . . . . . . . . ˇ ıd´ıc´ı ˇca´st . . . . . . . . . . . . 3.3.2 R´ 3.4 Modul Radioterapie . . . . . . . . . . . 3.4.1 Modelov´a ˇca´st . . . . . . . . . . ˇ ıd´ıc´ı ˇca´st . . . . . . . . . . . . 3.4.2 R´ 3.5 Modul Chemoterapie . . . . . . . . . . 3.5.1 Modelov´a ˇca´st . . . . . . . . . . ˇ ıd´ıc´ı ˇca´st . . . . . . . . . . . . 3.5.2 R´ 3.6 Instalaˇcn´ı pˇr´ıruˇcka . . . . . . . . . . . 3.6.1 HW a SW poˇzadavky na server 3.6.2 Postup instalace OIS M2 . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
23 23 23 24 24 25 25 27 28 28 30 31 31 33 35 35 36
7
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
3.7
3.6.3 Nutn´e kroky po konfiguraci . . . . 3.6.4 Doporuˇcen´e u ´pravy po konfiguraci . Uˇzivatelsk´a pˇr´ıruˇcka . . . . . . . . . . . . 3.7.1 Pˇr´ıruˇcka kartot´eky . . . . . . . . . 3.7.2 Pˇr´ıruˇcka radioterapie . . . . . . . . 3.7.3 Pˇr´ıruˇcka chemoterapie . . . . . . .
4 Z´ avˇ er
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
36 37 37 38 38 40 43
PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PHP: Hypertext processor HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hypertext markup language XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Extensible hypertext markup language XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extensible Markup Language HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hypertext Transfer Protocol SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Structured Query Language MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Model - View - Controller ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Active Server Pages .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dotnet“ ” JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Java server pages PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Portable Document Format API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Application Programming Interface SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scalable Vector Graphics AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asynchronous JavaScript and XML HW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hardware ZF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zend framework MS-DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Microsoft - disk operating system CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Common Getway Interface SW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Software ER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entity-relationship IS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Informaˇcn´ı syst´em NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nemocniˇcn´ı informaˇcn´ı syst´em OIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Onkologick´ y informaˇcn´ı syst´em HL7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Health Level Seven PACS . . . . . . . . . . . . . . . . . . . . . . . . . . . A Photodetector Array Camera and Spectrometer BMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Body Mass Index BSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Body Surface Area JVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Java Virtual Machine RT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Radioterapie CHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chemoterapie NRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nen´adorov´a radioterapie
9
Seznam tabulek 3.1
V´ yvoj PHP 4 a PHP 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
10
Seznam obr´ azk˚ u 2.1
MVC - z´akladn´ı princip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12
Grafick´e zn´azornˇen´ı rozdˇelen´ı modul˚ u. . . . . . . . . . . . . . . ER diagram modulu kartot´eka. . . . . . . . . . . . . . . . . . . ER diagram modulu radioterapie. . . . . . . . . . . . . . . . . . ER diagram modulu chemoterapie - spr´ava protokol˚ u. . . . . . . ER diagram modulu chemoterapie - chemoterapeutick´e pobyty. . Hlavn´ı menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procesy z´akladn´ı u ´rovnˇe . . . . . . . . . . . . . . . . . . . . . . Z´aloˇzky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Uˇzivatelsk´e procesy v kartot´ece. . . . . . . . . . . . . . . . . . . Uˇzivatelsk´e procesy v radioterapii. . . . . . . . . . . . . . . . . . Uˇzivatelsk´e procesy v chemoterapii. . . . . . . . . . . . . . . . . Kalend´aˇr aplikac´ı chemoterapie. . . . . . . . . . . . . . . . . . .
11
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
24 26 29 32 34 38 38 38 39 39 42 42
´ 1 Uvod a c´ıl pr´ ace 1.1
´ Uvod
Informaˇcn´ı syst´emy (d´ale jen IS) usnadˇ nuj´ı pr´aci milion˚ um lid´ı dennˇe nejen ve zdravotnictv´ı. Co to ale ve skuteˇcnosti IS je? Podle definice jde o mnoˇzinu prvk˚ u ve vz´ajemn´ ych informaˇcn´ıch a procesn´ıch vztaz´ıch (informaˇcn´ı procesy). Mnoˇzinu prvk˚ u si m˚ uˇzeme pˇredstavit jako soubor lid´ı a technologick´ ych prostˇredk˚ u. Informaˇcn´ı a procesn´ı vztahy si m˚ uˇzeme zase pˇredstavit jako soubor u ´loh s informacemi, jako napˇr´ıklad sbˇer, pˇrenos, zpracov´an´ı a vyhodnocen´ı. Z definice je patrn´e to, ˇze kdyˇz uˇzivatel oˇcek´av´a od IS nˇejakou pr´aci, mus´ı mu k t´eto pr´aci poskytnout prostˇredky. N´azornˇe to lze vysvˇetlit tˇreba takto: jestliˇze chceme, aby n´am IS vytvoˇril statistiku toho, jak´e byly pacientovi pod´any l´eky, IS mus´ı vˇedˇet o tom, ˇze pacient P dostal l´ek L a jestliˇze chceme tuto statistiku sledovat v ˇcase, IS mus´ı vˇedˇet, ˇze pacient P dostal l´ek L v den D. Jakou formou se o tom IS dozv´ı nen´ı podstatn´e, podstatn´e je, ˇze bez tˇechto informac´ı IS statistiku nesestav´ı. D˚ uvod˚ u pro nasazen´ı IS m˚ uˇze b´ yt cel´a ˇrada. IS za n´as neudˇel´a veˇskerou pr´aci, ale pr´aci, kterou mus´ıme vykonat, n´am ulehˇc´ı. Kdybychom v dneˇsn´ı dobˇe nemˇeli IS, veˇsker´a data by byla uloˇzena v pap´ırov´e podobˇe v centr´aln´ıch kartot´ek´ach, pˇr´ıpadˇe v seˇsitech ˇci di´aˇr´ıch jednotliv´ ych zamˇestnanc˚ u nebo oddˇelen´ı. Takov´eto informace je sloˇzit´e zpˇetnˇe dohledav´at a nejsou (nebo nemohou) b´ yt propojeny, takˇze se ztˇeˇzuje i pr´ace s takov´ ymi daty. Vyhled´av´an´ı informac´ı zabere mnoho ˇcasu a pr´ace s nimi jeˇstˇe v´ıce. Pˇri pouˇzit´ı IS m´ame vˇsechny informace na jednom m´ıstˇe, mezi informacemi existuj´ı vazby, takov´eto informace m´ame z´alohov´any a IS m˚ uˇze pˇrevz´ıt kus naˇs´ı pr´ace formou automatick´ ych v´ ypoˇct˚ u, statistik nebo d´avkov´ ych v´ ykon˚ u. V nemocniˇcn´ı praxi vyuˇzijeme moˇznost snadn´e z´alohy, zamezen´ı vzniku chyb pˇri manu´aln´ım pˇrepisu informac´ı, u ´spora pr´ace a ˇcasu person´alu (automatick´e v´ ypoˇcty, d´avky ’ pro pojiˇst ovny, atd), snadnˇejˇs´ı a pˇrehlednˇejˇs´ı pˇr´ıstup k informac´ım a v neposledn´ı ˇradˇe snaˇzˇs´ı zad´av´an´ı informac´ı.
1.2
C´ıl
C´ıl t´eto pr´ace je pˇredstaven´ı nˇekter´ ych nemocniˇcn´ı informaˇcn´ıch syst´emu pouˇz´ıvan´ ych ˇ e republice. Dalˇs´ım c´ılem pr´ace je popsat v´ v Cesk´ yvoj nov´ ych modul˚ u onkologick´eho IS M2 (d´ale jen OIS M2), zamˇeˇrit se na technologie pro v´ yvoj weob´ ych aplikac´ı, hlavnˇe scriptovac´ı jazyk PHP s d˚ urazem na jeho frameworky. C´ıle pr´ace jsou tedy takov´e: 1. Kriticky zhodnotit souˇcasn´e NIS na trhu. 2. Popsat technologie pouˇzit´e pˇri v´ yvoji. 3. Popsat v´ yvoj tˇr´ı stˇeˇzejn´ıch modul˚ u pro OIS M2.
12
2 Dostupn´ e technologie a syst´ emy 2.1
Technologie
OIS Medoro, potaˇzmo i nov´ y OIS M2 byl vyvinut (a je d´ale vyv´ıjen) na webov´e platformˇe. Proˇc bylo rozhodnuto pr´avˇe takto? Hlavn´ı v´ yhoda tohoto ˇreˇsen´ı je v rychl´em pˇr´ıstupu k dat˚ um pomoc´ı internetov´eho prohl´ıˇzeˇce kdekoliv v nemocniˇcn´ı s´ıti (popˇr´ıpadˇe ze s´ıtˇe venkovn´ı). Vypl´ yv´a to z definice samotn´e webov´e aplikace: “Webov´a aplikace je klient/server software, kter´ y komunikuje s uˇzivatelem nebo jin´ ym syst´emem prostˇrednictv´ım protokolu HTTP. Jako klient b´ yv´a nejˇcastˇeji pouˇzit webov´ y prohl´ıˇzeˇc, jako je napˇr´ıklad Internet explorer, Firefox, Opera nebo Chrome. ” D´ıky vˇsudypˇr´ıtomn´ ym internetov´ ym prohl´ıˇzeˇc˚ um jsou webov´e aplikace st´ale velmi obl´ıben´e a podle vˇsech pˇredpoklad˚ u jeˇstˇe dlouho obl´ıben´e z˚ ustanou. Dalˇs´ım argumentem je fakt, ˇze na pˇrelomu roku 2003 a 2004 zaˇz´ıvaly webov´e aplikace velik´ y rozmach. V dobˇe, kdy NIS disponoval grafick´ ym rozhran´ım zn´am´a z operaˇcn´ıho syst´emu MS-DOS a prvn´ı internetov´e port´aly uˇz byly dobˇre zn´am´e a rozˇs´ıˇren´e 1 , byla vidina pr´ace v takov´emto port´ale velice pˇr´ıjemn´a. Posoud´ıme-li fakt, ˇze v t´eto dobˇe se PHP 4 tˇeˇsilo velk´e oblibˇe, dalˇs´ı argument pro webovou aplikaci je na svˇetˇe. Tyto v´ yhody desktopov´a aplikace nikdy nepˇrekon´a. Sice je pravda, ˇze dneˇsn´ı doba nab´ız´ı velk´e mnoˇzstv´ı vyuˇzit´ı desktopov´ ych aplikac´ı, ale pro potˇreby OIS M2 bohatˇe postaˇc´ı (a praxe ukazuje, ˇze postaˇcuje) webov´a architektura.
2.2
Hlavn´ı scriptovac´ı jazyk
Pro v´ yvoj webov´ ych aplikac´ı m˚ uˇzeme dnes s´ahnout k nˇekolika technologi´ım. Pomineme-li staˇriˇck´e CGI, jsou to hlavnˇe technologie PHP, ASP.NET a JSP. PHP a ASP.NET se dnes tˇeˇs´ı vˇetˇs´ı oblibˇe neˇz JSP, proto ve struˇcnosti v n´asledujic´ıcm textu porovn´am jen tyto dvˇe.
2.2.1
PHP vs. ASP.NET
Posuzov´an´ı v´ yhod jedn´e technologie a nev´ yhod druh´e je vˇec´ı, kter´a bohuˇzel nejde vyˇreˇsit v jedn´e podkapitole t´eto bakal´aˇrsk´e pr´ace. Tato problematika by pokryla rozsah samostatn´e bakal´aˇrsk´e nebo diplomov´e pr´ace. Takov´ato pr´ace jiˇz existuje, ale je z roku 2004, takˇze dnes je bohuˇzel trochu zastaral´a, ale jako zdroj cenn´ ych informac´ı slouˇz´ı dodnes. Pˇri n´avrhu nov´eho syst´emu byly kladeny poˇzadavky na osvˇedˇcen´e technologie a postupy. Z pˇredchoz´ıch zkuˇsenost´ı bylo zn´amo, ˇze udrˇzovat syst´em neobjektovˇe a nemodul´arnˇe je velice pracn´e, sp´ıˇse nere´aln´e. Proto byl poˇzadavek postavit novou aplikaci na robustn´ım z´akladu, ˇcili na frameworku. PHP nab´ız´ı framework˚ u celou ˇradu (z´aleˇz´ı na v´ ybˇeru), ASP.NET je framework s´am o sobˇe. Jak PHP tak ASP.NET dnes nab´ızej´ı pohodlnou pr´aci s objektovˇe orientovan´ ym programov´an´ım. 1
Seznam.cz byl zaloˇzen roku 1996 a v roce 1998 spustil e-mailovou sluˇzbu Seznam mail (*@seznam.cz)
13
Obr´azek 2.1: MVC - z´akladn´ı princip. Jelikoˇz IS obecnˇe spravuj´ı a prezentuj´ı velk´e objemy dat, bylo by vhodn´e, aby jednotliv´e vrstvy byly od sebe oddˇeleny. Toto ˇreˇsen´ı nab´ız´ı softwareov´a architerktura MVC (Model - View - Controller). Vˇetˇsina PHP framework˚ u tuto architekturu implementuje, ASP.NET v souˇcasn´e dobˇe nikoliv. V souˇcasn´e dobˇe existuje jen verze 3 Beta frameworku ASP.NET MVC, takˇze v tomto ASP.NET znaˇcnˇe pokulh´av´a za PHP. Budeme-li vych´azet ze z´avˇeru Bernardovy bakal´aˇrsk´e pr´ace zjist´ıme, ˇze ve v´ ysledku nem´a ani jedna technologie nic nav´ıc oproti druh´e. To co se m˚ uˇze pro jednoho jevit jako v´ yhoda, m˚ uˇze b´ yt pro druh´eho nev´ yhoda (pouˇzit´ı webForms). V roce 2003 bylo rozhodnuto, ˇze zapoˇcne v´ yvoj na platformˇe PHP a dnes nem´a smysl toto rozhodnut´ı mˇenit. Ani ASP.NET, ani JSP nedisponuj´ı takov´ ymi v´ yhodami, ˇze by kv˚ uli nim st´alo za to, mˇenit osvˇedˇcenou platformu.
2.2.2
MVC architektura
MVC architektura rozdˇeluje tˇri z´akladn´ı ˇca´sti aplikace (datov´ y model, uˇzivatelsk´e rozhran´ı a ˇr´ıd´ıc´ı logiku), takˇze z´asah do jedn´e ˇc´asti bude minimalizovat vliv na ostatn´ı dvˇe ˇc´asti. Z´akladn´ı princip je zn´azornˇen na obr´azku 2.1. Architektura MVC m˚ uˇze b´ yt realizov´ana r˚ uzn´ ymi zp˚ usoby, vˇseobecnˇe ale plat´ı podobn´ y princip: 1. Aplikace (konkr´etnˇe View) ˇcek´a na akci uˇzivatele. 2. Controller tuto akci zachyt´ı a rozhodne, co bude dˇelat d´ale (uprav´ı Model nebo pˇr´ımo View). 3. View ˇcek´a na dalˇs´ı akci a cel´ y proces se opakuje. Proˇc je MVC architektura v posledn´ı dobˇe tolik obl´ıben´a? V posledn´ıch letech zaˇzily informaˇcn´ı technologie (a programovac´ı jazyky v˚ ubec) velik´ y boom. Z tˇeˇzko dosaˇziteln´ ych funkcionalit se st´avaj´ı triviality, kter´e zvl´adne kaˇzd´ y, ne kaˇzd´ y ji ale zvl´adne optim´alnˇe. Ne ˇze by snad neoptim´aln´ı aplikace nefungovala, ale je sloˇzit´a na u ´drˇzbu. MVC architektura n´am pom´ah´a udrˇzet k´od aplikace dobˇre ˇciteln´ y a znovupouˇziteln´ y. L´epe se v k´odu hledaj´ı chyby a architektura omezuje duplicity v k´odu. V neposledn´ı ˇradˇe je jednoduˇs´ı k´od, kter´ y je postaven na architektuˇre MVC, testovat. [1] Uˇzivatel nijak nezjist´ı, ˇze je aplikace postavena na architektuˇre MVC. V drtiv´e vˇetˇsinˇe totiˇz ani nev´ı, co to je architektura nebo snad MVC architektura, takˇze pro nˇeho je pˇr´ınos nulov´ y, pro v´ yvoj´aˇre je to ale cesta, kter´a velice usnadn´ı pozdˇejˇs´ı spr´avu a rozvoj aplikace.
14
2.2.3
Frameworky jazyka PHP
Na zaˇc´atku bychom si mˇeli vyjasnit, co to je framework, k ˇcemu je dobr´ y, co n´am pˇrin´aˇs´ı a co po n´as chce. Framework je jak´asi knihovna (software, aplikace), kter´a n´am (program´ator˚ um) ulehˇcuje pr´aci a ˇzivot. Pomoc´ı frameworku zpˇrehledn´ıme aplikaci, vyvarujeme se duplicitn´ımu k´odu a pr´aci si ulehˇc´ıme, protoˇze framework obsahuje n´astroje, kter´e bychom jinak museli pracnˇe tvoˇrit. Na opl´atku si framework ukousne kus v´ ykonu naˇs´ı aplikace. U webov´e platformy jde ale tuto nev´ yhodu minimalizovat spr´avnou optimalizac´ı webov´eho serveru. Tomu je vˇenov´ana zvl´aˇstn´ı kapitola. Programovac´ı jazyk PHP disponuje velk´ ym mnoˇzstv´ım nejr˚ uznˇejˇs´ıch framework˚ u. Opravdov´ y n´astup a rozmach PHP framework˚ u zaˇcal s n´astupem PHP 5. Do t´e doby existovaly veˇrejn´e depozit´aˇre tˇr´ıd jako tˇreba www.phpclasses.com, nebo PEARL. Kdyˇz si v´ yvoj´aˇri vˇsimli toho, jak mocn´ y je framework Ruby on Rails, chopili se pˇr´ıleˇzitosti a zaˇcala ´era framework˚ u jazyka PHP. Asi nejzn´amnˇejˇs´ı framework jazyka PHP je Zend framework (d´ale jen ZF) od tv˚ urc˚ u samotn´eho PHP. U n´as se tˇeˇs´ı velk´e oblibˇe Nette framework od ˇcesk´eho autora Davida Grudla. Dalˇs´ımi zn´am´ ymi frameworky jsou napˇr´ıklad CakePHP, Symfony nebo Yii framework. Kaˇzd´ y zn´amˇejˇs´ı framework m´a sv´eho zast´ance i sv´eho odp˚ urce. Je pravdou, ˇze ne kaˇzd´ y framework se hod´ı na vˇsechno. Jak´e jsou tedy faktory pro v´ ybˇer frameworku? Vynechme ekonomick´e faktory, protoˇze kdyˇz budeme m´ıt t´ ym pˇeti program´ator˚ u s desetiletou praxi s Ruby on Rails, nebude moc ekonomick´e vˇsechny pˇreuˇcit na ZF. 1. Pˇridan´a hodnota frameworku (podle mˇe nem´a smysl pouˇz´ıt framework na str´ance s jednou fotkou a telefonem). 2. Ulehˇcen´ı pr´ace (chci pouˇz´ıt framework, kter´ y mi nebude h´azet klacky pod nohy). 3. Vystaˇc´ım si jen s frameworkem (framework by podle mˇe mˇel m´ıt n´astroje minim´alnˇe k odesl´an´ı e-mailu, vygenerov´an´ı PDF a spojit se s datab´az´ı). 4. Existence pouˇziteln´e dokumentace a aktivn´ı komunity Jelikoˇz OIS M2 nen´ı webov´a aplikace, kde se zobraz´ı pouze jm´eno, pˇr´ıjmen´ı a telefon, tento fakt pˇr´ımo l´akal k pouˇzit´ı nˇekter´eho frameworku. T´ım jsme si potvrdili bod jedna. N´aslednˇe si pˇredstav´ıme tˇri asi nejzn´amnˇejˇs´ı frameworky jazyka PHP. Vˇsechny frameworky splˇ nuj´ı bod dva, tedy implementuj´ı architekturu MVC. Dalˇs´ı dva faktory si rozebereme u jednotliv´ ych framework˚ u. Cake PHP V´ yvoj frameworku CakePHP zapoˇcal v roce 2005 a na konci roku 2005 (konr´etnˇe 20. prosince 2005) [2] byla zaloˇzena neziskov´a organizace Cake software foundation, Inc, kter´a ˇ e m´a zajiˇst’ovat podporu pro rozvoj a v´ yvoj CakePHP (podobn´e Nette fundation v Cesk´ republice). CakePHP je jeden z m´ala framework˚ u, kter´ y podporuje jeˇstˇe PHP 4. Je to d´ano samotnou filosofi´ı tohoto frameworku. Od frameworku se oˇcek´av´a robustn´ı z´aklad, kter´ y usnadn´ı spr´avu aplikace a v´ yvoj nov´e funkcionality tak, aby to bylo v˚ ubec moˇzn´e a tak, aby to ˇsetˇrilo ˇcas. CakePHP je pˇreborn´ık v druh´em aspektu. Pom˚ uˇze n´am rychle a celkem efektivnˇe vytvoˇrit nov´ y projekt. Vyuˇz´ıv´a architekturu MVC, takˇze urˇcitˇe to je posun kupˇredu. CakePHP n´am ale ned´av´a nic zvl´aˇstn´ıho nav´ıc. Komponenty pro vytv´aˇren´ı PDF dokument˚ u (vˇcetnˇe ˇca´rkov´ ych k´od˚ u), pos´ıl´an´ı e-mail˚ u, pr´ac´ı s lokalizac´ı nebo pro vytv´aˇren´ı formul´aˇr˚ u bychom museli ˇreˇsit extern´ımi knihovnami. Nav´ıc m´a nepˇrehledn´e str´anky (zkusme na webu naj´ıt licenci) i dokumentaci.
15
CakePHP je ˇs´ıˇren pod licenc´ı MIT 2 . Samotn´ y fakt, ˇze tato informace je dostupn´a aˇz ze zdrojov´ ych k´od˚ u aplikace vypov´ıd´a o kvalitˇe dokumentace. Nette Nette framework je z trojice framework˚ u nejstarˇs´ı (poˇc´ıt´ame-li dobu v´ yvoje), ale podle doby, kdy jej mohou pouˇz´ıvat i jin´ı uˇzivatel´e neˇz autor, je tento framework nejmladˇs´ı. Autor se zmiˇ nuje o tom, ˇze v´ yvoj zapoˇcal roku 2004 a o dalˇs´ı ˇctyˇri roky pozdˇeji se zaˇcal ˇs´ıˇrit jako open source [3]. Tento fakt se mu stal osudn´ ym pˇri v´ ybˇeru frameworku pro OIS M2 a to z toho d˚ uvodu, ˇze kv˚ uli sv´emu open sourceov´emu st´aˇr´ı nemˇel propracovanou dokumentaci a existovala jen omezen´a internetov´a komunita okolo tohoto frameworku. Nette framework je ˇs´ıˇren jako svobodn´ y software, to znamen´a, ˇze si uˇzivatel m˚ uˇze vybrat mezi licenc´ı New BSD nebo GPL [4]. Pojd’me si ˇr´ıct nˇeco o vlastnostech tohoto frameworku. Mezi z´akladn´ı vlastnosti tohoto frameworku patˇr´ı bezpeˇcnost, opravdu poveden´ y lad´ıc´ı n´astroj (kter´ y m˚ uˇze Nette z´avidˇet i ZF), velmi dobr´ y v´ ykon, dnes jiˇz cel´a ˇrada plugin˚ u a rozˇs´ıˇren´ı, aktu´alnˇe nejaktivnˇejˇs´ı komunita a dobr´a dokumentace. Nette framework disponuje vlastn´ım ˇsablonovac´ım syst´emem 3 . Obsahuje velice propracovanou spr´avu formul´aˇr˚ u, kter´a umoˇzn ˇuje snadno validovat odeslan´a data (na stranˇe serveru i klienta). Jak bylo ˇreˇceno disponuje poveden´ ym lad´ıc´ım syst´emem. Propracovan´e, obousmˇern´e 4 routov´an´ı. Nette framework se na prvn´ı pohled jev´ı jako ide´aln´ı volba. Je od ˇcesk´eho autora (zn´am´eho z jeho dˇr´ıvˇejˇs´ıch knihoven dibi a Texy!) tud´ıˇz by mˇelo b´ yt jednoduˇs´ı dohledat nejasnosti na f´orech nebo v dokumentaci. Bohuˇzel tento fakt plat´ı dnes, kdy Nette disponuje nejaktivnˇejˇs´ı ˇceskou komunitou, ale jeˇstˇe v roce 2008 byla u ´roveˇ n dokumentace velice ˇspatn´a (oproti ZF pˇr´ımo ˇzalostn´a) a proto byla d´ana pˇrednost ZF, kter´ y disponuje robustn´ı dokumentac´ı (at’ uˇz Refference guide nebo API). Dluˇzno podotknout, ˇze kdyby se o pˇreps´an´ı OIS Medoro rozhodovalo o pouh´ y rok d´ele, Nette framework by nejsp´ıˇs vyhr´al. Dalˇs´ı nev´ yhoda, kterou Nette framework trpˇel, bylo to, ˇze existovalo velice omezen´e mnoˇzstv´ı plugin˚ u (napˇr. pˇr´ım´a podpora generov´an´ı PDF dokument˚ u). Jak bylo zm´ınˇeno v´ yˇse, dnes je stav u ´plnˇe jin´ y a vˇetˇsina z´aporn´ ych bod˚ u, kter´ ymi tento framework trpˇel, jsou odstranˇeny, coˇz z nˇej dˇel´a velice kvalitn´ı framework, kter´ y je schopen n´am velice ulehˇcit a zkvalitnit pr´aci. Zend Framework V´ yvoj ZF zapoˇcal roku 2005, tedy opˇet po u ´spˇechu Ruby on Rails. Za v´ yvojem ZF stoj´ı spoleˇcnost Zend Technologies Ltd., tedy spoleˇcnost, kter´a zastˇreˇsuje cel´e PHP, jedn´a se tedy o framework od tv˚ urc˚ u PHP. ZF disponuje rozs´ahlou dokumentac´ı, velk´ ym mnoˇzstv´ım komponent a celou ˇradou pˇr´ıklad˚ u na Zend devzone 5 . Framework je ˇs´ıˇren pod licenc´ı New BSD [5]. ZF n´am pˇrin´aˇs´ı vˇsechno jako Nette framework. Nˇeco l´epe, nˇeco h˚ uˇre. Nejd˚ uleˇzitˇejˇs´ımi yhodu frameworku komponentami, kter´e ulehˇcuj´ı pr´aci, je Zend Auth a Zend Acl. Nev´ m˚ uˇzeme minimalizovat vhodn´ ym pouˇzit´ım Zend Cache modulu, pˇr´ıstup do datab´aze (postgreSQL, Oracle, MySQL, MSSql) obstar´av´a Zend Db, s generov´an´ım PDF soubor˚ u n´am pom˚ uˇze Zend Pdf (moˇzn´e propojen´ı s komponentou Zend Barcode). Zend View 2
http://www.opensource.org/licenses/mit-license.php Latte - http://doc.nette.org/cs/templating#toc-latte 4 framework vygeneruje URL ze zadan´e akce presenteru 5 http://devzone.zend.com/ 3
16
n´am umoˇzn ˇuje ps´at v´ ystupn´ı k´ody pomoc´ı prost´eho PHP, nebo ˇsablonovac´ıho syst´emu SMARTY, kter´ y je v Zend View pˇr´ımo implementov´an. ZF disponuje celou ˇradou komponent, kter´e se hod´ı v´ıce ˇci m´enˇe pro urˇcit´ y projekt. Pro stavbu elektronick´eho obchodu ocen´ıme Zend Currency nebo Zend Feed, pro diskusn´ı f´orum ocen´ıme modul Zend Captcha nebo Zend Mail. Modul˚ u je cel´a ˇrada a z´aleˇz´ı jen na n´as, kter´ y pouˇzijeme. Jak je patrn´e z abstraktu t´eto pr´ace, pro v´ yvoj OIS M2 byl nakonec zvolen pr´avˇe ZF. Nejvˇetˇs´ı z´asluhu na tom m´a propracovan´a dokumentace. Kdyˇz porovn´ame ZF s jeho nejvˇetˇs´ım konkurentem - Nette frameworkem, tak mus´ıme konstatovat, ˇze Nette frameworok udˇelal za posledn´ı dva roky opravu m´ılov´e kroky a dnes by bylo rozhodov´an´ı o v´ ybˇeru frameworku sloˇzitˇejˇs´ı. Dost moˇzn´a by nakonec o v´ ybˇeru nerozhodovaly technick´e, ale ekonomick´e a person´aln´ı parametry.
2.3
Form´ atov´ an´ı v´ ystupu a scripty na stranˇ e klienta
Pojmem form´atov´an´ı v´ ystupu rozumnˇejme procesy a technologie, kter´ ymi jsou uˇzivatel˚ um prezentov´any data v lidsk´e tj. ˇciteln´e podobˇe.
2.3.1
XHTML a kask´ adov´ e styly
XHTML je: • • • • •
znaˇckovac´ı jazyl jedn´ım z jazyk˚ u pro vytv´aˇren´ı webov´ ych str´anek zkratkou anglick´eho v´ yrazu eXtensible HyperText Markup Language rozˇs´ıˇren´e HTML tak, aby vyhovovalo XML zpˇetnˇe kompatibiln´ı s HTML
XHTML mˇel b´ yt n´astupcem HTML. Verze 1.0 existuje ve tˇrech variant´ach. Varianta Strict pˇredpokl´ad´a, ˇze dokument bude form´atov´an pomoc´ı kask´adov´ ych styl˚ u a tak v tomto d˚ usledku zakazuje vˇetˇsinu atribut˚ u (width, font, align) a ustupuje i od nˇekter´ ych element˚ u (center, menu). Varianta Translation je vhodn´a pro vytv´aˇren´ı str´anek pro starˇs´ı prohl´ıˇzeˇce, protoˇze prom´ıj´ı zastaral´e elementy, jako pr´avˇe center a menu. Posledn´ı variant Frameset umoˇzn ˇuje pouˇz´ıvat r´amce a stejnˇe jako Translation zastaral´e elementy. Vzhledem k tomu, ˇze dnes nem´a moc smysl vyv´ıjet aplikace pro star´e prohl´ıˇzeˇce, je jasn´e, ˇze nejrozˇs´ıˇrenˇejˇs´ı varianta XHTM 1.0 je Strict. Jak´e jsou v´ yhody XHTML oproti jeho pˇredch˚ udci HTML? D˚ uleˇzit´e je pochopit rozd´ıl mezi HTML a XHTML. Jestliˇze se jedn´a o HTML, str´anka by mˇela b´ yt odesl´ana s MIME type text/html, jestliˇze se jedn´a o XHTML, str´anka by mˇela b´ yt odesl´ana s MIME type application/xhtml+xml. D´ıky tomu internetov´ y prohl´ıˇzeˇc pozn´a, jak´ y parser m´a pouˇz´ıt a my tak m˚ uˇzeme rozliˇsit HTML od XHTML. Tato ban´aln´ı vˇec m´a vˇsak jeden nedostak a to ten, ˇze dominantn´ı prohl´ıˇzeˇc na trhu (Internet Explorer) pˇred verz´ı 9 (vyd´ana v roce 2011) str´anku s MIME type applicatin/xhtml+xml nab´ıdne st´ahnout, ale nezobraz´ı j´ı (coˇz je pro prohl´ıˇzen´ı trochu nepraktick´e). Proto se stalo bˇeˇznou prax´ı, ˇze XHTML str´anky se pos´ılaly s MIME typem text/html, takˇze jsme str´anku parsovali jako HTML, takˇze by se dalo ˇr´ıci, ˇze XHTML ˇza´dnou v´ yhodu oproti HTML nem´a. XHTM mˇelo b´ yt n´astupcem HTML, ale jak se uk´azalo, HTML vyhr´alo. 17. 12. 2010 byla rozpuˇstˇena pracovn´ı skupina, kter´a pracovala na XHTML 2.0 a m´ısto toho pomalu svˇetu pˇredstavuje HTML5. [6], [7]
17
2.3.2
SVG
SVG je form´at dvourozmˇern´e vektorov´e grafiky, kter´ y lze vytvoˇrit pomoc´ı XML specifikace. Takto vytvoˇrenou grafiku m˚ uˇzeme oˇzivit pomoc´ı Ecmascriptu a kask´adov´ ych styl˚ u. V OIS M2 jsou pomoc´ı SVG realizov´any grafick´e v´ ystupy formou 2D graf˚ u. Bohuˇzel nejpouˇz´ıvanˇejˇs´ı internetov´ y prohl´ıˇzeˇc podporuje XML aˇz od verze 9, takˇze niˇzˇs´ı verze jsou o tuto technologii oˇsizeny a je nutn´e grafy pˇrev´est do klasick´eho obr´azkov´eho form´atu, kter´ y ztr´ac´ı v´ yhodu oˇziven´ı pomoc´ı ecmascriptu a grafick´a kvalita takov´ehoto grafu je o troˇsku niˇzˇs´ı.
2.3.3
Ecmascript, Javascript a AJAX
Javascript je nadstavba Ecmascriptu. Tyto technologie prov´adˇej´ı procesy na stranˇe klienta. Porovnejme to s PHP scriptov´an´ım. PHP scripty potˇrebuj´ı pro sv˚ uj chod webov´ y server s podporou PHP, takˇze tyto scripty jsou spouˇstˇeny na serveru (Klient pod´a poˇzadavek a server mu odpov´ı). Mohou pˇristupovat k datab´azi a filesyst´emu a jsou spouˇstˇeny pˇ red staˇzen´ım webov´e str´anky z internetu. Naproti tomu scripty na stranˇe klienta se zpravidla (existuj´ı v´ yjimky) spouˇst´ı aˇz po staˇzen´ı webov´e str´anky z internetu, tedy ke sv´emu chodu nepotˇrebuj´ı webov´ y server a vykon´avaj´ı se v internetov´em prohl´ıˇzeˇci. Ecmascript je pouˇzit ve form´atu SVG, javascript pak v XHTML. AJAX6 je souhrn technologi´ı, kter´e mˇen´ı ˇca´st obsahu webov´e str´anky bez nutnosti znovunaˇcten´ı cel´e str´anky. Z v´ yznamu slova AJAX zjist´ıme, ˇze to jsou technologie javascript, xml a XMLHttpRequest. AJAX funguje asi tak, ˇze javascript zachyt´ı ud´alost (napˇr. zmˇena hodnoty v combo boxu), na pozad´ı poˇsle HTTP poˇzadavek, na pozad´ı pˇr´ıjme HTTP odpovˇed’ (nejˇcastˇeji ve formˇe XML), zpracuje odpovˇed’ a metodami javascriptu zmˇen´ı ˇc´ast str´anky.
2.4
Datab´ azov´ a vrstva
V´ ybˇer datab´azov´e vrstvy byl ve znaˇcn´e m´ıˇre ovlivnˇen politikou podniku. Mezi nejzn´amˇejˇs´ı komerˇcn´ı datab´azov´e servery patˇr´ı Oracle, Sybase, nebo MSSQL. Mezi open sourcov´e datab´azov´e servery pak PostgreSQL, MySQL a FirebirdSQL. Jelikoˇz star´a verze onkologick´eho IS vyuˇz´ıvala PostgreSQL a protoˇze se tato datab´aze velice osvˇedˇcila, nov´a verze syst´emu je nativnˇe vyv´ıjena tak´e na PostgreSQL. Nov´ y syst´em je ale postaven na architektuˇre MVC, to znamen´a, ˇze lze datab´azov´ y server zmˇenit bez ˇza´dn´ ych vˇetˇs´ıch komplikac´ı. Podnikov´a politika upˇrednostˇ nuje open sourcov´e ˇreˇsen´ı (PHP, apache, unix, ...) a proto se v´ ybˇer nativn´ı datab´aze zamˇeˇril pr´avˇe na open sourcov´e ˇreˇsen´ı. V prvn´ı ˇradˇe FirebirdSQL si moc nerozum´ı s unixov´ ym serverem, proto z dalˇs´ıho porovn´av´an´ı vypad´av´a.
2.4.1
PostgreSQL
Dlouhou dobu platilo, ˇze datab´azov´ y syst´em PostgreSQL je open sourcov´a varianta pro Oracle. Vyslouˇzil si to hlavnˇe d´ıky sv´ ym schopnostem. Jiˇz od verze 6 7 umoˇzn ˇuje tvorbu triger˚ u a procedur a nejen v jazyce PL/SQL, ale i v C nebo Pearl (mysql umoˇzn ˇuje tvorbu triger˚ u aˇz od verze 5 8 ). PostgreSQL disponuje moˇznost´ı tvorby poddotaz˚ u, vytv´aˇren´ı 6
Asynchronous javascript and XML rok 1997 8 rok 2005 7
18
ciz´ıch kl´ıˇc˚ u a v neposledn´ı ˇradˇe i “atomic operations ”, coˇz jsou vlastnˇe transakce (bud’ projde cel´a posloupnost dotaz˚ u, nebo ˇza´dn´ y). Co se t´ yˇce rychlosti z´akladn´ıch pˇr´ıkaz˚ u SELECT, INSERT a UPDATE, tak PostgreSQL dosahuje horˇs´ıch v´ ysledk˚ u neˇz MySQL, disponuje ale daleko vˇetˇs´ı ˇsk´alou moˇznost´ı, ˇze se tento fakt st´av´a nepodstatn´ ym, protoˇze rozd´ıly v rychlosti nejsou nijak z´avratn´e. [8]
2.4.2
MySQL
MySQL je dnes velice obl´ıben´ y datab´azov´ y syst´em. D´ıky tomu, ˇze je souˇca´st´ı z´akladn´ıho softwareov´eho vybaven´ı webserver˚ u (LAMP 9 ) je nainstalovan´ y na drtiv´e vˇetˇsinˇe webhosting˚ u. V´ yvoj MySQL byl od zaˇc´atku soustˇredˇen na rychlost. Tento fakt vedl k tomu, ˇze datab´azov´ y server obsahuje urˇcit´a zjednoduˇsen´ı, jako napˇr´ıklad jen jednoduch´e zp˚ usoby z´alohov´an´ı [9] (pro ukl´ad´an´ı citliv´ ych dat podstatn´ y nedostatek). Stejnˇe jako Nette framework udˇelal v posledn´ıch letech datab´azov´ y server MySQL velk´ y krok kupˇredu. Od verze 5 umoˇzn ˇuje ukl´adat procedury, vytv´aˇret trigery a pohledy. Zvl´aˇstnost´ı MySQL je zp˚ usob, kter´ ym supluje chybˇej´ıc´ı sekvence. Sloupci, kter´ y m´a obsahovat automaticky generovanou posloupnost ˇc´ısel, je moˇzn´e pˇriˇradit pˇr´ıznak Auto Increment a tato vlastnost se postar´a o to, ˇze ve sloupci bude uloˇzena vˇzdy unik´atn´ı hodnota. Ve vˇetˇsinˇe zn´am´ ych datab´azov´ ych syst´em˚ u se tohoto dosahuje pr´avˇe pomoc´ı sekvenc´ı.
2.5
NIS na trhu
2.5.1
Produktov´ eˇ rady FONS spoleˇ cnosti STAPRO s.r.o.
“STAPRO s.r.o. je v´ yznamn´ ym dodavatelem informaˇcn´ıch syst´em˚ u, diagnostick´ ych pˇr´ıstroj˚ u, zdravotnick´e techniky a z´aroveˇ n i poskytovatelem sluˇzeb v oblasti informaˇcn´ıch technologi´ı pro zdravotnictv´ı.” Produktov´a ˇrada FONS uceluje portfolio spoleˇcnosti. Rozsah a obsah produkt˚ u spoleˇcnosti vyˇzadoval nov´e uspoˇra´d´an´ı, kter´e reflektuje poˇzadavky na novou, kompaktnˇejˇs´ı strukturu produkt˚ u. V souˇcastn´e dobˇe produktov´a ˇrada FONS obsahuje tyto syst´emy: 1. 2. 3. 4. 5.
FONS FONS FONS FONS FONS
Enterprise - NIS AKORD - NIS Openlins - laboratorn´ı komplement Report - manaˇzersk´ y informaˇcn´ı syst´em Flexi - flexibiln´ı formul´aˇre
Spoleˇcnost STAPRO doned´avna disponovala a nab´ızela dalˇs´ı NIS. Byly to StaproMedea, StaproGF (dˇr´ıve Grey Fox) a StaproH (dˇr´ıve HiComp). U instalac´ı tˇechto syst´em˚ u je pˇredpoklad postupn´eho upgade na nov´e NIS: FONS Akord a FONS Enterprise. Vzhledem k t´ematu t´eto pr´ace si podrobnˇeji rozebereme prvn´ı dva syst´emy, FONS Enterprise a FONS Akord. 9
Linux - Apache - MySQL - PHP
19
FONS Akord FONS Akord je inovovan´a verze starˇs´ıho syst´emu StaproAkord. FONS Akord umoˇzn ˇuje veden´ı zdravotnick´e dokumentace a nˇekter´e provozn´ı ˇcinnosti nˇekter´ ych klinick´ ych pracoviˇst’ pomoc´ı r˚ uznˇe propojen´ ych modul˚ u. Podle spoleˇcnosti STAPRO m´a FONS Akord tyto pˇr´ınosy a v´ yhody: 1. Zv´ yˇsen´a efektivita pr´ace a standartizace proces˚ u a postup˚ u (pˇrednastaven´e obrazovky, formul´aˇre a work-flow dle best-practices) 2. Otevˇrenost syst´emu a vysok´a flexibilita umoˇzn ˇuje individu´aln´ı nastaven´ı odpov´ıdaj´ıc´ım re´aln´ ym proces˚ um prob´ıhaj´ıc´ı na dan´em pracoviˇsti a poˇzadavk˚ um akreditaˇcn´ıch standard˚ u 3. Podpora syst´emu pˇri rozhodov´an´ı, poskytnut´ı spr´avn´ ych informac´ı ve spr´avn´ y ˇcas ’ 4. Omezen´ı chybovosti a zv´ yˇsen´ı kvality vykazov´an´ı pojiˇst ovn´am 5. Statistick´e v´ ystupy 6. Bezpeˇcnost FONS Akord obsahuje celou ˇradu modul˚ u, n´ıˇze jsou uveden´e nejzaj´ımavˇejˇs´ı z nich. • CERTIFIKACE - FONS Akord je pravidelnˇe certifikov´an na nejnovˇejˇs´ı operaˇcn´ı syst´emy. Certifikace na WIN 7 je potvrzen´ım korektn´ıho fungov´an´ı syst´emu na nejnovˇejˇs´ım operaˇcn´ım syst´emu. • ACTIVE DIRECTORY - Pokud zdravotnick´e zaˇr´ızen´ı vyuˇz´ıv´a pro ˇr´ızen´ı uˇzivatelsk´ ych u ´ˇct˚ u sluˇzbu Active directory, lze ji s FONS Akord propojit a doc´ılit tak snaˇzˇs´ı spr´avy uˇzivatel˚ u a jejich pr´av. ´ • KOMPLEXNI POPIS OPERACE - operace lze pl´anovat a n´aslednˇe zapsat do operaˇcn´ıch protokol˚ u, kter´e popisuj´ı operaci, vˇcetnˇe u ´daj˚ u o operaˇcn´ım t´ ymu, o proveden´ ych v´ ykonech, ˇcasech, materi´alech a pouˇzit´ ych pˇr´ıstroj´ıch. Pohled na protokol je ucelen´ y - v jednom formul´aˇri vid´ıme vˇsechny potˇrebn´e u ´daje vˇcetnˇe vy´ uˇctov´an´ı. • PORODNICE - umoˇzn ˇuje v´est potˇrebnou dokumentaci k vyˇsetˇren´ı a hospitalizaci tˇehotn´e ˇzeny, informace o porodu a stav novorozence a matky po porodu. ´ ´ ´I PROCEDUR - vˇsechny postupn´e kroky jsou propojeny - od ordinace • PLANOV AN procedur l´ekaˇrem, pˇres napl´anov´an´ı procedur, z´aznamy fyzioterapeut˚ u a z´avˇereˇcn´ y stav pacienta po proceduˇre. ´ ´ INTERAKCE - syst´em ukazuje aktu´aln´ı u • LEKOV E ´daje o preskripci, upozorˇ nuje na alergie, hl´as´ı l´ekov´e interakce a poskytuje informace o alternativn´ıch l´ec´ıch stejn´e ATC skupiny. ´ ´ SYSTEM ´ - umoˇzn • KOMPLEXN´I OBJEDNAVKOV Y ˇuje lehce a pˇrehlednˇe objednat pacienta na urˇcit´e vyˇsetˇren´ı. • ALERTY - umoˇzn ˇuj´ı online informovat uˇzivatele o r˚ uzn´ ych akc´ıch (poˇzadavek na konzilium a podobnˇe). ´ ´I LEK ´ ˚ • EVIDENCE PODAN U - slouˇz´ı k online evidenci podan´ ych l´ek˚ u u l˚ uˇzka pacienta, automaticky zajiˇst’uje vyskladnˇen´ı l´eku a vyk´aˇze pl´atci ZULP. Zdroj: Materi´aly z konference Inmed, konan´e v listopadu 2011 v Pardubic´ıch.
20
FONS Enterprise “Nemocniˇcn´ı IS FONS Enterprise je komplexn´ı IS pro podporu provozu zdravotnick´ ych zaˇr´ızen´ı r˚ uzn´eho typu a velikosti. Jde o novou generaci IS, kter´ y vznikl na z´akladˇe mˇen´ıc´ıho se prostˇred´ı zdravotn´ı informatiky.” Podle spoleˇcnosti STAPRO m´a FONS Enterprise tyto pˇr´ınosy pro uˇzivatele: 1. Rozˇs´ıˇren´ı spektra metrik dle u ´daj˚ u v IS pro hodnocen´ı ˇcinnosti zdravotnick´eho zaˇr´ızen´ı 2. Pl´anov´an´ı, sledov´an´ı a vyhodnocov´an´ı proces˚ u 3. Rozdˇelen´ı proces˚ u mezi definovan´e uˇzivatele nebo role - u ´kolov´an´ı, TODO list 4. Sn´ıˇzen´ı n´aklad˚ u na l´eˇcbu pouˇzit´ım expertn´ıch informac´ı v pr˚ ubˇehu l´eˇcby 5. Sn´ıˇzen´ı administrativn´ı z´atˇeˇze uˇzivatel˚ u pˇri pr´aci se syst´emem 6. Maxim´aln´ı vyt´ıˇzenost evidovan´ ych dat ve formˇe sestav, statistik a report˚ u 7. Sn´ıˇzen´ı chybovosti evidovan´ ych dat 8. Efektivn´ı podpora akreditac´ı 9. Leg´aln´ı veden´ı zdravotnick´e dokumentace ˇcistˇe v elektronick´e podobˇe 10. Individu´aln´ı nastaven´ı uˇzivatelsk´eho rozhran´ı 11. Podpora vyˇsˇs´ı pr´avn´ı ochrany zdravotnick´eho zaˇr´ızen´ı d´ıky n´astroj˚ um pro ˇr´ızen´ı kvality p´eˇce 12. Pln´a otevˇrenost pro komunikaci s jin´ ymi syst´emy 13. Pozitivn´ı pˇr´ıstup uˇzivatel˚ um k aplikaci FONS Enterprise je rozs´ahl´ y syst´em, kter´ y nab´ız´ı celou ˇradu funkcionalit, n´ıˇze jsou uvedeny opˇet nejzaj´ımavˇejˇs´ı z nich: ´ • PODPORA KLINICKYCH PROCES˚ U - syst´em obsahovˇe pokr´ yv´a vˇsechny klinick´e procesy ˇreˇsen´e ve st´avaj´ıc´ıch NIS. ´ DOKUMENTACE - je moˇzn´e nadefinovat konkr´etn´ı podobu • STRUKTUROVANA jak´ekoliv strukturovan´e dokumentace pro specifick´e potˇreby jednotliv´ ych oddˇelen´ı. ´ ˇ • VYSOKY STUPEN KONFIGUROVATELNOSTI - umoˇzn ˇuje vyspecifikovat v´ yslednou podobu klinick´e ud´alosti pˇresnˇe dle potˇreb jednotliv´ ych pracoviˇst’. • DASHBOARD - d´ıky modern´ımu pojet´ı grafick´e ˇc´asti aplikace umoˇzn ˇuje FONS Enterpirse pr´aci s v´ıce okny na jedn´e obrazovce (vhodn´e pro ˇsiroko´ uhl´e monitory). ´ PANEL - obsahuje z´akladn´ı u • PACIENTSKY ´daje o pacientovi, vˇcetnˇe posledn´ı alergie, diagn´ozy, medikace a jin´e informace o pacientovi. Uˇzivatel je na prvn´ı dojem informov´an o d˚ uleˇzit´ ych faktorech souvisejic´ıch s l´eˇcbou. • TIMELINE - umoˇzn ˇuje graficky interpretovat v´ ysledky nebo jinak strukturovan´e u ´daje ˇci ud´alosti. Zdroj: Materi´aly z konference Inmed, konan´e v listopadu 2011 v Pardubic´ıch.
2.5.2
Medical process assistant spoleˇ cnosti ICZ a.s.
Spoleˇcnost ICZ a.s. nab´ız´ı v r´amci regionu stˇredn´ı Evropy integrovan´a softwareov´a a s´ıt’ov´a ˇreˇsen´ı napˇr´ıˇc r˚ uzn´ ymi obory. Specializuje se tedy, narozd´ıl od Stapra, nejen na zdravotnictv´ı. Mezi jej´ı produkty paˇr´ı napˇr´ıklad Region´aln´ı informaˇcn´ı syst´em (Geoaplikace roku ˇ 2003), syst´em REP pro Ceskou poˇstu, s.p. (IT projekt roku 2003) nebo ePACS (sd´ılen´ı 21
obr´azkov´ ych dat napˇr´ıˇc celou republikou). Medical process assistant (d´ale jen MPA) je nov´a generace klinick´eho IS, kter´a na ˇ podporuje vˇsechny typy klinick´ u ´zem´ı CR ych pracoviˇst’. Podle spoleˇcnosti se jedn´a o pˇredn´ı evropsk´e ˇreˇsen´ı provozovan´e na des´ıtk´ach pracoviˇst´ıch po stˇredn´ı evropˇe, t´ım p´adem je samozˇrejmost´ı pln´a jazykov´a, legislativn´ı a procesn´ı lokalizace. Souˇc´ast´ı MPA je nativn´ı podpora procesn´ıho workflow, kter´e automatizuje ˇradu proces˚ u, t´ım p´adem pln´ı z´akladn´ı funkci IS - usnadˇ nuje a urychluje pr´aci. Dalˇs´ı souˇca´st´ı MPA jsou specifick´e moduly pro jednotky intenzivn´ı p´eˇce, neonatologii a porodnictv´ı, chirurgick´e obory (vˇcetnˇe elektronick´ ych operaˇcn´ıch protokol˚ u) a podpora diet vˇcetnˇe komunikace se stravovac´ım provozem. Podle spoleˇcnosti MPA obsahuje tyto unik´atn´ı vlastnosti ˇreˇsen´ı: 1. Implementace procesn´ıho pˇr´ıstupu do libovoln´e hloubky specifikace na u ´rovni dokumentace, formul´aˇr˚ u, uˇzivatel˚ u, ˇcinnost´ı, u ´kol˚ u, term´ın˚ u a informac´ı. 2. Podpora klinick´eho rozhodov´an´ı a implementace Clinical Pathways 10 . 3. Procesn´ı workflow je n´astrojem a pomocn´ıkem k certifikaci a akreditaci. 4. Syst´em je plnˇe konfigurovateln´ y ve vˇsech potˇrebn´ ych oblastech. 5. Vyuˇz´ıv´a plnohodnotnou integraci prostˇred´ı MS Office. ˇ a veˇsker´e poˇzadavky 6. Syst´em plnˇe respektuje vˇsechna n´arodn´ı specifika a normy CR v Evropsk´e unii. 7. Syst´em je vytvoˇren na b´azi nejmodernˇejˇs´ıch technologick´ ych poznatk˚ u pro v´ yvoj a je vyv´ıjen na platformˇe Java. 8. Plnˇe podporuje integraˇcn´ı standardy a technologick´e poˇzadavky, jako jsou HL711 , SOA12 , Web services.
2.5.3
Zhodnocen´ı
Spoleˇcnost STAPRO je pˇredn´ı dodavatel IS pro zdravotnick´e zaˇr´ızen´ı u n´as. S produkty t´eto spoleˇcnosti se m˚ uˇze sezn´amit budouc´ı zdravotnick´ y person´al jiˇz na stˇredn´ıch zdravotnick´ ych ˇskol´ach. Pˇres dvacet let zkuˇsenost´ı, dotace z evropsk´ ych region´aln´ıch fond˚ u 13 a fakt, ˇze spoleˇcnost dod´av´a sv´a ˇreˇsen´ı po cel´e republice (i na Slovensku), ze spoleˇcnosti dˇel´a opravdu siln´eho hr´aˇce na poli nemocniˇcn´ıch IS. Dalˇs´ı v´ yhodou t´eto spoleˇcnosti je fakt, ˇze se nespecializuje pouze na IS, ale dod´av´a i diagnostick´e pˇr´ıstroje, zdravotnickou techniku a poskytuje dalˇs´ı sluˇzby pro zdravotnictv´ı. Podle referenc´ı spoleˇcnost´ı jsou nemocniˇcn´ı IS produktov´e ˇradu FONST instalov´any u des´ıtek z´akazn´ık˚ u, z nichˇz nejvˇetˇs´ı uˇzivatel´e jsou Krajsk´a zdravotn´ı a.s. ˇci Krajsk´a nemocnice Tom´aˇse Bati a.s. Naproti tomu se spoleˇcnost ICZ specializuje na ˇsirˇs´ı oblast trhu ˇcili nejen na zdravotnictv´ı. Do podvˇedom´ı zdravotnick´eho oboru se dostala hlavnˇe d´ıky projetu ePACS, kter´ y ˇ spojuje v´ıce neˇz sto nemocnic napˇr´ıˇc Ceskou republikou se spr´avou ve VFN v Praze. Podle referenc´ı spoleˇcnosti je MPA implementov´an v Oblastn´ı nemocnici Jiˇc´ın Fakultn´ı nemocnice Brno, coˇz je znaˇcn´ y nepomˇer v poˇctu implementac´ıch mezi ICZ a Staprem.
10
Mapy p´eˇce health Level 7 12 Service-oriented architecture 13 ´ GENERACE NIS (INOVACE PRODUKTU, INOVACE PROCESU) NOVA 11
22
3 Onkologick´ y informaˇ cn´ı syst´ em M2 3.1
Sezn´ amen´ı s OIS M2
Onkologick´ y informaˇcn´ı syst´em M2 (d´ale jen OIS M2) navazuje na sv´eho pˇredch˚ udce OIS Medoro, kter´ y byl vyvinut v letech 2003 aˇz 2004 firmou Medoro s.r.o. Neˇz se zaˇcneme seznamovat s nov´ ym syst´emem, ˇreknˇeme si, co v˚ ubec vedlo k v´ yvoji star´eho OIS Medoro. 1. Dokumentace radioterapie a chemoterapie na r˚ uzn´ ych m´ıstech 2. Komplikovan´e pˇred´av´an´ı t´eto dokumentace 3. D˚ usledkem mnoha informaˇcn´ıch zdroj˚ u se dokumentace st´av´a nepˇrehlednou 4. Pro dokumentaci pr˚ ubˇehu l´eˇcby je pouˇz´ıv´an pˇr´ıliˇs obecn´ y NIS nebo jen pap´ır Zde je nutno podotknout, ˇze c´ılem OIS nen´ı nahradit NIS, ale jen ho vhodnˇe rozˇs´ıˇrit. Proto byly ve star´em OIS Medoro pouˇzity technologie pro komunikaci s NIS a do nov´eho syst´emu byly pˇrevedeny tak´e. Jak se zaˇcal star´ y OIS Medoro nasazavat a pouˇz´ıvat, vznikaly postupnˇe nov´e poˇzadavky na jeho funkˇcnost. V roce 2004 nebyly logicky dostupn´e dneˇsn´ı technologie a moˇznosti a tak se nov´e funkcionality pˇrid´avaly mnohdy krkolomn´ ym zp˚ usobem, kter´ y znamenal odchylky od standard˚ u programov´an´ı. Typick´ ym zp˚ usobem byla snaha vytvoˇrit “nˇeco jako AJAX”na u ´rovni tehdejˇs´ıho javascriptu a CCS 1.
3.2
Architektura
Hlavn´ı d˚ uvod pro v´ yvoj nov´e verze byl ten, ˇze star´ y OIS Medoro byl vyvinut na technologii PHP 4. V dobˇe v´ yvoje sice pˇriˇslo na sc´enu nov´e PHP 5 s nov´ ym pˇr´ıstupem k objektovˇe orientovan´emu programov´an´ı (OOP), ale to uˇz v´ yvoj zapoˇcal a nov´e PHP 5 pˇrin´aˇselo v´ıce ot´azek neˇz odpovˇed´ı. V tabulce 3.1 se pod´ıvejme na pr˚ ubˇeh vyd´an´ı verz´ı PHP ˇrady 4 a 5 v obdob´ı v´ yvoje OIS Medoro. Takˇze bylo rozhodnuto, ˇze rozpracovan´ y projekt nebude pˇreps´an do nov´eho, nezn´am´eho PHP 5.0, ale z˚ ustane se u ust´alen´eho a spolehliv´eho PHP 4. V dneˇsn´ı dobˇe m´ame k dispozici PHP 5.3 (nejnovˇejˇs´ı verze PHP 5.3.8, srpen 2011). Spravovat rozs´ahlou aplikaci ve star´e verzi re´aln´e bylo, ale vyv´ıjet nov´e funkcionality uˇz bylo sloˇzit´e. Proto bylo rozhodnuto, ˇze nov´e moduly OIS budou vyv´ıjeny na nov´ ych technologi´ıch a star´e moduly se postupnˇe pˇrep´ıˇs´ı. PHP 4 4.3 - prosinec 2002 4.4 - srpen 2005 4.4.8 - leden 2008 4.4.9 - srpen 2008 konec ˇrady 4
PHP 5 5.0 - ˇcervenec 2004 5.1 - listopad 2005 5.2 - listopad 2006 5.2.6 - kvˇeten 2008 5.2.8 - prosinec 2008
Tabulka 3.1: V´ yvoj PHP 4 a PHP 5.
23
Obr´azek 3.1: Grafick´e zn´azornˇen´ı rozdˇelen´ı modul˚ u.
3.2.1
Nov´ a verze
Nov´a verze pˇrin´aˇs´ı celou ˇradu vylepˇsen´ı. Uˇzivatel´e ocen´ı implementaci AJAXu a zaveden´ı UI 1 element z knihovny jQuery, kter´a zpˇr´ıjemˇ nuje pr´aci s celou str´ankou at’ uˇz je to pomoc´ı 2 widget˚ u jako je napˇr´ıklad UI tab (odpad´a znovunaˇc´ıt´an´ı str´anky), pˇr´ıjemn´ y kalend´aˇr nebo jen zpˇr´ıjemnˇen´ı grafiky pomoc´ı jQuery efekt˚ u. Uˇzivatel´e d´ale ocen´ı jednotn´ y export tiskov´ ych sestav do PDF, pˇr´ım´a komunikace s PACS serverem nebo generovan´e grafy pomoc´ı SVG. To, co uˇzivatel nem˚ uˇze ocenit, je j´adro syst´emu. OIS M2 je postaven na ZF, ˇcili je postaven na architektuˇre MVC, na principech OOP a na modul´arn´ı struktuˇre ZF. OIS M2 je testov´an unit testy (jeden z krok˚ u pro certifikaci programu), vyuˇz´ıv´a cacheov´an´ı, vytv´aˇr´ı logy, m´a pokroˇcilejˇs´ı spr´avu opr´avnˇen´ı, pomoc´ı standartu HL7 m˚ uˇze komunikovat se zdravotnick´ ymi pˇr´ıstroji jako je napˇr´ıklad CT nebo rozˇsiˇruje moˇznosti nemocniˇcn´ı agendy.
3.2.2
Celkov´ a koncepce OIS M2
Jak bylo ˇreˇceno v´ yˇse, OIS M2 vyuˇz´ıv´a modulovou strukturu ZF, takˇze z´akladn´ı dˇelen´ı jednotliv´ ych funkcionalit je modulov´e. Z c´ıl˚ u pr´ace je patrn´e, ˇze stˇeˇzejn´ı moduly jsou Kartot´eka, Radioterapie a Chemoterapie. V tˇechto modulech jsou z´akladn´ı funkce pro zpracov´an´ı l´ekaˇrsk´ ych dat o jednotliv´ ych pacientech, zaˇrad’me tyto moduly do skupiny modul˚ u l´ekaˇrsk´ ych. Dalˇs´ımi skupinami modul˚ u jsou managersk´e a administr´atorsk´e. Posledn´ı dvˇe skupiny obsahuj´ı v´ıce modul˚ u neˇz skupina l´ekaˇrsk´a, ale jejich funkcionalita nen´ı tak sloˇzit´a jako moduly l´ekaˇrsk´e, nehledˇe na to, ˇze z program´atorsk´eho hlediska na nich nen´ı nic zaj´ımav´eho. Managersk´e moduly obhospodaˇruj´ı ekonomick´e funkce jako je generov´an´ı sou1 2
User Interface ”Udˇel´ atko”, miniaplikace z knihovny jQuery UI
24
bor˚ u d´avek pro pojiˇst’ovny nebo sledov´an´ı statistik. Moduly administr´atorsk´e zase spravuj´ı kompletnˇe cel´ y syst´em. Staraj´ı se o r˚ uzn´e ˇc´ıseln´ıky, zobrazov´an´ı log˚ u a stavu syst´emu nebo spravuj´ı uˇzivatelsk´a opr´avnˇen´ı. Na obr´azku 3.1 m˚ uˇzeme vidˇet grafick´e uspoˇra´d´an´ı vybran´ ych modul˚ u rozdˇelen´ ych do skupin. V n´asleduj´ıc´ıch kapitol´ach si podrobnˇe rozebereme vybran´e tˇri l´ekaˇrsk´e moduly.
3.3
Modul Kartot´ eka
Modul Kartot´eka je z´akladn´ı modul pro pr´aci s daty o jednotliv´ ych pacientech. Nelze prov´adˇet ˇza´dn´e v´ ykony (ozaˇrov´an´ı, kontrola, aplikace l´eˇciv) u pacient˚ u, kteˇr´ı nejsou uvedeni v kartot´ece. Tento princip vych´az´ı z nemocniˇcn´ı praxe a je zcela logick´ y. Co do funkcionality tento modul nab´ız´ı z´akladn´ı operace jako vytvoˇrit a editovat pacienty. Kromˇe t´eto jednoduch´e zpr´avy pacient˚ u nav´ıc nab´ız´ı moˇznost k pacient˚ um pˇrikl´adat r˚ uzn´e druhy dokumentace. Nejjednoduˇs´ı je informace o zmˇenˇe v´ahy (s t´ım spojen´a zmˇena BMI a BSA) a tlaku, libovoln´e mnoˇzstv´ı r˚ uzn´ ych soubor˚ u (kategorizace obr´azky, dokumenty, laboratorn´ı v´ ysledky, ...), libovoln´e mnoˇzstv´ı anamn´ez (specifikovan´ y formul´aˇr) a v neposledn´ı ˇradˇe libovoln´e mnoˇzstv´ı zpr´av (takt´eˇz specifikovan´ y formul´aˇr). Specifick´e formul´aˇre anamn´ez a zpr´av jsou prvn´ımi faktory, kter´e zaˇc´ınaj´ı OIS M2 oddˇelovat od obecn´ ych NIS. To, co r˚ uzn´e NIS ˇreˇs´ı textov´ ym polem obdobn´e MS Word, je v OIS vysoce specifikov´ano a proto tyto data pˇrin´aˇsej´ı ˇsirˇs´ı moˇznost zpracov´an´ı. Nejjednoduˇs´ı pˇr´ıklad t´eto v´ yhody je vyfiltrov´an´ı pacient˚ u s urˇcitou diagn´ozou (to ale um´ı i vˇetˇsina NIS). To, co ale NIS neumoˇzn ˇuj´ı je filtrace podle specifick´ ych onkologick´ ych 3 krit´eri´ı (napˇr TNM specifikace s rozˇs´ıˇren´ımi). Veˇsker´e tiskov´e v´ ystupy nejen v modulu Kartot´eka prob´ıhaj´ı tak, ˇze data jsou exportov´ana do PDF a potaˇzmo vytisknuta. T´ımto zp˚ usobem se vyhneme r˚ uzn´ ym n´astrah´am tisku webov´e str´anky se specifick´ ym souborem kask´adov´ ych styl˚ u. Mimo tisk˚ u uloˇzen´ ych zpr´av a anamn´ez tento modul nab´ız´ı tisk strvrzenky o u ´hradˇe regulaˇcn´ıho poplatku, ˇza´dost o pˇr´ıspˇevˇek na u ´hradu tohoto poplatku, ˇst´ıtky se jm´enem a diagn´ozou, ˇz´adanky na vyˇsetˇren´ı CT, MR ˇci PET a r˚ uzn´e jin´e ˇza´danky.
3.3.1
Modelov´ aˇ c´ ast
Nyn´ı se pod´ıv´ame na modelovou str´anku tohoto modulu. ER diagram si m˚ uˇzeme prohl´ednout na obr´azku 3.2. V ER diagramu nejsou u tabulek vyps´any vˇsechny atributy, tento krok je kv˚ uli pˇrehlednosti diagramu. Napˇr´ıklad tabulky Kartoteka_anamnezy a Kartoteka_zpravy maj´ı pˇres sedmdes´at atribut˚ u a z hlediska pochopen´ı struktury jsou vynechan´e atributy nezaj´ımav´e. Jinak ˇreˇceno, zaj´ımav´e atributy jsou v ER diagramu zn´azornˇeny, nezaj´ımav´e jsou naznaˇceny a doplnˇeny tˇremi teˇckami. Na ER diagramu vid´ıme, ˇze modul je po modelov´e str´ance jednoduch´ y, skl´ad´a se z osmi tabulek propojen´ ymi mezi sebou vazbou 1:N (aˇz na jednu v´ yjimku). Tento n´avrh splˇ nuje 3 NF, ˇcili kaˇzd´ y atribut obsahuje atomickou hodnotu, kaˇzd´ y nekl´ıˇcov´ y atribut je z´avisl´ y na prim´arn´ım kl´ıˇci (PK) a vˇsechny nekl´ıˇcov´e atributy jsou vz´ajemnˇe nez´avisl´e. Jelikoˇz se ve vˇsech tabulk´ach prim´arn´ı kl´ıˇc skl´ad´a jen z jednoho atributu, dalo by se ˇr´ıci, ˇze tento model splˇ nuje BCNF, ale pˇri n´avrhu s touto formou nebylo poˇc´ıt´ano, takˇze se jedn´a o jist´ y bonus. Pojd’me si nyn´ı probrat jednotliv´e tabulky a jejich v´ yznam v modulu. Kartoteka cenreg Jedn´a se o tabulku se z´akladn´ımi daty o pacientech. Za zm´ınku zde stoj´ı prim´arn´ı kl´ıˇc PACID. Zde bych si dovolil obh´ajit unik´atn´ı identifik´ator z ˇc´ıseln´e ˇrady 3
Tumor - Nodus - Metast´ aze
25
Obr´azek 3.2: ER diagram modulu kartot´eka. oproti rodn´emu ˇc´ıslu. V prv´e ˇradˇe se mnoz´ı lid´e domn´ıvaj´ı, ˇze rodn´e ˇc´ıslo je samo o sobˇe ˇ e republiky (popˇr´ıpadˇe Slovensk´e unik´atn´ı identifik´ator osob narozen´ ych na u ´zem´ı Cesk´ republiky). V rodn´ ych ˇc´ıslech ale existuj´ı duplicity. Pˇribliˇzme si princip rodn´ ych ˇc´ısel. Prvn´ıch ˇsest ˇc´ıslic nese informaci o datu narozen´ı, kde u ˇzen se k mˇes´ıci pˇriˇcte pades´at. Zbytek rodn´eho ˇc´ısla (tˇr´ı aˇz ˇctyˇr m´ıstn´ y) oddˇeluje dvˇe osoby narozen´e ve stejn´ y den, zpravidla se tyto ˇc´ıslice oddˇeluj´ı lom´ıtkem. Od roku 2004 4 z´akon umoˇzn ˇuje pˇriˇradit alternativn´ı ˇc´ıslo, jestliˇze jsou v jeden den vyˇcerp´ana rodn´a ˇc´ısla. Alternativn´ı ˇc´ıslo m´a form´at takov´ y, ˇze se k mˇes´ıc´ı pˇriˇcte u muˇz˚ u ˇc´ıslo dvacet a u ˇzen sedmdes´at. V jin´ ych zem´ı jsou pouˇzity napˇr´ıklad ˇc´ıseln´e ˇrady, ˇc´ısla soci´aln´ıho pojiˇstˇen´ı, fisk´aln´ı ˇc´ıslo (ˇc´ıslo daˇ nov´e evidence) nebo jin´a kombinace, kter´a m˚ uˇze obsahovat datum narozen´ı (napˇr´ıklad finsk´a rodn´a ˇc´ısla obsahuj´ı datum narozen´ı). V pouˇzit´ı v informatice m´a ale rodn´e ˇc´ıslo jist´e vady. Jedna vada m˚ uˇze b´ yt ta, ˇze v rodn´ ych ˇc´ıslech existuj´ı chyby. Existuje nejeden pˇr´ıpad toho, ˇze dvˇema obˇcan˚ um bylo pˇridˇeleno stejn´e rodn´e ˇc´ıslo. Dalˇs´ı vada je ta, ˇze s rodn´ ym ˇc´ıslem je vhodn´e zach´azet jako s ˇretˇezcem (character) a ne jako s cel´ ym ˇc´ıslem (integer popˇr´ıpadˇe number), takˇze 4B (integer) proti 11B (character, 10 znak˚ u + informace o velikosti). Tˇret´ı, posledn´ı a nejv´ yraznˇejˇs´ı vada je ta, ˇze kdyby rodn´e ˇc´ıslo figurovalo jako prim´arn´ı kl´ıˇc, pˇribude n´am jedna velk´a starost se situac´ı, kdy uˇzivatel-l´ekaˇr zad´a pacientovy ˇspatn´e rodn´e ˇc´ıslo (i pˇres algoritmus ovˇeˇruj´ıc´ı spr´avnost rodn´eho ˇc´ısla, zkr´atka osoba X bude m´ıt pˇridˇeleno rodn´e ˇc´ıslo osoby Y, nebo rodn´e ˇc´ıslo, kter´e nebylo vyd´ano). Vypad´a to jako banalita, ale zkusme zmˇenit prim´arn´ı kl´ıˇc tabulky, na kterou odkazuje 4
citovat http://aplikace.mvcr.cz/archiv2008/sbirka/2004/sb098-04.pdf
26
60% vˇsech tabulek. Nˇekdo si ˇrekne vˇzdyt’ staˇc´ı napsat pouze UPDATE Kartoteka_cenreg SET rc = nove_rc WHERE rc = stare_rc; jenˇze v datab´azi jsou nastaven´e relace, takˇze takhle jednoduˇse to bohuˇzel nejde. Musel by se vytvoˇrit nov´ y pacient s nov´ ym (moˇzn´a spr´avn´ ym) rodn´ ym ˇc´ıslem, musely by se zeditovat vˇsechny tabulky, kter´e maj´ı vazbu s tabulkou Kartoteka_cenreg a nakonec smazat pacienta se ˇspatn´ ym rodn´ ym ˇc´ıslem. Proto bylo rozhodnuto, ˇze rodn´e ˇc´ıslo nebude prim´arn´ım kl´ıˇcem tabulky Kartoteka_cenreg. Kartoteka anamnezy Tato tabulka obsahuje data anamn´ez. Tabulka obsahuje 74 r˚ uzn´ ych entit pˇredstavuj´ıc´ı ˇza´douc´ı informace jako napˇr´ıklad demografie, rodinn´a namn´eze, toxikologick´a anamn´eza, soci´aln´ı anamn´eza nebo informace i pˇredchoz´ı aplikaci chemoterapie. Kartoteka zpravy Tato tabulka obsahuje data zpr´av. Tabulka obsahuje 79 r˚ uzn´ ych entit. Od tabulky Kartoteka_anamnezy se liˇs´ı v tom, ˇze jednotliv´e u ´seky zpr´av m˚ uˇze zad´avat r˚ uzn´ y l´ekaˇr a je tˇreba uchov´avat informaci o tom, kdo a kdy zpr´avy zapsal. Takˇze zat´ımco tabulka Kartoteka_anamnezy si vystaˇcila s jednou relac´ı na tabulku uˇzivatel˚ u, tabulka Kartoteka_zpravy uchov´av´a relac´ı v´ıce. Kartoteka zpravy diag Tato tabulka obsahuje informace o diagn´oz´ach. Kaˇzd´a zpr´ava m˚ uˇze obsahovat kolonku prim´ arn´ıho onemocnen´ı a kolonky vedlejˇs´ıho onemocnˇen´ı. Prim´arn´ı onemocnˇen´ı je jen jedno, zato vedlejˇs´ıch onemocnˇen´ıch m˚ uˇze b´ yt v´ıce a informace o prim´arn´ım a vedlejˇs´ım onemocnˇen´ıch jsou totoˇzn´a. Proto vazba 1:N. V t´eto tabulce mohou b´ yt uloˇzeny specifikace TNM a dalˇs´ıch onkologick´ ych dat. Kartoteka zpravy ctae Tato tabulka obsahuje informace hodnocen´ı toxicity. U jedn´e zpr´avy m˚ uˇze b´ yt libovoln´ y poˇcet hodnocen´ı, proto vazba 1:N. ych modul˚ ua Kartoteka zpravykonfig Tato tabulka je editov´ana z administr´atorsk´ definuje typy zpr´av. V souˇcasn´e dobˇe je v syst´emu nakonfigurov´ano 12 druh˚ u zpr´av od telefonick´e konzultace pˇres ambulantn´ı zpr´avu ke konziliu. Kartoteka bmi V t´eto tabulce jsou uloˇzeny hodnoty BMI dat (v´aha a v´aˇska) plus hodnoty tlaku. V´ ystupy z t´eto tabulky lze sledovat v grafick´em v´ ystupup (knihovna generuj´ıc´ı SVG grafy je pops´ana v kategorii Pouˇzit´e technologie). Kartoteka zaznamy Tabulka obsahuje informace o zdravotnick´e dokumentaci v r˚ uzn´ ych form´atech (napˇr. pdf, txt, doc, jpg, png, ...). Zdravotnick´e dokumenty jsou kategorizov´any. Moment´alnˇe jsou vytvoˇreny ˇctyˇri kategorie (obr´azkov´a dokumentace, psan´a dokumentace, ostatn´ı dokumentace a laboratorn´ı v´ ysledky).
3.3.2
ˇ ıd´ıc´ı ˇ R´ c´ ast
Modul obsahuje celkem tˇri controllery: 1. AjaxController 2. IndexController 3. PacientController Veˇsker´e AJAXov´e operace v cel´em syst´emu M2 jsou smˇeˇrov´any do speci´aln´ıho controlleru vˇzdy se stejn´ ym jm´enem - AjaxController, takˇze jestliˇze se v kter´emkoliv modulu nach´az´ı AjaxController, tento modul vyuˇz´ıv´a AJAX. Nejprve n´as asi zdˇes´ı tˇricet ˇsest r˚ uzn´ ych metod. Toto ˇc´ıslo je opravdu velk´e (nejv´ıc ajaxov´ ych metod v cel´em M2). Tento poˇcet je d´an t´ım, ˇze v tomto modulu jsou implementov´any zpr´avy a tisky ˇza´danek. Tyto dvˇe operace jsou kv˚ uli u ´spoˇre ˇcasu ˇreˇseny kompletnˇe cel´e AJAXovˇe. Kdyˇz vezmeme v potaz, ˇze m´ame sedmn´act r˚ uzn´ ych pol´ı pro zpr´avu, z toho osm jich je mezi sebou 27
tak odliˇsn´ ych, ˇze vyˇzaduj´ı svou metodu a u kaˇzd´eho pole m´ame moˇznost naˇc´ıst data z pˇredchoz´ı zpr´avy, m´ame to 16 metod jen pro obhospodaˇrov´an´ı zpr´av. IndexController m´a na starosti z´akladn´ı u ´koly se vˇsemi pacienty. Je to hlavn´ı v´ ypis pacient˚ u, filtrov´an´ı pacient˚ u, ˇrazen´ı pacient˚ u, nastaven´ı poˇctu zobrazen´ ych pacient˚ u a listov´an´ı ve v´ ypisu. PacientController m´a na starosti veˇsker´e funkcionality ohlednˇe informac´ı o pacientovi v tomto modulu. Star´a se o ukl´ad´an´ı, editaci a maz´an´ı dat z datab´aze (popˇr´ıpadˇe z file syst´emu) (anamn´ezy, z´aznamy, zpr´avy). Umoˇzn ˇuje tisk ˇz´adanek a ˇst´ıtk˚ u a zobrazuje grafick´ y v´ ystup z hodnot BMI.
3.4
Modul Radioterapie
V tomto modulu jsou soustˇredˇeny informace o radioterapeutick´e l´eˇcbˇe. D´ale je tento modul ˇclenˇen na n´adorovou a nen´adorovu radioterapii. V tomto modulu je moˇzn´e nadefinovat radioterapeutick´ y pl´an ozaˇrov´an´ı, kter´ y nese veˇsker´e informace o pl´anovan´e l´eˇcbˇe. Nejd˚ uleˇzitˇejˇs´ımi informacemi je celkov´a d´avka radiace, kter´a m´a b´ yt c´ılen´a na postiˇzenou tk´an ˇ a informace o tom, do kolika frakc´ı m´a b´ yt tato d´avka rozdˇelen´a. Na z´akladˇe tˇechto u ´daj˚ u poskytne OIS M2 seznam aktu´aln´ıch pacient˚ u, kteˇr´ı v dan´ y den ˇcekaj´ı na oz´aˇren´ı. OIS M2 se po potvrzen´ı aktu´aln´ıho oz´aˇren´ı postar´a o zaznamen´an´ı patˇriˇcn´ ych v´ ykon˚ u, ze kter´ ych se generuj´ı d´avky pro pojiˇst’ovny. V ˇc´asti potvrzen´ı aktu´aln´ıho odz´aˇren´ı nechyb´ı moˇznost zaˇskrtnout pˇr´ıpadnˇe port´al s l´ekaˇrem. V tomto pˇr´ıpadˇe se na dalˇs´ım m´ıstˇe OIS M2 zobraz´ı seznam pacient˚ u, kter´e tento port´al ˇcek´a. Pˇri importu pl´anu pro n´adorovou radioterapii syst´em na z´akladˇe dat z DVH 5 syst´em sestav´ı a nab´ıdne uˇzivateli graf, ve ktr´em je moˇzn´e pozorovat v´ yvoj d´avky ve sledovan´ ych org´anech. U nen´adorov´e raditerapeutick´e l´eˇcby doch´az´ı k ozaˇrov´an´ı cesiov´ ym ozaˇrovaˇcem. OIS M2 poskytuje u aktu´aln´ı frakce nen´adorov´e radioterapie u ´daj o tom, jak dlouho se m´a inkrimovan´e m´ısto v dan´ y den ozaˇrovat. V´ ypoˇcet vych´az´ı z rovnice rozpadu cesia a pro person´al tak odpad´a nutnost tento u ´daj dohled´avat v tabulce, kter´a se mus´ı pravidelnˇe aktualizovat. V tomto modulu je d´ale moˇzn´e vytv´aˇret vizity k l´eˇcbˇe a evidovat simulaˇcn´ı protokoly l´eˇcby. Vˇsechny tyto procesy jsou opˇet nav´az´any na pojiˇst’ovnu, takˇze opˇet odpad´a povinnost evidovat v´ ykony jinde.
3.4.1
Modelov´ aˇ c´ ast
Tento modul se skl´ad´a z patn´acti r˚ uzn´ ych datab´azov´ ych tabulek. Tabulky jsou ve vazbˇe 1:N a stejnˇe jako u modulu Kartot´eka splˇ nuj´ı 3 NF a stejnˇe jako v Kartot´ece se u vˇsech tabulek prim´arn´ı kl´ıˇc skl´ad´a jen z jednoho atributu, takˇze n´avrh splˇ nuje i BCNF a stejnˇe jako u Kartot´eky s t´ımto faktem nebylo poˇc´ıt´ano, takˇze je to opˇet jist´ y bonus. ER diagram tabulek si m˚ uˇzeme prohl´ednout na obr´azku 3.3 a v n´asleduj´ıc´ı ˇca´sti je struˇcnˇe nast´ınˇeno, k ˇcemu jednotliv´e tabulky slouˇz´ı. Radioterapie ozarovaci protokol - tato tabulka obsahuje informace o ozaˇrovac´ıch protokolech. Je to kl´ıˇcov´a tabulka modulu, protoˇze jak je vidˇet, v´aˇzou se na n´ı vˇsechny ostatn´ı tabulky. Samotn´a tabulka je pak pomoc´ı entity pobyt id v´azan´a na seznam pobyt˚ u, kter´e jsou pak v´az´any na konkr´etn´ıho pacienta. 5
Dose-volume histogram
28
29
Obr´azek 3.3: ER diagram modulu radioterapie.
Radioterapie plany - tato tabulka obsahuje radiologick´e pl´any. Jak bylo ˇreˇceno v´ yˇse, pl´an obsahuje z´akladn´ı informace o ozaˇrov´an´ı (d´avku na frakci, poˇcet frakc´ı, poˇcet frakc´ı na den, adt.). Na tuto tabulku se v´aˇzou tabulky, kter´e nˇejak´ ym zp˚ usobem informace o pl´anu rozˇsiˇruj´ı, nebo upravuj´ı. Jsou to tabulky: ysledn´ y poˇcet 1. Radioterapie extra frakce - pomoc´ı dat v t´eto tabulce lze upravit v´ ˇ sen´ı pˇres pomocnou tabulku bylo nutn´e z toho d˚ frakc´ı. Reˇ uvodu, ˇze kaˇzd´a takov´ato odchylka od pl´anu m˚ us´ı b´ yt od˚ uvodnˇen´a a zpˇetnˇe dohledateln´a. 2. Radioterapie ozarovani - pomoc´ı t´eto tabulky syst´em uchov´av´a informace o odz´aˇren´ ych frakc´ıch. 3. Radioterapie pole - v t´eto tabulce jsou uloˇzen´e informace o ozaˇrovac´ıch pol´ıch, kter´e jsou uloˇzeny ke konr´etn´ımu pl´anu. kaˇzd´ y pl´an mus´ı obsahovat alespoˇ n jedno pole. ych 4. Radioterapie sledovane organy - v t´eto tabulce jsou uloˇzena data o sledovan´ org´anech (jedn´a se o statistick´e u ´daje d´avek do org´an˚ u v okol´ı loˇziska tumoru). Na y tuto tabulku se d´ale v´aˇze Radioterapie dvh data, ve kter´e je uloˇzen podrobn´ v´ yvoj d´avky ve sledovan´ ych org´anech. Radioterapie rozpis frakci - v t´eto tabulce jsou zaznamen´any informace o pl´anov´an´ı frakc´ı. V syst´emu m˚ uˇzeme zaznamenat napˇr´ıklad to, ˇze po kaˇzd´e des´at´e frakci mus´ı pacient absolvovat port´alovou vizitu s l´ekaˇrem nebo to, ˇze pˇri posledn´ı frakci se m´a pacientovi odebrat krev na rozbor. Tyto informace jsou uloˇzeny pr´avˇe v t´eto tabulce. Radioterapie simulacni protokoly - v t´eto tabulce jsou uloˇzeny informace o simulaˇcn´ıch protkolech. Radioterapie stop - v t´eto tabulce jsou uloˇzeny data o pˇreruˇsen´ı soustavn´eho ozaˇrov´an´ı. V n´adorov´e RT je poˇc´ıt´ano s t´ım, ˇze pacient vˇetˇsinou chod´ı na ozaˇrov´an´ı kaˇzd´ y den. V t´eto tabulce jsou uloˇzeny dny, kdy pacient ozaˇrov´an nebyl. Rozliˇsuj´ı se tˇri druhy pˇreruˇsen´ı: absence, stop a porucha. Radioterapie vizity - v t´eto tabulce jsou uchov´any informace o vizit´ach. Vizita mus´ı obsahovat zpr´avu vizity a informace o aktu´aln´ı d´avce oz´aˇren´ı. K vizitˇe l´ekaˇr m˚ uˇze pˇriloˇzit hodnocen´ı ARMSC 6 nebo obr´azkouvou dokumentaci. Tyto informace jsou uloˇzeny v tabulk´ach Radioterapie vizita armsc a Radioterapie vizita soubory. Informace o d´avk´ach jsou uloˇzeny v Radioterapie vizita davky.
3.4.2
ˇ ıd´ıc´ı ˇ R´ c´ ast
Modul Radioterapie m´a celkem ˇctyˇri controllery. 1. 2. 3. 4.
AjaxController IndexController OzarovnyController ProtokolController
Stejnˇe jako u modulu Kartot´eka (a v cel´em syst´emu) m´a AjaxController na starosti vˇsechny operace spojen´e s ajaxovou technologi´ı. Jedn´a se pˇrev´aˇznˇe o zobrazov´an´ı mod´aln´ıch oken a interaktivn´ı rozˇs´ıˇren´ı prvk˚ u formul´aˇre. IndexController m´a na starosti u ´vodn´ı str´anku modulu a s t´ım spojen´e filtrov´an´ı a ˇrazen´ı radioterapeutick´ ych pobyt˚ u. 6
Acute Radiation Morbidity Scoring Criteria
30
OzarovnyController m´a na starosti ˇr´ızen´ı proces˚ u v seznamu pacient˚ u u jednotliv´ ych pˇr´ıstroj˚ u. Seznam pacient˚ u lze r˚ uzn´ ymi zp˚ usoby filtrovat a ˇradit a nav´ıc tento controller nab´ız´ı uˇzivatel˚ um jednoduchou denn´ı statistiku. ProtokolController m´a na starosti vˇsechny ostatn´ı procesy v modulu Radioterapie. Star´a se o procesy okolo pl´an˚ u, vizit a simulac´ı. Generuje rozpis frakc´ı a star´a se o vˇse okolo frakc´ı, at’ uˇz je to odz´aˇren´ı frakce (a poukl´ad´an´ı v´ ykon˚ u do pojiˇst’ovny) nebo vyhl´aˇsen´ı STOP, absence nebo poruchy.
3.5
Modul Chemoterapie
Modul Chemoterapie se star´a o spr´avu pacient˚ u, kteˇr´ı maj´ı naordinovanou chemoterapeutickou l´eˇcbu. Z´akladn´ım pil´ıˇrem tohoto modulu jsou protokoly chemoterapie, kter´e obsahuj´ı podrobn´e informace o l´eˇcbˇe. Protokoly se skl´adaj´ı ze tˇr´ı ˇca´st´ı. Jsou to nosiˇce hydratace, pˇr´ıpravky premedikace a samotn´e pˇr´ıpravky chemoterapie. Organizace l´eˇcby je pak n´asleduj´ı: pobyt CHT - linie CHT - cyklus CHT. Pˇri vytv´aˇren´ı cykl˚ u se vybere pr´avˇe jeden protokol, kter´ y bude po dobu l´eˇcby (vyspecifikovanou v protokolu) aplikov´an. V protokolu je uvedeno, kter´e dny (od zah´ajen´ı l´eˇcby) se m´a dan´ y pˇr´ıpravek aplikovat. Obsahuje i alterantivy pro v´ ypoˇcet doby aplikace nebo typu ˇred´ıc´ıho nosiˇce (nˇekter´e typy nosiˇc˚ u nelze aplikovat pacient˚ um s v´ yskytem urˇcit´eho druhu alergie a podobnˇe). Syst´em pˇri vytv´aˇren´ı cyklu CHT vytvoˇr´ı pˇrehled aplikaˇcn´ıch list˚ u, ve kter´ ych je uvedeno datum aplikace a pˇres syt´em nejr˚ uznˇejˇs´ıch kontrol vypoˇcte aplikovanou d´avku, kdyˇz je to vyˇzadov´ano, vypoˇcte i aplikovan´ y ˇcas. Po tomto vytvoˇren´ı aplikaˇcn´ıch list˚ u m˚ uˇze zdravotnick´ y person´al pˇriˇradit pacienta na inkriminovan´e datum na l˚ uˇzko a syst´em vykresl´ı do grafu u ´daj o d´elce aplikace (slouˇz´ı k pˇrehledu obsazenosti l˚ uˇzek). V den a plikace pˇr´ıpravku mus´ı pacient abslovovat prohl´ıdku l´ekaˇrem. L´ekaˇr potvrd´ı aplikaci pˇr´ıpravku (m˚ uˇze prov´est korekci d´avky) a po potvrzen´ı syst´em odeˇsle informaci do ˇredˇen´ı o poˇzadavku na pˇr´ıpravu pˇr´ıpravku k aplikaci.
3.5.1
Modelov´ aˇ c´ ast
Datab´azov´e tabulky v tomto modulu jsou rozdˇeleny na dvˇe skupiny. Tabulky s prefixem chemoterapie obsahuj´ı informace o protokolech chemoterapie. Tabulky s prefixem Chemo obsahuj´ı data o l´eˇcbˇe. Nejprve se zamˇeˇr´ım na tabulky s informacemi o protokolech. ER diagram si lze prohl´ednout na obr´azku 3.4. Na prvn´ı pohled je patrn´e, ˇze se tato ˇca´st skl´ad´a z deseti tabulek. Hlavn´ı tabulka je pojmenov´ana chemoterapie protokoly a jsou v n´ı obsaˇzeny z´akladn´ı informace o protokolu, jako napˇr´ıklad n´azev protokolu, datum vytvoˇren´ı, k´ ym byl vytvoˇren, informace o reviz´ıch a v neposledn´ı ˇradˇe informace o autorizaci protokolu. L´ekaˇr m˚ uˇze pacientovi pˇredepsat jen autorizovan´ y protokol, z toho vypl´ yv´a, ˇze vytvoˇrit protokol m˚ uˇze libovoln´ y pracovn´ık, ale autorizovat jen urˇcit´a skupina pracovn´ık˚ u (z praxe to b´ yv´a prim´aˇr a jeho z´astupce). Jak bylo ˇreˇceno v´ yˇse, protokol se m˚ uˇze skl´adat ze tˇr´ı sloˇzek. Nosiˇce hydratace jsou uchov´any v tabulce chemoterapie hydratace a na tuto tabulku se v´aˇze jeˇstˇe dalˇs´ı, chemoterapie hydratace podminky nosic, ve kter´e jsou uchov´any informace o nosiˇc´ıch, kter´e maj´ı b´ yt aplikov´any s urˇcit´ ym typem alergie nebo vedlejˇs´ı diagn´ozy. Informace o pˇr´ıpravku premedikace a samotn´eho pˇr´ıpravku aplikace chemoterapie jsou uloˇzeny v tabulk´ach chemoterapie protokoly premedikace a chemoterapie protokoly pripravky. Na sch´ematu m˚ uˇzeme vidˇet, ˇze tyto tabulky jsou v´az´an´ y 31
32
Obr´azek 3.4: ER diagram modulu chemoterapie - spr´ava protokol˚ u.
na hlavn´ı tabulku pˇres tabulku chemoterapie protokoly roztoky. Toto optaˇren´ı bylo pouˇzito z hlediska opˇetovn´eho pouˇzit´ı, protoˇze kdyˇz se podrobnˇeji pod´ıv´ame na informace o samotn´em pˇr´ıpravku a pˇr´ıvravku premedikace zjist´ıme, ˇze maj´ı mnoho spoleˇcn´eho. Hlavn´ı rozd´ıly jsou v tom, ˇze l´eˇcba se ˇr´ıd´ı podle samotn´ ych pˇr´ıpravk˚ u (obsahuj´ı informaci o dnech pod´an´ı), takˇze pˇr´ıpravek premedikace je sv´az´an se samotn´ ym pˇr´ıpravkem chemoterapie. Na druhou stranu, pˇr´ıpravek premedikace nese dalˇs´ı informace, jako napˇr´ıklad dobu pod´an´ı vztaˇzenou na aplikaci samotn´eho pˇr´ıpravku. Vytknut´ım spoleˇcn´ ych prvk˚ u do tabulky chemoteryvaj´ıc´ı tabulky, kter´e rozˇsiˇruj´ı inforapie roztoky nav´ıc odpadla nutnost duplikovat zb´ maci o ˇredˇen´ı (chemoterapie redeni) a podm´ınk´ach pro stanoven´ı rychlosti pod´an´ı (chemoterapie roztok podminka rychlost). na tabulku s informacemi o ˇredˇen´ı se y d˚ uvod jako u d´ale v´aˇzou tabulky chemoterapie redeni podminka nosic (obdobn´ chemoterapie hydratace podminka nosic) a chemoterapie redeni podminka objem (obdobn´e restrikce pro stanoven´ı objemu ˇredˇen´ı, nejˇcastˇeji v´az´ana na bsa). Druh´a ˇca´st tohoto modulu je tvoˇrena informacemi o samotn´e l´eˇcbˇe. Jak bylo ˇreˇceno v´ yˇse, organizace l´eˇcby chemoterapie vych´az´ı z modelu pobyt CHT - linie CHT - ciklus CHT. Tuto strukturu m˚ uˇzeme vypozorovat na ER diagramu t´eto ˇc´asti modulu, kter´ y je zn´azornˇen na obr´azku 3.5. Z´akladn´ı tabulkou je Chemo linie, ve kter´e jsou uloˇzeny informace o lini´ıch l´eˇcby. Tatu tabulka se v´aˇze (obdobnˇe jako v modulu radioterapie) na tabulku Pobyty, kter´a je d´ale v´az´ana na konkr´etn´ıho pacienta. Na tabulku s liniemi se v´aˇze tabulka Chemo serie. Kdyˇz se podrobnˇe zamˇeˇr´ıme na tabulku s liniemi, zjist´ıme, ˇze je vytvoˇrena vlastnˇe jen kv˚ uli pˇrehlednosti. Prvotn´ı n´avrh s touto tabulkou v˚ ubec nepoˇc´ıtal. Jako z´akladn´ı l´eˇcebn´ y cyklus je br´ana jedna s´erie, takˇze veˇsker´e vztaˇzen´e u ´daje, jako datum vytvoˇren´ı, autor a podobnˇe jsou obsaˇzeny v tabulce s informacemi o s´erii, naproti tomu tyto informace nejsou obsaˇzen´e v tabulce s liniemi, protoˇze to nen´ı podstatn´e. Veˇsker´a d˚ uleˇzit´a data jsou obsaˇzena v s´erii, tato tabulka se v´aˇze na jeden konr´etn´ı protokol chemoterapie. K s´erii chemoterapie lze pˇripojit l´ekaˇrskou vizitu, kter´a je totoˇzn´a s vizitou radioterapie, pouze neobsahuje informace o aktu´aln´ım ozaˇrov´an´ı. Tyto vizity jsou uloˇzeny v tabulce Chemo vizity, kterou rozˇsiˇruj´ı tabulky Chemo vizita soubor a Chemo vizita armsc. Zde je dluˇzno vysvˇetlit, proˇc jsou zduplikov´any tˇri totoˇzn´e tabulky. Vysvˇetlen´ı je jednoduch´e. Zde se jedn´a o ˇspatn´ y n´avrh, kter´ y nerespektuje opˇetovnou pouˇzitelnost. P˚ uvodn´ı z´amˇer byl takov´ y, ˇze Chemoterapie a Radioterapie budou dva navz´ajem nez´avisl´e moduly. Tento z´amˇer je splnˇen, avˇsak chyba s vizitou by ˇsla ˇreˇsit elegantnˇeji t´ım zp˚ usobem, ˇze by se mohl vytvoˇrit modul Vizita, kter´ y by byl spojen jak s modulem Chemoterapie, tak s modulem Radioterapie. yˇse, Dalˇs´ı tabulka v´azan´a na s´erii chemoterapie je Chemo aplikace. Bylo ˇreˇceno v´ ˇze pˇri zakl´ad´an´ı serie chemoterapie syst´em vytvoˇr´ı aplikaˇcn´ı listy. Tyto listy jsou pr´avˇe uloˇzeny v t´eto tabulce. Na tuto tabulku se v´aˇze Chemo aplikace preobednani, kde jsou uloˇzeny informace o zmˇenˇe data oproti pl´anu (nedodorˇzen´ı pl´anu se projev´ı na v´ ysledn´e u ´ˇcinnosti s´erie), d´ale se na n´ı v´aˇze tabulka Chemo aplikace roztok a Chemo aplikace hydratace, kde jsou uloˇzeny informace o podan´ ych l´atk´ach (hlavnˇe aplikovan´e d´avky, ˇcas aplikace a podobnˇe). Posledn´ı tabulka, kter´a se v´aˇze na aplikaˇcn´ı listy, je Chemo aplikace toxicita, kde jsou uloˇzeny informace o v´ ysledc´ıch toxicity pro konkr´etn´ı aplikaˇcn´ı list.
3.5.2
ˇ ıd´ıc´ı ˇ R´ c´ ast
Tento modul obsahuje celkem pˇet controller˚ u. 33
34
Obr´azek 3.5: ER diagram modulu chemoterapie - chemoterapeutick´e pobyty.
1. 2. 3. 4. 5.
AdminController AjaxController IndexController LuzkaController PacientController
AdminController obhospodaˇruje procesy spojen´e s vytv´aˇren´ım, editac´ı a maz´an´ım protokol˚ u CHT l´eˇcby. AjaxController m´a opˇet na starosti veˇsker´e procesy souvisej´ıc´ı s AJAXovou technologi´ı. IndexController m´a opˇet na starosti u ´vodn´ı str´anku, ˇcili zobrazuje, filtruje a ˇrad´ı pacienty s CHT pobytem. LuzkaController obhospodaˇruje procesy s l˚ uˇzky. Pro snaˇzˇs´ı orientaci byla pro zdravotnick´ y person´al, kter´ y se star´a o pacienty s CHT pobytem, vyvinuta grafick´a podpora zobrazov´an´ı obsazenosti l˚ uˇzek. V t´eto ˇc´asti lze objedn´avat a pˇreobjedn´avat pacienty na jednotliv´a l˚ uˇzka a vˇsechny tyto procesy m´a na starosti tento controller. PacientController m´a na starosti prezentaci dat u jednotliv´ ych pacient˚ u. Star´a se o v´ ypoˇcty mnoˇzstv´ı jednotliv´ ych roztok˚ u na z´akladˇe jednotek (ml/m3, ml/kg, ...), vyb´ır´a druhy pˇr´ıpravk˚ u hydratace a ˇredˇen´ı na z´akladˇe alergi´ı a kontroluje dalˇs´ı vlastnosti, kter´e je moˇzn´e zadat v protokolu CHT. Tento controller se d´ale star´a o potvrzov´an´ı takto vypoˇcten´ ych d´avek a o prezentaci l´eˇcby v podobˇe kalend´aˇre.
3.6 3.6.1
Instalaˇ cn´ı pˇ r´ıruˇ cka HW a SW poˇ zadavky na server
Pro instalaci onkologick´eho IS M2 je nutn´e m´ıt samostatn´ y server, kter´ y m´a vyˇreˇsen´e z´alohov´an´ı a alternativn´ı nap´ajen´ı. Jelikoˇz v´ yˇse bylo ˇreˇceno, ˇze podnikov´a politika upˇrednostˇ nuje open sourceov´e ˇreˇsen´ı, proto je onkologick´ y IS M2 dod´av´an se serverem s operaˇcn´ım syst´emem na b´azi Unixu. Jelikoˇz je onkologick´ y IS M2 postaven na webov´e platformˇe, je nutn´e na tomto serveru m´ıt nainstalovan´ y webov´ y server (ide´alnˇe Apache), datab´azov´ y server (ide´alnˇe PostgreSQL) a PHP (minim´alnˇe verze 5.2, niˇzˇs´ı verze nejsou podporov´any). Pro webov´ y server Apache je nutn´e povolit directivu mod rewrite, mod deflate a mod expires a d´ale je nutn´e m´ıt povolen´ y konfiguraˇcn´ı soubor .htaccess. Na zaˇca´tku t´eto pr´ace bylo ˇreˇceno, ˇze daˇ n za pouˇzit´ı frameworku je rychlost, pro minimalizov´an´ı t´eto danˇe je nav´ıc nutn´e, aby byl na serveru nainstalov´an Zend Guard/Optimizer a eAccelerator 7 . Dalˇs´ı nutnost´ı pro instalaci je m´ıt k dispozici datab´azov´ y server (pro snadnˇejˇs´ı popis vybereme PostgreSQL) s datab´az´ı ois-m2 a uˇzivatelem ois-m2 se vˇsemi pr´avy k datab´azi ois-m2. Posledn´ı poˇzadavek na pln´e vyuˇzit´ı OIS M2 je nutnost m´ıt na serveru nainstalovan´ y interpret Javy - JVM. Bez JVM by nebylo moˇzn´e realizovat komunikaci s PACS serverm a nebylo by moˇzn´e vyuˇz´ıt software pro automatick´e nahr´av´an´ı v´ ysledk˚ u laboratorn´ıho vyˇsetˇren´ı. 7
V´ıce informac´ı o rychlosti framework˚ u na adrese http://www.root.cz/clanky/velky-test-phpframeworku-zend-nette-php-a-ror/
35
Shrnut´ı HW a SW poˇ zadavk˚ u 1. potˇrebujeme server s OS na b´azi debian (debian, ubuntu) 2. potˇrebujeme m´ıt zprovoznˇen´ y web server Apache • nutn´e m´ıt povolen´ y konfiguraˇcn´ı soubor .htaccess • nutn´e m´ıt povolen´ y modul mod rewrite • doporuˇcen´e moduly mod deflate a mod expires 3. nutn´e nainstalovat PHP (optim´alnˇe 5.2 a novˇejˇs´ı) • optim´aln´ı je m´ıt zprovoznˇen´ y Zend Guard a eAccelerator 4. Nutn´e nainstalovat postgreSQL s datab´az´ı ois-m2 a uˇzivatelem ois-m2 se vˇsemi pr´avy k datab´az´ı ois-m2 5. Pro spr´avn´e pˇripojen´ı k PACS serveru a naˇc´ıt´an´ı laboratorn´ıch v´ ysledk˚ u je nutn´e m´ıt nainstalov´ano JVM
3.6.2
Postup instalace OIS M2
Jelikoˇz je OIS M2 vysoce specifick´ y SW, kter´ y nen´ı urˇcen´ y pro libovoln´e pouˇzit´ı, nem´a smysl vytv´aˇret automatick´ y instal´ator. Z´akladn´ı instalace se skl´ad´a z pˇeti jednotliv´ ych krok˚ u a z toho posledn´ı tˇri kroky jsou konfigurace aplikace. V prvn´ım kroku nahrajeme na datab´azov´ y server strukturu datab´aze. Pouˇzijeme-li datab´azov´ y server postgreSQL a ˇcistou z´alohu datab´aze ois-m2.back, postaˇc´ı n´am pouˇz´ıt y je souˇca´st´ı instalace datab´azov´eho serveru postgreSQL. sluˇzeb programu pg restore, kter´ Kydyby byl OIS M2 instalov´an na jin´ y datab´azov´ y server, museli bychom pouˇz´ıt sluˇzby konkr´etn´ıho datab´azov´eho serveru, nebo spustit transakci samotn´eho SQL dotazu. Bylo by ale nutn´e SQL dotaz pˇrizp˚ usobit konkr´etn´ımu datab´azov´emu serveru. Druh´ y krok je nahr´an´ı zdrojov´ ych k´od˚ u na server. Doporuˇcen´e um´ıstˇen´ı je /var/www/ois-m2. Tˇret´ı, ˇctvrt´ y a p´at´ y krok je konfigurace nahran´eho syst´emu. Shrnut´ı instalace OIS M2 y datab´azov´ y server nutno 1. nahr´an´ı datab´aze (ide´alnˇe pomoc´ı pg restore, pro jin´ spustit sql dotaz, kter´ y vytvoˇr´ı z´akladn´ı datab´azovou strukturu) 2. nahr´an´ı zdrojov´ ych k´od˚ u na server (ide´alnˇe do /var/www/ois-m2) 3. zmˇenit v ./app konfiguraˇcn´ı soubor cfg.ini (hlavnˇe pˇr´ıstup do datab´aze a z´akladn´ı cesty) 4. upravit konfiguraci modul˚ u v tabulce configModules (hlavnˇe nastaven´ı adres Pacs server˚ u a podobnˇe) 5. nastavit spr´avnou licenci v tabulce licence
3.6.3
Nutn´ e kroky po konfiguraci
Aby syst´em mohl fungovat, je nutn´e po instalaci jeˇstˇe prov´est p´ar krok˚ u, kter´e se t´ ykaj´ı samotn´eho bˇehu syst´emu a bezpeˇcnosti syst´emu. 1. nastavit spr´avn´e opr´avnˇen´ı pro specifick´e sloˇzky. • ./cache • ./temp • ./log • sloˇzku pro potˇreby eAcceleratoru, pokud nen´ı nastaveno na /temp 36
2. provˇeˇrit existenci symbolick´ ych odkaz˚ u ve sloˇzk´ach modul˚ u v ./app/modules/* 3. provˇeˇrit existenci souboru .htaccess ve sloˇzce ./app Obzvl´aˇstˇe posledn´ı krok je z hlediska bezpeˇcnosti d˚ uleˇzit´ y. Kdyby se nedopatˇren´ım stalo, ˇze by nedoˇslo k nahr´an´ı souboru .htaccess do t´eto sloˇzky, mˇelo by to nepˇr´ıjemn´ y dopad na bezpeˇcnost.
3.6.4
Doporuˇ cen´ eu ´ pravy po konfiguraci
Posledn´ım krokem instalace jsou doporuˇcen´e u ´pravy. Tyto u ´pravy nemaj´ı pˇr´ım´ y vliv na funkci samotn´eho syst´emu, je vˇsak vhodn´e se tˇemito u ´pravami zab´ yvat. 1. Vytvoˇren´ı uˇzivatelsk´ ych u ´ˇct˚ u 2. Vytvoˇren´ı lokalit pro pˇr´ıstup 3. nahr´at logo zdravotnick´eho zaˇr´ızen´ı Bez realizace prvn´ıho bodu by sice syst´em fungoval, ale k ˇcemu by to bylo dobr´e, kdyˇz by do nˇej nikdo nemohl pˇristupovat? Druh´ y bod se t´ yk´a opˇet bezpeˇcnosti. Kdyˇz se totiˇz nˇekdo snaˇz´ı pˇristoupit do syst´emu z jin´e neˇz uloˇzen´e lokality, syst´em bude vyˇzadovat pˇr´ısnˇejˇs´ı kontrolu autentizace. Tˇret´ı, posledn´ı, doporuˇcen´ y krok je nahr´an´ı loga zdravotnick´eho zaˇr´ızen´ı. Je to posledn´ı u ´prava cel´e konfigurace, protoˇze nem´a v˚ ubec ˇza´dn´ y vliv na fungov´an´ı syst´emu, jen upravuje vizu´aln´ı podobu tiskov´ ych sestav.
3.7
Uˇ zivatelsk´ a pˇ r´ıruˇ cka
Hlavn´ım rozcestn´ıkem cel´eho syst´emu je hlavn´ı menu. Na obr´azku 3.6 je zn´azornˇen´e menu superusera 8 . Menu lze vyvolat prav´ ym kliknut´ım myˇsi kamkoliv v prohl´ıˇzeˇci a do jist´e m´ıry lze ovlivnit i jeho poloˇzky. Restrikce poloˇzek se prov´ad´ı na z´akladˇe opr´avnˇen´ı (m˚ uˇzeme vidˇet na obr´azku 3.7) a expanzi m˚ uˇze ovlivnit kaˇzd´ y uˇzivatel zvl´aˇst’ a takov´eto poloˇzky maj´ı ikonu zelen´eho vyp´ınaˇce. Na obr´azku menu 3.6 jsou to poloˇzky Linac 1, Linac 2 a CT fronta. Takto voliteln´e menu usnadˇ nuje pˇr´ıstup do ˇca´st´ı syst´emu, kter´e uˇzivatel vyuˇz´ıv´a nejˇcastˇeji. vedlejˇs´ım rozcestn´ıkem jsou z´aloˇzky, jejichˇz podobu si m˚ uˇzeme prohl´ednout na obr´azku 3.8. Obsah z´aloˇzek je ovlivnˇen str´ankou, na kter´e se moment´alnˇe v syst´emu nach´az´ıme. Z´aloˇzka z obr´azku 3.8 poch´az´ı z centr´aln´ı karty pacienta. V´ yhoda tˇechto z´aloˇzek spoˇc´ıv´a v tom, ˇze pˇrep´ın´an´ı mezi z´aloˇzkami nevyˇzaduje obnovu str´anky, takˇze toto ˇreˇsen´ı do znaˇcn´e m´ıry zrychluje syst´em. Kliknut´ım na z´aloˇzku totiˇz akor´at pˇrepneme viditelnost dann´ ych blok˚ u. Nav´ıc jsou z´aloˇzky nastaveny tak, ˇze jsou plnˇe kompatibiln´ı s tlaˇc´ıtkem Zpˇet v internetov´ ych prohl´ıˇzeˇc´ıch, takˇze vyuˇz´ıv´an´ım z´aloˇzek nemus´ıme mˇenit styl zabˇehnut´e pr´ace. Posledn´ım rozcestn´ıkem v syst´emu jsou odkazy mezi navazuj´ıc´ımi moduly. Slouˇz´ı k tomu, abychom mohli rychle a jednoduˇse pˇreskakovat mezi moduly. Pˇr´ıklad vyuˇzit´ı m˚ uˇze b´ yt takov´ yto: Prohl´ıˇz´ıme si ozaˇrovac´ı protokol RT l´eˇcby a po t´e budeme cht´ıt vytisknout pacientovi ˇza´danku na CT vyˇsetˇren´ı. To znamen´a nutnost dostat se z modulu Radioterapie do modulu Kartot´eka. K tomuto u ´ˇcelu n´am pr´avˇe slouˇz´ı toto rozcest´ı. Nalezneme ho vˇzdy na konci prohl´ıˇzen´e str´anky. Konkr´etnˇe v ozaˇrovac´ım protokolu bychom tam naˇsli odkazy do centr´aln´ı karty a do karty pobytu. Obsah tohoto rozcestn´ıku je tak´e z´avisl´ y na str´ance, 8
role superuser je nejv´ yˇse v hierarchii opr´avnˇen´ı
37
Obr´azek 3.6: Hlavn´ı menu
Obr´azek 3.7: Procesy z´akladn´ı u ´rovnˇe
Obr´azek 3.8: Z´aloˇzky ´ I´ KARTA kterou pr´avˇe prohl´ıˇz´ıme, ale nejˇcastˇeji toto rozcest´ı tvoˇr´ı koleˇcko CENTRALN - KARTA POBYTU - RADIOTERAPIE (popˇr. CHEMOTERAPIE).
3.7.1
Pˇ r´ıruˇ cka kartot´ eky
V hlavn´ım modulu cel´eho OIS M2 jsou soustˇredˇeny z´akladn´ı operace s pacienty bez ohledu na to, jakou podstupuj´ı l´eˇcbu. Na obr´azku 3.9 m˚ uˇzeme vidˇet zn´azornˇen´e procesy, kter´e m˚ uˇzeme v tomto modulu prov´est. Pˇri podrobn´em zkoum´an´ı obr´azku si lze vˇsimnout toho, ˇze v tomto modulu nejsou nijak sloˇzitˇe ˇreˇsen´e restrikce opr´avnˇen´ı. Jedin´e procesy, kter´e jsou limitov´any uˇzivatelskou rol´ı, jsou podepisov´an´ı zpr´av (zpr´avu sm´ı podepsat jen l´ekaˇr, v pˇr´ıpadˇe probl´em˚ u administr´ator ˇc´ı superuser) a odemknut´ı podepsan´ ych zpr´av (jen administr´ator a superuser). D˚ uvod n´ızk´eho stupnˇe restrikc´ı je d´an t´ım, ˇze z´akladn´ı operace s pacienty v syst´emu maj´ı na starosti sestry, kter´e pˇredstavuj´ı (vyjma pomocn´eho person´alu) nejniˇzˇs´ı stupeˇ n zdravotnick´eho person´alu.
3.7.2
Pˇ r´ıruˇ cka radioterapie
Jak jiˇz bylo ˇreˇceno, modul radioterapie obhospodaˇruje veˇsker´e procesy pacient˚ u, kteˇr´ı maj´ı naordinovanou RT l´eˇcbu. Na obr´azku 3.10 jsou zn´azornˇen´e procesy, kter´e je moˇzn´e
38
Obr´azek 3.9: Uˇzivatelsk´e procesy v kartot´ece.
Obr´azek 3.10: Uˇzivatelsk´e procesy v radioterapii.
39
v modulu vyvolat. Lze si vˇsimnout, ˇze restrikce opr´avnˇen´ı je tu vyˇsˇs´ı neˇz v modulu kartot´eka. Z´akladn´ı jednotkou RT l´eˇcby v OIS M2 je ozaˇ rovac´ı protokol. K ozaˇrovac´ımu protokolu se v´aˇzou veˇsker´e informace o l´eˇcbˇe. V OIS M2 je moˇzn´e m´ıt k jednomu RT pobytu v´ıce ozaˇrovac´ıch protokol˚ u, ale t´eto moˇznosti nen´ı nevyuˇz´ıv´ano. Obecnˇe tedy plat´ı, ˇze jeden RT pobyt obsahuje jeden ozaˇrovac´ı protokol. K ozaˇrovac´ımu protokolu m˚ uˇze fyzik nahr´at RT pl´an (popˇr´ıpadˇe pl´any), kter´ y, jak bylo ˇreˇceno v´ yˇse, nese informace o l´eˇcbˇe. D˚ uleˇzit´e u ´daje (z hlediska dalˇs´ıch proces˚ u) v RT pl´anu jsou poˇcet frakc´ı celkem a poˇcet frakc´ı na den. Z tˇechto u ´daj˚ u se totiˇz d´ale generuje rozpis frakc´ı a v tomto rozpisu mohou radiologiˇct´ı asistenti potvrzovat odz´aˇren´e frakce. Syst´em potom nab´ız´ı pˇrehled, kolik frakc´ı je odz´aˇreno a jak´e je mnoˇzstv´ı aplikovan´e d´avky na c´ılov´e m´ısto. Kromˇe tˇechto u ´daj˚ u se syst´em d´ale postar´a na z´akladˇe u ´daj˚ u z pl´anu, o to, jak´e m´a poukl´adat v´ ykony do datab´aze. Zdravotnick´emu person´alu tak odpad´a nutnost evidovat v´ ykony souvisej´ıc´ı s ozaˇrov´an´ım ruˇcnˇe. K nahran´emu pl´anu lze tak´e pomoc´ı ˇcasov´an´ı vyznaˇcit, kter´e u ´koly se v kter´ y den ozaˇrov´an´ı maj´ı prov´est. Takov´eto informace se zobraz´ı v rozpisu frakc´ı a eliminuje to tak moˇznost nˇekter´ yu ´kol vynechat. Jedn´a se o jiˇz zmiˇ novanou port´alovou vizitu (s l´ekaˇrem nebo bez l´ekaˇre), invivo, boost a vizita. OIS M2 nab´ız´ı nahr´an´ı libovoln´eho poˇctu pl´anu a jejich konfiguraci. Lze tedy bez vˇetˇs´ıch probl´emu nastavit to, aby bˇeˇzely dva pl´any souˇcasnˇe nebo tˇreba to, aby druh´ y pl´an zaˇcal aˇz den po t´e, co bude ukonˇcen prvn´ı pl´an. Po odz´aˇren´ı posledn´ı frakce v pl´anu dojde automaticky k uzamˇcen´ı dan´eho pl´anu. Dalˇs´ımi informacemi, kter´e se v´aˇzou na ozaˇrovac´ı protokol, jsou l´ekaˇrsk´e vizity a simulace vˇcetnˇe tisk˚ u. Vizity a simulace m˚ uˇze v OIS M2 vytv´aˇret, editovat a mazat pouze l´ekaˇr. Prohl´ıˇzet a tisknout tyto u ´daje pak m˚ uˇze kter´ ykoliv uˇzivatel. Posledn´ı procesy v tomto modulu jsou pˇripojeny z modulu Kartot´eka a jedn´a se o tisk ˇza´danek na nejr˚ uznˇejˇs´ı vyˇsetˇren´ı/oˇsetˇren´ı. Tyto procesy byly pˇrid´any na ˇza´dost uˇzivatel˚ u.
3.7.3
Pˇ r´ıruˇ cka chemoterapie
Modul chemoterapie je jedin´ y z modul˚ u, kter´ y moment´alnˇe nen´ı pouˇz´ıv´an, protoˇze je poˇra´d ve st´adiu v´ yvoje. Je to zapˇr´ıˇcenˇeno t´ım, ˇze organizace l´eˇcby je velice sloˇzit´a a je sloˇzit´e vyvinout modul tak, aby vyhovoval veˇsker´emu person´alu. V souˇcasn´e dobˇe je v testov´an´ı jiˇz tˇret´ı verze tohoto modulu a s ostr´ ym nasazen´ım se poˇc´ıt´a ve ˇctvrt´em kvart´alu roku 2012. S ohledem na tuto skuteˇcnost lze oˇcek´avat, ˇze v tomto modulu dojde jeˇstˇe k nˇekter´ ym d´ılˇc´ım zmˇen´am, kter´e by ale mˇely m´ıt minim´aln´ı vliv na hlavn´ı funkcionalitu modulu. Modul chemoterapie je tak´e jedin´ y modul, kter´ y je nutn´e pˇred pouˇzit´ım nakonfigurovat. Jedn´a se o konfiguraci l´eˇcebn´ ych protokol˚ u chemoterapie. V souˇcasn´e verzi je moˇzn´e k jednomu protokolu nadefinovat libovoln´e mnoˇzstv´ı hydrataˇcn´ıch prostˇredk˚ u s definic´ı v´ yjimek nosiˇc˚ u, lze nadefinovat libovoln´e mnoˇzstv´ı prostˇredk˚ u premedikace s celou ˇsk´alou restrikc´ı pro r˚ uzn´e typy pacient˚ u, at’ uˇz se jedn´a o podm´ınky sekund´arn´ıho onemocnˇen´ı, nebo pˇrizp˚ usoben´ı d´avky na z´akladˇe tˇelesn´ ych proporc´ı pacient˚ u. Syst´em nab´ız´ı u l´eˇcebn´ ych prostˇredk˚ u zadat u ´daj o ˇredˇen´ı, tento u ´daj by mˇel vyplnit uˇzivatel s rol´ı l´ekarn´ıka. Proto by mˇel proces schvalov´an´ı vypadat n´asledovnˇe: L´ekaˇr vytvoˇr´ı protokol - l´ekarn´ık zreviduje ˇredˇen´e pˇr´ıpravky - prim´aˇr schv´al´ı protokol Vytv´aˇren´ı tˇechto protokol˚ u je velice pracn´e a zdlouhav´e, bohuˇzel ale zat´ım nezn´ame zp˚ usob, jak pr´aci ulehˇcit.
40
Souˇcasn´a verze modulu zat´ım umoˇzn ˇuje vyvolat procesy, kter´e jsou zn´azornˇeny na obr´azku 3.11 (na tomto obr´azku nejsou zn´azornˇeny vazby mezi procesy u spr´avy protokol˚ u CHT, ty se v podstatˇe omezuj´ı jen na pˇrid´an´ı a odebr´an´ı urˇcit´eho typu pˇr´ıpravku). Pˇri zakl´ad´an´ı cyklu CHT syst´em automaticky vygeneruje 1. l´eˇcebnou linii a l´ekaˇri pot´e mohou k cyklu pˇridat schv´alen´e protokoly. Po pˇrid´an´ı 1. protokolu syst´em vygeneruje kalend´aˇr, kde m˚ uˇzeme vizu´alnˇe sledovat rozloˇzen´ı l´eˇcby. Kalend´aˇr je zn´azornˇen na obr´azku 3.12. Podobn´ y kalend´aˇr se zobrazuje u jednotliv´eho detailu protokolu CHT s t´ım rozd´ılem, ˇze v nˇem jsou vyznaˇceny pouze poloˇzky dan´eho protokolu. Po rozkliknut´ı detailu protokolu m˚ uˇzeme na prvn´ı z´aloˇzce vidˇet detaily protokolu. Jedn´a se o seznam veˇsker´ ych aplikovan´ ych pˇr´ıpravk˚ u (hydratace, premedikace, pˇr´ıpravky CHT). Na z´aloˇzce druh´e jsou pak rozeps´any jednotliv´e aplikaˇcn´ı listy (aplikaˇcn´ı list = jedna aplikace). U jednotliv´ ych aplikaˇcn´ıch list˚ u m˚ uˇzeme vyvolat celkem pˇet proces˚ u a ide´alnˇe v tomto poˇrad´ı: 1. 2. 3. 4. 5.
Potvrzen´ı aplikaˇcn´ıho listu (kontrola vypoˇcten´e d´avky, popˇr´ıpadˇe 1. korekce) V´ ybˇer m´ısta aplikace (zaˇr´ızen´ı, l˚ uˇzko, hodina, popˇr´ıpadˇe zmˇena data aplikace) Zaps´an´ı neoˇcek´avan´e ud´alosti Potvrzen´ı aplikace l´eˇcebn´eho pˇr´ıpravku (popˇr´ıpadˇe 2. korekce) Zaps´an´ı sestersk´e dokumentace
Pro realizaci druh´eho bodu lze vyuˇz´ıt pˇrehled obsazenosti, kde m˚ uˇzeme opˇet graficky pozorovat pˇrehled obsazenosti jednotliv´ ych l˚ uˇzek. Na prvn´ı pohled je tedy vidˇet napˇr´ıklad to, ˇze ˇctvrt´e l˚ uˇzko je mezi 11:00 aˇz 13:00 hodinou voln´e a pomoc´ı rychl´ ych n´astroj˚ u m˚ uˇzeme pacienta na toto l˚ uˇzko um´ıstit. Syst´em pak z doby aplikace l´eˇcebn´eho pˇr´ıpravku vyznaˇc´ı na grafu dobu, po kterou bude pacient na l˚ uˇzku. Na tomto m´ıstˇe je moˇzn´e v rychlosti zaˇradit pacienta, kter´ y nem´a zaloˇzen´ y CHT pobyt a ani nem´a zaloˇzen´ y cyklus CHT. Tato funkce byla pˇrid´ana na z´akladˇe praxe. Funguje to tak, ˇze sestra vyhled´a pacienta podle rodn´eho ˇc´ısla (s funkˇcn´ım naˇsept´avaˇcem), vybere protokol (kter´ y se dozv´ı na z´akladˇe telefonick´eho kontaktu s l´ekaˇrem), vybere hodinu a m´ısto aplikace a syst´em s´am na z´akladˇe dostupn´ ych u ´daj˚ u uloˇz´ı veˇsker´e informace, kter´e chyb´ı, tedy m˚ uˇze zaloˇzit pobyt, cyklus i linii. Tento pˇrehled je moˇzn´e si prohl´ıˇzet v z´avislosti na dnech a do budoucna se poˇc´ıt´a s t´ım, ˇze se pˇrehled rozˇs´ıˇr´ı o jednotliv´e ambulance.
41
Obr´azek 3.11: Uˇzivatelsk´e procesy v chemoterapii.
Obr´azek 3.12: Kalend´aˇr aplikac´ı chemoterapie.
42
4 Z´ avˇ er Tato pr´ace mˇela stanoven´e tˇri c´ıle, kter´e byly zpracov´any ve dvou hlavn´ıch kategori´ıch t´eto pr´ace. Prvn´ı dva c´ıle (zhodnocen´ı souˇcasn´e NIS na trhu a popis technologi´ı pouˇzit´ ych pˇri v´ yvoji) jsou pops´any v kapitole Dostupn´e technologie a syst´emy. Posledn´ı c´ıl (popis v´ yvoje modul˚ u OIS M2) je rozebr´an v kapitole Onkologick´ y informaˇcn´ı syst´em M2. V prvn´ı ˇca´sti prvn´ı kapitoly jsem se zamˇeˇril na dostupn´e technologie urˇcen´e pro v´ yvoj online aplikac´ı. Provedl jsem kr´atk´e porovn´an´ı technologie ASP.NET a scriptovac´ıho jazyka PHP. U PHP jsem se zamˇeˇril na frameworky toho jazyka, konr´etnˇe na CakePHP, Nette a Zend framework. V t´eto ˇca´sti jsem provedl z´akladn´ı popis jednotliv´ ych framework˚ u i s pohledem do historie. Podle mˇe nelze v dohledn´e dobˇe oˇcek´avat nˇejakou v´ yraznou zmˇenu na poli framework˚ u jazyka PHP. Moˇzn´a by st´alo za u ´vahu do srovn´an´ı pˇridat i framework Symfony, o kter´em se m˚ uˇzeme doˇc´ıst na r˚ uzn´ ych diskusn´ıch f´orech, ˇ e republiky se volba framework˚ mysl´ım si ale, ˇze na u ´zem´ı Cesk´ u bude zamˇeˇrovat nejˇcastˇeji na Zend framework a Nette. Nette fundation uvedlo na zaˇca´tku roku 2012 verzi Nette 2.0, stejn´ y krok se v dohledn´e dobˇe oˇcek´av´a i od Zend Technologies se Zend frameworkem 2.0. Nette do znaˇcn´e m´ıry tˇeˇz´ı z obl´ıbenosti jeho autora a podle mˇe je to framework vhodn´ y takˇrka na cokoliv, jak se lze pˇresvˇedˇcit z refernc´ı projekt˚ u, kter´e jsou postaveny na Nette. Na z´avˇer t´eto ˇca´sti jsem provedl kr´atk´e zhodnocen´ı dvou oupen sourcov´ ych datab´azov´ ych server˚ u a to MySQL a PostgreSQL. Stejnˇe jako u framework˚ u jsem provedl kr´atk´e sezn´amen´ı s obˇema servery i s kr´atk´ ym pohledem do historie, podle kter´eho lze sledovat postupn´e dorovn´av´an´ı obou server˚ u. PostgreSQL disponuje vˇetˇs´ımi moˇznostmi, naproti tomu MySQL je na z´akladn´ı operace rychlejˇs´ı, nab´ız´ı vˇsak menˇs´ı mnoˇzstv´ı nastaven´ı z´alohov´an´ı. MySQL tek´e tˇeˇz´ı z toho, ˇze je souˇca´st´ı z´akladn´ıho softwareov´eho vybaven´ı webserveru, tim p´adem nen´ı (a nikdy nebyl) velk´ y probl´em tento datab´azovy server nainstalovat a proto je ve vˇetˇs´ım povˇedom´ı program´ator˚ u webov´ ych aplikac´ı. V druh´e ˇca´sti prvn´ı kapitoly jsem pˇredstavil dvˇe zn´am´e spoleˇcnosti na poli zdravotnictv´ı, kter´e se zab´ yvaj´ı tvorbou nemocniˇcn´ıch informaˇcn´ıch syst´em˚ u. Byla to spoleˇcnost Stapro s.r.o. s produkty FONS Akord a FONS Enterprise a spoleˇcnost ICZ a.s. s produktem Medical Process Asistant (MPA). Jak bylo ˇreˇceno v z´avˇeru t´eto ˇc´asti, mysl´ım si, ˇze spoleˇcnost Stapro s.r.o. m´a daleko vˇetˇs´ı potenci´al na trhu s nemocniˇcn´ımi informaˇcn´ımi syst´emy. K tomuto z´avˇeru mˇe vede to, ˇze spoleˇcnost na sebe nabalila r˚ uzn´ ymi f´ uzemi vˇetˇsinu spoleˇcnost´ı, kter´e u n´as nab´ızely sv´e syst´emy (AKORD SOFTWARE, MLAB software, HiComp a IT divize GreyFox ve spoleˇcnosti Medicon) a t´ım upevnila v pr˚ ubˇehu let 2005 aˇz 2010 sv´e postaven´ı na trhu. Naproti tomu se spoleˇcnost ICZ a.s. nezamˇeˇruje pouze na zdravotnick´ y trh. Z referenc´ı nebylo jasn´e, zda spoleˇcnost dod´av´a produkt MPA i do zem´ı evropsk´e unie, ale s ohledem na rozloˇzen´ı sil na ˇcesk´em trhu a na fakt, ˇze MPA disponuje moˇznost´ı pln´e lokalizace, je podle mˇe osud toho NIS sv´az´an sp´ıˇse se zhraniˇcn´ımi instalacemi. V druh´e kapitole se vˇenuji popisu v´ yvoje z´akladn´ıch modul˚ u onkologick´eho informaˇcn´ıho syst´emu M2. Na zaˇc´atku t´eto kapitoly se vˇenuji sezn´amen´ı se syst´emem takt´eˇz s pohledem do historie. D˚ uleˇzit´ y poznatek t´eto ˇca´sti je ten, ˇze OIS M2 nem´a za u ´kol nahradit NIS. M´a za u ´kol NIS vhodnˇe doplnit a nab´ıdnout moˇznost komunikace mezi OIS M2 a jak´ ymkoliv NIS. Po sezn´amen´ı s koncepc´ı OIS M2 popisuji v´ yvoj z´akladn´ıch modul˚ u to43
hoto syst´emu. Jelikoˇz se na v´ yvoji pod´ıl´ım uˇz v´ıce neˇz dva roky, mohu s klidn´ ym svˇedom´ım ˇr´ıci, ˇze jsem se zamˇeˇril na nejzaj´ımavˇejˇs´ı poznatky tohoto projektu. U jednotliv´ ych modul˚ u kladu d˚ uraz na pˇredstaven´ı modelov´e ˇca´sti modulu a to z toho d˚ uvodu, ˇze je podle m´eho n´azoru nejzaj´ımavˇejˇs´ı. Okrajovˇe se u modul˚ u vˇenuji ˇr´ıd´ıc´ı ˇca´st a zobrazovac´ı ˇc´ast jsem z popisu vypustil u ´plnˇe, z d˚ uvodu n´ızk´e relevance. V z´avˇeru t´eto kapitoly popisuji instalaci OIS M2 a z´akladn´ı principi pr´ace se syst´emem. Je zde vysvˇetleno, proˇc OIS M2 nedisponuje instalaˇcn´ım souborem a d´ale jsou pops´any jednotliv´e kroky pˇri nasazov´an´ı OIS M2. Popis princip˚ u pr´ace se syst´emem je rozdˇelen podle modul˚ u a souˇca´st´ı kaˇzd´e t´eto ˇca´sti je graf, na kter´em lze sledovat procesy (a jejich vazby), kter´e je moˇzn´e v modulu vyvolat. Na tomto m´ıstˇe bych se chtˇel jeˇstˇe zamyslet nad dalˇs´ım v´ yvojov´ ym potenci´alem OIS M2. V pr´aci je ˇreˇceno, ˇze modul Chemoterapie je jedin´ y z modul˚ u, kter´ y nen´ı v souˇcasn´e dobˇe pouˇz´ıv´an. Proto se ve v´ yhledov´e dobˇe v´ yvojov´ y potenci´al bude zamˇeˇrovat na tento modul. Dalˇs´ım c´ılem je sestavit pro jednotliv´eho pacienta ˇcasovou osu jeho l´eˇcby. L´ekaˇr by pak mˇel moˇznost v pˇrehledn´e grafick´e podobˇe pozorovat v´ yvoj nemoci od rann´e f´aze aˇz do l´eˇcby line´arn´ım urychlovaˇcem ˇci aplikace pˇr´ıpravk˚ u chemoterapie. Vzhledem k pouˇzit´ ym technologi´ım nen´ı v dohledn´e dobˇe v´ yvojov´ y potenci´al technologicky omezen.
44
Literatura [1]
Zend Technologies Ltd.: ZF Zend Framework [online]. c2011 [cit. 2011-11-30]. Zend Framework & MVC Introduction. Dostupn´e z WWW: http://framework.zend.com/manual/en/learning.quickstart.intro.html# learning.quickstart.intro.mvc
[2]
Cake Software Foundation, Inc.: Cake Software Foundation [online]. c2011 [cit. 2011-11-30]. About the Foundation. Dostupn´e z WWW: http://cakefoundation.org/pages/about
[3]
Nette Fundation: Nette framework [online]. c2011 [cit. 2011-11-30]. Tv˚ urci. Dostupn´e z WWW: http://doc.nette.org/cs/credits
[4]
Nette Fundation: Nette framework [online]. c2011 [cit. 2011-11-30]. Licenˇcn´ı politika. Dostupn´e z WWW: http://doc.nette.org/cs/licence
[5]
Zend Technologies USA, Inc.: ZF Zend framework [online]. c2011 [cit. 2011-1130]. New BSD License. Dostupn´e z WWW: http://framework.zend.com/license
[6]
Jiˇr´ı Kosek: Zdroj´ak.cz [online]. 24. 10. 2011 [cit. 2011-11-30]. Polyglot aneb webov´ ym kod´erem pod oboj´ı. Dostupn´e z WWW: http://zdrojak.root.cz/clanky/polyglot-aneb-webovym-koderem-pod-oboji/
[7]
W3C.org: XHTML2 Working Group Home Page [online]. 2010/12/17 [cit. 201111-30]. Mission of the XHTML2 Working Group. Dostupn´e z WWW: http://www.w3.org/MarkUp/
[8]
ˇ navec: ROOT.CZ [online]. 25.10.2005 [cit. 2012-02-25]. MySQL vs PostJ´an Suˇ greSQL vs Firebird. Dostupn´e z WWW: http://www.root.cz/clanky/mysql-vs-postgresql-vs-firebird/
[9]
OpenACS: OpenACS [online]. 2000 [cit. 2012-02-25]. Why not MySQL?. Dostupn´e z WWW: http://openacs.org/philosophy/why-not-mysql.html/
45