1. Sebelum memulai
Yang akan Anda bangun
Dalam codelab ini, Anda akan mempelajari cara mem-build aplikasi Android dengan Library Pengambilan Data Terstruktur. Aplikasi Anda akan menggunakan Library Pengambilan Data Terstruktur untuk merender dan memproses Kuesioner dan respons FHIR.
Yang akan Anda pelajari
- Cara mengintegrasikan Library Pengambilan Data Terstruktur ke dalam aplikasi Android Anda
- Cara menampilkan Kuesioner
- Cara mendapatkan jawaban sebagai
QuestionnaireResponse
- Cara mengekstrak resource FHIR dari
QuestionnaireResponse
Yang akan Anda butuhkan
- Android Studio (v4.1.2+) versi terbaru
- Android Emulator atau perangkat Android fisik
- Kode contoh
- Pengetahuan dasar tentang pengembangan Android di Kotlin
Codelab ini berfokus pada Library Pengambilan Data Terstruktur. Konsep dan blok kode yang tidak-relevan akan dibahas sekilas dan disediakan sehingga Anda cukup menyalin dan menempelkan. Jika belum membuat aplikasi Android sebelumnya, Anda dapat memulai dengan membuat aplikasi pertama.
2. Memulai persiapan
Mendownload Kode
Untuk mendownload kode codelab ini, clone repo Android FHIR SDK: git clone https://github.com/google/android-fhir.git
Project awal untuk codelab ini terletak di codelabs/datacapture
.
Mengimpor aplikasi ke Android Studio
Mari kita mulai dengan mengimpor aplikasi awal ke Android Studio.
Buka Android Studio, pilih Import Project (Gradle, Eclipse ADT, etc.) lalu pilih folder codelabs/datacapture
dari kode sumber yang telah Anda download sebelumnya.
Menjalankan aplikasi awal
Setelah mengimpor project ke Android Studio, Anda siap menjalankan aplikasi untuk pertama kalinya.
Hubungkan perangkat Android melalui USB ke host, atau Mulai emulator Android Studio,lalu klik Run () di toolbar Android Studio.
Seperti yang Anda lihat, belum banyak yang tersedia di sini. Jadi, mari kita lanjutkan dengan menampilkan kuesioner di aplikasi Anda.
3. Menambahkan Library Pengambilan Data Terstruktur ke project
Menambahkan dependensi untuk Library Pengambilan Data Terstruktur
Dependensi Library Pengambilan Data Terstruktur memungkinkan Anda mengintegrasikan Library Pengambilan Data Terstruktur di aplikasi Anda. Tambahkan baris berikut ke akhir file app/build.gradle.kts
project Anda:
dependencies {
// ...
implementation("com.google.android.fhir:data-capture:1.0.0")
implementation("androidx.fragment:fragment-ktx:1.5.5")
}
Menyinkronkan project dengan file Gradle
Untuk memastikan bahwa semua dependensi tersedia untuk aplikasi, Anda harus menyinkronkan project dengan file gradle pada tahap ini.
Pilih Sync Project with Gradle Files () dari toolbar Android Studio. Anda juga menjalankan aplikasi lagi untuk memeriksa apakah dependensi berfungsi dengan benar.
4. Menampilkan Kuesioner
Pada langkah ini, Anda akan menambahkan fungsi ke aplikasi awal untuk merender kuesioner di FragmentContainerView
.
Selama prosesnya, Android Studio akan meminta Anda menambahkan impor yang diperlukan:
androidx.core.os.bundleOf
androidx.fragment.app.add
androidx.fragment.app.commit
android.util.Log
com.google.android.fhir.datacapture.QuestionnaireFragment
Langkah 1: Tambahkan FragmentContainerView
Tambahkan FragmentContainerView
ke tata letak aplikasi. Di sinilah QuestionnaireFragment
yang akan Anda buat nanti akan ditampilkan.
- Buka
activity_main.xml
(res > layout > activity_main.xml). - Temukan opsi untuk tampilan Code, Split, dan Design di kanan atas Layout Editor.
- Pilih Tampilan kode.
- Anda tidak memerlukan
TextView
, jadi hapus. Pastikan untuk menghapus semuanya dari<TextView
hingga/>
penutup. - Tambahkan
FragmentContainerView
di dalamConstraintLayout
. Fileactivity_main.xml
Anda akan terlihat seperti ini:<?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>
Langkah 2: Tambahkan QuestionnaireFragment
ke FragmentContainerView
QuestionnaireFragment
memerlukan Kuesioner FHIR yang dienkode JSON agar dapat dirender. Karena kuesioner ini kecil (<512 KB), Anda akan menyertakannya sebagai String
dalam Bundle
argumen yang akan digunakan untuk membuat fragmen. Kuesioner yang lebih besar harus diberikan sebagai URI
untuk alasan performa.
Anda dapat melihat file questionnaire.json
jika ingin, tetapi salah satu manfaat Library Pengambilan Data Terstruktur adalah Anda tidak perlu mengetahui struktur Kuesioner FHIR (atau apa pun tentang FHIR) untuk membuatnya merendernya. Anda akan mempelajari file ini secara lebih mendetail nanti di codelab.
Buat QuestionnaireFragment
menggunakan buildernya, dan setel kuesioner menggunakan fungsi penyetel. Untuk menampilkan QuestionnaireFragment
dalam penampung tata letak, gunakan FragmentManager
untuk membuat FragmentTransaction
.
Buka MainActivity.kt
dan tambahkan kode berikut ke class 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()
)
}
}
Pelajari lebih lanjut cara menggunakan fragmen.
Mari kita jalankan codelab dengan mengklik Run () di toolbar Android Studio. Anda akan melihat sesuatu yang mirip dengan ini:
Jelajahi kuesioner dan coba masukkan beberapa jawaban. Ada beberapa widget jawaban yang digunakan, termasuk boolean, teks, dan tanggal, yang secara otomatis dirender berdasarkan jenis dasar dalam kuesioner FHIR asli.
Secara teknis, Anda hanya perlu membuat kuesioner. Selamat!
Kuesioner tidak terlalu membantu jika Anda tidak dapat melihat jawaban yang dimasukkan pengguna. Mari kita lanjutkan ke langkah berikutnya untuk mendapatkan Respons Kuesioner!
5. Mendapatkan Respons Kuesioner
Pada langkah sebelumnya, Anda telah membuat kuesioner FHIR di aplikasi.
Di bagian ini, Anda akan mendapatkan jawaban dari kuesioner sebagai Kuesioner Respons.
Temukan metode submitQuestionnaire()
dan tambahkan kode berikut:
// 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)
Untuk mendapatkan respons kuesioner, Anda mengambil fragmen kuesioner yang dibuat sebelumnya, lalu gunakan metode getQuestionnaireResponse()
. Tindakan ini menampilkan HAPI FHIR QuestionnaireResponse
yang dapat Anda gunakan secara langsung atau dengan bagian lain Android FHIR SDK. Codelab ini menggunakan library HAPI FHIR lainnya untuk mengonversinya menjadi string JSON untuk ditampilkan di log.
Jalankan lagi aplikasi untuk mem-build ulang dengan perubahan terbaru Anda. Setelah berjalan, masukkan beberapa informasi ke dalam kuesioner, lalu ketuk Kirim. Di log, Anda akan melihat pesan yang berisi QuestionnaireResponse
sebagai 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. Mengekstrak Resource FHIR dari QuestionnaireResponse
Kuesioner yang disertakan dengan project awal ditujukan untuk alur pendaftaran pasien yang sederhana, jadi sebaiknya Anda menggunakan respons kuesioner untuk membuat resource Pasien FHIR berdasarkan alur pendaftaran tersebut. Konversi yang berasal dari respons kuesioner ke resource FHIR ini disebut ekstraksi data. Kita dapat melakukannya dengan class ResourceMapper
Structured Data Capture Library.
Untuk melakukan ekstraksi data, kuesioner Anda harus diberi otorisasi untuk menyertakan informasi tentang cara melakukan ekstraksi data. Untungnya, sampel kuesioner sudah disiapkan untuk Ekstraksi berbasis definisi.
Temukan metode submitQuestionnaire()
dan tambahkan kode berikut:
lifecycleScope.launch {
val questionnaire =
jsonParser.parseResource(questionnaireJsonString) as Questionnaire
val bundle = ResourceMapper.extract(questionnaire, questionnaireResponse)
Log.d("extraction result", jsonParser.encodeResourceToString(bundle))
}
ResourceMapper.extract()
memerlukan Kuesioner HAPI FHIR, yang dapat dibuat dengan menguraikan string JSON kuesioner sebelumnya, dan QuestionnaireResponse
, yang sudah kita peroleh sebelumnya. Metode ini menampilkan Bundle transaksi HAPI FHIR yang berisi satu atau beberapa resource yang diekstrak–dalam hal ini satu resource Pasien.
Jalankan lagi aplikasi untuk mem-build ulang dengan perubahan terbaru Anda. Setelah dijalankan, masukkan beberapa informasi, lalu ketuk Kirim. Di log, sekarang Anda akan melihat pesan extraction result
yang berisi representasi JSON dari Paket FHIR yang diekstrak.
D/extraction result: {"resourceType":"Bundle","type":"transaction","entry":[{"resource":{"resourceType":"Patient","identifier":[{"value":"12345"}],"name":[{"family":"Lee","given":["Dani"]}],"birthDate":"1990-02-14"}}]}
7. Selamat!
Anda telah menggunakan Library Pengambilan Data Terstruktur untuk memproses kuesioner dan respons FHIR di aplikasi:
- Menampilkan Kuesioner
- Mendapatkan Respons Kuesioner
- Mengekstrak Resource FHIR dari
QuestionnaireResponse
Hanya itu yang Anda perlukan untuk menyiapkan dan menjalankannya!
Saat melanjutkan, Anda mungkin ingin menggunakan resource FHIR melalui berbagai cara di seluruh aplikasi. Lihat Library FHIR Engine Android FHIR SDK untuk mempelajari cara menyimpan dan mengelola resource FHIR secara lokal di aplikasi Anda serta menyinkronkan data dengan server FHIR jarak jauh.
Yang telah kita bahas
- Cara menambahkan Library Pengambilan Data Terstruktur ke aplikasi Android
- Cara menggunakan
QuestionnaireFragment
danResourceMapper
untuk menangani kuesioner FHIR
Langkah Berikutnya
- Pelajari dokumentasi untuk Library Pengambilan Data Terstruktur
- Menyesuaikan tampilan dan nuansa kuesioner yang ditampilkan
- Menerapkan Library Pengambilan Data Terstruktur di aplikasi Android Anda sendiri