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

На многих заводах эти правила касаются рядовых сотрудников. Их много. Но их осмотр проще, чем у пилота или диспетчера АЭС. У них можно измерить температуру, давление, пульс, оксигенацию (уровень кислорода в крови), базовые рефлексы, уровень алкоголя. Где-то нормативы запрещают роботам диагностировать этот комплекс параметров, а где-то разрешают измерять, но их замер должен быть заверен врачом. То есть живой человек из процесса не исключается, но его работа может быть очень сильно автоматизирована.

Мы собрали комплекс сбора всех этих показателей так, чтобы утром, когда настоящие сварщики приходят на работу, им не приходилось стоять в очереди.

Но дьявол, конечно, — в деталях. Хотя после тестов алкотестера нас мало что беспокоит в этом бренном мире.

Что такое комплекс функциональной диагностики?


Это Linux-машина, к которой подключены разные медицинские датчики. Поверх ОС в терминальном режиме установлен прикладной софт, который умеет аутентифицировать пациентов по карте, пальцу, лицу или глазу, прогонять их по тестам и заносить результаты в базу данных. Также результаты можно печатать. База данных может находиться как внутри самого устройства, так и в HR-системе организации или на третьем сервере. Часто комплекс функциональной диагностики совмещается с другими подсистемами компании — например, если пациент «не аллё» по алкотестеру, то его забирает отсыпаться заботливая охрана. Или он не может потом авторизоваться на рабочем месте без такой проверки. Или не может пройти через турникет.

Выглядит он так:



В базовой конфигурации это корпус, антивандальный ПАВ-тачскрин (стекло 16 мм), принтер для результатов, камера для связи с врачом или контроля того, что пациент не поменялся после аутентификации. Из датчиков по умолчанию поставляются измеритель пульса и уровня кислорода в крови по пальцу на просвет, автоматический измеритель давления (шина для руки), алкотестер. В расширенной конфигурации добавляются пупиллометр (определяет адекватность и усталость, я о нем подробно рассказывал здесь), бесконтактный термометр, весы и любые другие датчики: можно поставить глюкометр, контактный термометр и так далее. Например, в США очень популярны индексы массы тела — это что-то вроде омметра.

Всё то, с чего можно снять данные, может быть подключено к терминалу. Надо будет поставить автодоктора Братства Стали — поставим, только опишите его API и дайте один на тесты.



Первые три датчика включены в базовую конфигурацию, весы — опционально

Естественно, если каждый датчик в отдельности работает нормально, то это не значит, что вместе они будут работать хорошо.

Базовые датчики


Алкотестер — это устройство, состоящее из сенсора этилового спирта, а точнее, его паров в воздухе, и связки с системой контроля доступа. Если пациент в порядке, то турникет открывается. Если в крови обнаружен алкоголь — сообщение охране, и турникет не открывается.

Установка такого терминала даже в турникет не отменяет медицинского персонала на предприятии, но позволяет существенно сократить нагрузку на него. И снижает влияние человеческого фактора на объективность показаний — это когда «добрая» охрана пропускает «хороших» рабочих.



Настенная версия терминала с алкотестером и аутентификацией по лицу и карте

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

Дополнительные датчики


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

Температуру решили измерять по лбу, потому что его легко найти и легко предъявить. Прямо над тем местом, где надо дышать, стоит точечный датчик температуры (это что-то типа однопиксельного тепловизора). Наш тестер довольно быстро научился обманывать терминал, растирая лоб перед измерением: терминал сразу бил тревогу и предлагал вызвать неотложку, команду карантинного контроля и отряд зачистки.

Про пупиллометр: если очень коротко — он измеряет время реакции зрачка на свет определённой волны, что позволяет пробросить пинг до одного из нервных центров в мозгу. Вспышка — затем замер времени ответа. По скорости прибытия пакета можно установить примерное состояние нервной системы. Конкретно — нет ли каких-то замедлителей или диких ускорителей по дороге. Обычно это болезни, алкоголь, наркотики, медикаменты, усталость, сонливость или психиатрический диагноз.

Тесты


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

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

Дальше пошли тесты пупиллометра и алкотестера.

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

Мы все эти уязвимости последовательно закрывали. В частности, особенно крутой историей был смачный вдох воздуха из алкотестера. Даже если ты пьян в стельку, то прошлое поколение устройств говорило, что ты «стёкл как трезвышко». В новом поколении появился контроль направления потока воздуха.

Вот что нам принёс с производства охранник, контролирующий осмотр:


