# मेडिकल डेटा को सामान्य कैसे करें

> ट्यूटोरियल: कई स्रोतों से मेडिकल डेटा को एक तुलनीय रूप में बदलें — LOINC लुकअप, UCUM इकाइयाँ, ISO दिनांक, संदर्भ सीमाएँ, पुनः प्रयास पर कोई डुप्लिकेट नहीं, और यूरोपीय प्रयोगशाला प्रोफ़ाइल के विरुद्ध सत्यापन।

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

**मेडिकल डेटा को सामान्य करने का मतलब है कि कई आकृतियों में आने वाले मानों को एक तुलनीय रूप में बदलना: एक ही परीक्षण के लिए एक ही कोड, एक ही इकाई प्रणाली, एक प्रारूप में दिनांक, प्रत्येक मान अपनी संदर्भ सीमा और अपने स्रोत के साथ, और कोई डुप्लिकेट नहीं।** यह ट्यूटोरियल दिखाता है कि HL7 FHIR R4 रिकॉर्ड तक डेटा पहुँचने से पहले इसे कैसे करें: LOINC और ATC कोड देखना, UCUM इकाइयों का उपयोग करना, अस्पष्ट दिनांकों को अस्वीकार करना, सीमाएँ रखना, पुनः प्रयास पर डुप्लिकेट से बचना, और यूरोपीय प्रयोगशाला प्रोफ़ाइल के विरुद्ध परिणाम की जाँच करना। दिखाया गया प्रत्येक प्रतिक्रिया Anpheros API से आती है।

## यह क्यों महत्वपूर्ण है

HbA1c का एक ही परिणाम आपको "HbA1c 6,4 %", "Hemoglobina glicozilata: 6.4", "Glycated haemoglobin 46 mmol/mol" या केवल एक प्रयोगशाला द्वारा समझा जाने वाला एक प्रयोगशाला कोड के रूप में मिल सकता है। जब तक वे एक इकाई के साथ एक कोड न हों:

- समय के साथ रोगी के HbA1c का एक चार्ट तीन असंबंधित रेखाएँ दिखाता है;
- "HbA1c 6.5 % से ऊपर" पर एक अलर्ट दो मानों को छोड़ देता है;
- एक AI मॉडल एक प्रवृत्ति के बजाय चार तथ्य देखता है;
- रिकॉर्ड प्राप्त करने वाली एक अन्य प्रणाली इसकी व्याख्या नहीं कर सकती है।

सामान्यीकरण उस बिंदु पर होना चाहिए जहाँ डेटा रिकॉर्ड में प्रवेश करता है, एक बार, न कि बाद में इसे पढ़ने वाले प्रत्येक एप्लिकेशन में।

## सामान्यीकृत मान में क्या होता है

| भाग | सामान्यीकृत रूप | उदाहरण |
|---|---|---|
| क्या मापा गया | एक मानक प्रणाली से एक कोड | LOINC `4548-4` (HbA1c), RxNorm `6809` (मेटफॉर्मिन), ICD-10 `E11` (टाइप 2 मधुमेह) |
| मान | एक संख्या, या पाठ केवल तभी जब परिणाम संख्यात्मक न हो | `6.4` |
| इकाई | UCUM | `%`, `mg/dL`, `mm[Hg]`, `kg` |
| कब | एक ISO 8601 दिनांक-समय, समय क्षेत्र के साथ जब समय मायने रखता है | `2026-10-01T07:30:00Z` |
| सामान्य सीमा | निम्न और उच्च, समान इकाई में | `4.0`–`5.6` |
| स्रोत | किसने इसे उत्पादित किया और किस प्रणाली से | `import` से `labx` |
| पहचान | कुछ ऐसा जो दोहराव को पहचानने योग्य बनाता है | एक इडेम्पोटेंसी कुंजी या एक स्रोत पहचानकर्ता |

