Bereitstellen eines FHIR-Diensts in Azure Health Data Services – mithilfe der ARM-Vorlage

In diesem Artikel erfahren Sie, wie Sie den FHIR-Dienst im Azure Health Data Services (hiermit als FHIR-Dienst bezeichnet) mithilfe der Azure Resource Manager-Vorlage (ARM-Vorlage) bereitstellen. Wir bieten Ihnen zwei Optionen mit PowerShell oder cli.

Eine ARM-Vorlage ist eine JSON-Datei, die die Infrastruktur und Konfiguration für Ihr Projekt definiert. Die Vorlage verwendet eine deklarative Syntax. In deklarativer Syntax beschreiben Sie Ihre beabsichtigte Bereitstellung, ohne die Reihenfolge der Programmierbefehle zur Erstellung der Bereitstellung zu schreiben.

Voraussetzungen

Überprüfen der ARM-Vorlage

Die in diesem Artikel verwendete Vorlage stammt aus den Azure-Schnellstartvorlagen.

Die Vorlage definiert drei Azure-Ressourcen:

  • Microsoft.HealthcareApis/Arbeitsbereiche
  • Microsoft.HealthcareApis/workspaces/fhirservices
  • Microsoft.Storage/storageAccounts

Hinweis

Lokale RBAC ist veraltet. Die Konfiguration von Zugriffsrichtlinien, die der lokalen RBAC in ARM-Vorlage zugeordnet ist, ist veraltet. Vorhandene Kunden, die lokale RBAC verwenden, müssen bis November 2024 zu Azure RBAC migrieren. Für Fragen wenden Sie sich bitte an uns.

Sie können die FHIR-Dienstressource bereitstellen, indem Sie die Arbeitsbereichsressource, die Speicherressource und die dependsOn Eigenschaft in der Ressource "Microsoft.HealthcareApis/workspaces/fhirservices" entfernen.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "authorityurl": {
            "type": "string",
            "defaultValue": "https://login.microsoftonline.com"
        },
        "tagName": {
            "type": "string",
            "defaultValue": "My Deployment"
        },
        "region": {
            "type": "string",
                  "allowedValues": [
                "australiaeast",
                "canadacentral",
                "eastus",
                "eastus2",
                "germanywestcentral",
                "japaneast",
                "northcentralus",
                "northeurope",
                "southafricanorth",
                "southcentralus",
                "southeastasia",
                "switzerlandnorth",
                "uksouth",
                "ukwest",
                "westcentralus",
                "westeurope",
                "westus2"
            ]
        },
        "workspaceName": {
            "type": "string"
        },
        "fhirServiceName": {
            "type": "string"
        },
        "tenantid": {
            "type": "string"
        },
        "storageAccountName": {
            "type": "string"
        },
        "storageAccountConfirm": {
            "type": "bool",
            "defaultValue": true
        },
        "AccessPolicies": {
            "type": "array",
            "defaultValue": []
        },
        "smartProxyEnabled": {
            "type": "bool",
            "defaultValue": false
        }
    },
    "variables": { 
        "authority": "[Concat(parameters('authorityurl'), '/', parameters('tenantid'))]",
        "createManagedIdentity": true,
        "managedIdentityType": {
            "type": "SystemAssigned"
        },
        "storageBlobDataContributerRoleId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]"
    },
    "resources": [
        {
            "type": "Microsoft.HealthcareApis/workspaces",
            "name": "[parameters('workspaceName')]",
            "apiVersion": "2023-11-01",
            "location": "[parameters('region')]",
            "properties": {}
        },
       {          
            "type": "Microsoft.HealthcareApis/workspaces/fhirservices",
            "kind": "fhir-R4",
            "name": "[concat(parameters('workspaceName'), '/', parameters('fhirServiceName'))]",
            "apiVersion": "2023-11-01",
            "location": "[parameters('region')]",
            "dependsOn": [
                "[resourceId('Microsoft.HealthcareApis/workspaces', parameters('workspaceName'))]"
            ],
            "tags": {
                "environmentName": "[parameters('tagName')]"
            },
            "properties": {
                "accessPolicies": "[parameters('AccessPolicies')]",
                "authenticationConfiguration": {
                    "authority": "[variables('Authority')]",
                    "audience": "[concat('https//', parameters('workspaceName'), '-', parameters('fhirServiceName'), '.fhir.azurehealthcareapis.com')]",
                    "smartProxyEnabled": "[parameters('smartProxyEnabled')]"
                },
                "corsConfiguration": {
                    "allowCredentials": false,
                    "headers": ["*"],
                    "maxAge": 1440,
                    "methods": ["DELETE", "GET", "OPTIONS", "PATCH", "POST", "PUT"],
                    "origins": ["https://localhost:6001"]
                },
                "exportConfiguration": {
                    "storageAccountName": "[parameters('storageAccountName')]"
                }
            },
            "identity": "[if(variables('createManagedIdentity'), variables('managedIdentityType'), json('null'))]"
        },
        {
            "name": "[parameters('storageAccountName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "location": "[resourceGroup().location]",
            "properties": {
                "supportsHttpsTrafficOnly": "true"
            },
            "condition": "[parameters('storageAccountConfirm')]",
            "dependsOn": [
                "[parameters('fhirServiceName')]"
            ],
            "sku": {
                "name": "Standard_LRS"
            },
            "kind": "Storage",
            "tags": {
                "environmentName": "[parameters('tagName')]",
                "test-account-rg": "true"
            }
        }
    ],
    "outputs": {
    }
}

