Een telehealthsysteem bouwen in Azure

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

In dit artikel wordt uitgelegd hoe u een telehealthsysteem bouwt met behulp van het Azure-cloudplatform.

Architectuur

Architectuuroverzicht van de Azure-onderdelen die zijn opgenomen in het telehealth-systeem.

Een Visio-bestand van deze architectuur downloaden.

Workflow

De oplossing is gebouwd op vier pijlers, waaronder:

  • Clients
  • Communicatieonderdelen
  • API's en bedrijfslogica
  • Opslag- en infrastructuurservices

Aan de linkerkant van het architectuurdiagram bevinden zich klanten in twee groepen, de gezondheidszorgprofessional en de patiënt. De zorgprofessional gebruikt de passende software- en webportalclients om met hun patiënten te communiceren. De patiënten gebruiken daarentegen een mobiele app die via een Bluetooth-verbinding is gekoppeld aan het medische apparaat. Deze heen en weer communicatie wordt bereikt met behulp van back-endservices:

  • Openbare API's
  • Interne microservices die verantwoordelijk zijn voor werkstromen zoals videogesprekken via Web RTC of client-naar-clientcommunicatie met signal. signal is een softwarebibliotheek voor Microsoft ASP.NET waarmee servercode asynchrone meldingen kan verzenden naar webtoepassingen aan de clientzijde.

De status van deze services blijft behouden in verschillende Azure-services (aan de rechterkant van het diagram), zoals Azure Database for PostgreSQL. Mediabestanden worden opgeslagen in Azure-opslagaccounts. Alle logboeken van alle services worden verzameld in een gecentraliseerde logboekregistratieoplossing die gebruikmaakt van Azure-toepassing Insights. Ten slotte kan asynchrone communicatie tussen de clients worden bereikt via pushmeldingen met behulp van de Azure Notification Hub.

De oplossing is op deze manier ingesteld voor:

  • Profiteer van de schaalbaarheid van de cloudservices die in de back-end worden uitgevoerd.

  • Vergroot de autonomie van de teams die de oplossing bouwen. Elk team houdt toezicht op functionele domeinen en stimuleert de evolutie van hun onderdelen. Omdat de functionele domeinen elkaar niet overlappen, kan elk team in zijn eigen tempo innoveren. Omdat de codebases van de services onafhankelijk zijn, wordt de CI/CD-pijplijn voor de hele oplossing vereenvoudigd.

  • Bouw het communicatie- en coördinatiemechanisme tussen services dat vereist is voor de distributie van functies in microservices. De oplossing die in dit document wordt beschreven, maakt gebruik van Azure Cache voor Redis om deze taak uit te voeren.

  • Bereik centrale bewaking en verbeter de mogelijkheid om problemen met de oplossing op te lossen.

  • Vereenvoudigd beheer van geheimen, referenties, certificaten en sleutels die gebruikmaken van beheerde identiteiten om de communicatie tussen services te beveiligen.

