Erstellen eines Telegesundheitssystems in AzureBuilding a telehealth system on Azure

In diesem Artikel wird erläutert, wie mithilfe der Azure-Clouddienste ein Telegesundheitssystem erstellt werden kann.This article explains how to build a telehealth system using Azure cloud services. Die Details basieren auf einer realen Kundenimplementierung, die eine professionelle Gesundheitseinrichtung mit ihren Patienten verbindet, die nicht vor Ort sind.The details are based on a real customer implementation that connects a professional healthcare organization to its remote patients. Es gibt andere Möglichkeiten, so eine Lösung zu erstellen, die hier beschriebene hat sich aber als erfolgreich dafür herausgestellt, die Kommunikation zwischen Patienten und ihrem Pflegedienstleister zu ermöglichen, wenn sie sich nicht am selben Ort befinden, sowie die medizinischen Geräte aus der Ferne anzupassen, die die Patienten bei sich haben.While there are other ways to build such a system, the solution described has been successful in enabling communication between patients and their remote care provider, as well as remotely tuning the medical devices that patients carry.

Es gibt etwa 700 Millionen Menschen, die unter Gehörschäden leiden.There are about 700 million people who suffer from hearing disabilities. Davon verwenden jedoch nur 10 Prozent Hörgeräte, um ihre Lebensqualität zu verbessern.However, only 10% of them use hearing aid devices to improve their lives. In manchen Ländern oder Situationen ist es unmöglich für einen Patienten, bei Bedarf direkte Unterstützung zu erhalten.In some geographies or situations, it is impossible for a patient to get direct assistance when needed. Stellen Sie sich z. B. Patienten vor, die …For example, consider patients who:

  • … in einer bestimmten Situation Hilfe beim Hören benötigen, die so jedoch nicht beim Hörakustiker vor Ort nachgestellt werden kann, z. B. während eines Spaziergangs im Park, beim Besuch einer Party oder zuhause.Need help in a specific hearing situation (for example, while walking in the park, attending a party, or being at home), which cannot be reproduced in the hearing care professional's office.
  • … Mobilitätsprobleme haben oder weit von ihrem Hörakustiker entfernt wohnen.Have mobility issues or reside long distances from their hearing care professional.
  • … in einem Schwellenland/einer Region leben, in der die Anzahl der Hörakustiker begrenzt ist.Live in an emerging country/region that has a limited number of hearing care professionals.

Damit Lösungen für diese Probleme angeboten werden können, ist es wichtig, Möglichkeiten zu haben, Pflegedienstleistungen im Zusammenhang mit dem Gehör aus der Entfernung anbieten zu können.To overcome these difficulties, it is important to have the ability to provide hearing care services remotely. In so einem Fall kann die medizinische Fachkraft auf Kommunikation via Chat oder Video zurückgreifen, um mit ihren Patienten an anderen Orten in Kontakt zu treten.In this case, the healthcare professional uses chat or video communication to engage with their remote patients. Die schwerhörige Person gewährt mithilfe ihres Smartphones während einer solchen Kommunikation Zugriff auf das Hörgerät.People who are hard of hearing use a smartphone to allow access to the hearing aid device during the remote session. Die Hörqualität kann so für den Patienten sofort verbessert werden, da der Hörakustiker in Echtzeit Änderungen an der Konfiguration des Hörgeräts vornehmen kann.The patient immediately experiences improved hearing as the hearing care professional deploys changes to the configuration of the hearing aid device in real time.

Mögliche AnwendungsfällePotential use cases

Die folgenden Anwendungsfälle haben ähnliche Entwurfsmuster:The following additional use cases have similar design patterns:

  • Auf jedes bluetoothfähige Gerät kann zugegriffen werden, und es kann mithilfe einer solchen Lösung aus der Ferne angepasst werden.Any Bluetooth-enabled device can be accessed and remotely tuned using such a solution.
  • Kommunikation (Text, Sprache, Video) und Wissensaustausch (Bildung, Zufriedenheitsumfragen), die bzw. der nicht vor Ort stattfindet.Communication (text, voice, video) or knowledge exchange (education, satisfaction surveys) in a remote setting/context.
  • Die Verwaltung global verteilter Webinhalte.Globally distributed web content management.
  • Internet der Dinge (IoT)Internet of Things (IoT)

AufbauArchitecture

Übersicht über die Architektur der Azure-Komponenten, die am Telegesundheitssystem beteiligt sind

