Управляйте данными FHIR из приложения Android с помощью OHS и Google Cloud

1. Введение

В этой лаборатории мы узнаем, как использовать OHS (Open Health Stack) и API Google Cloud Healthcare для создания инновационных решений в области здравоохранения, которые являются безопасными, масштабируемыми и совместимыми. Комбинация этих мощных инструментов дает медицинским работникам и разработчикам возможность создавать решения на основе данных, которые могут значительно улучшить уход за пациентами и улучшить результаты.

Мы намерены использовать возможности Open Health Stack и Google Cloud Healthcare API в мобильном приложении, которое использует Android-FHIR SDK, чтобы позволить пользователям управлять записями пациентов FHIR в Google Cloud.

Давайте углубимся в этапы реализации.

Что ты построишь

В этой реализации

  • Мы будем использовать библиотеку сбора структурированных данных для отображения анкеты и библиотеку FHIR Engine для хранения содержимого FHIR ответа.
  • Затем данные будут загружены в Cloud FHIR Store с помощью API Cloud Healthcare.
  • Перед загрузкой мы сначала пройдем аутентификацию с помощью Firebase.

8514f90f016ecfc0.png

Диаграмма выше представляет поток. Прочтите блог для подробного объяснения каждого компонента.

2. Требования

  • Браузер, например Chrome или Firefox.
  • Проект Google Cloud с включенной оплатой
  • Последняя версия Android Studio.
  • Настройка эмулятора Android (вы также можете использовать свое физическое устройство Android)

Создайте свой проект

  1. В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
  3. Включите необходимые API (BigQuery, Healthcare API)

Активировать Cloud Shell

  1. Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq :

В Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:

51622c00acec2fa.png

  1. После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию и что для проекта уже установлен идентификатор вашего проекта. Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <YOUR_PROJECT_ID>

Обратитесь к документации по командам и использованию gcloud.

3. Настройка API здравоохранения

  1. Убедитесь, что Healthcare API включен: перейдите в библиотеку API Google Cloud Console, найдите Healthcare API, нажмите «ВКЛЮЧИТЬ», появится API и добавьте учетную запись службы здравоохранения в проект.
  2. Предоставление разрешений администратора BigQuery сервисному аккаунту. Чтобы предоставить разрешение, выполните приведенную ниже команду gcloud в терминале Cloud Shell:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com  --role=roles/bigquery.admin

Примечание. Вы можете найти свои PROJECT_ID и PROJECT_NUMBER из консоли, для идентификации обратитесь к документу .

Создать набор данных здравоохранения

В Cloud Shell выполните приведенную ниже команду, чтобы создать набор данных Healthcare:

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

Установите местоположение в регионе.

Создать хранилище данных FHIR

В Cloud Shell выполните приведенную ниже команду, чтобы создать хранилище данных FHIR:

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

Установите местоположение в регионе.

4. Настройка BigQuery и потоковая передача

Сюда входит сохранение данных FHIR Store в наборе данных BigQuery, чтобы их можно было запрашивать, программировать и анализировать, используя возможности BigQuery и BQML.

Создать набор данных BigQuery

Набор данных BigQuery – это набор таблиц. Все таблицы в наборе данных хранятся в одном и том же месте данных. Вы также можете прикрепить настраиваемые элементы управления доступом, чтобы ограничить доступ к набору данных и его таблицам.

В Cloud Shell выполните следующую команду:

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

Установите местоположение в регионе.

Создать потоковую передачу BigQuery

Потоковая передача необходима для экспорта изменений ресурсов в BigQuery каждый раз, когда ресурс FHIR создается, обновляется, исправляется или удаляется в хранилище FHIR. В каждом магазине разрешено иметь до 10 конфигураций потоковой передачи.

  1. Перейдите в консоль Google Cloud Healthcare, страницу браузера .
  2. Щелкните вновь созданный НАБОР ДАННЫХ.
  3. Нажмите на вновь созданный МАГАЗИН ДАННЫХ. 7acaa364337086aa.png
  4. Нажмите «ДОБАВИТЬ НОВУЮ КОНФИГУРАЦИЯ ПОТОКА».

