Files
PTSRaiAgent/docs/clinical

Опросник: пакет проверки от 3 октября 2026

Статус: подготовлено для проверки, не утверждено для пациентов. Задача #52; клиническое согласование остаётся в #8. Независимый обратный перевод, согласование врачом и проверка линий звонками не выполнены. В review-status.json все эти статусы оставлены незавершёнными.

Что реализовано

app/core/questionnaire.py содержит детерминированные правила первичного опроса: короткий PHQ-2 из первых двух ответов PHQ-9, фильтр травмы PC-PTSD-5, условное дополнение до полных шкал, RUS-AUDIT-S, структуру C-SSRS Recent, приоритет основного маршрута и параллельные направления. Это новый модуль для интеграции после проверки, а не уже подключённый сценарий бота. Существующие контракты, config/modules.yaml, мониторинг и исторические результаты не менялись.

config/questionnaire.yaml фиксирует кандидатные пороги из PDF. Политика без записи врача не выдаёт обычный маршрут. Положительный PHQ-9/9, известный высокий сигнал C-SSRS и ручной запрос помощи дают crisis независимо от этого ограничения. clinical_review_required при других положительных C-SSRS означает остановку обычного потока и необходимость человеческой проверки, а не присвоение высокого риска. Для неполного C-SSRS возвращается нижняя граница риска, итоговый риск пуст.

Использовать в адаптере score_alcohol, а не низкоуровневый scales.score для маршрутизации: первый не выдаёт итоговую сумму/зону неполной анкеты. Известный пол нужен только для интерпретации алкогольной шкалы; неизвестный не заменяется мужским или женским. Нет ответа, отказ и технически пропущенный вопрос не равны нулю.

RUS-AUDIT-S: исправление спецификации

В PDF на с.7–9 первые три пункта ошибочно названы RUS-AUDIT-S. Валидированная краткая форма состоит из пунктов 3, 9, 10 полного RUS-AUDIT, в этом порядке. Пункт 3 имеет значения 0/1/2/3/4, пункты 9 и 10 — только 0/2/4; сумма 0–12.

Зона Женщины Мужчины
I 0–1 0–3
II 2–4 4–6
III 5 7
IV 6–12 8–12

Источник состава: Neufeld et al., Bulletin of WHO, 2021. Зоны и текст для самозаполнения: Бунова и соавт., 2022, рис.3, DOI 10.17116/profmed20222508121. Рисунок визуально проверен, включая пояснение слова «травма» во втором вопросе. В интерфейсе это пояснение нельзя опускать.

При дополнении до полной шкалы остаются пункты 1,2,4,5,6,7,8. Ответы на 3,9,10 переиспользуются по исходным ID и не суммируются дважды. Записывать версию и факт получения ответа в краткой форме: её пояснение травмы отличается от полного текста. Правило PDF п.1 = 0 может вывести нули только для 2/3, не для 9/10; выведенные ответы возвращаются отдельно в derived, исходный словарь не меняется.

Полная форма и её зоны взяты из пользовательского PDF с.7–9, транскрипция является материалом для согласования, не независимо подтверждённым русским бланком. Для пункта 2 адаптеру нужна исходная таблица стандартных порций (с.8), а не произвольное округление смешанных напитков. Применение полной интервью-формы как самоопроса требует отдельного решения врача.

RUS-AUDIT: © ВОЗ, 2021; отчёт ВОЗ, CC BY-NC-SA 3.0 IGO. Использование в этом пакете — некоммерческий прототип. Наличие шкалы здесь не означает одобрения продукта ВОЗ или авторами.

C-SSRS: русский бланк Recent

Официальная страница переводов Columbia ссылается на Dropbox Screeners. 3 октября пользователь предоставил локальный C-SSRS Screener - Russian.pdf. Неизменённая копия — cssrs-screener-russian.pdf, одна страница, заголовок Screen Version - Recent. Вопросы, пояснения, периоды, варианты и цветовые категории сверены с отрисованной страницей. Хеши оригинала и извлечённого текста сохранены в review-status.json. Файл получен от пользователя после блокировки загрузки; совпадение байтов с удалённой копией Dropbox независимо не проверено.

config/instruments/cssrs_recent_ru.yaml содержит отдельную транскрипцию, app/core/cssrs_content.py — типизированный загрузчик load_cssrs_russian. Версия source-2026-10-03 — локальная версия содержания, не номер редакции Columbia. Даты в метаданных PDF не используются как дата клинической редакции. Сохранены все формулировки и опечатки, включая «Последние 1 месяца», «ЕСЛИ ДА 2», «пытался повеситься» и повтор «запаслись таблетками». Нормализованы только межсловные пробелы и переносы. Пояснения интервьюеру хранятся отдельно от вопросов. Любое редактирование требует отдельного решения.

Переходы по бланку: q1/q2 всем; при q2=0 перейти к q6; при q2=1 спросить q3–q5; q6 за всю жизнь всем; при положительном q6 уточнить последние три месяца. Для q1–q5 период — последний месяц. Ответы «Да»/«Нет» кодируются 1/0; это коды ответов, не суммируемые баллы.

Положительный ответ Цвет бланка Категория
q1, q2 жёлтый low
q3, q6_lifetime оранжевый moderate
q4, q5, q6_recent красный high

При нескольких положительных ответах используется максимальная категория. Поведение ранее трёх месяцев не превращается в «риска нет». Правила совпадают с Recent Screener для первичной помощи и описанием триажа Columbia. Неполные или противоречивые данные не получают итоговую категорию; известный сигнал сохраняется как нижняя граница риска.

