1. قبل از شروع
چیزی که خواهی ساخت
در این کد لبه، یاد خواهید گرفت که چگونه یک برنامه اندروید با کتابخانه ضبط داده های ساخت یافته بسازید. برنامه شما از کتابخانه ضبط داده های ساخت یافته برای ارائه و پردازش پرسشنامه ها و پاسخ های FHIR استفاده می کند.
چیزی که یاد خواهید گرفت
- چگونه کتابخانه ضبط داده های ساخت یافته را در برنامه اندروید خود ادغام کنید
- نحوه نمایش پرسشنامه
- نحوه دریافت پاسخ به عنوان
QuestionnaireResponse
- نحوه استخراج منابع FHIR از
QuestionnaireResponse
آنچه شما نیاز دارید
- نسخه اخیر Android Studio (نسخه 4.1.2 و بالاتر)
- شبیه ساز اندروید یا یک دستگاه فیزیکی اندروید
- کد نمونه
- دانش اولیه توسعه اندروید در Kotlin
این کد لبه روی کتابخانه ضبط داده های ساخت یافته متمرکز شده است. مفاهیم غیر مرتبط و بلوکهای کد محو شدهاند و برای شما ارائه میشوند تا به سادگی کپی و جایگذاری کنید. اگر قبلاً برنامههای Android ساخته نشدهاید، میتوانید با ساخت اولین برنامه خود شروع کنید.
2. راه اندازی شوید
کد را دانلود کنید
برای دانلود کد این نرم افزار کد، مخزن Android FHIR SDK را کلون کنید: git clone https://github.com/google/android-fhir.git
پروژه شروع برای این کد لبه در codelabs/datacapture
قرار دارد.
برنامه را به اندروید استودیو وارد کنید
بیایید با وارد کردن برنامه شروع به Android Studio شروع کنیم.
Android Studio را باز کنید، Import Project (Gradle، Eclipse ADT، و غیره) را انتخاب کنید و پوشه codelabs/datacapture
را از کد منبعی که قبلا دانلود کرده اید انتخاب کنید.
برنامه استارتر را اجرا کنید
اکنون که پروژه را به اندروید استودیو وارد کرده اید، برای اولین بار آماده اجرای برنامه هستید.
دستگاه اندروید خود را از طریق USB به هاست خود متصل کنید یا شبیه ساز Android Studio را راه اندازی کنید و روی Run کلیک کنید ( ) در نوار ابزار Android Studio.
همانطور که می بینید هنوز چیز زیادی در اینجا وجود ندارد، بنابراین بیایید مستقیماً به نمایش یک پرسشنامه در برنامه خود بپردازیم!
3. کتابخانه Structured Data Capture را به پروژه اضافه کنید
وابستگی ها را برای کتابخانه ضبط داده های ساخت یافته اضافه کنید
وابستگیهای Structured Data Capture Library به شما این امکان را میدهد که کتابخانه ضبط دادههای ساختیافته را در برنامه خود ادغام کنید. خطوط زیر را به انتهای فایل app/build.gradle.kts
پروژه خود اضافه کنید:
dependencies {
// ...
implementation("com.google.android.fhir:data-capture:1.2.0")
implementation("androidx.fragment:fragment-ktx:1.6.0")
}
پروژه خود را با فایل های Gradle همگام سازی کنید
برای اطمینان از اینکه همه وابستگی ها برای برنامه شما در دسترس هستند، باید پروژه خود را با فایل های gradle در این مرحله همگام کنید.
انتخاب پروژه همگام سازی با فایل های Gradle ( ) از نوار ابزار Android Studio. همچنین میتوانید برنامه را دوباره اجرا کنید تا بررسی کنید وابستگیها درست کار میکنند.
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 > layout > activity_main.xml ) را باز کنید. - گزینه های نماهای Code، Split و Design را در سمت راست بالای Layout Editor پیدا کنید.
- نمای کد را انتخاب کنید.
- شما به
TextView
نیاز ندارید، پس آن را حذف کنید. مطمئن شوید که همه چیز را از<TextView
تا بسته شدن/>
حذف کنید. - یک
FragmentContainerView
درConstraintLayout
اضافه کنید. فایل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
به یک پرسشنامه FHIR با کد JSON برای ارائه نیاز دارد. از آنجایی که پرسشنامه کوچک است (<512 کیلوبایت)، شما آن را به عنوان یک String
در Bundle
ای از آرگومان ها قرار می دهید که برای ایجاد قطعه مورد استفاده قرار می گیرد. به دلایل عملکرد، پرسشنامه های بزرگتر باید به عنوان URI
ارائه شوند.
در صورت تمایل می توانید به فایل questionnaire.json
نگاهی بیندازید، اما یکی از مزایای کتابخانه Structured Data Capture این است که برای ارائه آن نیازی به دانستن ساختار پرسشنامه FHIR (یا هر چیزی در مورد FHIR) ندارید. آن را این فایل را بعدا در Codelab با دقت بیشتری بررسی خواهید کرد.
یک QuestionnaireFragment
با استفاده از سازنده آن ایجاد کنید و پرسشنامه را با استفاده از تابع تنظیم کننده تنظیم کنید. برای نمایش QuestionnaireFragment
در ظرف layout، از FragmentManager
برای ایجاد FragmentTransaction
استفاده کنید.
MainActivity.kt
را باز کنید و کد زیر را به کلاس MainActivity
اضافه کنید:
// Step 2: Configure a QuestionnaireFragment
questionnaireJsonString = getStringFromAssets("questionnaire.json")
val questionnaireFragment =
QuestionnaireFragment.builder().setQuestionnaire(questionnaireJsonString!!).build()
مرحله 3: QuestionnaireFragment را به FragmentContainerView اضافه کنید
برای نمایش QuestionnaireFragment
در ظرف layout، از FragmentManager
برای ایجاد FragmentTransaction
استفاده کنید. 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()
}
درباره نحوه استفاده از قطعات بیشتر بیاموزید.
بیایید با کلیک روی Run ( ) در نوار ابزار Android Studio. شما باید چیزی شبیه به این را ببینید:
پرسشنامه را مرور کنید و سعی کنید چند پاسخ را وارد کنید. چند ویجت پاسخ متفاوت استفاده شده است، از جمله بولی، متن و تاریخ، که به طور خودکار بر اساس نوع اصلی در پرسشنامه اصلی 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()
استفاده می کنید. این یک QuestionnaireResponse
HAPI FHIR را برمی گرداند که می توانید مستقیماً یا با سایر بخش های 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 را از پاسخ پرسشنامه استخراج کنید
پرسشنامه همراه با پروژه شروع کننده برای یک جریان ثبت نام بیمار ساده است، بنابراین ممکن است در نهایت بخواهید از پاسخ های پرسشنامه برای ایجاد یک منبع بیمار FHIR بر اساس آنها استفاده کنید. این تبدیل از پاسخ پرسشنامه به منابع FHIR استخراج داده نامیده می شود. ما میتوانیم این کار را با کلاس ResourceMapper
از Structured Data Capture Library انجام دهیم.
برای انجام استخراج داده ها، پرسشنامه شما باید به گونه ای تنظیم شود که حاوی اطلاعاتی در مورد نحوه انجام استخراج داده باشد. خوشبختانه، نمونه پرسشنامه از قبل برای استخراج مبتنی بر تعریف تنظیم شده است.
متد 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
پیام حاوی نمایش JSON بسته FHIR استخراج شده را مشاهده کنید.
D/extraction result: {"resourceType":"Bundle","type":"transaction","entry":[{"resource":{"resourceType":"Patient","identifier":[{"value":"12345"}],"name":[{"family":"Lee","given":["Dani"]}],"birthDate":"1990-02-14"}}]}
7. تبریک می گویم!
شما از کتابخانه ضبط دادههای ساختاریافته برای پردازش پرسشنامهها و پاسخهای FHIR در برنامه خود استفاده کردهاید:
- نمایش یک پرسشنامه
- پاسخ پرسشنامه را دریافت کنید
- منابع FHIR را از
QuestionnaireResponse
استخراج کنید
این تمام چیزی است که برای راه اندازی آن نیاز دارید!
همانطور که ادامه می دهید، ممکن است بخواهید با منابع FHIR به روش های بیشتری در سراسر برنامه خود کار کنید. برای یادگیری نحوه ذخیره و مدیریت منابع FHIR به صورت محلی در برنامه خود و همگام سازی داده ها با یک سرور FHIR راه دور، کتابخانه موتور FHIR را در Android FHIR SDK بررسی کنید.
آنچه را پوشش داده ایم
- چگونه کتابخانه ضبط داده های ساخت یافته را به برنامه اندروید خود اضافه کنید
- نحوه استفاده از
QuestionnaireFragment
وResourceMapper
برای کار با پرسشنامه های FHIR
مراحل بعدی
- اسناد مربوط به کتابخانه ضبط داده های ساخت یافته را کاوش کنید
- ظاهر و احساس پرسشنامه های ارائه شده را سفارشی کنید
- کتابخانه Structured Data Capture را در برنامه اندروید خود اعمال کنید