Есть несколько решений, кроме охранника: изменение контура лица на видео, сверка исследований по истории (обычно сначала дышат так, потом приходят с грушей), плюс охрана сама выделяет особо злостных и просматривает по ним видео.

Софт


Дальше, собственно, было не так феерично. Неделя сношения с принтером, чтобы он печатал сразу и в руки пациенту, а если не может — уничтожал задание на печать. Потом долгая интеграция со СКУДами, чтобы шла информация фельдшеру. Протестировали видеосвязь (в серию не пошло) — ну да, можно телемедицину, но потребности нет. Сейчас просто пишем на видео процесс обследования. Врачам часто нужны нетривиальные вещи. Хорошо хоть тут цвет крови точный не требовали (это очень важно хирургам при теледоступе).

Проверили аутентификацию по радужке: её и так фотографирует пупиллометр, но тестов с вырезанными глазами тоже не было. Не повезло.

Потом —долгая история с хранением ПД: у нас есть целый отдел, который умеет делать безопасное хранилище как в одном терминале, так и в рамках системы. Ясное дело, жёсткие требования ИБ нам работы не уменьшили.

Сделали веб-доступ к серверу:



Можно посмотреть результаты пройденных пользователями обследований, выделить всех по одному или выбрать ТОП-10 алкоголиков завода. Настроить рассылку различных почтовых уведомлений заинтересованным лицам при критических отклонениях медицинских показаний пользователя от нормы. Построить отчёты по обследованиям, пройденным за какой-либо период/на определенных терминалах/определёнными пользователями.

Итог


Итог — готовый терминал.

Медицинский терминал — например, это Intel Celeron G1620 @ 2.70GHz, 2 GB RAM, 60 GB SSD, ОС Linux. Серверы Intel Xeon E5620 @ 2.40GHz, 16 GB RAM, 2 TB HHD. Терминалы комплектуются внутренним ИБП, вандалоустойчивыми экраном и корпусом, бесконтактным считывателем карт доступа для идентификации обследуемых, принтером.



Полный сеанс обследования — 3 минуты (при дополнительных датчиках — больше).
Врачи заключили, что медицинский терминал позволяет оперативно выявлять у обследуемых признаки гипертонического криза, угрожающего развитием инфаркта миокарда и инсульта, нарушения ритма сердечных сокращений, сопровождающегося увеличением частоты пульса (тахикардия) или его уменьшением (брадикардия), лихорадочных состояний: проявления острых инфекций (ОРВИ, гриппа), алкогольного опьянения. Куда уж без него на заводе.

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

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

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

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

У нас было внедрение на 15 тысяч пользователей, 12 тысяч проходов через турникет в день. За полтора года были обнаружены 1 223 сотрудника в состоянии алкогольного опьянения.

Ссылки


