Bearbeiten

Erstellen eines Telegesundheitssystems in Azure

Azure Database for PostgreSQL
Azure-Funktionen
Azure Kubernetes Service (AKS)
Azure Storage
Azure Traffic Manager

In diesem Artikel wird erläutert, wie mithilfe der Azure-Cloud-Plattform ein Telegesundheitssystem erstellt werden kann.

Aufbau

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

Laden Sie eine Visio-Datei dieser Architektur herunter.

Workflow

Die Lösung steht auf vier Pfeilern, dazu gehören:

  • Clients
  • Kommunikationskomponenten
  • APIs und Geschäftslogik
  • Speicher- und Infrastrukturdienste

Auf der linken Seite der Abbildung befinden sich Clients in zwei Gruppen, die medizinische Fachkraft und der Patient. Die medizinische Fachkraft verwendet die passende Software und die geeigneten Webportalclients, um mit den Patienten zu kommunizieren. Die Patienten wiederum verwenden eine mobile App, die mit dem medizinischen Gerät über eine Bluetoothverbindung verbunden ist. Diese Kommunikation in beide Richtungen wird über Back-End-Dienste realisiert:

  • Öffentliche APIs
  • Interne Microservices, die für Workflows wie Videoanrufe über WebRTC oder für die Kommunikation von Client zu Client über Signal verantwortlich sind. Signal ist eine Softwarebibliothek für Microsoft ASP.NET, mit der Servercode asynchrone Benachrichtigungen an clientseitige Webanwendungen senden kann.

Der Zustand dieser Dienste wird für mehrere Azure-Dienste gespeichert (siehe rechte Seite der Abbildung), z. B. für Azure Database for PostgreSQL. Mediendateien werden in Azure-Speicherkonten gespeichert. Protokolle sämtlicher Dienste werden in einer zentralen Protokollierungslösung zusammengeführt, die Azure Application Insights nutzt. Und schließlich kann mit der Unterstützung von Azure Notification Hub asynchrone Kommunikation zwischen Clients über Pushbenachrichtigungen realisiert werden.

Die Lösung wurde auf diese Weise eingerichtet, um …

  • … von der Skalierbarkeit der Clouddienste zu profitieren, die im Back-End ausgeführt werden.

  • … die Eigenständigkeit der Teams zu erhöhen, die die Lösung erstellen. Jedes Team überwacht funktionale Domänen und steuert die Entwicklung der entsprechenden Komponenten. Da sich die funktionalen Domänen nicht überschneiden, kann jedes Team in seiner eigenen Geschwindigkeit entwickeln. Da die Codebasen der Dienste außerdem unabhängig sind, kann so die CI/CD-Pipeline für die gesamte Lösung vereinfacht werden.

  • … die Kommunikation zwischen den Diensten sowie den Koordinationsmechanismus zu erstellen, die bzw. der aufgrund der Verteilung der Funktionen auf die einzelnen Microservices erforderlich ist. Die in diesem Artikel beschriebene Lösung verwendet Azure-Cache für Redis, um diese Aufgabe erfüllen zu können.

  • … um die zentrale Überwachung zu ermöglichen und die Möglichkeit zu verbessern, Fehler der Lösung zu beheben.

  • Vereinfachte Verwaltung von Geheimnissen, Anmeldeinformationen, Zertifikaten und Schlüsseln, die verwaltete Identitäten nutzen, um die Kommunikation zwischen Diensten zu schützen.

