---
name: add-med-record
description: Добавляет медицинские записи в Notion. Используй когда пользователь просит добавить запись в карточку Богданы, Андрея или Вани по файлу анализов/обследований.
---

# Add Medical Record Skill

Добавляет медицинские записи (анализы, обследования, консультации) в карточки пациентов в Notion.

## ⛔ КРИТИЧЕСКИЕ ПРАВИЛА

### ТОЛЬКО MCP инструменты для Notion (кроме workaround):
- ~~`mcp__notion__API-post-page`~~ — **НЕ РАБОТАЕТ** (MCP bug, см. workaround)
- **ВМЕСТО:** `scripts/create-notion-page.sh` — создание страницы через curl
- `mcp__notion__API-patch-page` — обновление свойств ✅
- `mcp__notion__API-patch-block-children` — добавление контента ✅

### ЗАПРЕЩЕНО:
- Писать скрипты для Notion **кроме утвержденного workaround**
- Делать curl запросы **кроме workaround скрипта**
- Искать другие обходные пути если скрипт не работает

### При ошибке MCP:
Исправить параметры вызова, а НЕ искать обходные пути. Частые ошибки:
- Неверный формат `properties` — см. примеры ниже
- `database_id` вместо `parent.database_id`
- Неверный формат даты (нужен `YYYY-MM-DD`)

---

## 🛠️ Технические ограничения

### MCP Bug Workaround

**Проблема:** Инструмент `mcp__notion__API-post-page` не работает из-за бага в Claude Code (double-stringification JSON параметров).

**Решение:** Используется bash-скрипт `scripts/create-notion-page.sh` для создания страниц через прямой API запрос.

**Workflow:**
1. ✅ Bash script → создает страницу → возвращает `page_id`
2. ✅ `mcp__notion__API-patch-page` → обновляет свойства
3. ✅ `mcp__notion__API-patch-block-children` → добавляет контент

Когда MCP bug будет исправлен, можно вернуться к `mcp__notion__API-post-page`.

---

## Использование

```
добавь в карточку [Богданы|Андрея|Вани] запись по файлу {путь}
```

Если пациент НЕ указан, попробуй определить по переданному документу, иначе спросить через `AskUserQuestion`.
Если передано несколько файлов, то сперва нужно определить какие из них могут быть сгруппированы в один документ.

---

## Базы данных

**⚠️ Данные берутся из конфигурационного файла:**
- Файл: `config/settings.yaml`
- Путь: `skills.add-med-record.patients`
- Каждый пациент содержит: `name` и `database_id`

Если файл не найден — выдать ошибку:
```
⚠️ Файл settings.yaml не найден!
Скопируй settings.yaml.example в settings.yaml и заполни данные.
```

### Схема базы (одинаковая для всех):
- `Name` (title) — название записи
- `Date` (date) — дата анализа
- `Type` (multi_select) — тип(ы) анализа
- `Place` (multi_select) — место проведения
- `Doctor` (multi_select) — фамилия врач, если указан
- `Note` (rich_text) — заметки

---

## Workflow

### 1. Загрузить конфигурацию пациентов
- Прочитать файл `settings.yaml` через Read tool
- Извлечь раздел `skills.add-med-record.patients`
- Сохранить список пациентов (name → database_id) для дальнейшего использования
- Если файл не найден или раздел пуст — вывести ошибку и остановить выполнение

### 2. Определить пациента
Из запроса, документа или через `AskUserQuestion`.
- Сопоставить имя пациента с записями из `settings.yaml`
- Получить соответствующий `database_id`

### 3. Прочитать и проанализировать файл
Использовать `Read` tool. Извлечь:
- **Дата** (формат в файле может быть DD.MM.YYYY → конвертировать в YYYY-MM-DD)
- **Место** (по логотипу/заголовку: HELIX, SYNLAB, ЛОДЭ и т.д.)
- **Тип(ы) анализа** (ОАК, БАК, УЗИ и т.д.)
- **Показатели вне нормы** (обычно выделены)
- **ФИО пациента** (для проверки)
- **Врач** только фамилия (если указан в файле)

### 4. Сформировать название записи
Формат: `{Типы анализов}

Примеры:
- `ОАК + СОЭ`
- `УЗИ щитовидной железы`
- `Кардиолог`

### 5. Создать запись в Notion

#### Шаг 5.1: Создать страницу с названием

**⚠️ Используем bash workaround вместо сломанного MCP tool**

```bash
# Извлечь NOTION_TOKEN из .mcp.json
NOTION_TOKEN=$(python3 -c "import json; print(json.load(open('.mcp.json'))['mcpServers']['notion']['env']['NOTION_TOKEN'])")

# Создать страницу
PAGE_ID=$(NOTION_TOKEN="$NOTION_TOKEN" .claude/skills/add-med-record/scripts/create-notion-page.sh "$DATABASE_ID" "$PAGE_TITLE")

# Проверить успешность
if [ -z "$PAGE_ID" ]; then
    echo "❌ Ошибка создания страницы"
    exit 1
fi

echo "✅ Создана страница: $PAGE_ID"
```

**Где:**
- `$DATABASE_ID` — из `settings.yaml` для пациента
- `$PAGE_TITLE` — название записи (например: "ОАК + СОЭ")

**Сохранить `$PAGE_ID` для Шагов 5.2 и 5.3!**

#### Шаг 5.2: Обновить свойства страницы

```
mcp__notion__API-patch-page

