# Шаблоны состояния здоровья для ИИ-агентов (бета)

> Что изменилось в записи пациента и что повторяется, вычисленное по фиксированным статистическим правилам: тенденции, отклонения от обычного уровня человека и рецидивы симптомов, каждый со своим периодом, доказательствами и ограничениями; не диагнозы.

Source: https://developers.anpheros.com/ru/guides/health-patterns

**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 года, получают эти шаблоны после сброса своих синтетических пациентов из панели управления; сброс заменяет любые внесенные в них изменения.

```bash
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 или новее):

```ts
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 для ИИ-агентов](https://developers.anpheros.com/ru/guides/mcp)
- [Приложения LLM и медицинские данные](https://developers.anpheros.com/ru/guides/llm-healthcare-data)
- [ИИ-агенты и медицинские данные](https://developers.anpheros.com/ru/guides/ai-agents-medical-data)
- [API для здравоохранения с согласия пациента](https://developers.anpheros.com/ru/guides/healthcare-api-patient-consent)
