Дизайн форм (CRF)
CRF (Case Report Form) — электронная форма сбора данных по протоколу. На уровне исследования существует шаблон формы (CRF), у него есть одна или несколько версий (CRFVersion), и при назначении формы на визит у каждого субъекта появляется инстанс формы (EventCRF) — конкретная карточка ввода с собственным жизненным циклом. Проектирование ведут Менеджер данных и Директор исследования.
CRF, версия и инстанс — три уровня
| Уровень | Объект | Что это |
|---|---|---|
| Шаблон | CRF | Контейнер формы: название, описание, OID, набор версий |
| Версия | CRFVersion | Конкретная структура полей; используется при сборе данных |
| Инстанс | EventCRF | Карточка ввода формы для конкретного субъекта на конкретном визите |
Этой цепочкой объясняется ключевое правило версионирования: данные субъектов всегда привязаны к версии формы. При публикации новой версии старые EventCRF остаются связанными со старой структурой — их данные не теряются.
Жизненный цикл версии формы
Версия использует общий core.enums.Status:
| Статус | Что значит | Что можно делать |
|---|---|---|
Черновик (PENDING) | Версия редактируется в конструкторе | Изменять структуру, поля, правила видимости |
Активен (AVAILABLE) | Версия используется при назначении формы на новые EventCRF | Только просмотр; для правок создайте новую версию |
Неактивен (UNAVAILABLE) | Версия выведена из обращения, новые EventCRF на ней не создаются | Сохраняется ради уже введённых данных |
Только версия в статусе «Активен» используется для новых данных. Подписанные (SIGNED) и заблокированные (LOCKED) объекты автоматически становятся доступны только для просмотра.
Что происходит при публикации новой версии
Обновление формы — это публикация новой версии:
- Создаётся новая CRFVersion в статусе «Черновик».
- Конструктор сохраняет правки в неё, не трогая активную.
- После перевода в «Активен» старая активная версия переходит в «Неактивен».
- Уже существующие EventCRF продолжают использовать старую структуру; новые EventCRF создаются на новой версии. Полная миграция данных между версиями описана отдельно в Операции → Данные.
Где работать с формами
| Где | Маршрут |
|---|---|
| Библиотека форм | /studies/[studyId]/crfs |
| Список версий формы | /studies/[studyId]/crfs/[crfId]/versions |
| Превью версии | /studies/[studyId]/crfs/[crfId]/versions/[versionId]/preview |
| Конструктор | /crf-builder/[studyId]?crfId=...&versionId=... |
Конструктор открывается на отдельной странице и работает с конкретной версией. Если открыть его без versionId, будет создан новый черновик.
Содержание: страница /studies/[studyId]/crfs — список форм с версиями и их статусами, кнопки «Создать форму» и «Импорт».
Создание формы и первой версии
- Откройте
/studies/[studyId]/crfs→ «Создать форму». - Укажите название, код, описание.
- Создаётся CRF и первая CRFVersion в статусе «Черновик».
- «Открыть в конструкторе» — переход в
/crf-builder/[studyId]?crfId=[crfId]&versionId=[versionId].
Импорт форм (ODM XML, Excel) запускается из библиотеки и описан отдельно в Импорт исследований.
Конструктор: структура
В конструкторе версия собирается сверху вниз:
- Секция — крупный раздел формы (например, «Демография»).
- Item group — логическая группа полей внутри секции (например, «Сведения о пациенте»).
- Повторяющаяся группа — группа, в которой оператор добавляет строки (например, «Препараты приёма»). Хранится как набор
ItemGroupData. - Поле (
Item) — конкретная ячейка ввода с типом данных, ограничениями и подсказкой.
Полная иерархия Section → ItemGroup → Item — это структура, которая попадает в выгрузки и используется правилами валидации.
Условные показы (SCD)
Поля и секции можно скрывать или показывать по условию: «показать поле дозы, если препарат = ‘Иное’». В X7 Insight такие правила собираются в Правилах валидации с действиями RuleActionType.SHOW / RuleActionType.HIDE и контекстом RuleExecutionContext.DATA_ENTRY. Это даёт единый механизм условий по всему исследованию.
Содержание: конструктор 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 с данными — удаление запрещено для сохранности аудита |
При нестабильной работе конструктора сохраните идентификатор ошибки и передайте в поддержку.
См. также
- Визиты и назначения форм — VisitCRFAssignment и инстансы EventCRF.
- Правила валидации — условные показы и автозаполнение.
- Операции → Данные — ввод, миграция и история данных.
- Отчёты и экспорт — выгрузка с PHI.
- Справочник статусов — каноничные статусы.