Python 用 Azure Cognitive Services Health Insights の臨床照合クライアント ライブラリ - バージョン 1.0.0b1

Health Insights は、Azure Cognitive Services Framework を使用して構築された Azure Applied AI Service であり、複数の Cognitive Services、Healthcare 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 Portal または 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 キーは、Azure Portal の Health Insights サービス リソースから取得できます。 または、次の Azure CLI スニペットを使用して、リソースの API キーを取得することもできます。

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

API キー資格情報を使用して ClinicalMatchingClient を作成する

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操作

実行時間の長い操作は、操作を開始するためにサービスに送信された最初の要求で構成される操作です。その後、間隔を指定してサービスをポーリングして、操作が完了したか失敗したか、成功したかどうかを判断して結果を取得します。

医療分析、カスタム テキスト分析、または複数の分析をサポートするメソッドは、実行時間の長い操作としてモデル化されます。 クライアントは、poller オブジェクトを begin_<method-name> 返すメソッドを公開します。 呼び出し元は、 メソッドから返された poller オブジェクトを呼び出 result() して、操作が完了するまで待機する begin_<method-name> 必要があります。 実行時間の長い操作の使用例を示すサンプル コード スニペット 用意されています

主要な概念

試用版マッチャーは、患者中心と臨床試験中心の 2 つのメインモードの操作モードをサービスのユーザーに提供します。

  • 患者中心モードでは、試用版マッチャー モデルは、患者やサービスユーザーが優先順位を付けるために選択できる臨床状態、場所、優先順位、適格性基準、およびその他の基準に基づいて患者の照合を行います。 このモデルは、関連する臨床試験のセットを絞り込んで優先順位を付けるのに役立ち、最初に特定の患者が適格と思われる小規模な一連の試験に優先順位を付けます。
  • 臨床試験中心では、試用版マッチャーは、臨床試験の対象となる可能性のある患者のグループを見つけることです。 試用版マッチャーは、患者を絞り込み、最初に臨床状態と選択された臨床観察でフィルター処理し、ベースライン基準を満たした患者に焦点を当てて、試験の対象となる患者のグループを見つけます。

次のセクションでは、次のような、最も一般的な Health Insights - Clinical Matching サービス タスクの一部をカバーするいくつかのコード スニペットを示します。

試用版に一致する

患者の潜在的な適格な試験を見つける。

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 の臨床照合クライアント ライブラリでは、 Azure Core で定義されている例外が発生します。

ログの記録

このライブラリでは、ログ記録に標準 のログ ライブラリが使用されます。

HTTP セッション (URL、ヘッダーなど) に関する基本情報は、レベルで INFO ログに記録されます。

要求/応答本文や未処理ヘッダーなど、詳細なDEBUGレベルのログ記録は、クライアントで有効にすることも、キーワード (keyword)引数を使用してlogging_enable操作ごとに有効にすることもできます。

SDK ログに関する完全なドキュメントと例 については、こちらを参照してください

オプションの構成

省略可能なキーワード (keyword)引数は、クライアントと操作ごとのレベルで渡すことができます。 azure-core リファレンス ドキュメント では、再試行、ログ記録、トランスポート プロトコルなどの使用可能な構成について説明しています。

次のステップ

その他のドキュメント

Azure Health Insights の臨床照合に関するより広範なドキュメントについては、docs.microsoft.com の 臨床照合に関するドキュメント を参照してください。

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、 https://cla.microsoft.com を参照してください。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳細については、「倫理規定の FAQ」をご覧ください。追加の質問やコメントがある場合は opencode@microsoft.com にお問い合わせください。