Поделиться через


Клиентская библиотека Azure Cognitive Services Health Insights Для клинического сопоставления для Python — версия 1.0.0b1

Health Insights — это служба прикладного ИИ Azure, созданная с помощью Azure Cognitive Services Framework, которая использует несколько Cognitive Services, службы API для здравоохранения и другие ресурсы Azure. Модель клинического сопоставления получает данные пациентов и протоколы клинических испытаний, а также предоставляет соответствующие клинические испытания на основе критериев соответствия.

Исходный код | Пакет (PyPI) | Справочная документация по | API Документация по продукту | Образцы

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

Предварительные требования

  • Для использования этого пакета требуется Python 3.7 или более поздней версии.
  • Для использования этого пакета требуется подписка Azure .
  • Существующий экземпляр Cognitive Services Health Insights.

Установка пакета

pip install azure-healthinsights-clinicalmatching

В этой таблице показано отношение между версиями пакета SDK и поддерживаемыми версиями API службы:

Версия пакета SDK Поддерживаемая версия API службы
1.0.0b1 2023-03-01-preview

Аутентификация клиента

Получение конечной точки

Вы можете найти конечную точку для ресурса службы Health Insights с помощью портала Azure или Azure CLI.

# Get the endpoint for the Health Insights service resource
az cognitiveservices account show --name "resource-name" --resource-group "resource-group-name" --query "properties.endpoint"

Получение ключа API

Ключ API можно получить из ресурса службы Health Insights на портале Azure. Кроме того, вы можете использовать приведенный ниже фрагмент кода Azure CLI , чтобы получить ключ API ресурса.

az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>

Создание Объекта ClinicalMatchingClient с учетными данными ключа API

Получив значение для ключа API, его можно передать в виде строки в экземпляр AzureKeyCredential. Используйте ключ в качестве параметра учетных данных для проверки подлинности клиента:

import os
from azure.core.credentials import AzureKeyCredential
from azure.healthinsights.clinicalmatching import ClinicalMatchingClient

KEY = os.environ["HEALTHINSIGHTS_KEY"]
ENDPOINT = os.environ["HEALTHINSIGHTS_ENDPOINT"]

trial_matcher_client = ClinicalMatchingClient(endpoint=ENDPOINT, credential=AzureKeyCredential(KEY))

Операции Long-Running

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

Методы, поддерживающие медицинский анализ, анализ пользовательского текста или множественный анализ, моделироваются как длительные операции. Клиент предоставляет begin_<method-name> метод, возвращающий объект опроса. Вызывающие объекты должны дождаться завершения операции путем вызова result() в объекте опроса, возвращенном методом begin_<method-name> . Примеры фрагментов кода приведены для демонстрации использования длительных операций ниже.

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

Пробная версия Matcher предоставляет пользователю служб два main режимов работы: пациентов и клинических испытаний.

  • В режиме, ориентированном на пациента, модель пробного сопоставителя основывает сопоставление пациента на клиническом состоянии, расположении, приоритетах, критериях соответствия и других критериях, которые могут быть выбраны пользователями пациентов и служб. Модель помогает сузить и приоритизировать набор соответствующих клинических испытаний до меньшего набора испытаний, чтобы начать с, что конкретный пациент, как представляется, имеет право на.
  • На клинических испытаниях, ориентированных, пробный Матчер находит группу пациентов, потенциально имеющих право на клиническое испытание. Пробный matcher сужает пациентов, сначала отфильтровывается по клиническому состоянию и выбранным клиническим наблюдениям, а затем фокусируется на тех пациентах, которые соответствовали базовым критериям, чтобы найти группу пациентов, которые, как представляется, имеют право на участие в испытании.

Примеры

В следующем разделе представлено несколько фрагментов кода, охватывающих некоторые из наиболее распространенных задач службы "Аналитика работоспособности — клиническое сопоставление", в том числе:

Сопоставление пробных версий

Поиск потенциальных подходящих испытаний для пациента.

import os
import datetime
from azure.core.credentials import AzureKeyCredential
from azure.healthinsights.clinicalmatching import ClinicalMatchingClient, models

KEY = os.environ["HEALTHINSIGHTS_KEY"]
ENDPOINT = os.environ["HEALTHINSIGHTS_ENDPOINT"]

