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

Аудит и журнал действий

X7 Insight ведёт неизменяемый журнал значимых действий пользователей — это требование GxP и 21 CFR Part 11. Аудит существует на двух уровнях: глобальный (вся платформа) и по конкретному исследованию. Эта страница объясняет, что именно записывается, где смотреть, какие capabilities нужны для просмотра и экспорта, и почему журнал нельзя изменить или удалить.

Два уровня аудита

УровеньАдресCapability и областьКто видит
Глобальный/admin/auditaudit.view_audit с областью системаСистемный администратор
По исследованию/studies/[studyId]/auditaudit.view_audit с областью исследованиеДиректор исследования, Менеджер данных, Монитор

Capability одна — audit.view_audit. Объём того, что видно, определяется областью назначения роли. Исследователь и Координатор в стандартной роли capability audit.view_audit не имеют; история по конкретному субъекту доступна им через кнопку «История изменений» на форме или визите.

Журнал делегирования центра — /studies/[studyId]/sites/[siteId]/team/delegation-log — обособлен от аудита и хранит историю передачи задач между сотрудниками центра.

Скриншот

Журнал аудита исследования X7 Insight с таблицей событий и панелью фильтров Содержание: страница /studies/[studyId]/audit — таблица событий с колонками «Время», «Пользователь», «Действие», «Объект», «Подробности», панель фильтров слева, кнопка «Экспорт» сверху.

Что попадает в журнал

В аудит записываются изменения всех GxP-управляемых моделей (в коде они отмечены атрибутом _gxp_managed = True). На уровне пользователя это все клинические объекты:

  • Исследование, центр и их настройки.
  • Шаблоны визитов (EventDefinition) и сами визиты (StudyEvent).
  • CRF и его версии (CRFVersion), назначения форм на визиты (VisitCRFAssignment).
  • Субъекты (StudySubject), группы субъектов, изменения зачисления.
  • Event CRF — формы конкретного субъекта на конкретном визите, отдельные значения полей (ItemData).
  • Запросы (Discrepancy Note) — открытие, ответы, закрытие, переоткрытие.
  • Пользователи, роли, назначения, приглашения.
  • Задания экспорта (ExportJob) и их статусы.
  • Журнал выполнения правил валидации (RuleExecutionStatus).
  • Электронные подписи и снятия подписи (с обязательной причиной).

Реестр изменений

Для каждого события записываются:

  • Кто — пользователь и его роль на момент действия.
  • Когда — дата и время с точностью до секунды (UTC + локальная зона).
  • Что — тип действия (создание, изменение, удаление, подпись, разблокировка, экспорт и т. д.).
  • Над каким объектом — тип и идентификатор (Subject ID, номер визита, версия CRF).
  • Поле / старое значение / новое значение — для правок данных, по каждому полю отдельно.
  • Причина (Reason for Change, RFC) — обязательное пояснение при административном редактировании или повторной правке завершённой формы.
  • IP-адрес и User Agent — техническая информация запроса.

Типовые события

СобытиеКогда появляется
Объект созданЗаведён субъект, визит, форма, запрос, пользователь
Значение поля измененоВ форме отредактировано значение; для повторных правок — с RFC
Статус изменёнВизит или форма перешли в другой статус
Запрос открыт / ответ получен / закрытРабота с Discrepancy Note (любого типа)
Форма подписана или подпись снятаЭлектронная подпись и её сброс
Блокировка снятаМенеджер данных или Директор разблокировали форму, визит, центр
Роль назначена или снятаУправление командой исследования или центра
Данные выгруженыСоздано / завершено задание экспорта
2FA сброшеноСистемный администратор сбросил TOTP другому пользователю

Как искать

Все страницы аудита поддерживают одинаковый набор фильтров:

  • по пользователю;
  • по типу объекта (субъект, визит, форма, запрос, пользователь, экспорт);
  • по типу действия (создание, изменение, подпись, блокировка, экспорт);
  • по периоду (диапазон дат);
  • по ключу объекта (Subject ID, номер визита, идентификатор запроса).

На формах и визитах обычно есть отдельная кнопка «История изменений» — она открывает аудит, отфильтрованный по конкретному объекту.

Экспорт журнала

Capability audit.export_audit разрешает выгрузить отфильтрованный журнал в CSV или PDF. Эта capability присутствует только у Системного администратора. Большие выгрузки выполняются в фоне — как и обычные Экспорты, они проходят через очередь и имеют свой ExportJobStatus. После завершения файл доступен на странице запуска.

ФорматНазначение
CSVОбработка в таблицах и аналитических инструментах
PDFПредставление регулятору, спонсору или внутренней комиссии
предупреждение

В выгрузку могут попадать идентификаторы субъектов и фрагменты значений. Передавайте файлы по защищённым каналам и применяйте политику обращения с PHI/PII, принятую в вашей организации.

Что нельзя изменить в журнале

Журнал аудита immutable — записи нельзя удалить, отредактировать или скрыть в интерфейсе. Это обеспечивается на уровне БД и сервиса; обходные пути на стороне приложения отсутствуют.

  • Удаление пользователя — soft delete (Status.DELETED / Status.AUTO_DELETED); все его записи в аудите сохраняются.
  • Удаление субъекта или формы — также soft delete; запись и история изменений остаются доступны.
  • Снятие электронной подписи фиксируется отдельным событием, а не правкой прежней записи.

Любая попытка «починить» неверную запись делается новой правкой с обязательной причиной (RFC), которая снова попадает в журнал.

Кому раздел особенно нужен

РольЗачем
Системный администраторРасследование инцидентов на уровне платформы, выгрузка для регулятора
Директор исследованияЗакрытие центра/исследования, проверка готовности к подписи
Менеджер данныхКачество данных, расследование запросов
МониторПроверка соблюдения протокола, источник для SDV
Исследователь, КоординаторИстория по конкретному субъекту или визиту через кнопку «История изменений» на форме (capability audit.view_audit им в стандартной роли не выдана)

Если нужна помощь

Если нужно найти конкретное событие или подготовить выгрузку для проверки, а фильтры не помогают, опишите ситуацию в Поддержку. К обращению приложите идентификатор исследования, Subject ID, интервал времени и при наличии — идентификатор ошибки. Подробности — в разделе Диагностика.

См. также