Die Lösung steht auf vier Pfeilern, dazu gehören:The solution is built on four pillars, including:

  • ClientsClients
  • KommunikationskomponentenCommunication components
  • APIs und GeschäftslogikAPIs and business logic
  • Speicher- und InfrastrukturdiensteStorage and infrastructure services

Auf der linken Seite der Abbildung befinden sich Clients in zwei Gruppen, die medizinische Fachkraft und der Patient.On the left side of the architectural diagram, there are clients in two groups, the healthcare professional and the patient. Die medizinische Fachkraft verwendet die passende Software und die geeigneten Webportalclients, um mit den Patienten zu kommunizieren.The healthcare professional uses the fitting software and web portal clients to communicate with their patients. Die Patienten wiederum verwenden eine mobile App, die mit dem medizinischen Gerät über eine Bluetoothverbindung verbunden ist.The patients, on the other hand, use a mobile app that is linked to the medical device via a Bluetooth connection. Diese Kommunikation in beide Richtungen wird über Back-End-Dienste realisiert:This back and forth communication is achieved using backend services:

  • Öffentliche APIsPublic facing APIs
  • Interne Microservices, die für Workflows wie Videoanrufe über WebRTC oder für die Kommunikation von Client zu Client über Signal verantwortlich sind.Internal microservices that are responsible for workflows such as video calls through Web RTC or client-to-client communication using Signal. Signal ist eine Softwarebibliothek für Microsoft ASP.NET, mit der Servercode asynchrone Benachrichtigungen an clientseitige Webanwendungen senden kann.signal is a software library for Microsoft ASP.NET that allows server code to send asynchronous notifications to client-side web applications.

Der Status dieser Dienste wird für mehrere Azure-Dienste beibehalten (siehe rechte Seite der Abbildung), z. B. für Azure Database for PostgreSQL.The state of these services is persisted in several Azure services (on the right side of the diagram) such as Azure Database for PostgreSQL. Mediendateien werden in Speicherkonten von Azure gespeichert.Media files are saved in Azure storage accounts. Alle Protokolle von allen Diensten werden in einer zentralen Protokolllösung zusammengeführt, die auf Azure Application Insights zurückgreift.All logs from all services are gathered in a centralized logging solution that uses Azure Application Insights. Schließlich kann mit der Unterstützung von Azure Notification Hub asynchrone Kommunikation zwischen Clients über Pushbenachrichtigungen realisiert werden.Finally, asynchronous communication can be achieved between the clients through push notifications using the help of the Azure Notification Hub.

Die Lösung wurde auf diese Weise eingerichtet, um …The solution was set up in this way to:

  • … von der Skalierbarkeit der Clouddienste zu profitieren, die im Back-End ausgeführt werden.Benefit from the scalability of the cloud services running in the backend.

  • … die Eigenständigkeit der Teams zu erhöhen, die die Lösung erstellen.Increase the autonomy of the teams building the solution. Jedes Team überwacht funktionale Domänen und steuert die Entwicklung der entsprechenden Komponenten.Each team oversees functional domains and drives the evolution of their components. Da sich die funktionalen Domänen nicht überschneiden, kann jedes Team in seiner eigenen Geschwindigkeit entwickeln.Since the functional domains do not overlap, each team can innovate at its own pace. Da die Codebasen der Dienste außerdem unabhängig sind, kann so die CI/CD-Pipeline für die gesamte Lösung vereinfacht werden.Also, since the codebases of the services are independent, the CI/CD pipeline for the entire solution is simplified.

  • … die Kommunikation zwischen den Diensten sowie den Koordinationsmechanismus zu erstellen, die bzw. der aufgrund der Verteilung der Funktionen auf die einzelnen Microservices erforderlich ist.Build the inter-services communication and coordination mechanism required by the distribution of functionalities across microservices. Die in diesem Artikel beschriebene Lösung verwendet Azure-Cache für Redis, um diese Aufgabe erfüllen zu können.The solution described in this document uses Azure Cache for Redis to accomplish this task.

  • … um die zentrale Überwachung zu ermöglichen und die Möglichkeit zu verbessern, Fehler der Lösung zu beheben.Achieve central monitoring and enhance the ability to troubleshoot the solution.

