# FHIR R4 का उपयोग करके मेडिकल रिकॉर्ड कैसे स्टोर करें

> ट्यूटोरियल: एक पेशेंट, एक ब्लड-प्रेशर ऑब्जर्वेशन और एक कंडीशन बनाएं, एक ट्रांजेक्शन का उपयोग करें, सर्च करें, हिस्ट्री के साथ अपडेट करें और प्रोवेनेंस पढ़ें — हर रिक्वेस्ट कर्ल के साथ और वास्तविक रिस्पांस, फ्री सैंडबॉक्स पर।

Source: https://developers.anpheros.com/hi/guides/store-medical-records-fhir

**यह ट्यूटोरियल HL7 FHIR R4 रिसोर्सेज के रूप में एक छोटा मेडिकल रिकॉर्ड स्टोर करता है: एक `Patient`, एक ब्लड-प्रेशर `Observation` और एक डायग्नोसिस एक `Condition` के रूप में, फिर एक पेशेंट और एक मेजरमेंट को एक ट्रांजेक्शन में एक साथ। यह उन्हें सर्च करता है, पहले वाले वर्जन को खोए बिना डायग्नोसिस को अपडेट करता है, और पढ़ता है कि किसने क्या लिखा।** हर रिक्वेस्ट फ्री Anpheros सैंडबॉक्स के खिलाफ प्लेन `curl` है, और हर रिस्पांस दिखाया गया है कि API क्या रिटर्न करता है।

