feat(core): движок шкал и скоринг PHQ-9, GAD-7, PCL-5, AUDIT-C, PC-PTSD-5, C-SSRS, PHQ-4 #28

Merged
Eleboba merged 1 commits from feat/3-scales into dev 2026-10-03 14:57:45 +03:00
Owner

Что меняется

Движок шкал: pydantic-схема config/scales/*.yaml, детерминированный скоринг (score, delta) и стартовые YAML для PHQ-9, GAD-7, PCL-5, AUDIT-C, PC-PTSD-5, C-SSRS (скрининг), PHQ-4. Пороги из литературы, финальные утверждает психиатр (#8).

Closes #3

Зона

core

Как проверить

make lint test
uv run python -c "from app.core.scales import load_all; print(load_all().keys())"
uv run python -c "from app.core.scales import score; print(score('phq9', {'phq9_9': 1}))"

Публичный API

  • load_all() -> dict[str, ScaleDef], load_scale(id) -> ScaleDef, clear_cache()
  • score(scale_id, answers: dict[str, int], sex: 'm'|'f'|None = None) -> ScaleResult(scale, total, max_total, severity_code, severity_label, complete, answered, flags)
  • delta(prev, cur) -> int
  • Флаги: phq9_item9_positive, pcl5_probable_ptsd, auditc_positive, pcptsd5_positive, cssrs_high, cssrs_moderate, phq4_anxiety_positive, phq4_depression_positive

Чек-лист

  • rebase на origin/dev
  • make lint + make test зелёные
  • лог в issue (### 2026-10-03)
  • нет ПДн в логах, нет реальных данных, нет секретов
  • общие файлы не затронуты
## Что меняется Движок шкал: pydantic-схема `config/scales/*.yaml`, детерминированный скоринг (`score`, `delta`) и стартовые YAML для PHQ-9, GAD-7, PCL-5, AUDIT-C, PC-PTSD-5, C-SSRS (скрининг), PHQ-4. Пороги из литературы, финальные утверждает психиатр (#8). Closes #3 ## Зона core ## Как проверить ``` make lint test uv run python -c "from app.core.scales import load_all; print(load_all().keys())" uv run python -c "from app.core.scales import score; print(score('phq9', {'phq9_9': 1}))" ``` ## Публичный API - `load_all() -> dict[str, ScaleDef]`, `load_scale(id) -> ScaleDef`, `clear_cache()` - `score(scale_id, answers: dict[str, int], sex: 'm'|'f'|None = None) -> ScaleResult(scale, total, max_total, severity_code, severity_label, complete, answered, flags)` - `delta(prev, cur) -> int` - Флаги: `phq9_item9_positive`, `pcl5_probable_ptsd`, `auditc_positive`, `pcptsd5_positive`, `cssrs_high`, `cssrs_moderate`, `phq4_anxiety_positive`, `phq4_depression_positive` ## Чек-лист - [x] rebase на origin/dev - [x] make lint + make test зелёные - [x] лог в issue (### 2026-10-03) - [x] нет ПДн в логах, нет реальных данных, нет секретов - [x] общие файлы не затронуты
Eleboba added 1 commit 2026-10-03 14:57:06 +03:00
feat(core): scale engine with YAML schema and deterministic scoring
CI / ruff · pytest (pull_request) Successful in 23s
0c8cedc0c6
Pydantic schema for config/scales/*.yaml, cached loader, score() with
severity bands (sex-specific for AUDIT-C), rule-based C-SSRS triage,
flags (PHQ-9 item 9, PCL-5 >= 33, PHQ-4 subscales) and delta().
Starting literature thresholds for phq9, gad7, pcl5, auditc, pcptsd5,
cssrs_screen, phq4; final values are approved by the psychiatrist (#8).

Refs #3

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eleboba merged commit 10faec73e0 into dev 2026-10-03 14:57:45 +03:00
Eleboba deleted branch feat/3-scales 2026-10-03 14:57:46 +03:00
Sign in to join this conversation.