Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Паттерны здоровья для ИИ-агентов (бета)
Что изменилось в записи пациента и что повторяется, вычисленное по фиксированным статистическим правилам: тенденции, отклонения от обычного уровня человека и рецидивы симптомов, каждое со своим периодом, доказательствами и ограничениями; не диагнозы.
Anpheros вычисляет, что изменилось в записи пациента и что повторяется, по фиксированным статистическим правилам, и передает каждое обнаружение вашему приложению или ИИ-агенту с его периодом, лежащими в основе ресурсами, версией метода и его ограничениями. Модели больше не нужно угадывать тенденцию по горстке чисел: она получает тенденцию, неопределенность вокруг нее и данные для цитирования.
Бета. В песочнице он работает с любыми учетными данными песочницы (sk_test_… ключи и подключения OAuth песочницы). На производственных записях он работает только под согласием пациента на OAuth, которое включает отдельное разрешение anpheros/patterns; ключи API для производственной среды получают 403.
Что определяется
| Тип | На какой вопрос отвечает | Метод |
|---|---|---|
trend |
Увеличивается или уменьшается значение измерения за определенный период? | Метод Тейля-Сена с тестом Манна-Уитни для одного значения в день (еженедельные медианы для плотных данных наблюдения), с коррекцией, когда соседние дни похожи |
trend (change_between_results) |
Как изменился лабораторный тест с двумя-пятью результатами? | Первый и последний результат, с последним относительно справочного диапазона отчета; описано, не тестируется |
trend (event_rate_change) |
Симптом регистрируется чаще или реже? | Дни с симптомом относительно дней, когда человек что-либо регистрировал, последние 30 дней против предыдущих 90, точный тест |
baseline_deviation |
Является ли последняя неделя необычной для этого человека? | Последние 7 дней против дней 8–60, тест Манна-Уитни или разница средних с коррекцией на автокорреляцию |
recurrence |
Возвращаются ли эпизоды симптомов через регулярные промежутки времени? | Интервалы между началом эпизодов, метод Монте-Карло с начальными условиями против эпизодов, размещенных случайным образом |
association (around_medication_start, sandbox) |
Симптом регистрируется чаще или реже с начала приема лекарства? | Дни с симптомом относительно активных дней в течение 30 дней с начала приема против до 90 дней до этого, точный тест |
association (after_short_sleep, sandbox) |
Симптом регистрируется чаще в дни после менее чем 6 часов сна? | Дни с измеренным сном и записью человека, короткие ночи против более длинных, точный тест Фишера |
convergence (recent_changes_together, sandbox) |
Изменилось ли несколько показателей за один и тот же недавний период? | Новый тест отсутствует: группирует как минимум два недавних изменения (необычная неделя, симптом чаще или реже), каждое из которых статистически подтверждено; указывает только на то, что они произошли вместе |
Все тесты одного запуска корректируются совместно (Бенджамини-Хохберг). Находка statistically_supported считается значимой только тогда, когда скорректированное q-значение ниже 0.05 и изменение составляет не менее порогового значения для данного измерения.
Чем это не является
- Не диагноз. Результаты описывают запись; они никогда не называют состояние и не рекомендуют изменение лечения. Каждый результат содержит
safety.not_a_diagnosis = trueиsafety.causal_claim = false. - Не причина. Изменение после нового лекарства или две одновременно записанные вещи не являются доказательством того, что одно вызвало другое. Ассоциации говорят только о том, что две вещи произошли примерно в одно время; каждая содержит
confounding_possibleиnot_causal, и только начало приема лекарств и сон проверяются на симптомы, а не каждая пара. Пока только с учетными данными песочницы. - Не модель ИИ и еще не прошла клиническую проверку. Каждое число поступает из фиксированных, версионированных статистических правил; ни одна модель ИИ не анализирует данные. Пороги для значимого изменения были установлены с помощью ИИ и еще не были рассмотрены клиницистом; каждый результат указывает на это в
review.thresholds_reviewed_by_clinician. Движок валидируется на синтетических пациентах с известными внедренными закономерностями: он находит то, что было внедрено, и молчит, когда ничего нет. Это не клиническая валидация.
Попробуйте
Каждый проект в песочнице содержит 30 синтетических пациентов, и у шести из них есть внедренный шаблон. Найдите одного с GET /fhir/R4/Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|<key>.
| Пациент | Что было внедрено | Что сообщает движок |
|---|---|---|
| p01 Andrei Popescu | Ежедневное измерение артериального давления дома, снижение примерно на 8/5 мм рт. ст. за шесть месяцев | trend.decreasing для систолического (8480-6) и диастолического (8462-4) |
| p06 Giulia Rossi | Головная боль каждые 7 дней, плюс-минус один день | recurrence.intervals для головной боли (R51) |
| p17 Ciarán Murphy | Усталость примерно в половине последних 30 дней, по сравнению с 1 днем из 12 ранее | frequency.increased для усталости (R53) |
| p19 Felix Gruber | Частота сердечных сокращений в покое с часов, примерно на 9 ударов в минуту выше обычного уровня за последнюю неделю | baseline.higher для частоты сердечных сокращений в покое (40443-4) |
| p20 Ivana Horvat | Частота сердечных сокращений в покое с часов, снижение примерно на 16 ударов в минуту за шесть месяцев | trend.decreasing для частоты сердечных сокращений в покое (40443-4) |
| p30 Jan Kowalczyk | Плотные данные с часов и домашние данные без внедренных шаблонов | нет поддерживаемых результатов: движок молчит |
Проекты, созданные до 16 октября 2026 года, получают эти шаблоны после сброса своих синтетических пациентов из панели управления; сброс заменяет любые внесенные в них изменения.
curl -s https://platform.anpheros.com/v1/patients/$PATIENT/patterns?window_days=180 \
-H "Authorization: Bearer $ANPHEROS_KEY"
С помощью TypeScript SDK (@anpheros/sdk 0.2.0 или новее):
const run = await anpheros.patterns.run(patientId, { window_days: 180, min_strength: 'moderate' });
for (const f of run.findings) console.log(f.summary_text, f.strength, f.limitations.map(l => l.code));
С помощью сервера MCP попросите вашего агента: "Что изменилось в записи этого пациента за последние шесть месяцев?": он вызовет get_health_patterns и может продолжить с get_pattern_evidence, get_series и compare_periods. POST /v1/context добавляет раздел patterns для вопросов об изменениях и взаимосвязях, или когда вы запрашиваете patterns потребность.
Конечные точки
| Конечная точка | Что возвращает |
|---|---|
GET /v1/patients/{id}/patterns |
результат выполнения: находки, что не удалось вычислить и почему, какие разрешения были исключены; фильтры window_days (30–730), end, types, min_strength |
GET /v1/patients/{id}/patterns/{finding_id} |
одну находку, пересчитанную для того же окна |
GET /v1/patients/{id}/patterns/{finding_id}/evidence |
каждый вспомогательный ресурс, с разбивкой по страницам |
GET /v1/patients/{id}/series?code=… |
одно измерение в виде одного значения в день, с указанием покрытия, пропусков и изменений источника |
POST /v1/patients/{id}/patterns/compare |
одно измерение за два выбранных вами периода |
Чтение результата
summary_text: одно простое предложение, которое безопасно показывать или цитировать.strength:strong,moderate,weakилиnot_tested. Слабые и непроверенные результаты являются описаниями, а не доказательствами.window,comparison_window: проанализированные периоды.evidence(до 20, распределенных по периоду) иevidence_total: ресурсы, лежащие в основе результата, с указанием версии, даты, значения и типа автора.limitations: закодированные, с текстом. Отображайте их вместе с результатом.review: было ли рассмотрение пороговых значений клиницистом (на данный моментfalse) и откуда они взялись.method,engine_version,input_fingerprint: одни и те же данные, конфигурация и версии дают одинаковый результат и одинаковый идентификатор.
Важные правила
- Сначала согласие. В рамках OAuth-разрешения движок читает только то, что разрешено этим разрешением; то, что он не смог прочитать, перечислено в
omitted, без содержимого. - Идентификаторы. Пациенты отображаются с парным идентификатором вашего проекта; идентификаторы находок выводятся для каждого проекта. Когда запись изменяется, находка получает новый идентификатор, а старый возвращает 404.
- Время. Когда время чтения имеет явное смещение (
2026-10-16T00:30:00+03:00), оно учитывается в рамках дня человека; время в UTC (Z) или без смещения остается в рамках дня UTC. Каждая находка указывает, какое именно, вtime_basis(record_offsets,partly_localилиlocal_time_unknown). Локальные дни используются для записей в песочнице и на продакшене; шаблоны времени суток пока не вычисляются. - Исключено. Значения, записанные ИИ, результаты с отметкой "введена с ошибкой" и даты, известные только до месяца, не используются, но учитываются.
- Лимиты. 30 запусков шаблонов в минуту на учетные данные, в дополнение к обычным 600 запросам в минуту.
Часто задаваемые вопросы
Использует ли он языковую модель?
Нет. Каждое число получено из фиксированных, версионированных статистических методов. Любая модель, размещенная или локальная, может читать результаты.
Почему явное изменение в моих данных помечено как слабое?
Потому что доказательства не выдерживают коррекции для всех тестов в прогоне, серия короткая или зашумленная, или изменение ниже порога для данного измерения. Результат по-прежнему описывает то, что показывает запись.
Работает ли это с производственными записями?
Да, с 16 октября 2026 года, но только при наличии согласия пациента по OAuth, которое включает отдельное разрешение anpheros/patterns, отображаемое на экране согласия отдельной строкой. Запросите область действия рядом с вашими областями действия patient/…; предоставление без нее, а также любой производственный API-ключ, приведет к ошибке 403.
Связанные материалы
- Сервер FHIR MCP для ИИ-агентов
- Приложения LLM и медицинские данные
- ИИ-агенты и медицинские данные
- API для здравоохранения с согласия пациента
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card