Dataverse Healthcare APIs: Verwenden Sie die Vorlage für die Healthcare-Daten-Pipeline, um Azure Logic-Apps bereitzustellen
Dieser Artikel enthält eine schrittweise Anleitung für die Verwendung einer Vorlage, um eine Gruppe von Azure Logic-Apps bereitzustellen, die FHIR-Daten in Dataverse Healthcare APIs, Azure Health Data Services oder beides einbinden. Diese Lösung funktioniert als unternehmenstauglicher Logik-App-Flow, der als Relay zwischen Azure Health Data Services und Dataverse Healthcare APIs fungiert. Der Flow verwaltet außerdem die Wiederholungslogik und die Ausnahmebehandlung. Es basiert auf einem Azure Blob Storage-Trigger anstelle des HTTP-Triggers, der in der manuellen Konfiguration verwendet wird.
Dieser Workflow ist für die Bereitstellung als Azure Resource Manager-Vorlage (ARM-Vorlage) namens Datenpipelinevorlage für das Gesundheitswesen verfügbar. Sie können die Vorlage über das Microsoft Cloud-Lösungscenter bereitstellen. Bei diesem Angebot handelt es sich um eine robustere und besser unterstützte Lösung von Microsoft Cloud for Healthcare. Sie müssen nach der Bereitstellung der Vorlage einige grundlegende manuelle Konfigurationen vornehmen.
Anmerkung
Dieser Flow der Logic-App dient als Eingangspunkt für eingehende elektronische Datensätze (EHR) und stellt sicher, dass FHIR-Daten an die richtigen Dienste weitergeleitet werden. In seinem aktuellen Zustand handelt es sich nicht um eine endgültige Lösung und er ist dazu gedacht, dass er je nach Ihren Geschäftsanforderungen aktualisiert wird.
Diese Logic-Apps sind nicht verpflichtet, FHIR-Daten an die Dataverse Healthcare API-Endpunkte zu senden. Sie können eine eigene Lösung entwickeln, um Daten aus Ihrer elektronischen Patientenakte an die APIs weiterzuleiten und die Antworten zu verarbeiten.
Die Logik-App-Dienste basieren auf einem Azure Blob Storage-Trigger, der die asynchrone Verarbeitung der an einem konfigurierbaren Speicherort bereitgestellten Pakete auslöst. Diese Option bewältigt größere Lasten für Anwendungsfälle in Unternehmen und umfasst zusätzliche Schritte zum Umgang mit Ausnahmen. Sie sollten jedoch gründliche Tests mit Ihren erwarteten täglichen Belastungen durchführen.
Nach der Bereitstellung können Sie Logic Apps erweitern, um sie an Ihre speziellen Systemanforderungen anzupassen.
Wichtig
Diese ARM-Vorlage ist nur mit Microsoft Cloud for Healthcare 2022 Veröffentlichungswelle 2 und späteren Versionen kompatibel. Für ältere Versionen löschen Sie die Aktion Set requestBody to FHIR response on success, bevor Sie einen Auslöser setzen.
Die Konfiguration umfasst die folgenden Schritte:
- Anforderungen
- Design
- Schritte nach der Bereitstellung
- Umgang mit Fehlern
- Wiederholungen festlegen
- Sichere Logic-Apps
Anforderungen
Stellen Sie sicher, dass Ihre Umgebung die folgenden Anforderungen erfüllt, bevor Sie die Vorlage bereitstellen:
- Ein Azure Konto und ein Abonnement. Wenn Sie noch kein Abonnement haben, melden Sie sich für ein kostenloses Azure-Konto an, bevor Sie beginnen.
- Eine Azure-Ressourcengruppe, welche die entsprechenden Berechtigungen zum Erstellen neuer Ressourcen hat, oder eine Rolle „Mitwirkender“, die neue Ressourcengruppen erstellen darf.
- Zugriff innerhalb der Ressourcengruppe zum Erstellen von Ressourcen und Zuweisen von Azure-Rollen.
- Die Einhaltung der Sicherheitsrichtlinien, die von Azure Administratoren und den Richtlinien des Unternehmens vorgegeben werden.
Design
Das folgende Diagramm veranschaulicht das Design der über die Vorlage bereitgestellten Pipeline:
Die ARM-Vorlage stellt mehrere modularisierte Logic-Apps bereit. Es umfasst die folgenden drei Logik-App-Dienste:
Logik-App | Beschreibung |
---|---|
FHIR Bundle verarbeiten | Die erste Logik-App-Instanz wird ausgelöst, wenn ein Paket in den Blob Storage hochgeladen wird. Diese Logic-App bestimmt, ob das Bundle an FHIR oder direkt an Dataverse gesendet werden soll. |
Bundle an FHIR senden | Die zweite Logik-App wird von der Logik-App für das Prozess-FHIR-Paket ausgelöst, wenn Sie das Paket an FHIR senden möchten. Diese Logic-App verarbeitet das Bundle der Anfrage und sendet es an den FHIR-Server. Nachdem diese Logik-App das Paket an den FHIR-Server gesendet hat, leitet sie das Paket zur weiteren Verarbeitung an die nächste Logik-App Paket an Dataverse senden weiter. |
Bundle an Dataverse senden | Die letzte Logic-App wird entweder von der Logic-App FHIR Bundle verarbeiten oder Bundle an FHIR senden ausgelöst. Sie verarbeitet das Anfrage-Bundle und sendet das Bundle an Dataverse. Sie übernimmt außerdem die Bereinigung des Pakete-Containers, indem es das Anforderungspaket entweder in den bundleserror - oder den bundlesarchive -Container verschiebt. |
Vorlagenparameter
Parameter | Beschreibung |
---|---|
Ressourcenspeicherort | Die Azure-Region für die Ressourcenerstellung. Dieser Parameterwert entspricht standardmäßig der Region, die zum Erstellen der Ressourcengruppe verwendet wurde. |
Dataverse-URL | Die URL Ihrer Microsoft Cloud for Healthcare Dataverse Umgebung. Zum Beispiel https://*orgname*.crm.dynamics.com |
Auf FHIR-Server veröffentlichen | Ein boolescher Wert. Wenn der Wert auf „true“ gesetzt ist, wird das Paket an den FHIR-Server gesendet. |
FHIR-Server-URL | Die URL Ihres FHIR-Servers. Beispiel: https://*fhirserver*.azurewebsites.net Sie benötigen diesen Parameter nur, wenn Sie vor der Bereitstellung an den Dataverse Upsert-API-Endpunkt an den FHIR-Server bereitstellen möchten. |
Eindeutiger Wert | Die eindeutige Zeichenfolge, die zur Generierung von Ressourcennamen verwendet wird. Dieser Wert ist standardmäßig die Funktion uniqueString. Diesen Wert können Sie bei Bedarf überschreiben. |
Bereitgestellte Ressourcen
Mit der Vorlage werden die folgenden Ressourcen in Ihrer Umgebung bereitgestellt:
Ressource | Beschreibung |
---|---|
Verwaltete Identität | Der Name der verwalteten Identität hat das Format mi_UniqueValue. Diese verwaltete Identität wird der Logik-App zugewiesen und erhält Zugriff auf das Speicherkonto, den FHIR-Server und die Dataverse-Umgebung. |
Azure Storage-Konto | Der Name des Speicherkontos hat das Format sa_UniqueValue. Zusammen mit dem Speicherkonto stellt die Vorlage auch die folgenden drei Container bereit - bundles , bundlesarchive und bundleserror . |
Rollenzuweisung | Weisen Sie die Rolle Mitwirkender an Storage-Blobdaten des Speicherkontos der verwalteten Identität zu. |
Azure Event Grid | Der Name des Ereignis-Rasters hat das Format eg_UniqueValue. Alle Blob-Ereignisse werden in diesem Event Grid bereitgestellt. |
Azure-Servicebus | Der Name des Service Bus hat das Format sb_UniqueValue. Das Event Grid stellt Ereignisse an diesen Service Bus bereit. Der Name der Warteschlange lautet bundleCreated . |
Autorisierungsregel | Erstellt eine Zuhören-Autorisierungsregel auf dem Service Bus mit dem Namen bundleauthlisten . |
Azure Logik-Apps | Ein Satz zugehöriger Logic-App-Workflows vom Typ Verbrauch. Der Workflow löst die Service-Bus-Ereignisse aus. Diese Logic-Apps verarbeiten das eingehende FHIR-Bundle und leiten es an die konfigurierten Endpunkte weiter. Jede Logic-App wird mit dem eindeutigen Wert benannt, der bei der Bereitstellung angegeben wurde: 1. laprocessfhirbundle_UniqueValue 2. lasendbundletodataverse_UniqueValue 3. lasendbundletofhir_UniqueValue |
API-Verbindung | Mehrere API-Verbindungen für die Logic-Apps erforderlich. |
Ausgabe
Je nachdem, ob die Ausführung mit einem Erfolg oder einem Fehler endet, wird im Ordner bundlesarchive
oder bundleserror
ein Blob mit dem Namen originalblobname_response.json mit dem folgenden Schema erstellt:
{
"dataverseResponse": "<The response from the Dataverse healthcare API post the call.>",
"fhirServerResponse": "<The response from the FHIR server call if the "Post to FHIR server" parameter value was set to True.>",
"statusMessage": "<Summary of the responses. In case of a failure, the message provides details about how many resources failed to post to the FHIR server and to Dataverse.>",
"statusCode": "<Code value associated with the issue encountered.>"
}
Je nachdem, welche Logic-App den Fehler ausgelöst hat, enthält der JSON-Fehler entweder den Knoten dataverseResponse
oder fhirServerResponse
. Wenn beispielsweise bei der Logik-App lasendbundletofhir_UniqueValue ein Fehler auftritt, enthält die JSON-Antwort nur den fhirServerResponse
-Knoten und -Wert.
Schritte nach der Bereitstellung
Der folgende Abschnitt enthält die Schritte, die Sie nach dem Bereitstellen der Vorlage ausführen müssen.
Gewährt Zugriff auf den FHIR-Server
Für den Zugriff auf den FHIR-Server über die Logik-App ist die Zuweisung der Rolle FHIR-Daten-Mitwirkender erforderlich, die es ermöglicht, neue Daten an den Dienst zu senden. Fügen Sie diese Azure-Rollenzuweisung der von der Logik-App verwendeten verwalteten Identität hinzu.
Gehen Sie zu der FHIR-Serverinstanz, wählen Sie Access Control (IAM) und dann Rollenzuweisung hinzufügen aus.
Auf der Registerkarte Rolle wählen Sie die Rolle FHIR-Datenmitwirkender.
Wählen Sie Mitglieder, wählen Sie Verwaltete Identität und wählen Sie dann + Mitglieder auswählen.
Fügen Sie die mit der ARM-Vorlagenbereitstellung erstellte verwaltete Identität hinzu. Die neu bereitgestellte verwaltete Identität sollte den Namen mi_UniqueValue tragen.
Es kann einige Minuten dauern, bis die Zuweisung die verwaltete Identität berücksichtigt. Wählen Sie die Azure-Rollenzuweisungen aus, um die Rollenzuweisung für die verwaltete Identität anzuzeigen.
Zugriff auf Dataverse Healthcare APIs gewähren
In der Logik-App wird dieselbe verwaltete Identität für den Zugriff auf Dataverse Healthcare APIs verwendet, indem es mit einem Anwendungsbenutzer in der Ziel Dataverse-Instanz verbunden wird. Weitere Informationen über Anwendungsbenutzer finden Sie unter Anwendungsbenutzer im Admin-Center von Power Platform verwalten.
Sie benötigen die Azure Client ID für die verwaltete Identität, um den Anwendungsbenutzer zu konfigurieren. Um die Client-ID abzurufen, öffnen Sie die mit der ARM-Vorlagenbereitstellung erstellte verwaltete Identität und kopieren Sie den Client-ID-Wert aus dem Bereich Übersicht.
Öffnen Sie im Power Platform Admin Center Ihre Microsoft Cloud for Healthcare Zielumgebung. Wählen Sie im Abschnitt Zugriff S2S-Apps und dann Neuer App-Benutzer aus.
Wählen Sie im Bereich Erstellen eines neuen App-Benutzers die entsprechende Unternehmenseinheit und dann Eine App erstellen.
Im Fügen Sie eine App hinzu von Microsoft Entra ID Bereich wählen Sie die Client-ID, die Sie von der verwalteten Identität kopiert haben.
Wählen Sie die verwaltete Identität aus der Liste und dann Hinzufügen aus. Bearbeiten Sie anschließend die Sicherheitsrollen.
Wählen Sie die Rolle Synchronisierungs-Agent für FHIR App Reg User, und wählen Sie dann Speichern.
Wählen Sie Erstellen, um den neuen Anwendungsbenutzer zu erstellen.
Nachdem Sie die Konfiguration abgeschlossen haben, können Sie den Workflow der Logik-App testen, indem Sie ein Beispielpaket zur Verarbeitung an den sa_UniqueValue-Container bereitstellen. Je nach Ihren Lösungsanforderungen können Sie auch jede dieser Logik-Apps für weitere Verarbeitungszwecke ändern.
Umgang mit Fehlern
Wenn das Ausführen einer Logic-App zu einem Fehler führt, wird im Container bundleserror
im Speicherkonto eine Datei mit dem Namen originalblobname_response.json erstellt. Sie können diese Datei analysieren, um die Grundursache des Fehlers zu ermitteln, ihn zu beheben und das Paket mit den fehlerhaften Ressourcen erneut zu übermitteln.
Pakettyp: Batch
Der FHIR-Server und die Dataverse Healthcare APIs verarbeiten ein Bündel vom Typ Batch als eine Gruppe unabhängiger Aktionen. Infolgedessen zeigen die Antworten unabhängig voneinander den Erfolg und Misserfolg jeder Ressource an.
Gemäß der FHIR-Spezifikation führt jeder Ressourcenfehler zu einem OperationOutcome mit dem Schweregradwert Fehler, während die Dataverse Healthcare API den msind_requeststatus
auf 935000002 setzt. Weitere Informationen zu den Anforderungsstatustypen finden Sie unter Anfragestatusarten.
Der Workflow der Logik-App analysiert sowohl die Antworten vom FHIR-Server als auch die Dataverse Healthcare APIs. Er beendet den Flow als Fehlgeschlagen, wenn eine Ressource vorhanden ist, die zu einem Fehler geführt hat.
Anmerkung
Dataverse Healthcare APIs unterstützen derzeit nur FHIR-Pakete vom Typ Batch und Batch-Antwort.
Wiederholungen festlegen
Nachdem Sie den Fehler identifiziert und behoben haben, können Sie das Bundle wieder in den Container bundles
legen zur Wiederaufbereitung.
Beim Drosseln erneut versuchen: FHIR-Server
Die HTTP-Aktion im Logik-App-Workflow, die an den FHIR-Server sendet, verwendet die integrierten Richtlinien zur HTTP-Aktionswiederholung. Der Standardwert ist eine Richtlinie für ein exponenzielles Intervall, die auf vier Wiederholungen festgelegt ist. Sie können die Wiederholungsrichtlinie bearbeiten.
Wählen Sie die Auslassungspunkte in der oberen rechten Ecke der Aktionskarte und wählen Sie dann Einstellungen.
Ändern Sie unter Wiederholungsrichtlinie den Wert des Felds Typ.
Beim Drosseln erneut versuchen: Dataverse Healthcare APIs
Die API-Grenzwerte für den Dienstschutz beeinflussen die Dataverse Healthcare APIs. Wenn eine Anfrage an Dataverse Healthcare APIs gedrosselt wird, versucht der Workflow der Logic-App dreimal (standardmäßig) in dem von der API im Antwort-Header angegebenen Retry-After
-Intervall. Sie können sowohl die Anzahl der Wiederholungsversuche als auch das Intervall bearbeiten.
Um die Anzahl der Wiederholungen zu ändern, bearbeiten Sie den Wert Anzahl in der Aktion Wiederholen bis.
Um das Intervall zu ändern, bearbeiten Sie den Wert Anzahl in der Aktion Verzögerung.
Sichere Logic-Apps
Nachdem Sie die Logic-App eingerichtet und getestet haben, können Sie das Tracing sperren, indem Sie die Ein- und Ausgabeaktionen sichern. Um mehr zu erfahren, gehen Sie zu Secure Logic Apps.