MedOneБлог
← Все статьи

Двойные записи в клинике: как защитить расписание от сбоев

Почему возникают двойные записи в клинике и как их предотвращать: ограничения базы данных, отпуска врачей, кабинеты, оборудование, лист ожидания и напоминания.

Двойная запись в клинике не всегда означает невнимательность сотрудника. Администратор записывает пациента по телефону, пока коллега переносит другой визит. Оба видят свободное время, но данные на экранах уже могут устареть. Конфликты также могут возникать при импорте, изменении длительности приёма или неверном понимании статуса отменённого визита. Решение должно защищать расписание на всех этих путях, включая действия вне обычного окна записи.

Почему проверки на экране недостаточно

Допустим, перед сохранением программа спрашивает, свободно ли время. Одновременные запросы могут получить положительный ответ, пока другой визит ещё не сохранён. Это состояние гонки: каждая отдельная проверка верна, а итог противоречив. Та же опасность остаётся, если сервер проверяет доступность и сохраняет запись независимыми шагами. Частое обновление календаря полезно, но не закрывает этот промежуток между проверкой и сохранением.

Защита базы данных должна действовать при фиксации изменения. Все пути записи — интерфейс, API, импорт и создание повторяющихся визитов — должны подчиняться одному правилу. Конфликтующий запрос не должен завершаться успешным бронированием: сотруднику нужны понятное объяснение и выбор другого времени. Распознавание повторного запроса тоже полезно, но решает другую задачу. Предотвращение повтора одной операции ещё не запрещает независимые бронирования на пересекающиеся интервалы.

Что такое exclusion constraint в базе данных

Ограничение исключения PostgreSQL, exclusion constraint, позволяет запрещать пересекающиеся интервалы: например, для занимающих время визитов одного врача в одной клинике. Механизм описан в документации PostgreSQL. При правильной настройке база не зафиксирует нарушающие правило записи, включая одновременные запросы. Это проверяемая гарантия в заданных границах. Если правило охватывает только врача, оно не защищает автоматически кабинет или оборудование, для которых нужно отдельно определить занятость.

Попросите поставщика объяснить, какие статусы занимают время и когда отмена его освобождает. Соседние визиты могут соприкасаться границами, если момент окончания уже не считается занятым. Подготовку, уборку и дезинфекцию при необходимости включайте в занятость. Начало, окончание и идентификатор ресурса должны быть обязательными, длительность — положительной. Неопределённые значения не должны позволять обходить запрет или создавать бессмысленное бронирование, которое календарь затем не сможет правильно показать.

Отсутствие врача, кабинеты и оборудование

Отпуск и временное отсутствие должны влиять на доступность. Если отсутствие хранится в отдельной таблице, ограничение визитов не проверит его автоматически: требуйте общую модель занятости или равноценную защиту от одновременных операций. Кабинет и аппарат — самостоятельные ресурсы. Все необходимые бронирования визита должны подтверждаться вместе либо полностью отклоняться. Если ресурс допускает совместное использование, уточните правило вместимости: запрет пересечений для исключительного использования подходит не каждому случаю.

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

Лист ожидания ещё не означает запись

В листе ожидания сохраняйте желаемую услугу, врача и удобное время. Предложение освободившегося окна отличается от подтверждённого бронирования. Если предложение временно удерживает время, срок удержания должен быть определён и виден сотруднику. При подтверждении пациентом заново проверяйте все необходимые ресурсы тем же защищённым механизмом. Заранее определите порядок предложений, чтобы сотрудники не обещали одно окно разным пациентам, считая его уже забронированным.

Напоминания и учёт неявок

Для напоминаний определите допустимый канал связи и необходимые согласия, предварительно уточнив применимые требования. Сообщение в очереди, отправка, доставка и подтверждение пациента — разные состояния. Не включайте медицинские подробности без необходимости. Неявку учитывайте отдельно от отмены, с ответственным сотрудником и доступным объяснением. Используйте данные для разбора рабочего процесса: неявка сама по себе не раскрывает причину и не измеряет скорость работы врача.

Как это работает в MedOne

В MedOne пересекающиеся записи запрещены на уровне базы данных, поэтому два сотрудника не могут одновременно занять одно время врача, кабинета или оборудования. Расписание учитывает рабочие часы и отсутствие врачей, лист ожидания отделён от подтверждённой записи, а неявка учитывается отдельно от отмены. Напоминания отправляются только пациентам, давшим соответствующее согласие.

Свяжитесь с нами

Оставьте контакты — мы перезвоним и покажем MedOne для вашей клиники.

Данные используются только для того, чтобы связаться с вами.