Bereitstellen einer ARM-Vorlage

Sie können die ARM-Vorlage mit zwei Optionen bereitstellen: PowerShell oder CLI.

Der unten bereitgestellte Beispielcode verwendet die Vorlage im Unterordner "templates" des Unterordners "src". Möglicherweise möchten Sie den Speicherortpfad ändern, um ordnungsgemäß auf die Vorlagendatei zu verweisen.

Der Bereitstellungsprozess dauert ein paar Minuten, bis er abgeschlossen ist. Notieren Sie sich die Namen für den FHIR-Dienst und die Ressourcengruppe, die Sie später verwenden werden.

Bereitstellen der Vorlage: Verwenden von PowerShell

Führen Sie den Code in PowerShell lokal, in Visual Studio Code oder in Azure Cloud Shell aus, um den FHIR-Dienst bereitzustellen.

Wenn Sie sich nicht bei Azure angemeldet haben, verwenden Sie "Verbinden-AzAccount", um sich anzumelden. Nachdem Sie sich angemeldet haben, verwenden Sie "Get-AzContext", um das Abonnement und den Mandanten zu überprüfen, das Sie verwenden möchten. Sie können das Abonnement und den Mandanten bei Bedarf ändern.

Sie können eine neue Ressourcengruppe erstellen oder eine vorhandene verwenden, indem Sie den Schritt überspringen oder die Zeile mit "New-AzResourceGroup" kommentieren.

### variables
$resourcegroupname="your resource group"
$location="South Central US"
$workspacename="your workspace name"
$fhirservicename="your fhir service name"
$tenantid="xxx"
$subscriptionid="xxx"
$storageaccountname="storage account name"
$storageaccountconfirm=1

### login to azure
Connect-AzAccount 
#Connect-AzAccount SubscriptionId $subscriptionid
Set-AzContext -Subscription $subscriptionid
Connect-AzAccount -Tenant $tenantid -SubscriptionId $subscriptionid
#Get-AzContext 

### create resource group
New-AzResourceGroup -Name $resourcegroupname -Location $location

### deploy the resource
New-AzResourceGroupDeployment -ResourceGroupName $resourcegroupname -TemplateFile "src/templates/fhirtemplate.json" -region $location -workspaceName $workspacename -fhirServiceName $fhirservicename -tenantid $tenantid -storageAccountName $storageaccountname -storageAccountConfirm $storageaccountconfirm

Überprüfen der bereitgestellten Ressourcen

Sie können überprüfen, ob der FHIR-Dienst ausgeführt wird, indem Sie den Browser öffnen und zu https://<yourfhir servic>.azurehealthcareapis.com/metadata. Wenn die Funktionsanweisung automatisch angezeigt oder heruntergeladen wird, ist die Bereitstellung erfolgreich.

Bereinigen der Ressourcen

Wenn die Ressource nicht mehr benötigt wird, führen Sie den folgenden Code aus, um die Ressourcengruppe zu löschen.

$resourceGroupName = “your resource group name”
Remove-AzResourceGroup -Name $resourceGroupName

Nächste Schritte

In diesem Schnellstarthandbuch haben Sie den FHIR-Dienst in Azure Health Data Services mithilfe einer ARM-Vorlage bereitgestellt. Weitere Informationen zu unterstützten Features des FHIR-Diensts finden Sie unter.

FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.