December 29, 2021

Система медицинских осмотров

Как она устроена?

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

Комплекс медицинского осмотра «КОДОС»
Комплекс медицинского осмотра «Страж»

С комплексов данные отправляются к нам на сервер. Они включают:

  • медицинские показатели
  • фото, видео для идентификации человека, проходящего осмотр

На сервере формируется очередь и осмотры распределяются между медиками, которые находятся онлайн.

Медик изучает полученные медицинские данные, производит идентификацию (сверяя с фотографией из профиля пациента), затем выносит решение. Документ формируется и подписывается при помощи сертификата КЭП. Далее результаты поступают пациенту в виде подписанного pdf.

Как устроена архитектура сервера?

Стэк на данный момент:

  • Python (Django) — ORM, Templates (для WEB), REST для мобильных приложений
  • Celery + Redis — асинхронные задачи (рассылка уведомлений+писем, генерирование документов, выгрузка таблиц с отчётами), периодические задачи (мониторинг системы, рассылки)
  • Nginx — через gunicorn взаимодействует с Django
  • PostgreSQL (основная БД)
  • S3 — хранение фото, видео и документов
  • Golang — сервис для формирования подписей (вызывает КРИПТОПРО для подписи документов)

Что мы используем на Yandex.Cloud:

  • Compute Cloud — 1 машина под Django, Celery, Redis, Nginx (самая мощная), 1 машина под Golang с криптопро, 1 машина под сервер обновлений, 2-3 машины для тестирования.
  • Managed Service for PostgreSQL — 1 БД
  • Object Storage — S3

Стэк, к которому мы вероятнее всего будем стремиться:

  • Vue с SSR — для фронтенда
  • Golang — для бэкенда
  • PostgreSQL
  • Redis
  • S3
  • Docker + Kubernetes

Самые большие вопросы возникают по тому — как грамотнее осуществлять масштабирование, не переплачивая за слишком мощные VPS. У нас сейчас в течение дня нагрузка относительно равномерная, но в 8-9 МСК единственный пик, когда нагрузка возрастает в 2-3 раза. Уместно ли использовать для этого Kubernetes?

И у нас пока нет биллинга. Все наши клиенты на данный момент — это юридические лица. Счета на оплату формирует бухгалтер вручную.

Немного статистики

В нашей системе сейчас работает 42 711 пользователь

Каждый день проводится около 4 500 медицинских осмотров (данные с видео и фото по каждом осмотру занимают около 5 Мб)

Наших приборов на данный момент 530 шт.

Как работает наша команда?

Разработка аппаратной части — 2 человека

Программисты — 3 человека

Сборка приборов — 2 человека

Бухгалтер — 1 человек (использует 1С у себя на компьютере)