
В автоматизирания медицински център се използват много различни устройства, управлявани от медицинска информационна система (МИС), както и устройства, които не приемат команди, но трябва да предадат резултатите от работата си в МИС. Въпреки това, всички устройства имат различни варианти за свързване (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 протокола, тъй като МИС работи на база Web-сървър, в който е по-лесно да се изпращат и приемат запитвания по този протокол. Освен това съществува възможност да се различават проблемите, които биха могли да възникнат при поставянето или изпълнението на задачи от устройствата на база кодовете на отговор.
В следващите статии на примера на няколко кабинета на диагностичен център ще бъде разгледана работата на DM и на някои плъгини.
Източник: habr.com
