OHS ve Google Cloud ile Android uygulamasından FHIR verilerini yönetme

1. Giriş

Bu codelab'de, güvenli, ölçeklenebilir ve uyumlu yenilikçi sağlık çözümleri oluşturmak için OHS (Open Health Stack) ve Google Cloud Healthcare API'yi nasıl kullanacağımızı öğreneceğiz. Bu güçlü araçların kombinasyonu, sağlık çalışanlarına ve geliştiricilere hasta bakımını ve sonuçlarını önemli ölçüde iyileştirebilecek veriye dayalı çözümler oluşturma olanağı sunar.

Kullanıcıların Google Cloud'da FHIR hasta kayıtlarını yönetmesini sağlamak için Android-FHIR SDK'yı kullanan bir mobil uygulamada Open Health Stack ve Google Cloud Healthcare API'nin gücünden yararlanmayı planlıyoruz.

Uygulama adımlarına göz atalım.

Ne oluşturacaksınız?

Bu uygulamada,

  • Anketi oluşturmak için Yapılandırılmış Veri Yakalama Kitaplığı'nı, yanıtın FHIR içeriğini depolamak için ise FHIR Engine kitaplığını kullanacağız.
  • Veriler daha sonra Cloud Healthcare API kullanılarak Cloud FHIR Store'a yüklenir.
  • Yükleme işleminden önce Firebase kullanarak kimliğimizi doğrulayacağız.

8514f90f016ecfc0.png

Yukarıdaki şema, akışı gösterir. Her bileşenin ayrıntılı açıklaması için blogu okuyun.

2. Şartlar

  • Chrome veya Firefox gibi bir tarayıcı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi
  • Android Studio'nun son sürümü
  • Kurulu bir Android emülatörü (fiziksel Android cihazınızı da kullanabilirsiniz)

Projenizi oluşturma

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
  3. Gerekli API'leri (BigQuery, Healthcare API) etkinleştirin.

Cloud Shell'i etkinleştirme

  1. bq önceden yüklenmiş olarak gelen, Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız:

Cloud Console'da sağ üst köşedeki Cloud Shell'i etkinleştir'i tıklayın:

51622c00acec2fa.png

  1. Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz. Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>

gcloud komutları ve kullanımı için belgelere bakın.

3. Healthcare API Kurulumu

  1. Healthcare API'nin etkinleştirildiğinden emin olun: Google Cloud Console API kitaplığına gidin, Healthcare API'yi arayın, ETKİNLEŞTİR'i tıklayın. Bu işlemle API etkinleştirilir ve Healthcare hizmet hesabı projeye eklenir.
  2. Hizmet hesabına BigQuery yönetici izinleri verme İzin vermek için Cloud Shell terminalinde aşağıdaki gcloud komutunu çalıştırın:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com  --role=roles/bigquery.admin

Not: PROJECT_ID ve PROJECT_NUMBER değerlerinizi konsolda bulabilirsiniz. Kimlik için dokümana bakın.

Sağlık Hizmetleri Veri Kümesi Oluşturma

Cloud Shell'de, Healthcare veri kümesini oluşturmak için aşağıdaki komutu çalıştırın:

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

Konumu bir bölge olarak ayarlayın.

FHIR veri deposu oluşturma

FHIR veri deposunu oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:

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

Konumu bir bölge olarak ayarlayın.

4. BigQuery kurulumu ve akışı

Bu, FHIR Store verilerinin BigQuery veri kümesine kaydedilmesini kapsar. Böylece, BigQuery ve BQML'nin gücünden yararlanarak bu veriler sorgulanabilir, programlanabilir ve analiz edilebilir.

BigQuery veri kümesi oluşturma

BigQuery veri kümesi, tabloların bir koleksiyonudur. Bir veri kümesindeki tüm tablolar aynı veri konumunda depolanır. Ayrıca, bir veri kümesine ve tablolarına erişimi sınırlamak için özel erişim kontrolleri de ekleyebilirsiniz.

Cloud Shell'de aşağıdaki komutu çalıştırın:

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

Konumu bir bölge olarak ayarlayın.

BigQuery Akışı oluşturma

FHIR deposunda bir FHIR kaynağı oluşturulduğunda, güncellendiğinde, yama aldığında ya da silindiğinde kaynak değişikliklerini BigQuery'ye aktarmak için akış gereklidir. Her bir deponun en fazla 10 akış yapılandırmasına sahip olmasına izin verilir.

  1. Google Cloud Healthcare Console'un tarayıcı sayfasına gidin.
  2. Yeni oluşturulan VERİ KÜMESİ'ni tıklayın.
  3. Yeni oluşturulan VERİ DEPOSU'nu tıklayın. 7acaa364337086aa.png
  4. YENİ AKIŞ YAPILANDIRMASI EKLE'yi tıklayın.

caa2cc881d3406aa.png

  1. Listeden yeni oluşturulan BigQuery veri kümesini, şema türünü "Analytics V2" olarak ve kaynak türünü listeden "Hasta" olarak seçin (istediğiniz kadar kaynak türü seçebilirsiniz) ve Bitti'yi tıklayın.

