Distribuera Azure Health Data Services med hjälp av Azure Bicep
I den här artikeln får du lära dig hur du skapar Azure Health Data Services, inklusive arbetsytor, FHIR-tjänster, DICOM-tjänster och MedTech-tjänsten med hjälp av Azure Bicep. Du kan visa och ladda ned de Bicep-skript som används i den här artikeln i Azure Health Data Services-exempel.
Vad är Azure Bicep
Bicep bygger på en ARM-mall (Azure Resource Manager). Bicep stöder omedelbart alla förhandsversioner och allmänt tillgängliga versioner (GA) för Azure-tjänster, inklusive Azure Health Data Services. Under utvecklingen kan du generera en JSON ARM-mallfil med hjälp av az bicep build
kommandot . Däremot kan du dekompilera JSON-filerna till Bicep med hjälp av az bicep decompile
kommandot . Under distributionen konverterar Bicep CLI en Bicep-fil till en ARM-mall-JSON.
Du kan fortsätta att arbeta med JSON ARM-mallar eller använda Bicep för att utveckla ARM-mallar. Mer information om Bicep finns i Vad är Bicep.
Kommentar
Mallarna och skripten i artikeln testas i Visual Studio Code under den offentliga förhandsversionen. Vissa ändringar kan vara nödvändiga för att anpassa koden så att den körs i din miljö.
Definiera parametrar och variabler
Med Bicep-parametrar och variabler i stället för hårdkodningsnamn och andra värden kan du felsöka och återanvända dina Bicep-mallar.
Först definierar vi parametrar med nyckelordsparam för arbetsyta, FHIR-tjänst, DICOM-tjänst, MedTech-tjänst. Dessutom definierar vi parametrar för Azure-prenumeration och Microsoft Entra-klientorganisation. De används på CLI-kommandoraden med alternativet "--parameters".
Sedan definierar vi variabler för resurser med nyckelordet var. Dessutom definierar vi variabler för egenskaper som utfärdare och målgrupp för FHIR-tjänsten. De anges och används internt i Bicep-mallen och kan användas i kombination med parametrar, Bicep-funktioner och andra variabler. Till skillnad från parametrar används de inte på CLI-kommandoraden.
Det är viktigt att observera att en Bicep-funktion och en eller flera miljöer krävs för att ange inloggnings-URL:en, https://login.microsoftonline.com
. Mer information om Bicep-funktioner finns i Distributionsfunktioner 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'
Skapa en arbetsytemall
Om du vill definiera en resurs använder du nyckelordsresursen. För arbetsyteresursen innehåller de obligatoriska egenskaperna arbetsytans namn och plats. I mallen används platsen för resursgruppen, men du kan ange ett annat värde för platsen. För resursnamnet kan du referera till den definierade parametern eller variabeln.
Mer information om resurs och modul finns i Resursdeklaration i Bicep.
//Create a workspace
resource exampleWorkspace 'Microsoft.HealthcareApis/workspaces@2021-06-01-preview' = {
name: workspaceName
location: resourceGroup().location
}
Använd nyckelordet befintligt om du vill använda eller referera till en befintlig arbetsyta utan att skapa en. Ange resursnamnet för arbetsytan och det befintliga namnet på arbetsytans instans för namnegenskapen. Observera att ett annat namn för den befintliga arbetsyteresursen används i mallen, men det är inte ett krav.
//Use an existing workspace
resource exampleExistingWorkspace 'Microsoft.HealthcareApis/workspaces@2021-06-01-preview' existing = {
name: workspaceName
}
Nu är du redo att distribuera arbetsyteresursen med hjälp av az deployment group create
kommandot . Du kan också distribuera den tillsammans med dess andra resurser, enligt beskrivningen längre fram i den här artikeln.
Skapa en FHIR-tjänstmall
För FHIR-tjänstresursen omfattar de nödvändiga egenskaperna tjänstinstansens namn, plats, typ och hanterade identitet. Dessutom har den ett beroende av arbetsyteresursen. För själva FHIR-tjänsten omfattar de nödvändiga egenskaperna auktoritet och målgrupp, som anges i egenskapselementet.
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
}
}
}
På samma sätt kan du använda eller referera till en befintlig FHIR-tjänst med nyckelordet befintligt.
//Use an existing FHIR service
resource exampleExistingFHIR 'Microsoft.HealthcareApis/workspaces/fhirservices@2021-11-01' existing = {
name: fhirservicename
}
Skapa en DICOM-tjänstmall
För DICOM-tjänstresursen omfattar de nödvändiga egenskaperna tjänstinstansens namn och plats samt beroendet av arbetsytans resurstyp.
//Create DICOM service
resource exampleDICOM 'Microsoft.HealthcareApis/workspaces/dicomservices@2021-11-01' = {
name: dicomservicename
location: resourceGroup().location
dependsOn: [
exampleWorkspace
]
properties: {}
}
På samma sätt kan du använda eller referera till en befintlig DICOM-tjänst med nyckelordet befintligt.
//Use an existing DICOM service
resource exampleExistingDICOM 'Microsoft.HealthcareApis/workspaces/dicomservices@2021-11-01' existing = {
name: dicomservicename
}
Skapa en MedTech-tjänstmall
För MedTech-tjänstresursen omfattar de nödvändiga egenskaperna MedTech-tjänstens namn, plats, hanterade identitet och beroendet av arbetsytan. För Själva MedTech-tjänsten är de obligatoriska egenskaperna Azure Event Hubs-namnrymd, Händelsehubbar, Händelsehubbar-konsumentgrupp och enhetsmappning. Till exempel används mappningen av pulsenheter i mallen.
//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'
}
]
}
}
]
}
}
}
}
På samma sätt kan du använda eller referera till en befintlig MedTech-tjänst med nyckelordet befintligt.
//Use an existing IoT
resource exampleExistingIoT 'Microsoft.HealthcareApis/workspaces/iotconnectors/fhirdestinations@2021-11-01' existing = {
name: iotconnectorname
}
MedTech-tjänsten kräver en underordnad resurs, ett mål och stöder för närvarande endast FHIR-tjänstens mål. För Målresursen för MedTech-tjänsten innehåller de nödvändiga egenskaperna ett namn, en plats och beroendet av MedTech-tjänsten. För FHIR-tjänstens mål innehåller de obligatoriska egenskaperna matchningstypen, som tar värdet Skapa eller Slå upp, FHIR-tjänstens resurs-ID och en FHIR-resurstyp. Till exempel används pulsmappningen för FHIR-observationsresursen i mallen.
//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'
}
}
}
]
}
}
}
}
Distribuera Azures tjänster för hälsodata
Du kan använda az deployment group create
kommandot för att distribuera enskilda Bicep-mallar eller kombinerade mallar, på samma sätt som du distribuerar Azure-resurser med JSON-mallar. Ange resursgruppens namn och inkludera parametrarna på kommandoraden. Med alternativet "--parameters" anger du parametern och värdeparet som "parameter = värde" och separerar parametern och värdeparen med ett blanksteg om fler än en parameter har definierats.
För Azure-prenumerationen och klientorganisationen kan du ange värdena eller använda CLI-kommandon för att hämta dem från den aktuella inloggningssessionen.
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
Observera att det underordnade resursnamnet, till exempel FHIR-tjänsten, innehåller det överordnade resursnamnet och att egenskapen "dependsOn" krävs. Men när den underordnade resursen skapas i den överordnade resursen behöver dess namn inte innehålla det överordnade resursnamnet och egenskapen "dependsOn" krävs inte. Mer information om kapslade resurser finns i Ange namn och typ för underordnade resurser i Bicep.
Felsöka Bicep-mallar
Du kan felsöka Bicep-mallar i Visual Studio Code eller i andra miljöer och felsöka problem baserat på svaret. Du kan också granska aktivitetsloggen för en specifik resurs i resursgruppen vid felsökning.
Dessutom kan du använda utdatavärdet för felsökning eller som en del av distributionssvaret. Du kan till exempel definiera två utdatavärden för att visa värdena för auktoritet och målgrupp för FHIR-tjänsten i svaret. Mer information finns i Utdata i Bicep.
output stringOutput1 string = authority
output stringOutput2 string = audience
Nästa steg
I den här artikeln har du lärt dig hur du skapar Azure Health Data Services, inklusive arbetsytor, FHIR-tjänster, DICOM-tjänster och MedTech-tjänster med Bicep. Du har också lärt dig hur du skapar och felsöker Bicep-mallar. Mer information om Azure Health Data Services finns i
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.