| name | wiki |
| description | Wiki-слой медкарты: страницы-сущности со связями, поиск противоречий, сироток и битых ссылок, граф.
Триггеры: «wiki», «вики», «граф связей», «собери вики», «проверь вики», «противоречия», «что не связано»
|
Wiki — связный слой медкарты
Профиль. До чтения и записи определи активный профиль по
.claude/shared/profile-resolution.md. Личные страницы живут в
Data/profiles/<активный>/wiki/, общие — в Data/wiki/.
Назначение
JSON-файлы Data/ хранят значения: маркеры, даты, дозировки. Они точны,
но между собой не связаны. Wiki хранит связи и суждения: почему этот
маркер важен, какая гипотеза его объясняет, кто из врачей что сказал и где
два утверждения противоречат друг другу.
Метод: LLM Wiki Андрея Карпаты, адаптированный под медкарту. Ключевое
отличие от исходного метода — числа не переносятся в markdown. У Карпаты
источники неструктурированы, поэтому markdown-страница есть шаг вперёд.
Здесь значения уже лежат в JSON, на них построены тренды, графики и проверка
целостности. Страница ссылается на запись, а не копирует её.
Копия неизбежно разъезжается с оригиналом. Это ровно та ошибка, которую
система уже проходила с промптами специалистов, где хранилась копия медкарты:
она устаревала и заставляла агента утверждать опровергнутое.
Типы страниц
Личные — Data/profiles/<id>/wiki/
| Каталог | Что описывает |
|---|
condition/ | Состояние или диагноз: течение, чем подтверждено, что влияет |
hypothesis/ | Гипотеза о первопричине: за, против, чем проверить |
symptom/ | Жалоба: когда началась, с чем совпадает, что усиливает |
doctor/ | Врач: зона, визиты, назначения, что осталось невыполненным |
synthesis/ | Разбор: отчёт консилиума, сопоставление, вывод по теме |
Общие — Data/wiki/
| Каталог | Что описывает |
|---|
source/ | Источник литературы: руководство, исследование, с URL |
marker/ | Справка по маркеру: что означает, чем регулируется, что искажает |
Общие не привязаны к человеку: литература и физиология маркера одинаковы для
всех. Исследование, найденное для одного члена семьи, работает на всех.
Формат страницы
---
type: condition
title: Железодефицит без анемии
slug: iron-deficiency-no-anemia
status: suspected # active · suspected · resolved · refuted
created: 2026-03-20
updated: 2026-08-06
sources: # пути к записям-первоисточникам, БЕЗ копирования значений
- labs/2026-03-15_cbc.json
- doctors/visits/2026-03-20_hematologist.md
---
Ферритин снижается третий замер подряд при нормальном гемоглобине —
см. [[marker/ferritin]]. Клинически проявляется как [[symptom/fatigue]].
Конкурирующее объяснение — [[hypothesis/thyroid-subclinical]]; различает их
трансферрин и растворимые рецепторы.
Гематолог на приёме склонился к дефициту — [[doctor/hematologist]].
Основание: [[source/bsg-iron-deficiency]].
Правила формата:
- Числовые значения на страницу не переносятся. Пишется «снижается третий
замер подряд», а не «23 → 19 → 16». Значения читаются из
sources[]
sources[] — пути относительно корня профиля (для общих страниц —
относительно Data/)
- Связи —
[[тип/slug]] в теле. Обратные ссылки не хранятся: они
вычисляются, и хранимая копия разъехалась бы
slug — латиница, цифры, дефис. Совпадает с именем файла без .md
- Значение с двоеточием берётся в кавычки.
title: Разбор: причины усталости
ломает YAML, и страница теряет заголовок, статус и источники — при этом
выглядит как страница, у которой их просто нет. Правильно:
title: "Разбор. Причины усталости"
Режимы
build — первичная сборка
Разовая операция при первом запуске. Читает Data/ активного профиля и
создаёт стартовый набор страниц:
- Из
hypotheses.json — страница на каждую гипотезу, со статусом и
ссылками на анализы из evidence_for / evidence_against
- Из
profile.json → chronic_conditions — страница на состояние
- Из
current_complaints — страница на симптом
- Из
doctors/contacts.json и индекса визитов — страница на врача
- Из
consilium/ — synthesis-страница на отчёт
- Из индекса анализов — не создаёт страниц. Анализ сам по себе не
сущность, он источник. Страница появляется у того, что анализ объясняет
Затем — проход связывания: найти упоминания между страницами и проставить
[[ссылки]]. И lint.
Сказать, сколько создано и что осталось несвязанным.
sync — после новых данных
Вызывается из /inbox, /doctor, /labs и /consilium после записи, либо
вручную. Не создаёт всё заново, а встраивает новое в существующее:
- Прочитать, что появилось с последней синхронизации
- Определить, каких сущностей оно касается
- Обновить затронутые страницы: течение, статус,
sources[], updated
- Завести страницы для того, что упомянуто, но своей страницы не имеет
- Отметить, если новое противоречит написанному ранее — не переписывать
молча, а показать оба утверждения
- Записать строку в
Data/profiles/<id>/wiki/_log.md
Формат журнала — разбираемый:
## [2026-08-06] sync | Анализы Гемотест 15.03
Затронуто страниц: 4 · создано: 1 · противоречий: 1
lint — здоровье wiki
Главный режим. То, ради чего слой существует.
| Проверка | Что ищет | Почему важно |
|---|
| Противоречия | Два утверждения, которые не могут быть верны одновременно | Врач А сказал одно, врач Б другое; гипотеза утверждает «стабилен», анализ показывает падение |
| Сиротки | Страница, на которую никто не ссылается | Анализ загружен и не интерпретирован; гипотеза без next_step; назначение врача, о котором забыли |
| Битые ссылки | [[x]], где страницы x нет | Препарат назван в протоколе визита, но отсутствует в medications/; диагноз упомянут без своей страницы |
| Устаревшее | updated страницы старше самого свежего файла из её sources[] | Пришёл новый анализ, а вывод на странице остался от прошлого |
| Недостающие связи | Страницы с общим источником, между которыми нет ссылки | Две гипотезы опираются на один анализ и не знают друг о друге |
Вывод — рабочий список, а не украшение:
⚠ Противоречия (2)
[[condition/iron-deficiency]] «ферритин стабилен»
↔ labs/2026-03-15_cbc.json показывает третье снижение подряд
Разрешить: обновить страницу либо объяснить расхождение
○ Сиротки (4)
[[hypothesis/b12-deficiency]] — нет входящих ссылок и next_step
✗ Битые ссылки (1)
[[medication/magnesium-citrate]] ← упомянут в doctor/therapist
Противоречие не разрешается автоматически. Показать оба утверждения и
предложить, что их рассудит. Молчаливая правка уничтожает информацию:
расхождение между источниками — это и есть находка.
graph — данные для дашборда
Граф не кешируется в файл: дашборд разбирает страницы при запросе.
Кеш разъехался бы со страницами, а мы и так боремся с копиями.
Режим существует, чтобы показать статистику текстом: узлов по типам, рёбер,
самые связанные и самые одинокие страницы.
Когда wiki вредна
Слой, который забыли обновить, хуже его отсутствия: он выглядит
достоверным и читается как актуальный вывод.
Поэтому:
lint обязателен в /wrap-up
- На каждой странице видна дата
updated и список sources[]
- Страница, чей источник свежее её самой, помечается устаревшей до того,
как её прочитают
- Утверждение без источника в
sources[] — дефект страницы, а не стиль
Правила
- Числа не копируются на страницы. Только ссылка на запись
- Обратные ссылки вычисляются, а не хранятся
- Противоречия показываются, а не сглаживаются
- Личные страницы не ссылаются на страницы другого профиля. Общие —
источники и справка по маркерам — доступны всем
- Каждое клиническое утверждение — с уровнем доказательности по
.claude/shared/evidence-base.md
- Страница-источник создаётся только с проверяемым URL: выдуманная ссылка
в wiki опаснее, чем в ответе, — она остаётся и цитируется потом
slug в имени файла и во frontmatter совпадают
- Критерий завершения:
lint отработал, противоречия показаны,
_log.md дополнен
⚕️ Информация носит справочный характер. Для принятия решений о лечении обратитесь к врачу.