1. शुरू करने से पहले
आपको क्या बनाना होगा
इस कोडलैब में, स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी की मदद से Android ऐप्लिकेशन बनाने का तरीका बताया गया है. आपका ऐप्लिकेशन, FHIR सवालों की सूचियों और जवाबों को रेंडर और प्रोसेस करने के लिए, स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी का इस्तेमाल करेगा.
आप इन चीज़ों के बारे में जानेंगे
- स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी को अपने Android ऐप्लिकेशन से जोड़ने का तरीका
- प्रश्नावली कैसे प्रदर्शित करें
QuestionnaireResponse
के तौर पर जवाब पाने का तरीकाQuestionnaireResponse
से FHIR के संसाधन हासिल करने का तरीका
आपको इनकी ज़रूरत होगी
- Android Studio (4.1.2 के बाद का वर्शन) का नया वर्शन
- Android एम्युलेटर या फ़िज़िकल Android डिवाइस
- सैंपल कोड
- Kotlin में Android डेवलपमेंट की बुनियादी जानकारी
इस कोडलैब का फ़ोकस, स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी पर है. ऐसे कॉन्सेप्ट और कोड ब्लॉक कर दिए जाते हैं जो काम के नहीं होते. वे आपको दिए जाते हैं, ताकि आप उन्हें आसानी से कॉपी करके चिपका सकें. अगर आपने पहले 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 डिवाइस को, यूएसबी के ज़रिए अपने होस्ट से कनेक्ट करें या Android Studio एम्युलेटर चालू करें. इसके बाद, Android Studio के टूलबार में, चलाएं () पर क्लिक करें.
आपको दिख रहा होगा कि अभी यहां बहुत कुछ नहीं है. इसलिए, आइए सीधे आपके ऐप्लिकेशन में सवालों की सूची दिखाने के बारे में बात करते हैं!
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
यहां दिखेंगे.
activity_main.xml
(res > लेआउट > activity_main.xml) खोलें.- लेआउट एडिटर में सबसे ऊपर दाईं ओर, कोड, स्प्लिट, और डिज़ाइन व्यू के विकल्प देखें.
- कोड व्यू चुनें.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- आपको
TextView
की ज़रूरत नहीं है, इसलिए इसे मिटा दें.<TextView
से लेकर/>
के क्लोज़िंग तक का पूरा डेटा ज़रूर मिटाएं. 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 के टूलबार में, 'चलाएं' () पर क्लिक करके कोडलैब चलाएं. आपको इससे मिलता-जुलता कुछ दिखेगा:
सवालों की सूची में नेविगेट करें और कुछ जवाब डालकर देखें. बूलियन, टेक्स्ट, और तारीखों के साथ-साथ कुछ अलग-अलग जवाब विजेट का इस्तेमाल किया गया है, जो एफ़एचआईआर की मूल सवालों की सूची में दिए गए टाइप के आधार पर अपने-आप रेंडर होते हैं.
तकनीकी तौर पर, सवालों की सूची बनाने के लिए आपको बस इतना ही करना होगा! बधाई हो!
अगर आपको उपयोगकर्ताओं के इनपुट नहीं दिख रहे हैं, तो सवालों की सूची से आपको ज़्यादा मदद नहीं मिलेगी. आइए, सवालों की सूची का जवाब पाने के अगले चरण पर चलते हैं!
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 ऐप्लिकेशन में स्ट्रक्चर्ड डेटा कैप्चर लाइब्रेरी का इस्तेमाल करना