यदि आप FHIR के लिए नए हैं, तो पहले कॉन्सेप्ट्स के लिए [FHIR प्लेटफॉर्म](https://developers.anpheros.com/hi/guides/fhir) पढ़ें। यह पेज हैंड्स-ऑन पार्ट है।

## वे तीन संसाधन जिनसे अधिकांश रिकॉर्ड शुरू होते हैं

| संसाधन | इसमें क्या होता है | किससे कोड किया गया है |
|---|---|---|
| `Patient` | रिकॉर्ड किसके बारे में है: नाम, जन्म तिथि, लिंग, अन्य सिस्टम से पहचानकर्ता | आपके पहचानकर्ता सिस्टम |
| `Observation` | मापा या रिपोर्ट किया गया कुछ भी: महत्वपूर्ण संकेत, लैब परिणाम, वजन, लक्षण स्कोर | LOINC, UCUM इकाइयाँ |
| `Condition` | एक निदान या स्वास्थ्य समस्या, समय के साथ उसकी स्थिति के साथ | ICD-10 (लाइसेंस फ्लैग के पीछे SNOMED CT) |

दवाएं (`MedicationStatement`), एलर्जी (`AllergyIntolerance`), टीकाकरण और दस्तावेज़ समान पैटर्न का पालन करते हैं; [26 समर्थित संसाधन प्रकार](https://developers.anpheros.com/hi/guides/fhir) क्षमता कथन में `/fhir/R4/metadata` पर सूचीबद्ध हैं।

## शुरू करने से पहले

[platform.anpheros.com/dashboard](https://platform.anpheros.com/dashboard/) पर **एक सैंडबॉक्स कुंजी प्राप्त करें** (`sk_test_…`) के साथ एक सैंडबॉक्स कुंजी प्राप्त करें। वहां आपके द्वारा बनाई गई कोई भी चीज़ वास्तविक रोगी डेटा नहीं है, और कुछ भी अन्य परियोजनाओं को दिखाई नहीं देता है।

```bash
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
```

## चरण 1: एक रोगी बनाएँ

```bash
curl -X POST "$BASE/Patient" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
  "resourceType": "Patient",
  "identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
  "name": [{"family": "Marin", "given": ["Ioana"]}],
  "gender": "female",
  "birthDate": "1979-04-12"
}'
```

`201 Created`, सर्वर द्वारा असाइन किए गए आईडी और संस्करण के साथ:

```json
{"resourceType": "Patient",
 "identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
 "name": [{"family": "Marin", "given": ["Ioana"]}], "gender": "female", "birthDate": "1979-04-12",
 "id": "d09e3942-ed86-4458-b099-fa674ab21b84",
 "meta": {"versionId": "1", "lastUpdated": "2026-10-12T20:16:51.043Z"}}
```

अपने स्वयं के आईडी को `identifier` में एक `system` के साथ रखें जिसे आप नियंत्रित करते हैं (यहां एक क्लिनिक का रिकॉर्ड नंबर), ताकि आप हमेशा `GET $BASE/Patient?identifier=https://clinic.example/mrn|MRN-10442` के साथ रोगी को फिर से ढूंढ सकें। FHIR `id` प्लेटफ़ॉर्म का है, और यह आपके प्रोजेक्ट के लिए विशिष्ट है: एक अलग प्रोजेक्ट उसी व्यक्ति को एक अलग आईडी के तहत देखता है।

```bash
export PID=d09e3942-ed86-4458-b099-fa674ab21b84
```

## चरण 2: एक माप को Observation के रूप में संग्रहीत करें

रक्तचाप दो घटकों, सिस्टोलिक और डायस्टोलिक के साथ एक अवलोकन है, जिनमें से प्रत्येक का अपना LOINC कोड है। बताएं कि इसे किसने मापा: यहाँ एक घरेलू उपकरण है।

```bash
curl -X POST "$BASE/Observation" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
     -H "X-Anpheros-Author-Type: device" -H "Idempotency-Key: bp-2026-10-10-0830" -d '{
  "resourceType": "Observation",
  "status": "final",
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
  "code": {"coding": [{"system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel"}]},
  "subject": {"reference": "Patient/'$PID'"},
  "effectiveDateTime": "2026-10-10T08:30:00Z",
  "component": [
    {"code": {"coding": [{"system": "http://loinc.org", "code": "8480-6"}]},
     "valueQuantity": {"value": 138, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}},
    {"code": {"coding": [{"system": "http://loinc.org", "code": "8462-4"}]},
     "valueQuantity": {"value": 88, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}}
  ]
}'
```

प्रतिक्रिया संग्रहीत संसाधन है जिसमें `id` और `meta.versionId: "1"` हैं। एक प्रयोग करने योग्य रिकॉर्ड के लिए तीन विवरण मायने रखते हैं:

- **कोड, लेबल नहीं।** `85354-9` का अर्थ हर FHIR सिस्टम में "रक्तचाप पैनल" है; एक फ्री-टेक्स्ट "BP" नहीं। `GET /v1/terminology/loinc?q=blood pressure` ([FHIR कोड सिस्टम](https://developers.anpheros.com/hi/guides/fhir-code-systems)) के साथ कोड देखें।
- **UCUM इकाइयाँ** (`mm[Hg]`, `kg`, `mg/dL`) `valueQuantity.code` में, ताकि मानों की तुलना और रूपांतरण किया जा सके।
- **`Idempotency-Key`।** टाइमआउट के बाद एक पुनः प्रयास रीडिंग को दो बार संग्रहीत करने के बजाय पहली प्रतिक्रिया लौटाता है।

प्रयोगशाला परिणाम `category` `laboratory` और आमतौर पर एक `referenceRange` के साथ समान संसाधन हैं। संपूर्ण प्रयोगशाला रिपोर्ट लाने के लिए, [FHIR रिकॉर्ड में प्रयोगशाला परिणाम कैसे आयात करें](https://developers.anpheros.com/hi/guides/import-lab-results-fhir) देखें।

## चरण 3: एक निदान को स्थिति (Condition) के रूप में दर्ज करें

```bash
curl -X POST "$BASE/Condition" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
     -H "X-Anpheros-Author-Type: practitioner" -d '{
  "resourceType": "Condition",
  "subject": {"reference": "Patient/'$PID'"},
  "clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
  "verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed"}]},
  "code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I10", "display": "Essential (primary) hypertension"}]},
  "onsetDateTime": "2026-03-02"
}'
```

`clinicalStatus` (सक्रिय, हल, छूट में) और `verificationStatus` (पुष्टि, अनंतिम) जानबूझकर अलग हैं: एक संदिग्ध निदान एक पुष्टि किए गए निदान के समान नहीं है, और एक हल की गई समस्या अभी भी इतिहास का हिस्सा है।

## चरण 4: एक ट्रांज़ैक्शन में संबंधित संसाधन बनाएं

जब कोई मरीज़ और उसका पहला माप एक साथ आते हैं, उदाहरण के लिए किसी क्लिनिक सिस्टम से, तो उन्हें `transaction` बंडल के रूप में भेजें। या तो सब कुछ संग्रहीत किया जाता है या कुछ भी नहीं। नए संसाधनों के बीच संदर्भ अस्थायी `urn:uuid:` आईडी का उपयोग करते हैं जिन्हें सर्वर बदल देता है:

```bash
curl -X POST "$BASE" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
  "resourceType": "Bundle", "type": "transaction",
  "entry": [
    {"fullUrl": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001",
     "resource": {"resourceType": "Patient", "name": [{"family": "Stan", "given": ["Mihai"]}], "gender": "male", "birthDate": "1990-02-01"},
     "request": {"method": "POST", "url": "Patient"}},
    {"resource": {"resourceType": "Observation", "status": "final",
       "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
       "code": {"coding": [{"system": "http://loinc.org", "code": "29463-7", "display": "Body weight"}]},
       "subject": {"reference": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001"},
       "effectiveDateTime": "2026-10-10",
       "valueQuantity": {"value": 82.4, "unit": "kg", "system": "http://unitsofmeasure.org", "code": "kg"}},
     "request": {"method": "POST", "url": "Observation"}}
  ]
}'
```

`transaction-response` में प्रति संसाधन एक प्रविष्टि होती है, जिसमें `"status": "201 Created"`, उसका `location` और संग्रहीत संसाधन शामिल होता है। Observation का `subject` अब वास्तविक `Patient/fad3665a-…` को इंगित करता है।

## चरण 5: खोजें

```bash
curl "$BASE/Observation?patient=$PID&code=http://loinc.org|85354-9&date=ge2026-10-01&_sort=-date" \
     -H "Authorization: Bearer $KEY"
```

आपको `searchset` बंडल मिलेगा जिसमें `total` और मिलान वाले संसाधन होंगे, सबसे नए पहले। अन्य खोजें जिनका आप अक्सर उपयोग करेंगे: `Condition?patient=$PID&clinical-status=active`, `Observation?patient=$PID&category=laboratory`, और पूरे रिकॉर्ड के लिए `Patient/$PID/$everything`।

## चरण 6: इतिहास खोए बिना अपडेट करें

हाइपरटेंशन ठीक हो जाता है। स्थिति बदलें और समाप्ति तिथि जोड़ें, और `If-Match` का उपयोग उस संस्करण के साथ करें जिसे आपने पढ़ा है ताकि आप किसी और के परिवर्तन को कभी ओवरराइट न करें:

```bash
curl -X PUT "$BASE/Condition/$CID" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
     -H 'If-Match: W/"1"' -d '{ …the same Condition…, "clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved"}]}, "abatementDateTime": "2026-10-11" }'
```

`200 OK` के साथ `ETag: W/"2"`। यदि कोई अन्य राइट पहले वहां पहुंच गया, तो आपको `412` मिलेगा और फिर से पढ़ें। पिछला संस्करण अभी भी वहीं है:

```bash
curl "$BASE/Condition/$CID/_history" -H "Authorization: Bearer $KEY"
```

दोनों संस्करणों को लौटाता है: `versionId` 2 (`resolved`) और 1 (`active`)। `GET $BASE/Condition/$CID/_history/1` पुराना वाला पढ़ता है। रिकॉर्ड में कुछ भी चुपचाप ओवरराइट नहीं किया जाता है।

## चरण 7: देखें कि किसने क्या लिखा

हर लिखाई एक `Provenance` संसाधन बनाती है। रक्तचाप रीडिंग के लिए:

```bash
curl "$BASE/Provenance?target=Observation/$OBS" -H "Authorization: Bearer $KEY"
```

```json
{"resourceType": "Provenance",
 "target": [{"reference": "Observation/d83d9075-…/_history/1"}],
 "recorded": "2026-10-12T20:16:51.056000Z",
 "activity": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation", "code": "CREATE"}]},
 "agent": [{"type": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "author"}]},
            "who": {"identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "device"}, "display": "proj_…"},
            "onBehalfOf": {"identifier": {"system": "https://anpheros.com/fhir/sid/organization", "value": "org_…"}, "display": "…"}}]}
```

आपके द्वारा भेजा गया लेखक प्रकार (`device`) प्रोजेक्ट और संगठन के साथ दर्ज किया जाता है। लिखाई के पीछे के चिकित्सक का नाम बताने के लिए `X-Anpheros-Author-Ref: Practitioner/<id>` भेजें।

## चरण 8: रिकॉर्ड एक सारांश के रूप में

```bash
curl "$BASE/Patient/$PID/\$summary" -H "Authorization: Bearer $KEY"
```

एक अंतर्राष्ट्रीय रोगी सारांश (International Patient Summary) लौटाता है: एक `document` बंडल (Bundle) जो `Composition` से शुरू होता है और जिसमें समस्याएं (Problems), दवाएं (Medications), एलर्जी (Allergies) और महत्वपूर्ण संकेत (Vital signs) जैसे अनुभाग होते हैं, जो उपरोक्त संसाधनों से निर्मित होते हैं। यह वह प्रारूप है जिसे किसी अन्य सिस्टम को सौंपा जा सकता है या डॉक्टर के लिए मुद्रित किया जा सकता है ([FHIR प्लेटफॉर्म](https://developers.anpheros.com/hi/guides/fhir))।

## FHIR के बिना JSON पसंद है?

वही डेटा एक सरल REST व्यू, `/v1` के माध्यम से उपलब्ध है, जिसमें समान आईडी हैं: `POST /v1/patients/{id}/observations`, `{"code": "85354-9", "category": "vital-signs", "effective_at": "…", "components": […]}` लेता है और वही FHIR Observation स्टोर करता है। जो भी आपके कोड में फिट बैठता है उसका उपयोग करें। [Medical data API](https://developers.anpheros.com/hi/guides/medical-data-api) और [SDKs](https://developers.anpheros.com/hi/guides/sdks) देखें।

## अक्सर पूछे जाने वाले प्रश्न

### मेडिकल रिकॉर्ड स्टोर करने का सबसे अच्छा तरीका क्या है?
कोडित, संस्करणित संसाधनों के रूप में, प्रत्येक को किसने लिखा है, इसका रिकॉर्ड रखते हुए। HL7 FHIR R4 आपको संरचना (Patient, Observation, Condition और अन्य), LOINC और ICD-10 जैसी मानक कोड सिस्टम, और इतिहास प्रदान करता है; एक FHIR बैकएंड खोज, सहमति और प्रोवेनेंस को जोड़ता है।

### क्या मुझे FHIR का उपयोग करने के लिए FHIR सर्वर की आवश्यकता है?
आपको कहीं ऐसी जगह की आवश्यकता है जो FHIR संसाधनों को स्टोर और खोज सके और लागू कर सके कि कौन उन्हें पढ़ सकता है। आप स्वयं एक ओपन-सोर्स FHIR सर्वर चला सकते हैं या Anpheros जैसे प्रबंधित सर्वर का उपयोग कर सकते हैं; [Anpheros अन्य FHIR सर्वर की तुलना में कैसा है](https://developers.anpheros.com/hi/guides/fhir-server-comparison) विकल्पों का मूल्यांकन करता है, और [FHIR बनाम एक कस्टम मेडिकल डेटाबेस](https://developers.anpheros.com/hi/guides/fhir-vs-custom-database) अपना स्वयं का स्कीमा बनाने के बारे में बताता है।

### मैं FHIR में ब्लड प्रेशर कैसे स्टोर करूँ?
एक `Observation` के रूप में LOINC कोड `85354-9` और दो `component` प्रविष्टियों के साथ: सिस्टोलिक `8480-6` और डायस्टोलिक `8462-4`, प्रत्येक `valueQuantity` में `mm[Hg]` के साथ।

### क्या मैं स्टोर किए गए संसाधन को बदल सकता हूँ?
हाँ, `PUT` और `If-Match` के साथ। प्रत्येक परिवर्तन एक नया संस्करण बनाता है; पिछले संस्करण `_history` के माध्यम से पठनीय रहते हैं, और Provenance रिकॉर्ड करता है कि किसने प्रत्येक परिवर्तन किया। डिलीट सॉफ्ट होते हैं और इतिहास बनाए रखते हैं।

## संबंधित

- [FHIR प्लेटफ़ॉर्म](https://developers.anpheros.com/hi/guides/fhir): अवधारणाएँ, संसाधन प्रकार और संचालन
- [FHIR कोड सिस्टम](https://developers.anpheros.com/hi/guides/fhir-code-systems): LOINC, ICD-10, ATC, UCUM
- [FHIR रिकॉर्ड में प्रयोगशाला परिणाम कैसे आयात करें](https://developers.anpheros.com/hi/guides/import-lab-results-fhir)
- [मेडिकल डेटा API](https://developers.anpheros.com/hi/guides/medical-data-api): समान डेटा का सरल REST दृश्य
- [मुफ़्त FHIR डेटाबेस और सैंडबॉक्स](https://developers.anpheros.com/hi/guides/free-fhir-database)
