Wdrażanie usługi DICOM za pomocą usługi Azure Data Lake Storage

Wdrażanie usługi DICOM® za pomocą usługi Azure Data Lake Storage umożliwia organizacjom przechowywanie i przetwarzanie danych obrazowania w ustandaryzowany, bezpieczny i skalowalny sposób.

Po zakończeniu wdrażania możesz użyć witryny Azure Portal, aby wyświetlić szczegółowe informacje o usłudze DICOM, w tym adres URL usługi. Adres URL usługi umożliwiający dostęp do usługi DICOM to https://<workspacename-dicomservicename>.dicom.azurehealthcareapis.com. Pamiętaj, aby określić wersję interfejsu API jako część adresu URL podczas wprowadzania żądań. Aby uzyskać więcej informacji, zobacz Wersjonowanie interfejsu API dla usługi DICOM.

Wymagania wstępne

Uwaga / Notatka

Opcja Azure Data Lake Storage jest dostępna tylko dla nowych wystąpień usługi DICOM. Gdy opcja stanie się ogólnie dostępna, planujemy zaoferować ścieżkę migracji dla istniejących wystąpień usługi DICOM.

Wdrażanie usługi DICOM za pomocą usługi Azure Data Lake Storage przy użyciu witryny Azure Portal

  1. Na stronie Grupa zasobów witryny Azure Portal wybierz nazwę obszaru roboczego usługi Azure Health Data Services.

    Zrzut ekranu przedstawiający obszar roboczy usługi Health Data Services w widoku grupy zasobów w witrynie Azure Portal.

  2. Wybierz pozycję Wdróż usługę DICOM.

    Zrzut ekranu przedstawiający przycisk Wdróż usługę DICOM w widoku obszaru roboczego w witrynie Azure Portal.

  3. Wybierz pozycję Dodaj usługę DICOM.

    Zrzut ekranu przedstawiający przycisk Dodaj usługę DICOM w witrynie Azure Portal.

  4. Wprowadź nazwę usługi DICOM.

  5. Wybierz pozycję Data Lake Storage (ustawienie domyślne) dla lokalizacji magazynu.

    Zrzut ekranu przedstawiający opcję lokalizacji magazynu.

  6. Wybierz subskrypcję i grupę zasobów zawierającą konto magazynowe.

  7. Wybierz konto magazynu utworzone w ramach wymagań wstępnych.

  8. Wybierz kontener magazynu utworzony w wymaganiach wstępnych.

  9. Wybierz pozycję Sprawdź i utwórz, aby wdrożyć usługę DICOM.

  10. Gdy system wyświetli zielony znacznik wyboru weryfikacji, wybierz pozycję Utwórz , aby wdrożyć usługę DICOM.

  11. Po zakończeniu procesu wdrażania wybierz pozycję Przejdź do zasobu.

    Zrzut ekranu przedstawiający ukończone wdrożenie usługi DICOM.

    Ekran przeglądu usługi DICOM przedstawia nową usługę i wyświetla listę konta magazynowego.

    Zrzut ekranu przedstawiający przegląd usługi DICOM.

Wdrażanie usługi DICOM za pomocą usługi Data Lake Storage przy użyciu szablonu usługi ARM

