Kelola Data FHIR dari Aplikasi Android dengan OHS dan Google Cloud

1. Pengantar

Dalam codelab ini, kita akan mempelajari cara menggunakan OHS (Open Health Stack) dan Google Cloud Healthcare API untuk membuat solusi kesehatan inovatif yang aman, skalabel, dan sesuai. Kombinasi alat canggih ini memberi pekerja dan developer layanan kesehatan kemampuan untuk membuat solusi berbasis data yang dapat meningkatkan perawatan dan hasil pasien secara signifikan.

Kami bermaksud memanfaatkan kecanggihan Open Health Stack dan Google Cloud Healthcare API dalam aplikasi seluler yang menggunakan Android-FHIR SDK untuk memungkinkan pengguna mengelola catatan pasien FHIR di Google Cloud.

Mari kita pelajari langkah-langkah implementasinya.

Yang akan Anda build

Dalam penerapan ini,

  • Kita akan menggunakan Structured Data Capture Library untuk merender Kuesioner, dan FHIR Engine library untuk menyimpan konten FHIR respons
  • Data kemudian akan diupload ke Cloud FHIR Store menggunakan Cloud Healthcare API
  • Sebelum mengupload, kita akan melakukan autentikasi terlebih dahulu menggunakan Firebase

8514f90f016ecfc0.png

Diagram di atas menunjukkan alur tersebut. Baca blog untuk mengetahui penjelasan mendetail tentang setiap komponen.

2. Persyaratan

  • Browser, seperti Chrome atau Firefox
  • Project Google Cloud yang mengaktifkan penagihan
  • Versi terbaru Android Studio
  • Penyiapan Android Emulator (Anda juga dapat menggunakan perangkat Android fisik)

Buat project Anda

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
  3. Aktifkan API yang diperlukan (BigQuery, Healthcare API)

Aktifkan Cloud Shell

  1. Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq:

Dari Cloud Console, klik Activate Cloud Shell di pojok kanan atas:

51622c00acec2fa.png

  1. Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda. Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>

Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.

3. Penyiapan Healthcare API

  1. Pastikan Healthcare API diaktifkan: Buka library API Konsol Google Cloud, telusuri Healthcare API, klik AKTIFKAN, lalu API akan diaktifkan dan Akun Layanan Healthcare akan ditambahkan ke project
  2. Memberikan izin admin BigQuery ke Akun Layanan Jalankan perintah gcloud di bawah ini di terminal Cloud Shell untuk memberikan izin:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com  --role=roles/bigquery.admin

Catatan: Anda dapat menemukan PROJECT_ID dan PROJECT_NUMBER dari konsol. Lihat dokumen untuk mengetahui cara mengidentifikasinya.

Membuat Set Data Layanan Kesehatan

Di Cloud Shell, jalankan perintah di bawah untuk membuat set data Healthcare:

gcloud beta healthcare datasets create <<DATASET_ID>> --location=us-central1

Tetapkan location ke suatu region.

Membuat FHIR Datastore

Di Cloud Shell, jalankan perintah di bawah untuk membuat FHIR datastore:

gcloud beta healthcare fhir-stores create <<FHIR_STORE>> \
  --dataset=<<DATASET_ID>> --location=us-central1 --version=r4

Tetapkan location ke suatu region.

4. Penyiapan dan Streaming BigQuery

Hal ini mencakup penyimpanan data FHIR Store di Set Data BigQuery sehingga dapat dikueri, diprogram, dan dianalisis dengan memanfaatkan kecanggihan BigQuery dan BQML.

Buat Set Data BigQuery

Set data BigQuery adalah kumpulan tabel. Semua tabel dalam set data disimpan di lokasi data yang sama. Anda juga dapat melampirkan kontrol akses kustom untuk membatasi akses ke set data dan tabelnya.

Di Cloud Shell, jalankan perintah di bawah:

bq mk --location=us-central1 --dataset <<PROJECT_ID>>:<<BQ_DATASET>>

Tetapkan location ke suatu region.

Membuat Streaming BigQuery

Streaming diperlukan untuk mengekspor perubahan resource ke BigQuery setiap kali resource FHIR dibuat, diupdate, di-patch, atau dihapus di penyimpanan FHIR. Setiap penyimpanan diizinkan memiliki hingga 10 konfigurasi streaming.

  1. Buka halaman browser konsol Google Cloud Healthcare
  2. Klik DATASET yang baru dibuat
  3. Klik DATA STORE yang baru dibuat 7acaa364337086aa.png
  4. Klik TAMBAHKAN KONFIGURASI STREAMING BARU