KomponentenComponents

  • Azure Database for PostgreSQL speichert Benutzer- (Patient und medizinische Fachkraft) und gerätebezogene Daten.Azure Database for PostgreSQL stores user (patient and health care professional) and device-related data. Dieser Dienst wurde ausgewählt, da er stabil und unkompliziert ist und keine Anbieterabhängigkeit besteht.The service was chosen because it's stable, lightweight, and has no vendor lock-in.
  • Azure Kubernetes Service hostet die Geschäftslogik der Anwendung und erleichtert die Bereitstellung. Außerdem ist die Anpassung flexibel möglich.Azure Kubernetes Service hosts the application business logic and provides ease of deployment and flexibility for customization. Der Dienst abstrahiert außerdem die Lösung von der tatsächlichen Hardware, die zugrundeliegend verwendet wird.The service also abstracts the solution from the actual hardware used underneath.
  • Azure-Cache für Redis hostet temporäre Daten, die für dienstinterne Daten verwendet werden (freigegebene Daten).Azure Cache for Redis hosts temporary data used for intra service data (shared data). Der Dienst kann aus der Datenbank wiederhergestellt werden, sollten die Daten aus dem Cache ablaufen.The service can be recreated from the database in case the data expires from the cache
  • Azure Notification Hub benachrichtigt Patienten über eingehende Inhalte: Chats, Videoanrufe, Gerätekonfigurationseinstellungen.Azure Notification Hub notifies patient of incoming content: chat, video calls, device configuration settings.
  • Azure Functions plant Aufgaben.Azure Functions schedules tasks. Beispiele: umfangreiche Koordination mit einer Vielzahl an Benutzern, Koordination von Analysen im Back-End (Aggregationen …).For instance, broad communications to large set of users, coordination of analytics work in the backend (aggregations…).
  • Azure Application Insights zentralisiert Signale/Ereignisse aus dem System (Protokolle, Telemetriedaten aus den Protokollen aus den Microservices, dem Front-End und von den Geräten) für die Fehlerbehebung.Azure Application Insights centralizes signals/events from the system (logs, telemetry from logs from microservices, frontend, and devices) for troubleshooting purposes.
  • Azure Content Delivery Network (CDN) wird für die Wartung und für Updates (Zustellung der JavaScript-Dateien) des Webportals verwendet und um Mediendateien (Videos, Bilder) über das Portal zuzustellen.Azure Content Delivery Network (CDN) is used for maintenance and updates (delivery of java scripts file) to the web portal and to deliver media files (videos, images) through the portal. Alle diese Inhalte werden im Hintergrund in Speicherkonten von Azure gespeichert.All this content is stored in the Azure storage accounts in the background.
  • Azure Traffic Manager nimmt einen Lastenausgleich zwischen den geografischen Standorten vor.Azure Traffic Manager load balances between geo locations.
  • Azure SignalR ermöglicht Servercode, asynchrone Benachrichtigungen an clientseitige Webanwendungen zu senden.Azure SignalR allows server code to send asynchronous notifications to client-side web applications. Endbenutzergeräte können entweder im Modus ## Standard## (Standard) oder im Modus ## Advanced## (Erweitert) konfiguriert werden.End-user devices can be configured in either ## Standard## or ## Advanced## mode.

StandardmodusStandard mode

Im Standardmodus bereitet die passende Software eine Benachrichtigung vor, in der JSON-Konfigurationsdateien oder Inhalte für das Gerät enthalten sind.In Standard mode, the fitting software prepares a notification, which contains some configuration JSON file or content for the device. Die Benachrichtigung wird dann an Azure Notification Hub übergeben. Azure Notification Hub pusht die Benachrichtigung dann an das Smartphone des Benutzers.The notification is then passed to Azure Notification Hub, which pushes the notification to the user's phone.

Erweiterter ModusAdvanced mode

Im erweiterten Modus verwendet der Hörakustiker die passende Software, um eine detaillierte Konfiguration an das Gerät zu pushen.In Advanced mode, the hearing aid professional uses the fitting software to push detailed configuration to the device. Dafür ist eine stabile und zuverlässige Verbindung zwischen dem Back-End und dem Gerät erforderlich, die SignalR über WebSockets bieten kann.This requires a stable and reliable connection between the backend and the device, which SignalR achieves by using WebSockets. Das Smartphone des Endbenutzers befindet sich dabei auf der Empfangsseite des Kanals.The end user's phone is on the receiving end of this channel. Über das Smartphone stellt die Bluetoothverbindung dann die endgültige Kommunikationsverbindung zum Gerät her.From the phone, the Bluetooth connection establishes the final communication link with the device.

AlternativenAlternatives

