Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Πράκτορες AI και ιατρικά δεδομένα
Ελεγχόμενη πρόσβαση για πράκτορες AI σε αρχεία ασθενών: πεδία OAuth, τα εργαλεία που χρειάζεται ένας πράκτορας, έλεγχος και προέλευση όσων διαβάζει και γράφει, και πράκτορες που βασίζονται σε συμβάντα.
Ένας AI agent είναι ένα πρόγραμμα στο οποίο ένα γλωσσικό μοντέλο αποφασίζει, βήμα προς βήμα, ποιες ενέργειες θα εκτελέσει — ποια δεδομένα θα διαβάσει, ποιο εργαλείο θα καλέσει, τι θα γράψει — για να ολοκληρώσει μια εργασία. Όταν η εργασία περιλαμβάνει το ιατρικό αρχείο ενός ασθενούς, ο agent χρειάζεται ελεγχόμενη πρόσβαση: θα πρέπει να φτάνει μόνο στα αρχεία που του επιτρέπεται, μόνο στα μέρη τους που χρειάζεται, να αφήνει ίχνος από ό,τι διάβασε και να επισημαίνει ό,τι έγραψε ως παραγόμενο από AI. Το Anpheros παρέχει αυτήν την ελεγχόμενη πρόσβαση μέσω του API του. Το framework του agent και το μοντέλο είναι δικά σας.
Το Anpheros δεν έχει ενσωματωμένο runtime agent, ούτε διακομιστή Model Context Protocol (MCP), ούτε επίσημη ενσωμάτωση με οποιοδήποτε framework agent ή πάροχο μοντέλου. Οι agents το χρησιμοποιούν όπως κάθε εφαρμογή: μέσω του REST και FHIR API ή των SDKs.
Η αρχιτεκτονική
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
Το μοντέλο προτείνει ενέργειες· το runtime σας τις εκτελεί με τα διαπιστευτήρια που κατέχει. Το ίδιο το μοντέλο δεν κατέχει ποτέ κλειδί ή token Anpheros.
Ελεγχόμενη πρόσβαση
- Ποια αρχεία. Με ένα API key, ο πράκτορας βλέπει τους ασθενείς που δημιούργησε το έργο σας. Για να ενεργήσει σε ένα υπάρχον αρχείο κάποιου, χρειάζεται μια OAuth χορήγηση από αυτό το άτομο — για έναν ασθενή, για 30 έως 365 ημέρες.
- Ποια δεδομένα. Τα scopes περιορίζουν τους τύπους πόρων και τις ενέργειες, προαιρετικά σε μια κατηγορία:
patient/Observation.rs?category=laboratoryεπιτρέπει σε έναν πράκτορα να διαβάζει και να αναζητά αποτελέσματα εργαστηρίου και τίποτα άλλο. Για να δημιουργήσει ένα πλαίσιο, η χορήγηση πρέπει να επιτρέπει την ανάγνωση παρατηρήσεων, καταστάσεων, φαρμάκων και αλλεργιών (για παράδειγμαpatient/*.rs). - Μόνο για ανάγνωση εξ ορισμού. Χορηγήστε scopes εγγραφής μόνο όταν ο πράκτορας προορίζεται να καταγράψει κάτι.
- Ανακλητή. Το άτομο μπορεί να ανακαλέσει τη χορήγηση ανά πάσα στιγμή· η επόμενη κλήση του πράκτορα απορρίπτεται.
Εργαλεία που χρειάζεται συνήθως ένας πράκτορας
| Εργαλείο | Κλήση Anpheros | Σημειώσεις |
|---|---|---|
| Λήψη πλαισίου για μια εργασία | POST /v1/context |
η πρώτη κλήση για τις περισσότερες εργασίες· προϋπολογισμένη και με ετικέτα πηγής (LLM applications and healthcare data) |
| Λίστα πρόσφατων αποτελεσμάτων | GET /v1/patients/{id}/observations?category=laboratory&from=… |
φίλτρα: category, code, from, to |
| Ενεργά φάρμακα | GET /v1/patients/{id}/medications?status=active |
|
| Τι συνέβη πότε | GET /v1/patients/{id}/timeline?from=… |
μία χρονολογική λίστα μεταξύ τύπων |
| Πλήρης λεπτομέρεια FHIR | GET /fhir/R4/{type}?patient=… |
όταν μια σύνοψη δεν αρκεί |
| Τυπική σύνοψη | GET /fhir/R4/Patient/{id}/$summary |
International Patient Summary bundle |
| Αναζήτηση κωδικού | GET /v1/terminology/loinc?q=… |
υποσύνολο LOINC σε πακέτο· φάρμακα μέσω GET /v1/search |
| Καταγραφή σημείωσης | POST /v1/patients/{id}/observations με author_type: "ai" |
μόνο με εύρος εγγραφής |
Η προδιαγραφή OpenAPI (https://developers.anpheros.com/openapi.json) περιγράφει κάθε endpoint και μπορεί να μετατραπεί σε ορισμούς εργαλείων· τα SDK TypeScript και Dart μπορούν να ενσωματωθούν απευθείας ως εργαλεία.
Παράδειγμα: πράκτορας προετοιμασίας επίσκεψης με τη συγκατάθεση του ασθενούς
Ένας ασθενής που ήδη διατηρεί αρχείο στο Anpheros ζητά από έναν βοηθό τρίτου μέρους να προετοιμάσει ερωτήσεις για μια καρδιολογική επίσκεψη. Ο πράκτορας χρειάζεται πρόσβαση ανάγνωσης στο αρχείο για περιορισμένο χρονικό διάστημα — τίποτα παραπάνω.
1. Συγκατάθεση (OAuth 2.1 + PKCE, SMART v2 scopes). Ο βοηθός στέλνει το άτομο στη σελίδα συγκατάθεσης με τα στενότερα scopes που εξακολουθούν να επιτρέπουν ένα πλαίσιο (παρατηρήσεις, καταστάσεις, φάρμακα και αλλεργίες):
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. Εργαλεία. Το runtime του πράκτορα εκθέτει μερικές λειτουργίες στο μοντέλο. Κάθε μία είναι μια πραγματική κλήση API που γίνεται με το access token:
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 }),
};
Περιγράψτε τις στο μοντέλο σε οποιαδήποτε μορφή εργαλείου ή κλήσης συνάρτησης χρησιμοποιεί το API του μοντέλου σας. Το μοντέλο προτείνει μια κλήση, το runtime σας την εκτελεί και επιστρέφει το JSON. Το μοντέλο δεν βλέπει ποτέ το token.
3. Τι επιβάλλει η πλατφόρμα. Το token φτάνει μόνο στο αρχείο αυτού του ατόμου και μόνο στους τύπους που έχουν scope. Οτιδήποτε άλλο απαντά 403 (ένας τύπος εκτός των scopes) ή 404 (άλλος ασθενής). Κάθε κλήση — συμπεριλαμβανομένου κάθε αιτήματος πλαισίου, με το manifest_id του — εμφανίζεται στο αρχείο καταγραφής πρόσβασης του ατόμου για αυτήν την εφαρμογή. Εάν το άτομο ανακαλέσει την πρόσβαση, η επόμενη κλήση απαντά 401 και ο πράκτορας πρέπει να σταματήσει. Το refresh token δεν μπορεί να τον επαναφέρει.
4. Έξοδος. Ο πράκτορας επιστρέφει ερωτήσεις για τον γιατρό με τις πηγές που χρησιμοποίησε. Δεν γράφει τίποτα πίσω, επειδή δεν του δόθηκε scope εγγραφής.
Έλεγχος και προέλευση
- Κάθε κλήση που πραγματοποιεί ο πράκτορας (agent) αποτελεί πρόσβαση στο αρχείο και εμφανίζεται στο αρχείο καταγραφής πρόσβασης του ασθενούς για την εφαρμογή σας — συμπεριλαμβανομένου κάθε αιτήματος πλαισίου (context request), το οποίο αποθηκεύει επίσης ένα μητρώο (manifest) των ενοτήτων και των πηγών που χρησιμοποιήθηκαν.
- Οτιδήποτε γράφει ο πράκτορας καταγράφεται ως γραμμένο από AI στο
Provenance. Όταν ένα πλαίσιο (context) δημιουργείται αργότερα, οι τιμές που γράφτηκαν από AI παρατίθενται κάτω από τοai_notes, ξεχωριστά από τα κλινικά γεγονότα, ώστε ένας πράκτορας να μην καταλήξει να παραθέτει τη δική του προηγούμενη έξοδο ως απόδειξη.
Εκκίνηση πρακτόρων από συμβάντα
Οι Webhooks επιτρέπουν σε έναν πράκτορα να εκτελεστεί όταν κάτι αλλάζει — ένα νέο αποτέλεσμα εργαστηρίου (resource.created), μια νέα συγκατάθεση (consent.granted) — αντί για polling. Τα συμβάντα μεταφέρουν μόνο αναγνωριστικά (ids). Ο πράκτορας στη συνέχεια διαβάζει ό,τι επιτρέπουν τα πεδία εμβέλειάς του. Webhooks
Κανόνες σχεδιασμού που αξίζει να τηρηθούν
- Δώστε στον πράκτορα τα στενότερα δυνατά πεδία (scopes) που ολοκληρώνουν την εργασία.
- Ξεκινήστε από ένα πλαίσιο (context), όχι από ακατέργαστες μαζικές αναγνώσεις (bulk reads). Σεβαστείτε τα
omittedκαιwarnings. - Εμφανίστε τις πηγές δεδομένων του ασθενούς στην απάντηση του πράκτορα.
- Ποτέ μην επιτρέψετε στον πράκτορα να παρουσιάσει διάγνωση ή να αλλάξει θεραπεία από μόνος του. δρομολογήστε τέτοιες εξόδους σε έναν κλινικό ιατρό.
- Καταγράψτε το
manifest_idκάθε πλαισίου (context) δίπλα στην απάντηση του πράκτορα, ώστε ένα άτομο να μπορεί αργότερα να δει σε τι βασίστηκε η απάντηση.
Σχετικά
- Πώς να δώσετε σε έναν πράκτορα AI πρόσβαση σε ιατρικά αρχεία: οδηγός βήμα προς βήμα σε Python
- FHIR MCP server για πράκτορες AI
- Εφαρμογές AI στην υγειονομική περίθαλψη
- Εφαρμογές LLM και δεδομένα υγειονομικής περίθαλψης
- Πώς να δημιουργήσετε ένα ιατρικό chatbot με δομημένα δεδομένα
- Μοντέλο συναίνεσης και πρόσβασης
- Έλεγχος ταυτότητας και OAuth
- Δεδομένα φαρμάκων για εφαρμογές υγειονομικής περίθαλψης και πράκτορες AI: η λίστα του ασθενούς έναντι των πηγών γνώσης φαρμάκων
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card