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>
204 lines
21 KiB
Markdown
204 lines
21 KiB
Markdown
# Опросник: пакет проверки от 3 октября 2026
|
||
|
||
Статус: **подготовлено для проверки, не утверждено для пациентов**. Задача #52;
|
||
клиническое согласование остаётся в #8. Независимая проверка обратного перевода, согласование
|
||
врачом и проверка линий звонками не выполнены. В `review-status.json` все эти
|
||
статусы оставлены незавершёнными.
|
||
|
||
## Визуальный отчёт по PR #53
|
||
|
||
[Скачать PDF: проделанная работа и архитектура](PR53-implementation-report.pdf).
|
||
Восемь страниц: состав изменений, архитектура, опросы, расписания, хранение данных,
|
||
проверки и открытые вопросы. Срез коммита `c42ef62`; в отчёте отдельно отмечено
|
||
расхождение расписания для маршрута «психолог» (14/30 вместо 28/28 дней).
|
||
|
||
## Обновление: PDF на 19 страницах
|
||
|
||
Получена дополненная версия от 3 октября. [Разбор изменений](revision-2026-10-03-v2/REVIEW.md)
|
||
и [рабочий обратный перевод](revision-2026-10-03-v2/backtranslation-draft.md) сохранены
|
||
отдельно. TSQ заменил симптомные вопросы PC-PTSD-5; добавлены дневник и расписания.
|
||
**Новая спецификация подключена к диалогу за закрытым переключателем.**
|
||
[Состав реализации, ограничения и порядок проверки](IMPLEMENTATION.md).
|
||
Текст 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](https://pmc.ncbi.nlm.nih.gov/articles/PMC8243036/).
|
||
Зоны и текст для самозаполнения: [Бунова и соавт., 2022, рис.3](https://www.mediasphera.ru/issues/profilakticheskaya-meditsina/2022/8/1230549482022081021),
|
||
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; [отчёт ВОЗ](https://www.who.int/europe/publications/i/item/9789289055765),
|
||
CC BY-NC-SA 3.0 IGO. Использование в этом пакете — некоммерческий прототип.
|
||
Наличие шкалы здесь не означает одобрения продукта ВОЗ или авторами.
|
||
|
||
## C-SSRS: русский бланк Recent
|
||
|
||
Официальная [страница переводов Columbia](https://cssrs.columbia.edu/the-columbia-scale-c-ssrs/translations/)
|
||
ссылается на [Dropbox Screeners](https://www.dropbox.com/scl/fo/pkg1gwxxn1266rke8oite/AC2UFfOKCtefU-o9EEXP-yk?dl=0&rlkey=4grouuqbchfa8obxlcb3msnpz).
|
||
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 для первичной помощи](https://cssrs.columbia.edu/wp-content/uploads/C-SSRS-Screener-with-Triage-Points-for-Primary-Care-2026.pdf)
|
||
и [описанием триажа Columbia](https://cssrs.columbia.edu/the-columbia-scale-c-ssrs/risk-identification/).
|
||
Неполные или противоречивые данные не получают итоговую категорию;
|
||
известный сигнал сохраняется как нижняя граница риска.
|
||
|
||
`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 дополнительно восстанавливают полный текст страницы из структуры,
|
||
проверяют хеши и сверяют все комбинации ветвей с цветовыми категориями бланка.
|