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 hizmetleri çö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 bir arada kullanılması, sağlık çalışanları ve geliştiricilerinin hasta bakımını ve sonuçları önemli ölçüde iyileştirebilecek veriye dayalı çözümler üretmesini sağlıyor.

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

Şimdi uygulama adımlarına göz atalım.

Neler oluşturacaksınız?

Bu uygulamada

  • Anket oluşturmak için yapılandırılmış veri yakalama kitaplığını, yanıtın FHIR içeriğini depolamak için FHIR Engine kitaplığını kullanacağız.
  • Ardından veriler Cloud Healthcare API kullanılarak Cloud FHIR Deposu'na yüklenir
  • Yüklemeden önce Firebase kullanarak kimlik doğrulaması yapacağız.

8514f90f016ecfc0.png

Yukarıdaki şema, akışı göstermektedir. Her bir bileşen hakkında ayrıntılı açıklama 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ü
  • Android Emülatör kurulumu (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ı nasıl kontrol edeceğinizi öğrenin.
  3. Gerekli API'leri (BigQuery, Healthcare API) etkinleştirin

Cloud Shell'i etkinleştirme

  1. Google Cloud'da çalışan ve bq ile önceden yüklenmiş olarak gelen 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ğrulanmış olduğunu ve projenin proje kimliğinize ayarlanmış olduğunu göreceksiniz. 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, API'yi tıklayın ve Healthcare Hizmet Hesabı'nı projeye ekleyin
  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 bilgilerinizi konsolda bulabilirsiniz. Tanım için doc'a bakın.

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

Cloud Shell'de aşağıdaki komutu çalıştırarak Healthcare veri kümesini oluşturun:

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

Konumu bir bölgeye ayarlayın.

FHIR Datastore'u oluşturma

Cloud Shell'de, FHIR veri deposunu oluşturmak için 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ölgeye ayarlayın.

4. BigQuery Kurulumu ve Akışı

Bu eğitimde, FHIR Deposu verilerinin BigQuery Veri Kümesine kaydedilmesi sayesinde BigQuery ve BQML'nin gücünden yararlanarak veriler sorgulanabilir, programlanabilir ve analiz edilebilir.

BigQuery Veri Kümesi Oluşturma

BigQuery veri kümesi, tablo koleksiyonudur. Bir veri kümesindeki tüm tablolar aynı veri konumunda depolanır. Bir veri kümesi ve tablolarına erişimi sınırlamak için özel erişim denetimleri 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ölgeye ayarlayın.

BigQuery Akışı Oluşturma

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

  1. Google Cloud Healthcare konsolu, tarayıcı sayfasına gidin
  2. Yeni oluşturulan DATASET'i tıklayın
  3. Yeni oluşturulan DATA STORE'u (7acaa364337086aa.png) tıklayın
  4. YENİ YAYIN YAPILANDIRMASI EKLE'yi tıklayın

caa2cc881d3406aa.png

  1. Listeden yeni oluşturulan BigQuery Veri Kümesini seçin. Şema türü olarak "Analytics V2" ve "Patient" Kaynak Türü (İstediğiniz sayıda kaynak türü seçebilirsiniz) ve Bitti düğmesini tıklayın

1e038c694fcca1ef.png

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

5. Cloud Functions (Healthcare API'yi kullanarak R4 Verilerini FHIR Datastore'a yazma)

Cloud Functions, kodunuzu kolayca yazmanıza ve sunucusuz bir şekilde buluta dağıtmanıza olanak tanır. Ölçeklenebilir, kullandıkça ödemeye dayalı, etkinliğe dayalı ve teknoloji ile dil desteği açısından açık bir platformdur. Diğer özellikler için belgeleri inceleyin.

Yazacağımız işlev, Cloud Healthcare API'yi kullanarak FHIR R4 biçiminde gelen verilerin kimlik doğrulamasını ve FHIR Veri Deposu'na yazılmasını sağlamayı amaçlar. Cloud Functions işlevini oluşturmak için:

  1. Cloud İşlevleri'ne gidin ve İŞLEV OLUŞTUR'u tıklayın
  2. Adı fhir-datastore-proxy, bölgeyi us-central1 ve Kimlik doğrulama seçeneğini "Kimlik Doğrulaması Zorunlu Kıl" olarak belirleyin.
  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 Datastore'unuzun konumu

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

Ad: FHIR_STORE_ID | Değer: FHIR Depo Kimliği

  1. Kodumuzu ekleyeceğimiz sonraki sayfaya gitmek için İleri'ye basın.
  2. Bir satır içi düzenleyici görüntülenir. Dil olarak Java 17'yi seçin ve HelloHttpFunction.java sınıfına gidin. Dosyayı FhirDatastoreProxy.java olarak yeniden adlandırın. Giriş noktasını gcfv2.FhirDatastoreProxy olarak değiştirmeyi de unutmayın.
  3. Depo'daki kodu kopyalayıp satır içi düzenleyiciye yapıştırın
  4. pom.xml dosyasına gidin ve kod deposundaki pom dosyasını satır içi düzenleyiciye kopyalayın.
  5. DAĞIT'ı tıkladığınızda işleviniz kısa bir süre içinde oluşturulup çalıştırılacaktı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 Bilgilerini kullanır
  2. Android uygulamasından çağrı yapabilmek için dağıtılan işlev URL'sini kaydedin. Şu ana kadar Android uygulamasının FHIR verilerini BigQuery'ye ayrı ayrı Healthcare API kullanarak yazması için gereken tüm parçaları oluşturduk. Şimdi tüm parçaların birbirine bağlı olduğundan ve bir anket gönderildiğinde API'nin çağrıldığından emin olalım.

6. Android Projesi ve Firebase Kurulumu

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

  1. FHIR Uygulama Örnekleri deposunu klonlama: 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'u/ klasörü seçin.app/google-services.json'u açın. Boş ve doldurulması gerekiyor.

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

Firebase Konsolu'nu kullanarak (1. ve 2. adımları uygulayın) Firebase Konsolu'nu kullanarak uygulamayı Firebase'e ekleyin. "SHA-1 imza sertifikası hatalarını ayıkla" alanına, önceki adımdaki değeri girin

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

Firebase SDK'sı derleme Gradle dosyalarına zaten eklenmiş

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

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

7. Anket Oluşturma ve Yanıtlama

Depodaki Anket kurulumu zaten hazır. Kodun üzerinden geçelim:

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

Bu durumda json - " new-patient-registration-paginated.json&quot; parçasını oluşturmak için kullanılır. MainActivity.kt, AddPatientFragment.kt ve AddPatientViewModel.kt dosyalarını kontrol edin.

Parçayı, json'u ve modeli doğruladığımıza göre şimdi uygulamayı çalıştırın ve anketteki alanlar için yanıtlar girmeyi deneyin.

Dize, tarih, sayısal alanlar ve diğer koşulların doğrulandığını göreceksiniz.

Oluşturulan kaydınızı görmek için uygulamayı çalıştırıp günlüğe kontrol edebilirsiniz.

9e1bb440074f1a88.png

Parça kullanma hakkında daha fazla bilgiyi buradan edinebilirsiniz. Anket parçası ve yanıt kurulumuyla ilgili anlatacaklarımız bu kadar.

8. FHIRStore ve BigQuery Veri Kümesi Sonuç Ekranı

Artık kurulum ve güncellemeler hazır olduğuna göre "Projeyi Gradle Dosyalarıyla Senkronize Et"i 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 üstteki Gönder'i tıklayın
  3. "Hasta kaydedildi" mesajını göreceksiniz uygulamada

FHIR Mağazası Sonucunu Göster

Google Cloud Healthcare FHIRViewer konsoluna gidin

1064f03b4e1e45f5.png

FHIR Store'unuzu seçip sorgunuzu seçin ve ARAMAYI ÇALIŞTIR'a basın. Arama sonuçlarını hemen aşağıda göreceksiniz. 37a070480a06362c.png.

BigQuery Veri Kümesi Sonucunu Göster

Google Cloud BigQuery konsoluna ve Gezgin bölmesinde bu proje için oluşturduğunuz veri kümesine gidin.

7c483ec6d578b8cd.png

Önizle'yi tıkladığınızda BigQuery veri kümesindeki Healthcare FHIR Deposu'nda bulduğunuz sayı ve sonuç verileri gösterilir.

faafeae4a837a41c.png

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

9. Arama ve Çevrimdışı Özellikleri

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 kurallarına uyduğunuzdan emin olun.

FHIR kaynaklarını aramak için iki yöntem kullanırız:

  1. Google Cloud Console'da FHIR Görüntüleyici
  2. GET veya POST isteklerinin kullanıldığı FHIR Arama Yöntemi

10. Uygulama Demosu

Uygulamamız geliştirildiğine göre üzerinde 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 konsolunda Kaynakları yönetin sayfasına gidin
  2. Proje listesinden silmek istediğiniz projeyi seçin ve ardından Sil’i tıklayın
  3. İletişim kutusuna 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 Cloud Healthcare API'yi kullanarak Cloud Healthcare API'yi kullanarak Hasta FHIR verilerini bulut sağlık hizmetleri FHIR Deposu ve BigQuery veri kümelerinde depolayıp sorgulamak üzere bir Android uygulamasını başarıyla oluşturduk:

  1. Android uygulamasını kurun
  2. Google Cloud Healthcare API'yi kurma
  3. Sağlık Hizmetleri Veri Kümesi ve FHIR Deposu oluşturuldu
  4. BigQuery Veri Kümesi Oluşturuldu
  5. FHIR Datastore verilerini BigQuery veri kümesine yazacak şekilde 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 Cloud Functions tetiklendi

Adımlar net olduğuna göre hasta FHIR düzenlemesini buluta senkronize etmek için aynı adımları deneyebilirsiniz.