OHS और Google Cloud की मदद से, Android ऐप्लिकेशन से FHIR का डेटा मैनेज करें

1. परिचय

इस कोडलैब में, हम OHS (Open Health Stack) और Google Cloud Healthcare API का इस्तेमाल करके, स्वास्थ्य सेवा से जुड़े ऐसे इनोवेटिव समाधान बनाने का तरीका जानेंगे जो सुरक्षित, स्केलेबल, और नियमों के मुताबिक हों. इन पावरफ़ुल टूल के कॉम्बिनेशन से, स्वास्थ्य सेवा से जुड़े कर्मचारियों और डेवलपर को डेटा पर आधारित समाधान बनाने में मदद मिलती है. इससे, मरीज़ की देखभाल और उसके नतीजों को बेहतर बनाया जा सकता है.

हम एक ऐसे मोबाइल ऐप्लिकेशन में Open Health Stack और Google Cloud Healthcare API का इस्तेमाल करेंगे जो Android-FHIR SDK का इस्तेमाल करता है. इससे, उपयोगकर्ता Google Cloud में FHIR के मरीज़ों के रिकॉर्ड मैनेज कर सकेंगे.

आइए, इसे लागू करने के चरणों के बारे में जानते हैं.

आप क्या बनाएंगे

इसे लागू करने के दौरान,

  • हम सवालों के जवाब देने के लिए, स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी का इस्तेमाल करेंगे. साथ ही, जवाब के FHIR कॉन्टेंट को सेव करने के लिए, FHIR इंजन लाइब्रेरी का इस्तेमाल करेंगे
  • इसके बाद, Cloud Healthcare API का इस्तेमाल करके, डेटा को Cloud FHIR Store पर अपलोड किया जाएगा
  • अपलोड करने से पहले, हम Firebase का इस्तेमाल करके अपनी पुष्टि करेंगे

8514f90f016ecfc0.png

ऊपर दिया गया डायग्राम, फ़्लो दिखाता है. हर कॉम्पोनेंट के बारे में ज़्यादा जानकारी पाने के लिए, ब्लॉग पढ़ें.

2. ज़रूरी शर्तें

  • कोई ब्राउज़र, जैसे कि Chrome या Firefox
  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट
  • Android Studio का नया वर्शन
  • सेट अप किया गया Android एम्युलेटर (अपने फ़िज़िकल Android डिवाइस का भी इस्तेमाल किया जा सकता है)

अपना प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर जाकर, कोई Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है या नहीं, यह देखने का तरीका जानें.
  3. ज़रूरी एपीआई (BigQuery, Healthcare API) चालू करें

Cloud Shell चालू करना

  1. आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसमें bq पहले से लोड होता है:

Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद, Cloud Shell चालू करें पर क्लिक करें:

51622c00acec2fa.png

  1. Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट पहले से ही आपके प्रोजेक्ट आईडी पर सेट है. अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए, यह कमांड इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>

gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.

3. Healthcare API सेट अप करना

  1. पक्का करें कि Healthcare API चालू हो: Google Cloud Console की एपीआई लाइब्रेरी पर जाएं, Healthcare API खोजें, चालू करें पर क्लिक करें. इससे एपीआई चालू हो जाएगा और प्रोजेक्ट में Healthcare सेवा खाता जुड़ जाएगा
  2. सेवा खाते को BigQuery के एडमिन की अनुमतियां देना. अनुमति देने के लिए, Cloud Shell टर्मिनल में gcloud का यह कमांड चलाएं:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com  --role=roles/bigquery.admin

ध्यान दें: आपको कंसोल से अपना PROJECT_ID और PROJECT_NUMBER मिल सकता है. इसकी पहचान करने के लिए, दस्तावेज़ देखें.

हेल्थकेयर डेटासेट बनाना

हेल्थकेयर डेटासेट बनाने के लिए, Cloud Shell में यह कमांड चलाएं:

gcloud beta healthcare datasets create <<DATASET_ID>> --location=us-central1

जगह को किसी इलाके पर सेट करें.

FHIR डेटास्टोर बनाना

FHIR डेटास्टोर बनाने के लिए, Cloud Shell में यह कमांड चलाएं:

gcloud beta healthcare fhir-stores create <<FHIR_STORE>> \
  --dataset=<<DATASET_ID>> --location=us-central1 --version=r4

जगह को किसी इलाके पर सेट करें.

4. BigQuery सेट अप करना और स्ट्रीमिंग करना

इसमें, FHIR Store का डेटा BigQuery डेटासेट में सेव करने के बारे में बताया गया है, ताकि BigQuery और BQML की मदद से, डेटा की क्वेरी की जा सके, उसे प्रोग्राम किया जा सके, और उसका विश्लेषण किया जा सके.

BigQuery डेटासेट बनाना

