AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Agenti AI e dati medici

Accesso controllato per agenti AI ai record paziente: scope OAuth, gli strumenti necessari a un agente, audit e provenienza di ciò che legge e scrive, e agenti basati su eventi.

Un agente AI è un programma in cui un modello linguistico decide, passo dopo passo, quali azioni intraprendere — quali dati leggere, quale strumento chiamare, cosa scrivere — per completare un'attività. Quando l'attività coinvolge la cartella clinica di un paziente, l'agente necessita di un accesso controllato: dovrebbe raggiungere solo i record a cui è autorizzato ad accedere, solo le parti di essi di cui ha bisogno, lasciare una traccia di ciò che ha letto e contrassegnare ciò che ha scritto come generato dall'AI. Anpheros fornisce tale accesso controllato tramite la sua API; il framework dell'agente e il modello sono tuoi.

Anpheros non dispone di un runtime di agenti integrato, di un server Model Context Protocol (MCP) né di un'integrazione ufficiale con alcun framework di agenti o provider di modelli. Gli agenti lo utilizzano come qualsiasi altra applicazione: tramite l'API REST e FHIR o gli SDK.

L'architettura

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

Il modello propone azioni; il tuo runtime le esegue con le credenziali che possiede. Il modello stesso non detiene mai una chiave o un token Anpheros.

Accesso controllato

Strumenti di cui un agente ha tipicamente bisogno

Strumento Chiamata Anpheros Note
Ottieni contesto per un'attività POST /v1/context la prima chiamata per la maggior parte delle attività; con budget e etichettato per origine (LLM applications and healthcare data)
Elenca risultati recenti GET /v1/patients/{id}/observations?category=laboratory&from=… filtri: category, code, from, to
Farmaci attivi GET /v1/patients/{id}/medications?status=active
Cosa è successo GET /v1/patients/{id}/timeline?from=… un elenco cronologico tra i tipi
Dettaglio FHIR completo GET /fhir/R4/{type}?patient=… quando un riepilogo non è sufficiente
Un riepilogo standard GET /fhir/R4/Patient/{id}/$summary bundle International Patient Summary
Cerca un codice GET /v1/terminology/loinc?q=… sottoinsieme LOINC in bundle; farmaci tramite GET /v1/search
Registra una nota POST /v1/patients/{id}/observations con author_type: "ai" solo con uno scope di scrittura

La specifica OpenAPI (https://developers.anpheros.com/openapi.json) descrive ogni endpoint e può essere trasformata in definizioni di strumenti; gli SDK TypeScript e Dart possono essere incapsulati direttamente come strumenti.

Esempio: un agente di preparazione visita con il consenso del paziente

Un paziente che ha già una cartella in Anpheros chiede a un assistente di terze parti di preparare domande per una visita cardiologica. L'agente necessita di accesso in lettura alla cartella per un tempo limitato, niente di più.

1. Consenso (OAuth 2.1 + PKCE, ambiti SMART v2). L'assistente invia la persona alla pagina di consenso con gli ambiti più ristretti che consentono comunque un contesto (osservazioni, condizioni, farmaci e allergie):

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. Strumenti. Il runtime dell'agente espone alcune funzioni al modello; ognuna è una vera chiamata API effettuata con il token di accesso:

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 }),
};

Descrivili al modello nel formato di strumento o chiamata di funzione che la tua API del modello utilizza; il modello propone una chiamata, il tuo runtime la esegue e restituisce il JSON. Il modello non vede mai il token.

3. Cosa applica la piattaforma. Il token raggiunge solo la cartella di quella persona e solo i tipi specificati negli ambiti; qualsiasi altra cosa risponde 403 (un tipo al di fuori degli ambiti) o 404 (un altro paziente). Ogni chiamata, inclusa ogni richiesta di contesto con il suo manifest_id, appare nel log di accesso della persona per questa applicazione. Se la persona revoca l'accesso, la chiamata successiva risponde 401 e l'agente deve interrompersi; il token di aggiornamento non può ripristinarlo.

4. Output. L'agente restituisce domande per il medico con le fonti utilizzate. Non scrive nulla indietro, perché non gli è stato concesso un ambito di scrittura.

Audit e provenienza

Avvio di agenti da eventi

I webhook consentono a un agente di essere eseguito quando qualcosa cambia — un nuovo risultato di laboratorio (resource.created), un nuovo consenso (consent.granted) — invece di effettuare il polling. Gli eventi trasportano solo ID; l'agente legge quindi ciò che i suoi scope consentono. Webhook

Regole di progettazione da rispettare

  1. Concedere all'agente gli ambiti più ristretti che completano l'attività.
  2. Partire da un contesto, non da letture grezze di massa; rispettare omitted e warnings.
  3. Mostrare le origini dei dati del paziente nella risposta dell'agente.
  4. Non consentire mai all'agente di presentare una diagnosi o di modificare un trattamento autonomamente; instradare tali output a un clinico.
  5. Registrare il manifest_id di ciascun contesto accanto alla risposta dell'agente, in modo che una persona possa in seguito vedere su cosa si basava la risposta.

Correlati

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy