Skip to content

24020601 appointments link to journal

Aleksey Zhidkov edited this page Aug 31, 2024 · 1 revision

Реализация страницы просмотра расписания списком

Что вообще происходит

Warning

Реализация отложена из-за недостаточной проработки аналитики.

Продолжаю пилить МВП расписаний. Как-то так вышло, что при реализации создания приёма и до реализации его просмотра, не сделал привязку приёма к записи в журнале. Пришло время это сделать.

Что уже есть

Общая инфраструктура хранения приёмов и журнала, операция создания приёма.

Техдолг

  1. CreateAppointment не имеет суффикса Workflow

  2. Пакет журнала имеет устаревшую структуру

  3. Пакет журнала имеет устаревшую схему обработки ошибок:

    1. Выброс исключения при удалении, если не найдено

    2. Обёртка ошибки дублирования в кастомный тип

    3. Возврат кастомного типа, в случае если не найден клиент при запросе страницы

  4. В редактировании записи не используется ErgoRepo.update

Как это будет работать

UI/UX

Приёмы

Предположительно, без изменений

Журнал

Список

В карточке записи в нижнем блоки с кнопками добавится ссылка "Перейти к приёму".

Редактирование

На форме перед полем записи появится опциональный комбобокс? Или селект? Селект вроде тоже может быть многострочным

URLs

  • Если будет комбобокс выбора приёма - /therapist/appointments/autocomplete-search

Операции системы

  • Создание приёма - добавится вызов операции создания/привязки записи

  • Запрос списка записей - добавится фетч приёма. С типом…​

  • Запрос записи - добавится фетч приёма

  • Обновление записи - добавится вызов обновления терапевтической задачи приёма

Операции ядра

  • Journals.linkEntry(clientRef, localDate, appointmentRef) - находит запись по клиенту и дате, если нет - создаёт новую сущность, проставляет в сущности ссылку на приём и всё это сохраняет

  • Appointments.updateBy(journalEntry) - находит приём по ссылке на него и обновляет

Модель

data class JournalEntry(
    val appointmentRef: AppontmentRef?
)

Схема БД

ALTER TABLE journal_entries
  ADD COLUMN appointment_ref BIGINT REFERENCES appointments;

Тесты

Хеппи пасы

  1. Создание приёма

    1. Если записи нет - она появляется

    2. Если запись есть - проставляется ссылка

  2. Запрос списка записей

    1. Если есть запись со ссылкой на приём - приём попадает в ответ

  3. Запрос записи

    1. Сохранение максимально заполненной записи должно быть постоянным

  4. Обновление записи

    1. Обновление максимально заполненной записи должно быть постоянным

Ошибки

  1. Создание приёма

    1. Доменных ошибок вроде нет - запись всегда можно привязать

  2. Запрос списка записей

    1. Чисто теоретический кейс отсутствия записи по ссылке обрабатывается на уровне гидрации

  3. Запрос записи

    1. Чисто теоретический кейс отсутствия записи по ссылке обрабатывается на уровне гидрации

  4. Обновление записи

    1. Доменных ошибок вроде нет

Порядок выполнения

  1. Привести структуру модуля журнала к новому стандарту

  2. Добавить ссылку на приём и привязку записи журнала при создании приёма

  3. Добавить ссылку на приём в журнал

  4. Добавить инпут приёма но форму создания/редактирования записи