Добавляет медицинские записи в Notion. Используй когда пользователь просит добавить запись в карточку Богданы, Андрея или Вани по файлу анализов/обследований.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add majiayu000/claude-skill-registry --skill add-med-record --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Add Med Record?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-add-med-record-claude-skill-registry)More formats (shields.io, HTML) on the badges page.
---
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 | **Исправить параметры вызова**, НЕ писать скрипты |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!