В автоматизированном медицинском центре используется множество различных приборов, работой которых должна управлять медицинская информационная система (МИС), а также устройств, которые не принимают команд, но должны передать результаты своей работы в МИС. Однако все устройства имеют различные варианты подключения (USB, RS-232, Ethernet и т.д.) и способы взаимодействия с ними. Поддержать их все в МИС практически невозможно, поэтому была разработана программная прослойка DeviceManager (DM), которая предоставляет для МИС единый интерфейс для постановки заданий устройствам и получения результатов.
Для увеличения отказоустойчивости системы DM был разделён на набор программ, размещаемый на компьютерах в медицинском центре. DM делится на головную программу и набор плагинов, которые выполняют взаимодействие с конкретным устройством и отправляют данные в МИС. На рисунке ниже представлена обобщённая структура взаимодействия с DeviceManager, МИС и приборами.
На структуре взаимодействия МИС с DeviceManager показаны 3 варианта работы плагинов:
1. Плагин не получает никаких данных от МИС и отправляет преобразованные в понятный для неё формат данные от прибора (соответствует прибору типа 3 на рисунке выше).
2. Плагин получает от МИС короткую (по времени выполнения) задачу, например, печать на принтере или сканирование изображения, выполняет её и отправляет результат в ответе на запрос (соответствует прибору типа 1 на рисунке выше).
3. Плагин получает от МИС длительную задачу, например, провести обследование или замерить показатели, в ответ отправляет статус принятия задачи (в постановке задачи может быть отказано при ошибке в запросе). После выполнения задачи результаты преобразуются в понятный для МИС формат и выгружаются в соответствующие своему типу интерфейсы (соответствует прибору типа 2 на рисунке выше).
Головная программа DM запускает, инициализирует, перезапускает в случае непредвиденной остановки (падения) и завершает при завершении работы все плагины. Состав плагинов на каждом компьютере свой, запускаются только необходимые, которые указаны в настройках.
Каждый плагин представляет из себя самостоятельную программу, которая взаимодействует с головной программой. Такое определение плагина позволяет обеспечить более стабильную работу, за счёт независимости всех экземпляров плагинов и головы в плане отработки ошибок (если возникла критическая ошибка, из-за которой плагин упал, то на других плагинах и голове это не отразится). Один плагин позволяет работать с устройствами одного вида (часто одной модели), при этом часть плагинов может взаимодействовать только с одним прибором, а другие — с несколькими. Для подключения нескольких устройств одного типа к одному DM используется запуск нескольких экземпляров одного плагина.
Для разработки DM был использован инструментарий Qt, потому что он позволяет в большинстве случаев абстрагироваться от конкретной операционной системы. Это позволило поддержать работу с компьютерами на базе Windows, Linux и MacOS, а также одноплатниками Raspberry. Единственное ограничение в выборе операционной системы при разработке плагинов — это наличие драйверов и/или специального ПО для конкретного устройства.
Взаимодействие между плагинами и головой происходит через постоянно активный QLocalSocket с именем конкретного экземпляра плагина, по созданному нами протоколу. Реализация протокола связи с обеих сторон была оформлена в виде динамической библиотеки, что позволило вести разработку некоторых плагинов другими компаниями, не раскрывая полностью взаимодействие с головой. Внутренняя логика работы локального сокета позволяет голове сразу узнать о падении при помощи сигнала разрыва соединения. По срабатыванию такого сигнала происходит перезапуск проблемного плагина, что позволяет более безболезненно обрабатывать критические ситуации.
Взаимодействие между МИС и DM было решено построить на основе HTTP протокола, так как МИС работает на базе Web-сервера, в котором проще отправлять и принимать запросы по данному протоколу. Также есть возможность различать проблемы, которые могли возникнуть при постановке или выполнении задач приборами на основе кодов ответа.
В следующих статьях на примере нескольких кабинетов диагностического центра будет рассмотрена работа DM и некоторых плагинов.
Автор: gecheim