Перейти к основному содержимому

Дизайн форм (CRF)

CRF (Case Report Form) — электронная форма сбора данных по протоколу. На уровне исследования существует шаблон формы (CRF), у него есть одна или несколько версий (CRFVersion), и при назначении формы на визит у каждого субъекта появляется инстанс формы (EventCRF) — конкретная карточка ввода с собственным жизненным циклом. Проектирование ведут Менеджер данных и Директор исследования.

CRF, версия и инстанс — три уровня

УровеньОбъектЧто это
ШаблонCRFКонтейнер формы: название, описание, OID, набор версий
ВерсияCRFVersionКонкретная структура полей; используется при сборе данных
ИнстансEventCRFКарточка ввода формы для конкретного субъекта на конкретном визите

Этой цепочкой объясняется ключевое правило версионирования: данные субъектов всегда привязаны к версии формы. При публикации новой версии старые EventCRF остаются связанными со старой структурой — их данные не теряются.

Жизненный цикл версии формы

Версия использует общий core.enums.Status:

СтатусЧто значитЧто можно делать
Черновик (PENDING)Версия редактируется в конструктореИзменять структуру, поля, правила видимости
Активен (AVAILABLE)Версия используется при назначении формы на новые EventCRFТолько просмотр; для правок создайте новую версию
Неактивен (UNAVAILABLE)Версия выведена из обращения, новые EventCRF на ней не создаютсяСохраняется ради уже введённых данных

Только версия в статусе «Активен» используется для новых данных. Подписанные (SIGNED) и заблокированные (LOCKED) объекты автоматически становятся доступны только для просмотра.

Что происходит при публикации новой версии

Обновление формы — это публикация новой версии:

  1. Создаётся новая CRFVersion в статусе «Черновик».
  2. Конструктор сохраняет правки в неё, не трогая активную.
  3. После перевода в «Активен» старая активная версия переходит в «Неактивен».
  4. Уже существующие EventCRF продолжают использовать старую структуру; новые EventCRF создаются на новой версии. Полная миграция данных между версиями описана отдельно в Операции → Данные.

Где работать с формами

ГдеМаршрут
Библиотека форм/studies/[studyId]/crfs
Список версий формы/studies/[studyId]/crfs/[crfId]/versions
Превью версии/studies/[studyId]/crfs/[crfId]/versions/[versionId]/preview
Конструктор/crf-builder/[studyId]?crfId=...&versionId=...

Конструктор открывается на отдельной странице и работает с конкретной версией. Если открыть его без versionId, будет создан новый черновик.

Скриншот

Библиотека CRF со списком форм, версиями и статусами Содержание: страница /studies/[studyId]/crfs — список форм с версиями и их статусами, кнопки «Создать форму» и «Импорт».

Создание формы и первой версии

  1. Откройте /studies/[studyId]/crfs → «Создать форму».
  2. Укажите название, код, описание.
  3. Создаётся CRF и первая CRFVersion в статусе «Черновик».
  4. «Открыть в конструкторе» — переход в /crf-builder/[studyId]?crfId=[crfId]&versionId=[versionId].

Импорт форм (ODM XML, Excel) запускается из библиотеки и описан отдельно в Импорт исследований.

Конструктор: структура

В конструкторе версия собирается сверху вниз:

  1. Секция — крупный раздел формы (например, «Демография»).
  2. Item group — логическая группа полей внутри секции (например, «Сведения о пациенте»).
  3. Повторяющаяся группа — группа, в которой оператор добавляет строки (например, «Препараты приёма»). Хранится как набор ItemGroupData.
  4. Поле (Item) — конкретная ячейка ввода с типом данных, ограничениями и подсказкой.

Полная иерархия Section → ItemGroup → Item — это структура, которая попадает в выгрузки и используется правилами валидации.

Условные показы (SCD)