Auf Datenbankseite kann jeder beliebige PaaS-Datenbankdienst verwendet werden.On the database side, any other PaaS database services could be used. Für das Hosten der Anwendungslogik eignet sich Azure Kubernetes Service weniger. Azure Application Service oder Azure Service Fabric sind hier die besseren Alternativen.For hosting the application logic, rather that Azure Kubernetes Service, Azure Application Service or Azure Service Fabric could be used.

ErkenntnisseLearnings

Es wird empfohlen, Traffic Manager vor den verschiedenen Clustern zu verwenden, um die Wartezeit zwischen Regionen zu optimieren, und als Fallbackmechanismus, sollten die Cluster nicht verfügbar sein.We recommend using a traffic manager in front of the different clusters to optimize for latency between regions and as a fallback mechanism should the clusters become unavailable. Für die Datenbanken empfehlen wir, schreibgeschützte Replikate für Abfragen zu verwenden, für die sehr viele Daten geladen und aggregiert werden müssen.For the databases, we recommend using read-only replicas for queries that require loading and aggregating a large amount of data. Es wird empfohlen, statische Webdateien (z. B. .HTML, .JS, Images) global mithilfe eines Content Delivery Network (CDN) zuzustellen, um die Geschwindigkeit durch Caching zu verbessern.We recommend delivering static web files (.html, .js, images, etc.) globally using a content delivery network (CDN) to improve speed through caching.

BereitstellungDeployment

Der wichtigste Aspekt, der bei der Bereitstellung dieses Szenarios beachtet werden sollte, ist die Koordination der Bereitstellungen im cloudbasierten Back-End und dem Front-End (Smartphones/Geräte).The most important aspect to consider when deploying this scenario is the coordination of deployments across the cloud-based backend and the frontend (phones/devices). Ziehen Sie in Erwägung, dafür das Konzept eines Feature Toggle zu verwenden.Consider using the concept of a feature flag to achieve this.

VerwaltungManagement

Damit sich besser an das Prinzip gehalten werden kann, dass jede funktionale Domäne mithilfe eines bestimmten Microservices bedient wird, gibt es langfristig eine Möglichkeit, die Datenbank in mehrere kleinere Datenbanken aufzuteilen.To better align to the idea of having each functional domain dealt with using a specific microservice, long term, there is an opportunity to split the database into several smaller databases. Dadurch kann die Isolierung der Prinzipien und die Eigenständigkeit des Flows im Zusammenhang mit jedem Microservice gewährleistet werden, anstatt die Daten für alle Dienste in einer einzelnen Datenbank zu konzentrieren.Doing so will enable the principle isolation and autonomy of the flow related to each microservice as opposed to concentrating the data related to all services into a single database. Dazu muss die Bereitstellung automatisiert und die Datenbanken verwaltet werden. Dies ist eine der Hauptaufgaben eines PaaS-Datenbankdiensts in der Cloud.Achieving this goal will require automating provisioning and managing those databases, which is one of the core capabilities of a PaaS database service in the cloud. Die Ebene für die Datenbankverwaltung sollte mit der Lösung ebenso wie mit der einheitlichen Überwachungslösung integriert werden.That database management layer should be integrated in the solution as well as into the unified monitoring solution.

ÜberwachungMonitoring

Es ist wichtig, alle Ebenen zu überwachen, und jede Überwachungsfacette sollte in einem einzelnen Bucket in der Cloud zusammengefasst werden.It is important to monitor each of the tiers, and each monitoring facet should be federated into a single bucket in the cloud. Es ist wichtig, die Korrelation aller dieser Protokolle und Telemetriedatenpunkte zu ermöglichen, um einen ganzheitlichen Einblick in die Komponenten und Ebenen gewährleisten zu können.It is important to enable the correlation of all these logs and telemetry data points to ensure holistic insights across components and layers.

