Русский
Русский
English
Статистика
Реклама

Перевод Создание трекера пульсоксиметрии с использованием AWS Amplify и AWS serverless

В этом руководстве демонстрируется пример решения для сбора, отслеживания и обмена данными пульсовой оксиметрии для нескольких пользователей.Он построен с использованием бессерверныхтехнологийAWS, что обеспечивает надежную масштабируемость и безопасность. Внешнееприложение написано наVueJSи используетAmplify Framework.Измерения сатурации кислородавыполняютсявручную или спомощью пульсоксиметра BerryMed,подключенного к браузеру черезИнтернет через Bluetooth.

Снимок экрана внешнего приложения, запущенного в браузере настольного компьютера.Снимок экрана внешнего приложения, запущенного в браузере настольного компьютера.

Бессерверный бэкэнд, который обрабатывает пользовательские данные и управление общим доступом, развертывается с использованием моделибессерверных приложенийAWS (AWS SAM).Бэкэнд-приложение состоит изREST APIAmazon API Gateway, который вызывает функции AWS Lambda.Код написан на Python для обработки бизнес-логики взаимодействия сбазой данныхAmazon DynamoDB.Аутентификацией управляетAmazon Cognito.

Предпосылки

Для реализации проекта потребуется:

Развернем приложение

Диаграмма высокого уровня полного приложения кислородного монитора.Диаграмма высокого уровня полного приложения кислородного монитора.

Решение состоит из двух частей: внешнего интерфейса и бессерверного внутреннего интерфейса.Amplify CLIразвертывает все аутентификации Amazon Cognito и ресурсы хостинга для веб -интерфейсе.Серверной части требуетсяидентификаторпула пользователейAmazon Cognitoдля настройкиавторизаторав API.Это включает рабочий процесс авторизации, как показано на следующем изображении.

Схема, показывающая, как работает рабочий процесс авторизации Amazon CognitoСхема, показывающая, как работает рабочий процесс авторизации Amazon Cognito

Сначала настройте интерфейс.Выполните следующие шаги с помощью терминала, запущенного на компьютере, или с помощьюAWS Cloud9IDE.Если вы используете AWS Cloud9, создайте экземпляр, используя параметры по умолчанию.

Из терминала:

Установите Amplify CLI, выполнив эту команду.

  1. npm install -g @aws-amplify/cli
    
  2. Настройте Amplify CLI с помощью этой команды.Следуйте инструкциям до завершения.

    amplify configure
    
  3. Клонируйтепроект с GitHub.

    git clone https://github.com/aws-samples/aws-serverless-oxygen-monitor-web-bluetooth.git
    
  4. Перейдите в каталог ampify-frontend и инициализируйте проект с помощью команды Amplify CLI.Следуйте инструкциям до завершения.

    cd aws-serverless-oxygen-monitor-web-bluetooth/amplify-frontendamplify init
    
  5. Разверните все внешние ресурсы в облаке AWS с помощью команды Amplify CLI.

    amplify push
    
  6. После завершения развертывания ресурсов обратите внимание насвойствоaws_userpools_idвфайлеsrc / aws-exports.js.Это требуется при развертывании бессерверного бэкэнда.

    aws_user_pools_id в файле src / aws-exports.jsaws_user_pools_id в файле src / aws-exports.js

Затем разверните бессерверный бэкэнд.Хотя его можно развернуть с помощьюAWS SAM CLI, вы также можете развернуть его изКонсоли управления AWS:

  1. Перейдите ксерверномуприложениюOxygen-Monitor в репозитории бессерверных приложений AWS.

  2. Внастройках приложенияназовите приложение иукажите aws_userpools_id из внешнего приложения дляпараметраUserPoolID.

  3. ВыберитеDeploy (Развернуть).

  4. По завершении скопируйтеAPI endpoint (конечную точку API),чтобы ее можно было настроить во внешнем приложении на следующем шаге.

    Endpiont APIEndpiont API

Настроить и запустить интерфейсное приложение

  1. Создайте файлampify-frontend / src / api-config.jsв приложениивнешнегоинтерфейса со следующим содержимым.Включитеконечную точку APIиз предыдущего шага.

    const apiConfig = {  endpoint: <API ENDPOINT>};export default apiConfig;
    
  2. В терминале перейдите в корневой каталог внешнего приложения и запустите его локально для тестирования.

    cd aws-serverless-oxygen-monitor-web-bluetooth/amplify-frontendnpm installnpm run serve
    

    Вы должны увидеть такой вывод:

    Вы должны увидеть такой выводВы должны увидеть такой вывод
  3. Чтобы опубликовать интерфейсное приложение на облачном хостинге, выполните следующую команду:

    amplify publish
    

    После завершения предоставляется URL-адрес размещенного приложения.

Использование внешнего интерфейса

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

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

