# Wzorce zdrowotne dla agentów AI (beta)

> Co się zmieniło w dokumentacji pacjenta i co się powtarza, obliczone według ustalonych reguł statystycznych: trendy, odchylenia od zwykłego poziomu danej osoby i nawroty objawów, każdy ze swoim okresem, dowodami i ograniczeniami; nie diagnozy.

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

**Anpheros oblicza, co się zmieniło w dokumentacji pacjenta i co się powtarza, według ustalonych reguł statystycznych, i przekazuje każde odkrycie do Twojej aplikacji lub agenta AI wraz z jego okresem, zasobami, na których się opiera, wersją metody i jej ograniczeniami.** Model nie musi już zgadywać trendu na podstawie garści liczb: otrzymuje trend, niepewność wokół niego i dane do cytowania.

Beta. W piaskownicy działa z dowolnymi poświadczeniami piaskownicy (klucze `sk_test_…` i połączenia OAuth piaskownicy). W przypadku rekordów produkcyjnych działa tylko w ramach zgody pacjenta na OAuth, która obejmuje oddzielne uprawnienie `anpheros/patterns`; klucze API produkcyjne zwracają 403.

## Co znajduje

| Typ | Na jakie pytanie odpowiada | Metoda |
|---|---|---|
| `trend` | Czy pomiar rośnie czy maleje w danym okresie? | Nachylenie Theila–Sena z testem Manna–Kendalla dla jednej wartości dziennie (tygodniowe mediany dla gęstych danych obserwacji), skorygowane, gdy sąsiednie dni są podobne |
| `trend` (`change_between_results`) | Jak zmienił się wynik badania laboratoryjnego z dwoma do pięciu rezultatami? | Pierwszy i ostatni wynik, z najnowszym w odniesieniu do zakresu referencyjnego raportu; opisane, nie testowane |
| `trend` (`event_rate_change`) | Czy objaw jest rejestrowany częściej czy rzadziej? | Dni z objawami w stosunku do dni, w których osoba coś zarejestrowała, ostatnie 30 dni w porównaniu do 90 dni wcześniej, dokładny test |
| `baseline_deviation` | Czy ostatni tydzień jest nietypowy dla tej osoby? | Ostatnie 7 dni w porównaniu do dni 8–60, test Manna–Whitneya lub różnica średnich skorygowana o autokorelację |
| `recurrence` | Czy epizody objawów powracają w regularnych odstępach czasu? | Odstępy między początkami epizodów, symulacja Monte Carlo z losowo rozmieszczonymi epizodami |
| `association` (`around_medication_start`, sandbox) | Czy objaw jest rejestrowany częściej czy rzadziej od początku przyjmowania leku? | Dni z objawami w stosunku do dni aktywnych w ciągu 30 dni od początku przyjmowania leku w porównaniu do maksymalnie 90 dni wcześniej, dokładny test |
| `association` (`after_short_sleep`, sandbox) | Czy objaw jest częściej rejestrowany w dniach po mniej niż 6 godzinach snu? | Dni ze zmierzonym snem i wpisem osoby, krótkie noce w porównaniu do dłuższych, dokładny test Fishera |
| `convergence` (`recent_changes_together`, sandbox) | Czy kilka rzeczy zmieniło się w tym samym niedawnym okresie? | Brak nowego testu: grupuje co najmniej dwie niedawne zmiany (nietypowy tydzień, objaw częściej lub rzadziej), które są statystycznie potwierdzone; mówi tylko, że wystąpiły razem |

Wszystkie testy jednego przebiegu są korygowane razem (Benjamini–Hochberg). Wynik jest `statistically_supported` tylko wtedy, gdy skorygowana wartość q jest poniżej 0.05 **i** zmiana jest co najmniej na poziomie progu dla danego pomiaru.

## Czym nie jest