Komponenten

  • Azure Database for PostgreSQL speichert Benutzer- (Patient und medizinische Fachkraft) und gerätebezogene Daten. Dieser Dienst wurde ausgewählt, da er stabil und unkompliziert ist und keine Anbieterabhängigkeit besteht.
  • Azure Kubernetes Service hostet die Geschäftslogik der Anwendung und erleichtert die Bereitstellung. Außerdem ist die Anpassung flexibel möglich. Der Dienst abstrahiert außerdem die Lösung von der tatsächlichen Hardware, die zugrundeliegend verwendet wird.
  • Azure-Cache für Redis hostet temporäre Daten, die für dienstinterne Daten verwendet werden (freigegebene Daten). Der Dienst kann aus der Datenbank wiederhergestellt werden, sollten die Daten aus dem Cache ablaufen.
  • Azure Notification Hub benachrichtigt Patienten über eingehende Inhalte: Chats, Videoanrufe, Gerätekonfigurationseinstellungen.
  • Azure Functions plant Aufgaben. Beispiele: umfangreiche Koordination mit einer Vielzahl an Benutzern, Koordination von Analysen im Back-End (Aggregationen …).
  • 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 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. Alle diese Inhalte werden im Hintergrund in Speicherkonten von Azure gespeichert.
  • Azure Traffic Manager nimmt einen Lastenausgleich zwischen den geografischen Standorten vor.
  • Azure SignalR ermöglicht Servercode, asynchrone Benachrichtigungen an clientseitige Webanwendungen zu senden. Endbenutzergeräte können entweder im Modus Standard oder im Modus Advanced (Erweitert) konfiguriert werden.

Alternativen

Auf Datenbankseite kann jeder beliebige PaaS-Datenbankdienst verwendet werden. Wenn Sie die Anwendungslogik hosten, können Sie statt Azure Kubernetes Service auch Azure App Service verwenden.

Szenariodetails

Die Details basieren auf einer realen Kundenimplementierung, die eine professionelle Gesundheitseinrichtung mit ihren Patienten verbindet, die nicht vor Ort sind. 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.

Es gibt etwa 700 Millionen Menschen, die unter Gehörschäden leiden. Davon verwenden jedoch nur 10 Prozent Hörgeräte, um ihre Lebensqualität zu verbessern. In manchen geografischen Regionen oder Situationen ist es für einen Patienten nicht möglich, direkte Unterstützung zu erhalten. Stellen Sie sich z. B. Patienten vor, die …

  • … in einer bestimmten Situation Hilfe beim Hören benötigen, die so jedoch nicht beim Hörakustiker vor Ort nachgestellt werden kann – etwa während eines Spaziergangs im Park, beim Besuch einer Party oder zu Hause.
  • … Mobilitätsprobleme haben oder weit von ihrem Hörakustiker entfernt wohnen.
  • … in einem Schwellenland/einer Region leben, in der die Anzahl der Hörakustiker begrenzt ist.

Damit Lösungen für diese Probleme angeboten werden können, ist es wichtig, Möglichkeiten zu haben, hörbezogene Dienstleistungen aus der Entfernung anbieten zu können. 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. Die schwerhörige Person gewährt mithilfe ihres Smartphones während einer solchen Kommunikation Zugriff auf das Hörgerät. 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.

Mögliche Anwendungsfälle

Diese Lösung eignet sich ideal für die Gesundheitsbranche. Die folgenden Anwendungsfälle haben ähnliche Entwurfsmuster:

  • Auf jedes bluetoothfähige Gerät kann zugegriffen werden, und es kann mithilfe einer solchen Lösung aus der Ferne angepasst werden.
  • Kommunikation (Text, Sprache, Video) und Wissensaustausch (Bildung, Zufriedenheitsumfragen), die bzw. der nicht vor Ort stattfindet.
  • Die Verwaltung global verteilter Webinhalte.
  • Internet der Dinge (IoT)

Modi

Standardmodus

Im Standardmodus bereitet die passende Software eine Benachrichtigung vor, in der JSON-Konfigurationsdateien oder Inhalte für das Gerät enthalten sind. Die Benachrichtigung wird dann an Azure Notification Hub übergeben. Azure Notification Hub pusht die Benachrichtigung dann an das Smartphone des Benutzers.

Erweiterter Modus

Im erweiterten Modus verwendet der Hörakustiker die passende Software, um eine detaillierte Konfiguration an das Gerät zu pushen. Dafür ist eine stabile und zuverlässige Verbindung zwischen dem Back-End und dem Gerät erforderlich, die SignalR über WebSockets bieten kann. Das Smartphone des Endbenutzers befindet sich dabei auf der Empfangsseite des Kanals. Über das Smartphone stellt die Bluetoothverbindung dann die endgültige Kommunikationsverbindung zum Gerät her.

Überlegungen

