
Automatiseeritud meditsiinikeskuses kasutatakse palju erinevaid seadmeid, mille tööd peaks juhtima meditsiiniline teabesüsteem (MISP), samuti seadmeid, mis ei saa käske, kuid peavad edastama oma töö tulemused MISP-ile. Kuid kõikidel seadmetel on erinevad ühendusvõimalused (USB, RS-232, Ethernet jne) ja suhtlemisviisid. Kõiki neid MISP-is toetada on praktiliselt võimatu, mistõttu on välja töötatud tarkvarakiht DeviceManager (DM), mis pakub MISP-le ühtset liidest seadmete ülesannete määramiseks ja tulemuste saamiseks.

Süsteemi DM rikkevastupidavuse suurendamiseks jagati see komplektiks programmideks, mis on paigaldatud meditsiinikeskuse arvutitesse. DM jaguneb pea programmiks ja komplektiks pluginatest, mis tegelevad konkreetse seadmega suhtlemisega ja saatavad andmeid MISP-ile. Alloleval joonisel on esitatud üldine struktuur suhtlemiseks DeviceManageri, MISP-i ja seadmetega.

MISP-i ja DeviceManageri suhtlemise struktuuris on esitatud 3 varianti pluginate tööks:
- Plugin ei saa MISP-ilt andmeid ja edastab seadme andmed, mis on muudetud talle arusaadavasse formaati (vastab joonisel ülal seadme tüübi 3-le).
- Plugin saab MISP-ilt lühikese (aegumisega) ülesande, näiteks printimine printerile või pildi skaneerimine, täidab selle ja saadab tulemuse vastusena päringule (vastab joonisel ülal seadme tüübi 1-le).
- Plugin saab MISP-ilt pikaajalise ülesande, näiteks uuringu läbiviimise või näitajate mõõtmise, ning saadab vastuseks ülesande vastuvõtmise staatuse (ülesande määramine võib ebaõnnestuda, kui päringus on viga). Pärast ülesande täitmist muudetakse tulemused MISP-ile arusaadavasse vormingusse ja laaditakse vastavatesse liidestesse (vastab joonisel ülal seadme tüübi 2-le).
Pea programm DM käivitab, initsialiseerib, taaskäivitab juhul, kui see peatub (kukub) ja lõpetab kõik pluginad, kui töö on lõpetatud. Iga arvuti pluginate komplekt on erinev, käivitatakse ainult vajalikud, mis on määratud seadetesse.
Iga plugina on iseseisev programm, mis suhtleb põhiprogrammiga. Selline plugina määratlemine võimaldab tagada stabiilsemat tööd, tänu pluginate ja põhitoote sõltumatusele vigade käsitlemisel (kui tekib kriitiline viga, mis põhjustab plugina kokkuvarisemise, ei mõjuta see teisi pluginaid ega põhitoote). Üks plugin võimaldab töötada ühe tüüpi seadmetega (tihti ühe mudeliga), samas kui osa pluginaid võib suhelda ainult ühe seadmega, teised aga mitmega. Ühe DM-le ühendamiseks mitme sama tüüpi seadme abil käivitatakse mitmeid eksemplare ühest pluginaist.

DM-i arendamiseks kasutati Qt tööriistu, kuna need võimaldavad enamasti abstraktselt toimida sõltumatult konkreetsest operatsioonisüsteemist. See võimaldas toetada töö tegemist Windowsi, Linuxi ja MacOS-i põhjal, samuti Raspberry ühe plaadi arvutitega. Ainsaks piiranguks operatsioonisüsteemi valimisel pluginate arendamisel on konkreetse seadme draiverite ja/või erilise tarkvara olemasolu.
Pluginate ja põhitoote vaheline suhtlemine toimub pidevalt aktiivse QLocalSocketi kaudu, millel on spetsiifilise plugina eksemplari nimi, vastavalt meie loodud protokollile. Suhtlemise protokolli rakendamine mõlemal poolel on vormistatud dünaamilise teekina, mis võimaldab arendada teatud pluginaid teiste ettevõtete poolt, avamata täielikult koostööd põhitoote sisuga. Kohaliku socketi sisemise loogika abil saab põhitoode kohe teada selle kokkuvarisemisest juhusliku ühenduse katkestamise signaali abil. Sellise signaali aktiveerimisel toimub probleemse plugina taaskäivitamine, mis võimaldab kriitilisi olukordi valutumalt lahendada.
Suhtlemine MIS ja DM vahel otsustati üles ehitada HTTP protokolli alusel, kuna MIS töötab Veebiserveri, kus on kergem saata ja võtta vastu päringuid antud protokolli kaudu. Samuti on võimalik eristada probleeme, mis võivad tekkida seadmete ülesande määramisel või täitmisel vastusoodustuste koodide alusel.
Järgnevates artiklites käsitletakse DM-i ja mõnede pluginate toimimist, kasutades mitmeid diagnostikakeskuse kabinette näitena.
Allikas: habr.com
