# शुरुआत करना

> एक API कुंजी से लेकर सैंडबॉक्स में किसी मरीज़ के FHIR R4 रिकॉर्ड को पढ़ना और लिखना तक: कुंजियाँ, पहले कॉल, प्रोवेनेंस के साथ लिखना, दस्तावेज़, AI संदर्भ, IPS, सहमति, वेबहुक और लैब रिपोर्ट।

Source: https://developers.anpheros.com/hi/guides/getting-started

Anpheros Platform एक स्वास्थ्य-डेटा बैकएंड है: प्रति मरीज़ एक FHIR R4 रिकॉर्ड, प्रोजेक्ट अलगाव,
हर राइट पर प्रोवेनेंस, और उसी डेटा के ऊपर एक सरल REST API। यह गाइड आपको
शून्य से सैंडबॉक्स में किसी मरीज़ के रिकॉर्ड को पढ़ने और लिखने तक ले जाती है।

बेस URL (सैंडबॉक्स और प्रोडक्शन इसे साझा करते हैं; कुंजी डेटा प्लेन तय करती है):

```
https://platform.anpheros.com
```

इंटरैक्टिव संदर्भ: `/docs` (OpenAPI) और `/fhir/R4/metadata` (CapabilityStatement)।

## 1. कुंजी प्राप्त करें (1 मिनट)

सैंडबॉक्स सेल्फ-सर्विस है। डैशबोर्ड (`https://platform.anpheros.com/dashboard/`) पर Google से साइन इन करें और **सैंडबॉक्स कुंजी प्राप्त करें** दबाएं: आपको एक संगठन, अपने स्वयं के सिंथेटिक रोगियों के साथ एक सैंडबॉक्स प्रोजेक्ट, और एक कुंजी मिलती है - जो एक बार दिखाई जाती है। एडमिन API के माध्यम से भी यही, आपके Firebase उपयोगकर्ता टोकन के साथ:

```bash
curl -X POST $BASE/admin/sandbox/quickstart -H "Authorization: Bearer $FIREBASE_ID_TOKEN"
# {"organization": {…}, "project": {"id": "proj_…", "environment": "sandbox", …}, "key": {"key": "sk_test_…", …}, "sandbox": {…}}
```

या चरण दर चरण:

```bash
# 1. an organization (you become its owner)
curl -X POST $BASE/admin/organizations -H "Authorization: Bearer $FIREBASE_ID_TOKEN" \
     -H 'content-type: application/json' -d '{"name":"CardioAI SRL","kind":"developer","country":"RO"}'
# 2. a sandbox project (it comes with its own synthetic patients)
curl -X POST $BASE/admin/organizations/org_…/projects -H "Authorization: Bearer $FIREBASE_ID_TOKEN" \
     -H 'content-type: application/json' -d '{"name":"CardioAI dev","environment":"sandbox"}'
# 3. a key — the plain key is returned exactly once
curl -X POST $BASE/admin/projects/proj_…/keys -H "Authorization: Bearer $FIREBASE_ID_TOKEN" \
     -H 'content-type: application/json' -d '{"name":"local dev","scopes":["read","write"]}'
```

