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 layanan kesehatan inovatif yang aman, skalabel, dan mematuhi peraturan. Kombinasi alat-alat canggih ini memberi petugas kesehatan dan pengembang kemampuan untuk membuat solusi berbasis data yang dapat meningkatkan perawatan dan hasil pasien secara signifikan.

Kami bermaksud untuk memanfaatkan kecanggihan Open Health Stack dan Google Cloud Healthcare API di aplikasi seluler yang menggunakan Android-FHIR SDK agar pengguna dapat mengelola rekam medis pasien FHIR di Google Cloud.

Mari pelajari lebih dalam langkah-langkah implementasinya.

Yang akan Anda build

Dalam implementasi ini,

  • Kita akan menggunakan Library Pengambilan Data Terstruktur untuk merender Kuesioner, dan library FHIR Engine untuk menyimpan konten respons FHIR
  • Data tersebut kemudian akan diupload ke Cloud FHIR Store menggunakan Cloud Healthcare API
  • Sebelum mengupload, kami akan mengautentikasi diri terlebih dahulu menggunakan Firebase

8514f90f016ecfc0.pngS

Diagram di atas mewakili alurnya. 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. Mengaktifkan API yang diperlukan (BigQuery, Healthcare API)

Aktifkan Cloud Shell

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

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

51622c00acec2fa.pngS

  1. Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda. Jika project Anda tidak 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 Google Cloud Console API, telusuri Healthcare API, klik ENABLE, lalu klik ENABLE dan API tersebut akan ditambahkan ke project Healthcare Service Account
  2. Memberikan izin admin BigQuery ke Service Account 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 identifikasi.

Membuat Set Data Healthcare

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

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

Tetapkan lokasi ke suatu wilayah.

Membuat FHIR Datastore

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

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

Tetapkan lokasi ke suatu wilayah.

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.

Membuat 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.

Jalankan perintah di bawah ini di Cloud Shell:

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

Tetapkan lokasi ke suatu wilayah.

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 konsol Healthcare Google Cloud, halaman browser
  2. Klik DATASET yang baru dibuat
  3. Klik DATA STORE yang baru dibuat 7acaa364337086aa.pngS
  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 Sumber Daya "Patient" dari daftar (Anda dapat memilih jenis sumber daya sebanyak mungkin) dan klik Selesai

1e038c694fcca1ef.pngS

Selesai. Anda sudah siap untuk menyimpan data penyimpanan FHIR dan mengalirkannya ke BigQuery.

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

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

Fungsi yang akan kita tulis ditujukan untuk mengautentikasi dan menulis data yang akan datang 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. Setel nama ke fhir-datastore-proxy, region ke us-central1, dan opsi Autentikasi menjadi "Wajibkan Autentikasi"
  3. Luaskan setelan Runtime, build, koneksi, dan keamanan. Anda akan menambahkan lima variabel lingkungan Runtime:

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

Nama: PROJECT_ID | Value: project id Anda

Nama: DATASET_LOCATION | Value: lokasi FHIR Datastore Anda

Nama: DATASET_ID | Nilai: ID Healthcare Datastore

Nama: FHIR_STORE_ID | Nilai: ID Toko FHIR

  1. Tekan Berikutnya untuk membuka halaman berikutnya, tempat kita akan menambahkan kode
  2. Editor inline kini akan ditampilkan, pilih Java 17 sebagai bahasa, dan buka class HelloHttpFunction.java. Ganti namanya menjadi FhirDatastoreProxy.java. Jangan lupa untuk 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 Application Default Credential untuk mengautentikasi permintaan yang masuk ke Healthcare API
  2. Menyimpan 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 telah terhubung dan API dipanggil saat pengiriman kuesioner.

6. Project Android dan Penyiapan Firebase

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

  1. Buat clone repo Contoh Aplikasi FHIR: https://github.com/google/fhir-app-examples
  2. Buka Android Studio, pilih Import Project (Gradle, Eclipse ADT, dsb.) dan pilih folder cloudfunction/ dari kode sumber yang telah Anda unduh sebelumnya.Buka app/google-services.json. Kolom ini kosong dan perlu diisi.

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

Tambahkan aplikasi ke Firebase menggunakan Firebase Console (ikuti Langkah 1 dan 2) menggunakan Firebase Console. Di bagian "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 dalam file Gradle build

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

Saat ini kita telah menyelesaikan bagian penyiapan dan penyertaan dependensi dalam implementasi.

7. Penyiapan dan Respons Kuesioner

Kita sudah melakukan penyiapan Kuesioner di repo. Tapi mari kita bahas kodenya:

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

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

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

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

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

9e1bb440074f1a88.pngS

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

8. Tampilan Hasil Set Data FHIRStore dan BigQuery

Setelah menyiapkan dan mengupdate, 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 Penyimpanan FHIR

Buka konsol FHIRViewer Google Cloud Healthcare

1064f03b4e1e45f5.pngS

Pilih FHIR Store Anda, ketik kueri dan tekan RUN SEARCH dan Anda akan melihat hasil penelusuran tepat di bawah. 37a070480a06362c.pngS

Lihat Hasil Set Data BigQuery

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

7c483ec6d578b8cd.pngS

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

faafeae4a837a41c.png

Anda sekarang dapat melakukan BigQuery SQL, Analytics, dan ML pada data FHIR yang baru saja disimpan ke set data cloud.

9. Kemampuan Penelusuran dan Offline

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

Untuk menelusuri resource FHIR, kami memiliki dua cara:

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

10. Demo Aplikasi

Setelah aplikasi kita selesai dikembangkan, mari kita mulai 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 Pasien FHIR di layanan kesehatan cloud FHIR Store 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 Healthcare dan FHIR Datastore
  4. Set Data BigQuery Dibuat
  5. Mengonfigurasi Aliran BigQuery 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 respons kuesioner dikirim

Setelah langkah-langkahnya menjadi jelas, jangan ragu untuk mencoba langkah yang sama untuk menyinkronkan pengeditan Pasien FHIR ke cloud.