caa2cc881d3406aa.png

  1. Выберите вновь созданный набор данных BigQuery из списка, тип схемы «Аналитика V2» и тип ресурса «Пациент» из списка (вы можете выбрать любое количество типов ресурсов) и нажмите «Готово».

1e038c694fcca1ef.png

Вот и все. Все готово для сохранения данных хранилища FHIR и их потоковой передачи в BigQuery.

5. Облачные функции (запись данных R4 в хранилище данных FHIR с использованием API здравоохранения)

Облачные функции позволяют удобно писать код и развертывать его в облаке бессерверным способом. Это масштабируемая система с оплатой по мере использования, управляемая событиями и открытая с точки зрения технологий и языковой поддержки. Обратитесь к документации для получения дополнительных функций.

Функция, которую мы напишем, предназначена для аутентификации и записи данных, поступающих в формате FHIR R4, в хранилище данных FHIR с использованием API Cloud Healthcare. Чтобы создать функцию облака:

  1. Перейдите в раздел «Облачные функции» и нажмите «СОЗДАТЬ ФУНКЦИЮ».
  2. Установите имя fhir-datastore-proxy, регион us-central1 и для параметра аутентификации установите значение «Требовать аутентификацию».
  3. Разверните параметры среды выполнения, сборки, подключений и безопасности. Вы добавите пять переменных среды выполнения:

Имя: CLOUD_FUNCTIONS_ENDPOINT | Значение: конечная точка URL-адреса функции. Вы увидите это в блоке аутентификации выше и будет иметь вид: https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy .

Имя: PROJECT_ID | Значение: идентификатор вашего проекта

Имя: DATASET_LOCATION | Значение: расположение вашего хранилища данных FHIR.

Имя: DATASET_ID | Значение: идентификатор хранилища данных здравоохранения.

Имя: FHIR_STORE_ID | Значение: идентификатор магазина FHIR.

  1. Нажмите «Далее», чтобы перейти на следующую страницу, где мы добавим наш код.
  2. Теперь должен отобразиться встроенный редактор, выберите Java 17 в качестве языка и перейдите к классу HelloHttpFunction.java. Переименуйте его в FhirDatastoreProxy.java. Не забудьте также переименовать точку входа в gcfv2.FhirDatastoreProxy.
  3. Скопируйте код из репозитория и вставьте его во встроенный редактор.
  4. Перейдите к файлу pom.xml и скопируйте файл pom из репозитория во встроенный редактор.
  5. Нажмите РАЗВЕРТЫВАТЬ, и ваша функция скоро будет создана и запущена.

Примечание:

  1. API Cloud Healthcare, используемый в этой функции, использует учетные данные приложения по умолчанию для аутентификации запросов, поступающих в API Healthcare.
  2. Сохраните URL-адрес развернутой функции, чтобы иметь возможность вызывать ее из приложения Android. На данный момент мы создали все компоненты, необходимые приложению Android для независимой записи данных FHIR в BigQuery с использованием Healthcare API. Теперь давайте убедимся, что все части связаны и API вызывается при отправке анкеты.

6. Проект Android и настройка Firebase

Мы будем использовать последнюю версию Android Studio и настроенный эмулятор Android (вы также можете использовать свое физическое устройство Android). Как только он будет готов, выполните следующие действия:

  1. Клонируйте репозиторий примеров приложений FHIR: https://github.com/google/fhir-app-examples .
  2. Откройте Android Studio, выберите «Импортировать проект» (Gradle, Eclipse ADT и т. д.) и выберите облачную функцию/папку из исходного кода, который вы скачали ранее. Откройте app/google-services.json. Он пуст и его необходимо заполнить.

Создайте ключ SHA-1, используя ./gradlew SigningReport, и обратите внимание на поле SHA1 в варианте отладки.

Добавьте приложение в Firebase с помощью консоли Firebase (выполните шаги 1 и 2) с помощью консоли Firebase. В поле «Отладка сертификата подписи SHA-1» введите значение из предыдущего шага.

Загрузите google-services.json и замените содержимое Firebase на пустой файл в папке приложения.

Firebase SDK уже добавлен в файлы Gradle сборки.

  1. Откройте FhirApplication.kt и установите в поле baseUrl URL-адрес вашей облачной функции.
  2. Выберите «Синхронизировать проект с файлами Gradle» на панели инструментов Android Studio.

