ZP ZapolyarnyDev
Ключевой проект

Система записи пациентов на приём

Self-hosted веб-система для онлайн-записи пациентов и работы медицинского персонала

Вернуться в портфолио

Задача

Разработать self-hosted систему записи пациентов на приём для организации с взаимодействием с корпоративной сетью

Что умеет система

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

Структура приложения

Серверная часть построена на Java и Spring Boot. HTTP-контроллеры принимают запросы из публичного и внутреннего (корпоративного) интерфейсов, валидируют данные. В бизнес логике проверяется доступность слота, можно создать и отменить записи

Данные хранятся в бд PostgreSQL. Для работы с запросами используется jOOQ, Flyway использовался для миграций

ER-диаграмма пациентов, врачей, расписания и записей

Для развёртывания предусмотрены Dockerfile, Docker Compose и Caddy как reverse proxy. REST API документирован через OpenAPI; для критичных сценариев добавлены интеграционные тесты

Active Directory и Kerberos

Приложение не подключается к Active Directory, а идёт через Keycloak как OIDC-провайдеру, Spring Security получает OIDC/JWT-токен, преобразует роли и связывает учётную запись с локальным профилем пациента / сотрудника.

В режиме ad Keycloak подключается к Active Directory через LDAP federation. Конфиг предусматривает Kerberos как предпочтительный механиз, так наш пользователь Windows в доменной сети может пройти бесшовный вход по доменной учётной записи

Архитектура

На схеме показаны четыре роли, веб-интерфейс, REST-слой, сервисы, Keycloak и PostgreSQL

Схема взаимодействия ролей, веб-интерфейса, API, Keycloak и PostgreSQL

Результат

ПО можно найти на github: medical-appointment-system