- **Nie jest diagnozą.** Wyniki opisują rekord; nigdy nie nazywają schorzenia ani nie zalecają zmiany leczenia. Każdy wynik zawiera `safety.not_a_diagnosis = true` i `safety.causal_claim = false`.
- **Nie jest przyczyną.** Zmiana po nowym leku lub dwie zarejestrowane razem rzeczy nie są dowodem na to, że jedno spowodowało drugie. Powiązania mówią tylko o tym, że dwie rzeczy wydarzyły się mniej więcej w tym samym czasie; każde z nich zawiera `confounding_possible` i `not_causal`, a tylko rozpoczęcie przyjmowania leków i sen są testowane w odniesieniu do objawów, a nie każdej pary. Obecnie tylko z poświadczeniami piaskownicy.
- **Nie jest modelem AI i nie został jeszcze poddany przeglądowi klinicznemu.** Każda liczba pochodzi ze stałych, wersjonowanych reguł statystycznych; żaden model AI nie analizuje danych. Progi dla znaczącej zmiany zostały ustalone przy pomocy AI i nie zostały jeszcze przejrzane przez lekarza; każdy wynik mówi o tym w `review.thresholds_reviewed_by_clinician`. Silnik jest walidowany na syntetycznych pacjentach ze znanymi, zasianymi wzorcami: znajduje to, co zostało zasiane, i milczy, gdy nic nie zostało zasiane. To nie jest walidacja kliniczna.

## Wypróbuj

Każdy projekt sandbox zawiera 30 syntetycznych pacjentów, a sześciu z nich ma zasiane wzorce. Znajdź jednego z `GET /fhir/R4/Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|<key>`.

| Pacjent | Co zostało zasiane | Co raportuje silnik |
|---|---|---|
| p01 Andrei Popescu | Codzienne domowe ciśnienie krwi, spadające o około 8/5 mmHg w ciągu sześciu miesięcy | `trend.decreasing` dla skurczowego (8480-6) i rozkurczowego (8462-4) |
| p06 Giulia Rossi | Ból głowy co 7 dni, z tolerancją jednego dnia | `recurrence.intervals` dla bólu głowy (R51) |
| p17 Ciarán Murphy | Zmęczenie w około połowie ostatnich 30 dni, w porównaniu do 1 dnia na 12 wcześniej | `frequency.increased` dla zmęczenia (R53) |
| p19 Felix Gruber | Spoczynkowe tętno z zegarka, około 9 uderzeń na minutę powyżej jego zwykłego poziomu w ostatnim tygodniu | `baseline.higher` dla spoczynkowego tętna (40443-4) |
| p20 Ivana Horvat | Spoczynkowe tętno z zegarka, stabilizujące się o około 16 uderzeń na minutę w ciągu sześciu miesięcy | `trend.decreasing` dla spoczynkowego tętna (40443-4) |
| p30 Jan Kowalczyk | Gęste dane z zegarka i domu bez niczego zasianego | brak obsługiwanego znaleziska: silnik pozostaje cichy |

Projekty utworzone przed 16 października 2026 r. otrzymają te wzorce po zresetowaniu swoich syntetycznych pacjentów z poziomu pulpitu; reset zastępuje wszelkie wprowadzone w nich zmiany.

```bash
curl -s https://platform.anpheros.com/v1/patients/$PATIENT/patterns?window_days=180 \
  -H "Authorization: Bearer $ANPHEROS_KEY"
```

Z TypeScript SDK (`@anpheros/sdk` 0.2.0 lub nowszy):

```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));
```

Z serwerem MCP, zapytaj swojego agenta: "Co zmieniło się w rekordzie tego pacjenta w ciągu ostatnich sześciu miesięcy?": wywoła on `get_health_patterns` i może kontynuować z `get_pattern_evidence`, `get_series` i `compare_periods`. `POST /v1/context` dodaje sekcję `patterns` dla pytań o zmiany i relacje, lub gdy poprosisz o `patterns` potrzebę.

## Punkty końcowe (Endpoints)

