Kutatói beszámoló Krónikus hemodialízis gép testenkívüli vérszállítást vezérlő szoftverének objektum orientált szemléletű fejlesztése Készítette: Paári Krisztián gyakornok, B. Braun Medical Kft. 2015.01.21.
Bevezető Az ipar minden területét jellemzi az a tendencia, hogy az elkészítendő új termékeket egyre rövidebb idő alatt, egyre olcsóbban kell elkészíteni. Természetesen ez nem mehet a minőség rovására, mert akkor a megrendelők, felhasználók nem fogják az adott terméket választani a jövőben. Ez a megközelítés az orvosi berendezések esetén is igaz. Bár ezen eszközök, berendezések közvetlenül befolyásolják az emberek egészségét, mégse mentesülnek ettől az igen nehéz követelménytől. Így elkerülhetetlen a versenyben maradáshoz, hogy ezen iparág szereplői kövessék a globális trendet: olcsóbban, gyorsabban, jobbat. A kutatói pályázat során egy krónikus hemodialízis gép irányító szoftverének egy adott részét kell elkészítenem, amely testen kívüli vérszállítás irányításáért felel. A munkámat támogató vállalat kitűzte céljául, hogy nem csak az irányító szoftvert, de magát a fejlesztés folyamatát is modernizálják. Így nem az volt a fő feladatom, hogy elkészítsem a dialízis gép irányító szoftverének egy fejlesztését, hanem a fejlesztés folyamatára javasoljak újításokat. A hemodialízisről általában Dialízis kezelésre akkor van szükség, ha a beteg veséje nem képes ellátni a feladatát. A kezelések két nagy csoportra oszthatók: akut és krónikus. Előbbire akkor kerül sor, ha a kezelést szükségessé tévő állapot átmeneti és csak rövid ideig áll fenn. Utóbbit akkor kell alkalmazni, ha tartósan fennáll a veseelégtelenség. A kutatási pályázat keretén belül az utóbbi esetben alkalmazott kezelési módszer egyik fajtája, a hemodialízis kerül a vizsgálat középpontjába. A hemodialízis során a beteg vérét átvezetik egy testen kívüli félig áteresztő szűrőn (dializátor), majd a már megtisztított vért visszajuttatják a testbe. A szűrőn való áthaladás során a vérből kiszűrik a méreganyagokat, a felesleges víz távozik, viszont a szükséges elemek, mint fehérjék, fehérvértestek a vérben maradnak. A folyamat a dialízis készülék segítségével megy végbe, mely irányítja a vér és egyéb folyadékok áramlását, valamint felügyeli mindazt. A folyamat biztonságos, számos szigorú szabvány és előírás szabályozza a dialízis műveletét. A kezelés folyamatát fel lehet osztani különböző állapotokra. Ez azért előnyös, mert ekkor egyszerűen meghatározható, hogy az adott állapotban milyen működés szükséges. Így az implementálás nagyban egyszerűsödik. Újrafelhasználhatóság és Referencia Modell Architektúra Az újrafelhasználhatóság célja, hogy egy már meglévő szoftver komponenst többször is képesek legyünk alkalmazni, ne kelljen minden esetben újra és újra ugyan azt a funkcionalitást elkészíteni. Ennek több fajtája létezik. S bár egyik esetben sem kell újra feltalálni a kereket, mégse mindegy, hogy ez pontosan miért is van. Minden szinten lehetséges a már meglévő funkció újbóli alkalmazása. Ez történhet hivatkozás, illetve másolás útján. Az utóbbi eset alkalmazása az egyszerűbb. A két fajta újrafelhasználás közül nem lehet győztest hirdetni. Az adott típus az egyes esetekben sokkal előnyösebb lehet a másiknál. Ezért minden alkalommal mérlegelni kell, hogy melyiket kell alkalmazni.
Az AUTOSAR szabvány segítségével lehetővé vált a komponens alapú szoftvertervezési modell a járműrendszerekre. Ez a modell olyan alkalmazás szoftver komponenseket használ, amelyek egy absztrakt komponensen át, a virtuális buszon kapcsolódnak egymáshoz. Az alkalmazás szoftver komponensek a legkisebb alkotórészei a rendszernek, melyek még egy bizonyos funkcióval rendelkeznek. Ezek között standardizált interfészek segítségével történik az információcsere, melyek a szabványban rögzítettek. Az AUTOSAR-hoz hasonló referencia-architektúrát is el lehetne készíteni dialízis gépek esetében. A referencia rendszer tartalmazná az összes funkcionalitást, melyek akármelyik dialízis gép esetén előfordulhat. Ebből az unióból lehetne kiválasztani az éppen szükséges részeket az aktuális összeállítás számára. Majd a kiválasztott részekből generálható lenne a teljes rendszer. Javasolt szoftver architektúra A legalsó réteg legyen ebben az esetben is a hardverrel kapcsolatot tartó réteg. A hardver absztrakciós réteg (HardWare Abstraction Layer - HWAL) tartalmazna minden hardverfüggő részt a szoftverben. Így ha megváltozik valamelyik hardver egység a dialízis gépben, akkor elegendő ebben a rétegben módosításokat eszközölni, az irányító rész többi része változatlanul maradhat. A következő szoftver réteg tartalmazza az alap objektumokat (Basic Object - BO). Ezek a HWAL által szolgáltatott jeleket fogadják többek között. Ezen réteg felelős azért, hogy egy meghatározott hardver egység (például egy nyomás szenzor vagy egy pumpa) teljes irányításáért. Ezen a rétegen nagy számú alap objektum lesz megtalálható, hisz minden egyes hardver egység rendelkezni fog egy ilyennel. A következő, legfelső réteg az alacsony szintű irányító szoftverrendszerben a szervező objektumok (Organizer Object - Org) szintje. Ezen réteg tagjai felelősek a kis egységek, az alap objektumok irányításáért, összehangolásáért. Itt az állapotgép által megadott módon kerül sor a különböző egységek irányítására. A szervezők számára már minden információ rendelkezésre fog állni, hogy megfelelő módon tudják működtetni a dialízis gépet. A most ismertetésre került javasolt architektúra látható alábbi ábrán. Ezen architektúra legfelső rétege az Adminisztrátorok nevet kapta és mely a kezelővel és a dialízis gép egyéb komponenseivel tartja a kapcsolatot. 1. Javasolt SW architektúra felépítése
A programozás jobb átláthatósága miatt jött az ötlet, hogy az alap és szervező objektumok, azok kapcsolata grafikus programozó eszköz segítségével legyen implementálva. Ekkor a függvényeket felváltják a blokkok, amik magukba foglalják azok funkcionalitását. A mostani sok változó helyett jelek lennének, melyek szemmel jobban követhetőek a feldolgozás során. Az egyek jeles útja a grafikus ábrázolásnak köszönhetően jól megfigyelhető. Úgy tűnt, hogy a Matlab Simulink alkalmas lesz az új architektúra kipróbálására, illetve ha beválik, akkor a későbbi fejlesztése is hosszú távon. Alap objektumok Az egyes alap objektumok könyvtárakként ( Library ) való elkészítése a javasolt. Ezek olyan nem futtatható modellek, amelyeket később fel lehet használni más modellben, mégpedig azok belinkelésével, vagyis referencia útján. A Matlab könyvtárak számos előnyös tulajdonsággal rendelkeznek. Az alábbi ábra mutatja egy alap objektum általános felépítését. Látható, hogy az egyes belső blokkok fogják a különböző funkciókat megvalósítani. Ahogy azt már korábban ismertettem, az alap objektumok minden olyan funkcionalitást tartalmaznak, amelyek valamely dialízis gépben szükségesek lehetnek. Ezen funkciók nagy része paraméter segítségével engedélyezhető, letiltható. Vannak olyan funkcionalitások is, amelyek annyira alapvetőek, hogy azok letiltásának semmi értelme nincsen, mert ekkor az alap objektum teljesen elveszti funkcionalitását, így nincs értelmét az adott elem használatának az alkalmazásban. 2. Alap objektum általános felépítése Példányosítás során nem kell mást tenni, mint a megfelelő könyvtár elemet behúzni a modellbe, a megfelelő paramétereket beállítani, a ki és bemeneteket pedig rákötni egy-egy buszra. Figyelni kell arra, hogy a kimenetnél a busz neve megegyezzen a példány nevével. Erre azért van szükség, mert később a példányok neve alapján lehet elkülöníteni a jeleket egymástól. Az így példányosított alap objektum rendelkezni fog egy ki és bemeneti porttal, a többi rész a példányon belül marad.
Szervező objektumok A szervező objektumok felelősek a leendő dialízis gép tényleges irányításáért. Ezen egységek dolgozzák fel az alap objektumok jeleit, határozzák meg a szükséges műveleteket, valamint adják ki a kívánt utasításokat. Ezen egységek között elképzelhető a hierarchia, amely esetében bizonyos szervezők nem csak a különböző alap objektumokat hanem egymást is képesek vezérelni. Ez azért előnyös a jövőre nézve, mivel így a működést fel lehetne osztani kisebb részekre, amelyek megvalósításáért más és más szervezők a felelősek. Az így készülő rendszer átláthatóbbá válik, a fejlesztés során lehetőség nyílik a munkamegosztásra. Például elképzelhető, hogy egy külön szervező lesz felelős a riasztások feldolgozásáért és azokra való megfelelő válaszlépések kiadásáért. Az egyes szervező egységek között lehetséges a kommunikáció, csatolás. Így elkerülhető, hogy egymásnak ellentmondó működést kívánjanak megvalósítani. A szervező objektumok az egyes állapotokban különböző funkciókat valósítanak meg. Az aktuális állapot az Adminisztrátori réteg felől érkezik. Ez alapján hajtódik végre a kívánt funkció. Természetesen lehetséges olyan állapot is, mely során az adott szervezőnek nincsen feladata. De előfordul a gyakorlatban, hogy két különböző állapotban is ugyan azt a funkciót kell végrehajtani. Az egyes szervező objektumok vázát egy Switch Case blokk fogja alkotni a hozzá tartozó Switch Case Action Subsystem blokkokkal együtt. Az előbbi meghatározza az aktuális állapot alapján, hogy az utóbbiak közül éppen melyik lesz aktív, azaz milyen műveletet hajt végre az aktuális szervező objektum. A Switch Case Action Subsystem blokkok fogják tartalmazni az egyes funkcionalitásokat, melyek az adott állapotban végrehajtódnak. Ezek az újrafelhasználhatóság, módosíthatóság miatt könyvtárakként lesznek elkészítve, ugyan úgy, mint az alap objektumok. Ha egy állapotban nem kell semmilyen műveletet elvégezni, akkor az ahhoz tartozó blokk helyett egy Terminator blokkot lehet rakni, így elkötve a szabad vezetéket. 3. Szervező objektum általános felépítése
Összegzés A korábbiakban ismertetett módon implementált alap és szervező objektum példányokból felépíthető a végső rendszer, mely alkalmas egy dialízis gép irányítására. Ez a rendszer látható az alábbi ábrán. A különböző be és kimeneti portokon át képes a rendszer kommunikálni a dialízis gép egyéb komponenseivel. 4. Az irányító rész elkészült modellje Természetesen ezzel még nem érhet véget a munka. Az elmúlt rövid idő nem volt elegendő ahhoz, hogy a hosszú távú kitűzött cél, miszerint az irányító rendszer modellje automatikus készüljön el, teljesüljön. Ehhez már arra lenne szükség, hogy elkészüljenek a különböző függvények, melyek a részekből felépítik az egész rendszert.