F
Fand_igor

Система мониторинга очистки эндоскопического оборудования

Краткое описание

Разработал систему для поэтапного учёта обработки и дезинфекции медицинского инструмента в эндоскопии. Проект состоял из двух связанных частей: аппаратного контура на датчиках и RFID-метках, а также внутреннего личного кабинета на Yii2, который принимал события от оборудования, фиксировал прохождение этапов обработки и показывал журнал в виде рабочего дашборда для сотрудников.

Это была прикладная система, которая связывала реальный процесс обработки инструмента с цифровым журналом и контролем последовательности этапов.

Для чего был нужен проект

Проект решал задачу отслеживания очистки и дезинфекции эндоскопического оборудования по этапам. Вместо ручного бумажного или частично ручного учёта система позволяла:

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

Что было реализовано

  • Внутренний веб-кабинет на Yii2 для сотрудников и администраторов.
  • Отдельный модуль endoscopy со справочниками и журналами предметной области.
  • Отдельный api-модуль и публичный endpoint для приёма событий от внешних устройств.
  • Разделение ролей в системе, включая администратора, сотрудника и отдельную роль авторизованного устройства.
  • Учёт и настройка RFID-меток с привязкой к конкретной сущности.
  • Справочники по эндоскопам, моечным машинам, средствам очистки, статусам инструмента и сотрудникам.
  • Отдельные профили сотрудников, учёт пользовательских аккаунтов и контактных данных внутри системы.
  • Справочник средств очистки с параметрами растворов, включая концентрацию и, при необходимости, температуру.
  • Справочник моечных машин с режимами работы.
  • Справочник статусов инструмента для фиксации результатов этапов, включая сценарии вида Да/Нет и Положительный/Отрицательный.
  • Основной журнал обработки CleaningLog, где фиксировались фактические данные по циклу очистки и дезинфекции.
  • Отдельный журнал уровней CleaningLevelLog, который хранил состояние прохождения этапов как последовательность статусов и историю выполнения.
  • Дашборды и журналы с фильтрацией, поиском, датами, статусами и отображением этапов обработки в таблицах.
  • Интерфейсы на базе моих Yii2-плагинов, включая GridView, DynaGrid, AdminLTE и связанные UI-компоненты.

Как работала логика обработки

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

В системе были зафиксированы этапы:

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

Для каждого шага система:

  • определяла следующий допустимый этап;
  • проверяла тип пришедшей RFID-метки;
  • запрещала пропускать шаги и принимать события не того типа;
  • записывала соответствующие данные в журнал;
  • фиксировала время начала и завершения операций;
  • переводила цикл в статус Actual или Completed.

За счёт этого проект контролировал не только факт события, но и корректность последовательности обработки медицинского инструмента.

Интеграция с устройствами и датчиками

Аппаратная часть проекта использовала Arduino-датчики и модули, которые передавали данные в систему. Моя работа была не только на веб-уровне: датчики и контроллеры я также программировал на C, после чего они отправляли запросы в личный кабинет.

Со стороны backend/web было реализовано:

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

Таким образом, веб-проект выступал серверной частью аппаратного контура, а не только внутренним интерфейсом.

Что отображал личный кабинет

  • Журнал циклов очистки и дезинфекции с датами, сотрудниками, инструментами и типом обработки.
  • Время начала и окончания отдельных операций.
  • Результаты тестов, включая герметичность и контроль качества очистки.
  • Привязанные средства очистки и моечные машины.
  • Отдельный уровень представления по стадиям выполнения, где было видно, на каком шаге находится цикл.
  • Административные справочники по RFID-меткам и связанным сущностям.

Это позволяло использовать систему как внутренний дашборд и журнал аудита по процессу обработки инструмента.

Технически со стороны backend и web

  • Спроектировал приложение на Yii2 с отдельными модулями security, staff, api и endoscopy.
  • Реализовал RBAC и раздельные роли для сотрудников, администраторов и устройств.
  • Настроил публичный сценарий приёма событий без обычной пользовательской сессии для аппаратной части.
  • Построил бизнес-логику на ActiveRecord-моделях CleaningLog, CleaningLevelLog, RfidTags, Tools, ToolsCleaningMachines, ToolsCleaningAgents, ToolsStatuses.
  • Разделил фактический журнал операций и журнал прохождения уровней, чтобы отдельно хранить реальные данные цикла и состояние маршрута.
  • Спроектировал схему так, чтобы устройство было полноценным субъектом доступа с отдельной ролью в системе, а не просто внешним источником событий.
  • Использовал транзакции при обновлении циклов обработки, чтобы запись этапов не расходилась между связанными таблицами.
  • Реализовал фильтрацию, поиск и пользовательские таблицы журналов через собственные Yii2-компоненты для административных интерфейсов.
  • Построил справочники для управления метками и их привязками к сотрудникам, инструментам, статусам, машинам и реагентам.
  • Добавил в модель данных пользовательские настройки и контактные данные, что позволяло развивать систему как полноценный внутренний кабинет, а не только как журнал событий.

Технологии

  • Yii2
  • PHP
  • MySQL
  • JavaScript
  • jQuery
  • AdminLTE
  • Собственные Yii2-плагины для grid/dynagrid/admin UI
  • RFID-метки
  • Arduino sensors/modules
  • C для программирования датчиков и контроллеров

Моя роль

Моя роль была сквозной: от идеи и формализации логики этапов обработки до реализации личного кабинета, backend-логики, журналов, дашборда и интеграции с аппаратной частью. Отдельно я программировал датчики и контроллеры на C, чтобы они могли передавать события в систему.

Практическая ценность проекта

Этот кейс показывает сразу несколько уровней инженерной работы:

  • разработку прикладной системы для медицинского процесса;
  • перевод реального офлайн-процесса обработки инструмента в цифровую модель;
  • интеграцию веб-приложения с внешними датчиками и RFID-событиями;
  • проектирование конечного автомата и контроля последовательности этапов;
  • построение журналов и внутреннего дашборда для аудита процесса;
  • сочетание backend-разработки, интерфейсов и аппаратной интеграции в одном проекте.