page_id: "<id из шага 5.1>"
properties: {
  "Date": {"date": {"start": "2024-11-19"}},
  "Type": {"multi_select": [{"name": "ОАК"}, {"name": "СОЭ"}]},
  "Place": {"multi_select": [{"name": "HELIX"}]},
  "Note": {"rich_text": [{"text": {"content": "Эритроциты ⬆️ 5.2 (норма до 4.7)"}}]}
}
```

#### Шаг 5.3: Добавить детальный контент в тело документа (ОБЯЗАТЕЛЬНО)

**Важно:** Поле `Note` содержит краткую сводку для табличного вида (1-2 строки). Тело документа содержит полную расшифровку анализа — это позволяет ознакомиться с результатами не открывая PDF-файл.

**Структура тела документа:**
1. **Заголовки секций** — параграфы с эмодзи (📋, 🧪, 🩸, 💉, 🦠 и т.д.)
2. **Результаты** — маркированные списки с показателями
3. **Формат показателя:** `Название: значение единицы (норма X-Y)` + флаг
   - ✓ — в норме (можно опустить для краткости)
   - ⚠️ или ⬆️ — повышено
   - ⬇️ — понижено

**Пример для биохимии:**
```
mcp__notion__API-patch-block-children

block_id: "<id из шага 5.1>"
children: [
  {
    "type": "paragraph",
    "paragraph": {
      "rich_text": [{"type": "text", "text": {"content": "🧪 Биохимия крови"}}]
    }
  },
  {
    "type": "bulleted_list_item",
    "bulleted_list_item": {
      "rich_text": [{"type": "text", "text": {"content": "АЛТ: 15.9 Ед/л (норма 1-41) ✓"}}]
    }
  },
  {
    "type": "bulleted_list_item",
    "bulleted_list_item": {
      "rich_text": [{"type": "text", "text": {"content": "⚠️ Глюкоза: 6.23 ммоль/л (норма 4.1-5.9) — повышена"}}]
    }
  },
  {
    "type": "paragraph",
    "paragraph": {
      "rich_text": [{"type": "text", "text": {"content": "🩸 Липидограмма"}}]
    }
  },
  {
    "type": "bulleted_list_item",
    "bulleted_list_item": {
      "rich_text": [{"type": "text", "text": {"content": "Холестерин общий: 4.8 ммоль/л (норма <5.2) ✓"}}]
    }
  }
]
```

**Пример для ПЦР/инфекций:**
```json
children: [
  {"type": "paragraph", "paragraph": {"rich_text": [{"type": "text", "text": {"content": "🦠 ПЦР-исследование (урогенитальный соскоб)"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "Chlamydia trachomatis — не обнаружено ✓"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "Mycoplasma genitalium — не обнаружено ✓"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "⚠️ Ureaplasma urealyticum — ОБНАРУЖЕНО"}}]}}
]
```

**Пример для бак посева с антибиотикочувствительностью:**
```json
children: [
  {"type": "paragraph", "paragraph": {"rich_text": [{"type": "text", "text": {"content": "🧫 Посев секрета простаты"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "Выделен: Enterococcus faecalis 10^5 КОЕ/мл"}}]}},
  {"type": "paragraph", "paragraph": {"rich_text": [{"type": "text", "text": {"content": "💊 Антибиотикочувствительность:"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "Ампициллин — S (чувствителен)"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "Ципрофлоксацин — R (устойчив)"}}]}}
]
```

**Пример для ОАК:**
```json
children: [
  {"type": "paragraph", "paragraph": {"rich_text": [{"type": "text", "text": {"content": "🩸 Общий анализ крови"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "Гемоглобин: 152 г/л (норма 130-160) ✓"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "Эритроциты: 5.1 ×10¹²/л (норма 4.0-5.5) ✓"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "⬇️ Лейкоциты: 3.8 ×10⁹/л (норма 4.0-9.0) — снижены"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "Тромбоциты: 245 ×10⁹/л (норма 180-320) ✓"}}]}},
  {"type": "bulleted_list_item", "bulleted_list_item": {"rich_text": [{"type": "text", "text": {"content": "СОЭ: 8 мм/ч (норма 2-15) ✓"}}]}}
]
```

### 6. Вывести результат

```
✅ Запись добавлена в карточку [Имя]!

📋 Название: ОАК + СОЭ (19.11.2024)
📅 Дата: 19.11.2024
🏥 Место: HELIX
📊 Типы: ОАК, СОЭ

🔗 Ссылка: [URL из ответа API]

📎 Не забудь прикрепить файлы вручную! (вывести список файлов для данного документа)
```

---

## Справочники
Если значение не найдено в справочнике, то оно может быть добавлено. Эти списки не фиксированы.

### Типы анализов
**Кровь:** ОАК, БАК, СОЭ, СРБ, РевмаФактор, АСЛ-О, Anti-HCV, ТТГ, Т4св, Эстрадиол, Пролактин, Тестостерон, ДГЭА-С, Гликированный гемоглобин, АЛТ, АСТ, холестерин, глюкоза

**Моча:** ОАМ, ОФМ

**Инструментальные:** УЗИ, ЭКГ, Рентген, Флюорография, ТРУЗИ

**Специалисты:** Кардиолог, Эндокринолог, Офтальмолог, ЛОР, Невролог, Уролог, Стоматолог, Дерматолог, Аллерголог, Хирург, Травматолог

### Места
HELIX, SYNLAB, ЛОДЭ, INVITRO, Доктор ТУТ, Любимый доктор, Поликлиника, medicplus, Кравира, 2 ГКДБ, 4 ДГКБ, 5 ГДП, 6 ГКБ

---

## Обработка ошибок

| Ошибка | Решение |
|--------|---------|
| Файл не найден | Сообщить пользователю, попросить проверить путь |
| Не читается PDF | Попросить проверить файл или дать данные вручную |
| Не определены данные | Спросить у пользователя недостающее |
| Ошибка MCP | **Исправить параметры вызова**, НЕ писать скрипты |
