Настроить правила проверки
Правила проверки (edit checks) — автоматический контроль качества данных прямо в момент ввода. Они ловят пропущенные обязательные поля, значения вне диапазона и логические несоответствия между полями и формами. Правила — часть версии дизайна: они создаются в блоке Проверки вкладки Логика конструктора CRF.
Кому и когда
Заголовок раздела «Кому и когда»Дата-менеджер — дизайнер исследования (Study Builder) или
дата-менеджер с правом «править версию дизайна» (studyversion.update). Правило
вступит в силу только после того, как версию утвердит и опубликует другой
человек (studyversion.approve, studyversion.publish).
Задача возникает при сборке дизайна — когда формы и поля уже есть — и при поправке протокола, если нужна новая проверка.
Перед началом
Заголовок раздела «Перед началом»- Версия дизайна — Черновик, форма с нужными полями уже собрана.
- Простые проверки не пишите руками: «поле обязательно» и «значение в диапазоне» система создаёт сама из свойств поля Обязательное и Мин. / Макс. значение (см. Подробнее). Руками пишутся только правила, связывающие разные поля и формы.
- Решите, что делать при срабатывании: принять значение и открыть запрос (почти всегда) или отклонить значение (только для невозможного).
-
В конструкторе откройте форму, к которой относится правило, и перейдите на вкладку Логика.
-
В блоке Проверки нажмите Добавить проверку. Правило принадлежит открытой форме: отдельно её выбирать не нужно, а имя данных (OID) правила конструктор присвоит сам.
-
Соберите условие в блоке Проверка срабатывает, когда: строки «поле — условие — с чем сравнивать». Несколько строк объединяются выбором Выполнены все условия или Выполнено любое из условий. Истина — проверка сработала.
-
Убедитесь, что под условием написано «Выражение корректно», и проверьте правило на значениях в блоке Проверить на значениях: введите пробные значения — увидите «Сработает — запрос откроется» или «Не сработает при таких значениях».
-
Впишите Сообщение — текст, который увидит оператор центра при срабатывании.
-
Выберите, что делать при срабатывании:
- Открыть запрос — значение сохраняется, по нему открывается запрос;
- Блокировать ввод — значение не принимается;
- Инфо-запрос — мягкий запрос информационной серьёзности.
-
Для запроса при необходимости укажите Запрос к полю — к какому полю прикрепится авто-запрос (по умолчанию — первое поле выражения).
-
Нажмите Создать.
Готовое правило правится на месте — клик по нему в блоке Проверки открывает редактор (Изменить проверку); там же его можно удалить.
Сравнить с другим полем или формой
Заголовок раздела «Сравнить с другим полем или формой»В строке условия в поле С чем сравнивать выберите не значение, а поле этой формы (число с числом, дату с датой) или полю другой формы — с выбором Формы, Поля формы и Визита. Так «дата окончания не раньше даты начала» собирается мышью, без формул. Для полей-дат условия читаются словами: раньше · не позже · позже · не раньше.
Задать правило формулой
Заголовок раздела «Задать правило формулой»Что визуальным конструктором не выражается (арифметика, скобки), задаётся в Расширенном режиме (формула) на языке выражений:
num(HR) < 40 and is_empty(ref('F.DM', 'SEX'))Поля открытой формы адресуются напрямую по имени данных; основные функции — is_empty(...),
num(...), days_between(...), ref('ФОРМА', 'ПОЛЕ') (трёхаргументная форма уточняет визит).
Полная справка — в Скип-логика и автозаполнение.
Настроить серьёзность
Заголовок раздела «Настроить серьёзность»Ссылка Расширенно: серьёзность и действие открывает Серьёзность («Инфо», «Предупреждение», «Ошибка») и Действие при срабатывании («Открыть запрос» или «Блокировать сохранение») по отдельности.
Что произойдёт
Заголовок раздела «Что произойдёт»- Правило сохраняется в черновике версии, создание пишется в аудиторский след («Создана проверка» в хронике изменений дизайна).
- После публикации версии правило выполняется на каждом сохранении значения:
- запрос — значение сохраняется, на поле автоматически открывается запрос со статусом Открыт; когда данные исправят, авто-запрос закроется сам, а повторное срабатывание не плодит второй запрос по тому же полю;
- блок — значение не сохраняется (ответ 422), поле подсвечивается, показывается сообщение правила; запись откатывается целиком.
- Правка правила после публикации — это новая версия дизайна.
Если не получилось
Заголовок раздела «Если не получилось»- Кнопки «Добавить проверку» нет — версия не черновик или нет права
studyversion.update; конструктор открыт в режиме «Только чтение». - Кнопка «Создать» неактивна — не заполнено условие или Сообщение, либо выражение с ошибкой.
- Под условием ошибка, например «Поле „…“ не найдено в форме» — правило ссылается на несуществующее поле; выберите поле из списка или поправьте имя данных.
- «Правило читает только другие формы — выберите поле этой формы, на котором открывать запрос» — запросу некуда сесть: укажите Запрос к полю.
- «Песочница доступна для правил, собранных конструктором» — у правила в формульном режиме нет проверки на значениях; проверьте его в превью.
- Версию не отправить на ревью — правило с синтаксической ошибкой или ссылкой на несуществующее поле не пройдёт ни импорт, ни отправку на ревью; откройте Проблемы.
Подробнее
Заголовок раздела «Подробнее»Системные проверки
Заголовок раздела «Системные проверки»Системные проверки платформа порождает сама из свойств полей:
- поле отмечено Обязательное → проверка «поле не должно быть пустым»;
- у числового поля задан диапазон (Мин. / Макс. значение) → проверка «значение должно попадать в диапазон»; Нарушение диапазона задаёт её поведение — мягкое (записать и открыть запрос) или жёсткое (отклонить значение).
Во вкладке Логика они собраны в блоке Из свойств полей — только для чтения. Чтобы изменить такую проверку, поправьте свойство поля в инспекторе (снимите «Обязательное» или измените диапазон), и проверка изменится вместе с ним.
Два типа поведения: «блок» и «запрос»
Заголовок раздела «Два типа поведения: «блок» и «запрос»»Правила выполняются на каждом сохранении значения — контроль качества встроен в поток ввода, а не откладывается на этап очистки.
| Тип | Что происходит при вводе | Когда применять |
|---|---|---|
| Блок (стоп) | Значение не сохраняется, поле подсвечивается, показывается сообщение правила | Только для заведомо невозможных значений: дата в будущем, значение вне физически допустимого диапазона |
| Запрос (query) | Значение сохраняется, но система автоматически открывает запрос на это поле | Для всего спорного: подозрительное, но возможное значение, требующее уточнения у центра |
Философия платформы: блок останавливает только то, что не может быть правдой. Всё остальное — запрос. Данные из первичного источника важнее немедленной «чистоты» экрана: если значение странное, но в принципе возможное, его нужно принять и открыть управляемый запрос, а не заставлять координатора «подгонять» ввод под правило. Подробнее о работе с запросами — в разделе Запросы.
Межполевые и межформенные правила
Заголовок раздела «Межполевые и межформенные правила»Это правила, которые нельзя вывести из одного поля: «если А, то Б обязательно», «дата окончания
не раньше даты начала», «пульс ниже 40 при незаполненном поле причины». Правило якорится на
открытой форме — относительно неё разрешаются имена полей; поля другой формы читаются через
ref(). Чем «истина» в проверке отличается от «истины» в условии отображения — в статье
Скип-логика и автозаполнение.
Проверка на данных
Заголовок раздела «Проверка на данных»Самый быстрый способ убедиться, что правило ловит то, что нужно, — прожить форму в превью: вводите значения, сработавшие проверки перечисляются прямо под формой, и ничего не сохраняется.
Правила можно прогнать и на данных реального субъекта — кнопкой Проверить данные… на странице субъекта, например чтобы оценить новое правило поправки на уже собранных данных. Такой прогон лишь показывает, какие проверки сработали бы, — он не открывает запросы и не меняет данные.