caa2cc881d3406aa.png

  1. Pilih Set Data BigQuery yang baru dibuat dari daftar, Jenis skema sebagai "Analytics V2", dan Jenis Resource "Patient" dari daftar (Anda dapat memilih sebanyak mungkin jenis resource), lalu klik Selesai

1e038c694fcca1ef.png

Selesai. Anda sudah siap menyimpan data penyimpanan FHIR dan melakukan streaming ke BigQuery.

5. Cloud Functions (Menulis Data R4 ke FHIR Datastore menggunakan Healthcare API)

Cloud Functions memungkinkan Anda menulis kode dengan mudah dan men-deploy ke cloud secara serverless. Layanan ini skalabel, bayar sesuai penggunaan, berbasis peristiwa, dan terbuka dalam hal dukungan teknologi dan bahasa. Lihat dokumentasi untuk mengetahui fitur lainnya.

Fungsi yang akan kita tulis bertujuan untuk mengautentikasi dan menulis data yang masuk dalam format FHIR R4 ke FHIR Data Store menggunakan Cloud Healthcare API. Untuk membuat Cloud Function:

  1. Buka Cloud Functions, lalu klik CREATE FUNCTION
  2. Tetapkan nama ke fhir-datastore-proxy, region ke us-central1, dan opsi Autentikasi ke "Wajib Autentikasi"
  3. Luaskan setelan Runtime, build, koneksi, dan keamanan. Anda akan menambahkan lima variabel lingkungan Runtime:

Nama: CLOUD_FUNCTIONS_ENDPOINT | Nilai: endpoint URL Fungsi Anda akan melihat ini di blok Authentication di atas dan akan berbentuk: https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy

Nama: PROJECT_ID | Nilai: project ID Anda

Nama: DATASET_LOCATION | Nilai: lokasi FHIR Datastore Anda

Nama: DATASET_ID | Nilai: ID Healthcare Datastore

Nama: FHIR_STORE_ID | Nilai: ID FHIR Store

  1. Tekan Berikutnya untuk membuka halaman berikutnya, tempat kita akan menambahkan kode
  2. Editor inline akan ditampilkan, pilih Java 17 sebagai bahasa, lalu buka class HelloHttpFunction.java. Ganti namanya menjadi FhirDatastoreProxy.java. Jangan lupa juga mengganti nama titik entri menjadi gcfv2.FhirDatastoreProxy
  3. Salin kode dari repo dan tempelkan di editor inline
  4. Buka file pom.xml, lalu salin file pom di repo ke editor inline
  5. Klik DEPLOY, dan fungsi Anda akan segera dibuat dan dijalankan

Catatan:

  1. Cloud Healthcare API yang digunakan dalam fungsi ini menggunakan Kredensial Default Aplikasi untuk mengautentikasi permintaan yang masuk ke Healthcare API
  2. Simpan URL fungsi yang di-deploy agar dapat dipanggil dari aplikasi Android. Sejauh ini, kita telah membuat semua bagian yang diperlukan agar Aplikasi Android dapat menulis data FHIR ke BigQuery menggunakan Healthcare API secara independen. Sekarang, pastikan semua bagian terhubung dan API dipanggil saat pengiriman kuesioner.

6. Penyiapan Project Android dan Firebase

Kita akan menggunakan Android Studio versi terbaru dan penyiapan Emulator Android (Anda juga dapat menggunakan perangkat Android fisik). Setelah siap, ikuti langkah-langkah di bawah ini:

  1. Clone repositori FHIR App Examples: https://github.com/google/fhir-app-examples
  2. Buka Android Studio, pilih Import Project (Gradle, Eclipse ADT, dll.), lalu pilih folder cloudfunction/ dari kode sumber yang telah Anda download sebelumnya.Buka app/google-services.json. Kolom ini kosong dan perlu diisi.

Buat kunci SHA-1 menggunakan ./gradlew signingReport, dan catat kolom SHA1 di bagian varian debug

Tambahkan aplikasi ke Firebase menggunakan Firebase Console (ikuti Langkah 1 dan 2) menggunakan Firebase Console. Di kolom "Debug signing certificate SHA-1 ", isi nilai dari langkah sebelumnya

Download google-services.json dan ganti konten dari Firebase ke file kosong di folder aplikasi

