Развертывание службы FHIR в службах данных Работоспособности Azure с помощью шаблона ARM

В этой статье вы узнаете, как развернуть службу FHIR в службах данных Работоспособности Azure (тем самым называется службой FHIR) с помощью шаблона Azure Resource Manager (шаблона ARM). Мы предоставляем два варианта с помощью PowerShell или с помощью интерфейса командной строки.

Шаблон ARM — это JSON-файл, определяющий инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. В декларативном синтаксисе вы можете описать предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.

Необходимые компоненты

Просмотр шаблона ARM

Шаблон, используемый в этой статье, взят из шаблонов быстрого запуска Azure.

Шаблон определяет три ресурса Azure:

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

Примечание.

Локальный RBAC не рекомендуется. Конфигурация политик доступа, связанная с локальным RBAC в шаблоне ARM, устарела. К ноября 2024 года существующим клиентам, использующим локальный RBAC, необходимо выполнить миграцию в Azure RBAC. Для вопросов обратитесь к нам.

Вы можете развернуть ресурс службы FHIR, удалив ресурс рабочих областей, ресурс хранилища и dependsOn свойство в ресурсе Microsoft.HealthcareApis/workspaces/fhirservices.

{
    "$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": {
    }
}

Развертывание шаблона ARM

Шаблон ARM можно развернуть с помощью двух вариантов: PowerShell или CLI.

В примере кода, приведенном ниже, используется шаблон в подпапке "шаблоны" подпапки "src". Возможно, потребуется изменить путь к расположению, чтобы правильно ссылаться на файл шаблона.

Процесс развертывания занимает несколько минут. Запишите имена службы FHIR и группы ресурсов, которые будут использоваться позже.

Развертывание шаблона: с помощью PowerShell

Запустите код в PowerShell локально, в Visual Studio Code или в Azure Cloud Shell, чтобы развернуть службу FHIR.

Если вы еще не вошли в Azure, используйте команду Подключение-AzAccount для входа. После входа используйте Get-AzContext, чтобы проверить подписку и клиент, которые вы хотите использовать. При необходимости можно изменить подписку и клиент.

Вы можете создать новую группу ресурсов или использовать существующую, пропустив шаг или закомментируя строку, начиная с New-AzResourceGroup.

### 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

Просмотр развернутых ресурсов

Вы можете убедиться, что служба FHIR запущена и запущена, открыв браузер и перейдя к ней https://<yourfhir servic>.azurehealthcareapis.com/metadata. Если оператор возможностей отображается или загружается автоматически, развертывание успешно завершено.

Очистка ресурсов

Если ресурс больше не нужен, выполните приведенный ниже код, чтобы удалить группу ресурсов.

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

Следующие шаги

В этом кратком руководстве описано, как развернуть службу FHIR в службах данных Работоспособности Azure с помощью шаблона ARM. Дополнительные сведения о поддерживаемых функциях службы FHIR см. в статье.

FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .