Концепции — жизненные циклы и доступ
Эта страница отвечает на два вопроса, которые в проде возникают чаще всего:
- Почему в один момент действие доступно, а в другой нет.
- Какие статусы реально управляют процессом.
1) Модель доступа
Доступ всегда вычисляется как пересечение трёх факторов:
- права роли;
- контекст (global/study/site);
- статус объекта процесса.
2) Важная оговорка про “статусы”: их несколько и они независимы
В UI вы увидите разные статусы, и они отвечают за разные вещи:
- Core status (
Status.*) — базовый статус записи (Study/Site/CRFVersion/и т.д.). Он часто определяет “можно ли вообще менять объект”. - Event status — статус визита (Study Event): управляет read‑only контуром визита.
- Event CRF status — статус формы в визите: управляет стадиями ввода IDE/DDE/Admin Edit/Lock.
- Resolution status — статус Query (Discrepancy Note): это отдельный контур качества данных.
Из-за этого возможно:
- визит
COMPLETED, но конкретная форма ещё неDOUBLE_DATA_ENTRY_COMPLETE(например, DDE в процессе); - форма
LOCKED, но визит ещё неLOCKED(локи могут быть на разных уровнях); - query
OPEN, даже если форма завершена (это нормально: query закрывается отдельным процессом).
2) Статусы исследования (core status)
Д ля Study/Site и части сущностей используются базовые статусы:
PENDING,AVAILABLE— рабочие;UNAVAILABLE,FROZEN,LOCKED,SIGNED,DELETED— ограничивающие;- в read-only статусах изменения блокируются процессно, даже при наличии прав.
Практика:
- если исследование не в
PENDING/AVAILABLE, то дизайн/настройки часто становятся read‑only; - многие “кнопки пропали” на самом деле потому, что study/site стал
FROZEN/LOCKED/SIGNED.
3) Жизненный цикл визита (Study Event)
Основные статусы:
NOT_SCHEDULED,SCHEDULED,DATA_ENTRY_STARTED,COMPLETED,STOPPED,SKIPPED,SIGNED,LOCKED.
Критично для операций:
LOCKED,SIGNED,STOPPED,SKIPPEDпереводят CRF визита в read-only.