Firebase SDK telah ditambahkan di file Gradle build

  1. Buka FhirApplication.kt, lalu tetapkan kolom baseUrl ke URL Cloud Function Anda
  2. Pilih "Sync your project with Gradle files" dari toolbar Android Studio

Sekarang kita telah menyelesaikan penyiapan dan penyertaan dependensi dalam implementasi.

7. Penyiapan dan Respons Kuesioner

Kita sudah menyiapkan konfigurasi Kuesioner di repo. Namun, mari kita bahas kodenya:

  1. Pastikan FragmentContainerView ada di dalam ConstraintLayout dalam file app/src/main/res/layout/activity_main.xml
  2. Pastikan QuestionnaireFragment memiliki FHIR Questionnaire yang dienkode JSON untuk merender fragmen

Dalam hal ini, kita akan menggunakan json - " new-patient-registration-paginated.json" untuk merender fragmen. Periksa file MainActivity.kt, AddPatientFragment.kt, dan AddPatientViewModel.kt

Setelah memverifikasi fragmen, json, dan model, lanjutkan jalankan aplikasi dan coba masukkan jawaban untuk kolom dalam kuesioner

Anda akan melihat validasi kolom string, tanggal, numerik, dan kondisi lainnya

Anda dapat menjalankan aplikasi dan memeriksa log untuk melihat catatan yang dibuat

9e1bb440074f1a88.png

Anda dapat mempelajari lebih lanjut cara menggunakan fragmen di sini. Cukup sekian untuk penyiapan fragmen kuesioner dan respons.

8. Tampilan Hasil Set Data BigQuery dan FHIRStore

Setelah semua penyiapan dan update selesai, klik "Sync Project with Gradle Files". Setelah selesai,

  1. Jalankan aplikasi di Android Emulator dan lihat kuesioner Anda dimuat
  2. Jawab pertanyaan dan klik kirim di bagian atas
  3. Anda akan melihat pesan "Pasien disimpan" di aplikasi

Melihat Hasil FHIR Store

Buka konsol FHIRViewer Google Cloud Healthcare

1064f03b4e1e45f5.png

Pilih FHIR Store Anda, kueri, lalu klik RUN SEARCH dan Anda akan melihat hasil penelusuran tepat di bawahnya. 37a070480a06362c.png

Melihat Hasil Set Data BigQuery

Buka konsol Google Cloud BigQuery dan di panel Explorer, buka set data yang Anda buat untuk project ini.

7c483ec6d578b8cd.png

Klik Preview dan Anda akan melihat jumlah dan data yang sama dengan yang Anda temukan di Healthcare FHIR Store dalam Set Data BigQuery.

faafeae4a837a41c.png

Sekarang Anda dapat menjalankan BigQuery SQL, Analytics, dan ML pada data FHIR yang baru saja Anda simpan ke dalam set data cloud.

9. Penelusuran dan Kemampuan Offline

Untuk memastikan kemampuan offline di aplikasi Android FHIR SDK yang didukung OHS, pastikan untuk mengikuti pedoman desain yang perlu diaktifkan dalam penerapan yang kita bahas di sini.

Untuk menelusuri resource FHIR, kita memiliki dua cara:

  1. FHIR Viewer di Konsol Google Cloud
  2. Metode Penelusuran FHIR menggunakan permintaan GET atau POST

10. Demo Aplikasi

Setelah aplikasi kita dikembangkan, mari kita coba dan lihat hasilnya di cloud.

11. Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam posting ini, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Manage resources
  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project

12. Selamat

Selamat! Dalam project ini, kita telah berhasil membuat aplikasi Android untuk menyimpan dan membuat kueri data FHIR Pasien di FHIR Store Cloud Healthcare dan set data BigQuery menggunakan Cloud Healthcare API hanya dalam 7 langkah:

  1. Menyiapkan Aplikasi Android
  2. Menyiapkan Google Cloud Healthcare API
  3. Membuat Set Data Layanan Kesehatan dan Datastore FHIR
  4. Membuat Set Data BigQuery
  5. Mengonfigurasi BigQuery Stream untuk menulis data FHIR Datastore ke Set Data BigQuery
  6. Men-deploy Cloud Function untuk menulis data R4 ke FHIR Datastore
  7. Memicu Cloud Functions dari Aplikasi Android saat pengiriman respons kuesioner

Setelah langkah-langkahnya jelas, Anda dapat mencoba langkah-langkah yang sama untuk sinkronisasi pengeditan FHIR pasien ke cloud.