Поля и секции можно скрывать или показывать по условию: «показать поле дозы, если препарат = ‘Иное’». В X7 Insight такие правила собираются в Правилах валидации с действиями RuleActionType.SHOW / RuleActionType.HIDE и контекстом RuleExecutionContext.DATA_ENTRY. Это даёт единый механизм условий по всему исследованию.

Скриншот

Конструктор CRF с деревом секций, рабочей областью и панелью свойств Содержание: конструктор CRF — дерево «Секции → группы → поля» слева, поле в центре, панель свойств справа.

Типы полей

ТипНазначение
ТекстСвободный текст с ограничением длины
ЧислоЦелое или дробное, с единицами и границами
Дата / Время / Дата+времяСоответствующие частичные значения
Выбор (одиночный/множественный)Список значений из справочника
Радио / Чекбокс / Да-НетВыбор из ограниченного набора
ФайлЗагрузка документа или изображения

Для чисел и текстов задаются ограничения (мин/макс, длина, шаблон). Для списков — справочник значений с кодами.

Раскладка ответов — ResponseLayout

Раскладка задаёт, как выглядит блок ответа: VERTICAL, HORIZONTAL, MATRIX, LIKERT. Для опросников Лайкерта используйте LIKERT, для коротких списков — HORIZONTAL, для длинных — VERTICAL, для перекрёстных опросов — MATRIX.

Свойства поля

  • Название и код — код участвует в выгрузках и правилах валидации.
  • Обязательность.
  • Подсказка — текст под полем.
  • Единицы измерения — для чисел.
  • Значение по умолчанию.
  • Базовая проверка диапазона — без обращения к правилам валидации.
  • Раскладка ответа (ResponseLayout) — для полей выбора.
  • PHI-флаг — см. ниже.

Сложные межполевые проверки настраиваются в Правилах валидации.

Флаг PHI

crfs.enums.PHIStatus указывает, содержит ли поле защищённую медицинскую информацию:

ЗначениеЧто означаетВлияние на экспорт
Нет (NO)Поле не содержит PHIПопадает в стандартные выгрузки
Да (YES)Поле содержит PHIВыгружается только при reports.export_phi
Ограниченные (LIMITED)Поле содержит ограниченные PHIВыгружается только при reports.export_phi, маскируется на экранах списков

Право reports.export_phi есть только у ролей с явным доступом к выгрузке идентифицирующих данных; подробнее — в Отчётах и экспорте и Капабилити RBAC.

Превью версии

/studies/[studyId]/crfs/[crfId]/versions/[versionId]/preview — пройдите форму как оператор и проверьте:

  • видимость и обязательность при разных вводах;
  • подсказки и единицы измерения;
  • поведение повторяющихся групп;
  • срабатывание условных показов через правила.

Превью не создаёт EventCRF и не сохраняет данные.

Рекомендации

  • Короткие осмысленные коды полей — они попадают в выгрузки и используются правилами.
  • Стабильные справочники: добавляйте новые значения, а не переименовывайте существующие в середине исследования.
  • Одна форма — одна тема. Разделяйте «Демография» и «Анамнез».
  • Перед публикацией покажите превью Координатору клинических исследований.
  • Помечайте PHI явно. Безопасный экспорт зависит от корректного флага.

Что делать, если…

СитуацияЧто проверить
Поля не редактируются в конструктореОткрыта версия в статусе «Активен» — создайте новую версию как «Черновик»
После импорта не все поляСверьтесь с источником; для ODM XML — соответствие стандарту
Условный показ не срабатываетКоды полей в условии точно совпадают с реальными; правило в наборе включено
Новый CRF не появляется в визитеВерсия в статусе «Активен» и форма назначена на визит через VisitCRFAssignment
Форму нельзя удалитьПо форме есть EventCRF с данными — удаление запрещено для сохранности аудита

При нестабильной работе конструктора сохраните идентификатор ошибки и передайте в поддержку.

См. также