Администрирование и безопасность

Переезд из YouEDC 0.2

Как исследования и их данные переезжают из YouEDC 0.2, и три проверки.

Исследования из YouEDC 0.2 переезжают в YouEDC Capture целиком: с командой, eCRF, пациентами, данными, запросами и аудитом. Переезд делает администратор сервера одной командой. Пользователям ничего делать не нужно: они входят на youedc.com с той же почтой и тем же паролем и находят свои исследования на месте.

YouEDC 0.2 old.youedc.com YouEDC Capture youedc.com import-v02 копия базы 1 Аудит 0.2 цел цепочка хешей проверена до переноса 2 Число строк совпало в каждой таблице 0.2 и портала 3 Выгрузки совпали ячейка в ячейку пациенты, значения, ND, статусы, запросы команда печатает только числа: данные пациентов не выводятся

Что переезжает

  • Аккаунты переезжают с той же почтой и тем же паролем. Если аккаунт с такой почтой в портале уже есть, он остаётся как был, с паролем портала. Отключённые в 0.2 аккаунты остаются отключёнными.
  • Исследования переезжают с центрами, командой, ролями и ограничением доступа по центрам. Приглашения, которые ещё не приняты, тоже переезжают.
  • eCRF: визиты, формы, поля с диапазонами и условиями показа, правила сверок (edit checks).
  • Пациенты переезжают со статусами и личными ссылками ePRO. Ссылки, выданные пациентам в 0.2, продолжают работать.
  • Данные: все формы со статусами (черновик, заполнена, SDV), значения и отметки «нет данных».
  • Запросы переезжают с перепиской и статусами, автоматические запросы остаются привязаны к своим правилам.
  • Сохраняются история загрузок и история выгрузок.
  • Аудит переезжает весь, с исходным временем и IP-адресом каждой записи. В аудите каждого исследования появляется ещё одна, последняя запись «Импорт · YouEDC 0.2»: что и сколько перенесено.

Три проверки

  1. Аудит 0.2 до переноса. Сначала проверяется цепочка хешей аудита 0.2 на копии базы. Если цепочка нарушена, перенос не начинается.
  2. Число строк. В каждой таблице 0.2 и после переноса должно быть одинаковое число строк: аккаунты, исследования, центры, пациенты, формы, значения, запросы, записи аудита.
  3. Ячейка в ячейку. Каждое исследование выгружается так, как его выгрузила бы 0.2, и выгрузкой портала. Это делается дважды: с кодами ответов и с текстами. Файлы сравниваются по каждой ячейке.

Ещё сверяются перенесённые записи аудита с записями 0.2 и проверяются цепочки аудита портала. Команда сверки возвращает ошибку, если нашлось хоть одно расхождение. Каждое расхождение она показывает адресом «исследование / лист / строка / столбец», без самих значений. Поэтому её вывод можно спокойно переслать: данных пациентов в нём нет.

Вывод команд переноса и сверки на тестовой копии 0.2: всё совпало
Перенос и сверка тестовой копии базы 0.2: всё совпало.

Пример: тестовая копия 0.2

На снимке выше перенесена тестовая база 0.2 с вымышленными людьми. В ней два исследования: регистр сердечной недостаточности CARD-01 (2 центра, 4 пациента, 11 заполненных форм, 5 запросов) и опрос качества жизни EPRO-2, у которого база уже была закрыта. Вывод читается так:

  • YouEDC 0.2 audit chain: 99 records, OK: аудит 0.2 цел, в нём 99 записей.
  • Accounts: 6 added, 0 already here: перенесено 6 аккаунтов, совпадений по почте нет.
  • Study 1 of 2 (CARD-01): new study; sites 2, …: что перенесено по каждому исследованию.
  • Moved: studies 2, patients 5, …: итог.
  • При сверке у каждой таблицы стоит match, у выгрузок CARD-01 (7 листов, 888 ячеек) и EPRO-2 тоже match. Последняя строка RESULT: everything matches.

После переноса в CARD-01 на месте история выгрузок из 0.2 с отметкой «YouEDC 0.2», а в аудите стоят записи 0.2 с их исходным временем.

Выгрузка исследования CARD-01 после переноса: в истории выгрузки из YouEDC 0.2
История выгрузок CARD-01: выгрузки, сделанные ещё в 0.2.
Аудит CARD-01 после переноса: запись о переносе и записи 0.2 с исходным временем
Аудит CARD-01: сверху запись о переносе, ниже записи 0.2 с исходным временем.

Повторный запуск и занятые коды

  • Повторный запуск ничего не дублирует: то, что уже перенесено, пропускается. Если после переноса в 0.2 что-то изменили, сверка покажет расхождение.
  • Если код исследования из 0.2 уже занят другим проектом портала, перенос останавливается до любых изменений и называет такие коды. Переименуйте проект в портале или запустите перенос с --rename-conflicts, тогда исследование получит код с окончанием -2 (например, CARD-01-2).
  • Пробный запуск --dry-run делает всё то же самое и печатает числа, а потом всё отменяет.

Команды для Владыки портала

Команды выполняются на сервере портала, на копии базы 0.2 (файл SQLite из резервной копии 0.2):

  • flask --app wsgi import-v02 --dry-run /tmp/v02.db делает пробный запуск, ничего не сохраняя;
  • flask --app wsgi import-v02 /tmp/v02.db переносит данные;
  • flask --app wsgi import-v02 --verify /tmp/v02.db или flask --app wsgi verify-v02 /tmp/v02.db выполняет сверку и ничего не меняет.

Сначала всё проходит репетицию во временной копии базы портала на самом сервере. Настоящий перенос делается только после чистой репетиции. После переезда 0.2 остаётся на old.youedc.com только для чтения, как страховка, а ввод данных идёт уже в YouEDC Capture.