Электронная система медицинского осмотра (ЭСМО)

Электронная система медицинского осмотра (ЭСМО)

30 марта 2018

Человек на рабочем месте должен быть в адекватном состоянии, особенно если от него зависит безопасность других людей, а не только производительность и способность выполнять обязанности. Примеров много: водители общественного транспорта, шахтеры, рабочие на станках, экипаж воздушного судна, охранники. Если нетрезвый программист будет просто бесполезен и в худшем случае может нанести информационный ущерб, то одурманенный водитель может стать причиной гибели многих людей.

Смертность на дорогах РФ выше показателей других европейских стран. Зачастую причина аварий — нетрезвый или уставший водитель. На опасных предприятиях, таких как шахты, нетрезвые работники становятся причиной промышленных аварий и производственных травм.

Предприятия обязаны проводить предсменный медицинский осмотр работников определенного законодательством списка профессий. Традиционная процедура — осмотр врача. Однако подход имеет недостатки.

  • Штат медицинских работников должен быть пропорциональным штату работников, подлежащих осмотру.
  • Врач не совершенен и может ошибаться.
  • Медика можно обмануть или подкупить.

Автоматизация медосмотра позволяет избежать этих недостатков и добиться:

  • сокращения штата медицинского персонала;
  • ускорения процедуры прохождения медосмотра;
  • беспристрастности результатов медосмотра.

Решение

Электронная система медицинских осмотров, полностью автоматизированная и проводящая массовые медосмотры в считанные минуты. Система выносит вердикт: может ли сотрудник приступать к рабочим обязанностям. На производственный объект попадают только сотрудники, которые не пребывают в состоянии алкогольного или наркотического опьянения и не имеют медицинских противопоказаний.

ЭСМО решает следующие задачи.

  • Оценивает готовность сотрудника к работе на основе проведения медицинских измерений.
  • Формирует заключение о допуске/недопуске к работе в виде записи в электронном журнале медосмотров.
  • Печатает документы (путевой лист, направление к врачу и т.д.) после электронной цифровой подписи медработника.
  • Контролирует доступ в рабочую зону в зависимости от медицинского заключения.

В ЭСМО используются следующие технологии.

Языки программирования и интерпретаторы:

  • язык программирования PHP, на котором написан сервер ЭСМО;
  • язык структурирования запросов SQL для работы с БД серверов ЭСМО;
  • командная оболочка bash, с помощью которой выполняются некоторые команды по обслуживанию сервера ЭСМО.

Прикладные программные средства:

  • интерфейс БД phpMyAdmin;
  • веб-интерфейс сервера ЭСМО;
  • программное обеспечение терминала, представляющее собой приложение с графическим интерфейсом, под управлением ОС Debian;
  • СКЗИ «Крипто-ПРО» для электронной подписи документов на рабочих местах пользователей.

Сервер работает под управлением набора Linux, Apache, MySQL, PHP (LAMP).

Комплекс ЭСМО имеет трехуровневую структуру.

  • Уровень клиента — медицинский терминал, web-интерфейс рабочего места врача.
  • Уровень сервера — web-сервер Apache, PHP5, модули PHP.
  • Уровень баз данных — MySQL.
Пример работы конструктора в AutoCAD и SolidWorks

Все клиенты (рабочие места врача, дежурного, медицинские терминалы и другое оборудование) в пределах комплекса взаимодействуют с сервером, будучи подключенными к нему. Сервер ЭСМО может располагаться в облаке или непосредственно в локальной сети предприятия.

Каждому устройству в сети (рабочие места врача, дежурного, медицинские терминалы и другое оборудование) назначается адрес из общего адресного пространства, который заносится в общую базу. Сервер ЭСМО, имея информацию о всех устройствах комплекса в локальной сети, может ожидать от них входящие подключения и отправлять им дополнительную информацию.

Элементы системы взаимодействуют между собой по локальной сети посредством сетевого протокола HTTP/HTTPS. Выбор транспорта осуществляется системным администратором, исходя из архитектуры сети и требований к безопасности предприятия. В случаях, когда объекты сети разнесены географически, есть возможность использовать VPN.

Приложение PHP обрабатывает запросы от клиента через запрашиваемые URL. В случае GET-запросов, если необходимо, сервер извлекает информацию из базы данных MySQL, комбинирует информацию с шаблонами HTML и возвращает результат клиенту. В случае POST-запросов БД обновляется информацией, полученной от пользователя в форме данных сеанса.

