Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
क्लिनिक सिस्टम को FHIR बैकएंड के साथ कैसे एकीकृत करें
ट्यूटोरियल: क्लिनिक EMR को रोगियों के FHIR R4 रिकॉर्ड से कनेक्ट करें - डॉक्टरों की निर्देशिका, रिकॉर्ड नंबर से मिलान, एक डॉक्टर को लेखक के रूप में एक लेनदेन के रूप में एक यात्रा, लैब रिपोर्ट, अन्य प्रदाताओं का डेटा और वेबहुक।
यह ट्यूटोरियल क्लिनिक के सॉफ़्टवेयर (एक EMR, एक प्रैक्टिस मैनेजमेंट सिस्टम या एक बुकिंग टूल) को Anpheros में रोगियों के HL7 FHIR R4 रिकॉर्ड से जोड़ता है: क्लिनिक और उसके डॉक्टर निर्देशिका में पंजीकृत हैं, रोगियों को क्लिनिक के रिकॉर्ड नंबर द्वारा मिलान किया जाता है, एक विज़िट को डॉक्टर को लेखक के रूप में नामित करके एक लेनदेन के रूप में लिखा जाता है, और क्लिनिक को अन्य प्रदाताओं द्वारा जोड़े गए डेटा के बारे में पता चलता है। हर अनुरोध curl मुक्त सैंडबॉक्स के विरुद्ध है, और प्रतिक्रियाएँ प्लेटफ़ॉर्म की अपनी हैं।
एकीकरण क्लिनिक के सर्वर पर चलता है, क्लिनिक द्वारा पंजीकृत रोगियों के लिए एक प्रोजेक्ट API कुंजी के साथ और, उन लोगों के लिए जिनके पास पहले से ही Anpheros रिकॉर्ड है, एक OAuth अनुदान जिसे वे अनुमोदित करते हैं।
क्या किससे मैप करता है
| क्लिनिक सिस्टम में | FHIR R4 में |
|---|---|
| क्लिनिक, उसके विभाग | Organization |
| एक डॉक्टर या नर्स | Practitioner |
| उस क्लिनिक में काम करने वाला वह व्यक्ति, एक विशेषज्ञता के साथ | PractitionerRole |
| रोगी फ़ाइल और उसका नंबर | Patient क्लिनिक के सिस्टम में identifier के साथ |
| एक विज़िट | Encounter |
| वाइटल साइन्स, विज़िट के दौरान मापे गए परिणाम | Observation Encounter से लिंक |
| एक निदान | Condition (ICD-10), verificationStatus प्रोविज़नल या कन्फ़र्म्ड के साथ |
| एक प्रिस्क्रिप्शन, वर्तमान उपचार | MedicationStatement (ATC) |
| एक पत्र, एक डिस्चार्ज सारांश, एक स्कैन | फ़ाइल के साथ DocumentReference |
| लैब परिणाम | लैब कनेक्टर, Observation में |
चरण 1: क्लिनिक और उसके डॉक्टरों को पंजीकृत करें
डायरेक्टरी संसाधनों में कोई रोगी नहीं होता है। एक ही वातावरण में अन्य प्रोजेक्ट उन्हें पढ़ सकते हैं, इसलिए रोगी के अन्य प्रदाता देखते हैं कि किसने क्या लिखा है, लेकिन केवल आपका प्रोजेक्ट उन्हें बदल सकता है।
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
H=(-H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json")
curl -X POST $BASE/Organization "${H[@]}" -d '{"resourceType": "Organization", "active": true, "name": "Clinica Cardio Nord",
"identifier": [{"system": "https://clinic.example/org", "value": "CCN"}]}'
curl -X POST $BASE/Practitioner "${H[@]}" -d '{"resourceType": "Practitioner", "active": true,
"name": [{"family": "Popescu", "given": ["Ana"], "prefix": ["Dr."]}]}'
curl -X POST $BASE/PractitionerRole "${H[@]}" -d '{"resourceType": "PractitionerRole", "active": true,
"practitioner": {"reference": "Practitioner/'$PRACTITIONER'"},
"organization": {"reference": "Organization/'$ORG'"},
"code": [{"text": "Cardiologist"}]}'
लौटाए गए आईडी को अपने स्टाफ रिकॉर्ड के बगल में रखें। जब कोई छोड़ता है, तो उनके PractitionerRole को "active": false पर सेट करें; उनके पिछले लेखन में उनका नाम बना रहता है, और वे अब आपके सिस्टम के माध्यम से कार्य नहीं कर सकते हैं।
चरण 2: रोगियों का मिलान करें
क्लिनिक द्वारा पंजीकृत रोगियों के लिए, क्लिनिक के रिकॉर्ड नंबर को पहचानकर्ता के रूप में उपयोग करके Patient बनाएं:
curl -X POST $BASE/Patient "${H[@]}" -d '{"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-20981"}],
"name": [{"family": "Dinu", "given": ["Andrei"]}], "gender": "male", "birthDate": "1968-11-05"}'
तब से, उस नंबर से रोगी को ढूंढें, कभी भी नाम और जन्म तिथि से नहीं:
curl "$BASE/Patient?identifier=https://clinic.example/mrn|MRN-20981" -H "Authorization: Bearer $KEY"
जब व्यक्ति के पास पहले से ही Anpheros रिकॉर्ड है, तो उनके अपने ऐप या किसी अन्य प्रदाता से, क्लिनिक दूसरा नहीं बनाता है। यह व्यक्ति से रिसेप्शन डेस्क पर टैबलेट से या विज़िट से पहले भेजे गए लिंक का उपयोग करके, OAuth के साथ एक्सेस के लिए पूछता है, एक गोपनीय एप्लिकेशन का उपयोग करके (क्लिनिक का सर्वर रहस्य रखता है)। व्यक्ति अपने रिकॉर्ड और क्लिनिक कितने समय तक उस तक पहुंच सकता है, यह चुनता है। चरण SMART on FHIR के साथ रोगी की सहमति को कैसे लागू करें में हैं; टोकन का patient फ़ील्ड आपके फ़ाइल के साथ संग्रहीत करने के लिए आईडी है।
चरण 3: एक विज़िट को एक ट्रांज़ैक्शन के रूप में लिखें
एक विज़िट कई संसाधन उत्पन्न करती है जो एक साथ संबंधित होते हैं। उन्हें transaction में भेजें ताकि वे एक साथ संग्रहीत हों या बिल्कुल भी संग्रहीत न हों, और बताएं कि कौन काम कर रहा है: X-Anpheros-Acting-As डॉक्टर की भूमिका का नाम देता है। यह Provenance में लेखक बन जाता है, एक्सेस लॉग में लिखा जाता है, और रोगी को नाम से दिखाया जाता है।
curl -X POST $BASE "${H[@]}" \
-H "X-Anpheros-Acting-As: PractitionerRole/$ROLE" \
-H "X-Anpheros-Author-Type: practitioner" \
-H "X-Anpheros-Source-System: ccn-emr" -d '{
"resourceType": "Bundle", "type": "transaction",
"entry": [
{"fullUrl": "urn:uuid:aa000000-0000-4000-8000-000000000001",
"resource": {"resourceType": "Encounter", "status": "finished",
"class": {"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "AMB", "display": "ambulatory"},
"subject": {"reference": "Patient/'$PID'"},
"serviceProvider": {"reference": "Organization/'$ORG'"},
"participant": [{"individual": {"reference": "PractitionerRole/'$ROLE'"}}],
"period": {"start": "2026-10-09T10:00:00Z", "end": "2026-10-09T10:30:00Z"}},
"request": {"method": "POST", "url": "Encounter"}},
{"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": "8867-4", "display": "Heart rate"}]},
"subject": {"reference": "Patient/'$PID'"},
"encounter": {"reference": "urn:uuid:aa000000-0000-4000-8000-000000000001"},
"effectiveDateTime": "2026-10-09T10:10:00Z",
"valueQuantity": {"value": 92, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"}},
"request": {"method": "POST", "url": "Observation"}},
{"resource": {"resourceType": "Condition",
"subject": {"reference": "Patient/'$PID'"},
"encounter": {"reference": "urn:uuid:aa000000-0000-4000-8000-000000000001"},
"clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
"verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "provisional"}]},
"code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I48.0", "display": "Paroxysmal atrial fibrillation"}]}},
"request": {"method": "POST", "url": "Condition"}}
]}'
transaction-response में Encounter, Observation और Condition के लिए 201 Created हैं। Observation और Condition अब वास्तविक Encounter/0ca25459-… की ओर इशारा करते हैं। प्रत्येक का Provenance डॉक्टर की भूमिका, क्लिनिक और स्रोत सिस्टम का नाम देता है:
"agent": [{"who": {"reference": "PractitionerRole/e6d8c227-…",
"identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "practitioner"}},
"onBehalfOf": {"reference": "Organization/c3a56a4b-…", "display": "Clinica Cardio Nord"}}],
"entity": [{"role": "source", "what": {"identifier": {"system": "ccn-emr"}}}]
निदान की पुष्टि होने तक provisional है। बाद में इसे confirmed में अपडेट करें, और इतिहास दोनों को रखता है। प्रत्येक फ़ील्ड का क्या मतलब है, यह Medical data provenance explained में समझाया गया है।
चरण 4: प्रयोगशाला परिणाम और दस्तावेज़
क्लिनिक की अपनी प्रयोगशाला के परिणाम, या मरीज़ द्वारा लाए गए रिपोर्ट, प्रति रिपोर्ट एक अनुरोध में लैब कनेक्टर के माध्यम से जाते हैं:
curl -X POST "https://platform.anpheros.com/v1/patients/$PID/labs/import" -H "Authorization: Bearer $KEY" \
-H "Content-Type: x-application/hl7-v2+er7" -H "X-Anpheros-Source-System: ccn-lab" --data-binary @oru.hl7
पत्र और डिस्चार्ज सारांश दस्तावेज़ हैं: DocumentReference के माध्यम से /v1/patients/{id}/documents बनाएं और पीडीएफ अपलोड करें। मूल फ़ाइल को कभी भी संशोधित नहीं किया जाता है, और उससे निकाले गए मान उसी की ओर इंगित करते हैं। FHIR रिकॉर्ड में प्रयोगशाला परिणाम कैसे आयात करें और मेडिकल डेटा API देखें।
चरण 5: अन्य प्रदाताओं द्वारा लिखी गई बातों को पढ़ें, और अपनी सीमा में रहें
रोगी की सहमति से, क्लिनिक अपने स्कोप के भीतर पूरे रिकॉर्ड को पढ़ता है, जिसमें अन्य क्लिनिक, प्रयोगशालाएं और रोगी द्वारा जोड़ी गई जानकारी शामिल है। यह केवल वही बदल सकता है जो उसने स्वयं लिखा है। किसी अन्य संगठन के संसाधन को अपडेट या डिलीट करने पर 403 का जवाब मिलता है, और मूल वैसा ही रहता है। किसी अन्य प्रदाता द्वारा लिखी गई किसी चीज़ को ठीक करने के लिए, अपना स्वयं का संसाधन लिखें (उदाहरण के लिए, आपके मूल्यांकन के साथ एक नया Condition) और रिकॉर्ड को दोनों को दिखाने दें, प्रत्येक अपने लेखक के साथ।
विज़िट से पहले, GET $BASE/Patient/$PID/$summary रिकॉर्ड का अंतर्राष्ट्रीय रोगी सारांश (International Patient Summary) प्रदान करता है: हर स्रोत से समस्याएं, दवाएं, एलर्जी और हाल के महत्वपूर्ण संकेत।
चरण 6: नए डेटा के बारे में सुनें
क्लिनिक के प्रोजेक्ट के लिए एक बार वेबहुक रजिस्टर करें:
curl -X POST https://platform.anpheros.com/v1/webhooks -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"url": "https://ccn.example/anpheros/hook", "events": ["resource.created", "resource.updated", "consent.revoked"]}'
जब कोई दूसरा प्रोजेक्ट ऐसे रिकॉर्ड में लिखता है जिसे आपका क्लिनिक एक्सेस कर सकता है, तो इवेंट data.external: true और स्रोत के साथ इसकी सूचना देता है, ताकि आपका EMR पोलिंग के बिना "किसी अन्य प्रयोगशाला से नए परिणाम" दिखा सके। consent.revoked इवेंट का मतलब है कि व्यक्ति ने क्लिनिक का एक्सेस वापस ले लिया है: उस रिकॉर्ड को सिंक करना बंद कर दें। हस्ताक्षर, पुनः प्रयास और पेलोड वेबहुक में कवर किए गए हैं।
मरीज़ क्या देखता है
मरीज़ अपने रिकॉर्ड में विज़िट, हार्ट रेट और प्रोविज़नल डायग्नोसिस देखता है, जिनमें से प्रत्येक को डॉ. एना पोपेस्कु द्वारा क्लिनिका कार्डियो नॉर्ड में जोड़ा गया के रूप में चिह्नित किया गया है। अपने कनेक्शन में, क्लिनिक का एप्लिकेशन हर एक्सेस को सूचीबद्ध करता है, जब कोई प्रैक्टिशनर कार्य कर रहा था तो नाम से। यह पारदर्शिता ही वह है जो मरीज़ों को अगले क्लिनिक तक पहुँच प्रदान करने के लिए तैयार करती है।
लाइव जाने के लिए चेकलिस्ट
- [ ] संगठन, प्रैक्टिशनर और प्रैक्टिशनररोल्स पंजीकृत; छोड़ने वालों को निष्क्रिय पर सेट किया गया
- [ ] मरीज़ों को क्लिनिक के पहचानकर्ता द्वारा मिलान किया गया, कभी भी नाम से नहीं
- [ ] मौजूदा रिकॉर्ड्स OAuth सहमति के माध्यम से पहुंचे, डुप्लिकेट नहीं
- [ ] क्लिनिकल स्टाफ से हर अनुरोध
X-Anpheros-Acting-Asलेकर आता है - [ ] विज़िट को ट्रांज़ैक्शन के रूप में लिखा गया; सही सत्यापन स्थिति के साथ निदान
- [ ] हर राइट पर सोर्स सिस्टम सेट किया गया; कनेक्टर के माध्यम से लैब रिपोर्ट
- [ ] वेबहुक एंडपॉइंट सिग्नेचर सत्यापित कर रहा है;
consent.revokedको संभाला गया - [ ] हस्ताक्षरित DPA (
sk_live_…कीज़) के साथ प्रोडक्शन प्रोजेक्ट; मूल्य निर्धारण देखें
अक्सर पूछे जाने वाले प्रश्न
क्या Anpheros के पास मेरे EMR के लिए एक तैयार कनेक्टर है?
नहीं। विशिष्ट EMRs या प्रयोगशाला प्रणालियों के लिए कोई तैयार कनेक्टर नहीं हैं; एकीकरण FHIR R4 और REST API के विरुद्ध बनाया गया है, आमतौर पर EMR के बगल में एक छोटी सेवा के रूप में। HL7 v2 लैब संदेशों को वैसे ही स्वीकार किया जाता है।
क्या कोई डॉक्टर दो क्लीनिकों के लिए काम कर सकता है?
हाँ। एक Practitioner के पास प्रत्येक संगठन में एक PractitionerRole हो सकता है। X-Anpheros-Acting-As में उल्लिखित भूमिका तय करती है कि प्रत्येक राइट किस क्लिनिक के लिए रिकॉर्ड किया गया है।
जब मरीज़ क्लिनिक की पहुँच रद्द कर देता है तो क्या होता है?
उस रिकॉर्ड के लिए क्लिनिक के कॉल 401 का जवाब देते हैं, और एक consent.revoked वेबहुक भेजा जाता है। क्लिनिक ने जो लिखा है वह उसकी उत्पत्ति के साथ मरीज़ के रिकॉर्ड में रहता है; क्लिनिक अब उसे पढ़ या बदल नहीं सकता है।
संबंधित
- हेल्थकेयर इंटीग्रेशन: सभी इंटीग्रेशन पैटर्न एक नज़र में
- मेडिकल डेटा प्रोवेनेंस समझाया गया
- SMART on FHIR के साथ पेशेंट कंसेंट कैसे लागू करें
- FHIR रिकॉर्ड में लैब परिणाम कैसे इम्पोर्ट करें
- हेल्थकेयर डेटा इंटरऑपरेबिलिटी
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card