Wdrażanie szablonu niestandardowego za pomocą witryny Azure Portal. Następnie użyj przykładowego szablonu usługi ARM, aby wdrożyć usługę DICOM za pomocą usługi Azure Data Lake Storage. Aby uzyskać więcej informacji, zobacz Tworzenie i wdrażanie szablonów usługi ARM przy użyciu witryny Azure Portal.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "String"
    },
    "dicomServiceName": {
      "type": "String"
    },
    "region": {
      "defaultValue": "westus3",
      "type": "String"
    },
    "storageAccountName": {
      "type": "String"
    },
    "storageAccountSku": {
      "defaultValue": "Standard_LRS",
      "type": "String"
    },
    "containerName": {
      "type": "String"
    }
  },
  "variables": {
    "managedIdentityName": "[concat(parameters('workspacename'), '-', parameters('dicomServiceName'))]",
    "StorageBlobDataContributor": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-05-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('region')]",
      "sku": {
        "name": "[parameters('storageAccountSku')]"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot",
        "supportsHttpsTrafficOnly": true,
        "isHnsEnabled": true,
        "minimumTlsVersion": "TLS1_2",
        "allowBlobPublicAccess": false,
        "allowSharedKeyAccess": false,
        "encryption": {
          "keySource": "Microsoft.Storage",
          "requireInfrastructureEncryption": true,
          "services": {
            "blob": {
              "enabled": true
            },
            "file": {
              "enabled": true
            },
            "queue": {
              "enabled": true
            }
          }
        }
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2022-05-01",
      "name": "[format('{0}/default/{1}', parameters('storageAccountName'), parameters('containerName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
      "apiVersion": "2023-01-31",
      "name": "[variables('managedIdentityName')]",
      "location": "[parameters('region')]"
    },
    {
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2021-04-01-preview",
      "name": "[guid(resourceGroup().id, parameters('storageAccountName'), variables('managedIdentityName'))]",
      "location": "[parameters('region')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))]"
      ],
      "properties": {
        "roleDefinitionId": "[variables('StorageBlobDataContributor')]",
        "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('managedIdentityName'))).principalId]",
        "principalType": "ServicePrincipal"
      },
      "scope": "[concat('Microsoft.Storage/storageAccounts', '/', parameters('storageAccountName'))]"
    },
    {
      "type": "Microsoft.HealthcareApis/workspaces",
      "apiVersion": "2023-02-28",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('region')]"
    },
    {
      "type": "Microsoft.HealthcareApis/workspaces/dicomservices",
      "apiVersion": "2023-02-28",
      "name": "[concat(parameters('workspaceName'), '/', parameters('dicomServiceName'))]",
      "location": "[parameters('region')]",
      "dependsOn": [
        "[resourceId('Microsoft.HealthcareApis/workspaces', parameters('workspaceName'))]",
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
      ],
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
          "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName'))]": {}
        }
      },
      "properties": {
        "storageConfiguration": {
          "accountName": "[parameters('storageAccountName')]",
          "containerName": "[parameters('containerName')]"
        }
      }
    }
  ],
  "outputs": {
    "storageAccountResourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
    },
    "containerName": {
      "type": "string",
      "value": "[parameters('containerName')]"
    }
  }
}
  1. Po wyświetleniu monitu wybierz wartości nazwy obszaru roboczego, nazwy usługi DICOM, regionu, nazwy konta magazynu, jednostki SKU konta magazynu i nazwy kontenera.

  2. Wybierz pozycję Przejrzyj + utwórz, aby wdrożyć usługę DICOM.

Troubleshooting

Łączność

Aby otrzymywać alerty dotyczące błędów kondycji i łączności sklepu, zapisz się do alertów Resource Health.

Zależność 424 nie powiodła się

Gdy kod stanu odpowiedzi to 424 Failed Dependency, problem dotyczy zależności konfigurowanej z DICOM-em i może to być magazyn danych w data lake. Treść odpowiedzi wskazuje, która zależność nie powiodła się i zawiera więcej kontekstu dotyczącego błędu. W przypadku niepowodzeń konta magazynu data lake podano kod błędu, który został odebrany podczas próby interakcji z magazynem. Aby uzyskać więcej informacji, zobacz Kody błędów usługi Azure Blob Storage. Należy pamiętać, że kod zazwyczaj wskazuje, że ConditionNotMet plik obiektu blob został przeniesiony, usunięty lub zmodyfikowany bez używania interfejsów API DICOM. Najlepszym sposobem na złagodzenie tej sytuacji jest użycie interfejsu API DICOM do USUNIĘCIA wystąpienia, usunięcie indeksu, a następnie ponowne załadowanie zmodyfikowanego pliku. Umożliwia to dalsze odwołowanie się do pliku i interakcję z nim za pośrednictwem interfejsów API DICOM.

Następne kroki

Otrzymywanie alertów dotyczących kondycji zasobów

Przypisywanie ról dla usługi DICOM

Zapoznaj się z instrukcją zgodności usługi DICOM

Używanie interfejsów API DICOMweb Standard z usługami DICOM

Uwaga / Notatka

DICOM® jest zastrzeżonym znakiem towarowym National Electrical Manufacturers Association dla swoich publikacji norm odnoszących się do cyfrowej komunikacji informacji medycznych.