Een telezorgsysteem bouwen in Azure

Database for PostgreSQL
Functions
Kubernetes-service
Storage
Traffic Manager

In dit artikel wordt uitgelegd hoe u een telehealth-systeem bouwt met behulp van Azure-cloudservices. De details zijn gebaseerd op een echte klantuitvoering die een professionele gezondheidszorgorganisatie verbindt met externe patiënten. Hoewel er andere manieren zijn om een dergelijk systeem te bouwen, is de beschreven oplossing geslaagd in het mogelijk maken van communicatie tussen patiënten en hun externe zorgprovider, en het op afstand afstemmen van de medische apparaten die patiënten dragen.

Er zijn ongeveer 700 miljoen mensen met een gehoorbeperking. Slechts 10% van hen gebruikt echter gehoorhulpapparaten 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 in een specifieke gehoorsituatie (bijvoorbeeld tijdens het lopen in het park, tijdens het deelnemen aan een party of thuis) die niet kan worden gereproduceerd in het kantoor van de gehoorverzorger.
  • Problemen met de mobiliteit of lange afstand tot de gehoorverzorgende professional.
  • U woont in een opkomend land of in een regio met een beperkt aantal professionals in de gehoorzorg.

Als u deze problemen wilt ondervangen, is het belangrijk dat u op afstand gehoordiensten kunt bieden. In dit geval maakt de gezondheidszorgprofessional gebruik van chat- of videocommunicatie om contact te maken met hun externe patiënten. Mensen die slechthorend zijn, gebruiken een smartphone om toegang tot het apparaat met het gehoorapparaat toe te staan tijdens de externe sessie. De patiënt ervaart onmiddellijk verbeterd gehoor, omdat de professional van de gehoorverzorger in realtime wijzigingen in de configuratie van het apparaat voor het gehoorapparaat implementeert.

Potentiële gebruikscases

De volgende aanvullende gebruiksgevallen hebben vergelijkbare ontwerppatronen:

  • Elk Bluetooth apparaat is toegankelijk en extern afgestemd met behulp van een dergelijke oplossing.
  • Communicatie (tekst, spraak, video) of kennisuitwisseling (onderwijs, tevredenheidsonderzoeken) in een externe instelling/context.
  • Wereldwijd gedistribueerd webinhoudsbeheer.
  • Internet der dingen (IoT)

Architectuur

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

De oplossing is gebaseerd op vier pijlers, waaronder:

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

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

  • Openbare API's
  • Interne microservices die verantwoordelijk zijn voor werkstromen, zoals video-aanroepen via Web RTC of client-naar-client-communicatie met behulp van 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 wordt persistent gemaakt 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 oplossing voor logboekregistratie 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 om:

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

  • Verhoog de zelfstandigheid van de teams die de oplossing bouwen. Elk team houdt toezicht op functionele domeinen en zorgt voor de ontwikkeling 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, is de CI/CD-pijplijn voor de hele oplossing bovendien vereenvoudigd.

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

  • Centrale bewaking bereiken en de mogelijkheid om problemen met de oplossing op te lossen verbeteren.

Onderdelen

  • Azure Database for PostgreSQL slaat gegevens op van gebruikers (patiënten en gezondheidszorgprofessionals) en apparaatgerelateerde gegevens. De service is gekozen omdat deze stabiel en lichtgewicht is en geen leveranciervergrendeling heeft.
  • Azure Kubernetes Service als host voor de bedrijfslogica van de toepassing en biedt een eenvoudige implementatie en flexibiliteit voor aanpassing. De service abstraheert ook de oplossing van de feitelijke hardware die eronder wordt gebruikt.
  • Azure Cache voor Redis als host voor tijdelijke gegevens die worden gebruikt voor intraservicegegevens (gedeelde gegevens). De service kan opnieuw worden gemaakt vanuit de database voor het geval de gegevens uit de cache verlopen
  • Azure Notification Hub waarschuwt patiënten over binnenkomende inhoud: chat, videooproepen, configuratie-instellingen voor apparaten.
  • Azure Functions worden taken gepland. Bijvoorbeeld brede communicatie met grote groepen gebruikers, coördinatie van analysewerkzaamheden in de back-end (aggregaties...).
  • Azure-toepassing Insights centraliseert signalen/gebeurtenissen van het systeem (logboeken, telemetrie van logboeken van microservices, front-end en apparaten) voor het oplossen van problemen.
  • 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 op de achtergrond opgeslagen in de Azure-opslagaccounts.
  • Azure Traffic Manager load balances tussen geografische locaties.
  • Met Azure SignalR kan servercode asynchrone meldingen verzenden naar webtoepassingen aan de clientzijde. Apparaten van eindgebruikers kunnen worden geconfigureerd in de standaardmodus of in de geavanceerde modus.

