स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी की मदद से, स्वास्थ्य से जुड़ा डेटा कैप्चर करें और प्रोसेस करें

1. शुरू करने से पहले

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

इस कोडलैब में, स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी की मदद से Android ऐप्लिकेशन बनाने का तरीका बताया गया है. आपका ऐप्लिकेशन, FHIR सवालों की सूचियों और जवाबों को रेंडर और प्रोसेस करने के लिए, स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी का इस्तेमाल करेगा.

आप इन चीज़ों के बारे में जानेंगे

  • स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी को अपने Android ऐप्लिकेशन से जोड़ने का तरीका
  • प्रश्नावली कैसे प्रदर्शित करें
  • QuestionnaireResponse के तौर पर जवाब पाने का तरीका
  • QuestionnaireResponse से FHIR के संसाधन हासिल करने का तरीका

आपको इनकी ज़रूरत होगी

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

2. सेट अप करें

कोड डाउनलोड करें

इस कोडलैब का कोड डाउनलोड करने के लिए, Android FHIR SDK टूल के रेपो का क्लोन बनाएं: git clone https://github.com/google/android-fhir.git

इस कोडलैब का स्टार्टर प्रोजेक्ट codelabs/datacapture में मौजूद है.

ऐप्लिकेशन को Android Studio में इंपोर्ट करें

चलिए, Android Studio में स्टार्टर ऐप्लिकेशन इंपोर्ट करके शुरुआत करते हैं.

Android Studio खोलें, Import Project (Gredle, Eclipse ADT वगैरह) चुनें और पहले से डाउनलोड किए गए सोर्स कोड से codelabs/datacapture फ़ोल्डर चुनें.

Android Studio की शुरुआती स्क्रीन

स्टार्टर ऐप्लिकेशन चलाएं

अब जब आपने Android Studio में प्रोजेक्ट इंपोर्ट कर लिया है, तो अब आप इस ऐप्लिकेशन को पहली बार इस्तेमाल कर सकते हैं.

अपने Android डिवाइस को, यूएसबी के ज़रिए अपने होस्ट से कनेक्ट करें या Android Studio एम्युलेटर चालू करें. इसके बाद, Android Studio के टूलबार में, चलाएं ('रन' बटन) पर क्लिक करें.

Hello World ऐप्लिकेशन

आपको दिख रहा होगा कि अभी यहां बहुत कुछ नहीं है. इसलिए, आइए सीधे आपके ऐप्लिकेशन में सवालों की सूची दिखाने के बारे में बात करते हैं!

3. प्रोजेक्ट में स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी जोड़ना

स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी के लिए डिपेंडेंसी जोड़ें

स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी डिपेंडेंसी की मदद से, अपने ऐप्लिकेशन में स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी को इंटिग्रेट किया जा सकता है. अपने प्रोजेक्ट की app/build.gradle.kts फ़ाइल के आखिर में ये लाइनें जोड़ें:

dependencies {
    // ...

    implementation("com.google.android.fhir:data-capture:1.0.0")
    implementation("androidx.fragment:fragment-ktx:1.5.5")
}

अपने प्रोजेक्ट को Gradle फ़ाइलों के साथ सिंक करना

यह पक्का करने के लिए कि आपके ऐप्लिकेशन पर सभी डिपेंडेंसी उपलब्ध हों, आपको इस समय अपने प्रोजेक्ट को Gradle फ़ाइलों के साथ सिंक करना चाहिए.

Android Studio के टूलबार से, Gradle फ़ाइलों के साथ प्रोजेक्ट सिंक करें (ग्रेडल सिंकबटन) चुनें. साथ ही, ऐप्लिकेशन को फिर से चलाकर देखें कि डिपेंडेंसी ठीक से काम कर रही है या नहीं.

4. प्रश्नावली दिखाएं

इस चरण में, FragmentContainerView में सवालों की सूची को रेंडर करने के लिए, स्टार्टर ऐप्लिकेशन में सुविधा जोड़ी जाएगी.

इस दौरान, Android Studio आपको ज़रूरी इंपोर्ट जोड़ने का सुझाव देगा:

  • androidx.core.os.bundleOf
  • androidx.fragment.app.add
  • androidx.fragment.app.commit
  • android.util.Log
  • com.google.android.fhir.datacapture.QuestionnaireFragment

पहला चरण: FragmentContainerView जोड़ना

ऐप्लिकेशन के लेआउट में FragmentContainerView जोड़ें. बाद में बनाए जाने वाले QuestionnaireFragment यहां दिखेंगे.

  1. activity_main.xml (res > लेआउट > activity_main.xml) खोलें.
  2. लेआउट एडिटर में सबसे ऊपर दाईं ओर, कोड, स्प्लिट, और डिज़ाइन व्यू के विकल्प देखें.
  3. कोड व्यू चुनें. लेआउट व्यू के विकल्प अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  4. आपको TextView की ज़रूरत नहीं है, इसलिए इसे मिटा दें. <TextView से लेकर /> के क्लोज़िंग तक का पूरा डेटा ज़रूर मिटाएं.
  5. ConstraintLayout के अंदर FragmentContainerView जोड़ें. आपकी activity_main.xml फ़ाइल इसके जैसी दिखनी चाहिए:
    <?xml version="1.0" encoding="utf-8" ?>
    <androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
    >
    
    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragment_container_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