Heute gehören zu den überwachten Ebenen die folgenden:Today, monitored layers include the:

  • Windows-Anwendung (passende Software auf dem PC des Hörakustikers)Windows application (fitting software on the hearing care professional's desktop)
  • Gehostete AnwendungslogikHosted application logic
  • ClouddiensteCloud services

Größenanpassung und SkalierungSizing and scaling

Stellen Sie sicher, die Konfiguration der Azure Kubernetes-Cluster zu optimieren, um den Skalierungsanforderungen entsprechen zu können, die mit der Tageszeit oder entsprechend regionaler Muster schwanken.Make sure to optimize the configuration of the Azure Kubernetes clusters to match the scale requirements that fluctuate with the time of the day or regional patterns. Erwägen Sie eine Abladung der Leseworkloads (z. B. das Aggregieren von Abfragen), indem Sie Lesereplikate in Azure Database for PostgreSQL verwenden.Consider offloading read workloads (such as aggregating queries) by using Read Replicas in Azure Database for PostgreSQL.

Wenn Sie die TimescaleDB-Erweiterung von PostgreSQL verwenden, ermöglicht dies eine effizientere Verarbeitung der zeitbezogenen Daten, die von den medizinischen Geräten eingehen.Using the TimescaleDB extension of PostgreSQL will enable more efficient handling of the time-related data coming from the medical devices. Erwägen Sie die Verwendung einer Aufskalierungslösung wie Azure Database for PostgreSQL – Citus, um globale Skalierung zu erreichen, indem mehrere Datenbankknoten bereitgestellt werden.Consider using a scale out solution such as Azure Database for PostgreSQL – Hyperscale (Citus) to reach global scale by provisioning multiple database nodes.

Sicherheit und ComplianceSecurity and compliance

Diese Lösung verarbeitet Patientendaten sowie personenbezogene Informationen.This solution handles PHI and personal data. Deshalb ist es wichtig, Dienste zu verwenden, die für medizinische Anwendungen zertifiziert sind (HIPAA-Zertifizierungen, nicht nur für die in der Datenbank gespeicherten Daten, sondern auch für die Protokolle und Telemetriedaten).As such, it is important to use services that are certified for medical applications (HIPAA certifications, not only for the data that remains in the database but also the logs and telemetry data). Details finden Sie im Abschnitt zu HIPAA im Microsoft Trust Center.For details please consult the HIPAA section of the Microsoft Trust Center.

PreisePricing

Preisbeispielinformationen für eine Bereitstellung in einer einzelnen Region finden Sie im Preisrechner.For a deployment in a single region, example pricing information is available in the Pricing Calculator

Nächste SchritteNext steps

Wenn Sie mit der Implementierung einer ähnlichen Architektur für Ihr Unternehmen loslegen möchten, sollten Sie sich Wissen und Fähigkeiten im Bereich von Webdiensten, Datenbanken (z. B. Azure Database for PostgreSQL) sowie bei Entwicklungstechniken und Technologien für mobile Anwendungen wie Xamarin und .NET Core aneignen.To get started with implementing a comparable architecture for your business, consider building skills around web services, databases such as Azure Database for PostgreSQL, and mobile application development techniques and technologies such as Xamarin and .Net Core.

EchtzeitkommunikationReal-time communications

Weitere Informationen dazu, wie WebRTC Möglichkeiten zur Echtzeitkommunikation für mobile Anwendungen bieten kann, finden Sie auf der WebRTC-Projektseite.More information about how WebRTC provides real-time communication capabilities to mobile applications is available on the WebRTC project site.

TURN-ServerTurn servers

Verwenden Sie eine Clientbibliothek wie Icelink (wird von der Anwendung auf dem Smartphone und der passenden Software auf dem PC des Hörakustikers geladen), um die TURN-Server* und die Verbindungstypen (tcp, udp, p2p) zwischen den beiden Clients (passende Software und Anwendung auf dem Smartphone) zu verwalten.Use a client library such as Icelink (loaded by the application on the phone and by the fitting software of the desktop of the hearing aid professional) to manage the turn servers* and the types of connection (tcp, udp, p2p) between the two clients (fitting software and application on the phone). Die Clientbibliothek:The client library:

  • Erstellt den StreamingkanalCreates the streaming channel
  • Stellt die Verbindungen herEstablishes the connections
  • Verwaltet die Verbindung im Fall von Fehlern, fehlenden Paketen und passt das Streaming automatisch an Änderungen der Bandbreite anManages the connection in case of errors, missing packets, automatically adjusts the streaming to the variations of the bandwidth
  • Codiert/decodiert die Anrufe (Audio und/oder Video) während der AnrufeEncode/decodes the calls (audio and/or video) during the calls

*TURN-Server sind Netzwerkentitäten, die für das Relaying von Medien in VoIP-bezogenen Protokollen zuständig sind.*Turn servers are network entities in charge of relaying media in VoIP related protocols. In dieser Lösung werden sie von https://xirsys.com/ in mehreren Rechenzentren weltweit gehostet.In this solution they are hosted by https://xirsys.com/ in several datacenters worldwide. Stellt die direkte Verbindung zwischen zwei Clients in derselben Sitzung her.Establishes direct connection between two clients under the same session.