Клиентская библиотека REST службы Azure Health Data Services для JavaScript версии 1.0.0

Этот пакет содержит клиентскую библиотеку для службы деидентификации в Azure Health Data Services, которая позволяет пользователям помечать, редактировать или заменять медицинские данные, содержащие защищенную медицинскую информацию (PHI).

Используйте клиентскую библиотеку для службы деидентификации, чтобы:

  • Обнаружение PHI в неструктурированном тексте
  • Замена PHI в неструктурированном тексте значениями-заполнителями
  • Замена PHI в неструктурированном тексте реалистичными суррогатными значениями
  • Управление асинхронными заданиями для отмены идентификации документов в службе хранилища Azure

Пожалуйста, в значительной степени полагайтесь на нашу документацию по клиенту REST для использования этой библиотеки.

Используйте клиентскую библиотеку для службы деидентификации, чтобы:

  • Обнаружение PHI в неструктурированном тексте
  • Замена PHI в неструктурированном тексте значениями-заполнителями
  • Замена PHI в неструктурированном тексте реалистичными суррогатными значениями
  • Управление асинхронными заданиями для отмены идентификации документов в службе хранилища Azure

Ключевые ссылки:

Начало работы

Поддерживаемые в настоящее время среды

Предпосылки

Установите пакет @azure-rest/health-deidentification.

Установите библиотеку с помощью npm:

npm install @azure-rest/health-deidentification

Создание и проверка подлинности DeidentificationClient

Вы можете пройти проверку подлинности с помощью идентификатора Microsoft Entra с помощью [библиотеки удостоверений Azure][azure_identity]. Чтобы использовать показанный ниже поставщик [DefaultAzureCredential][defaultazurecredential] или другие поставщики учетных данных, предоставляемые с пакетом Azure SDK, установите пакет:@azure/identity

npm install @azure/identity

После установки можно выбрать тип учетных данных из @azure/identity использования. Например, DefaultAzureCredential можно использовать для проверки подлинности клиента.

Задайте значения идентификатора клиента, идентификатора клиента и секрета клиента приложения AAD в качестве переменных среды: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET.

Для создания экземпляра клиентского объекта потребуется URL службы . URL-адрес службы для конкретного ресурса можно найти на портале Azure или с помощью Azure CLI. Ниже приведен пример установки переменной среды в Bash с помощью Azure CLI:

# Get the service URL for the resource
export DEID_SERVICE_ENDPOINT=$(az deidservice show --name "<resource-name>" --resource-group "<resource-group-name>" --query "properties.serviceUrl")

Создайте клиент с конечной точкой и учетными данными:

import { DefaultAzureCredential } from "@azure/identity";
import DeidentificationClient from "@azure-rest/health-deidentification";

const credential = new DefaultAzureCredential();
const serviceEndpoint = process.env.DEID_SERVICE_ENDPOINT || "https://example.api.deid.azure.com";
const client = DeidentificationClient(serviceEndpoint, credential);

Основные понятия

Операции по обезличиванию:

Получив входной текст, служба деидентификации может выполнить три основные операции:

  • Tag возвращает категорию и расположение в тексте обнаруженных объектов PHI.
  • Redact возвращает текст вывода, в котором обнаруженные объекты PHI заменяются текстом-заполнителем. Например John , заменено на [name].
  • Surrogate возвращает текст вывода, в котором обнаруженные объекты PHI заменяются реалистичными значениями замены. Например, My name is John Smith может стать My name is Tom Jones.

доступные конечные точки;

Существует два способа взаимодействия с сервисом деидентификации. Вы можете отправлять текст напрямую или создавать задания для обезличивания документов в службе хранилища Azure.

Вы можете обезличить текст напрямую с помощью команды DeidentificationClient:

import { DefaultAzureCredential } from "@azure/identity";
import DeidentificationClient, {
  DeidentificationContent,
  isUnexpected,
} from "@azure-rest/health-deidentification";

const credential = new DefaultAzureCredential();
const serviceEndpoint = process.env.DEID_SERVICE_ENDPOINT || "https://example.api.deid.azure.com";
const client = DeidentificationClient(serviceEndpoint, credential);

const content: DeidentificationContent = {
  inputText: "Hello John!",
};

const response = await client.path("/deid").post({ body: content });

if (isUnexpected(response)) {
  throw response.body.error;
}

console.log(response.body.outputText); // Hello, Tom!