BigQuery डेटासेट, टेबल का कलेक्शन होता है. डेटासेट की सभी टेबल, एक ही डेटा जगह पर सेव होती हैं. डेटासेट और उसकी टेबल के ऐक्सेस को सीमित करने के लिए, कस्टम ऐक्सेस कंट्रोल भी जोड़े जा सकते हैं.

Cloud Shell में, यह कमांड चलाएं:

bq mk --location=us-central1 --dataset <<PROJECT_ID>>:<<BQ_DATASET>>

जगह को किसी इलाके पर सेट करें.

BigQuery स्ट्रीमिंग बनाना

FHIR स्टोर में, FHIR रिसॉर्स के बनने, अपडेट होने, पैच होने या मिटने पर, रिसॉर्स में हुए बदलावों को BigQuery में एक्सपोर्ट करने के लिए, स्ट्रीमिंग की ज़रूरत होती है. हर स्टोर में, ज़्यादा से ज़्यादा 10 स्ट्रीमिंग कॉन्फ़िगरेशन हो सकते हैं.

  1. Google Cloud Healthcare कंसोल के ब्राउज़र पेज पर जाएं
  2. हाल ही में बनाए गए डेटासेट पर क्लिक करें
  3. हाल ही में बनाए गए डेटा स्टोर पर क्लिक करें 7acaa364337086aa.png
  4. नया स्ट्रीमिंग कॉन्फ़िगरेशन जोड़ें पर क्लिक करें

caa2cc881d3406aa.png

  1. सूची में से, हाल ही में बनाया गया BigQuery डेटासेट, स्कीमा टाइप के तौर पर "Analytics V2", और रिसॉर्स टाइप के तौर पर "मरीज़" चुनें. सूची में से, जितने चाहें उतने रिसॉर्स टाइप चुने जा सकते हैं. इसके बाद, हो गया पर क्लिक करें

1e038c694fcca1ef.png

हो गया. अब FHIR स्टोर का डेटा सेव किया जा सकता है और उसे BigQuery में स्ट्रीम किया जा सकता है.

5. Cloud Functions (Healthcare API का इस्तेमाल करके, R4 डेटा को FHIR डेटास्टोर में लिखना)

Cloud Functions की मदद से, बिना सर्वर के कोड लिखा जा सकता है और उसे क्लाउड पर डिप्लॉय किया जा सकता है. यह स्केलेबल है. इसमें इस्तेमाल के हिसाब से शुल्क लगता है. यह इवेंट-ड्रिवन है. साथ ही, टेक्नोलॉजी और भाषा के मामले में यह ओपन है. ज़्यादा सुविधाओं के बारे में जानने के लिए, दस्तावेज़ देखें.

हम जो फ़ंक्शन लिखेंगे उसका मकसद, Cloud Healthcare API का इस्तेमाल करके, FHIR R4 फ़ॉर्मैट में आने वाले डेटा की पुष्टि करना और उसे FHIR डेटा स्टोर में लिखना है. Cloud Function बनाने के लिए:

  1. Cloud Functions पर जाएं और फ़ंक्शन बनाएं पर क्लिक करें
  2. नाम को fhir-datastore-proxy, इलाके को us-central1, और पुष्टि करने के विकल्प को "पुष्टि ज़रूरी है" पर सेट करें
  3. रनटाइम, बिल्ड, कनेक्शन, और सुरक्षा सेटिंग को बड़ा करें. आपको पांच रनटाइम एनवायरमेंट वैरिएबल जोड़ने होंगे:

नाम: CLOUD_FUNCTIONS_ENDPOINT | वैल्यू: फ़ंक्शन का यूआरएल एंडपॉइंट. यह आपको ऊपर दिए गए पुष्टि करने वाले ब्लॉक में दिखेगा. इसका फ़ॉर्मैट यह होगा: https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy

नाम: PROJECT_ID | वैल्यू: आपका प्रोजेक्ट आईडी

नाम: DATASET_LOCATION | वैल्यू: आपके FHIR डेटास्टोर की जगह

नाम: DATASET_ID | वैल्यू: हेल्थकेयर डेटास्टोर आईडी

नाम: FHIR_STORE_ID | वैल्यू: FHIR स्टोर आईडी

  1. अगले पेज पर जाने के लिए, अगला बटन दबाएं. इस पेज पर हम अपना कोड जोड़ेंगे
  2. अब इनलाइन एडिटर दिखना चाहिए. भाषा के तौर पर Java 17 चुनें. इसके बाद, HelloHttpFunction.java क्लास पर जाएं. इसका नाम बदलकर FhirDatastoreProxy.java करें. एंट्री पॉइंट का नाम बदलकर gcfv2.FhirDatastoreProxy करना न भूलें
  3. रिपो से कोड कॉपी करें और उसे इनलाइन एडिटर में चिपकाएं
  4. pom.xml फ़ाइल पर जाएं. इसके बाद, रिपो में मौजूद pom फ़ाइल को कॉपी करके, इनलाइन एडिटर में चिपकाएं
  5. डिप्लॉय करें पर क्लिक करें. इससे आपका फ़ंक्शन बन जाएगा और जल्द ही चलने लगेगा

