Центр корпоративной медицины
Медицина и ветеринария
Россия, Томск
Порталы и сервисы
Июль 2025
Заказчик инициировал разработку Автоматизированной системы предсменных осмотров (АС ПО) — программного обеспечения для специализированного медицинского устройства, выполняющего допуск работников к производственной смене на основании предсменного медицинского осмотра.
Цели клиента:
- Разработка программного обеспечения для управления медицинским устройством с набором датчиков и измерительных модулей.
- Обеспечение соответствия требованиям по предварительным медосмотрам работников на промышленных объектах.
- Повышение удобства и эффективности медицинских осмотров за счёт автоматизации и унификации процессов.
- Импортозамещение и использование свободных технологий, разрешённых к применению на территории РФ.
Система была разработана как клиент-серверное веб-приложение, развёрнутое в рамках переносного устройства. Такое разделение позволило изолировать логику управления прибором от пользовательского интерфейса и обеспечить гибкость при обновлениях, а также добавить в последствии режим удалённого подключения к прибору.
Архитектура и технологии
При разработке АС ПО мы сознательно выбрали клиент-серверную архитектуру, чтобы разделить интерфейсную часть и логику управления медицинским устройством. Это дало нам гибкость в сопровождении, возможность масштабирования и развязку по зонам ответственности между фронтендом и бэкендом.
Серверная часть системы реализована на Java 17 с использованием Spring Boot 3.5, что позволило опереться на надёжный и гибкий фреймворк с богатой экосистемой. Мы использовали Spring Data JPA и Hibernate как надёжный способ взаимодействия с базой данных, обеспечивающий декларативную работу с сущностями и избавляющий от избыточного SQL-кода. Миграции схемы базы данных автоматизированы через Liquibase, что дало нам прозрачность версионирования и контроль изменений, особенно важный при внедрении обновлений системы на разных версиях прибора.
Коммуникация между сервером и клиентом построена на REST API, а для обмена событиями в реальном времени — например, при отслеживании подключения датчиков, получения значений измерений или состояния узлов устройства — мы использовали WebSocket с протоколом STOMP. Это позволило отображать на фронтенде живое состояние аппаратных компонентов.
Для преобразования DTO и доменных моделей применён MapStruct, который автоматически генерирует необходимый маппинг, избавляя разработчиков от рутинного кода и повышая читаемость проекта. При работе с файлами и данными — например, при импорте CSV или определении типа загружаемых файлов — задействованы Apache Tika и OpenCSV. Это облегчает интеграцию с внешними системами и унифицирует обработку пользовательских данных. Для сбора и обработки информации о системе и USB-устройствах используются OSHI и usbdrivedetector: это помогает определять состояние внешнего окружения (например, доступность накопителя) и строить логику экспорта файлов и процесса диагностики датчиков.
На фронтенде мы использовали React с TypeScript и сборщиком Vite, что позволило добиться высокой скорости сборки и обновлений в процессе разработки. Архитектура FSD (Feature-Sliced Design) позволила организовать код по зонам ответственности, что особенно важно в проекте, где интерфейс разбит на множество отдельных экранов: от осмотра до администрирования. Для асинхронной работы с сервером и кэширования данных был выбран tanstack/react-query — он упростил реализацию загрузок и обновлений, обеспечив плавный пользовательский опыт даже при медленном соединении.
Состояние приложения локально управляется через Zustand — лёгкую, но мощную библиотеку, которая хорошо сочетается с архитектурой React и не перегружает приложение. Формы реализованы через react-hook-form в сочетании с Zod, что позволило нам строго валидировать вводимые данные и сразу выводить пользователю ошибки. Это особенно критично в медицинской системе, где важно не допустить ошибок при вводе показателей или анкетирования пациента.
Мы реализовали мультиязычную поддержку через i18next, а визуальное представление интерфейса — через MUI. Это позволило быстро построить адаптивные, доступные и привычные по дизайну формы и элементы. Кроме того, была внедрена видеофиксация осмотров через react-webcam и возможность печати результатов, что делает систему самодостаточной и закрывает все базовые процессы на одном устройстве.
Такой стек позволил нам создать современную, отзывчивую и устойчивую к сбоям систему, которую удобно развивать, тестировать и использовать в условиях проведения автоматизированных предсменных осмотров.
Экраны и модули



Медицинский специалист получает интерфейс для запуска процедуры осмотра, в котором:
- Выполняется проверка подключённости и работоспособности всех компонентов устройства;
- Автоматически фиксируются показания с датчиков (ЧСС, давление, уровень алкоголя, освещённость и др.);
- Отображается ход процесса с возможностью вмешательства оператора при необходимости;
- После осмотра отображается полный протокол: жалобы пациента, все показатели, отклонения, фотографии и видеозапись процедуры.

Управление этапами осмотра
Гибкая настройка этапов осмотра — можно включать/отключать отдельные проверки по требованиям заказчика (использующего прибор).

Состояние узлов аппарата
Диагностический модуль позволяет:
- Мониторить состояние каждого узла: сенсоры, камеры, дисплеи, сеть и т.п.;
- Оповещать об ошибках или отключениях;
- Проводить диагностику и поверку устройства.
Администрирование пациентов и осмотров
Модули позволяют:
- Управлять профилями пациентов;
- Настраивать индивидуальные референсные значения (например, нормы давления);
- Просматривать историю осмотров, фото и видеофиксацию;
- Выполнять импорт/экспорт таблиц в браузер или внешние накопители (USB).
Система на данный момент продемонстрировала:
- Высокую отзывчивость и стабильность работы;
- Интуитивно понятный интерфейс, адаптированный под фельдшеров;
- Удобную настройку компонентов устройства и этапов осмотра;
- Гибкий экспорт и управление данными.
Особенности проекта
- Разработка велась с нуля с учётом опыта прошлых прототипов (включая JavaFX-монолит);
- Использование только библиотек и технологий, разрешённых для регистрации ПО в реестре отечественного;
- Система ориентирована на удобство работы фельдшеров и минимизацию времени осмотра.