Перейти к содержимому
РуководствоДата-менеджер

Настроить правила проверки

Правила проверки (edit checks) — автоматический контроль качества данных прямо в момент ввода. Они ловят пропущенные обязательные поля, значения вне диапазона и логические несоответствия между полями и формами. Правила — часть версии дизайна: они создаются в блоке Проверки вкладки Логика конструктора CRF.

Дата-менеджер — дизайнер исследования (Study Builder) или дата-менеджер с правом «править версию дизайна» (studyversion.update). Правило вступит в силу только после того, как версию утвердит и опубликует другой человек (studyversion.approve, studyversion.publish).

Задача возникает при сборке дизайна — когда формы и поля уже есть — и при поправке протокола, если нужна новая проверка.

  • Версия дизайна — Черновик, форма с нужными полями уже собрана.
  • Простые проверки не пишите руками: «поле обязательно» и «значение в диапазоне» система создаёт сама из свойств поля Обязательное и Мин. / Макс. значение (см. Подробнее). Руками пишутся только правила, связывающие разные поля и формы.
  • Решите, что делать при срабатывании: принять значение и открыть запрос (почти всегда) или отклонить значение (только для невозможного).
0:000:00
Проверки в конструкторе: «запрос» принимает значение, «блок» отклоняет невозможное.
  1. В конструкторе откройте форму, к которой относится правило, и перейдите на вкладку Логика.

  2. В блоке Проверки нажмите Добавить проверку. Правило принадлежит открытой форме: отдельно её выбирать не нужно, а имя данных (OID) правила конструктор присвоит сам.

  3. Соберите условие в блоке Проверка срабатывает, когда: строки «поле — условие — с чем сравнивать». Несколько строк объединяются выбором Выполнены все условия или Выполнено любое из условий. Истина — проверка сработала.

  4. Убедитесь, что под условием написано «Выражение корректно», и проверьте правило на значениях в блоке Проверить на значениях: введите пробные значения — увидите «Сработает — запрос откроется» или «Не сработает при таких значениях».

  5. Впишите Сообщение — текст, который увидит оператор центра при срабатывании.

  6. Выберите, что делать при срабатывании:

    • Открыть запрос — значение сохраняется, по нему открывается запрос;
    • Блокировать ввод — значение не принимается;
    • Инфо-запрос — мягкий запрос информационной серьёзности.
  7. Для запроса при необходимости укажите Запрос к полю — к какому полю прикрепится авто-запрос (по умолчанию — первое поле выражения).

  8. Нажмите Создать.

Готовое правило правится на месте — клик по нему в блоке Проверки открывает редактор (Изменить проверку); там же его можно удалить.

В строке условия в поле С чем сравнивать выберите не значение, а поле этой формы (число с числом, дату с датой) или полю другой формы — с выбором Формы, Поля формы и Визита. Так «дата окончания не раньше даты начала» собирается мышью, без формул. Для полей-дат условия читаются словами: раньше · не позже · позже · не раньше.

Что визуальным конструктором не выражается (арифметика, скобки), задаётся в Расширенном режиме (формула) на языке выражений:

num(HR) < 40 and is_empty(ref('F.DM', 'SEX'))

Поля открытой формы адресуются напрямую по имени данных; основные функции — is_empty(...), num(...), days_between(...), ref('ФОРМА', 'ПОЛЕ') (трёхаргументная форма уточняет визит). Полная справка — в Скип-логика и автозаполнение.

Ссылка Расширенно: серьёзность и действие открывает Серьёзность («Инфо», «Предупреждение», «Ошибка») и Действие при срабатывании («Открыть запрос» или «Блокировать сохранение») по отдельности.

  • Правило сохраняется в черновике версии, создание пишется в аудиторский след («Создана проверка» в хронике изменений дизайна).
  • После публикации версии правило выполняется на каждом сохранении значения:
    • запрос — значение сохраняется, на поле автоматически открывается запрос со статусом Открыт; когда данные исправят, авто-запрос закроется сам, а повторное срабатывание не плодит второй запрос по тому же полю;
    • блок — значение не сохраняется (ответ 422), поле подсвечивается, показывается сообщение правила; запись откатывается целиком.
  • Правка правила после публикации — это новая версия дизайна.
  • Кнопки «Добавить проверку» нет — версия не черновик или нет права studyversion.update; конструктор открыт в режиме «Только чтение».
  • Кнопка «Создать» неактивна — не заполнено условие или Сообщение, либо выражение с ошибкой.
  • Под условием ошибка, например «Поле „…“ не найдено в форме» — правило ссылается на несуществующее поле; выберите поле из списка или поправьте имя данных.
  • «Правило читает только другие формы — выберите поле этой формы, на котором открывать запрос» — запросу некуда сесть: укажите Запрос к полю.
  • «Песочница доступна для правил, собранных конструктором» — у правила в формульном режиме нет проверки на значениях; проверьте его в превью.
  • Версию не отправить на ревью — правило с синтаксической ошибкой или ссылкой на несуществующее поле не пройдёт ни импорт, ни отправку на ревью; откройте Проблемы.

Системные проверки платформа порождает сама из свойств полей:

  • поле отмечено Обязательное → проверка «поле не должно быть пустым»;
  • у числового поля задан диапазон (Мин. / Макс. значение) → проверка «значение должно попадать в диапазон»; Нарушение диапазона задаёт её поведение — мягкое (записать и открыть запрос) или жёсткое (отклонить значение).

Во вкладке Логика они собраны в блоке Из свойств полей — только для чтения. Чтобы изменить такую проверку, поправьте свойство поля в инспекторе (снимите «Обязательное» или измените диапазон), и проверка изменится вместе с ним.

Правила выполняются на каждом сохранении значения — контроль качества встроен в поток ввода, а не откладывается на этап очистки.

Тип Что происходит при вводе Когда применять
Блок (стоп) Значение не сохраняется, поле подсвечивается, показывается сообщение правила Только для заведомо невозможных значений: дата в будущем, значение вне физически допустимого диапазона
Запрос (query) Значение сохраняется, но система автоматически открывает запрос на это поле Для всего спорного: подозрительное, но возможное значение, требующее уточнения у центра

Философия платформы: блок останавливает только то, что не может быть правдой. Всё остальное — запрос. Данные из первичного источника важнее немедленной «чистоты» экрана: если значение странное, но в принципе возможное, его нужно принять и открыть управляемый запрос, а не заставлять координатора «подгонять» ввод под правило. Подробнее о работе с запросами — в разделе Запросы.

Это правила, которые нельзя вывести из одного поля: «если А, то Б обязательно», «дата окончания не раньше даты начала», «пульс ниже 40 при незаполненном поле причины». Правило якорится на открытой форме — относительно неё разрешаются имена полей; поля другой формы читаются через ref(). Чем «истина» в проверке отличается от «истины» в условии отображения — в статье Скип-логика и автозаполнение.

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

Правила можно прогнать и на данных реального субъекта — кнопкой Проверить данные… на странице субъекта, например чтобы оценить новое правило поправки на уже собранных данных. Такой прогон лишь показывает, какие проверки сработали бы, — он не открывает запросы и не меняет данные.