ध्यान दें:

  1. इस फ़ंक्शन में इस्तेमाल किया गया Cloud Healthcare API, Healthcare API पर आने वाले अनुरोधों की पुष्टि करने के लिए, ऐप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करता है
  2. डिप्लॉय किए गए फ़ंक्शन का यूआरएल सेव करें, ताकि इसे Android ऐप्लिकेशन से शुरू किया जा सके. अब तक हमने Android ऐप्लिकेशन के लिए ज़रूरी सभी चीज़ें बना ली हैं, ताकि वह Healthcare API का इस्तेमाल करके, FHIR डेटा को BigQuery में लिख सके. अब पक्का करें कि सभी चीज़ें कनेक्ट हों और सवालों के जवाब सबमिट करने पर, एपीआई शुरू हो जाए.

6. Android प्रोजेक्ट और Firebase सेट अप करना

हम Android Studio के नए वर्शन और सेट अप किए गए Android एम्युलेटर का इस्तेमाल करेंगे. अपने फ़िज़िकल Android डिवाइस का भी इस्तेमाल किया जा सकता है. सेट अप होने के बाद, यह तरीका अपनाएं:

  1. FHIR ऐप्लिकेशन के उदाहरणों वाला रिपो क्लोन करें: https://github.com/google/fhir-app-examples
  2. Android Studio खोलें. इसके बाद, इंपोर्ट प्रोजेक्ट (Gradle, Eclipse ADT वगैरह) चुनें. साथ ही, सोर्स कोड से cloudfunction/ फ़ोल्डर चुनें, जिसे आपने पहले डाउनलोड किया था. इसके बाद, app/google-services.json खोलें. यह खाली है. इसे भरना होगा.

./gradlew signingReport का इस्तेमाल करके, SHA-1 कुंजी जनरेट करें. साथ ही, डीबग वैरिएंट में SHA1 फ़ील्ड नोट करें

Firebase कंसोल का इस्तेमाल करके, ऐप्लिकेशन को Firebase में जोड़ें. इसके लिए, Firebase कंसोल का इस्तेमाल करके, पहला और दूसरा चरण पूरा करें. "डीबग साइनिंग सर्टिफ़िकेट SHA-1 " फ़ील्ड में, पिछले चरण की वैल्यू डालें

google-services.json डाउनलोड करें और Firebase से मिले कॉन्टेंट को, ऐप्लिकेशन फ़ोल्डर में मौजूद खाली फ़ाइल में बदलें

Firebase SDK को, Gradle फ़ाइलों में पहले ही जोड़ा जा चुका है

  1. FhirApplication.kt खोलें और baseUrl फ़ील्ड को अपने Cloud Function के यूआरएल पर सेट करें
  2. Android Studio के टूलबार से, "अपने प्रोजेक्ट को Gradle फ़ाइलों के साथ सिंक करें" चुनें

हमने अब लागू करने की प्रोसेस का सेट अप और डिपेंडेंसी शामिल करने वाला हिस्सा पूरा कर लिया है.

7. सवालों के जवाब देने के लिए, फ़ॉर्म सेट अप करना और जवाब देना

हमने रिपो में, सवालों के जवाब देने के लिए फ़ॉर्म सेट अप कर लिया है. हालांकि, आइए कोड पर नज़र डालते हैं:

  1. पक्का करें कि app/src/main/res/layout/activity_main.xml फ़ाइल में, ConstraintLayout के अंदर FragmentContainerView मौजूद हो
  2. पक्का करें कि फ़्रैगमेंट को रेंडर करने के लिए, QuestionnaireFragment में JSON कोड में बदला गया FHIR फ़ॉर्म मौजूद हो

इस मामले में, हम फ़्रैगमेंट को रेंडर करने के लिए, json - " new-patient-registration-paginated.json" का इस्तेमाल करेंगे. MainActivity.kt, AddPatientFragment.kt, और AddPatientViewModel.kt फ़ाइलें देखें

अब हमने फ़्रैगमेंट, json, और मॉडल की पुष्टि कर ली है. इसलिए, ऐप्लिकेशन चलाएं और सवालों के जवाब देने के लिए फ़ॉर्म में मौजूद फ़ील्ड में जवाब डालकर देखें

आपको स्ट्रिंग, तारीख, संख्या वाले फ़ील्ड, और अन्य शर्तों की पुष्टि दिखेगी

