Выгружает всё, что о вас накопило московское здравоохранение, раскладывает в markdown с датами и нормами — и ищет незакрытые назначения, дефициты без лечения и показатели, которые никто не пересдавал.
▶ Открыть страницу проекта · Установка · Что находит · Приватность
Anamnesis — это агентские скиллы плюс CLI на Python. Без зависимостей, без ключей, без сборки.
Любой агент — одна команда. Ставит оба скилла туда, где их найдёт ваш агент:
npx skills add AutoPasha/anamnesisClaude Code · Codex · Cursor · OpenCode · Gemini CLI · Windsurf · Cline ·
Goose · Copilot и ещё десятки — skills.sh.
Только один скилл: npx skills add AutoPasha/anamnesis --skill medcard-audit.
Claude Code, как плагин — ставится и обновляется на месте:
/plugin marketplace add AutoPasha/anamnesis
/plugin install anamnesis@anamnesis
Просто CLI, без агента:
git clone https://github.com/AutoPasha/anamnesis && cd anamnesis
python -m anamnesis.cli --vault ./medcard login # ссылка временного доступа + код
python -m anamnesis.cli --vault ./medcard all # выгрузить, разложить, проверитьМедкарту целиком не видит никто. Терапевт смотрит свой приём, невролог — свой, лаборатория выдаёт результат одним листом. Ферритин ниже нормы в декабре и жалоба на слабость в августе живут в разных разделах и никогда не встречаются. Рекомендация «пересдать через три месяца» лежит внутри текста выписки, которую с тех пор никто не открывал.
Человек видит список PDF в личном кабинете. Агент, у которого те же документы разложены по датам, показателям и нормам, видит связи.
Часть проверок — детерминированные: считаются по числам и датам, без модели, и каждая ссылается на конкретный файл.
| Правило | Что ищет |
|---|---|
urgent_values |
значения, при которых лаборатория звонит врачу немедленно |
critical_values |
свежие показатели за порогами — вопрос к врачу, но не срочный |
unreadable_values |
показатели, к которым порог не применился: единица не распознана |
pregnancy_unsupported |
признаки беременности — часть порогов отключается, нормы другие |
worsening_trend |
три измерения подряд в одну сторону с выходом за норму |
abnormal_not_rechecked |
нашли отклонение — и полгода не проверяли |
deficiency_untreated |
дефицит подтверждён анализом, лечения в карте нет |
malabsorption_panel |
после операций на ЖКТ не контролируются B12, железо, витамин D, медь, цинк |
drug_risk |
сочетания препаратов: НПВС с антикоагулянтом, статин с фибратом и ещё четыре |
allergy_conflict |
назначен препарат, похожий на упомянутую в анамнезе непереносимость |
chronic_care_gap |
диагноз на наблюдении, а контрольных анализов за год в карте нет |
followup_gap |
диагноз на диспансерном наблюдении без профильного врача |
loose ends |
назначено или рекомендовано, а результата в карте нет |
Каждая находка ссылается на файл-источник, а отчёт начинается с раздела «Границы этой проверки»: что прочитано, сколько файлов без машинного текста, какие правила промолчали и что не проверяется в принципе. Пустой отчёт нельзя прочитать как «здоров» — так и написано.
Правила знают пол и возраст: границы нормы у мужчин и женщин разные, а на карте ребёнка числовые пороги не применяются вовсе — детские нормы возрастные, и взрослые на них врут.
Диагнозов в МКБ-10 больше пятнадцати тысяч, лекарств — десятки тысяч. Перечислять их в коде бессмысленно, поэтому справочники подключаются как данные:
python -m anamnesis.cli knowledge # что подключено
python -m anamnesis.cli knowledge --sync # скачать доступное| Справочник | Доступ | Что даёт |
|---|---|---|
| МКБ-10 (выгрузка ФРНСИ, 15 038 кодов) | скачивается сам | правило пишется для блока E10-E14 и накрывает весь диабет, а не перечисленные вручную коды |
| Номенклатура медуслуг, приказ 804н | нужен ключ ФРНСИ | «Определение витамина B12» и «Витамин В12 (цианокобаламин)» — одна услуга |
| Справочник препаратов ФРНСИ | нужен ключ ФРНСИ | торговое название сопоставляется с международным |
| LOINC | скачать вручную | международные коды тестов и совместимость с другими системами |
Ключ ФРНСИ выдаётся бесплатно после входа через Госуслуги, LOINC — после бесплатной регистрации. Без справочников всё работает, просто с меньшим охватом: правила падают обратно на встроенные списки кодов.
Находка из демо-хранилища на выдуманном пациенте. У каждой — правило, объяснение и ссылки на источники.
Остальное делает агент по методологии из скилла medcard-audit: сверяет
хронологию симптомов с официальной датой начала болезни, ищет
неинтерпретируемые результаты, которые в следующих документах цитируются как
отрицательные, сравнивает рекомендации федеральных центров с фактическими
назначениями, проверяет побочные эффекты текущей терапии по свежим анализам.
Всё, что здесь названо числом, считается на выдуманном пациенте: мужчина 61 года, три года наблюдения, гипертония, гипотиреоз и развивающийся железодефицит. Хранилище генерируется одной командой, поэтому цифры проверяются, а не берутся на веру:
python examples/make_bench.py| Документов выгружено | 198, ошибок — 0 |
| Файлов markdown на выходе | 210 |
| Показателей разобрано с нормами | 1173 |
| Событий в хронологии | 133 |
| Замечаний от проверок | 12 |
Инструмент проверялся и на настоящей медкарте за три года, но её цифры здесь не приводятся. Счётчик документов вместе с датами, диагнозами и названиями больниц сужает круг до одного человека — это чужие медицинские данные, и место им не в витрине.
Имена файлов начинаются с даты, поэтому папка сортируется хронологически, а внутри каждого — YAML-фронтматтер с датой, разделом, врачом и организацией. Агент грепает, читает кусками и цитирует по имени файла:
grep -i "ферритин" medcard/labs.csv # все значения показателя с нормами
grep -ril "омепразол" medcard/md/ # где упоминается препарат
ls medcard/md/inspections/ | grep -i неврологВ репозитории лежит готовое демо на выдуманном пациенте —
examples/demo: профиль, хронология, показатели и отчёт проверок.
python examples/make_demo.py # пересобрать демо с нуля
python tests/test_pipeline.py # тесты: конвертация, нормы, правила, обезличиваниеДемо заодно работает интеграционным тестом: входные данные подобраны так, чтобы сработали правила про ухудшающийся тренд, дефицит без лечения и непроверенную панель после операции.
| Скилл | О чём |
|---|---|
medcard-pull |
Выгрузка: где взять ссылку доступа, какие команды, какие грабли у этого API |
medcard-audit |
Разбор: восемь линий проверки, правила верификации находок, формат результата |
К medcard-audit приложены красные флаги
— что искать глазами поверх автоматики, и карта API ЕМИАС
— всё, что удалось выяснить о неофициальном API личного кабинета.
Методология — обычный markdown: её можно скормить любому агенту или прочитать самому, без всяких скиллов.
Инструмент не спрашивает пароль от mos.ru и не логинится за вас. Он работает по ссылке временного доступа, которую вы создаёте сами:
- Войти на mos.ru под своей учётной записью.
- Открыть услугу «Запрос, изменение и отмена доступа к электронной медицинской карте».
- Создать доступ: отметить разделы, срок и адрес электронной почты.
- Ссылка придёт на почту, код доступа — отдельно.
Всё остальное — идентификатор карты и список разрешённых разделов — лежит внутри токена доступа, спрашивать не нужно.
Медицинские данные не покидают компьютер: инструмент ходит только в API ЕМИАС и пишет файлы локально. Никакой телеметрии, никаких серверов проекта.
Но разбор картой занимается агент, а агент может работать в облаке. Если вы отдаёте папку облачной модели, туда уходят ваши диагнозы, анализы — и ФИО врачей из документов. Своими данными вы вправе распоряжаться, данными врачей — нет; медицинские сведения относятся к специальной категории персональных данных (152-ФЗ, ст. 10). Поэтому:
medcard/.tokens.json— ключи от карты. Уже в.gitignore; не коммитьте, не выкладывайте, не отправляйте в чат.- Показать карту кому-то или загрузить в облачную модель — сначала
anamnesis anonymize: команда вычищает ФИО, полис, СНИЛС, телефоны, почту и адреса из текстов и не копирует сканы, потому что на них персональные данные напечатаны прямо в изображении. - «Обезличенная медкарта» и «анонимная» — не одно и то же: по набору дат и диагнозов человека можно узнать. Решайте с этим знанием.
- Для облачного разбора используйте обезличенную копию, а не оригинал.
anamnesis anonymizeвычищает и ФИО врачей тоже.
- Работает с ЕМИАС (Москва) — единственный поддерживаемый источник. Архитектура готова к другим коннекторам, но их пока нет.
- API личного кабинета неофициальный: не документирован и может измениться
в любой момент. Карта эндпоинтов собрана обратной разработкой фронтенда и
лежит в
anamnesis/emias/catalog.py— если что-то отвалится, чинить там. - Гостевая сессия одна: открытый в браузере кабинет по той же ссылке выкидывает скрипт, и наоборот.
- Проверки — эвристики. Они дают кандидатов, которых нужно открыть и проверить, а не готовые выводы.
Инструмент читает документы и считает числа. Он не ставит диагнозов, не назначает лечение и не отменяет назначенное. Всё, что он производит, — это подготовленные данные и список вопросов, с которым идут к врачу.
Это и не медицинское изделие. Программа не предназначена для оказания медицинской помощи: она адресована человеку, который разбирается в собственной карте, и всё, что она находит, — повод для вопроса врачу, а не вывод.
Пустой отчёт не означает, что вы здоровы. Правила не анализируют симптомы, не видят данных из платных клиник, не читают сканы и ничего не знают про беременность, онкологический поиск и скрининги. Отчёт всегда начинается с раздела «Границы этой проверки» — прочитайте его первым.
Отдельный уровень важности urgent — для значений, при которых лаборатория
обязана немедленно позвонить врачу (гемоглобин ниже 70 г/л, калий вне 3,0–6,0,
тромбоциты ниже 20, нейтрофилы ниже 0,5 и подобные). Если такое нашлось в свежем
анализе — это повод связаться с врачом сегодня, а не дочитывать документацию.
При боли в груди, одышке, крови в стуле, внезапной слабости в половине тела —
103 или 112, независимо от того, что написано в отчёте.
Автопаша — AI-разработчик, который работает как удалённый сотрудник: ставите задачу, получаете результат, платите за неделю работы, а не за часы.
Этот репозиторий вырос из одной бытовой задачи — «выгрузи мою медкарту». Выгрузка заняла вечер, разбор — второй, а на третий стало ясно, что из этого получается инструмент, который пригодится не только автору.
Инструмент работает на вашем компьютере и никуда ничего не отправляет, поэтому авторы проекта не получают доступа к чьим-либо медицинским данным и не являются их оператором. Обработку выполняете вы сами и для себя — на такой случай 152-ФЗ делает исключение (ст. 1, ч. 2: обработка для личных и семейных нужд).
Ситуация меняется, если вы отдаёте карту кому-то ещё: облачной модели, врачу
через мессенджер, коллеге. Тогда наружу уходят и ФИО врачей из документов, а на
их передачу у вас полномочий нет. Для таких случаев есть anamnesis anonymize.
MIT — делайте что хотите, но без гарантий. См. LICENSE.
