Перейти к содержимому
Как это устроено

Что такое модули

Ядро X7 Insight занимается универсальными вещами: субъекты, формы, данные, запросы, подписи, блокировки, аудит. Всё остальное — медицинское кодирование, экспортёры форматов, рандомизация, электронные дневники пациентов — добавляют модули: пакеты поставки, которые работают поверх ядра, не меняя его.

Для клинического персонала это значит: набор функций в вашем исследовании зависит от того, какие модули включены. Управляет этим администратор арендатора в разделе Администрирование → Модули.

  1. Управляемый релиз операторасинхронизация с поставкой (манифест)
  2. Модуль в каталоге платформыenable
  3. Служебный принципал + грантывызовы
  4. Работа через ModuleContext.sdk.*
Путь модуля: от управляемого релиза до работы строго через SDK.

Дальше модуль работает только через ModuleContext.sdk.*: каждый такой вызов проходит проверку прав (PBAC) и аудируется с пометкой module_id — поэтому «модуль X» всегда отличим в следе от других действий.

Модуль не «влезает» в ядро напрямую. Он подписывается на события (например, «сохранены данные»), ведёт собственное хранилище и добавляет свои экраны и панели в строго отведённые места интерфейса. Поэтому модули можно включать и выключать независимо, не ломая основной поток работы.

На практике вы встречаете модуль как:

  • панель на форме (например, панель кодирования сбоку от полей);
  • пункт навигации исследования (например, «Кодирование»);
  • действие или формат (например, выгрузку в дополнительном формате в Export Console — если такой модуль вам поставлен).

Что именно вы видите, по-прежнему зависит от ваших прав: даже включённый модуль показывает свои панели только тем, у кого есть соответствующее разрешение.

Модуль включается на арендатора целиком — одно включение на модуль. Отдельного «согласия на возможности» нет: набор прав служебного принципала модуля задаёт манифест поставки, и он же виден администратору на карточке модуля.

  • Права модуля — собственные права модуля (mod.<id>.*) для его экранов и данных;
  • Гранты ядра — какие права ядра модуль получает для своего служебного «пользователя», и зачем: каждый грант в манифесте сопровождается человекочитаемой причиной (например, «чтение вербатимов для формирования очереди кодирования»).

Изменить набор грантов из интерфейса нельзя: новый релиз модуля с изменённым манифестом проходит тот же управляемый релиз, а изменение прав фиксируется в аудите (module.grants_synced) при обновлении платформы.

К каким исследованиям модуль применим, решают не включения, а права людей: панель или пункт модуля видит тот, у кого есть соответствующее право mod.<id>.* в scope этого исследования. Один и тот же модуль может работать в одних исследованиях арендатора и не работать в других — именно потому, что у людей разные права.

  1. Откройте Администрирование → Модули и выберите модуль — откроется его карточка: где он включён, права модуля и запрашиваемые гранты, настройки; слоты интерфейса, события и сущности — под «Технические детали».

  2. Нажмите «Включить» — включение одно на арендатора.

  3. При необходимости задайте настройки модуля (например, версию словаря для кодирования).

  4. Подтвердите — модуль включён, его панели и пункты навигации появляются у пользователей с правами на модуль в их исследованиях.

После включения настройки и журнал модуля доступны на той же карточке. Журнал — это аудиторский след: синхронизация модуля с поставкой (включая изменение его прав, module.grants_synced), исчезновение модуля из поставки (module.absent) и каждое включение/отключение фиксируются.

Модуль можно отключить в любой момент (с указанием причины). При отключении его гранты отзываются, подписки на события останавливаются, а панели и пункты навигации исчезают.

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

  • Медицинское кодирование — присвоение вербатимам терминов управляемых словарей (например, MedDRA, WHODrug).
  • Экспортёры форматов — выгрузка данных в специализированные отраслевые форматы поверх экспорта ядра.
  • Рандомизация и поставки (RTSM) — динамические схемы (минимизация) и учёт препарата; рандомизация по списку и экстренное раскрытие кода есть в ядре — см. Включение субъектов.
  • eConsent / ePRO — электронное согласие и данные, вводимые самим участником.
  • Мониторинг — расширенные рабочие места и метрики очистки данных.
  • Тестирование конфигурации — тест-кейсы к правилам CRF и отчёт о тестировании, привязанный к отпечатку дизайна (поставляется модуль «Тестирование конфигурации ИРК»).
  • Лабораторные данные — референсные значения и отметки L/H у значения (поставляется модуль «Лабораторные нормы»).