Коротко:
Сайт, на котором нужно реализовать новую систему записи на приём к врачам. Сайт на Wordpress.
Нужно сделать на нём онлайн-запись на приём к врачам, выглядящий и с логикой работы как вот тут:
но с учётом того, что все данные для отображения должны браться/записываться из/в БД МИС через Web-API.
Подробнее:
Вместо существующей на сайте системы онлайн-записи хотелось бы увидеть не это, а "более другую" систему записи (по удобству процесса записи, отображению) плюс-минус как вот тут:
Процесс записи не должен открывать другие окна браузера, не должно всплывать никаких поп-апов. Всё должно работать в пределах одной странички.
Данные на врачей нужно брать из БД МИС Архимед. Запрашиваются они не напрямую с нашего сервера с БД МИС, а через третий прокси-сервер с Web-API, который находится у разработчиков БД МИС.
Описание API тут:
Старт записи должен позволять начать процесс записи либо со специализации врача, либо с адреса клиники (клиенту удобнее придти на приём туда), либо с ФИО врача (если клиент знает врача и хочет именно к нему).
1. Фильтр "специализация"
Список вариантов специализаций сформировать из запроса к БД МИС: все созданные расписания врачей на две недели вперёд от текущей даты выбрать их специализации.
Получаем список "актуальных" на дату специализаций врачей.
Выбираем в полученном списке какой врач нужен (терапевт, кардиолог, и т.п.) -> выводится список врачей (список карточек) с такой специализацией, у которых создано расписание в МИС на две недели вперёд от текущей даты (список реально работающих врачей).
Если врач работает "по записи" и у него уже нет свободных временных промежутков для записи, то в список врач попадать не должен (к нему всё равно уже нельзя записаться, всё его время приёма занято).
В карточки врачей из МИС выводится фото врача, ФИО, специализация, краткое описание (если есть в БД), адрес клиники где создано расписание, стоимость первичного приёма, временные промежутки для записи (либо указание текстом, что врач принимает без записи в порядке живой очереди с такого-то времени по такое-то.)
Если у врача создано несколько расписаний в поликлиниках по разным адресам (например, с утра работает в одной поликлинике, вечером в другой), то в карточку выводить несколько адресов клиник, при клике по адресу клиники выводится расписание (временные промежутки для записи) именно из этой клиники. При этом визуально подсвечивается, что это расписание именно из поликлиники с этим конкретным адресом. Чтобы не возникало непонимания с какого адреса выведено расписание.
Конечный итог либо карточка врача, где написано "врач работает без записи, в порядке живой очереди с %время_начала_приёма% до %время_окончания_приёма%", либо клик на временной промежуток для записи на приём.
2. Фильтр "адрес клиники"
Список вариантов адресов поликлиник сформировать из запроса к БД МИС: все созданные расписания врачей на две недели вперёд от текущей даты выбрать адреса. Из списка исключаются врачи "по записи", у которых нет свободных временных промежутков для записи.
Получается список "актуальных" адресов поликлиник на две недели вперёд от текущей даты.
Выбираем адрес клиники из сформированного списка клиник, далее выводим список карточек всех врачей с действующим расписанием из этой клиники, за минусом тех врачей, которые работают "по записи" и у которых всё время приёма уже занято.
Далее всё идёт как в первом случае.
3. Фильтр "ФИО врача"
Список актуальных врачей запрашивается из БД МИС: все созданные расписания врачей на две недели вперёд от текущей даты из них вытянуть ФИО врачей (получается актуальный список). Минусуем врачей "по записи", у которых всё время приёма уже занято.
Далее клиент выбирает из сформированного списка врачей нужного открывается его карточка и далее как в первом случае.
!!! В случае с врачами УЗИ толком нет инфо как лучше выводить стоимость приёма, т.к. там у разных видов УЗИ разная стоимость.
Надо смотреть это по возможностям API.
После выбора клиентом удобного временного промежутка для записи на приём, надо запросить у клиента: ФИО (обязательно), дату рождения ДД.ММ.ГГГГ (обязательно), пол (обязательно), номер телефона (обязательно) (с контролем корректности ввода), адрес e-mail (с контролем корректности ввода) (необязательное поле).
После ввода всех данных клиента запись завершается, выдаётся окно об успешной записи.
Так же через Web-API в БД МИС Архимед записывается талон записи на приём (обязательно) с данными что клиент тут указал, с параметром RECEPTIONTYPE=4 ("онлайн-запись").