feat(llm): RAG knowledge base over clinical guidelines with cited extractive answers
CI / ruff · pytest (pull_request) Successful in 1m30s

- docs/source/rag: PDF sources (KR PTSD 2023, KR depression 2024, meds module spec),
  pdf->txt converter (tables as markdown, page markers, hand-transcribed figures),
  word-level check against pdftotext; fixes HAM-D/MADRS fake headers and split rows
- config/rag: corpus txt + sources.yaml (documents, audiences, retrieval params, synonyms)
- app/llm/rag: Snowball stemmer, section-aware chunker with page citations,
  BM25 + synonym expansion + densest-passage reranking, extractive answer()
  with coverage gate, patient dose/prescribing filter, optional LLM rephrasing
  rejected when it adds content; CLI python -m app.llm.rag
- tests: gold retrieval set (hit@3 >= 15/18), off-topic, safety, faithfulness
- ADR-011

Refs #60

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-04 04:11:06 +03:00
co-authored by Claude Opus 5.5
parent 66986255e2
commit 6a77831603
26 changed files with 7776 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
Блок-схема «Алгоритм ведения пациента с посттравматическим стрессовым расстройством» (Приложение Б). Пошаговая запись:
1. Точка входа А: «Обращение к врачу общей практики, медицинскому психологу» → вопрос 2.
2. «Было в течение последних шести месяцев выраженное травматическое событие?»
- нет → «Дальнейший диагностический поиск».
- да → вопрос 3.
3. «Имеются предположительные данные за ПТСР или сомнения в оценке состояния?»
- нет → «Дальнейший диагностический поиск».
- да → «Обращение к врачу-психотерапевту, врачу-психиатру» (шаг 4).
4. Точка входа Б: «Обращение к врачу-психотерапевту, врачу-психиатру» → вопрос 5.
5. «Имеются диагностические критерии ПТСР?»
- нет → «Дальнейший диагностический поиск».
- да → «Диагноз ПТСР» → шаг 6.
6. «Оценка суицидального риска, тяжести состояния, коморбидной патологии, наличия социальной поддержки» → вопрос 7.
7. «Имеются показания для госпитализации (суицидальный риск, наличие выраженной психической или соматической патологии, отсутствие социальной поддержки)?»
- нет → «Оказание помощи в первичном звене здравоохранения (психотерапевтический кабинет, ПНД, психотерапевтический центр и др.) амбулаторно или в условиях дневного стационара» → «Проведение курса лечения ПТСР (психотерапия и фармакотерапия)» → «Оценка состояния» (шаг 10).
- да → вопрос 8.
8. «Есть актуальная соматическая патология, требующая неотложной госпитализации в соматический стационар?»
- да → «Госпитализация и лечение в соматическом стационаре» → «Оценка состояния» (шаг 10).
- нет → «Госпитализация и лечение в психиатрическом стационаре» → вопрос 9.
9. «Есть показания для помещения в психиатрическое отделение с интенсивным наблюдением (суицидальный риск, психотическая симптоматика)?»
- нет → «Госпитализация и лечение в отделении пограничных состояний (отделение неврозов)» → «Оценка состояния» (шаг 10).
- да → «Госпитализация и лечение в отделении интенсивного наблюдения» → «Оценка состояния» (шаг 10).
10. «Оценка состояния» → вопрос 11.
11. «Есть необходимость продолжения лечения?»
- да → возврат к шагу 6 («Оценка суицидального риска, тяжести состояния, коморбидной патологии, наличия социальной поддержки»).
- нет → вопрос 12.
12. «Есть необходимость проведения реабилитационных мероприятий?»
- нет → «Завершение лечения».
- да → «Направление на реабилитацию».