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

1. परिचय

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

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

आइए, लागू करने के चरणों के बारे में ज़्यादा जानें.

आपको क्या बनाना होगा

इस तरीके को लागू करने पर,

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

8514f90f016ecfc0.png

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

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

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

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

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

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 API की लाइब्रेरी में जाएं और Healthcare API खोजें. इसके बाद, 'चालू करें' पर क्लिक करें. इसके बाद, एपीआई चालू हो जाएगा और प्रोजेक्ट में हेल्थकेयर सेवा खाता जोड़ दिया जाएगा
  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 डेटास्टोर बनाएं

Cloud Shell में, एफ़एचआईआर डेटा स्टोर बनाने के लिए नीचे दिया गया कमांड चलाएं:

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

जगह की जानकारी को क्षेत्र पर सेट करें.

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

इसमें FHIR स्टोर डेटा को 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 Console के ब्राउज़र पेज पर जाएं
  2. नए बनाए गए डेटासेट पर क्लिक करें
  3. नए बनाए गए 'डेटा स्टोर' 7acaa364337086aa.png पर क्लिक करें
  4. 'नया स्ट्रीमिंग कॉन्फ़िगरेशन जोड़ें' पर क्लिक करें

caa2cc881d3406aa.png

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

1e038c694fcca1ef.png

हो गया. आप FHIR स्टोर डेटा को सेव करने और उसे BigQuery में स्ट्रीम करने के लिए पूरी तरह तैयार हैं.

5. Cloud Functions (हेल्थकेयर एपीआई का इस्तेमाल करके एफ़एचआईआर डेटास्टोर में R4 डेटा लिखना)

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

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

  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. DEPLOY पर क्लिक करें. इससे आपका फ़ंक्शन जल्द ही बन जाएगा और चलने लगेगा

ध्यान दें:

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

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

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

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

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

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

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

Firebase SDK टूल को बिल्ड Gradle फ़ाइलों में पहले ही जोड़ा जा चुका है

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

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

7. सवालों की सूची का सेटअप और जवाब

रिपो में सवालों की सूची को पहले ही सेट अप कर दिया गया है. चलिए कोड के बारे में जानते हैं:

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

इस मामले में, हम json - " new-patient-registration-paginated.json&quot; फ़्रैगमेंट को रेंडर करने के लिए. फ़ाइलों की जांच करें MainActivity.kt, AddPatientFragment.kt, और AddPatientViewModel.kt

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

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

ऐप्लिकेशन चलाएं और लॉग देखकर अपना रिकॉर्ड बनाया गया

9e1bb440074f1a88.png

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

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

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

  1. Android Emulator पर ऐप्लिकेशन चलाएं और अपने सवालों की सूची का लोड देखें
  2. सवालों के जवाब दें और सबसे ऊपर 'सबमिट करें' पर क्लिक करें
  3. आपको "पेशावर को सेव किया गया है" मैसेज दिखेगा ऐप्लिकेशन पर

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

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

1064f03b4e1e45f5.png

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

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

Google Cloud BigQuery कंसोल पर जाएं और एक्सप्लोरर पैनल में जाकर, इस प्रोजेक्ट के लिए बनाए गए डेटासेट पर जाएं.

7c483ec6d578b8cd.png

'झलक देखें' पर क्लिक करने के बाद, आपको BigQuery डेटासेट में हेल्थकेयर एफ़एचआईआर स्टोर में मिली संख्या और नतीजे के तौर पर वही डेटा दिखेगा.

faafeae4a837a41c.png

आपने अभी-अभी क्लाउड डेटासेट में जो एफ़एचआईआर डेटा सेव किया है उस पर BigQuery एसक्यूएल, Analytics, और एमएल (मशीन लर्निंग) का इस्तेमाल किया जा सकता है.

9. खोज और ऑफ़लाइन क्षमता

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

एफ़एचआईआर के संसाधनों को खोजने के लिए, हमारे दो तरीके हैं:

  1. Google Cloud Console में FHIR व्यूअर
  2. जीईटी या पोस्ट अनुरोधों का इस्तेमाल करके एफ़एचआईआर सर्च मेथड

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

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

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

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

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

12. बधाई हो

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

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

अब आपने सभी चरणों को पूरा कर लिया है. इसलिए, पेशंट एफ़एचआईआर के एडिट को क्लाउड पर सिंक करने के लिए, इन चरणों को बेझिझक आज़माएं.