FHIR

FHIR सब्सक्रिप्शन को समझना: R4, R4B और R5 में टॉपिक्स, चैनल्स और नोटिफिकेशन्स

FHIR सब्सक्रिप्शन सर्वर से कहता है कि जब कुछ बदले तो आपको कॉल करे। R4 का क्राइटेरिया-आधारित मॉडल कैसे काम करता है, R4B और R5 SubscriptionTopic पर क्यों गए, rest-hook, websocket और message चैनल क्या देते हैं, नोटिफिकेशन बंडल में क्या होता है, और Subscriptions Backport नए मॉडल को R4 में कैसे लाता है।

द्वारा प्रकाशित 7 मिनट पढ़ें

संक्षिप्त उत्तर: एक Subscription FHIR सर्वर को बताता है इन शर्तों से मेल खाने वाले संसाधनों में बदलाव होने पर इस एंडपॉइंट को सूचित करें। FHIR R4 में, शर्तें एक खोज स्ट्रिंग (criteria: "Observation?patient=123&code=85354-9") होती हैं और सर्वर मिलान वाले संसाधन को एक REST हुक, एक वेबसॉकेट, एक ईमेल या एक FHIR संदेश पर भेजता है। R4B और R5 में, मॉडल को SubscriptionTopic के आसपास फिर से बनाया गया था: सर्वर उन घटनाओं को प्रकाशित करता है जिनके बारे में वह सूचित कर सकता है, क्लाइंट फ़िल्टर के साथ एक विषय की सदस्यता लेता है, और सूचनाएं subscription-notification प्रकार के बंडल के रूप में आती हैं जो हमेशा SubscriptionStatus संसाधन से शुरू होती हैं। Subscriptions R5 Backport कार्यान्वयन गाइड R4 सर्वर को नया मॉडल पेश करने की अनुमति देता है।

R4: मानदंड-आधारित सदस्यताएँ

FHIR R4 में, एक सदस्यता मानदंड-आधारित होती है: क्लाइंट एक सदस्यता संसाधन बनाता है जिसका मानदंड एक खोज स्ट्रिंग होता है जैसे Observation?code=…&patient=… और जिसका चैनल रेस्ट-हुक, वेबसॉकेट, ईमेल, एसएमएस या संदेश होता है। सर्वर प्रत्येक मिलान वाले संसाधन, या एक खाली सूचना को एंडपॉइंट पर पोस्ट करके, प्रत्येक निर्माण और अद्यतन के विरुद्ध मानदंड का मूल्यांकन करता है।

{
  "resourceType": "Subscription",
  "status": "requested",
  "reason": "Blood pressure alerts for the hypertension clinic",
  "criteria": "Observation?code=http://loinc.org|85354-9&patient=Patient/123",
  "channel": {
    "type": "rest-hook",
    "endpoint": "https://clinic.example.org/hooks/bp",
    "payload": "application/fhir+json",
    "header": ["Authorization: Bearer <token>"]
  }
}

सर्वर प्रत्येक निर्माण और अद्यतन के विरुद्ध मानदंड का मूल्यांकन करता है। जब कोई संसाधन मेल खाता है, तो यह उसे एंडपॉइंट पर POST करता है (या यदि payload छोड़ा गया है तो एक खाली बॉडी POST करता है, ताकि क्लाइंट स्वयं संसाधन प्राप्त कर सके)। यह काम करता था, लेकिन तीन समस्याओं के साथ: सर्वर यह नहीं बता सकते थे कि वे कौन से मानदंड का समर्थन करते हैं, क्लाइंट छूटी हुई सूचना को शांत अवधि से अलग नहीं बता सकते थे, और "एक संसाधन एक खोज से मेल खाता है" "एक घटना हुई" के समान नहीं है (एक Encounter का समाप्त होना खोज के रूप में व्यक्त करने योग्य नहीं है)।

R4B और R5: विषय-आधारित सदस्यताएँ

FHIR R4B और R5 में, सदस्यताएँ विषय-आधारित होती हैं। सर्वर घटनाओं (संसाधन, एक ट्रिगर जैसे निर्माण, अद्यतन, विलोपन या एक FHIRPath शर्त, और अनुमत फ़िल्टर) का वर्णन करने वाले SubscriptionTopic संसाधन प्रकाशित करता है। एक ग्राहक फ़िल्टरBy मानों, एक चैनल प्रकार, एक एंडपॉइंट, एक हार्टबीट अवधि और खाली, केवल-आईडी या पूर्ण-संसाधन की सामग्री सेटिंग के साथ एक विषय को इंगित करने वाली एक सदस्यता बनाता है।

SubscriptionTopic एक संसाधन है जिसे सर्वर प्रकाशित करता है, जो एक घटना का वर्णन करता है: कौन सा संसाधन, कौन सा ट्रिगर (निर्माण, अद्यतन, हटाना, या FHIRPath शर्त जैसे %previous.status != 'finished' and %current.status = 'finished'), और कौन से फ़िल्टर एक ग्राहक उपयोग कर सकता है। ग्राहक तब विषय को इंगित करने वाली एक Subscription बनाता है:

{
  "resourceType": "Subscription",
  "status": "requested",
  "topic": "http://example.org/fhir/SubscriptionTopic/encounter-end",
  "filterBy": [{"resourceType": "Encounter", "filterParameter": "patient", "value": "Patient/123"}],
  "channelType": {"system": "http://terminology.hl7.org/CodeSystem/subscription-channel-type", "code": "rest-hook"},
  "endpoint": "https://clinic.example.org/hooks/encounters",
  "heartbeatPeriod": 60,
  "timeout": 30,
  "contentType": "application/fhir+json",
  "content": "id-only"
}

content चुनता है कि कितना यात्रा करता है: empty (केवल घटना), id-only (संदर्भ, अपने स्वयं के प्राधिकरण के साथ बाकी प्राप्त करें), या full-resource। heartbeatPeriod सर्वर को एक हार्टबीट भेजने के लिए बनाता है ताकि मौन का पता लगाया जा सके।

एक सूचना कैसी दिखती है

एक FHIR सदस्यता सूचना subscription-notification प्रकार का एक बंडल है जिसका पहला प्रविष्टि एक SubscriptionStatus संसाधन है जो सदस्यता, विषय, सूचना प्रकार (हैंडशेक, हार्टबीट, इवेंट-नोटिफिकेशन, क्वेरी-स्टेटस या क्वेरी-इवेंट) और छूटी हुई घटनाओं का पता लगाने के लिए एक eventsSinceSubscriptionStart काउंटर देता है। सामग्री सेटिंग के आधार पर आगे की प्रविष्टियाँ बदले हुए संसाधनों या उनके संदर्भों को ले जाती हैं।

हर सूचना subscription-notification प्रकार का एक बंडल होती है। इसकी पहली प्रविष्टि SubscriptionStatus होती है जिसमें सदस्यता संदर्भ, विषय, सूचना का प्रकार (handshake, heartbeat, event-notification, query-status, query-event) और एक eventsSinceSubscriptionStart काउंटर होता है; काउंटर में एक गैप का मतलब छूटी हुई घटना है, और क्लाइंट इसे पुनर्प्राप्त करने के लिए $events को कॉल कर सकता है। सामग्री के आधार पर आगे की प्रविष्टियाँ संसाधनों या उनके संदर्भों को ले जाती हैं।

चैनल: rest-hook (सर्वर आपके HTTPS एंडपॉइंट पर POST करता है), websocket (क्लाइंट सॉकेट पर सूचनाएँ कनेक्ट और प्राप्त करता है, ब्राउज़र ऐप्स के लिए उपयोगी), email (केवल सूचना, डेटा नहीं), message (एक FHIR संदेश बंडल)। R4 sms चैनल को छोड़ दिया गया था।

उत्पादन में चलाना

उत्पादन में FHIR सदस्यताएँ चलाने के लिए घटना संख्या और संसाधन संस्करण पर आधारित आइडम्पोटेंट हैंडलिंग, प्रेषक को सत्यापित करने वाली एंडपॉइंट सुरक्षा और पेलोड को कभी भी प्राधिकरण के रूप में नहीं मानने की आवश्यकता होती है, कई घटनाओं वाले बैच वाले बंडलों के लिए सहनशीलता, प्रारंभिक हैंडशेक सूचना के लिए 2xx प्रतिक्रिया, और यह जागरूकता कि कई सर्वर अभी भी सदस्यता को बैकएंड सेवाओं तक सीमित करते हैं, न कि रोगी ऐप्स तक।

  • Idempotency. पुनः प्रयास के बाद सूचनाएँ डुप्लिकेट हो सकती हैं; घटना संख्या और संसाधन संस्करण पर कुंजी।
  • सुरक्षा। एंडपॉइंट को प्रेषक को सत्यापित करना चाहिए (एक साझा गुप्त हेडर, पारस्परिक TLS या हस्ताक्षर) और प्राधिकरण के रूप में पेलोड पर कभी भरोसा नहीं करना चाहिए; जब content id-only हो तो अपने स्वयं के टोकन के साथ सर्वर से संवेदनशील डेटा वापस प्राप्त करें।
  • Backpressure. सर्वर घटनाओं को बैच करते हैं और maxCount का सम्मान करते हैं; क्लाइंट को कई घटनाओं वाले बंडलों को स्वीकार करना चाहिए।
  • Handshake. सक्रियण पर सर्वर एक handshake सूचना भेजता है और 2xx की अपेक्षा करता है; अन्यथा सदस्यता error में चली जाती है।
  • Scopes. SMART on FHIR ने धीरे-धीरे सब्सक्रिप्शन स्कोप जोड़े; कई सर्वर अभी भी सब्सक्रिप्शन को रोगी ऐप्स के बजाय बैकएंड सेवाओं (क्लाइंट क्रेडेंशियल) तक सीमित करते हैं।

वेबहुक जो FHIR सब्सक्रिप्शन नहीं हैं