Чтобы подключить пульсоксиметр BerryMed и начать считывание измерений, включите устройство. НажмитекнопкуПодключить пульсоксиметр, а затем выберите его из списка.Для использования функции Bluetooth в Интернете требуется браузер Chrome на настольном компьютере или мобильном устройстве Android.

Если у вас нет совместимого пульсоксиметра Bluetooth или доступа к Интернету Bluetooth, отметкафлажка"Enter Manually" (Ввести вручную)представляет поля прямого ввода.

Когда станут доступны значения насыщения кислородом и частоты пульса, выберите значок загрузки облака.При этом значения публикуются в бессерверном сервере, где они хранятся в таблице DynamoDB.Затем диаграмма тенденций обновится, чтобы отразить новые данные.

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

Чтобы просмотреть данные, которыми с вами поделились, выберите имя пользователя в раскрывающемся списке и нажмите значок обновления.

Понимание бессерверного бэкэнда

В проектеGitHubпапкаserverless-backend /содержитфайл шаблонаAWS SAMифункции Lambda.Он создает конечную точку шлюза API, шесть лямбда-функций и две таблицы DynamoDB.Шаблон также определяет авторизатор Amazon Cognito для API, используя UserPoolID, переданный в качестве параметра:

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

Первые три конечные точки обрабатывают обновление и получение уровней кислорода и частоты пульса.Когда пользователь публикует новое измерение,вызывается функция AddLevels, которая создает новый элемент "Уровни" втаблицеDynamoDB.

ФункцияFetchLevelsизвлекает личную историю пользователя. ФункцияFetchSharedUserLevels проверяет Access Table,чтобы узнать, есть ли у запрашивающего пользователя права общего доступа.

Остальные конечные точки обрабатывают управление доступом.Когда вы добавляете общего пользователя, это вызываетфункциюManageAccessс именем пользователя и действием, таким как совместное использование или отзыв.При совместном использовании элемент добавляется вAccess Table,которая разрешает связь.В случае отзыва элемент удаляется из таблицы.

ФункцияGetSharedUsersизвлекает список общих с пользователем, делающим запрос.Это заполняет раскрывающийся список доступных пользователей.FetchUsersWithAccessвыбирает всех пользователей, у которых есть доступ к пользователю, выполняющему запрос, это заполняет список пользователей в параметрах общего доступа.

Таблицы DynamoDB создаются шаблоном AWS SAM с ключом раздела и ключом диапазона, определенным для каждой таблицы.Они используются лямбда-функциями для запроса и сортировки элементов.См. Документацию,чтобы узнать больше о схеме ключей таблицы DynamoDB.

LevelsTable:    Type: AWS::DynamoDB::Table    Properties:       AttributeDefinitions:         -           AttributeName: "username"          AttributeType: "S"        -           AttributeName: "timestamp"          AttributeType: "N"      KeySchema:         - AttributeName: username          KeyType: HASH        - AttributeName: timestamp          KeyType: RANGE      ProvisionedThroughput:         ReadCapacityUnits: "5"        WriteCapacityUnits: "5"  SharedAccessTable:    Type: AWS::DynamoDB::Table    Properties:       AttributeDefinitions:         -           AttributeName: "username"          AttributeType: "S"        -           AttributeName: "shared_user"          AttributeType: "S"      KeySchema:         - AttributeName: username          KeyType: HASH        - AttributeName: shared_user          KeyType: RANGE      ProvisionedThroughput:         ReadCapacityUnits: "5"        WriteCapacityUnits: "5"

Понимание интерфейса

В проектеGitHubпапкаampify-frontend / src /содержит весь код для внешнего приложения. Вmain.jsмодули Amplify VueJS настроены на использование ресурсов, определенных вaws-exports.js.Он также настраивает конечную точку бессерверной серверной части, определенную вapi-config.js.

В файлеcomponents/OxygenMonitor.vueимпортируется модуль API и определяется желаемый API.

Вызовы API определяются как методы Vue, которые могут вызываться различными другими компонентами и элементами приложения.

Вкомпонентах /ConnectDevice.vue, метод подключенияинициализирует соединение Bluetooth Web -к пульсоксиметру.Он ищетUUID службы Bluetoothи имя устройства, характерное для пульсоксиметров BerryMed.При успешном соединении он создает прослушиватель событий нахарактеристике Bluetooth,который уведомляет об изменениях в измерениях.

МетодhandleDataанализирует события уведомления.Он отмечает любые изменения сатурации кислорода или частоты пульса.

КомпонентOxygenMonitorопределяет компонентConnectDeviceв своем шаблоне.Он связывает обработчики с отправленными событиями.

Обработчики присваивают значения объекту данных Vue для использования во всем приложении.

Изучите детально код проекта, чтобы увидеть, как Amplify Framework и бессерверный бэкэнд используются для практического применения.

Заключение

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

Источник: habr.com
К списку статей
Опубликовано: 08.02.2021 22:18:49
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Vuejs

Облачные сервисы

Здоровье

Vue.js

Aws amazon

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru