| name | add-med-record |
| description | Добавляет медицинские записи в Notion. Используй когда пользователь просит добавить запись в карточку Богданы, Андрея или Вани по файлу анализов/обследований. |
Add Medical Record Skill
Добавляет медицинские записи (анализы, обследования, консультации) в карточки пациентов в Notion.
⛔ КРИТИЧЕСКИЕ ПРАВИЛА
ТОЛЬКО MCP инструменты для Notion:
mcp__notion__API-post-page— создание записиmcp__notion__API-patch-page— обновление свойствmcp__notion__API-patch-block-children— добавление контента
ЗАПРЕЩЕНО:
- Писать Python/JS/любые скрипты для работы с Notion
- Делать curl/HTTP запросы напрямую
- Использовать Bash для работы с Notion API
- Предлагать "альтернативные способы" если MCP "не работает"
- Говорить "я не могу использовать MCP" — МОЖЕШЬ и ДОЛЖЕН
При ошибке MCP:
Исправить параметры вызова, а НЕ искать обходные пути. Частые ошибки:
- Неверный формат
properties— см. примеры ниже database_idвместоparent.database_id- Неверный формат даты (нужен
YYYY-MM-DD)
Использование
добавь в карточку [Богданы|Андрея|Вани] запись по файлу {путь}
Если пациент НЕ указан, попробуй определить по переданному документу, иначе спросить через 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: Создать страницу с названием
mcp__notion__API-post-page
parent: {"database_id": "<database_id>"}
properties: {"Name": {"title": [{"text": {"content": "ОАК + СОЭ"}}]}}
Сохранить id из ответа!
Шаг 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-файл.
Структура тела документа:
- Заголовки секций — параграфы с эмодзи (📋, 🧪, 🩸, 💉, 🦠 и т.д.)
- Результаты — маркированные списки с показателями
- Формат показателя:
Название: значение единицы (норма 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) ✓"}}]
}
}
]
Пример для ПЦР/инфекций:
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 — ОБНАРУЖЕНО"}}]}}
]
Пример для бак посева с антибиотикочувствительностью:
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 (устойчив)"}}]}}
]
Пример для ОАК:
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 | Исправить параметры вызова, НЕ писать скрипты |