कौन सा कोड सिस्टम किस संसाधन प्रकार के साथ जाता है, [FHIR कोड सिस्टम](https://developers.anpheros.com/hi/guides/fhir-code-systems) में सूचीबद्ध है।

## चरण 1: कोड खोजें

प्लेटफ़ॉर्म की शब्दावली को अंग्रेज़ी या रोमानियाई नाम, या संक्षिप्त नाम से खोजें:

```bash
curl "https://platform.anpheros.com/v1/terminology/loinc?q=hba1c" -H "Authorization: Bearer $KEY"
curl "https://platform.anpheros.com/v1/terminology/loinc?q=hemoglobina%20glicozilata" -H "Authorization: Bearer $KEY"
```

दोनों एक ही अवधारणा लौटाते हैं:

```json
{"data": [{"system": "http://loinc.org", "code": "4548-4", "display": "Hemoglobin A1c/Hemoglobin.total in Blood",
           "display_ro": "Hemoglobină glicozilată (HbA1c)", "category": "laboratory", "unit": "%"}], "total": 1}
```

दवाओं के लिए, [Anpheros Search](https://developers.anpheros.com/hi/guides/anpheros-search) नाम या ब्रांड से पदार्थ ढूंढता है और उसका RxNorm घटक कोड और EMA उत्पाद संख्याएँ देता है:

```bash
curl "https://platform.anpheros.com/v1/search?q=metformin&type=treatment" -H "Authorization: Bearer $KEY"
```

`unit` फ़ील्ड वह इकाई है जिसकी LOINC उस परीक्षण के लिए अपेक्षा करता है। जो आपको मिला है उसकी जाँच करने के लिए इसका उपयोग करें। प्रत्येक स्रोत के अपने नामों से कोड तक मैपिंग एक बार, प्रति स्रोत बनाएँ, और इसे अपने एकीकरण में रखें। लिखते समय अनुमान न लगाएँ: जब कोई नाम अस्पष्ट हो और स्रोत में कुछ भी उसे तय न करे, तो उसे अनमैप्ड छोड़ दें और स्रोत से पूछें। [FHIR रिकॉर्ड में प्रयोगशाला परिणामों को कैसे आयात करें](https://developers.anpheros.com/hi/guides/import-lab-results-fhir) दिखाता है कि अनमैप्ड लैब मार्कर कैसे रखे जाते हैं और रिपोर्ट किए जाते हैं।

## चरण 2: कोड, इकाइयों और श्रेणियों के साथ लिखें

```bash
curl -X POST "https://platform.anpheros.com/v1/patients/$PID/observations" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/json" -H "Idempotency-Key: lab-77-hba1c" -d '{
  "code": "4548-4", "category": "laboratory",
  "value": 6.4, "unit": "%", "effective_at": "2026-10-01T07:30:00Z",
  "reference_range": {"low": 4.0, "high": 5.6},
  "author_type": "import"
}'
```

```json
{"id": "3296315c-…", "code": "4548-4", "system": "http://loinc.org", "display": "Hemoglobin A1c/Hemoglobin.total in Blood",
 "category": "laboratory", "effective_at": "2026-10-01T07:30:00Z", "value": 6.4, "unit": "%",
 "reference_range": {"low": 4.0, "high": 5.6}, "status": "final", "fhir": "Observation/3296315c-…"}
```

जब आप केवल कोड भेजते हैं, तो प्लेटफ़ॉर्म मानक LOINC नाम भरता है, REST API और FHIR API (`/fhir/R4`) दोनों पर, इसलिए हर एप्लिकेशन एक ही `display` पढ़ता है। आपके द्वारा स्वयं भेजा गया `display` वैसा ही रखा जाता है।

मूल शब्दावली भी रखें। एक प्रयोगशाला रिपोर्ट के लिए, FHIR Observation पर `code.text` प्रयोगशाला के नाम ("Hemoglobina glicozilata (HbA1c)") को LOINC कोडिंग के बगल में रखता है। मरीज़ अभी भी अपनी कागजी रिपोर्ट को पहचानता है, और यदि मैपिंग पर कभी सवाल उठाया जाता है तो कुछ भी खोता नहीं है।

## चरण 3: इकाइयाँ

UCUM कोड का उपयोग करें: `mg/dL`, `mmol/L`, `%`, `mm[Hg]`, `kg`, `cm`, `/min`, `Cel`। अधिकांश त्रुटियों को रोकने के लिए दो नियम हैं:

- **चुपचाप परिवर्तित न करें।** यदि कोई प्रयोगशाला `mmol/L` में ग्लूकोज की रिपोर्ट करती है और आपका ऐप `mg/dL` प्रदर्शित करता है, तो वह स्टोर करें जो प्रयोगशाला ने मापा है और जब आप इसे प्रदर्शित करें तो परिवर्तित करें। संग्रहीत मान रिपोर्ट के लिए ट्रेस करने योग्य रहता है।
- **कोड के विरुद्ध इकाई की जाँच करें।** LOINC कोड विशिष्ट होते हैं: `%` में HbA1c `4548-4` है, जबकि `mmol/mol` में HbA1c एक अलग LOINC कोड है। एक मान जिसकी इकाई कोड की अपेक्षित इकाई से मेल नहीं खाती है, वह मैपिंग त्रुटि है, न कि रूपांतरण समस्या।

Anpheros आपके लिए इकाइयों को परिवर्तित नहीं करता है; यह आपके द्वारा भेजी गई इकाई को संग्रहीत करता है।

## चरण 4: दिनांक

स्रोत के ज्ञात प्रारूप का उपयोग करके, लिखने से पहले दिनांकों को ISO 8601 में बदलें। `01.10.2026` रोमानिया और कई यूरोपीय देशों में 1 अक्टूबर है, लेकिन `10/01/2026` केवल संयुक्त राज्य अमेरिका में 1 अक्टूबर है। API अनुमान लगाने के बजाय ISO के अलावा किसी भी चीज़ को अस्वीकार कर देता है:

```json
{"error": {"type": "invalid", "message": "Input should be a valid datetime or date, invalid character in year (at effective_at)", "field": "effective_at"}}
```

लैब कनेक्टर इसका अपवाद है: यह `DD.MM.YYYY` और `DD/MM/YYYY` स्वीकार करता है क्योंकि यह जानता है कि यह एक यूरोपीय रिपोर्ट पढ़ रहा है।

उन मापों के लिए जहाँ दिन का समय मायने रखता है (रक्तचाप, ग्लूकोज, दवा की खुराक), समय को उसके समय क्षेत्र के साथ भेजें। बुखारेस्ट में 23:30 बजे का रीडिंग UTC में पिछले दिन का है, और मरीज़ इसे उस दिन की उम्मीद करता है जिस दिन उन्होंने इसे लिया था।

## चरण 5: कोई डुप्लिकेट नहीं

डुप्लिकेट रिट्रीज़, एक ही रिपोर्ट को दो बार भेजने और दो रास्तों से एक ही मान आने के कारण आते हैं।

- **रिट्रीज़:** स्रोत में मान की पहचान करने वाला एक `Idempotency-Key` भेजें, उदाहरण के लिए रिपोर्ट आईडी और परीक्षण। उसी कुंजी के साथ एक ही अनुरोध को फिर से भेजने पर पहली प्रतिक्रिया मिलती है और कुछ भी नया संग्रहीत नहीं होता है। SDKs हर क्रिएट में एक जोड़ते हैं।
- **एक ही रिपोर्ट दो बार:** लैब कनेक्टर रिपोर्ट, कोड, तिथि और मान से प्रति पंक्ति एक स्थिर पहचानकर्ता बनाता है, और पहले से आयात की गई पंक्तियों को छोड़ देता है।
- **दो रास्ते:** स्रोत सिस्टम की अपनी आईडी को `X-Anpheros-Origin-Id` (या FHIR संसाधनों पर `identifier` में) के साथ संग्रहीत करें, और इसे लिखने से पहले खोजें जो किसी अन्य पथ के माध्यम से वापस आ सकते हैं।

## चरण 6: प्रोफ़ाइल के विरुद्ध जाँच करें

प्रयोगशाला परिणामों के लिए, प्लेटफ़ॉर्म से पूछें कि कोई संसाधन HL7 Europe प्रयोगशाला रिपोर्ट प्रोफ़ाइल के विरुद्ध कैसे मापता है, इससे पहले कि आप उस पर भरोसा करें:

```bash
curl -X POST "https://platform.anpheros.com/fhir/R4/Observation/\$validate?profile=eu-lab" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/fhir+json" -d '{
  "resourceType": "Observation", "status": "final",
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
  "code": {"text": "HbA1c"}, "subject": {"reference": "Patient/'$PID'"},
  "valueQuantity": {"value": 6.4, "unit": "%"}
}'
```

यह अन-नॉर्मलाइज़्ड परिणाम एक सटीक सूची प्राप्त करता है:

```json
{"resourceType": "OperationOutcome", "issue": [
  {"severity": "error", "code": "invalid", "diagnostics": "Observation.code must carry a LOINC coding.", "expression": ["Observation.code"]},
  {"severity": "error", "code": "required", "diagnostics": "Observation.effective[x] is required.", "expression": ["Observation.effective"]},
  {"severity": "warning", "code": "business-rule", "diagnostics": "valueQuantity should carry a UCUM system and code.", "expression": ["Observation.valueQuantity"]},
  {"severity": "warning", "code": "informational", "diagnostics": "No referenceRange: interpretation will need the laboratory's ranges.", "expression": ["Observation.referenceRange"]},
  {"severity": "information", "code": "informational", "diagnostics": "No performer (laboratory) recorded.", "expression": ["Observation.performer"]},
  {"severity": "information", "code": "informational", "diagnostics": "No issued time (when the laboratory released the result).", "expression": ["Observation.issued"]}]}
```

प्रत्येक समस्या ऊपर दिए गए चरणों में से एक से मेल खाती है। प्रत्येक स्रोत से वास्तविक नमूनों के साथ, अपने एकीकरण परीक्षणों में `$validate` चलाएँ।

## चरण 7: स्रोत बनाए रखें

सामान्यीकरण किसी मान के लिखने के तरीके को बदलता है, न कि वह कहाँ से आया है। हर बार लिखते समय `author_type` (`device`, `import`, `practitioner`, `patient`) और `X-Anpheros-Source-System` भेजें। यही वह है जो किसी डॉक्टर, ऑडिटर या AI मॉडल को घर पर टाइप किए गए मान से प्रयोगशाला परिणाम बताने देता है। [मेडिकल डेटा प्रोवेनेंस समझाया गया](https://developers.anpheros.com/hi/guides/medical-data-provenance) देखें।

## चेकलिस्ट

- [ ] प्रत्येक स्रोत का अपने नामों से LOINC / ATC / ICD-10 तक एक मैपिंग है, जिसे आपके इंटीग्रेशन में रखा गया है
- [ ] अस्पष्ट नामों को अनमैप्ड रखा जाता है और रिपोर्ट किया जाता है, कभी अनुमान नहीं लगाया जाता
- [ ] UCUM इकाइयाँ, कोड से मेल खाती हैं; कोई साइलेंट कन्वर्जन नहीं
- [ ] ISO 8601 तिथियाँ, टाइम ज़ोन के साथ जहाँ समय मायने रखता है
- [ ] लैब वैल्यू के साथ रेफरेंस रेंज रखी जाती है
- [ ] मूल शब्दावली रखी जाती है (`code.text`)
- [ ] प्रत्येक राइट पर आइडम्पोटेंसी कीज़ या स्रोत आईडी
- [ ] प्रत्येक राइट पर `author_type` और स्रोत सिस्टम
- [ ] लैब परिणामों के लिए परीक्षणों में `$validate`

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

### मेडिकल डेटा सामान्यीकरण क्या है?
विभिन्न स्रोतों से स्वास्थ्य डेटा को एक मानक रूप में परिवर्तित करना: साझा कोड (परीक्षणों और मापों के लिए LOINC, निदान के लिए ICD-10, दवाओं के लिए ATC), UCUM इकाइयाँ, ISO तिथियाँ, संदर्भ सीमाएँ और एक दर्ज स्रोत, ताकि विभिन्न प्रणालियों के मानों की तुलना, संयोजन और आदान-प्रदान किया जा सके।

### क्या मुझे सभी मानों को एक इकाई में परिवर्तित करना चाहिए?
स्रोत ने जिस इकाई को मापा है, उसे तब तक संग्रहीत करें, जब तक कि वह कोड से मेल खाने वाली एक मान्य UCUM इकाई हो, और प्रदर्शित करते या विश्लेषण करते समय परिवर्तित करें। यह प्रत्येक संग्रहीत मान को उसकी मूल रिपोर्ट से पता लगाने योग्य रखता है।

### क्या सामान्यीकरण पूरी तरह से स्वचालित हो सकता है?
ज्यादातर। स्रोत में कोड, ज्ञात नाम और सुगठित इकाइयाँ स्वचालित रूप से मैप की जा सकती हैं। अस्पष्ट नाम और अज्ञात स्थानीय कोड को प्रति स्रोत एक बार मानव निर्णय की आवश्यकता होती है, जिसके बाद मैपिंग स्वचालित होती है।

## संबंधित

- [FHIR कोड सिस्टम](https://developers.anpheros.com/hi/guides/fhir-code-systems)
- [FHIR रिकॉर्ड में प्रयोगशाला परिणामों को कैसे आयात करें](https://developers.anpheros.com/hi/guides/import-lab-results-fhir)
- [मेडिकल डेटा प्रोवेनेंस समझाया गया](https://developers.anpheros.com/hi/guides/medical-data-provenance)
- [हेल्थकेयर डेटा इंटरऑपरेबिलिटी](https://developers.anpheros.com/hi/guides/interoperability)
- [मेडिकल डेटा API](https://developers.anpheros.com/hi/guides/medical-data-api)