Standaardmodus

In de standaardmodus bereidt de passende software een melding voor die een JSON-configuratiebestand 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 pusht.

Geavanceerde modus

In de geavanceerde modus gebruikt de professional van het gehoorhulpprogramma 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, wat SignalR bereikt met behulp van WebSockets. De telefoon van de eindgebruiker staat aan de ontvangende kant van dit kanaal. Vanaf de telefoon brengt Bluetooth verbinding de laatste communicatiekoppeling met het apparaat tot stand.

Alternatieven

Aan de databasezijde kunnen andere PaaS-databaseservices worden gebruikt. Voor het hosten van de toepassingslogica kan Azure Kubernetes Service, Azure-toepassing Service of Azure Service Fabric worden gebruikt.

Lessen

We raden u aan een Traffic Manager te gebruiken voor de verschillende clusters om de latentie tussen regio's te optimaliseren en als een terugvalmechanisme als de clusters niet meer beschikbaar zijn. Voor de databases wordt u aangeraden alleen-lezenreplica's te gebruiken voor query's waarvoor het laden en samenvoegen van een grote hoeveelheid gegevens is vereist. We raden u aan om statische webbestanden (.html, .js, afbeeldingen, enzovoort) wereldwijd te leveren met behulp van een netwerk voor contentlevering (CDN) om de snelheid te verbeteren via caching.

Implementatie

Het belangrijkste aspect om rekening mee te houden bij het implementeren van dit scenario is de coördinatie van implementaties in de cloud-back-en 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 op de lange termijn wordt behandeld met behulp van een specifieke microservice, is er een kans om de database op te splitsen in verschillende kleinere databases. Dit maakt de basisisolatie en zelfstandigheid van de stroom mogelijk die betrekking heeft op elke microservice, in plaats van de gegevens met betrekking tot alle services in één database te groeperen. Om dit doel te bereiken, moet de inrichting en het beheer van die databases worden automatiseren. 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.

Bewaking

Het is belangrijk om elk van de lagen te bewaken en elk bewakingsgezicht moet worden ge federeerd in één bucket in de cloud. Het is belangrijk om de correlatie van al deze logboeken en telemetriegegevenspunten mogelijk te maken om holistische inzichten over onderdelen en lagen te garanderen.

Tegenwoordig zijn de volgende bewaakte lagen:

  • Windows toepassing (software aanpassen op het bureaublad van de zorgprofessional)
  • Logica voor gehoste toepassingen
  • Cloud services

Formaat en schalen

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

Het gebruik van de TimescaleDB-extensie van PostgreSQL maakt een efficiëntere verwerking mogelijk van de tijdgerelateerde gegevens die afkomstig zijn van de medische apparaten. Overweeg het gebruik van een oplossing voor uitschalen, Azure Database for PostgreSQL - Hyperscale (Citus) de wereldwijde schaal te bereiken door meerdere databaseknooppunten in terichten.

Beveiliging en naleving

Deze oplossing verwerkt PHI en persoonlijke gegevens. 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 staan, maar ook de logboeken en telemetriegegevens). Raadpleeg de HIPAA-sectie van het Vertrouwenscentrum van Microsoft voor meer informatie.

Prijzen

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

Volgende stappen

Om aan de slag te gaan met het implementeren van een vergelijkbare architectuur voor uw bedrijf, kunt u overwegen om vaardigheden op te bouwen op het gebied van webservices, databases zoals Azure Database for PostgreSQL enontwikkeltechnieken en technologieën voor mobiele toepassingen, zoals Xamarin en .Net Core.

Realtime communicatie

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

Servers draaien

Gebruik een clientbibliotheek zoals Icelink (geladen door de toepassing op de telefoon en door de passende software van het bureaublad van de gehoorhulpprofessional) voor het beheren van de beurtservers en de verbindingstypen * (tcp, udp, p2p) tussen de twee clients (software en toepassing op de telefoon aanpassen). De clientbibliotheek:

  • Hiermee maakt u het streamingkanaal
  • De verbindingen tot stand brengen
  • Beheert de verbinding in geval van fouten, ontbrekende pakketten, past automatisch het streamen aan de variaties van de bandbreedte
  • De aanroepen (audio en/of video) tijdens de aanroepen coderen/decoderen

*Turn-servers zijn netwerkentiteiten die verantwoordelijk zijn voor het doorgeven van media in Aan VoIP gerelateerde protocollen. In deze oplossing worden ze gehost https://xirsys.com/ door in verschillende datacenters over de hele wereld. Brengt een rechtstreekse verbinding tot stand tussen twee clients onder dezelfde sessie.