वेबहुक जो FHIR सदस्यताएँ नहीं हैं, वे सादे प्लेटफ़ॉर्म तंत्र हैं: आप एक HTTPS URL पंजीकृत करते हैं और SubscriptionTopic के बिना, संसाधन लिखे जाने या सहमति बदले जाने जैसी हस्ताक्षरित JSON घटनाएँ प्राप्त करते हैं। Anpheros ऐसे वेबहुक प्रदान करता है। वे एक प्लेटफ़ॉर्म के लिए सरल होते हैं लेकिन एक सामान्य FHIR क्लाइंट द्वारा खोजने योग्य नहीं होते हैं, इसलिए किसी भी FHIR सर्वर के विरुद्ध काम करने वाले एकीकरण सदस्यता का उपयोग करते हैं।

Anpheros सहित कई प्लेटफ़ॉर्म, सादे वेबहुक प्रदान करते हैं: आप एक HTTPS URL पंजीकृत करते हैं और हस्ताक्षरित JSON ईवेंट प्राप्त करते हैं जैसे संसाधन लिखा गया, सहमति बदली गई, दस्तावेज़ अंतिम रूप दिया गया। वे कम औपचारिकता और बिना SubscriptionTopic के समान आवश्यकता को हल करते हैं, और वे FHIR संसाधन नहीं हैं, इसलिए एक सामान्य FHIR क्लाइंट उन्हें खोज नहीं सकता है। यदि आपका एकीकरण किसी भी FHIR सर्वर के विरुद्ध काम करना चाहिए, तो सब्सक्रिप्शन का उपयोग करें; यदि यह एक प्लेटफ़ॉर्म को लक्षित करता है, तो इसके वेबहुक आमतौर पर सरल होते हैं। Anpheros डेवलपर साइट (नीचे लिंक) पर अपने वेबहुक का दस्तावेजीकरण करता है।

संबंधित पृष्ठ

स्रोत

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

क्या मैं R4 सर्वर पर R5-शैली की सदस्यताएँ उपयोग कर सकता हूँ?

हाँ, यदि सर्वर Subscriptions R5 Backport कार्यान्वयन गाइड को लागू करता है, जो R4 Subscription संसाधन पर एक्सटेंशन के रूप में विषय, फ़िल्टर और चैनल सेटिंग्स को एन्कोड करता है और सूचनाओं के लिए R4 बंडलों का उपयोग करता है।

Subscription और _lastUpdated के साथ पोलिंग के बीच क्या अंतर है?

पोलिंग बार-बार सर्वर से पूछता है और कुछ भी नहीं चूकता है लेकिन धीमा और बेकार है; सब्सक्रिप्शन घटनाओं को होते ही पुश करते हैं। मजबूत क्लाइंट दोनों को जोड़ते हैं: गति के लिए सदस्यता लें, डाउनटाइम के बाद ठीक होने के लिए पोल करें या $events को कॉल करें।

क्या सूचना में डेटा होता है?

केवल तभी जब सामग्री full-resource हो। सुरक्षित डिफ़ॉल्ट id-only है: सूचना आपको बताती है कि कौन सा संसाधन बदला है, और आप इसे अपने स्वयं के प्राधिकरण के साथ प्राप्त करते हैं।

क्या FHIR सब्सक्रिप्शन वेबहुक के समान हैं?

एक रेस्ट-हुक सब्सक्रिप्शन एक FHIR-परिभाषित आकार के साथ एक वेबहुक है: खोजने योग्य विषय, मानक सूचना बंडल और स्थिति ट्रैकिंग। एक प्लेटफ़ॉर्म द्वारा पेश किए जाने वाले सादे वेबहुक केवल उस प्लेटफ़ॉर्म के लिए समान काम करते हैं।

Anpheros Platform

सैंडबॉक्स में मुफ़्त आज़माएँ

5 मिनट में आपकी पहली FHIR कॉल. एक HL7 FHIR R4 API जिसमें मरीज़ की सहमति शामिल है: सैंडबॉक्स में आज़माएं, फिर अपना ऐप या क्लिनिक सिस्टम कनेक्ट करें।

मुफ़्त · 30 सिंथेटिक मरीज़ · कोई कार्ड नहीं

यह गाइड केवल जानकारी के लिए है और चिकित्सा सलाह का विकल्प नहीं है। अपने स्वास्थ्य संबंधी निर्णयों के लिए, अपने डॉक्टर से बात करें। आपात स्थिति में अपने स्थानीय आपातकालीन नंबर पर कॉल करें (यूरोप में 112)।
द्वारा लिखित
Anpheros टीम

Anpheros एक मेडिकल रिकॉर्ड बनाता है जिसे मरीज़ नियंत्रित कर सकता है और किसी भी क्लिनिक के साथ साझा कर सकता है, यह EU में स्थित HL7 FHIR R4 प्लेटफ़ॉर्म पर आधारित है। ये गाइड आपको अपने स्वास्थ्य को समझने और व्यवस्थित करने में मदद करते हैं; ये आपके डॉक्टर का विकल्प नहीं हैं।

Anpheros के बारे में →