Onderdelen

  • Azure Database for PostgreSQL slaat gebruikers (patiënt- en gezondheidszorgprofessional) en apparaatgerelateerde gegevens op. De service is gekozen omdat deze stabiel, lichtgewicht is en geen vergrendeling van de leverancier heeft.
  • Azure Kubernetes Service host de bedrijfslogica van de toepassing en biedt een eenvoudige implementatie en flexibiliteit voor aanpassing. De service abstraheert ook de oplossing van de werkelijke hardware die eronder wordt gebruikt.
  • Azure Cache voor Redis fungeert als host voor tijdelijke gegevens die worden gebruikt voor intraservicegegevens (gedeelde gegevens). De service kan opnieuw worden gemaakt vanuit de database als de gegevens uit de cache verlopen
  • Azure Notification Hub meldt patiënten met binnenkomende inhoud: chatten, videogesprekken, apparaatconfiguratie-instellingen.
  • Azure Functions plant taken. Bijvoorbeeld brede communicatie naar grote groepen gebruikers, coördinatie van analysewerkzaamheden in de back-end (aggregaties...).
  • Azure-toepassing Insights centraliseert signalen/gebeurtenissen van het systeem (logboeken, telemetrie uit logboeken van microservices, front-end en apparaten) voor probleemoplossingsdoeleinden.
  • Azure Content Delivery Network (CDN) wordt gebruikt voor onderhoud en updates (levering van java-scriptsbestand) aan de webportal en voor het leveren van mediabestanden (video's, afbeeldingen) via de portal. Al deze inhoud wordt opgeslagen in de Azure-opslagaccounts op de achtergrond.
  • Azure Traffic Manager-taakverdelingen tussen geografische locaties.
  • Met Azure SignalR kan servercode asynchrone meldingen verzenden naar webtoepassingen aan de clientzijde. Apparaten van eindgebruikers kunnen worden geconfigureerd in de modus Standard of Advanced .

Alternatieven

Aan de databasezijde kunnen alle andere PaaS-databaseservices worden gebruikt. Wanneer u de toepassingslogica host, in plaats van Azure Kubernetes Service te gebruiken, kunt u overwegen Azure-app Service te gebruiken.

Scenariodetails

De details zijn gebaseerd op een echte klant-implementatie die een professionele gezondheidszorgorganisatie verbindt met de externe patiënten. Hoewel er andere manieren zijn om een dergelijk systeem te bouwen, is de beschreven oplossing succesvol geweest bij het inschakelen van communicatie tussen patiënten en hun externe zorgaanbieder, en het op afstand afstemmen van de medische hulpmiddelen die patiënten dragen.

Er zijn ongeveer 700 miljoen mensen die lijden aan gehoorproblemen. Slechts 10% van hen gebruikt echter gehoorapparaten om hun leven te verbeteren. In sommige geografische gebieden of situaties is het onmogelijk voor een patiënt om direct hulp te krijgen wanneer dat nodig is. Denk bijvoorbeeld aan patiënten die:

  • Hulp nodig bij een specifieke gehoorsituatie (bijvoorbeeld tijdens het wandelen in het park, het bijwonen van een feest of thuis zijn), die niet kan worden gereproduceerd in het kantoor van de hoorzorgprofessional.
  • Mobiliteitsproblemen hebben of lange afstanden hebben van hun hoorzorgprofessional.
  • Woon in een opkomend land/regio met een beperkt aantal hoorzorgprofessionals.

Om deze problemen te verhelpen, is het belangrijk dat u op afstand gehoordiensten kunt bieden. In dit geval gebruikt de gezondheidszorgprofessional chat- of videocommunicatie om contact op te nemen met hun externe patiënten. Mensen die slechthorend zijn, gebruiken een smartphone om tijdens de externe sessie toegang tot het hoorapparaat toe te staan. De patiënt ervaart onmiddellijk verbeterde gehoor wanneer de hoorzorgprofessional wijzigingen in de configuratie van het hoorapparaat in realtime implementeert.

Potentiële gebruikscases

Deze oplossing is ideaal voor de gezondheidszorg. De volgende aanvullende use cases hebben vergelijkbare ontwerppatronen:

  • Elk Bluetooth-apparaat kan worden geopend en op afstand worden afgestemd met behulp van een dergelijke oplossing.
  • Communicatie (tekst, spraak, video) of kennisuitwisseling (onderwijs, tevredenheidsonderzoeken) in een externe instelling/context.
  • Wereldwijd gedistribueerd webinhoudsbeheer.
  • Internet of Things (IoT)

Modi

Standaardmodus

In de standaardmodus bereidt de passende software een melding voor, die een configuratie-JSON-bestand of -inhoud voor het apparaat bevat. De melding wordt vervolgens doorgegeven aan Azure Notification Hub, waarmee de melding naar de telefoon van de gebruiker wordt gepusht.

Geavanceerde modus

In de geavanceerde modus gebruikt de hoortoestelprofessional de passende software om gedetailleerde configuratie naar het apparaat te pushen. Hiervoor is een stabiele en betrouwbare verbinding tussen de back-end en het apparaat vereist, die SignalR bereikt met behulp van WebSockets. De telefoon van de eindgebruiker bevindt zich aan het ontvangende einde van dit kanaal. Vanaf de telefoon brengt de Bluetooth-verbinding de laatste communicatiekoppeling met het apparaat tot stand.

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Framework voor meer informatie.

U wordt aangeraden een Traffic Manager voor de verschillende clusters te gebruiken om te optimaliseren voor latentie tussen regio's en als terugvalmechanisme als de clusters niet meer beschikbaar zijn. Voor de databases raden we u aan alleen-lezen replica's te gebruiken voor query's waarvoor een grote hoeveelheid gegevens moet worden geladen en samengevoegd. We raden u aan statische webbestanden (.html, .js, afbeeldingen, enzovoort) wereldwijd te leveren met behulp van een CDN (Content Delivery Network) om de snelheid door caching te verbeteren.

Implementatie

Het belangrijkste aspect dat u moet overwegen bij het implementeren van dit scenario is de coördinatie van implementaties in de back-end in de cloud en de front-end (telefoons/apparaten). Overweeg het concept van een functievlag te gebruiken om dit te bereiken.

Beheer

Om beter af te stemmen op het idee dat elk functioneel domein wordt behandeld met behulp van een specifieke microservice, op de lange termijn, is er een mogelijkheid om de database te splitsen in verschillende kleinere databases. Hierdoor kunnen de principeisolatie en autonomie van de stroom die betrekking heeft op elke microservice, in plaats van de gegevens met betrekking tot alle services in één database te concentreren. Het bereiken van dit doel vereist het automatiseren van het inrichten en beheren van deze databases. Dit is een van de belangrijkste mogelijkheden van een PaaS-databaseservice in de cloud. Deze databasebeheerlaag moet worden geïntegreerd in de oplossing en in de geïntegreerde bewakingsoplossing.

Controleren

Het is belangrijk om elk van de lagen te bewaken en elke bewakings facet moet worden gefedereerd in één bucket in de cloud. Het is belangrijk om de correlatie van al deze logboeken en telemetriegegevenspunten mogelijk te maken om holistische inzichten in onderdelen en lagen te garanderen.

Tegenwoordig omvatten bewaakte lagen het volgende:

  • Windows-toepassing (software passend maken op het bureaublad van de hoorzorgprofessional)
  • Gehoste toepassingslogica
  • Cloudservices

Grootte en schaal aanpassen

Zorg ervoor dat u de configuratie van de Azure Kubernetes-clusters optimaliseert zodat deze overeenkomt met de schaalvereisten die fluctueren met het tijdstip van de dag of regionale patronen. Overweeg leesworkloads (zoals het samenvoegen van query's) te offloaden met behulp van Leesreplica's in Azure Database for PostgreSQL.

Met behulp van de TimescaleDB-extensie van PostgreSQL kunt u efficiënter omgaan met de tijdgerelateerde gegevens die afkomstig zijn van de medische apparaten. Overweeg om een uitschaaloplossing zoals Azure Database for PostgreSQL – Hyperscale (Citus) te gebruiken om wereldwijde schaal te bereiken door meerdere databaseknooppunten in te richten.

Beveiliging en naleving

Beveiliging biedt garanties tegen opzettelijke aanvallen en misbruik van uw waardevolle gegevens en systemen. Zie Overzicht van de beveiligingspijler voor meer informatie.

Deze oplossing verwerkt PHI en persoonsgegevens. Daarom is het belangrijk om services te gebruiken die zijn gecertificeerd voor medische toepassingen (HIPAA-certificeringen, niet alleen voor de gegevens die in de database blijven, maar ook de logboeken en telemetriegegevens). Raadpleeg de HIPAA-sectie van het Vertrouwenscentrum van Microsoft voor meer informatie.

Beheerde identiteit moet worden gebruikt voor alle Azure-services die ondersteuning bieden voor dit type verificatie zonder wachtwoord om wachtwoordbeheer te vereenvoudigen: AKS, PostgreSQL, Redis Cache, Notification Hub, Azure Key Vault en Azure Functions. Bekijk alle services die beheerde identiteiten voor Azure-resources ondersteunen.

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.

Voor een implementatie in één regio is voorbeeldprijsinformatie beschikbaar in de prijscalculator

Medewerkers

Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Belangrijkste auteurs:

Volgende stappen

Om aan de slag te gaan met het implementeren van een vergelijkbare architectuur voor uw bedrijf, kunt u overwegen vaardigheden op te bouwen voor webservices, databases zoals Azure Database for PostgreSQL en technieken voor het ontwikkelen van mobiele toepassingen, zoals .NET MAUI.

Productdocumentatie:

Realtime communicatie:

Meer informatie over hoe WebRTC realtime communicatiemogelijkheden biedt voor mobiele toepassingen is beschikbaar op de WebRTC-projectsite.

Servers draaien:

Gebruik een clientbibliotheek zoals Icelink (geladen door de toepassing op de telefoon en door de passende software van het bureaublad van de hoorhulpprofessional) om de draaiservers* en de typen verbinding (tcp, udp, p2p) tussen de twee clients te beheren (software en toepassing op de telefoon). De clientbibliotheek:

  • Het streamingkanaal maken
  • Hiermee worden de verbindingen tot stand gebracht
  • Hiermee beheert u de verbinding in geval van fouten, ontbrekende pakketten, wordt het streamen automatisch aangepast aan de variaties van de bandbreedte
  • De oproepen coderen/decoderen (audio en/of video) tijdens de oproepen

*Beurtservers zijn netwerkentiteiten die verantwoordelijk zijn voor het doorsturen van media in VoIP-gerelateerde protocollen. In deze oplossing worden ze gehost in https://xirsys.com/ verschillende datacenters wereldwijd. Hiermee wordt een directe verbinding tot stand gebracht tussen twee clients onder dezelfde sessie.