Процедура прохождения медосмотра

  • Испытуемый подходит к свободному медицинскому терминалу.
  • Идентифицируется посредством проксимити-карты либо другого средства идентификации.
  • Медицинский терминал получает сценарий прохождения медосмотра от сервера.
  • На сервере происходит проверка, что данный работник имеет право сейчас проходить медосмотр в соответствии с правилами внутреннего распорядка предприятия.
  • Медицинский терминал предлагает испытуемому проходить медицинские тесты в порядке, предусмотренном сценарием медосмотра.
  • Обычный порядок: тест на алкоголь, измерение температуры, оценка состояния ЦНС для диагностики наркотического опьянения и измерение давления.
  • В конце медосмотра испытуемый подтверждает личность путем оставления автографа в специальном поле сенсорного экрана.
  • Данные о медосмотре и его результатах попадают в центральную базу и отображаются дежурному медику, который либо одобряет допуск по данным медосмотра, либо вызывает сотрудника на дополнительный личный осмотр.

Курьезные случаи

Поскольку «целевой аудиторией» медосмотров обычно являются просторабочие, то и потребность в тесте на алкоголь отнюдь не излишня. Но, как известно, «голь на выдумку хитра».

Мужики с Урала нашли способ обмана первой версии алкотестера! И даже не один… Кто-то пытался вдыхать, но это не срабатывало. Нашлись умельцы дуть так, чтобы датчик потока воздуха срабатывал и запускал измерение, но при этом фактически потока для измерения не хватало, и алкотестер выдавал ошибку.

Разработчикам пришлось немало попотеть над этой ошибкой. Нужно было научиться воспроизводить эту ситуацию. Из всей проектной команды нашелся только один наладчик, который мог почти на заказ выдавать «недодув».

Интересный случай был с тестом «Пупиллометрии», анализирующим состояние организма на основе регистрации величины зрачка и динамики ее изменения. В первую очередь, исследование предназначено для выявления наркотического опьянения, хотя данный тест может многое рассказать о состоянии организма и психики в целом.

Естественно, случаи саботажа этого измерения также имели место. Что только ни делали испытуемые: и моргали, и водили глазами влево-вправо. Однако благодаря этим «вызовам» аппаратно-программный комплекс был отлажен и доработан до высокой степени устойчивости к помехам.

Еще один прием. Не готовые к смене, но очень стремящиеся трудиться работники просили своих друзей-коллег пройти медосмотр за них. Естественно, изначально в логику системы был заложен контроль фотографии испытуемого и сравнение ее с фотографией из базы предприятия. Однако желание обмануть «механизм» толкало изобретательных работяг на изощрения. Они подходили вдвоем к аппарату, пытаясь запечатлеть на фотоснимке «правильное» лицо. Для пресечения подобных нарушений был внедрен модуль видеозаписи и поиска лиц в кадре.

Медицинский сервер

Медицинский сервер обеспечивает основную функциональность системы медицинских осмотров. Основные функции медицинского сервера:

  • управление медицинскими терминалами;
  • обработка данных, поступающих с медицинских терминалов;
  • организация контроля ролей пользователей и их полномочий;
  • предоставление веб-интерфейса для рабочего места врача и других ролей пользователей;
  • предоставление API-интерфейсов для устройств системы.

Рабочее место врача

Рабочее место врача позволяет медицинскому работнику отслеживать прохождение осмотров на всех терминалах, закрепленных за ним. Интерфейс предоставляет врачу сводную информацию о текущих медосмотрах в удобном и наглядном виде. Также имеется возможность детального просмотра каждого медосмотра и всех показателей, зафиксированных терминалом.

Также web-интерфейс системы может быть использован для администрирования параметров и анализа состояния системы. Прочие возможные функции:

  • управление пользователями;
  • управление правами доступа;
  • обновление сервера или его откат на предыдущие версии;
  • просмотр отладочной информации и логов событий сервера;
  • настройка правил медицинских осмотров;
  • просмотр статистики прохождения медосмотров и результатов прохождения каждого теста из сценария медосмотра.

При необходимости в систему могут быть также введены дополнительные рабочие места.

Медицинский терминал

Медицинский терминал осуществляет автоматизированный медицинский осмотр рабочих и отправляет полученную информацию в базу данных медицинского сервера ЭСМО. Терминал является x86-совместимым персональным компьютером с подключенными к нему дополнительными устройствами.

Состав медицинского терминала:

  • корпус;
  • стационарный (x86-совместимый) компьютер с 17-дюймовым сенсорным экраном;
  • анатомическое кресло;
  • алкотестер (Динго В-01, Динго В-02 или прибор алкорамка производства НПП «Лазерные системы»);
  • тонометр A&D TM-2655;
  • термометр;
  • пупиллометр самодельный с высокоскоростной промышленной камерой IDS USB 3 uEye LE;
  • считыватель proximity-карт;
  • Full HD камера.

Терминал имеет встроенное ПО, предоставляющее как интерфейс пользователя, так и API для взаимодействия с системой. Количество установленных терминалов варьируется в зависимости от необходимой пропускной способности системы и потребностей заказчика. Встроенное ПО терминала предусматривает автоматическое централизованное обновление и возможность массового развертывания.