Diese Überlegungen beruhen auf den Säulen des Azure Well-Architected Frameworks, d. h. einer Reihe von Grundsätzen, mit denen die Qualität von Workloads verbessert werden kann. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

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. 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. 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.

Bereitstellung

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). Ziehen Sie in Erwägung, dafür das Konzept eines Feature Toggle zu verwenden.

Verwaltung

Um eine bessere Ausrichtung auf das Prinzip zu ermöglichen, dass jede funktionale Domäne mithilfe eines bestimmten Microservices bedient wird, gibt es langfristig die Möglichkeit, die Datenbank in mehrere kleinere Datenbanken aufzuteilen. 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. Dazu muss die Bereitstellung automatisiert und die Datenbanken verwaltet werden. Dies ist eine der Hauptaufgaben eines PaaS-Datenbankdiensts in der Cloud. Die Ebene für die Datenbankverwaltung sollte mit der Lösung ebenso wie mit der einheitlichen Überwachungslösung integriert werden.

Überwachung

Es ist wichtig, alle Ebenen zu überwachen, und jede Überwachungsfacette sollte in einem einzelnen Bucket in der Cloud zusammengefasst werden. 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.

Heute gehören zu den überwachten Ebenen die folgenden:

  • Windows-Anwendung (passende Software auf dem PC des Hörakustikers)
  • Gehostete Anwendungslogik
  • Clouddienste

Größenanpassung und Skalierung

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. Erwägen Sie eine Abladung der Leseworkloads (z. B. das Aggregieren von Abfragen), indem Sie Lesereplikate in Azure Database for PostgreSQL verwenden.

Wenn Sie die TimescaleDB-Erweiterung von PostgreSQL verwenden, ermöglicht dies eine effizientere Verarbeitung der zeitbezogenen Daten, die von den medizinischen Geräten eingehen. Erwägen Sie die Verwendung einer Aufskalierungslösung wie Azure Database for PostgreSQL – Hyperscale (Citus), um globale Skalierung durch die Bereitstellung mehrerer Datenbankknoten zu erreichen.

Sicherheit und Compliance

Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

Diese Lösung verarbeitet Patientendaten sowie personenbezogene Informationen. 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). Details finden Sie im Abschnitt zu HIPAA im Microsoft Trust Center.

Die verwaltete Identität sollte für alle Azure-Dienste verwendet werden, die diese Art der kennwortlosen Authentifizierung unterstützen, um die Kennwortverwaltung zu vereinfachen: AKS, PostgreSQL, Redis Cache, Notification Hub, Azure Key Vault und Azure Functions. Informieren Sie sich über alle Dienste, die verwaltete Identitäten für Azure-Ressourcen unterstützen.

Kostenoptimierung

Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Säule „Kostenoptimierung“.

Preisbeispielinformationen für eine Bereitstellung in einer einzelnen Region finden Sie im Preisrechner.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautoren:

Nächste Schritte

Um mit der Implementierung einer vergleichbaren Architektur für Ihr Unternehmen zu beginnen, sollten Sie die Entwicklung von Fähigkeiten im Zusammenhang mit Webdiensten, Datenbanken wie Azure Database for PostgreSQL sowie Techniken und Technologien für die Entwicklung mobiler Apps wie .NET MAUI in Betracht ziehen.

Produktdokumentation:

Echtzeitkommunikation:

Weitere Informationen dazu, wie WebRTC Möglichkeiten zur Echtzeitkommunikation für mobile Anwendungen bieten kann, finden Sie auf der WebRTC-Projektseite.

TURN-Server:

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. Die Clientbibliothek:

  • Erstellt den Streamingkanal
  • Stellt die Verbindungen her
  • Verwaltet die Verbindung im Fall von Fehlern, fehlenden Paketen und passt das Streaming automatisch an Änderungen der Bandbreite an
  • Codiert/decodiert die Anrufe (Audio und/oder Video) während der Anrufe

*TURN-Server sind Netzwerkentitäten, die für das Relaying von Medien in VoIP-bezogenen Protokollen zuständig sind. In dieser Lösung werden sie von https://xirsys.com/ in mehreren Rechenzentren weltweit gehostet. Stellt die direkte Verbindung zwischen zwei Clients in derselben Sitzung her.