স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি দিয়ে স্বাস্থ্য ডেটা ক্যাপচার এবং প্রক্রিয়া করুন

1. আপনি শুরু করার আগে

আপনি কি নির্মাণ করবেন

এই কোডল্যাবে, আপনি কীভাবে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি দিয়ে একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করবেন তা শিখবেন। FHIR প্রশ্নাবলী এবং প্রতিক্রিয়া রেন্ডার এবং প্রক্রিয়া করতে আপনার অ্যাপটি স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি ব্যবহার করবে।

আপনি কি শিখবেন

  • কীভাবে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি সংহত করবেন
  • কিভাবে একটি প্রশ্নাবলী প্রদর্শন করতে হয়
  • QuestionnaireResponse উত্তর হিসাবে কিভাবে উত্তর পেতে হয়
  • QuestionnaireResponse থেকে কীভাবে FHIR সংস্থানগুলি বের করবেন

আপনি কি প্রয়োজন হবে

এই কোডল্যাবটি স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরিতে ফোকাস করে। অ-প্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলিকে চকচকে করা হয়েছে এবং আপনাকে কেবল অনুলিপি এবং পেস্ট করার জন্য সরবরাহ করা হয়েছে। আপনি যদি আগে Android অ্যাপ তৈরি না করে থাকেন, তাহলে আপনি আপনার প্রথম অ্যাপ তৈরি করে শুরু করতে পারেন।

2. সেট আপ করুন

কোডটি ডাউনলোড করুন

এই কোডল্যাবের কোডটি ডাউনলোড করতে, Android FHIR SDK রেপো ক্লোন করুন: git clone https://github.com/google/android-fhir.git

এই কোডল্যাবের জন্য স্টার্টার প্রকল্পটি codelabs/datacapture অবস্থিত।

অ্যান্ড্রয়েড স্টুডিওতে অ্যাপটি আমদানি করুন

স্টার্টার অ্যাপটি অ্যান্ড্রয়েড স্টুডিওতে আমদানি করে শুরু করা যাক।

অ্যান্ড্রয়েড স্টুডিও খুলুন, ইমপোর্ট প্রজেক্ট (গ্র্যাডল, ইক্লিপস এডিটি, ইত্যাদি) নির্বাচন করুন এবং আপনি আগে ডাউনলোড করা সোর্স কোড থেকে codelabs/datacapture ফোল্ডারটি বেছে নিন।

Android Studio start screen

স্টার্টার অ্যাপটি চালান

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত৷

ইউএসবি এর মাধ্যমে আপনার অ্যান্ড্রয়েড ডিভাইসটিকে আপনার হোস্টের সাথে সংযুক্ত করুন বা অ্যান্ড্রয়েড স্টুডিও এমুলেটর শুরু করুন এবং রান ক্লিক করুন ( Run button ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।

হ্যালো ওয়ার্ল্ড অ্যাপ

আপনি দেখতে পাচ্ছেন যে এখানে এখনও অনেক কিছু নেই, তাই আসুন আপনার অ্যাপে একটি প্রশ্নাবলী প্রদর্শন করা যাক!

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 syncbutton ) অ্যান্ড্রয়েড স্টুডিও টুলবার থেকে। নির্ভরতা সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করতে আপনি আবার অ্যাপটি চালান।

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 এখানেই প্রদর্শিত হবে।

  1. activity_main.xml খুলুন ( res > লেআউট > activity_main.xml )।
  2. লেআউট এডিটরের উপরের ডানদিকে কোড, স্প্লিট এবং ডিজাইন ভিউয়ের বিকল্পগুলি খুঁজুন।
  3. কোড ভিউ নির্বাচন করুন। Layout view options
  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>
    

ধাপ 2: FragmentContainerView এ একটি 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")

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

টুকরোগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানুন।

চলুন রানে ক্লিক করে কোডল্যাব চালান ( Run button ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। আপনি এই অনুরূপ কিছু দেখতে হবে:

এমুলেটরে রেন্ডার করা প্রশ্নাবলী

প্রশ্নাবলীর মাধ্যমে নেভিগেট করুন এবং কিছু উত্তর প্রবেশ করার চেষ্টা করুন। বুলিয়ান, টেক্সট এবং তারিখ সহ কয়েকটি ভিন্ন উত্তর উইজেট ব্যবহার করা হয়েছে, যা মূল 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 লেনদেন বান্ডিল ফেরত দেয় যাতে এক বা একাধিক নিষ্কাশিত সংস্থান থাকে – এই ক্ষেত্রে একটি একক রোগীর সম্পদ।

আপনার সাম্প্রতিক পরিবর্তনগুলির সাথে এটিকে পুনরায় তৈরি করতে অ্যাপটি আবার চালান। এটি চালু হয়ে গেলে, কিছু তথ্য লিখুন এবং জমা দিন আলতো চাপুন। লগে, আপনি এখন নিষ্কাশিত FHIR বান্ডেলের JSON প্রতিনিধিত্ব সহ একটি বার্তা extraction result দেখতে পাবেন।

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 অ্যাপে স্ট্রাকচার্ড ডেটা ক্যাপচার লাইব্রেরি প্রয়োগ করুন

আরও জানুন