1. আপনি শুরু করার আগে
আপনি কি নির্মাণ করবেন
এই কোডল্যাবে, আপনি কীভাবে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি দিয়ে একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করবেন তা শিখবেন। FHIR প্রশ্নাবলী এবং প্রতিক্রিয়া রেন্ডার এবং প্রক্রিয়া করতে আপনার অ্যাপটি স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি ব্যবহার করবে।
আপনি কি শিখবেন
- কীভাবে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি সংহত করবেন
- কিভাবে একটি প্রশ্নাবলী প্রদর্শন করতে হয়
-
QuestionnaireResponse
হিসাবে কিভাবে উত্তর পেতে হয় -
QuestionnaireResponse
থেকে কীভাবে FHIR সংস্থানগুলি বের করবেন
আপনি কি প্রয়োজন হবে
- অ্যান্ড্রয়েড স্টুডিওর একটি সাম্প্রতিক সংস্করণ (v4.1.2+)
- অ্যান্ড্রয়েড এমুলেটর বা একটি শারীরিক অ্যান্ড্রয়েড ডিভাইস
- নমুনা কোড
- কোটলিনে অ্যান্ড্রয়েড বিকাশের প্রাথমিক জ্ঞান
এই কোডল্যাবটি স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরিতে ফোকাস করে। অ-প্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলিকে চকচকে করা হয়েছে এবং আপনাকে কেবল অনুলিপি এবং পেস্ট করার জন্য সরবরাহ করা হয়েছে। আপনি যদি আগে Android অ্যাপ তৈরি না করে থাকেন, তাহলে আপনি আপনার প্রথম অ্যাপ তৈরি করে শুরু করতে পারেন।
2. সেট আপ করুন
কোডটি ডাউনলোড করুন
এই কোডল্যাবের কোডটি ডাউনলোড করতে, Android FHIR SDK রেপো ক্লোন করুন: git clone https://github.com/google/android-fhir.git
এই কোডল্যাবের জন্য স্টার্টার প্রকল্পটি codelabs/datacapture
অবস্থিত।
অ্যান্ড্রয়েড স্টুডিওতে অ্যাপটি আমদানি করুন
স্টার্টার অ্যাপটি অ্যান্ড্রয়েড স্টুডিওতে আমদানি করে শুরু করা যাক।
অ্যান্ড্রয়েড স্টুডিও খুলুন, ইমপোর্ট প্রজেক্ট (গ্র্যাডল, ইক্লিপস এডিটি, ইত্যাদি) নির্বাচন করুন এবং আপনি আগে ডাউনলোড করা সোর্স কোড থেকে codelabs/datacapture
ফোল্ডারটি বেছে নিন।
স্টার্টার অ্যাপটি চালান
এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত৷
ইউএসবি এর মাধ্যমে আপনার অ্যান্ড্রয়েড ডিভাইসটিকে আপনার হোস্টের সাথে সংযুক্ত করুন বা অ্যান্ড্রয়েড স্টুডিও এমুলেটর শুরু করুন এবং রান ক্লিক করুন ( ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।
আপনি দেখতে পাচ্ছেন যে এখানে এখনও অনেক কিছু নেই, তাই আসুন আপনার অ্যাপে একটি প্রশ্নাবলী প্রদর্শন করা যাক!
3. প্রকল্পে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি যোগ করুন
স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরির জন্য নির্ভরতা যোগ করুন
স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি নির্ভরতা আপনাকে আপনার অ্যাপে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি সংহত করতে দেয়। আপনার প্রকল্পের app/build.gradle.kts
ফাইলের শেষে নিম্নলিখিত লাইন যোগ করুন:
dependencies {
// ...
implementation("com.google.android.fhir:data-capture:1.2.0")
implementation("androidx.fragment:fragment-ktx:1.6.0")
}
Gradle ফাইলের সাথে আপনার প্রকল্প সিঙ্ক করুন
আপনার অ্যাপে সমস্ত নির্ভরতা উপলব্ধ রয়েছে তা নিশ্চিত করার জন্য, আপনাকে এই মুহুর্তে গ্রেডল ফাইলগুলির সাথে আপনার প্রকল্প সিঙ্ক করা উচিত।
গ্রেডল ফাইলের সাথে সিঙ্ক প্রকল্প নির্বাচন করুন ( ) অ্যান্ড্রয়েড স্টুডিও টুলবার থেকে। নির্ভরতা সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করতে আপনি আবার অ্যাপটি চালান।
4. একটি প্রশ্নাবলী প্রদর্শন করুন
এই ধাপে, আপনি FragmentContainerView
এ একটি প্রশ্নাবলী রেন্ডার করতে স্টার্টার অ্যাপে কার্যকারিতা যোগ করবেন।
পথে, অ্যান্ড্রয়েড স্টুডিও আপনাকে প্রয়োজনীয় আমদানি যোগ করার জন্য অনুরোধ করবে:
-
androidx.core.os.bundleOf
-
androidx.fragment.app.add
-
androidx.fragment.app.commit
-
android.util.Log
-
com.google.android.fhir.datacapture.QuestionnaireFragment
ধাপ 1: একটি 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>
ধাপ 2: একটি QuestionnaireFragment
কনফিগার করুন
QuestionnaireFragment
রেন্ডার করার জন্য একটি JSON এনকোডেড FHIR প্রশ্নাবলীর প্রয়োজন। যেহেতু প্রশ্নপত্রটি ছোট (<512 KB), আপনি এটিকে আর্গুমেন্টের Bundle
একটি String
হিসাবে অন্তর্ভুক্ত করবেন যা খণ্ডটি তৈরি করতে ব্যবহার করা হবে। কর্মক্ষমতার কারণে একটি URI
হিসাবে বড় প্রশ্নাবলী প্রদান করা উচিত।
আপনি চাইলে questionnaire.json
ফাইলটি দেখতে পারেন, কিন্তু স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরির একটি সুবিধা হল যে এটি রেন্ডার করার জন্য আপনাকে FHIR প্রশ্নাবলীর (বা FHIR সম্পর্কে কিছু) কাঠামো জানার প্রয়োজন নেই। এটা! আপনি কোডল্যাবে পরে এই ফাইলটি আরও ঘনিষ্ঠভাবে দেখবেন।
এর নির্মাতা ব্যবহার করে একটি QuestionnaireFragment
তৈরি করুন এবং সেটার ফাংশন ব্যবহার করে প্রশ্নাবলী সেট করুন। লেআউট কন্টেইনারের মধ্যে QuestionnaireFragment
প্রদর্শন করতে, একটি FragmentTransaction
তৈরি করতে FragmentManager
ব্যবহার করুন।
MainActivity.kt
খুলুন এবং MainActivity
ক্লাসে নিম্নলিখিত কোড যোগ করুন:
// Step 2: Configure a QuestionnaireFragment
questionnaireJsonString = getStringFromAssets("questionnaire.json")
val questionnaireFragment =
QuestionnaireFragment.builder().setQuestionnaire(questionnaireJsonString!!).build()
ধাপ 3: FragmentContainerView-এ QuestionnaireFragment যোগ করুন
লেআউট কন্টেইনারের মধ্যে QuestionnaireFragment
প্রদর্শন করতে, একটি FragmentTransaction
তৈরি করতে FragmentManager
ব্যবহার করুন। FragmentManager
পূর্বে তৈরি করা questionnaireParams
ব্যবহার করে ইনস্ট্যান্টেশন পরিচালনা করে।
MainActivity
ক্লাসে নিম্নলিখিত কোড যোগ করুন:
// Step 3: Add the QuestionnaireFragment to the FragmentContainerView
if (savedInstanceState == null) {
supportFragmentManager.commit {
setReorderingAllowed(true)
add(R.id.fragment_container_view, questionnaireFragment)
}
}
// Submit button callback
supportFragmentManager.setFragmentResultListener(
QuestionnaireFragment.SUBMIT_REQUEST_KEY,
this,
) { _, _ ->
submitQuestionnaire()
}
টুকরোগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানুন।
চলুন রানে ক্লিক করে কোডল্যাব চালান ( ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। আপনি এই অনুরূপ কিছু দেখতে হবে:
প্রশ্নাবলীর মাধ্যমে নেভিগেট করুন এবং কিছু উত্তর প্রবেশ করার চেষ্টা করুন। বুলিয়ান, টেক্সট এবং তারিখ সহ কয়েকটি ভিন্ন উত্তর উইজেট ব্যবহার করা হয়েছে, যা মূল FHIR প্রশ্নাবলীর অন্তর্নিহিত প্রকারের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে রেন্ডার করা হয়েছে।
প্রযুক্তিগতভাবে, একটি প্রশ্নাবলী রেন্ডার করার জন্য আপনাকে যা করতে হবে! অভিনন্দন!
একটি প্রশ্নাবলী খুব সহায়ক নয় যদি আপনি ব্যবহারকারীদের ইনপুট করা উত্তরগুলি দেখতে না পান। আসুন একটি প্রশ্নাবলীর উত্তর পাওয়ার পরবর্তী ধাপে যাওয়া যাক!
5. একটি প্রশ্নাবলীর উত্তর পান
আগের ধাপে, আপনি আপনার অ্যাপে একটি FHIR প্রশ্নাবলী রেন্ডার করেছেন।
এই বিভাগে, আপনি প্রশ্নাবলী থেকে একটি 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 স্ট্রিং-এ রূপান্তর করে।
আপনার সাম্প্রতিক পরিবর্তনগুলির সাথে এটিকে পুনরায় তৈরি করতে অ্যাপটি আবার চালান। এটি চালু হয়ে গেলে, প্রশ্নাবলীতে কিছু তথ্য লিখুন এবং জমা দিন আলতো চাপুন। লগে, আপনি JSON হিসাবে QuestionnaireResponse
সম্বলিত একটি বার্তা দেখতে পাবেন।
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 সম্পদ বের করুন
স্টার্টার প্রকল্পের সাথে অন্তর্ভুক্ত প্রশ্নাবলী একটি সাধারণ রোগীর নিবন্ধন প্রবাহের জন্য, তাই আপনি শেষ পর্যন্ত তাদের উপর ভিত্তি করে একটি FHIR রোগীর সংস্থান তৈরি করতে প্রশ্নাবলীর প্রতিক্রিয়াগুলি ব্যবহার করতে চাইতে পারেন। এফএইচআইআর সংস্থানগুলিতে একটি প্রশ্নাবলীর প্রতিক্রিয়া থেকে এই রূপান্তরটিকে ডেটা নিষ্কাশন বলা হয়। আমরা স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরির 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 লেনদেন বান্ডিল ফেরত দেয় যাতে এক বা একাধিক নিষ্কাশিত সংস্থান থাকে – এই ক্ষেত্রে একটি একক রোগীর সম্পদ।
আপনার সাম্প্রতিক পরিবর্তনগুলির সাথে এটিকে পুনরায় তৈরি করতে অ্যাপটি আবার চালান। এটি চালু হয়ে গেলে, কিছু তথ্য লিখুন এবং জমা দিন আলতো চাপুন। লগে, আপনি এখন একটি বার্তা extraction result
দেখতে পাবেন যাতে নিষ্কাশিত FHIR বান্ডেলের 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 ইঞ্জিন লাইব্রেরিটি দেখুন৷
আমরা কভার করেছি কি
- কীভাবে আপনার অ্যান্ড্রয়েড অ্যাপে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি যুক্ত করবেন
- FHIR প্রশ্নাবলীর সাথে কাজ করার জন্য কিভাবে
QuestionnaireFragment
এবংResourceMapper
ব্যবহার করবেন
পরবর্তী পদক্ষেপ
- স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরির জন্য ডকুমেন্টেশন অন্বেষণ করুন
- রেন্ডার করা প্রশ্নাবলীর চেহারা এবং অনুভূতি কাস্টমাইজ করুন
- আপনার নিজের Android অ্যাপে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি প্রয়োগ করুন