This commit is contained in:
Петрищев Алексей 2026-09-03 15:30:59 +03:00
parent 5ef2e2b69f
commit f725f3ca00
2 changed files with 3 additions and 3 deletions

View File

@ -86,7 +86,8 @@ README унаследован от Bambolo и местами устарел: в
- `sync_doctors_and_zones.php` — потенциально разрушительная операция: она создаёт временные таблицы, очищает основные `pnd_zones`/`pnd_doctors`, переносит данные и удаляет временные таблицы.
- Не запускать этот скрипт автоматически для проверки. Сначала использовать режим dry-run или отдельную тестовую БД и явно проверить подключения.
- После миграции МИС рабочие слоты врачей находятся в `SimpleSchedule`; старую цепочку `Event`/`Action`/`ActionProperty_Time` для расписания не использовать.
- Рабочее время дня вычислять по всем действующим амбулаторным слотам `SimpleSchedule`, независимо от `ticket`. Исключать удалённые, отключённые, сверхурочные и нулевые слоты, а также строки с `absence_reason`.
- Рабочее время дня вычислять по всем действующим слотам присутствия врача в учреждении (`amb`, `external`, `internal`) независимо от `ticket`; заполненные номерки тоже расширяют диапазон активности. Исключать удалённые, отключённые и нулевые слоты, а также строки с `absence_reason`.
- Интервалы `SimpleSchedule.schedule_type = 'home'` относятся к работе на дому и не должны входить в отображаемый диапазон присутствия врача.
- `SimpleSchedule.ticket` ссылается на `TicketInfo.id`; `NULL` означает свободный слот. Для синхронизации только рабочих часов `TicketInfo` не читать и пациентские данные не переносить.
- ID врачей и участков сейчас совпадают с внешними ID старой МИС. Не менять эту семантику без миграционного плана.
- Поле `pnd_doctors.schedule` содержит JSON вида `YYYY-MM-DD => {start, end}` либо `null`; при изменениях сохранять обратную совместимость формата.

View File

@ -169,9 +169,8 @@ function getDoctorSchedule($src, $doctorId)
WHERE ss.person = {$doctorId}
AND ss.deleted = 0
AND COALESCE(ss.disabled, 0) = 0
AND COALESCE(ss.overtime, 0) = 0
AND ss.absence_reason IS NULL
AND ss.schedule_type = 'amb'
AND ss.schedule_type IN ('amb', 'external', 'internal')
AND ss.start_time IS NOT NULL
AND ss.end_time IS NOT NULL
AND ss.end_time > ss.start_time