
В автоматизирания медицински център се използват множество различни устройства, чиято работа трябва да се управлява от медицинската информационна система (МИС), както и от устройства, които не приемат команди, но трябва да предадат резултатите от работата си на МИС. Въпреки това, всички устройства имат различни варианти на свързване (USB, RS-232, Ethernet и т.н.) и начини за взаимодействие с тях. Поддържането на всички тях в МИС е практически невъзможно, затова беше разработен софтуерен слой DeviceManager (DM), който предоставя на МИС единен интерфейс за задаване на команди на устройствата и получаване на резултати.

За увеличаване на отказоустойчивостта на системата DM беше разделен на набор от програми, разположени на компютри в медицинския център. DM се дели на основна програма и набор от плъгини, които взаимодействат с конкретно устройство и предават данни в МИС. На изображението по-долу е показана обобщена структура на взаимодействие с DeviceManager, МИС и устройствата.

На структурата на взаимодействие на МИС с DeviceManager са показани 3 варианта за работа на плъгините:
- Плъгинът не получава никакви данни от МИС и изпраща преобразуваните в разбираем за него формат данни от устройството (съответства на устройство тип 3 на изображението по-горе).
- Плъгинът получава от МИС кратка (по време на изпълнение) задача, например, печат на принтер или сканиране на изображение, изпълнява я и изпраща резултата в отговор на запитването (съответства на устройство тип 1 на изображението по-горе).
- Плъгинът получава от МИС дълга задача, например, да проведе изследване или да измери показатели, в отговор изпраща статус на приемане на задачата (в поставянето на задачата може да бъде отказано при грешка в запитването). След изпълнението на задачата резултатите се преобразуват в разбираем за МИС формат и се извеждат в съответстващите на типа интерфейси (съответства на устройство тип 2 на изображението по-горе).
Основната програма DM стартира, инициира, перезапуска в случай на непредвидено спиране (падане) и завършва при приключване на работата всички плъгини. Съставът на плъгините на всеки компютър е различен, стартират се само необходимите, които са посочени в настройките.
Все плъгини представляват самостоятелни програми, които взаимодействат с основната програма. Това определение на плъгина позволява да се осигури по-стабилно функциониране, благодарение на независимостта на всички екземпляри на плъгините и основната програма при обработката на грешки (ако възникне критична грешка, поради която плъгинът се срине, това няма да се отрази на другите плъгини и основната програма). Един плъгин позволява работа с устройства от един вид (често от една модел), като част от плъгините могат да взаимодействат само с едно устройство, а други — с няколко. За свързване на няколко устройства от един тип към един DM се използва стартиране на няколко екземпляра на един плъгин.

За разработката на DM беше използван инструментарият Qt, защото той позволява в повечето случаи да се абстрахираме от конкретната операционна система. Това позволи да се поддържа работа с компютри, базирани на Windows, Linux и MacOS, както и с едноплатни компютри Raspberry. Единственото ограничение при избора на операционна система при разработването на плъгини е наличието на драйвери и/или специализираен софтуер за конкретно устройство.
Взаимодействието между плъгините и основната програма се извършва чрез постоянно активен QLocalSocket с име на конкретния екземпляр на плъгина, по създадения от нас протокол. Реализацията на протокола за комуникация от двете страни е оформена като динамична библиотека, което позволява разработването на някои плъгини от други компании, без да се разкрива напълно взаимодействието с основната програма. Вътрешната логика на работа на локалния сокет позволява на основната програма веднага да узнава за падането чрез сигнал за прекъсване на връзката. При задействането на такъв сигнал, проблемният плъгин се рестартира, което позволява по-безболезнено обработване на критични ситуации.
Взаимодействието между МИС и DM беше решено да се построи на базата на HTTP протокола, тъй като МИС работи на базата на Уеб-сървър, където е по-лесно да се изпращат и получават заявки по този протокол. Също така има възможност за разграничаване на проблемите, които могат да възникнат при задействането или изпълнението на задачи от устройствата въз основа на кодовете за отговор.
В следващите статии ще бъде разгледана работата на DM и някои плъгини на примера на няколко кабинета в диагностичния център.
Източник: habr.com