Мы завершили часть реализации по настройке и включению зависимостей.

7. Настройка анкеты и ответы

Мы уже настроили настройку анкеты в репозитории. Но давайте пробежимся по коду:

  1. Убедитесь, что FragmentContainerView присутствует внутри ConstraintLayout в файле app/src/main/res/layout/activity_main.xml.
  2. Убедитесь, что в объекте QuestionnaireFragment имеется опросник FHIR в формате JSON для визуализации фрагмента.

В этом случае мы будем использовать json — « new-pathinated-registration-paginated.json » для визуализации фрагмента. Проверьте файлы MainActivity.kt , AddPatientFragment.kt и AddPatientViewModel.kt.

Теперь, когда мы проверили фрагмент, json и модель, запустите приложение и попробуйте ввести ответы в поля анкеты.

Вы заметите проверку строки, даты, числовых полей и других условий.

Вы можете запустить приложение и проверить журнал, чтобы увидеть созданную запись.

9e1bb440074f1a88.png

Подробнее об использовании фрагментов можно узнать здесь . Вот, пожалуй, и все, что касается фрагмента анкеты и настройки ответа.

8. Отображение результатов набора данных FHIRStore и BigQuery

Теперь, когда у нас все настроено с настройкой и обновлениями, нажмите «Синхронизировать проект с файлами Gradle». После завершения,

  1. Запустите приложение на эмуляторе Android и наблюдайте за загрузкой анкеты.
  2. Ответьте на вопросы и нажмите «Отправить» вверху.
  3. В приложении вы должны увидеть сообщение «Пациент сохранен».

Посмотреть результат магазина FHIR

Перейдите в консоль Google Cloud Healthcare FHIRViewer .

1064f03b4e1e45f5.png

Выберите свой магазин FHIR, введите запрос и нажмите «ЗАПУСК ПОИСКА», и вы увидите результаты поиска прямо ниже. 37a070480a06362c.png

Просмотр результатов набора данных BigQuery

Перейдите в консоль Google Cloud BigQuery и на панели Explorer перейдите к набору данных, который вы создали для этого проекта.

7c483ec6d578b8cd.png

Нажмите «Предварительный просмотр», и вы увидите то же число и результирующие данные, которые вы нашли в Healthcare FHIR Store в наборе данных BigQuery.

faafeae4a837a41c.png

Теперь вы можете выполнять BigQuery SQL, аналитику и машинное обучение на данных FHIR, которые вы только что сохранили в наборе облачных данных.

9. Поиск и офлайн-возможности

Чтобы обеспечить возможность работы в автономном режиме в приложении Android FHIR SDK на базе OHS, обязательно следуйте рекомендациям по проектированию , которые необходимо включить в реализации, которую мы обсуждаем здесь.

Для поиска ресурсов FHIR у нас есть два способа:

  1. Средство просмотра FHIR в Google Cloud Console
  2. Метод поиска FHIR с использованием запросов GET или POST.

10. Демонстрация приложения

Теперь, когда наше приложение разработано, давайте поиграем с ним и посмотрим результат в облаке.

11. Очистка

Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом посте, выполните следующие действия:

  1. В консоли Google Cloud перейдите на страницу «Управление ресурсами».
  2. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить».
  3. В диалоговом окне введите идентификатор проекта и нажмите «Завершить работу», чтобы удалить проект.

12. Поздравления

Поздравляем! В этом проекте мы успешно создали приложение Android для хранения и запроса данных FHIR пациентов в облачном хранилище FHIR Store и наборе данных BigQuery с использованием Cloud Healthcare API всего за 7 шагов:

  1. Установите приложение для Android
  2. Настройте API Google Cloud Healthcare.
  3. Создан набор медицинских данных и хранилище данных FHIR.
  4. Создан набор данных BigQuery.
  5. Настроен поток BigQuery для записи данных хранилища данных FHIR в набор данных BigQuery.
  6. Развернута облачная функция для записи данных R4 в хранилище данных FHIR.
  7. Запуск облачных функций из приложения Android при отправке ответа на анкету

Теперь, когда шаги понятны, попробуйте выполнить те же действия для синхронизации редактирования FHIR пациента с облаком.