feat(bot): add doctor summary built from structured card data
CI / ruff · pytest (pull_request) Successful in 24s
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>
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# Детерминированное саммари динамики для врача (#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: "сниженное настроение"
|
||||
Reference in New Issue
Block a user