Avvio rapido: Libreria client di deidentificazione di Integrità di Azure per .NET

Attività iniziali con la libreria client di de-identificazione di Azure Health per .NET per deidentificare i dati sulla salute. Seguire questa procedura per installare il pacchetto e provare il codice di esempio per le attività di base.

Documentazione | Codice sorgente | della libreriaPacchetto (NuGet) | Altri esempi su GitHub

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Creare un account gratuito.
  • Un account di archiviazione di Azure (solo per il flusso di lavoro dell'attività).

Configurazione

Creare un servizio di de-identificazione

Un servizio di de-identificazione ti fornisce un URL di endpoint. Questo URL dell'endpoint può essere usato come API REST o con un SDK.

  1. Installare l' interfaccia della riga di comando di Azure

  2. Creare una risorsa del servizio di de-identificazione

    REGION="<Region>"
    RESOURCE_GROUP_NAME="<ResourceGroupName>"
    DEID_SERVICE_NAME="<NewDeidServiceName>"
    az resource create -g $RESOURCE_GROUP_NAME -n $DEID_SERVICE_NAME --resource-type microsoft.healthdataaiservices/deidservices --is-full-object -p "{\"identity\":{\"type\":\"SystemAssigned\"},\"properties\":{},\"location\":\"$REGION\"}"
    

Assegnare i ruoli RBAC al servizio di deidentificazione

È necessario assegnare un ruolo al servizio di de-identificazione in modo da avere le autorizzazioni necessarie per eseguire le azioni di questa guida rapida.

Poiché usiamo endpoint in tempo reale e di processo, vengono assegnati i ruoli DeID Data Owner.

Per informazioni su come assegnare questo ruolo al servizio di de-identificazione, vedere Gestire l'accesso al servizio di de-identificazione con il controllo degli accessi in base al ruolo di Azure (RBAC) in Azure Health Data Services

Creare un account di archiviazione di Azure

  1. Installare l' interfaccia della riga di comando di Azure

  2. Creare un account di archiviazione di Azure

    STORAGE_ACCOUNT_NAME="<NewStorageAccountName>"
    az storage account create --name $STORAGE_ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --location $REGION
    

Autorizzare il servizio di de-identificazione nell'account di archiviazione di Azure

  • Concedere al servizio di de-identificazione l'accesso all'account di archiviazione

     STORAGE_ACCOUNT_ID=$(az storage account show --name $STORAGE_ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsv)
     DEID_SERVICE_PRINCIPAL_ID=$(az resource show -n $DEID_SERVICE_NAME -g $RESOURCE_GROUP_NAME  --resource-type microsoft.healthdataaiservices/deidservices --query identity.principalId --output tsv)
     az role assignment create --assignee $DEID_SERVICE_PRINCIPAL_ID --role "Storage Blob Data Contributor" --scope $STORAGE_ACCOUNT_ID
    

Installare il pacchetto

La libreria client è disponibile tramite NuGet, come Azure.Health.Deidentification pacchetto.

  1. Installare il pacchetto

    dotnet add package Azure.Health.Deidentification
    
  2. Installare anche il pacchetto Azure Identity se non è già installato.

    dotnet add package Azure.Identity
    

Modello a oggetti

  • DeidentificationClient è responsabile della comunicazione tra l'SDK e l'endpoint del servizio di de-identificazione.
  • DeidentificationContent viene usato per la de-identificazione delle stringhe.
  • DeidentificationJob viene usato per creare processi per deidentificare i documenti in un account di archiviazione di Azure.
  • PhiEntity è l'intervallo e la categoria di una singola entità PHI rilevata tramite un tag OperationType.

Esempi di codice

Creare un client di de-identificazione

Prima di poter creare il client, è necessario trovare l'URL dell'endpoint del servizio di anonimizzazione.

È possibile trovare l'URL dell'endpoint con l'interfaccia della riga di comando di Azure:

az resource show -n $DEID_SERVICE_NAME -g $RESOURCE_GROUP_NAME  --resource-type microsoft.healthdataaiservices/deidservices --query properties.serviceUrl --output tsv

È quindi possibile creare il client usando tale valore.

using Azure.Identity;
using Azure.Health.Deidentification;

string serviceEndpoint = "https://example123.api.deid.azure.com";

DeidentificationClient client = new(
    new Uri(serviceEndpoint),
    new DefaultAzureCredential()
);

De-identificare una stringa

Questa funzione consente di deidentifichire qualsiasi stringa disponibile in memoria.

DeidentificationContent content = new("SSN: 123-04-5678");
DeidentificationResult result = await client.DeidentifyAsync(content);

Contrassegna una stringa

L'assegnazione di tag può essere eseguita nello stesso modo e la de-identificazione avviene modificando il OperationType.

DeidentificationContent content = new("SSN: 123-04-5678");
content.Operation = OperationType.Tag;

DeidentificationResult result = await client.DeidentifyAsync(content);

Creare un processo di deidentificazione

Questa funzione consente di de-identificare tutti i file, filtrati tramite prefisso, all'interno di un account di archiviazione BLOB di Azure.

Per creare il processo, ci serve l'URL dell'endpoint del BLOB di un account di Archiviazione di Azure.

az resource show -n $STORAGE_ACCOUNT_NAME -g $RESOURCE_GROUP_NAME  --resource-type Microsoft.Storage/storageAccounts --query properties.primaryEndpoints.blob --output tsv

Adesso possiamo creare il lavoro. In questo esempio viene folder1/ usato come prefisso. Il processo deidentifica qualsiasi documento che corrisponda a questo prefisso e scrive la versione deidentificata con il prefisso output_files/.

using Azure;

Uri storageAccountContainerUri = new("https://exampleStorageAccount.blob.core.windows.net/containerName");

DeidentificationJob job = new(
    new SourceStorageLocation(storageAccountContainerUri, "folder1/"),
    new TargetStorageLocation(storageAccountContainerUri, "output_files/")
);

job = client.CreateJob(WaitUntil.Started, "my-job-1", job).Value;

Ottenere lo stato di un processo di de-identificazione

Dopo aver creato un'attività, è possibile visualizzare lo stato e altri dettagli dell'attività.

DeidentificationJob job = client.GetJob("my-job-1").Value;

Eseguire il codice

Dopo aver aggiornato il codice nel progetto, è possibile eseguirlo usando:

dotnet run

Pulire le risorse

Eliminare il servizio di de-identificazione

az resource delete -n $DEID_SERVICE_NAME -g $RESOURCE_GROUP_NAME  --resource-type microsoft.healthdataaiservices/deidservices

Eliminare l'account di archiviazione di Azure

az resource show -n $STORAGE_ACCOUNT_NAME -g $RESOURCE_GROUP_NAME  --resource-type Microsoft.Storage/storageAccounts

Eliminare l'assegnazione di ruolo

az role assignment delete --assignee $DEID_SERVICE_PRINCIPAL_ID --role "Storage Blob Data Contributor" --scope $STORAGE_ACCOUNT_ID

Risoluzione dei problemi

Impossibile accedere all'archiviazione di origine o di destinazione

Verificare che le autorizzazioni siano concesse e che l'identità gestita per il servizio di de-identificazione sia configurata correttamente.

Vedere Autorizzare il servizio di de-identificazione nell'account di archiviazione di Azure

Operazione fallita con stato Parzialmente fallito

È possibile utilizzare la GetJobDocuments funzione in DeidentificationClient per visualizzare i messaggi di errore per ogni file.

Vedere l'esempio

Passaggi successivi

Con questo avvio rapido sarà possibile:

  • Come creare un servizio di de-identificazione e assegnare un ruolo in un account di archiviazione.
  • Come creare un client di de-identificazione
  • Come de-identificare le stringhe e creare processi nei documenti all'interno di un account di archiviazione.