ऐप्लिकेशन चलाकर और लॉग देखकर, बनाया गया रिकॉर्ड देखा जा सकता है

9e1bb440074f1a88.png

फ़्रैगमेंट इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, यहां जाएं. सवालों के जवाब देने के लिए फ़ॉर्म और जवाब देने की सुविधा के सेटअप के लिए बस इतना ही.

8. FHIRStore और BigQuery डेटासेट के नतीजे दिखाना

अब हमने सेटअप और अपडेट कर लिए हैं. इसलिए, "अपने प्रोजेक्ट को Gradle फ़ाइलों के साथ सिंक करें" पर क्लिक करें. यह प्रक्रिया पूरी होने के बाद,

  1. Android एम्युलेटर पर ऐप्लिकेशन चलाएं और देखें कि सवालों के जवाब देने के लिए फ़ॉर्म लोड हो रहा है या नहीं
  2. सवालों के जवाब दें और सबसे ऊपर मौजूद, सबमिट करें पर क्लिक करें
  3. आपको ऐप्लिकेशन पर "मरीज़ की जानकारी सेव हो गई है" मैसेज दिखेगा

FHIR स्टोर के नतीजे देखना

Google Cloud Healthcare के FHIRViewer कंसोल पर जाएं

1064f03b4e1e45f5.png

अपना FHIR स्टोर चुनें, क्वेरी करें, और खोजें पर क्लिक करें. इसके बाद, आपको खोज के नतीजे ठीक नीचे दिखेंगे. 37a070480a06362c.png

BigQuery डेटासेट के नतीजे देखना

Google Cloud के BigQuery कंसोल पर जाएं. इसके बाद, एक्सप्लोरर पैनल पर जाकर, उस डेटासेट पर जाएं जिसे आपने इस प्रोजेक्ट के लिए बनाया है.

7c483ec6d578b8cd.png

पूर्वावलोकन पर क्लिक करें. इसके बाद, आपको BigQuery डेटासेट में वही संख्या और नतीजे दिखेंगे जो आपको Healthcare के FHIR स्टोर में मिले थे.

faafeae4a837a41c.png

अब क्लाउड डेटासेट में सेव किए गए FHIR डेटा पर, BigQuery SQL, Analytics, और ML किया जा सकता है.

9. खोज और ऑफ़लाइन सुविधा

OHS की मदद से चलने वाले Android FHIR SDK ऐप्लिकेशन पर ऑफ़लाइन सुविधा पक्का करने के लिए, डिज़ाइन के उस दिशा-निर्देश का पालन करें जिसे यहां बताई गई प्रोसेस में चालू करना होगा.

FHIR रिसॉर्स खोजने के दो तरीके हैं:

  1. Google Cloud Console में FHIR व्यूअर
  2. जीईटी या POST अनुरोधों का इस्तेमाल करके, FHIR खोजने का तरीका

10. ऐप्लिकेशन का डेमो

अब हमारा ऐप्लिकेशन बन गया है. आइए, इसे इस्तेमाल करके देखें और क्लाउड में इसके नतीजे देखें.

11. व्यवस्थित करें

इस पोस्ट में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते पर शुल्क लगने से बचने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं
  2. प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें
  3. डायलॉग में, प्रोजेक्ट आईडी डालें. इसके बाद, प्रोजेक्ट मिटाने के लिए, बंद करें पर क्लिक करें

12. बधाई हो

बधाई हो! इस प्रोजेक्ट में, हमने सिर्फ़ सात चरणों में, क्लाउड हेल्थकेयर के FHIR स्टोर और BigQuery डेटासेट पर, मरीज़ के FHIR डेटा को सेव करने और उसकी क्वेरी करने के लिए, Android ऐप्लिकेशन बनाया है. इसके लिए, हमने Cloud Healthcare API का इस्तेमाल किया है:

  1. Android ऐप्लिकेशन सेट अप करना
  2. Google Cloud Healthcare API सेट अप करना
  3. हेल्थकेयर डेटासेट और FHIR डेटास्टोर बनाना
  4. BigQuery डेटासेट बनाना
  5. FHIR डेटास्टोर का डेटा, BigQuery डेटासेट में लिखने के लिए, BigQuery स्ट्रीम कॉन्फ़िगर करना
  6. R4 डेटा को FHIR डेटास्टोर में लिखने के लिए, Cloud Function डिप्लॉय करना
  7. सवालों के जवाब देने के लिए फ़ॉर्म के जवाब सबमिट करने पर, Android ऐप्लिकेशन से Cloud Functions को ट्रिगर करना

अब चरण साफ़ तौर पर समझ आ गए हैं. इसलिए, मरीज़ के FHIR डेटा में किए गए बदलावों को क्लाउड पर सिंक करने के लिए, इन्हीं चरणों को आज़माएं.