AnpherosAnpheros PlatformDevelopers

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

Agents IA et données médicales

Accès contrôlé pour les agents IA aux dossiers patients : scopes OAuth, les outils dont un agent a besoin, audit et provenance de ce qu'il lit et écrit, et agents événementiels.

Un agent IA est un programme dans lequel un modèle linguistique décide, étape par étape, quelles actions entreprendre — quelles données lire, quel outil appeler, quoi écrire — pour accomplir une tâche. Lorsque la tâche implique le dossier médical d'un patient, l'agent a besoin d'un accès contrôlé : il ne doit accéder qu'aux dossiers qu'il est autorisé à consulter, uniquement aux parties dont il a besoin, laisser une trace de ce qu'il a lu et marquer ce qu'il a écrit comme généré par l'IA. Anpheros fournit cet accès contrôlé via son API ; le framework de l'agent et le modèle vous appartiennent.

Anpheros n'a pas de runtime d'agent intégré, pas de serveur Model Context Protocol (MCP) et aucune intégration officielle avec un framework d'agent ou un fournisseur de modèle. Les agents l'utilisent comme n'importe quelle application : via l'API REST et FHIR ou les SDK.

L'architecture

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

Le modèle propose des actions ; votre runtime les exécute avec les identifiants qu'il détient. Le modèle lui-même ne détient jamais de clé ou de jeton Anpheros.

Accès contrôlé

Outils dont un agent a généralement besoin

Outil Appel Anpheros Notes
Obtenir le contexte d'une tâche POST /v1/context le premier appel pour la plupart des tâches ; budgétisé et étiqueté par source (LLM applications and healthcare data)
Lister les résultats récents GET /v1/patients/{id}/observations?category=laboratory&from=… filtres : category, code, from, to
Médicaments actifs GET /v1/patients/{id}/medications?status=active
Ce qui s'est passé GET /v1/patients/{id}/timeline?from=… une liste chronologique de tous les types
Détail FHIR complet GET /fhir/R4/{type}?patient=… lorsqu'un résumé n'est pas suffisant
Un résumé standard GET /fhir/R4/Patient/{id}/$summary bundle International Patient Summary
Rechercher un code GET /v1/terminology/loinc?q=… sous-ensemble LOINC groupé ; médicaments via GET /v1/search
Enregistrer une note POST /v1/patients/{id}/observations avec author_type: "ai" uniquement avec une portée d'écriture

La spécification OpenAPI (https://developers.anpheros.com/openapi.json) décrit chaque endpoint et peut être transformée en définitions d'outils ; les SDK TypeScript et Dart peuvent être directement encapsulés comme outils.

Exemple : un agent de préparation de visite avec le consentement du patient

Un patient qui tient déjà un dossier dans Anpheros demande à un assistant tiers de préparer des questions pour une visite de cardiologie. L'agent a besoin d'un accès en lecture au dossier pendant une durée limitée — rien de plus.

1. Consentement (OAuth 2.1 + PKCE, scopes SMART v2). L'assistant redirige la personne vers la page de consentement avec les scopes les plus restreints qui permettent toujours un contexte (observations, conditions, médicaments et allergies) :

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. Outils. Le runtime de l'agent expose quelques fonctions au modèle ; chacune est un véritable appel API effectué avec le jeton d'accès :

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

Décrivez-les au modèle dans le format d'appel d'outil ou de fonction que votre API de modèle utilise ; le modèle propose un appel, votre runtime l'exécute et renvoie le JSON. Le modèle ne voit jamais le jeton.

3. Ce que la plateforme applique. Le jeton n'atteint que le dossier de cette personne et uniquement les types scopés ; tout le reste répond 403 (un type hors des scopes) ou 404 (un autre patient). Chaque appel — y compris chaque requête de contexte, avec son manifest_id — apparaît dans le journal d'accès de la personne pour cette application. Si la personne révoque l'accès, le prochain appel répond 401 et l'agent doit s'arrêter ; le jeton de rafraîchissement ne peut pas le rétablir.

4. Sortie. L'agent renvoie des questions pour le médecin avec les sources qu'il a utilisées. Il n'écrit rien en retour, car il n'a pas reçu de scope d'écriture.

Audit et provenance

Démarrage des agents à partir d'événements

Les webhooks permettent à un agent de s'exécuter lorsqu'un événement se produit — un nouveau résultat de laboratoire (resource.created), un nouveau consentement (consent.granted) — au lieu d'interroger périodiquement. Les événements ne transportent que des identifiants ; l'agent lit ensuite ce que ses scopes autorisent. Webhooks

Règles de conception à respecter

  1. Donnez à l'agent les portées les plus restreintes qui accomplissent la tâche.
  2. Commencez à partir d'un contexte, pas de lectures brutes en masse ; respectez omitted et warnings.
  3. Affichez les sources de données du patient dans la réponse de l'agent.
  4. Ne laissez jamais l'agent présenter un diagnostic ou modifier un traitement de sa propre initiative ; transmettez de tels résultats à un clinicien.
  5. Enregistrez le manifest_id de chaque contexte à côté de la réponse de l'agent, afin qu'une personne puisse voir ultérieurement sur quoi la réponse était basée.

Liens pertinents

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