Azure Health Data Services-Arbeitsbereich mit Azure Bicep bereitstellen
In diesem Artikel erfahren Sie, wie Sie Azure Health Data Services erstellen, einschließlich Arbeitsbereiche, FHIR-Dienste, DICOM-Dienste und MedTech-Dienste mit Azure Bicep. Sie können die in diesem Artikel verwendeten Bicep-Skripts in Azure Health Data Services-Beispielen anzeigen und herunterladen.
Was ist Azure Bicep?
Bicep basiert auf der Vorlage des Azure Resource Manager (ARM). Bicep unterstützt sofort alle Vorschau- und allgemein verfügbaren (GA)-Versionen für Azure-Dienste, einschließlich Azure Health Data Services. Während der Entwicklung können Sie eine JSON ARM-Vorlagendatei mit dem az bicep build
-Befehl generieren. Umgekehrt können Sie die JSON-Dateien mithilfe des az bicep decompile
-Befehls in Bicep dekompilieren. Während der Bereitstellung konvertiert die Bicep CLI eine Bicep-Datei in eine ARM-Vorlage JSON.
Sie können weiterhin mit JSON-ARM-Vorlagen arbeiten oder Bicep verwenden, um Ihre ARM-Vorlagen zu entwickeln. Weitere Informationen zu Bicep finden Sie unter Was ist Bicep.
Hinweis
Die Vorlagen und Skripts im Artikel werden in Visual Studio Code während der öffentlichen Vorschau getestet. Möglicherweise sind einige Änderungen erforderlich, um den Code an die Ausführung in Ihrer Umgebung anzupassen.
Definieren von Parametern und Variablen
Wenn Sie Bicep-Parameter und -Variablen anstelle von hartcodierten Namen und anderen Werten verwenden, können Sie Ihre Bicep-Vorlagen debuggen und wiederverwenden.
Zunächst definieren wir Parameter mit dem Schlüsselwort param für Arbeitsbereich, FHIR-Dienst, DICOM-Dienst, MedTech-Dienst. Außerdem definieren wir Parameter für das Azure-Abonnement und den Microsoft Entra-Mandanten. Sie werden in der CLI-Befehlszeile mit der Option „--parameters“ verwendet.
Anschließend definieren wir Variablen für Ressourcen mit dem Schlüsselwort var. Darüber hinaus definieren wir Variablen für Eigenschaften wie die Autorität und die Zielgruppe für den FHIR-Dienst. Sie werden intern in der Bicep-Vorlage angegeben und verwendet und können in Kombination mit Parametern, Bicep-Funktionen und anderen Variablen verwendet werden. Im Gegensatz zu Parametern werden sie nicht in der Befehlszeile der CLI verwendet.
Es ist wichtig zu beachten, dass eine Bicep-Funktion und -Umgebung(en) erforderlich sind, um die Anmelde-URL https://login.microsoftonline.com
anzugeben. Weitere Informationen zu Bicep-Funktionen finden Sie unter Bereitstellungsfunktionen für Bicep.
//Define parameters
param workspaceName string
param fhirName string
param dicomName string
param medtechName string
param tenantId string
param location string
//Define variables
var fhirservicename = '${workspaceName}/${fhirName}'
var dicomservicename = '${workspaceName}/${dicomName}'
var medtechservicename = '${workspaceName}/${medtechName}'
var medtechdestinationname = '${medtechservicename}/output1'
var loginURL = environment().authentication.loginEndpoint
var authority = '${loginURL}${tenantId}'
var audience = 'https://${workspaceName}-${fhirName}.fhir.azurehealthcareapis.com'
Erstellen einer Arbeitsbereichsvorlage
Verwenden Sie zum Definieren einer Ressource das Schlüsselwort Ressource. Für die Arbeitsbereichsressource sind die erforderlichen Eigenschaften der Arbeitsbereichsname und der Speicherort. In der Vorlage wird der Speicherort der Ressourcengruppe verwendet, Sie können jedoch einen anderen Wert für den Speicherort angeben. Für den Ressourcennamen können Sie auf den definierten Parameter oder die Variable verweisen.
Weitere Informationen zu Ressourcen und Modulen finden Sie unter Ressourcendeklaration in Bicep.
//Create a workspace
resource exampleWorkspace 'Microsoft.HealthcareApis/workspaces@2021-06-01-preview' = {
name: workspaceName
location: resourceGroup().location
}
Um einen vorhandenen Arbeitsbereich zu verwenden oder auf einen vorhandenen Arbeitsbereich zu verweisen, verwenden Sie das Schlüsselwort vorhanden. Geben Sie den Namen der Arbeitsbereichsressource und den vorhandenen Arbeitsbereichsinstanznamen für die „Name“-Eigenschaft an. Beachten Sie, dass in der Vorlage ein anderer Name für die vorhandene Arbeitsbereichsressource verwendet wird, dies ist jedoch keine Anforderung.
//Use an existing workspace
resource exampleExistingWorkspace 'Microsoft.HealthcareApis/workspaces@2021-06-01-preview' existing = {
name: workspaceName
}
Sie können nun die Arbeitsbereichsressource mithilfe des az deployment group create
-Befehls bereitstellen. Sie können sie auch zusammen mit den anderen Ressourcen bereitstellen, wie weiter unten in diesem Artikel beschrieben.
Erstellen einer FHIR-Dienstvorlage
Für die FHIR-Dienstressource umfassen die erforderlichen Eigenschaften Dienstinstanzname, Standort, Art und verwaltete Identität. Außerdem ist sie von der Arbeitsbereichsressource abhängig. Für den FHIR-Dienst selbst enthalten die erforderlichen Eigenschaften Autorität und Zielgruppe, die im Eigenschaftenelement angegeben sind.
resource exampleFHIR 'Microsoft.HealthcareApis/workspaces/fhirservices@2021-11-01' = {
name: fhirservicename
location: resourceGroup().location
kind: 'fhir-R4'
identity: {
type: 'SystemAssigned'
}
dependsOn: [
exampleWorkspace
//exampleExistingWorkspace
]
properties: {
accessPolicies: []
authenticationConfiguration: {
authority: authority
audience: audience
smartProxyEnabled: false
}
}
}
Ebenso können Sie einen vorhandenen FHIR-Dienst mit dem Schlüsselwort vorhanden verwenden oder auf diesen verweisen.
//Use an existing FHIR service
resource exampleExistingFHIR 'Microsoft.HealthcareApis/workspaces/fhirservices@2021-11-01' existing = {
name: fhirservicename
}
Erstellen einer DICOM-Dienstvorlage
Für die DICOM-Dienstressource umfassen die erforderlichen Eigenschaften den Namen und den Speicherort der Dienstinstanz und die Abhängigkeit vom Arbeitsbereichsressourcentyp.
//Create DICOM service
resource exampleDICOM 'Microsoft.HealthcareApis/workspaces/dicomservices@2021-11-01' = {
name: dicomservicename
location: resourceGroup().location
dependsOn: [
exampleWorkspace
]
properties: {}
}
Ebenso können Sie mithilfe des Schlüsselworts vorhanden einen vorhandenen DICOM-Dienst verwenden oder auf einen verweisen.
//Use an existing DICOM service
resource exampleExistingDICOM 'Microsoft.HealthcareApis/workspaces/dicomservices@2021-11-01' existing = {
name: dicomservicename
}
Erstellen einer MedTech-Dienstvorlage
Für die MedTech-Dienstressource umfassen die erforderlichen Eigenschaften den MedTech-Dienstnamen, den Standort, die verwaltete Identität und die Abhängigkeit vom Arbeitsbereich. Für den MedTech-Dienst selbst sind die erforderlichen Eigenschaften der Azure Event Hubs-Namespace, Event Hubs, die Event Hubs-Consumergruppe und die Gerätezuordnung. Beispielsweise wird die Herzfrequenzgerätezuordnung in der Vorlage verwendet.
//Create IoT connector
resource exampleIoT 'Microsoft.HealthcareApis/workspaces/iotconnectors@2021-11-01' = {
name: iotconnectorname
location: resourceGroup().location
identity: {
type: 'SystemAssigned'
}
dependsOn: [
exampleWorkspace
//exampleExistingWorkspace
]
properties: {
ingestionEndpointConfiguration: {
eventHubName: 'eventhubnamexxx'
consumerGroup: 'eventhubconsumergroupxxx'
fullyQualifiedEventHubNamespace: 'eventhubnamespacexxx.servicebus.windows.net'
}
deviceMapping: {
content: {
templateType: 'CollectionContent'
template: [
{
templateType: 'JsonPathContent'
template: {
typeName: 'heartrate'
typeMatchExpression: '$..[?(@heartrate)]'
deviceIdExpression: '$.deviceid'
timestampExpression: '$.measurementdatetime'
values: [
{
required: 'true'
valueExpression: '$.heartrate'
valueName: 'Heart rate'
}
]
}
}
]
}
}
}
}
Ebenso können Sie einen vorhandenen MedTech-Dienst mit dem Schlüsselwort vorhanden verwenden oder auf einen verweisen.
//Use an existing IoT
resource exampleExistingIoT 'Microsoft.HealthcareApis/workspaces/iotconnectors/fhirdestinations@2021-11-01' existing = {
name: iotconnectorname
}
Der MedTech-Dienst erfordert eine untergeordnete Ressource, ein untergeordnetes Ziel und unterstützt derzeit nur das FHIR-Dienstziel. Für die Zielressource des MedTech-Diensts enthalten die erforderlichen Eigenschaften einen Namen, einen Standort und die Abhängigkeit vom MedTech-Dienst. Für das Ziel des FHIR-Diensts sind die erforderlichen Eigenschaften der Auflösungstyp, der einen Wert von Create oder Lookup akzeptiert, die FHIR-Dienstressourcen-ID und ein FHIR-Ressourcentyp. Beispielsweise wird die Herzfrequenzzuordnung für die FHIR-Beobachtungsressource in der Vorlage verwendet.
//Create IoT destination
resource exampleIoTDestination 'Microsoft.HealthcareApis/workspaces/iotconnectors/fhirdestinations@2021-11-01' = {
name: iotdestinationname
location: resourceGroup().location
dependsOn: [
exampleIoT
//exampleExistingIoT
]
properties: {
resourceIdentityResolutionType: 'Create'
fhirServiceResourceId: exampleFHIR.id //exampleExistingFHIR.id
fhirMapping: {
content: {
templateType: 'CollectionFhirTemplate'
template: [
{
templateType: 'CodeValueFhir'
template: {
codes: [
{
code: '8867-4'
system: 'http://loinc.org'
display: 'Heart rate'
}
]
periodInterval: 60
typeName: 'heartrate'
value: {
defaultPeriod: 5000
unit: 'count/min'
valueName: 'hr'
valueType: 'SampledData'
}
}
}
]
}
}
}
}
Azure Gesundheitsdatenservices bereitstellen
Sie können den az deployment group create
-Befehl verwenden, um einzelne Bicep-Vorlagen oder kombinierte Vorlagen bereitzustellen, ähnlich der Art, wie Sie Azure-Ressourcen mit JSON-Vorlagen bereitstellen. Geben Sie den Ressourcengruppennamen an, und schließen Sie die Parameter in die Befehlszeile ein. Geben Sie mit der Option „--parameters“ das Parameter- und Wertpaar als „Parameter = Wert“ an, und trennen Sie die Parameter- und Wertpaare durch ein Leerzeichen, wenn mehrere Parameter definiert sind.
Für das Azure-Abonnement und den Mandanten können Sie die Werte angeben oder CLI-Befehle verwenden, um sie aus der aktuellen Anmeldesitzung abzurufen.
deploymentname=xxx
resourcegroupname=rg-$deploymentname
location=centralus
workspacename=ws$deploymentname
fhirname=fhir$deploymentname
dicomname=dicom$deploymentname
medtechname=medtech$deploymentname
bicepfilename=ahds.bicep
subscriptionid=$(az account show --query id --output tsv)
tenantid=$(az account show --subscription $subscriptionid --query tenantId --output tsv)
az group create --name $resourcegroupname --location $location
az deployment group create --resource-group $resourcegroupname --template-file $bicepfilename --parameters workspaceName=$workspacename fhirName=$fhirname dicomName=$dicomname medtechName=$medtechname tenantId=$tenantid location=$location
Beachten Sie, dass der Name der untergeordneten Ressource, z. B. der FHIR-Dienst, den übergeordneten Ressourcennamen enthält und die Eigenschaft „dependsOn“ erforderlich ist. Wenn die untergeordnete Ressource jedoch innerhalb der übergeordneten Ressource erstellt wird, muss der Name nicht den übergeordneten Ressourcennamen enthalten und die Eigenschaft „dependsOn“ ist nicht erforderlich. Weitere Informationen zu geschachtelten Ressourcen finden Sie unter Festlegen von Name und Typ für untergeordnete Ressourcen in Bicep.
Debuggen von Bicep-Vorlagen
Sie können Bicep-Vorlagen in Visual Studio Code oder in anderen Umgebungen debuggen und Probleme basierend auf der Antwort beheben. Außerdem können Sie das Aktivitätsprotokoll für eine bestimmte Ressource in der Ressourcengruppe beim Debuggen überprüfen.
Darüber hinaus können Sie den Ausgabewert für das Debuggen oder als Teil der Bereitstellungsantwort verwenden. Sie können beispielsweise zwei Ausgabewerte definieren, um die Werte der Autorität und Zielgruppe für den FHIR-Dienst in der Antwort anzuzeigen. Weitere Informationen finden Sie unter Ausgaben in Bicep.
output stringOutput1 string = authority
output stringOutput2 string = audience
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie Azure Health Data Services erstellen, einschließlich Arbeitsbereiche, FHIR-Dienste, DICOM-Dienste und MedTech-Dienste mit Bicep. Außerdem haben Sie gelernt, wie Sie Bicep-Vorlagen erstellen und debuggen. Weitere Informationen zu Azure Health Data Services finden Sie unter
FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.