config/scales/cssrs_screen.yaml остаётся историческим демо-переводом. Его q6 спрашивает только о последних трёх месяцах; автоматически конвертировать такой ответ в пожизненный нельзя. Новый бланк расположен вне config/scales, поскольку действующий последовательный диалог не поддерживает его условные переходы. Он ещё не включён в пациентский сценарий. Загрузчик текста сам по себе не разрешает продолжение опроса: адаптер должен учитывать evaluate_intake, а порядок обязательных вопросов получать из score_cssrs_recent.

Бланк не разрешает противоречие об остановке при любом «Да»: C01 остаётся решением врача. Также нужны C06 (возраст/популяция, формат применения, обучение и повторные замеры) и согласование пациентского сценария. Версию «с последнего контакта» нельзя получить простой заменой заголовка Recent. Статус лицензии и применимость к коммерческому продукту подтверждаются отдельно.

Независимый обратный перевод

Передать переводчику только backtranslation-blind.tsv и следующие указания:

  1. Нужен независимый переводчик со свободным английским, не автор исходного русского текста. Перевести каждую из 38 единиц буквально по смыслу, включая инструкции, фильтр, вопросы и варианты ответа. Не искать и не подглядывать в английский оригинал. Сохранить ID и порядок строк.
  2. Заполнить english_backtranslation, сомнения в translator_comment, имя и дату. Не «улучшать» русские формулировки. Неясный смысл отмечать явно.
  3. Вернуть файл координатору. Если оригинал уже знаком переводчику, это указать: такую работу нельзя считать слепой независимой проверкой.

Координатор и врач используют translation-reconciliation.tsv после получения обратного перевода. Сопоставить смысл, отрицания, интенсивность, временной период, привязку к событию и примеры с PC-PTSD-5 VA и PCL-5 VA. По каждой строке записать расхождение, тяжесть, согласованный русский текст, врача и дату решения. Не заполнять английские поля машинным переводом под видом независимой работы. Одна обратная проверка не доказывает психометрическую валидацию.

Транскрипция взята из приложенного questionnaires-mvp-source.pdf, с.3–7; нормализованы только переносы и межсловные пробелы. SHA-256 оригинала записан в review-status.json. В репозитории текущие PC-PTSD-5/PCL-5 отличаются от PDF; после согласования переносить именно утверждённую версию и зафиксировать diff. Английские оригиналы не включены в слепой файл.

Решения врача — поля намеренно не заполнены

ID Решение, которое нужно зафиксировать Статус
C01 Любой «Да» останавливает обычный опрос или разрешено продолжение после низкого риска? Различить обычный опрос, уточнение риска и кризисную помощь. PDF с.1 против с.11, скриншот поддерживает остановку. pending
C02 С какой зоны RUS-AUDIT-S дополнять полную форму? Не переносить порог AUDIT-C ≥3/≥4. pending
C03 Самозаполнение полного RUS-AUDIT, таблица стандартных порций, порядок дополнения и повторные замеры. pending
C04 PC-PTSD-5 ≥3 и PCL-5 ≥31 для этой популяции; в текущем репозитории PCL-5 ≥33. pending
C05 Привязка PHQ-9/PCL-5 к специалистам, сроки срочной помощи, параллельные маршруты и состав флагов. pending
C06 Официальный русский C-SSRS: версия, возраст/популяция, применение Recent и Since Last Contact. pending
C07 Как отвечает живой дежурный, что делать при недоступности, когда подтверждать уведомление врачу. pending
C08 Повторы, ухудшение, разные периоды оценки и выход из кризисного режима. pending

Форма решения: ID; выбранный вариант; обоснование; ФИО/роль врача; дата с часовым поясом; версия политики; ссылка на подписанный протокол; проверенные сценарии. После решений C01/C02 и утверждения остальных применяемых порогов заполнить approval в конфиге и изменить версию. Это запись о реальном согласовании, а не переключатель для снятия блокировки. Синтетические записи в тестах не являются подписью врача.

Подключение к диалогу

Адаптер вызывает evaluate_intake после каждого ответа и на ручной кнопке помощи. crisis открывает фиксированную кризисную ветку до LLM; clinical_review_required не разрешает автоматическое продолжение; incomplete запрашивает обязательные пропуски; ready содержит основной маршрут и отдельные параллельные направления. Кнопка помощи доступна на каждом экране. Не утверждать, что врач уведомлён, пока интеграция не подтвердила доставку. Обычный опрос после кризиса сам не возобновляется.

Хранить ответы, версию шкалы/политики, период, время из app.core.clock, исходные и выведенные значения раздельно, флаги и состояние полноты. Новые ключи C-SSRS не подменяют старый cssrs_6. Нельзя сравнивать динамику разных версий и периодов как одну и ту же шкалу. Клинические данные не отправляются переводчикам.

Проверка

make lint && make test. Новые тесты проверяют все 45 допустимых наборов RUS-AUDIT-S для каждого пола, границы полной формы, отрицательную и положительную ветви C-SSRS, давнее поведение, пропуски/противоречия, кризис на неполном опросе, конфликт PHQ-9/9 и C-SSRS, пороги маршрутов, независимые направления и отсутствие разрешения на автоматический переход без реального решения врача. Тесты C-SSRS дополнительно восстанавливают полный текст страницы из структуры, проверяют хеши и сверяют все комбинации ветвей с цветовыми категориями бланка.