CI / ruff · pytest (pull_request) Successful in 24s
build_structured() aggregates a PatientCard into scores, flags and adherence (no patient text, no names); build_summary() sends it through the LLM gateway, falls back to a config-driven template, keeps an open acute alert first and caches per (token, provider, data hash). Refs #19 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
90 lines
4.5 KiB
YAML
90 lines
4.5 KiB
YAML
# Детерминированное саммари динамики для врача (#19, SPEC §7 п.4).
|
||
# Строится ТОЛЬКО по структурированным данным карточки (баллы, флаги, приём доз) — без текста пациента.
|
||
# Используется: (1) как ответ mock-провайдера, (2) как запасной текст, если GigaChat недоступен или его ответ
|
||
# не прошёл фильтр запретов. Правила текстов: без диагнозов, без советов по дозам — решения принимает врач.
|
||
# Зона clinical вычитывает формулировки и пороги.
|
||
|
||
empty: "Нет данных за период."
|
||
|
||
# Пороги для блока «Что обсудить на визите». Совпадают с config/rules.yaml, где это применимо.
|
||
thresholds:
|
||
phq9_rise: 5 # рост PHQ-9 ≥ 5 баллов (rules.yaml: phq9_rise)
|
||
pcl5_rise: 10 # рост PCL-5 ≥ 10 баллов (rules.yaml: pcl5_rise)
|
||
gad7_rise: 5
|
||
sleep_nights: 3 # ночей со сном < 4 ч за период
|
||
alcohol_days: 3 # дней с алкоголем за период
|
||
mood_low: 3 # среднее настроение за последние 3 дня ≤ порога (0–10)
|
||
adherence_min: 0.8 # доля принятых доз ниже порога
|
||
max_topics: 5
|
||
|
||
metrics:
|
||
phq9: "PHQ-9"
|
||
pcl5: "PCL-5"
|
||
gad7: "GAD-7"
|
||
auditc: "AUDIT-C"
|
||
dar5: "DAR-5"
|
||
|
||
levels:
|
||
acute: "острый"
|
||
high: "высокий"
|
||
moderate: "умеренный"
|
||
info: "инфо"
|
||
|
||
risk_levels:
|
||
low: "низкий"
|
||
medium: "средний"
|
||
high: "высокий"
|
||
|
||
# Короткие подписи кодов алертов (id правил из config/rules.yaml).
|
||
codes:
|
||
phq9_item9: "PHQ-9 п.9"
|
||
cssrs_high: "C-SSRS высокий"
|
||
cssrs_moderate: "C-SSRS умеренный"
|
||
weapon_access_risk: "доступ к оружию"
|
||
phq9_severe: "PHQ-9 тяжёлая степень"
|
||
pcl5_severe: "PCL-5 выше порога"
|
||
phq9_rise: "рост PHQ-9"
|
||
pcl5_rise: "рост PCL-5"
|
||
auditc_positive: "AUDIT-C положительный"
|
||
quit_intent: "намерение прекратить приём"
|
||
missed_doses_7d: "пропуски приёма"
|
||
side_effect_3d: "побочные эффекты"
|
||
sleep_lt4_3n: "сон < 4 ч"
|
||
alcohol_3d: "алкоголь"
|
||
mood_low_3d: "сниженное настроение"
|
||
no_contact_3d: "нет связи"
|
||
young_adult_start: "возраст < 25"
|
||
|
||
lines:
|
||
safety: "Безопасность: открыт острый сигнал ({codes}, день {day}) — требует внимания врача в первую очередь."
|
||
alerts: "Открытые алерты: {alerts}."
|
||
no_alerts: "Открытых алертов нет."
|
||
scales: "Шкалы: {scales}."
|
||
scale: "{name} {values} ({delta} к исходному{unscheduled})"
|
||
scale_latest: "{name} = {value} (последнее измерение)"
|
||
unscheduled: ", последний — внеплановый"
|
||
wellbeing: "Самочувствие: {parts}."
|
||
mood: "настроение в среднем {avg}/10, последние 3 дня {last3} (мин. {min})"
|
||
sleep: "сон < 4 ч — {nights} ноч. (подряд до {streak})"
|
||
alcohol: "алкоголь — {days} дн. (подряд до {streak})"
|
||
therapy: "Терапия: {parts}."
|
||
therapy_drug: "{drug}, день {day}"
|
||
adherence: "принято {taken}/{planned} ({pct}%)"
|
||
adherence_7d: "приверженность за 7 дней {pct}%"
|
||
missed: "пропуски — день {days}"
|
||
side_effects: "побочные эффекты — день {days}"
|
||
no_side_effects: "побочные эффекты не отмечены"
|
||
quit: "намерение прекратить — день {days}"
|
||
risk: "риск отказа от терапии {level} ({score}){factors}"
|
||
discuss: "Что обсудить на визите: {topics}."
|
||
|
||
topics:
|
||
safety: "безопасность и план безопасности"
|
||
scale_rise: "рост {name}"
|
||
quit: "намерение прекратить приём"
|
||
side_effects: "переносимость (побочные эффекты)"
|
||
adherence: "пропуски приёма"
|
||
sleep: "сон"
|
||
alcohol: "алкоголь на фоне терапии"
|
||
mood: "сниженное настроение"
|