Ослепление и приватность
X7 Insight защищает две разные вещи: целостность ослепления исследования (чтобы допуск к кодам лечения не «протёк» через данные) и приватность участников (чтобы в системе не было прямых идентификаторов пациента). Клинические значения, связанные с кодом субъекта, остаются персональными данными специальной категории. Обе защиты работают на уровне сервера, а не интерфейса — поэтому их нельзя обойти, «подсмотрев» ответ API или выгрузку.
Ослепление (blinding)
Заголовок раздела «Ослепление (blinding)»Ослепление задаётся полем (ItemDef.blinded) и ролью. Слепое значение видит только
расслеплённая роль — держатель права data.unblinded.read в своей области (например,
несвязанный статистик или неслепой фармацевт). Всем остальным сервер отдаёт маску в каждом
канале, и кнопки «показать» у них нет: случайно раскрыть слепое значение нельзя.
Маскирование значений
Заголовок раздела «Маскирование значений»- Слепое поле показывается как ••• — фиксированной ширины. Длина маски не зависит от значения, поэтому по ней нельзя догадаться, «длинное» значение или «короткое».
- Маскирование делает сервер при сериализации, а не браузер. Роль без допуска не получит значение ни в форме, ни в API, ни в экспорте — скрывать нечего, потому что значение просто не передаётся.
- В аудиторском следе слепые значения в колонках «До / После» тоже маскируются для тех, у кого нет допуска.
Расслеплённая роль и экстренное раскрытие
Заголовок раздела «Расслеплённая роль и экстренное раскрытие»- Право
data.unblinded.readназначается явно и с причиной — грантом или ролью (пресет «Unblinded Statistician»). Назначение и его отзыв записываются в аудиторский след: по нему видно, кто и когда был расслеплён. Администратору это право автоматически не выдаётся. - Расслеплённая роль видит значения без дополнительных действий. Каждый экран или выгрузка, показавшие ей слепые значения, оставляют в аудиторском следе одну запись «Расслеплённое чтение»: кто, где и какие формы или записи — без самих значений.
- Код группы конкретного субъекта ослеплённая роль может узнать только через экстренное раскрытие — это делает исследователь, с причиной, подтверждением и уведомлением спонсора.
Ослепление в экспортах и пакетах
Заголовок раздела «Ослепление в экспортах и пакетах»- Экспорт всегда собирается с явно выбранным профилем слепоты: «ослеплённая» (с маскированием, по умолчанию) или «расслеплённая» — вторая требует права на расслеплённые данные. Режима «маскировать по правам запустившего» больше нет: слепота каждой выгрузки видна в журнале «Экспорты» по самой строке.
- Инспекционный пакет — всегда слепой: он никогда не расслепляет, независимо
от прав запускающего. Финальный пакет — слепой по умолчанию; расслеплённый
вариант возможен под двойным контролем: право
data.unblinded.readтребуется и у запускающего, и у скачивающего.
Приватность: псевдонимные коды субъектов
Заголовок раздела «Приватность: псевдонимные коды субъектов»X7 Insight — это система сбора клинических данных, а не медицинская карта. Участник идентифицируется псевдонимным кодом субъекта, а не именем.
- В EDC не хранятся ФИО, адреса и прямые идентификаторы пациента — субъект адресуется кодом; таблица «код ↔ человек» остаётся в центре.
- Псевдонимизация не обезличивание: клинические значения, связанные с кодом, — это персональные данные специальной категории (сведения о состоянии здоровья, ст. 10 152‑ФЗ), пока ключ сопоставления существует. Состав полей минимизируйте по протоколу (ст. 5 ч. 5 152‑ФЗ): системный шаблон демографии просит год рождения, а не полную дату.
- Файлы и изображения загружаются уже обезличенными: закрыть прямые идентификаторы на скане первички — шаг центра перед загрузкой, как и при передаче копии монитору.
- Субъект — это код (например, идентификатор в рамках центра и исследования) плюс клинические данные и статус. Такой псевдонимный код позволяет вести данные участника, не раскрывая, кто это.
- Данные и аудит языконезависимы: локализация — только представление, канонические данные хранятся в нейтральном виде. Имена сотрудников в аудиторском следе — это данные персонала, а не участников: они нужны для атрибутируемости записи.
Как это связано с доступом
Заголовок раздела «Как это связано с доступом»Ослепление — это обычная механика доступа, а не отдельный «режим»:
- слепота поля задаётся в дизайне (
ItemDef.blinded); - значение видит только держатель
data.unblinded.readв нужной области (scope); - назначение и отзыв этого права аудируются;
- события платформы фильтруют полезную нагрузку по правам подписчика, чтобы слепое значение не «утекло» через уведомление модулю.
Подробнее о правах и областях — в Каталоге разрешений.