Комментарии (19)


  1. fapsi
    27.09.2018 10:28

    добавляются пупиллометр (определяет адекватность и усталость, я о нем подробно рассказывал здесь)

    Ожидал увидеть ссылку


    1. TGrigorenko Автор
      27.09.2018 10:47

      Ссылка есть, на слове «здесь» habr.com/company/croc/blog/424501


  1. TimsTims
    27.09.2018 12:34

    а точнее, его паров в воздухе
    Если в крови обнаружен алкоголь
    Так всё-таки в воздухе, или кровь тоже берёте у сотрудников?

    И если по воздуху, то вот например у сотрудников ГИБДД имеются сменные втулки, чтобы ничего не осталось от предыдущего человека. А у вас тоже втулки меняются? Или они не нужны?


    1. TGrigorenko Автор
      27.09.2018 12:50

      Кровь у сотрудников не берется, анализ делается только по определению паров в воздухе. А вот если терминал по итогам такого анализа выдал «аларм», то медперсоналу поступает сигнал, и дальше этот сотрудник может попасть на рабочее место только после осмотра медсотрудником. Вот они уже могут брать кровь на анализ.
      Сменные втулки не требуются, так как модель алкотестера не предполагает тактильного контакта. Если проще – человек ее не касается губами, кожей, а дует немного отстраненно. Прикосновения нет.


    1. roscomtheend
      28.09.2018 10:53

      В других системах сначала анализируются пары в экспресс-режиме (причём, Юпитер анализирует воздух «до», чтобы хитрые ГАИшники или другие люди не обманули), если экспресс выдал положительный результат, то тут уже мундштук одноразовый и тест полный.


  1. greyhard
    27.09.2018 13:50
    -1

    Классное описание :) нам еще есть куда расти и развиваться. Поиграем в догонялки ;) конкуренция поможет всем.


  1. amarao
    27.09.2018 14:44

    Круто. А какая там версия ядра и как часто вы туда патчи ставите?


    1. TGrigorenko Автор
      27.09.2018 15:49

      Сейчас мы используем ubuntu 16.04.1 (ядро 4.10.0-37), последний раз изменения в системе были в марте


      1. amarao
        27.09.2018 16:22

        Спасибо, что честно отвечаете.

        Смотрите, 4.10 — больше не поддерживается.
        wiki.ubuntu.com/Kernel/LTSEnablementStack
        (https://wiki.ubuntu.com/Kernel/Support?action=AttachFile&do=view&target=16.04.x+Ubuntu+Kernel+Support+Schedule.svg)

        4.10 как HWE для 16.04, снята с поддержки в феврале 2018. Больше апдейтов не будет, а поддерживаемым HWE ядром является уже даже не 4.13, а 4.15 (переход на которое произошёл в августе 2018).

        Причина такого странного поведения — переход на rolling LTSE, wiki.ubuntu.com/Kernel/RollingLTSEnablementStack

        Так что с точки зрения поддержки надо сидеть либо на LTS ядре (оригинальном ядре дистрибутива, для 16.04 это старенькое 4.4), либо постоянно следить за этим самым 'rolling'.

        Используя неподдерживаемую версию (и не устанавливая апдейты) вы получаете систему в которой есть known vulnerabilities. Это всё смешно, пока в ваше устройство не прилетит какой-нибудь RCE (remote code execution) через дырку, которую пол-года назад закрыли.

        Напоминаю историю про казино, которое поломали через непатченный wifi-термометр в аквариуме.


        1. TGrigorenko Автор
          27.09.2018 18:23

          До этого руки не доходили. Мы планируем переходить на 18.04 в ближайшее время.
          На текущий момент устройства используются во внутренней сети и не подвержены атакам извне.
          Спасибо за детальный разбор нашей версии.


          1. amarao
            27.09.2018 18:29
            +1

            Дело не в том, какая у вас бубунта туда влита изначально. Дело в том, как вы ставите апдейты. Каким образом вы оповещаете заказчиков о том, что требуется обновление.

            Безусловно, «на текущий момент наши устройства используются во внутренней сети и не подвержены атакам извне» рассуждали люди, ставившие wifi-термометр в аквариум казино.

            Атакующим было очень удобно, что wifi-термометр предполагался не быть подверженым атакам из вне (читай, «нам патчи не нужны»), а уж то, что он использовался во внутренней сети, было всей изюминкой взлома.

            Во внутренней сети — это рядом с деньгами, обогатительными центрифугами, системами управления турбинами и реакторами, литейным оборудованием большого цеха и т.д.

            Прям бери и логинься.

            Что делать?
            Продумать процедуру установки апдейтов на устройство. Контракт и специальный сотрудник, автоматически по крону, OTA, как угодно.

            Но если вы отгружаете устройство без апдейтов, то вы отдаёте устройство без гарантии. Любые обнаруженные дефекты вы игнорируете и не предлагаете клиентам исправления. Это как минимум, низкое качество продукта, а как максимум — халатность в уголовном понимании этого слова.


            1. radist2s
              28.09.2018 07:23

              Спасибо за комментарий, сейчас занимаюсь проектированием своего устройства, и OTA-обновления для меня не были приоритетной частью. Однако вы натолкнули меня на мысль, что нужно сначала программировать систему обновлений OTA, и уже через нее и выполнять деплой в том числе на dev-устройства, чтобы потом не возникало проблем с поддержкой железа в разных версиях, и тд.


  1. Certik
    27.09.2018 17:13

    Жаль нет примеров как обманывали пупилометр. интересно же…


  1. 8street
    27.09.2018 17:39

    Девайсы классные и тестеры веселые. Я бы тоже почитал про тесты.


  1. sdveg
    27.09.2018 17:42

    Минздрав год назад давал письмо о невозможностью использования подобных комплексов для предрейсовых медосмотров водителей. С Вашим комплексом вы обращались в минздрав ?


    1. TGrigorenko Автор
      27.09.2018 18:45

      С 1 января вышел закон о телемедицине, и теперь мы ждем прецедентов и решения Минтранса, подпадают ли водители под определение «пациент», используемое в законе.
      Как только Минтранс определится, мы тоже будем знать об этом.


      1. sdveg
        27.09.2018 19:29

        Не быстрее самим написать им?
        Для Яндекс такси не вы делали оборудование?


  1. khim
    27.09.2018 18:24

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


  1. 152251
    28.09.2018 02:12

    А иногда без бутылки не разбёрёшь что нарисовали горе-проектировщики...