Настройки для запуска программы хранятся в файлу config.py
.
Параметр | Описание |
---|---|
bot_token |
токен телеграм бота от @BotFather |
db_file |
имя файла базы данных (создается новый если файла нет) |
checker_timeout_secs |
период проверки свободных талончиков черех api горздрава |
Установите настройки в файле config.py
или в системных переменных.
Затем установите необходимые зависимости из файла requirements.txt
и запустите app.py
через интерпретатор Python:
python3 -m pip install -r requirements.txt
python3 app.py
Бот проверяет периодически доступность талончиков к врачу и выводит оповещение в телеграм пользователю, если у врача есть свободные талончики.
Команда | Описание |
---|---|
/status |
немедленный статус врача |
/on |
включить отслеживание свободных мест для записи |
/off |
отключить отслеживание свободных мест для записи |
/help |
помощь |
- хранит настройки каждого пользователя:
- настройки для поиска
- включен ли поиск
- сущности для поиска - это врач с его ид, номером мед учреждения и номером специальности
- https://gorzdrav.spb.ru/_api/api/v2/shared/districts - список районов
- https://gorzdrav.spb.ru/_api/api/v2/shared/district/10/lpus - список медучереждений в 10 районе
- https://gorzdrav.spb.ru/_api/api/v2/schedule/lpu/229/specialties - информация по всем свободным специальностям в больнице с ид 229
- https://gorzdrav.spb.ru/_api/api/v2/schedule/lpu/30/speciality/981/doctors - информация по доступным врачам в больнице 30 по специальности 981
- https://gorzdrav.spb.ru/_api/api/v2/schedule/lpu/1138/doctor/36/timetable - расписание врача 36 в больнице 1138
- https://gorzdrav.spb.ru/_api/api/v2/schedule/lpu/30/doctor/222618/appointments - доступные назначения к врачу
https://github.com/egorantonov/gorzdrav/wiki/SPB-Gorzdrav-API-Documentation
-
бот должен выдавать ссылку на врача, как только у него появятся талончики для этого надо узнать в каком районе он находится. Просмотреть все районы - составить список медицинских учреждений и найти то, в котором он есть. Можно закешировать выхов функции получения списка районов и списка медицинских учреждений в каждом районе.
-
оптимизация.
- Каждый доктор может оказаться в одной и той же поликлинике. Можно кешировать запросы к спискам докторов
.get_doctors(hospital_id, speciality_id, time_minutes)
в пределах нескольких минут, чтобы не делать несколько запросов к одной и той же поликлинике. Если указывать текущее время в минутах, то будет работать функцияlru_cache
. - можно (нужно) кешировать список районов и список поликлиник в районах, чтобы не делать повторных запросов. Предположим можно делать это раз в день.
- Каждый доктор может оказаться в одной и той же поликлинике. Можно кешировать запросы к спискам докторов
-
проверку не только определенного врача но и всей врачебной специальности
-
выбор с помощью кнопок района > мед. учереждения > специальности > врача
- есть доктор, у которого id не число -
п99.553
- в 99 поликлинке выборргского районаhttps://gorzdrav.spb.ru/service-free-schedule#%5B%7B%22district%22:%223%22%7D,%7B%22lpu%22:%22191%22%7D,%7B%22speciality%22:%2259%22%7D,%7B%22doctor%22:%22%D0%BF99.553%22%7D%5D
Надо исправить все ид на строковый тип. В этой поликилинике у всех врачей строковый ид.