Имеется мобильная версия терминала, разработанная на базе процессора Raspberry Pi. Была произведена адаптация проекта с учетом ограниченных вычислительных ресурсов этой платформы. Потребовалось заменить оболочку исполнения с NW.js на Electron и отладить работу с оборудованием в среде Raspberry Pi. Пользовательский интерфейс был адаптирован под уменьшенный размер экрана.

Интерфейс медицинского терминала

Интеграция с базой данных предприятия

Для определения ролей в системе и расположения пользователей в сервере ЭСМО предусмотрен механизм настройки связей между ЭСМО и базой данных предприятия (Oracle, 1C, SAP и т.п.). Что позволяет организовать централизованное управление пользователями и ролями, упрощает сетевое администрирование, поскольку администраторы не должны соединяться с несколькими каталогами, чтобы выполнять управление учетными записями.

Кластерная архитектура

С целью повышения надежности системы в целом предлагалось использовать решение на базе Percona XtraDB Cluster.

Для реализации кластера серверов БД настроена работа в режиме синхронной репликации данных. Для обеспечения необходимой производительности системы серверы БД имеют прямое соединение друг с другом с использованием канала связи с гарантированной пропускной способностью не ниже 1 Гбит/сек.

Для реализации кластера веб-серверов используется связка из двух либо трех веб-серверов. Доступ к веб-серверам из сети предприятия организуется с использованием серверов балансировки нагрузки. Каждый веб-сервер настраивается на работу с собственным сервером БД. При выходе из строя собственного сервера БД, веб-сервер переключится на использование запасного сервера.

Разработчик оборудования

Электронная система медицинского осмотра

Доработка автоматизированной системы прохождения врачебного осмотра. Практически полностью переписан код.

Объем работ.

  • Создание модуля медицинского терминала на базе Debian 7.
  • Применение низкоуровневого блока взаимодействия с оборудованием по протоколу HID.
  • Исправление замечаний по общей функциональности модуля.
  • Создание подсистемы анализа QR-кодов.
  • Внедрение модуля автоматизированной сборки дистрибутива и обновления ПО на терминалах.
  • Реализация функционирования станций с алкорамкой по протоколу UDP.
  • Установка мастера настройки медицинского терминала.
  • Перевод на 64-битную архитектуру.
  • Применение образа Docker для установки и локального/удаленного обновления ПО станций.

Разработчик оборудования

Приложение для управления турникетами при прохождении медосмотра

Разработка ПО для терминала, управляющего турникетами системы автоматизированного контроля доступа. Модуль функционирует на базе Debian 7. Реализовано управление и сбор статистики работы контроллера турникета. Модуль захвата видео с веб-камеры с использованием подсистемы ядра Video4Linux2. Разработан блок для Node.js, распознающий QR-код. Внедрен HTTP API управления станцией.

Терминал работает с:

  • контроллером Z-5R Net 8000;
  • конвертером Z-397 Guard USB/RS-485;
  • веб-камерами, совместимыми с Video4Linux2;
  • считывателями MIFARE.

Международ­ный аэропорт

Электронное распознавание глаз

Основная задача модуля — контроль работы оператора устройства рентгеновского досмотра багажа на таможенном посту аэропорта. Для этого программа должна уметь распознавать зрачок глаза, направление взгляда оператора, положение и наклон головы, измерять время, в течение которого зрачки не двигаются или глаза закрыты. Полученные данные обрабатываются и отправляются на сервер, где их просмотрит администратор и проанализирует эффективность работы и уровень риска, вызванный невнимательностью офицера таможни.

ПО реализовано в виде настольного приложения, соединенного с сервером аэропорта.

Основные функции.

  • Определение наличия или отсутствия оператора на рабочем месте.
  • Определение положения лица.
  • Распознавание глаз и зрачков.
  • Определение направления взгляда.
  • Измерение времени, когда глаза оператора закрыты.
  • Измерение времени, когда зрачки оператора не двигаются.
  • Составление статистического отчета о работе оператора.
  • Предупреждение администратора, если оператор не работает должным образом.

ПО способно анализировать входящее потоковое видео или видеозапись. В целях оптимизации ресурсопотребления FPS видео ограничивается 30 кадрами в секунду.

Оператор смотрит на монитор
Взгляд замер более чем на 5 секунд
Взгляд замер
Оператор не смотрит на монитор

Разработчик оборудования

Видеонаблюдение при прохождении медосмотра

Приложение для системы видеонаблюдения. Медиасервер функционирует на базе Ubuntu Server. Задействован модуль Node.js для получения потокового видео с использованием протоколов RTSP/RTP. Фиксирование видеоархива осуществляется в формате H264/MPEG4. Создан модуль детектора движения с возможностью записи, а также пользовательский и административный интерфейс системы видеонаблюдения.

Медиасервер работает с видеостримерами AXIS P7214, AXIS 241Q, Beward BD3570DRZ и BD133, iTech Pro IPe-O.