1. Введение
В этой лаборатории мы узнаем, как использовать OHS (Open Health Stack) и Google Cloud Healthcare API для создания инновационных решений в области здравоохранения, которые являются безопасными, масштабируемыми и совместимыми. Комбинация этих мощных инструментов дает медицинским работникам и разработчикам возможность создавать решения на основе данных, которые могут значительно улучшить уход за пациентами и улучшить результаты.
Мы намерены использовать возможности Open Health Stack и Google Cloud Healthcare API в мобильном приложении, которое использует Android-FHIR SDK, чтобы позволить пользователям управлять записями пациентов FHIR в Google Cloud.
Давайте углубимся в этапы реализации.
Что ты построишь
В этой реализации
- Мы будем использовать библиотеку сбора структурированных данных для отображения анкеты и библиотеку FHIR Engine для хранения содержимого FHIR ответа.
- Затем данные будут загружены в Cloud FHIR Store с помощью API Cloud Healthcare.
- Перед загрузкой мы сначала пройдем аутентификацию с помощью Firebase.
Диаграмма выше представляет поток. Прочтите блог для подробного объяснения каждого компонента.
2. Требования
- Браузер, например Chrome или Firefox.
- Проект Google Cloud с включенной оплатой
- Последняя версия Android Studio.
- Настройка эмулятора Android (вы также можете использовать свое физическое устройство Android)
Создайте свой проект
- В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
- Включите необходимые API (BigQuery, Healthcare API)
Активировать Cloud Shell
- Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq :
В Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:
- После подключения к Cloud Shell вы должны увидеть, что вы уже прошли аутентификацию и что для проекта уже установлен идентификатор вашего проекта. Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <YOUR_PROJECT_ID>
Обратитесь к документации по командам и использованию gcloud.
3. Настройка API здравоохранения
- Убедитесь, что Healthcare API включен: перейдите в библиотеку API Google Cloud Console, найдите Healthcare API, нажмите «ВКЛЮЧИТЬ», появится API и добавьте учетную запись службы здравоохранения в проект.
- Предоставление разрешений администратора 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 конфигураций потоковой передачи.
- Перейдите в консоль Google Cloud Healthcare, страницу браузера .
- Щелкните вновь созданный НАБОР ДАННЫХ.
- Нажмите на вновь созданный МАГАЗИН ДАННЫХ.
- Нажмите «ДОБАВИТЬ НОВУЮ КОНФИГУРАЦИЯ ПОТОКА».
- Выберите вновь созданный набор данных BigQuery из списка, тип схемы «Аналитика V2» и тип ресурса «Пациент» из списка (вы можете выбрать любое количество типов ресурсов) и нажмите «Готово».
Вот и все. Все готово для сохранения данных хранилища FHIR и их потоковой передачи в BigQuery.
5. Облачные функции (запись данных R4 в хранилище данных FHIR с использованием API здравоохранения)
Облачные функции позволяют удобно писать код и развертывать его в облаке без сервера. Это масштабируемая система с оплатой по мере использования, управляемая событиями и открытая с точки зрения технологий и языковой поддержки. Обратитесь к документации для получения дополнительных функций.
Функция, которую мы напишем, предназначена для аутентификации и записи данных, поступающих в формате FHIR R4, в хранилище данных FHIR с использованием API Cloud Healthcare. Чтобы создать функцию облака:
- Перейдите в раздел «Облачные функции» и нажмите «СОЗДАТЬ ФУНКЦИЮ».
- Установите имя fhir-datastore-proxy, регион us-central1 и для параметра аутентификации установите значение «Требовать аутентификацию».
- Разверните параметры среды выполнения, сборки, подключений и безопасности. Вы добавите пять переменных среды выполнения:
Имя: 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.
- Нажмите «Далее», чтобы перейти на следующую страницу, где мы добавим наш код.
- Теперь должен отобразиться встроенный редактор, выберите Java 17 в качестве языка и перейдите к классу HelloHttpFunction.java. Переименуйте его в FhirDatastoreProxy.java. Не забудьте также переименовать точку входа в gcfv2.FhirDatastoreProxy.
- Скопируйте код из репозитория и вставьте его во встроенный редактор.
- Перейдите к файлу pom.xml и скопируйте файл pom из репозитория во встроенный редактор.
- Нажмите РАЗВЕРТЫВАТЬ, и ваша функция скоро будет создана и запущена.
Примечание:
- API Cloud Healthcare, используемый в этой функции, использует учетные данные приложения по умолчанию для аутентификации запросов, поступающих в API Healthcare.
- Сохраните URL-адрес развернутой функции, чтобы иметь возможность вызывать ее из приложения Android. На данный момент мы создали все компоненты, необходимые приложению Android для независимой записи данных FHIR в BigQuery с использованием Healthcare API. Теперь давайте убедимся, что все части связаны и API вызывается при отправке анкеты.
6. Проект Android и настройка Firebase
Мы будем использовать последнюю версию Android Studio и настроенный эмулятор Android (вы также можете использовать свое физическое устройство Android). Как только он будет готов, выполните следующие действия:
- Клонируйте репозиторий примеров приложений FHIR: https://github.com/google/fhir-app-examples .
- Откройте 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 сборки.
- Откройте FhirApplication.kt и установите в поле baseUrl URL-адрес вашей облачной функции.
- Выберите «Синхронизировать проект с файлами Gradle» на панели инструментов Android Studio.
Мы завершили часть реализации по настройке и включению зависимостей.
7. Настройка анкеты и ответы
Мы уже настроили настройку анкеты в репозитории. Но давайте пробежимся по коду:
- Убедитесь, что FragmentContainerView присутствует внутри ConstraintLayout в файле app/src/main/res/layout/activity_main.xml.
- Убедитесь, что в объекте QuestionnaireFragment имеется опросник FHIR в формате JSON для визуализации фрагмента.
В этом случае мы будем использовать json — « new-patient-registration-paginated.json » для визуализации фрагмента. Проверьте файлы MainActivity.kt , AddPatientFragment.kt и AddPatientViewModel.kt.
Теперь, когда мы проверили фрагмент, json и модель, запустите приложение и попробуйте ввести ответы в поля анкеты.
Вы заметите проверку строки, даты, числовых полей и других условий.
Вы можете запустить приложение и проверить журнал, чтобы увидеть созданную запись.
Подробнее об использовании фрагментов можно узнать здесь . Вот, пожалуй, и все, что касается фрагмента анкеты и настройки ответа.
8. Отображение результатов набора данных FHIRStore и BigQuery
Теперь, когда у нас все настроено с настройкой и обновлениями, нажмите «Синхронизировать проект с файлами Gradle». После завершения,
- Запустите приложение на эмуляторе Android и наблюдайте за загрузкой анкеты.
- Ответьте на вопросы и нажмите «Отправить» вверху.
- В приложении вы должны увидеть сообщение «Пациент сохранен».
Посмотреть результат магазина FHIR
Перейдите в консоль Google Cloud Healthcare FHIRViewer .
Выберите свой магазин FHIR, введите запрос и нажмите «ЗАПУСК ПОИСКА», и вы увидите результаты поиска прямо ниже.
Просмотр результатов набора данных BigQuery
Перейдите в консоль Google Cloud BigQuery и на панели Explorer перейдите к набору данных, который вы создали для этого проекта.
Нажмите «Предварительный просмотр», и вы увидите то же число и результирующие данные, которые вы нашли в магазине FHIR Healthcare в наборе данных BigQuery.
Теперь вы можете выполнять BigQuery SQL, аналитику и машинное обучение на данных FHIR, которые вы только что сохранили в наборе облачных данных.
9. Поиск и офлайн-возможности
Чтобы обеспечить возможность работы в автономном режиме в приложении Android FHIR SDK на базе OHS, обязательно следуйте рекомендациям по проектированию , которые необходимо включить в реализации, которую мы обсуждаем здесь.
Для поиска ресурсов FHIR у нас есть два способа:
- Средство просмотра FHIR в Google Cloud Console
- Метод поиска FHIR с использованием запросов GET или POST.
10. Демонстрация приложения
Теперь, когда наше приложение разработано, давайте поиграем с ним и посмотрим результат в облаке.
11. Очистка
Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом посте, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами».
- В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить».
- В диалоговом окне введите идентификатор проекта и нажмите «Завершить работу», чтобы удалить проект.
12. Поздравления
Поздравляем! В этом проекте мы успешно создали приложение для Android для хранения и запроса данных FHIR пациентов в облачном хранилище FHIR Store и наборе данных BigQuery с использованием Cloud Healthcare API всего за 7 шагов:
- Установите приложение для Android
- Настройте API Google Cloud Healthcare.
- Создан набор медицинских данных и хранилище данных FHIR.
- Создан набор данных BigQuery.
- Настроен поток BigQuery для записи данных хранилища данных FHIR в набор данных BigQuery.
- Развернута облачная функция для записи данных R4 в хранилище данных FHIR.
- Запускаемую облачную функцию из приложения Android при отправке ответа на анкету
Теперь, когда шаги понятны, попробуйте выполнить те же действия для синхронизации редактирования FHIR пациента с облаком.