feat(core): scale engine with YAML schema and deterministic scoring
CI / ruff · pytest (pull_request) Successful in 23s

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>
This commit is contained in:
2026-10-03 14:56:40 +03:00
co-authored by Claude Opus 5.5
parent de27ff1b72
commit 0c8cedc0c6
10 changed files with 1017 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
# Стартовые пороги из литературы, финальные утверждает психиатр (issue #8).
# PCL-5 (Weathers et al., 2013). Порог вероятного ПТСР в литературе 31–33; берём 33 (VA National Center for PTSD).
# Градация ≥ 50 «высокая» — рабочее решение команды под правило SPEC «PCL-5 ≥ 50 → high», не часть оригинальной шкалы.
# Клинически значимое изменение — 10 баллов (правило «рост PCL-5 на ≥ 10 → врач» считает delta()).
id: pcl5
title: "Контрольный список симптомов ПТСР (PCL-5)"
recall_period: "последний месяц"
instruction: >-
Ниже перечислены проблемы, которые иногда возникают у людей в ответ на очень стрессовое событие.
Отметьте, насколько каждая из них беспокоила Вас за последний месяц.
license_note: "PCL-5 — общественное достояние (VA National Center for PTSD); русская версия — лицензия на проверке."
translation_note: >-
Рабочий перевод команды (демо-текст). Финальный русский перевод выбирает психиатр (SPEC §9).
Для еженедельного мониторинга используется та же шкала с периодом «последняя неделя».
options:
- {value: 0, label: "Совсем нет"}
- {value: 1, label: "Немного"}
- {value: 2, label: "Умеренно"}
- {value: 3, label: "Сильно"}
- {value: 4, label: "Крайне сильно"}
items:
- {id: pcl5_1, text: "Повторяющиеся, тревожащие и нежелательные воспоминания о стрессовом событии"}
- {id: pcl5_2, text: "Повторяющиеся тревожащие сны о стрессовом событии"}
- id: pcl5_3
text: "Внезапное ощущение или поведение, как будто стрессовое событие происходит снова (как будто Вы снова в нём)"
- {id: pcl5_4, text: "Сильное расстройство, когда что-то напоминало Вам о стрессовом событии"}
- id: pcl5_5
text: >-
Сильные телесные реакции, когда что-то напоминало Вам о стрессовом событии
(например, сердцебиение, затруднённое дыхание, потливость)
- {id: pcl5_6, text: "Избегание воспоминаний, мыслей или чувств, связанных со стрессовым событием"}
- id: pcl5_7
text: >-
Избегание внешних напоминаний о стрессовом событии (людей, мест, разговоров, занятий,
предметов или ситуаций)
- {id: pcl5_8, text: "Трудности с воспоминанием важных деталей стрессового события"}
- id: pcl5_9
text: >-
Сильные негативные убеждения о себе, других людях или мире (например: «я плохой»,
«со мной что-то серьёзно не так», «никому нельзя доверять», «мир совершенно опасен»)
- {id: pcl5_10, text: "Обвинение себя или кого-то другого в стрессовом событии или в том, что произошло после него"}
- {id: pcl5_11, text: "Сильные негативные чувства: страх, ужас, гнев, вина или стыд"}
- {id: pcl5_12, text: "Потеря интереса к занятиям, которые раньше приносили Вам удовольствие"}
- {id: pcl5_13, text: "Ощущение отстранённости или отчуждённости от других людей"}
- id: pcl5_14
text: "Трудности с переживанием положительных чувств (например, неспособность испытывать счастье или любовь к близким)"
- {id: pcl5_15, text: "Раздражительность, вспышки гнева или агрессивное поведение"}
- {id: pcl5_16, text: "Чрезмерный риск или действия, которые могут причинить Вам вред"}
- {id: pcl5_17, text: "Состояние «сверхнастороженности»: постоянная бдительность, готовность к опасности"}
- {id: pcl5_18, text: "Пугливость, Вы легко вздрагиваете"}
- {id: pcl5_19, text: "Трудности с концентрацией внимания"}
- {id: pcl5_20, text: "Трудности с засыпанием или прерывистый сон"}
range: {min: 0, max: 80}
severity:
- {min: 0, max: 32, code: below_threshold, label: "Ниже порога ПТСР"}
- {min: 33, max: 49, code: probable, label: "Вероятное ПТСР"}
- {min: 50, max: 80, code: high, label: "Выраженная симптоматика ПТСР"}
flags:
- code: pcl5_probable_ptsd
when: {total: true, op: ">=", value: 33}