185 lines
18 KiB
Markdown
185 lines
18 KiB
Markdown
# Опросник: пакет проверки от 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](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. Статус лицензии и
|
||
применимость к коммерческому продукту подтверждаются отдельно.
|
||
|
||
## Независимый обратный перевод
|
||
|
||
Передать переводчику **только** `backtranslation-blind.tsv` и следующие указания:
|
||
|
||
1. Нужен независимый переводчик со свободным английским, не автор исходного
|
||
русского текста. Перевести каждую из 38 единиц буквально по смыслу, включая
|
||
инструкции, фильтр, вопросы и варианты ответа. Не искать и не подглядывать
|
||
в английский оригинал. Сохранить ID и порядок строк.
|
||
2. Заполнить `english_backtranslation`, сомнения в `translator_comment`, имя и
|
||
дату. Не «улучшать» русские формулировки. Неясный смысл отмечать явно.
|
||
3. Вернуть файл координатору. Если оригинал уже знаком переводчику, это указать:
|
||
такую работу нельзя считать слепой независимой проверкой.
|
||
|
||
Координатор и врач используют `translation-reconciliation.tsv` после получения
|
||
обратного перевода. Сопоставить смысл, отрицания, интенсивность, временной период,
|
||
привязку к событию и примеры с [PC-PTSD-5 VA](https://www.ptsd.va.gov/professional/assessment/screens/pc-ptsd.asp)
|
||
и [PCL-5 VA](https://www.ptsd.va.gov/professional/assessment/adult-sr/ptsd-checklist.asp).
|
||
По каждой строке записать расхождение, тяжесть, согласованный русский текст,
|
||
врача и дату решения. Не заполнять английские поля машинным переводом под видом
|
||
независимой работы. Одна обратная проверка не доказывает психометрическую валидацию.
|
||
|
||
Транскрипция взята из приложенного `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 дополнительно восстанавливают полный текст страницы из структуры,
|
||
проверяют хеши и сверяют все комбинации ветвей с цветовыми категориями бланка.
|