web-search-for-the-nearest-hospitals / backend

ПоисКлиник
https://poisklinik.acceleratorpracticum.ru
2 stars 1 forks source link
celery django-rest-framework docker drf postgresql

ПоисКлиник

web_search_for_the_nearest_hospitals Workflow

ПоисКлиник - это веб-приложение для поиска ближайших медицинских учреждений.

В этом репозитории живет backend этого приложения.


Технологии

Python Django DjangoREST Postgres GitHub Actions Docker Redis Celery

Документация API


Детали

Возможности API ### Регистрация и авторизация пользователя - регистрация пользователя - авторизация пользователя - авторизованный пользователь может создавать, изменять и удалять организации - авторизованный пользователь может записываться на прием к врачу - авторизованный пользователь может оставлять отзывы - сброс и задание нового пароля пользователя ### Обработка сведений о медицинских учреждениях - отдача списка медицинских учреждений - отдача свойств конкретного учреждения - сортировка списка учреждений по удаленности от переданных координат широты и долготы - фильтрация учреждений по следующим параметрам: специальности врачей, работающих в организации; город и район расположения организации; является ли организация государственной или коммерческой; является ли организация круглосуточной или нет - отдача специальностей врачей конкретной организации - отдача расписания работы учреждения - поиск учреждения по его наименованию - пагинация списка учреждений - создание организации - изменение свойств организации - удаление организации ### Обработка сведений о специальностях врачей - отдача списка специальностей врачей в соответствии с Приказом Министерства образования и науки РФ от 12 сентября 2013 г. N 1061 ### Обработка сведений о городах и принадлежащим им административным районам - отдача списка городов РФ, медицинские учреждения которых используется в сервисе - отдача конкретного города с имеющимся списком административных районов в нем - отдача списка специальностей, имеющихся в конкретном городе ### Реализация записи к специальности врача в учреждение - получение списка талонов для записи - организация записи пользователя к специальности врача ### Отзывы к организациям - получение списка отзывов - создание нового отзыва
Особенности реализации сервиса 1. Техническим заданием установлено, что сервис работает в пределах города Калуги - мы посмотрели дальше и добавили возможность работы в любом городе. 2. Скорость - самая главная характеристика сервиса - каждый SQL-запрос профилирован. 3. Создана и настроена админка для гибкого управления сущностями сервиса. 4. Реализован гибкий процесс по осуществлению записи к врачу в организацию. Сервис в фоновом режиме (Cron/Celery) управляет талонами на заданный период времени. Для записи к врачу достаточно получить список свободных талонов на интересующие пользователя дату приема и специальность врача и записаться. 6. Заранее предугадана и решена проблема **race condition** при записи к врачу - на уровне СУБД при записи блокируется соответствующая строка талона. 7. Особое внимание уделено подробной документации API. 8. Настроен CI/CD на проведение тестов, деплоя и уведомления разработчиков на Discord-сервер.
Установка Для локального развертывания необходимо создать файл с переменными окружения `env`. Пример такого файла находится в репозитории под названием . env.example. Для запуска сервиса используются последовательно команды из директории `infra` от пользователя с правами root ```shell docker-compose -f docker-compose-local.yml up --build -d docker exec infra-backend-1 python3 manage.py migrate docker exec infra-backend-1 python3 manage.py collectstatic ``` Сервис будет доступен на http://localhost:28962.

Команда

Вяхирев Александр
Павлов Максим
Прудывус Павел - техлид