| Punkt końcowy (Endpoint) | Co zwraca |
|---|---|
| `GET /v1/patients/{id}/patterns` | wynik wykonania: wyniki, co nie mogło zostać obliczone i dlaczego, jakie zgody zostały pominięte; filtry `window_days` (30–730), `end`, `types`, `min_strength` |
| `GET /v1/patients/{id}/patterns/{finding_id}` | pojedynczy wynik, przeliczony dla tego samego okna czasowego |
| `GET /v1/patients/{id}/patterns/{finding_id}/evidence` | każdy zasób pomocniczy, stronicowany |
| `GET /v1/patients/{id}/series?code=…` | pojedynczy pomiar jako jedna wartość dziennie, z pokryciem, lukami i zmianami źródła |
| `POST /v1/patients/{id}/patterns/compare` | pojedynczy pomiar w dwóch wybranych przez Ciebie okresach |

## Odczytywanie wyniku

- `summary_text`: jedno proste zdanie, bezpieczne do wyświetlenia lub cytowania.
- `strength`: `strong`, `moderate`, `weak` lub `not_tested`. Słabe i nieprzetestowane wyniki to opisy, a nie dowody.
- `window`, `comparison_window`: analizowane okresy.
- `evidence` (do 20, rozłożone w okresie) i `evidence_total`: zasoby stojące za wynikiem, z wersją, datą, wartością i typem autora.
- `limitations`: zakodowane, z tekstem. Wyświetl je wraz z wynikiem.
- `review`: czy lekarz przejrzał progi (`false` na razie) i skąd pochodzą.
- `method`, `engine_version`, `input_fingerprint`: te same dane, konfiguracja i wersje dają ten sam wynik i ten sam identyfikator.

## Zasady, o których warto wiedzieć

- **Najpierw zgoda.** W ramach przyznanej licencji OAuth silnik odczytuje tylko to, na co zezwala licencja; to, czego nie mógł odczytać, jest wymienione w `omitted`, bez zawartości.
- **Identyfikatory.** Pacjenci pojawiają się z identyfikatorem parzystym Twojego projektu; znalezione identyfikatory są generowane dla każdego projektu. Gdy rekord ulegnie zmianie, znalezisko otrzymuje nowy identyfikator, a stary zwraca 404.
- **Czas.** Gdy czas odczytu zawiera jawne przesunięcie (`2026-10-16T00:30:00+03:00`), jest on liczony według dnia osoby; czasy w UTC (`Z`) lub bez przesunięcia pozostają w dniu UTC. Każde znalezisko określa, który dzień w `time_basis` (`record_offsets`, `partly_local` lub `local_time_unknown`). Dni lokalne są używane w rekordach sandbox i produkcyjnych; wzorce pory dnia nie są jeszcze obliczane.
- **Pominięte.** Wartości zapisane przez AI, wyniki oznaczone jako błąd wprowadzony i daty znane tylko do miesiąca nie są używane i są zliczane.
- **Limity.** 30 uruchomień wzorców na minutę na poświadczenie, oprócz zwykłych 600 żądań na minutę.

## Często zadawane pytania

### Czy używa modelu językowego?
Nie. Każda liczba pochodzi ze stałych, wersjonowanych metod statystycznych. Dowolny model, hostowany lub lokalny, może odczytać wyniki.

### Dlaczego wyraźna zmiana w moich danych jest oznaczona jako słaba?
Ponieważ dowody nie przetrwały korekty dla wszystkich testów w przebiegu, seria jest krótka lub zaszumiona, lub zmiana jest poniżej progu dla danego pomiaru. Wynik nadal opisuje to, co pokazuje rekord.

### Czy działa na rekordach produkcyjnych?
Tak, od 16 października 2026 r., ale tylko za zgodą pacjenta w ramach OAuth, która obejmuje oddzielne uprawnienie `anpheros/patterns`, wyświetlane na ekranie zgody w osobnym wierszu. Poproś o zakres obok swoich zakresów `patient/…`; przyznanie bez niego i dowolny klucz API produkcyjny spowoduje błąd 403.

## Powiązane

- [Serwer FHIR MCP dla agentów AI](https://developers.anpheros.com/pl/guides/mcp)
- [Aplikacje LLM i dane medyczne](https://developers.anpheros.com/pl/guides/llm-healthcare-data)
- [Agenci AI i dane medyczne](https://developers.anpheros.com/pl/guides/ai-agents-medical-data)
- [API medyczne z zgodą pacjenta](https://developers.anpheros.com/pl/guides/healthcare-api-patient-consent)