# Create a Trial Matcher client
# <client>
trial_matcher_client = ClinicalMatchingClient(endpoint=ENDPOINT,
                                              credential=AzureKeyCredential(KEY))
# </client>

# Create clinical info list
# <clinicalInfo>
clinical_info_list = [models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C0032181",
                                                  name="Platelet count",
                                                  value="250000"),
                      models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C0002965",
                                                  name="Unstable Angina",
                                                  value="true"),
                      models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C1522449",
                                                  name="Radiotherapy",
                                                  value="false"),
                      models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C0242957",
                                                  name="GeneOrProtein-Expression",
                                                  value="Negative;EntityType:GENEORPROTEIN-EXPRESSION"),
                      models.ClinicalCodedElement(system="http://www.nlm.nih.gov/research/umls",
                                                  code="C1300072",
                                                  name="cancer stage",
                                                  value="2")]

# </clinicalInfo>

# Construct Patient
# <PatientConstructor>
patient_info = models.PatientInfo(sex=models.PatientInfoSex.MALE, birth_date=datetime.date(1965, 12, 26),
                                  clinical_info=clinical_info_list)
patient1 = models.PatientRecord(id="patient_id", info=patient_info)
# </PatientConstructor>

# Create registry filter
registry_filters = models.ClinicalTrialRegistryFilter()
# Limit the trial to a specific patient condition ("Non-small cell lung cancer")
registry_filters.conditions = ["non small cell lung cancer (nsclc)"]
# Specify the clinical trial registry source as ClinicalTrials.Gov
registry_filters.sources = [models.ClinicalTrialSource.CLINICALTRIALS_GOV]
# Limit the clinical trial to a certain location, in this case California, USA
registry_filters.facility_locations = [
    models.GeographicLocation(country_or_region="United States", city="Gilbert", state="Arizona")]
# Limit the trial to a specific recruitment status
registry_filters.recruitment_statuses = [models.ClinicalTrialRecruitmentStatus.RECRUITING]

# Construct ClinicalTrial instance and attach the registry filter to it.
clinical_trials = models.ClinicalTrials(registry_filters=[registry_filters])

# Create TrialMatcherRequest
configuration = models.TrialMatcherModelConfiguration(clinical_trials=clinical_trials)
trial_matcher_data = models.TrialMatcherData(patients=[patient1], configuration=configuration)

poller = trial_matcher_client.begin_match_trials(trial_matcher_data)
trial_matcher_result = poller.result()
if trial_matcher_result.status == models.JobStatus.SUCCEEDED:
    tm_results = trial_matcher_result.results
    for patient_result in tm_results.patients:
        print(f"Inferences of Patient {patient_result.id}")
        for tm_inferences in patient_result.inferences:
            print(f"Trial Id {tm_inferences.id}")
            print(f"Type: {str(tm_inferences.type)}  Value: {tm_inferences.value}")
            print(f"Description {tm_inferences.description}")
else:
    tm_errors = trial_matcher_result.errors
    if tm_errors is not None:
        for error in tm_errors:
            print(f"{error.code} : {error.message}")

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

Общие сведения

Клиентская библиотека Health Insights Clinical Matching будет вызывать исключения, определенные в Azure Core.

Ведение журнала

Эта библиотека использует стандартную библиотеку ведения журнала для ведения журнала.

Основные сведения о сеансах HTTP (URL-адреса, заголовки и т. д.) регистрируются на INFO уровне.

Подробное DEBUG ведение журнала на уровне, включая тексты запросов и ответов и неотредактированные заголовки, можно включить на клиенте или для каждой операции с помощью аргумента logging_enable ключевое слово.

См. полную документацию по ведению журнала пакета SDK с примерами здесь.

Дополнительная настройка

Необязательные аргументы ключевое слово можно передавать на уровне клиента и для каждой операции. В справочной документации по azure-core описаны доступные конфигурации для повторных попыток, ведения журнала, транспортных протоколов и многого другого.

Дальнейшие действия

Дополнительная документация

Более подробную документацию по клиническому сопоставлению Azure Health Insights см. в документации по клиническому сопоставлению по docs.microsoft.com.

Участие

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Для получения подробных сведений посетите веб-страницу https://cla.microsoft.com.

При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения: Вопросы и ответы по правилам поведения. С любыми другими вопросами или комментариями обращайтесь по адресу opencode@microsoft.com.