Files
PTSRaiAgent/docs/clinical/README.md
T
Arxip222andClaude Opus 5.5 44814b7293 fix(clinical): red flags, one crisis rule, callback after a crisis, one table of numbers
Clinical review of the questionnaires (ADR-013):
- Red-flag block first in stage 1 (config/instruments/red_flags.yaml); any «Да» stops the
  questionnaire with an acute alert and the help screen of its category.
- One crisis rule: the crisis screen opens at a HIGH C-SSRS risk only; moderate stops and goes
  to a psychiatrist (24 h as a guide), low is a flag with the safety plan. PHQ-9 item 9 with a
  negative screener is a discrepancy flag; without a completed screener it asks the C-SSRS at once.
  config/questionnaire.yaml: cssrs_positive_policy graded (C01).
- Every crisis leaves a callback task for the doctor on duty (post_crisis_call, one per patient)
  and the app asks how the person is the next day, the safety plan one tap away.
- Routing: risk and flags first, scales second; PCL-5 >= 50 no longer means a priority
  appointment (pcl5_severe is moderate on the dashboard too).
- Crisis numbers live only in config/texts/crisis.yaml; texts and the agent prompt refer to them
  via {phone:<key>}. Fixes the children's helpline offered to adults by the chat agent.

Refs #92

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 16:21:16 +03:00

21 KiB
Raw Blame History

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

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

Визуальный отчёт по PR #53

Скачать PDF: проделанная работа и архитектура. Восемь страниц: состав изменений, архитектура, опросы, расписания, хранение данных, проверки и открытые вопросы. Срез коммита c42ef62; в отчёте отдельно отмечено расхождение расписания для маршрута «психолог» (14/30 вместо 28/28 дней).

Обновление: PDF на 19 страницах

Получена дополненная версия от 3 октября. Разбор изменений и рабочий обратный перевод сохранены отдельно. TSQ заменил симптомные вопросы PC-PTSD-5; добавлены дневник и расписания. Новая спецификация подключена к диалогу за закрытым переключателем. Состав реализации, ограничения и порядок проверки. Текст TSQ получен отдельно из приложения Г1 клинических рекомендаций 2023 года; актуальность этой редакции ещё нужно подтвердить. Независимая проверка перевода остаётся pending. Описания реализованных правил и ссылки на страницы ниже относятся к исходному 14-страничному PDF, если явно не указана новая версия.

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

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. Статус лицензии и применимость к коммерческому продукту подтверждаются отдельно.

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

Для новой версии подготовлено 32 единицы: 28 PCL-5 и 4 из сохранённого блока травмы. Русский текст сверён с PDF с.3 и 5–7. Перевод подготовлен как рабочий вариант и требует независимой проверки. Результат и последующая сверка с оригиналом разделены в revision-2026-10-03-v2/.

Независимому человеку передать только revision-2026-10-03-v2/backtranslation-blind.tsv:

  1. Переводчик со свободным английским не должен быть автором исходного русского текста. Перевести все 32 единицы, не читая английский оригинал и подготовленный рабочий перевод.
  2. Сохранить ID и порядок. Заполнить перевод, сомнения, имя и дату; русский текст не исправлять. Если оригинал уже знаком, явно указать это ограничение.
  3. Координатор и врач затем заполняют согласованный русский текст, решение, подпись и дату в revision-2026-10-03-v2/translation-reconciliation.tsv. Предварительные замечания в нём являются предложениями для проверки.

Исходные файлы backtranslation-blind.tsv и translation-reconciliation.tsv в этой папке сохраняются как пакет прежней версии на 38 единиц. Пять симптомных пунктов PC-PTSD-5 и его инструкция больше не входят в актуальный пакет. Обратный перевод сам по себе не доказывает психометрическую валидность. Клинические данные переводчикам не передаются.

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

ID Решение, которое нужно зафиксировать Статус
C01 Любой «Да» останавливает обычный опрос или разрешено продолжение после низкого риска? Различить обычный опрос, уточнение риска и кризисную помощь. Новый PDF с.1 против с.12; в старом с.1 против с.11. Скриншот поддерживает остановку. решено 2026-10-04 (ADR-013): кризисный экран только при высоком риске; умеренный — стоп и психиатр (ориентир 24 ч); низкий — флаг, план безопасности, продолжение. cssrs_positive_policy: graded. Подпись врача — в #8.
C02 Использовать сумму ≥1 или согласованную границу зоны для расширения RUS-AUDIT-S? Не переносить порог AUDIT-C ≥3/≥4. pending
C03 Самозаполнение полного RUS-AUDIT, таблица стандартных порций, порядок дополнения и повторные замеры. pending
C04 Новая спецификация: TSQ ≥6 вместо PC-PTSD-5 ≥3; получить приложение Г1, согласовать применение и PCL-5 ≥31 для популяции. TSQ из приложения Г1 редакции 2023 года уже добавлен; актуальность редакции и применение требуют подтверждения. pending
C05 Привязка PHQ-9/PCL-5 к специалистам, сроки срочной помощи, параллельные маршруты и состав флагов. pending
C06 Официальный русский C-SSRS: версия, возраст/популяция, применение Recent и Since Last Contact. pending
C07 Как отвечает живой дежурный, что делать при недоступности, когда подтверждать уведомление врачу. pending
C08 Повторы, ухудшение, разные периоды оценки и выход из кризисного режима; расписание после смены лекарств 7/14/28 дней и далее 4 недели. pending
C09 Дневник: якоря ответов, направление показателей, пропуски, окно среднего, ночные флаги, приверженность и сроки реакции. См. разбор новой версии. 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 дополнительно восстанавливают полный текст страницы из структуры, проверяют хеши и сверяют все комбинации ветвей с цветовыми категориями бланка.