Чтобы обезличить документы в службе хранилища Azure, вам потребуется учетная запись хранения с контейнером, для которого службе обезличивания была предоставлена соответствующая роль. Ознакомьтесь с учебным пособием: Настройка службы хранилища Azure для отмены идентификации документов для предварительных требований и параметров конфигурации. Вы можете загрузить файлы в [папка тестовых данных][test_data] в виде больших двоичных объектов, например: https://<storageaccount>.blob.core.windows.net/<container>/example_patient_1/doctor_dictation.txt.

Вы можете создавать задания для обезличивания документов в исходной учетной записи хранения Azure и контейнере с необязательным входным префиксом. Если входной префикс отсутствует, все большие двоичные объекты в контейнере будут обезличены. Большие двоичные объекты службы хранилища Azure могут использоваться / в имени большого двоичного объекта для эмуляции макета папки или каталога. Дополнительные сведения об именовании BLOB-объектов см. в разделе [Именование контейнеров, BLOB-объектов и метаданных][blob_names]. Загруженные вами файлы можно обезличить, указав example_patient_1 в качестве входного префикса:

<container>/
├── example_patient_1/
       └──doctor_dictation.txt
       └──row-2-data.txt
       └──visit-summary.txt

Целевая учетная запись хранения Azure и контейнер, в который будут записываться документы, могут совпадать с исходной учетной записью или другой учетной записью или контейнером. В приведенных ниже примерах исходный и целевой аккаунт и контейнер совпадают. Можно указать префикс вывода, указывающий, куда должны быть записаны выходные документы задания (по умолчанию )._output Каждый документ, обрабатываемый заданием, будет иметь одно и то же относительное имя большого двоичного объекта, при этом входной префикс заменен на выходной:

<container>/
├── example_patient_1/
       └──doctor_dictation.txt
       └──row-2-data.txt
       └──visit-summary.txt
├── _output/
       └──doctor_dictation.txt
       └──row-2-data.txt
       └──visit-summary.txt

Задайте следующие переменные среды, обновив учетную запись хранения и контейнер реальными значениями:

export AZURE_STORAGE_ACCOUNT_LOCATION="https://<storageaccount>.blob.core.windows.net/<container>"
export INPUT_PREFIX="example_patient_1"
export OUTPUT_PREFIX="_output"

Вы можете создавать и просматривать статус задания с помощью клиента:

import { DefaultAzureCredential } from "@azure/identity";
import DeidentificationClient, {
  DeidentificationJob,
  DeidentifyDocumentsDefaultResponse,
  isUnexpected,
  getLongRunningPoller,
} from "@azure-rest/health-deidentification";

const credential = new DefaultAzureCredential();
const serviceEndpoint =
  process.env["DEID_SERVICE_ENDPOINT"] || "https://example.api.deid.azure.com";
const storageLocation = `https://${process.env["STORAGE_ACCOUNT_NAME"]}.blob.core.windows.net/${process.env["STORAGE_CONTAINER_NAME"]}`;
const inputPrefix = "example_patient_1";
const outputPrefix = process.env["OUTPUT_PREFIX"] || "_output";

const client = DeidentificationClient(serviceEndpoint, credential);
const jobName = "sample-job-" + new Date().getTime().toString().slice(-8);

const job: DeidentificationJob = {
  operation: "Surrogate",
  sourceLocation: { location: storageLocation, prefix: inputPrefix },
  targetLocation: { location: storageLocation, prefix: outputPrefix },
};
const response = (await client
  .path("/jobs/{name}", jobName)
  .put({ body: job })) as DeidentifyDocumentsDefaultResponse;

if (isUnexpected(response)) {
  throw response.body.error;
}

const poller = await getLongRunningPoller(client, response);
const finalOutput = await poller.pollUntilDone();
console.log(finalOutput.body);

Дальнейшие шаги

Нашли ошибку или оставили отзыв? Сообщите о проблеме с меткой Деидентификация здоровья .

Устранение неполадок

  • Не удается получить доступ к исходному или целевому хранилищу
    • Убедитесь, что вы создаете службу deid с управляемой идентификацией, назначаемой системой
    • Убедитесь, что ваша учетная запись хранения предоставила разрешения для этого управляемого удостоверения

Лесозаготовка

Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL значение info. В альтернативном порядке, логирование можно включить во время выполнения, вызвав setLogLevel в @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Дополнительные инструкции по включению журналов см. в документации по пакету @azure/loger.