Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
AI agenti a lékařská data
Řízený přístup pro AI agenty k záznamům pacientů: OAuth rozsahy, nástroje, které agent potřebuje, audit a původ toho, co čte a zapisuje, a agenti řízení událostmi.
AI agent je program, ve kterém jazykový model krok za krokem rozhoduje, jaké akce provede — jaká data přečte, jaký nástroj zavolá, co zapíše — k dokončení úkolu. Pokud úkol zahrnuje lékařský záznam pacienta, agent potřebuje řízený přístup: měl by dosáhnout pouze na záznamy, ke kterým má povolení, pouze na jejich části, které potřebuje, zanechat stopu toho, co přečetl a označit to, co zapsal, jako vygenerované AI. Anpheros poskytuje tento řízený přístup prostřednictvím svého API; framework agenta a model jsou vaše.
Anpheros nemá žádný vestavěný runtime agenta, žádný server Model Context Protocol (MCP) a žádnou oficiální integraci s žádným frameworkem agenta nebo poskytovatelem modelu. Agenti jej používají stejně jako jakákoli aplikace: prostřednictvím REST a FHIR API nebo SDK.
Architektura
Patient ── grants access (OAuth scopes, duration) ────────────────┐
▼
Agent runtime (your code, any framework) ── tools ──► Anpheros API ──► the patient's FHIR record
│ ▲ │
│ └── context, search results ◄───────┘ every call: scope checks + access log
▼
The model you choose (hosted or local) ── plans the next step
Model navrhuje akce; vaše runtime je provádí s přihlašovacími údaji, které drží. Samotný model nikdy nedrží klíč nebo token Anpheros.
Řízený přístup
- Čí záznamy. S API klíčem agent vidí pacienty, které váš projekt vytvořil. Aby mohl jednat s existujícím záznamem někoho jiného, potřebuje OAuth grant od této osoby — pro jednoho pacienta, na 30 až 365 dní.
- Která data. Scopes omezují typy zdrojů a akce, volitelně na kategorii:
patient/Observation.rs?category=laboratoryumožňuje agentovi číst a vyhledávat laboratorní výsledky a nic jiného. Pro vytvoření kontextu musí grant umožňovat čtení pozorování, stavů, léků a alergií (napříkladpatient/*.rs). - Ve výchozím nastavení pouze pro čtení. Udělujte scopes pro zápis pouze tehdy, když má agent zaznamenávat něco.
- Odvolatelné. Osoba může grant kdykoli odvolat; další volání agenta bude odmítnuto.
Nástroje, které agent typicky potřebuje
| Nástroj | Volání Anpheros | Poznámky |
|---|---|---|
| Získat kontext pro úkol | POST /v1/context |
první volání pro většinu úkolů; rozpočtované a označené zdrojem (LLM applications and healthcare data) |
| Seznam posledních výsledků | GET /v1/patients/{id}/observations?category=laboratory&from=… |
filtry: category, code, from, to |
| Aktivní léky | GET /v1/patients/{id}/medications?status=active |
|
| Co se stalo kdy | GET /v1/patients/{id}/timeline?from=… |
jeden chronologický seznam napříč typy |
| Plné FHIR detaily | GET /fhir/R4/{type}?patient=… |
když souhrn nestačí |
| Standardní souhrn | GET /fhir/R4/Patient/{id}/$summary |
balíček International Patient Summary |
| Vyhledat kód | GET /v1/terminology/loinc?q=… |
přiložená podmnožina LOINC; léky přes GET /v1/search |
| Zaznamenat poznámku | POST /v1/patients/{id}/observations s author_type: "ai" |
pouze s rozsahem zápisu |
Specifikace OpenAPI (https://developers.anpheros.com/openapi.json) popisuje každý koncový bod a lze ji převést na definice nástrojů; TypeScript a Dart SDK lze zabalit přímo jako nástroje.
Příklad: Agent pro přípravu návštěvy se souhlasem pacienta
Pacient, který již vede záznam v Anpheros, požádá externího asistenta o přípravu otázek pro kardiologickou návštěvu. Agent potřebuje přístup ke čtení záznamu po omezenou dobu – nic víc.
1. Souhlas (OAuth 2.1 + PKCE, rozsahy SMART v2). Asistent přesměruje osobu na stránku souhlasu s nejužšími rozsahy, které stále umožňují kontext (pozorování, stavy, léky a alergie):
import { Anpheros, OAuthAuth, OAuthFlow, generatePkce } from '@anpheros/sdk';
const flow = new OAuthFlow({ baseUrl: 'https://platform.anpheros.com', clientId: CLIENT_ID, redirectUri: REDIRECT_URI });
const pkce = await generatePkce();
const url = flow.authorizeUrl({
scopes: ['patient/Observation.rs', 'patient/Condition.rs', 'patient/MedicationStatement.rs',
'patient/AllergyIntolerance.rs', 'offline_access'],
state, pkce, purpose: 'treatment',
});
// … the person chooses the record and the duration (30–365 days) and allows; on the callback:
const tokens = await flow.exchange(code, pkce);
const anpheros = new Anpheros({ auth: new OAuthAuth({ tokens, onRefresh: flow.refresh }) });
const patient = tokens.patient!; // this application's own (pairwise) id for the person
2. Nástroje. Runtime agenta zpřístupňuje modelu několik funkcí; každá z nich je skutečným voláním API provedeným s přístupovým tokenem:
const tools = {
// POST /v1/context — relevant sections, within a budget, labelled with author type and source
get_context: (a: { question: string }) =>
anpheros.context.build({ patient, task: 'prepare a cardiology visit', question: a.question, budget_tokens: 2000, format: 'text' }),
// GET /v1/patients/{id}/observations?category=laboratory&code=…&from=…
list_lab_results: (a: { code?: string; from?: string }) =>
anpheros.observations.list(patient, { category: 'laboratory', code: a.code, from: a.from, limit: 20 }),
// GET /v1/patients/{id}/timeline?from=…
get_timeline: (a: { from: string }) => anpheros.timeline.list(patient, { from: a.from, limit: 50 }),
};
Popište je modelu v jakémkoli formátu nástrojů nebo volání funkcí, který vaše API modelu používá; model navrhne volání, váš runtime jej spustí a vrátí JSON. Model nikdy nevidí token.
3. Co platforma vynucuje. Token se dostane pouze k záznamu dané osoby a pouze k typům v rozsahu; cokoli jiného odpoví 403 (typ mimo rozsahy) nebo 404 (jiný pacient). Každé volání – včetně každého požadavku na kontext s jeho manifest_id – se objeví v přístupovém logu dané osoby pro tuto aplikaci. Pokud osoba odvolá přístup, další volání odpoví 401 a agent musí přestat; obnovovací token jej nemůže vrátit zpět.
4. Výstup. Agent vrátí otázky pro lékaře se zdroji, které použil. Nic nezapisuje zpět, protože mu nebyl udělen rozsah zápisu.
Audit a původ
- Každý požadavek, který agent provede, je přístupem k záznamu a objeví se v logu přístupů pacienta pro vaši aplikaci – včetně každého požadavku na kontext, který také ukládá manifest použitých sekcí a zdrojů.
- Vše, co agent zapíše, je zaznamenáno jako vytvořené AI v
Provenance. Když je kontext sestaven později, hodnoty napsané AI jsou uvedeny podai_notes, odděleně od klinických faktů, takže agent nakonec necituje svůj vlastní dřívější výstup jako důkaz.
Spouštění agentů na základě událostí
Webhooks umožňují agentovi spustit se, když dojde ke změně — nový laboratorní výsledek (resource.created), nový souhlas (consent.granted) — místo pravidelného dotazování. Události nesou pouze ID; agent si pak přečte, co mu jeho rozsahy dovolují. Webhooks
Pravidla návrhu, která stojí za to dodržovat
- Udělte agentovi nejužší možné rozsahy oprávnění, které splňují požadavky úkolu.
- Začínejte s kontextem, nikoli s nefiltrovanými hromadnými čteními; respektujte
omittedawarnings. - V odpovědi agenta uveďte zdroje dat pacienta.
- Nikdy nenechte agenta samostatně prezentovat diagnózu nebo měnit léčbu; takové výstupy směřujte na klinického lékaře.
- Zaznamenejte
manifest_idkaždého kontextu vedle odpovědi agenta, aby osoba mohla později vidět, na čem byla odpověď založena.
Související
- Jak povolit přístup AI agenta k lékařským záznamům: podrobný návod v Pythonu
- FHIR MCP server pro AI agenty
- Aplikace AI ve zdravotnictví
- Aplikace LLM a zdravotnická data
- Jak vytvořit lékařského chatbota se strukturovanými daty
- Model souhlasu a přístupu
- Autentizace a OAuth
- Data o lécích pro zdravotnické aplikace a AI agenty: seznam pacienta vs. zdroje znalostí o lécích
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card