दूसरा चरण: FragmentContainerView में QuestionnaireFragment जोड़ना

QuestionnaireFragment को रेंडर करने के लिए, JSON कोड में बदली गई FHIR सवालों की सूची की ज़रूरत है. सवालों की सूची छोटी है (512 केबी से कम), इसलिए आपको इसे Bundle आर्ग्युमेंट में String के तौर पर शामिल करना होगा. इनका इस्तेमाल फ़्रैगमेंट बनाने के लिए किया जाएगा. परफ़ॉर्मेंस को ध्यान में रखते हुए, बड़े सवालों की सूची को URI के तौर पर दिया जाना चाहिए.

अगर आप चाहें, तो questionnaire.json फ़ाइल देख लें. स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी का एक फ़ायदा यह भी है कि आपको एफ़एचआईआर सवालों की सूची (या एफ़एचआईआर के बारे में कुछ भी) के बारे में जानने की ज़रूरत नहीं है! कोडलैब में बाद में, आप इस फ़ाइल को ज़्यादा बारीकी से देखेंगे.

इसके बिल्डर का इस्तेमाल करके, QuestionnaireFragment बनाएं और सेटर फ़ंक्शन का इस्तेमाल करके सवालों की सूची सेट करें. लेआउट कंटेनर में QuestionnaireFragment दिखाने के लिए, FragmentManager का इस्तेमाल करके FragmentTransaction बनाएं.

MainActivity.kt को खोलें और नीचे दिए गए कोड को MainActivity क्लास में जोड़ें:

// Step 2: Configure a QuestionnaireFragment
questionnaireJsonString = getStringFromAssets("questionnaire.json")

if (savedInstanceState == null) {
  supportFragmentManager.commit {
    setReorderingAllowed(true)
    add(
      R.id.fragment_container_view,
      QuestionnaireFragment.builder().setQuestionnaire(questionnaireJsonString!!).build()
    )
  }
}

फ़्रैगमेंट इस्तेमाल करने के तरीके के बारे में ज़्यादा जानें.

Android Studio के टूलबार में, 'चलाएं' (&#39;रन&#39; बटन) पर क्लिक करके कोडलैब चलाएं. आपको इससे मिलता-जुलता कुछ दिखेगा:

एम्युलेटर में सवालों की सूची रेंडर की गई

सवालों की सूची में नेविगेट करें और कुछ जवाब डालकर देखें. बूलियन, टेक्स्ट, और तारीखों के साथ-साथ कुछ अलग-अलग जवाब विजेट का इस्तेमाल किया गया है, जो एफ़एचआईआर की मूल सवालों की सूची में दिए गए टाइप के आधार पर अपने-आप रेंडर होते हैं.

तकनीकी तौर पर, सवालों की सूची बनाने के लिए आपको बस इतना ही करना होगा! बधाई हो!

अगर आपको उपयोगकर्ताओं के इनपुट नहीं दिख रहे हैं, तो सवालों की सूची से आपको ज़्यादा मदद नहीं मिलेगी. आइए, सवालों की सूची का जवाब पाने के अगले चरण पर चलते हैं!

5. सवालों की सूची का जवाब पाएं

पिछले चरणों में, आपने अपने ऐप्लिकेशन में एफ़एचआईआर से जुड़े सवालों की सूची बनाई थी.

इस सेक्शन में, आपको QuestionnaireResponse के तौर पर, सवालों की सूची से जवाब मिलेंगे.

submitQuestionnaire() तरीका ढूंढें और यह कोड जोड़ें:

// Get a questionnaire response
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container_view)
        as QuestionnaireFragment
val questionnaireResponse = fragment.getQuestionnaireResponse()

// Print the response to the log
val jsonParser = FhirContext.forCached(FhirVersionEnum.R4).newJsonParser()
val questionnaireResponseString =
    jsonParser.encodeResourceToString(questionnaireResponse)
Log.d("response", questionnaireResponseString)

सवालों की सूची का जवाब पाने के लिए, पहले बनाए गए सवालों की सूची का फ़्रैगमेंट वापस पाएं. इसके बाद, getQuestionnaireResponse() तरीके का इस्तेमाल करें. ऐसा करने पर, HAPI FHIR QuestionnaireResponse दिखता है. इसे सीधे तौर पर या Android FHIR SDK टूल के किसी दूसरे हिस्से के साथ इस्तेमाल किया जा सकता है. यह कोडलैब, अन्य HAPI FHIR लाइब्रेरी का इस्तेमाल करके लॉग में देखने के लिए उसे JSON स्ट्रिंग में बदलता है.

अपने नवीनतम बदलावों के साथ उसे फिर से बनाने के लिए ऐप्लिकेशन को फिर से चलाएं. इसके चलने के बाद, सवालों की सूची में कुछ जानकारी डालें और सबमिट करें पर टैप करें. लॉग में आपको एक मैसेज दिखेगा, जिसमें QuestionnaireResponse, JSON के तौर पर शामिल होगा.

