add-med-record

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

181 stars

Best use case

add-med-record is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using add-med-record should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/add-med-record/SKILL.md --create-dirs "https://raw.githubusercontent.com/majiayu000/claude-skill-registry/main/skills/data/add-med-record/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/add-med-record/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How add-med-record Compares

Feature / Agentadd-med-recordStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 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 | **Исправить параметры вызова**, НЕ писать скрипты |

Related Skills

Architecture Decision Records (ADR)

181
from majiayu000/claude-skill-registry

Documenting significant architectural decisions with context, consequences, and rationale for future reference.

ActiveRecord Query Patterns

181
from majiayu000/claude-skill-registry

Complete guide to ActiveRecord query optimization, associations, scopes, and PostgreSQL-specific patterns. Use this skill when writing database queries, designing model associations, creating migrations, optimizing query performance, or debugging N+1 queries and grouping errors.

active-record-db

181
from majiayu000/claude-skill-registry

This skill should be used when the user asks about Active Record models, database migrations, queries, associations (belongs_to, has_many, has_one, has_and_belongs_to_many), validations, callbacks, scopes, database schema design, SQL optimization, N+1 queries, eager loading, joins, or database-specific features (PostgreSQL, MySQL, SQLite). Also use when discussing ORM patterns, data modeling, or database best practices. Examples:

RecordsManager

181
from majiayu000/claude-skill-registry

Expert record keeping system with paperless-ngx integration, country-specific taxonomies, and intelligent document management. USE WHEN upload document, store file, organize records, find document, search papers, tag documents, delete records, retention check, archive documents, add entity, create trust, validate trust, workflow create, FTE check, connection test, system status, check status.

thor-skills

159
from majiayu000/claude-skill-registry

An entry point and router for AI agents to manage various THOR-related cybersecurity tasks, including running scans, analyzing logs, troubleshooting, and maintenance.

SecurityClaude

modal-deployment

159
from majiayu000/claude-skill-registry

Run Python code in the cloud with serverless containers, GPUs, and autoscaling using Modal. This skill enables agents to generate code for deploying ML models, running batch jobs, serving APIs, and scaling compute-intensive workloads.

DevOps & Infrastructure

chrome-debug

159
from majiayu000/claude-skill-registry

This skill empowers AI agents to debug web applications and inspect browser behavior using the Chrome DevTools Protocol (CDP), offering both collaborative (headful) and automated (headless) modes.

Coding & DevelopmentClaude

lets-go-rss

159
from majiayu000/claude-skill-registry

A lightweight, full-platform RSS subscription manager that aggregates content from YouTube, Vimeo, Behance, Twitter/X, and Chinese platforms like Bilibili, Weibo, and Douyin, featuring deduplication and AI smart classification.

Content & Documentation

vly-money

159
from majiayu000/claude-skill-registry

Generate crypto payment links for supported tokens and networks, manage access to X402 payment-protected content, and provide direct access to the vly.money wallet interface.

Fintech & CryptoClaude

astro

159
from majiayu000/claude-skill-registry

This skill provides essential Astro framework patterns, focusing on server-side rendering (SSR), static site generation (SSG), middleware, and TypeScript best practices. It helps AI agents implement secure authentication, manage API routes, and debug rendering behaviors within Astro projects.

Coding & Development

ontopo

159
from majiayu000/claude-skill-registry

An AI agent skill to search for Israeli restaurants, check table availability, view menus, and retrieve booking links via the Ontopo platform, acting as an unofficial interface to its data.

General Utilities

ux

159
from majiayu000/claude-skill-registry

This AI agent skill provides comprehensive guidance for creating professional and insightful User Experience (UX) designs, covering user research, information architecture, interaction design, visual guidance, and usability evaluation. It aims to produce actionable, user-centered solutions that avoid generic AI aesthetics.

UX Design & StrategyClaude