# AI एजेंट्स और मेडिकल डेटा

> AI एजेंट्स के लिए रोगी रिकॉर्ड तक नियंत्रित पहुँच: OAuth स्कोप, वे उपकरण जिनकी एक एजेंट को आवश्यकता होती है, ऑडिट और प्रोवेनेंस कि उसने क्या पढ़ा और लिखा, और इवेंट-संचालित एजेंट्स।

Source: https://developers.anpheros.com/hi/guides/ai-agents-medical-data

**एक AI एजेंट एक प्रोग्राम होता है जिसमें एक भाषा मॉडल, किसी कार्य को पूरा करने के लिए, कदम दर कदम यह तय करता है कि कौन सी क्रियाएं करनी हैं - कौन सा डेटा पढ़ना है, कौन सा टूल कॉल करना है, क्या लिखना है।** जब कार्य में रोगी का मेडिकल रिकॉर्ड शामिल होता है, तो एजेंट को नियंत्रित पहुँच की आवश्यकता होती है: उसे केवल उन्हीं रिकॉर्ड्स तक पहुँचना चाहिए जिनकी उसे अनुमति है, केवल उनके उन हिस्सों तक जिनकी उसे आवश्यकता है, उसने जो पढ़ा है उसका एक निशान छोड़ना चाहिए और उसने जो लिखा है उसे AI-जनित के रूप में चिह्नित करना चाहिए। Anpheros अपने API के माध्यम से वह नियंत्रित पहुँच प्रदान करता है; एजेंट फ्रेमवर्क और मॉडल आपके हैं।