D/response: {"resourceType":"QuestionnaireResponse","item":[{"linkId":"PR","text":"Patient information","item":[{"linkId":"PR-name","text":"Name","item":[{"linkId":"PR-name-given","text":"First Name","answer":[{"valueString":"Dani"}]},{"linkId":"PR-name-family","text":"Family Name","answer":[{"valueString":"Lee"}]}]},{"linkId":"PR-birthdate","text":"Date of Birth","answer":[{"valueDate":"1990-02-14"}]},{"linkId":"PR-id","text":"Identifying information","item":[{"linkId":"PR-name-id-url"},{"linkId":"PR-name-id","text":"Patient Id","answer":[{"valueString":"12345"}]}]}]}]}

6. FHIR संसाधनों को QuestionnaireResponse

स्टार्टर प्रोजेक्ट में शामिल सवालों की सूची, मरीज़ों के रजिस्ट्रेशन की आसान प्रक्रिया के लिए है. ऐसा हो सकता है कि आप सवालों की सूची के जवाबों का इस्तेमाल, उनके आधार पर एफ़एचआईआर मरीज़ के लिए संसाधन बनाने के लिए करना चाहें. एफ़एचआईआर संसाधनों के लिए सवालों की सूची के जवाब से इस कन्वर्ज़न को डेटा निकालें कहा जाता है. हम स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी की ResourceMapper क्लास की मदद से ऐसा कर सकते हैं.

डेटा निकालने के लिए, आपके सवालों की सूची में डेटा निकालने की प्रक्रिया के बारे में जानकारी शामिल करने के लिए तैयार होना चाहिए. अच्छी बात यह है कि परिभाषा के आधार पर डेटा निकालने के लिए, सवालों की सूची का सैंपल पहले से ही सेट अप किया जा चुका है.

submitQuestionnaire() तरीका ढूंढें और यह कोड जोड़ें:

lifecycleScope.launch {
  val questionnaire =
    jsonParser.parseResource(questionnaireJsonString) as Questionnaire
  val bundle = ResourceMapper.extract(questionnaire, questionnaireResponse)
  Log.d("extraction result", jsonParser.encodeResourceToString(bundle))
}

ResourceMapper.extract() के लिए HAPI FHIR सवालों की सूची ज़रूरी है. इसे, पहले से सवालों की सूची JSON स्ट्रिंग को पार्स करके बनाया जा सकता है. साथ ही, एक QuestionnaireResponse भी बनाया जा सकता है, जो कि पहले ही मिल चुका है. यह HAPI FHIR लेन-देन Bundle को दिखाता है, जिसमें एक या एक से ज़्यादा निकाले गए संसाधन शामिल होते हैं. इस मामले में, किसी एक मरीज़ के संसाधन के लिए जानकारी दी जाती है.

अपने नवीनतम बदलावों के साथ उसे फिर से बनाने के लिए ऐप्लिकेशन को फिर से चलाएं. इसके चालू हो जाने पर, कुछ जानकारी डालें और सबमिट करें पर टैप करें. लॉग में अब आपको एक मैसेज extraction result दिखेगा, जिसमें एक्सट्रैक्ट किए गए एफ़एचआईआर बंडल का JSON फ़ॉर्मैट होगा.

D/extraction result: {"resourceType":"Bundle","type":"transaction","entry":[{"resource":{"resourceType":"Patient","identifier":[{"value":"12345"}],"name":[{"family":"Lee","given":["Dani"]}],"birthDate":"1990-02-14"}}]}

7. बधाई हो!

आपने अपने ऐप्लिकेशन में एफ़एचआईआर सवालों की सूचियों और जवाबों को प्रोसेस करने के लिए, स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी का इस्तेमाल किया है:

  • प्रश्नावली दिखाएं
  • सवालों की सूची का जवाब पाएं
  • QuestionnaireResponse से FHIR रिसॉर्स निकालें

इसे चालू करने के लिए आपको बस इतना ही करना है!

आगे बढ़ने के साथ-साथ, ऐसा हो सकता है कि अपने आवेदन में आपको कई तरीकों से FHIR संसाधनों के साथ काम करना पसंद आए. अपने ऐप्लिकेशन में FHIR संसाधनों को स्थानीय तौर पर सेव और मैनेज करने का तरीका जानने और रिमोट FHIR सर्वर के साथ डेटा को सिंक करने का तरीका जानने के लिए, Android FHIR SDK टूल की FHIR इंजन लाइब्रेरी देखें.

हमने इन विषयों के बारे में बताया

  • अपने Android ऐप्लिकेशन में स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी जोड़ने का तरीका
  • एफ़एचआईआर की सवालों की सूचियों के साथ काम करने के लिए, QuestionnaireFragment और ResourceMapper का इस्तेमाल कैसे करें

अगले चरण

  • स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी के दस्तावेज़ देखें
  • सवालों की रेंडर की गई सूचियों के लुक और स्टाइल को पसंद के मुताबिक बनाना
  • अपने Android ऐप्लिकेशन में स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी का इस्तेमाल करना

ज़्यादा जानें