# Шаблони стану здоров'я для ШІ-агентів (бета)

> Що змінилося в історії хвороби пацієнта та що повторюється, обчислено за фіксованими статистичними правилами: тенденції, відхилення від звичайного рівня особи та повторення симптомів, кожне зі своїм періодом, доказами та обмеженнями; не діагнози.

Source: https://developers.anpheros.com/uk/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` потребу.

## Кінцеві точки (Endpoints)

| Кінцева точка (Endpoint) | Що повертає |
|---|---|
| `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`). Місцеві дні використовуються в записах sandbox та production; шаблони часу доби ще не обчислюються.
- **Виключено.** Значення, написані ШІ, результати, позначені як введені з помилкою, та дати, відомі лише до місяця, не використовуються і враховуються.
- **Обмеження.** 30 запусків шаблонів на хвилину на обліковий запис, на додаток до звичайних 600 запитів на хвилину.

## Часті запитання

### Чи використовується мовна модель?
Ні. Кожне число походить із фіксованих, версіонованих статистичних методів. Будь-яка модель, розміщена або локальна, може читати результати.

### Чому чітка зміна в моїх даних позначена як слабка?
Оскільки докази не витримують корекції для всіх тестів у запуску, серія коротка або шумна, або зміна нижче порогу для цього вимірювання. Знайдений результат все ще описує те, що показує запис.

### Чи працює це на виробничих записах?
Так, з 16 жовтня 2026 року, але лише за згодою пацієнта OAuth, яка включає окремий дозвіл `anpheros/patterns`, який екран згоди показує окремим рядком. Запитуйте область дії поруч із вашими областями дії `patient/…`; надання без неї та будь-який виробничий ключ API призведе до помилки 403.

## Пов'язане

- [Сервер FHIR MCP для ШІ-агентів](https://developers.anpheros.com/uk/guides/mcp)
- [LLM-додатки та медичні дані](https://developers.anpheros.com/uk/guides/llm-healthcare-data)
- [ШІ-агенти та медичні дані](https://developers.anpheros.com/uk/guides/ai-agents-medical-data)
- [API охорони здоров'я зі згодою пацієнта](https://developers.anpheros.com/uk/guides/healthcare-api-patient-consent)