Anpheros में कोई अंतर्निहित एजेंट रनटाइम नहीं है, कोई मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) सर्वर नहीं है और किसी भी एजेंट फ्रेमवर्क या मॉडल प्रदाता के साथ कोई आधिकारिक एकीकरण नहीं है। एजेंट्स इसका उपयोग उसी तरह करते हैं जैसे कोई भी एप्लिकेशन करता है: 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
```

मॉडल क्रियाओं का प्रस्ताव करता है; आपका रनटाइम इसे उस क्रेडेंशियल के साथ निष्पादित करता है जो उसके पास है। मॉडल स्वयं कभी भी Anpheros कुंजी या टोकन नहीं रखता है।

## नियंत्रित पहुँच

- **किसके रिकॉर्ड।** API कुंजी के साथ, एजेंट उन रोगियों को देखता है जिन्हें आपके प्रोजेक्ट ने बनाया है। किसी के मौजूदा रिकॉर्ड पर कार्रवाई करने के लिए, उसे उस व्यक्ति से OAuth ग्रांट की आवश्यकता होती है - एक रोगी के लिए, 30 से 365 दिनों के लिए।
- **कौन सा डेटा।** स्कोप संसाधन प्रकारों और क्रियाओं को सीमित करते हैं, वैकल्पिक रूप से एक श्रेणी तक: `patient/Observation.rs?category=laboratory` एजेंट को केवल लैब परिणाम पढ़ने और खोजने की अनुमति देता है और कुछ नहीं। संदर्भ बनाने के लिए, ग्रांट को अवलोकन, स्थितियाँ, दवाएँ और एलर्जी पढ़ने की अनुमति देनी चाहिए (उदाहरण के लिए `patient/*.rs`)।
- **डिफ़ॉल्ट रूप से केवल-पढ़ने के लिए।** केवल तभी राइट स्कोप प्रदान करें जब एजेंट को कुछ रिकॉर्ड करना हो।
- **रद्द करने योग्य।** व्यक्ति किसी भी समय ग्रांट को रद्द कर सकता है; एजेंट का अगला कॉल अस्वीकार कर दिया जाता है।

## एक एजेंट को आमतौर पर जिन उपकरणों की आवश्यकता होती है

| उपकरण | Anpheros कॉल | नोट्स |
|---|---|---|
| किसी कार्य के लिए संदर्भ प्राप्त करें | `POST /v1/context` | अधिकांश कार्यों के लिए पहला कॉल; बजटेड और स्रोत-लेबल वाला ([LLM अनुप्रयोग और स्वास्थ्य सेवा डेटा](https://developers.anpheros.com/hi/guides/llm-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` | अंतर्राष्ट्रीय रोगी सारांश बंडल |
| कोड देखें | `GET /v1/terminology/loinc?q=…` | बंडल किया गया LOINC सबसेट; `GET /v1/search` के माध्यम से दवाएं |
| एक नोट रिकॉर्ड करें | `POST /v1/patients/{id}/observations` के साथ `author_type: "ai"` | केवल राइट स्कोप के साथ |

OpenAPI विनिर्देश (`https://developers.anpheros.com/openapi.json`) प्रत्येक एंडपॉइंट का वर्णन करता है और इसे टूल परिभाषाओं में बदला जा सकता है; TypeScript और Dart SDK को सीधे टूल के रूप में लपेटा जा सकता है।

## उदाहरण: रोगी की सहमति से एक विज़िट-तैयारी एजेंट

एक रोगी जो पहले से ही Anpheros में एक रिकॉर्ड रखता है, कार्डियोलॉजी विज़िट के लिए प्रश्न तैयार करने के लिए एक तीसरे पक्ष के सहायक से पूछता है। एजेंट को सीमित समय के लिए रिकॉर्ड तक रीड एक्सेस की आवश्यकता है - इससे अधिक कुछ नहीं।

**1. सहमति (OAuth 2.1 + PKCE, SMART v2 स्कोप)।** सहायक व्यक्ति को सबसे संकीर्ण स्कोप के साथ सहमति पृष्ठ पर भेजता है जो अभी भी एक संदर्भ (अवलोकन, स्थितियाँ, दवाएँ और एलर्जी) की अनुमति देता है:

```ts
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. उपकरण।** एजेंट रनटाइम मॉडल को कुछ फ़ंक्शन एक्सपोज़ करता है; प्रत्येक एक वास्तविक API कॉल है जो एक्सेस टोकन के साथ की जाती है:

```ts
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 उपयोग करता है; मॉडल एक कॉल प्रस्तावित करता है, आपका रनटाइम इसे चलाता है और JSON लौटाता है। मॉडल कभी भी टोकन नहीं देखता है।

**3. प्लेटफ़ॉर्म क्या लागू करता है।** टोकन केवल उस व्यक्ति के रिकॉर्ड तक पहुँचता है और केवल स्कोप किए गए प्रकारों तक; कुछ भी और `403` (स्कोप के बाहर एक प्रकार) या `404` (एक अन्य रोगी) का उत्तर देता है। प्रत्येक कॉल - जिसमें `manifest_id` के साथ प्रत्येक संदर्भ अनुरोध शामिल है - इस एप्लिकेशन के लिए व्यक्ति के एक्सेस लॉग में दिखाई देता है। यदि व्यक्ति एक्सेस रद्द करता है, तो अगली कॉल `401` का उत्तर देती है और एजेंट को रुकना चाहिए; रिफ्रेश टोकन इसे वापस नहीं ला सकता है।

**4. आउटपुट।** एजेंट उन स्रोतों के साथ डॉक्टर के लिए प्रश्न लौटाता है जिनका उसने उपयोग किया था। यह कुछ भी वापस नहीं लिखता है, क्योंकि इसे राइट स्कोप नहीं दिया गया था।

## ऑडिट और प्रोवेनेंस

- एजेंट द्वारा की गई हर कॉल रिकॉर्ड तक पहुँच होती है और यह आपके एप्लिकेशन के लिए रोगी के एक्सेस लॉग में दिखाई देती है — इसमें प्रत्येक संदर्भ अनुरोध भी शामिल है, जो उपयोग किए गए अनुभागों और स्रोतों का एक मैनिफ़ेस्ट भी संग्रहीत करता है।
- एजेंट जो कुछ भी लिखता है वह `Provenance` में AI-लिखित के रूप में दर्ज किया जाता है। जब बाद में कोई संदर्भ बनाया जाता है, तो AI-लिखित मान `ai_notes` के तहत सूचीबद्ध होते हैं, नैदानिक ​​तथ्यों से अलग, ताकि एजेंट अपने स्वयं के पिछले आउटपुट को साक्ष्य के रूप में उद्धृत न करे।

## इवेंट्स से एजेंट शुरू करना

वेबहूक्स एजेंट को कुछ बदलने पर (जैसे नया लैब रिजल्ट (`resource.created`), नई सहमति (`consent.granted`)) चलाने की अनुमति देते हैं, बजाय पोलिंग के। इवेंट्स में केवल आईडी होती हैं; एजेंट तब पढ़ता है जो उसके स्कोप्स की अनुमति देते हैं। [वेबहूक्स](https://developers.anpheros.com/hi/guides/webhooks)

## ध्यान रखने योग्य डिज़ाइन नियम

1. एजेंट को वह सबसे संकीर्ण स्कोप दें जो कार्य को पूरा करते हों।
2. रॉ बल्क रीड्स से शुरू करने के बजाय, एक संदर्भ (context) से शुरू करें; `omitted` और `warnings` का सम्मान करें।
3. एजेंट के उत्तर में रोगी के डेटा स्रोतों को दिखाएं।
4. एजेंट को कभी भी अपने आप निदान प्रस्तुत करने या उपचार बदलने न दें; ऐसे आउटपुट को एक चिकित्सक को रूट करें।
5. प्रत्येक संदर्भ के `manifest_id` को एजेंट के उत्तर के बगल में लॉग करें, ताकि कोई व्यक्ति बाद में देख सके कि उत्तर किस पर आधारित था।

## संबंधित

- [एआई एजेंट को मेडिकल रिकॉर्ड तक पहुंच कैसे दें](https://developers.anpheros.com/hi/guides/ai-agent-access-medical-records): Python में चरण-दर-चरण ट्यूटोरियल
- [एआई एजेंट के लिए FHIR MCP सर्वर](https://developers.anpheros.com/hi/guides/mcp)
- [एआई स्वास्थ्य सेवा अनुप्रयोग](https://developers.anpheros.com/hi/guides/ai-healthcare)
- [LLM अनुप्रयोग और स्वास्थ्य सेवा डेटा](https://developers.anpheros.com/hi/guides/llm-healthcare-data)
- [संरचित डेटा के साथ मेडिकल चैटबॉट कैसे बनाएं](https://developers.anpheros.com/hi/guides/ai-medical-assistant)
- [सहमति और पहुंच मॉडल](https://developers.anpheros.com/hi/guides/consent)
- [प्रमाणीकरण और OAuth](https://developers.anpheros.com/hi/guides/authentication)
- [स्वास्थ्य सेवा ऐप्स और एआई एजेंटों के लिए दवा डेटा](https://developers.anpheros.com/hi/guides/medication-data-ai-agents): रोगी की सूची बनाम दवा ज्ञान स्रोत
