[core] Движок шкал: схема config/scales + скоринг PHQ-9, GAD-7, PCL-5, AUDIT-C, PC-PTSD-5, C-SSRS #3
Notifications
Due Date
No due date set.
Blocks
Depends on
#5 [core] Движок правил алертов и действий (config/rules.yaml) + демо-часы
MedITron/PTSRaiAgent
#1 [devops] Каркас: uv-проект, docker-compose, Makefile, CI
MedITron/PTSRaiAgent
Reference: MedITron/PTSRaiAgent#3
Reference in New Issue
Block a user
Описание
Скоринг детерминирован, пороги в
config/scales/*.yaml(ADR-008), значения утверждает психиатр (issue clinical-content). CLINICAL_MODULES.md, SPEC §6.Желаемый результат
phq9.item9 >= 1 → cssrs).app/core/scales.py: загрузка YAML,score(scale, answers) -> ScaleResult(total, severity, complete, flags). AUDIT-C — порог по полу. C-SSRS скрининг → уровень риска (none/low/moderate/high) по ответам.tests/test_scoring.py: границы градаций, неполные анкеты, п.9.Как проверить
make test;python -c "from app.core.scales import load_all; print(load_all().keys())".Лог выполнения
2026-10-03
2026-10-03
app/core/scales.py— pydantic-схема шкалы (пункты, варианты,buttons_only,reverse, диапазон, градации,by_sex, правилаscoring: rules, флаги с условиямиitem / sum_of / total / severity_in / any_of), кэшируемая загрузкаload_all()/load_scale(),score(scale_id, answers, sex)→ScaleResult,delta(prev, cur). Семь YAML вconfig/scales/: phq9, gad7, pcl5, auditc, pcptsd5, cssrs_screen, phq4 с литературными порогами и пометкой «финальные утверждает психиатр (issue #8)».tests/test_scoring.py(границы градаций, флаг п.9, AUDIT-C по полу, триаж C-SSRS, неполные анкеты, невалидные значения, валидация схемы);make lint testзелёный.complete=False; флаги и правила срабатывают на отвеченном (положительный п.9 в незаконченном PHQ-9 обрабатывается).extra=forbid), проверяет непрерывность градаций и соответствие диапазона пунктам — опечатка в YAML падает при загрузке.delta()требует полные результаты одной шкалы.