1e038c694fcca1ef.png

Bu kadar basit. FHIR deposu verilerini kaydetmeye ve BigQuery'ye aktarmaya hazırsınız.

5. Cloud Functions (Healthcare API'yi kullanarak FHIR veri deposuna R4 verileri yazma)

Cloud Functions, kodunuzu rahatça yazmanıza ve sunucusuz bir şekilde buluta dağıtmanıza olanak tanır. Ölçeklenebilir, kullandıkça öde, etkinliğe dayalı ve teknoloji ile dil desteği açısından açıktır. Diğer özellikler için belgelere göz atın.

Yazacağımız işlev, Cloud Healthcare API'yi kullanarak FHIR R4 biçiminde gelen verilerin kimliğini doğrulamayı ve bu verileri FHIR veri deposuna yazmayı amaçlamaktadır. Cloud Functions işlevini oluşturmak için:

  1. Cloud Functions'a gidin ve CREATE FUNCTION'ı (İşlev oluştur) tıklayın.
  2. Adı fhir-datastore-proxy, bölgeyi us-central1 ve kimlik doğrulama seçeneğini "Kimlik Doğrulama Gerekli" olarak ayarlayın.
  3. Çalışma zamanı, derleme, bağlantılar ve güvenlik ayarlarını genişletin. Beş çalışma zamanı ortamı değişkeni ekleyeceksiniz:

Ad: CLOUD_FUNCTIONS_ENDPOINT | Değer: İşlevin URL uç noktası. Bunu yukarıdaki Kimlik Doğrulama bloğunda görürsünüz ve şu biçimde olur: https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy

Ad: PROJECT_ID | Değer: proje kimliğiniz

Ad: DATASET_LOCATION | Değer: FHIR veri deponuzun konumu

Ad: DATASET_ID | Değer: Healthcare Datastore kimliği

Ad: FHIR_STORE_ID | Değer: FHIR deposu kimliği

  1. Sonraki sayfaya gitmek için İleri'ye basın. Bu sayfada kodumuzu ekleyeceğiz.
  2. Artık satır içi düzenleyici gösterilmelidir. Dil olarak Java 17'yi seçin ve HelloHttpFunction.java sınıfına gidin. Dosyanın adını FhirDatastoreProxy.java olarak değiştirin. Giriş noktasını gcfv2.FhirDatastoreProxy olarak yeniden adlandırmayı da unutmayın.
  3. Depodaki kodu kopyalayıp satır içi düzenleyiciye yapıştırın.
  4. pom.xml dosyasına gidin ve depodaki pom dosyasını satır içi düzenleyiciye kopyalayın.
  5. DEPLOY'u tıkladığınızda işleviniz oluşturulur ve kısa süre içinde çalıştırılır.

Not:

  1. Bu işlevde kullanılan Cloud Healthcare API, Healthcare API'ye gelen isteklerin kimliğini doğrulamak için Uygulama Varsayılan Kimlik Bilgisi'ni kullanır.
  2. Android uygulamasından çağırabilmek için dağıtılan işlev URL'sini kaydedin. Şimdiye kadar Android uygulamasının Healthcare API'yi bağımsız olarak kullanarak BigQuery'ye FHIR verileri yazması için gereken tüm parçaları oluşturduk. Şimdi tüm parçaların bağlı olduğundan ve API'nin bir anket gönderiminde çağrıldığından emin olalım.

6. Android projesi ve Firebase kurulumu

Android Studio'nun yeni bir sürümünü ve Android Emülatör kurulumunu kullanacağız (fiziksel Android cihazınızı da kullanabilirsiniz). Hazır olduğunda aşağıdaki adımları uygulayın:

  1. FHIR App Examples deposunu klonlayın: https://github.com/google/fhir-app-examples
  2. Android Studio'yu açın, Projeyi İçe Aktar'ı (Gradle, Eclipse ADT vb.) seçin ve daha önce indirdiğiniz kaynak kodundan cloudfunction/ klasörünü seçin.app/google-services.json dosyasını açın. Boş ve doldurulması gerekiyor.

./gradlew signingReport komutunu kullanarak SHA-1 anahtarı oluşturun ve hata ayıklama varyantı altındaki SHA1 alanını not edin.

Firebase konsolunu kullanarak uygulamayı Firebase'e ekleyin (1. ve 2. adımları uygulayın). "Debug signing certificate SHA-1 " (Hata ayıklama imza sertifikası SHA-1) alanına önceki adımdaki değeri girin.

google-services.json dosyasını indirin ve Firebase'deki içeriği uygulama klasöründeki boş dosyayla değiştirin.

Firebase SDK'sı, Gradle dosyalarına zaten eklenmiş olmalıdır.

  1. FhirApplication.kt dosyasını açın ve baseUrl alanını Cloud Function'ınızın URL'sine ayarlayın.
  2. Android Studio araç çubuğundan "Projenizi Gradle dosyalarıyla senkronize edin"i seçin.

Uygulamanın kurulum ve bağımlılık ekleme bölümünü tamamladık.

7. Anket Kurulumu ve Yanıtı

We are already set up with the Questionnaire setup in the repo. Ancak kodu inceleyelim:

  1. FragmentContainerView'un, app/src/main/res/layout/activity_main.xml dosyasındaki ConstraintLayout içinde bulunduğundan emin olun.
  2. QuestionnaireFragment'ın, parçayı oluşturmak için JSON kodlu bir FHIR Anketi içerdiğinden emin olun.

Bu örnekte, parçayı oluşturmak için json - "new-patient-registration-paginated.json" dosyasını kullanacağız. MainActivity.kt, AddPatientFragment.kt ve AddPatientViewModel.kt dosyalarını kontrol edin.

Parçayı, JSON'u ve modeli doğruladığımıza göre uygulamayı çalıştırıp anketteki alanlara yanıt girmeyi deneyebilirsiniz.

Dize, tarih, sayısal alanların ve diğer koşulların doğrulanacağını fark edeceksiniz.

Uygulamayı çalıştırabilir ve oluşturulan kaydınızı görmek için günlüğü kontrol edebilirsiniz.

9e1bb440074f1a88.png

Parçaları kullanma hakkında daha fazla bilgiyi burada bulabilirsiniz. Anket parçası ve yanıt kurulumuyla ilgili bilgiler bu kadar.

8. FHIRStore ve BigQuery Veri Kümesi Sonuç Görüntüleme

Kurulum ve güncellemeler tamamlandığına göre "Sync Project with Gradle Files"ı (Projeyi Gradle Dosyalarıyla Senkronize Et) tıklayın. İşlem tamamlandığında

  1. Uygulamayı Android Emulator'da çalıştırın ve anketinizin yüklenmesini izleyin.
  2. Soruları yanıtlayın ve üst kısımdaki gönder düğmesini tıklayın.
  3. Uygulamada "Hasta kaydedildi" mesajını görmelisiniz.

FHIR Deposu sonucunu görüntüleme

Google Cloud Healthcare FHIRViewer konsoluna gidin.

1064f03b4e1e45f5.png

FHIR Store'unuzu ve sorgunuzu seçip ARAŞTIRMAYA BAŞLA'yı tıkladığınızda arama sonuçlarını hemen aşağıda görürsünüz. 37a070480a06362c.png

BigQuery Veri Kümesi Sonucunu Görüntüleme

Google Cloud BigQuery Console'a gidin ve Explorer bölmesinde bu proje için oluşturduğunuz veri kümesine gidin.

7c483ec6d578b8cd.png

Önizleme'yi tıkladığınızda BigQuery veri kümesinde Healthcare FHIR Store'da bulduğunuz sayının ve sonuç verilerinin aynısını görmeniz gerekir.

faafeae4a837a41c.png

Artık bulut veri kümesine kaydettiğiniz FHIR verileri üzerinde BigQuery SQL, Analytics ve ML işlemlerini gerçekleştirebilirsiniz.

9. Arama ve Çevrimdışı Kullanım

OHS destekli Android FHIR SDK uygulamasında çevrimdışı özelliği etkinleştirmek için burada ele aldığımız uygulamada etkinleştirilmesi gereken tasarım yönergesini uyguladığınızdan emin olun.

FHIR kaynaklarını aramak için iki yöntemimiz var:

  1. Google Cloud Console'daki FHIR Görüntüleyici
  2. GET veya POST isteklerini kullanarak FHIR arama yöntemi

10. Uygulama Demosu

Uygulamamız geliştirildiğine göre onu deneyelim ve sonucu bulutta görelim.

11. Temizleme

Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:

  1. Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
  2. Proje listesinde silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
  3. İletişim kutusunda proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.

12. Tebrikler

Tebrikler! Bu projede, Cloud Healthcare API'yi kullanarak yalnızca 7 adımda bulut sağlık hizmetleri FHIR deposunda ve BigQuery veri kümesinde hasta FHIR verilerini depolayıp sorgulamak için başarılı bir şekilde Android uygulaması oluşturduk:

  1. Android uygulamasını kurma
  2. Google Cloud Healthcare API'yi ayarlama
  3. Sağlık hizmeti veri kümesi ve FHIR veri deposu oluşturuldu
  4. BigQuery veri kümesi oluşturma
  5. FHIR Datastore verilerini BigQuery veri kümesine yazmak için bir BigQuery akışı yapılandırıldı.
  6. R4 verilerini FHIR Datastore'a yazmak için bir Cloud Functions işlevi dağıtıldı.
  7. Anket yanıtı gönderildiğinde Android uygulamasından tetiklenen Cloud Functions

Adımlar netleştiğine göre, hasta FHIR düzenleme senkronizasyonunu buluta aktarma için aynı adımları uygulamaktan çekinmeyin.