Wiki — связный слой медкарты

SkillDocs & knowledge

Wiki layer for the medical record: entity pages with links, contradiction, orphan and broken-link detection, graph. Triggers: «wiki», «вики», «граф связей», «собери вики», «проверь вики», «противоречия», «что не связано»

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Wiki — связный слой медкарты skill

What this skill tells your AI

The instructions your AI receives, as published by alxyrgin/health-os in .claude/skills/wiki/SKILL.md and read by ahel’s review.

Профиль. До чтения и записи определи активный профиль по .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/ активного профиля и создаёт стартовый набор страниц:

  1. Из hypotheses.json — страница на каждую гипотезу, со статусом и ссылками на анализы из evidence_for / evidence_against
  2. Из profile.jsonchronic_conditions — страница на состояние
  3. Из current_complaints — страница на симптом
  4. Из doctors/contacts.json и индекса визитов — страница на врача
  5. Из consilium/ — synthesis-страница на отчёт
  6. Из индекса анализов — не создаёт страниц. Анализ сам по себе не сущность, он источник. Страница появляется у того, что анализ объясняет

Затем — проход связывания: найти упоминания между страницами и проставить [[ссылки]]. И lint.

Сказать, сколько создано и что осталось несвязанным.

sync — после новых данных

Вызывается из /inbox, /doctor, /labs и /consilium после записи, либо вручную. Не создаёт всё заново, а встраивает новое в существующее:

  1. Прочитать, что появилось с последней синхронизации
  2. Определить, каких сущностей оно касается
  3. Обновить затронутые страницы: течение, статус, sources[], updated
  4. Завести страницы для того, что упомянуто, но своей страницы не имеет
  5. Отметить, если новое противоречит написанному ранее — не переписывать молча, а показать оба утверждения
  6. Записать строку в 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 дополнен

⚕️ Информация носит справочный характер. Для принятия решений о лечении обратитесь к врачу.

Signals

GitHub stars
38
Forks
6
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
wiki-alxyrgin
Source
github.com/alxyrgin/health-os