आपको `sk_test_…` मिलता है। सैंडबॉक्स कुंजियाँ केवल सैंडबॉक्स डेटा देखती हैं। प्रोडक्शन कुंजियाँ (`sk_live_…`) हस्ताक्षरित DPA के साथ सत्यापित संगठनों को जारी की जाती हैं - platform@anpheros.com पर लिखें। सैंडबॉक्स मुफ़्त है; प्रोडक्शन €99 प्रति माह से शुरू होता है और पहला महीना मुफ़्त है ( [मूल्य निर्धारण](https://developers.anpheros.com/hi/guides/pricing) देखें)।

## 2. पहला कॉल (1 मिनट)

आपके सैंडबॉक्स प्रोजेक्ट में पहले से ही 30 सिंथेटिक रोगियों की अपनी कॉपी है, जिसमें प्रोजेक्ट बनने के दिन तक छह महीने का इतिहास है: वयस्क, बच्चे और यूरोपीय संघ भर के बुजुर्ग, विभिन्न स्थितियों (ICD-10), दवाओं (ATC), एलर्जी, लैब परिणामों और महत्वपूर्ण संकेतों (LOINC) के साथ। यह कॉपी आपके प्रोजेक्ट से संबंधित है: कुछ भी बदलें या हटा दें - कोई अन्य प्रोजेक्ट इसे नहीं देखेगा। डैशबोर्ड में **टेस्ट रोगियों को रीसेट करें** (या `POST /admin/projects/{id}/sandbox/reset`) उन्हें वैसे ही वापस ले आता है जैसे वे थे, नए आईडी के साथ; आपके द्वारा स्वयं बनाए गए रोगियों को छुआ नहीं जाता है। प्रत्येक सिंथेटिक रोगी रीसेट के दौरान एक स्थिर पहचानकर्ता रखता है: `Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02` हमेशा एलेना इओनेस्कु है।

```bash
export KEY=sk_test_…
curl $BASE/v1/patients -H "Authorization: Bearer $KEY"
```

```json
{"data":[{"id":"…","given":"Elena","family":"Ionescu","birth_date":"1985-09-03","gender":"female",…,"fhir":"Patient/…"}, …],"total":30,"next_cursor":null}
```

सैंडबॉक्स सीमाएं उदार लेकिन सीमित हैं: प्रति प्रोजेक्ट प्रतिदिन 10,000 संसाधन राइट्स, सिंथेटिक लोगों के अलावा 50 रोगी, 250 MB दस्तावेज़ (सीमाएं देखें [limits](https://developers.anpheros.com/hi/guides/limits))।

## 3. रिकॉर्ड पढ़ें

```bash
# lab results, newest first
curl "$BASE/v1/patients/$PID/observations?category=laboratory&limit=10" -H "Authorization: Bearer $KEY"
# active medications
curl "$BASE/v1/patients/$PID/medications?status=active" -H "Authorization: Bearer $KEY"
# everything on one timeline
curl "$BASE/v1/patients/$PID/timeline?from=2026-06-01" -H "Authorization: Bearer $KEY"
# the same data, strict FHIR
curl "$BASE/fhir/R4/Observation?patient=$PID&code=http://loinc.org|4548-4&_sort=-date" -H "Authorization: Bearer $KEY"
```

Ids `/v1` और `/fhir/R4` में समान हैं; हर v1 ऑब्जेक्ट अपना `fhir` संदर्भ रखता है।
`_summary=count` केवल कुल संख्या लौटाता है; `_elements=code,effectiveDateTime` स्लिम रिसोर्स लौटाता है जिन्हें `SUBSETTED` के रूप में टैग किया गया है।

## 4. लिखें

बताएं कि लेखक कौन है। `author_type`, `patient`, `practitioner`, `device`, `import` या `ai` है;
यदि आप इसे छोड़ देते हैं तो प्लेटफ़ॉर्म `import` रिकॉर्ड करता है, कभी भी `patient` को अनुमान से नहीं।
`author_type` `ai` के साथ लिखना [HL7 AI Transparency on FHIR](https://build.fhir.org/ig/HL7/aitransparency-ig/) का पालन करता है:
संसाधन `AIAST` सुरक्षा लेबल (*Artificial Intelligence asserted*) वहन करता है और इसके Provenance में कारण
`AIAST`, एजेंट भूमिका `Artificial-Intelligence` और `AI-Provenance` प्रोफ़ाइल है। मॉडल का नाम बताने के लिए, इसे
`Device` (प्रकार `Artificial-Intelligence`, नाम, संस्करण, निर्माता) के रूप में पंजीकृत करें और `X-Anpheros-Author-Ref: Device/<id>` भेजें।

```bash
curl -X POST "$BASE/v1/patients/$PID/observations" -H "Authorization: Bearer $KEY" \
     -H 'content-type: application/json' -H "Idempotency-Key: $(uuidgen)" -d '{
  "code": "2339-0", "display": "Glucose", "category": "laboratory",
  "value": 112, "unit": "mg/dL", "effective_at": "2026-09-19T08:10:00Z",
  "author_type": "device"
}'
```

प्रतिक्रिया संग्रहीत अवलोकन है जिसमें `id`, `fhir` और `updated_at` शामिल हैं। उसी
अनुरोध को समान `Idempotency-Key` के साथ दोहराने पर वही प्रतिक्रिया मिलती है और कुछ भी नया नहीं बनता है।

## 5. दस्तावेज़

```bash
# 1. create the document → upload target
curl -X POST "$BASE/v1/patients/$PID/documents" -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
     -d '{"title":"Analize 2026-09-14","kind":"lab_report","content_type":"application/pdf","date":"2026-09-14"}'
# 2. upload the bytes to the returned url (direct to storage, or through the platform)
curl -X PUT "$BASE/v1/documents/$DOC/content" -H "Authorization: Bearer $KEY" -H 'content-type: application/pdf' --data-binary @analize.pdf
```

मूल को उसके बाद कभी भी संशोधित नहीं किया जाता है; `sha256` और `size` दर्ज किए जाते हैं, और आपके द्वारा बाद में निकाले गए कोई भी मान `derived_from` के माध्यम से दस्तावेज़ पर वापस इंगित करते हैं।

## 6. प्रोवेनेंस (Provenance)

```bash
curl "$BASE/v1/patients/$PID/provenance/Observation/$OBS" -H "Authorization: Bearer $KEY"
```

प्रति संस्करण एक प्रविष्टि: कौन (लेखक का प्रकार और प्रोजेक्ट), कब, किस स्रोत प्रणाली से।

## जानने योग्य नियम

- **अलगाव (Isolation)**: एक प्रोजेक्ट उन रोगियों को देखता है जिन्हें उसने बनाया है (साथ ही साझा सैंडबॉक्स रोगियों को)। किसी और का रोगी आपके लिए मौजूद नहीं है: `404`, कभी भी `403` नहीं।
- **युग्मित आईडी (Pairwise ids)**: आप जो रोगी आईडी देखते हैं वह आपकी है। एक अलग प्रोजेक्ट उसी व्यक्ति को एक अलग आईडी के तहत देखता है। हमारी आईडी को स्वतंत्र रूप से स्टोर करें; उन्हें कभी भी सहसंबंधित करने का प्रयास न करें।
- **प्रमाण (Provenance)**: हर लेखन एक Provenance संसाधन छोड़ता है। कुछ भी चुपचाप अधिलेखित नहीं किया जाता है; इतिहास `/fhir/R4/{Type}/{id}/_history` पर उपलब्ध है।
- **त्रुटियाँ (Errors)**: FHIR एंडपॉइंट `OperationOutcome` लौटाते हैं; `/v1` और `/admin` `{"error": {"type", "message", "field"}}` लौटाते हैं। हर प्रतिक्रिया में `Anpheros-Request-Id` होता है; जब आप हमसे संपर्क करें तो उसे उद्धृत करें।
- **सीमाएँ (Limits)**: डिफ़ॉल्ट रूप से प्रति कुंजी 600 अनुरोध/मिनट, प्रति पृष्ठ 200 आइटम, प्रति दस्तावेज़ 25 MB।

## 7. AI मॉडल के लिए संदर्भ

कच्चे रिकॉर्ड्स को खींचने और यह तय करने के बजाय कि क्या किसी प्रॉम्प्ट में फिट बैठता है, प्लेटफ़ॉर्म से एक संदर्भ के लिए पूछें:

```bash
curl -X POST "$BASE/v1/context" -H "Authorization: Bearer $KEY" -H 'content-type: application/json' -d '{
  "patient": "'$PID'",
  "task": "medication review before a cardiology visit",
  "question": "How did blood pressure evolve over the last 3 months?",
  "budget_tokens": 1500,
  "format": "text"
}'
```

आपको अनुभाग (सारांश कार्ड, स्थितियाँ, दवाएँ, एलर्जी, लैब, साप्ताहिक रुझानों और उपचार से पहले/बाद के मार्करों के साथ वाइटल्स, लक्षण, समयरेखा, दस्तावेज़) मिलते हैं, प्रत्येक आइटम `author_type` और `source` के साथ लेबल किया गया है, बजट में फिट होने के लिए क्या छोड़ा गया था, चेतावनियाँ, और एक `manifest_id` जो कॉल को ऑडिट लॉग से जोड़ता है। AI द्वारा उत्पन्न मानों को कभी भी तथ्यों के साथ मिश्रित नहीं किया जाता है: वे केवल `ai_notes` के तहत दिखाई देते हैं। स्पष्ट ज़रूरतें भी स्वीकार की जाती हैं:
`"needs": ["labs:4548-4", "vitals:trend:85354-9", "timeline:180d"]`।

## 8. मानक

- `GET /fhir/R4/Patient/{id}/$summary` एक अंतर्राष्ट्रीय रोगी सारांश दस्तावेज़ बंडल (International Patient Summary document Bundle) लौटाता है।
- `POST /fhir/R4/Observation/$validate?profile=eu-lab` रिपोर्ट करता है कि एक प्रयोगशाला परिणाम HL7 यूरोप प्रयोगशाला रिपोर्ट 2.1.0 परिणाम प्रोफ़ाइल (त्रुटियाँ, चेतावनियाँ, जानकारी) के मुकाबले कैसा है: श्रेणी, कोड (LOINC को प्राथमिकता), विषय, प्रभावी समय, एक प्रदर्शनकर्ता, और एक मान, जब तक कि परिणाम केवल पंजीकृत या रद्द न हो।
- `GET /v1/terminology/loinc?q=hba1c` बंडल किए गए LOINC सबसेट (LOINC subset) को खोजता है और `GET /v1/search?q=metformin` लक्षणों, स्थितियों और दवाओं की सूची (catalog of symptoms, conditions and medicines) को खोजता है; डिस्प्ले नाम के बिना बनाए गए अवलोकन (observations) को स्वचालित रूप से LOINC नाम मिल जाता है।

## 9. रोगी की सहमति (OAuth 2.1 + SMART on FHIR)

API कुंजियाँ आपके द्वारा बनाए गए प्रोजेक्ट के रोगियों को देखती हैं। किसी व्यक्ति के मौजूदा रिकॉर्ड तक पहुँचने के लिए, उनसे पूछें:

1. एक एप्लिकेशन पंजीकृत करें: `POST /admin/projects/{id}/applications` अपने रीडायरेक्ट URI के साथ
   (PKCE के साथ मोबाइल/वेब ऐप्स के लिए `public`, सर्वर के लिए `confidential`; सीक्रेट एक बार दिखाया जाता है)।
2. व्यक्ति को सहमति पृष्ठ पर भेजें:
   `GET /oauth/authorize?response_type=code&client_id=…&redirect_uri=…&state=…&code_challenge=…&code_challenge_method=S256&scope=patient/Observation.rs?category=laboratory patient/MedicationStatement.r offline_access&purpose=treatment&lang=ro`
   वे Anpheros में साइन इन करते हैं, सादे भाषा में आपके द्वारा मांगी गई चीज़ें देखते हैं, रिकॉर्ड चुनते हैं (उनका अपना,
   किसी आश्रित का, या वह जो आपके ऐप ने उनके लिए बनाया है) और एक्सेस कितने समय तक रहता है।
3. कोड का आदान-प्रदान करें: `POST /oauth/token` (`authorization_code` + `code_verifier`)। आपको एक
   एक्सेस टोकन (30 मिनट), एक रिफ्रेश टोकन (30 दिन, उपयोग पर घुमाया जाता है) और रोगी आईडी प्राप्त होती है।
4. `Authorization: Bearer at_…` के साथ API को कॉल करें। आप केवल उस रोगी को देखते हैं, केवल स्कोप में संसाधन
   प्रकार और क्रियाएं; स्कोप से बाहर के रीड `403` का उत्तर देते हैं, खोजों को फ़िल्टर किया जाता है।

व्यक्ति Anpheros से किसी भी समय निरस्त कर सकता है; अगली कॉल `401` का उत्तर देती है। प्रत्येक अनुदान को
एक FHIR `Consent` संसाधन के रूप में प्रतिबिंबित किया जाता है, और उसके तहत प्रत्येक एक्सेस लॉग किया जाता है और व्यक्ति के लिए दृश्यमान होता है। डिस्कवरी: `/.well-known/smart-configuration`।

## 10. वेबहुक

प्लेटफ़ॉर्म को पोल करने के बजाय आपको कॉल करने दें:

```bash
curl -X POST $BASE/v1/webhooks -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://your.app/anpheros/hook", "events": ["*"]}'
```

प्रतिक्रिया से `secret` रखें और हर डिलीवरी पर `Anpheros-Signature` सत्यापित करें
(दोनों SDK में `verifyWebhookSignature`)। इवेंट में आईडी और संस्करण होते हैं, नैदानिक डेटा नहीं।
विवरण, पुनः प्रयास और उदाहरण: [webhooks.md](https://developers.anpheros.com/hi/guides/webhooks)।

## 11. संगठन और प्रैक्टिशनर

क्लिनिक, लैब और वहां काम करने वाले लोग प्रथम श्रेणी के संसाधन हैं: `Organization`, `Practitioner`, `PractitionerRole`। वे **निर्देशिका** संसाधन हैं: कोई रोगी नहीं, जो एक ही वातावरण में हर प्रोजेक्ट द्वारा पढ़ा जा सके, केवल उस प्रोजेक्ट द्वारा बदला जा सके जिसने उन्हें बनाया है।

```bash
curl -X POST $BASE/fhir/R4/Practitioner -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
  -d '{"resourceType":"Practitioner","active":true,"name":[{"family":"Popescu","given":["Ana"],"prefix":["Dr."]}]}'
```

`X-Anpheros-Author-Ref: Practitioner/<id>` (या `PractitionerRole`, `Organization`, `Device`) के साथ किसी राइट के पीछे के प्रैक्टिशनर का नाम दें: सर्वर-जनित Provenance तब `agent.who.reference` ले जाएगा, और `GET /fhir/R4/Provenance?agent=Practitioner/<id>` उस व्यक्ति द्वारा रिकॉर्ड की गई हर चीज़ को सूचीबद्ध करेगा। खोजें: `Organization?name=`, `?identifier=`, `?type=`, `Practitioner?name=`, `?family=`, `?given=`, `PractitionerRole?practitioner=`, `?organization=`, `?role=`, `?specialty=`, `?active=`।

आपके ऐप के पीछे कौन काम कर रहा है? प्रोजेक्ट कुंजी के साथ किए गए किसी भी `/v1` या `/fhir/R4` अनुरोध पर `X-Anpheros-Acting-As: PractitionerRole/<id>` (या `Practitioner/<id>`) भेजें। व्यक्ति को निर्देशिका में मौजूद होना चाहिए और सक्रिय होना चाहिए। संदर्भ एक्सेस लॉग में लिखा जाता है, उस अनुरोध के राइट्स का लेखक बन जाता है (जब तक कि आप `X-Anpheros-Author-Ref` सेट न करें) और रोगी को उनके कनेक्शन में नाम से दिखाया जाता है ("डॉ. एना पोपेस्कु · क्लिनिका डेंटे ने आपके लैब परिणाम पढ़े")।

## 12. एक कॉल में लैब रिपोर्ट

एक पूरी लैब रिपोर्ट (CSV, HL7 v2 ORU^R01 या JSON) भेजें और LOINC और संदर्भ श्रेणियों के साथ प्रयोगशाला अवलोकन प्राप्त करें; पुनः भेजना सुरक्षित है। विवरण: [lab-connector.md](https://developers.anpheros.com/hi/guides/lab-connector)।

```bash
curl -X POST "$BASE/v1/patients/$PATIENT/labs/import" -H "Authorization: Bearer $KEY" -H "Content-Type: text/csv" --data-binary @report.csv
```

## राइट्स पर कन्फ़ॉर्मेंस फ़ीडबैक

हर `POST`/`PUT` क्लिनिकल रिसोर्स को उसके सेक्शन के IPS प्रोफ़ाइल के विरुद्ध और,
लैबोरेटरी ऑब्ज़र्वेशन के लिए, HL7 Europe लैबोरेटरी रिपोर्ट नियमों के विरुद्ध चेक किया जाता है। प्रोफ़ाइल कारणों से राइट कभी रिजेक्ट नहीं किया जाता है (स्ट्रक्चरल FHIR एरर अभी भी रिजेक्ट हो सकते हैं); जब कुछ मिसिंग होता है, तो रिस्पॉन्स में

```
Anpheros-Conformance: warnings=2; IPS Condition: Condition without code | ...
```

यह बताता है कि क्या फिक्स करना है और रिसोर्स पेशेंट के `$summary` में शामिल हो जाएगा। 22 सितंबर 2026 को जोड़े गए रिसोर्स टाइप: `Immunization`, `MedicationAdministration` (सर्च `statement=MedicationStatement/{id}`),
`RelatedPerson`, `QuestionnaireResponse`, `Basic`। अन्य प्रोजेक्ट्स द्वारा रिकॉर्ड में किए गए राइट्स आपको वेबहुक इवेंट्स के रूप में प्राप्त हो सकते हैं `data.external = true` — [`docs/webhooks.md`](https://developers.anpheros.com/hi/guides/webhooks) देखें।
