コンテナーを使うと、独自のインフラストラクチャで Text Analytics for health API をホストできます。 Text Analytics for health をリモートで呼び出すことでは満たせないセキュリティまたはデータ ガバナンスの要件がある場合は、コンテナーが適している可能性があります。
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
前提条件
Text Analytics for health コンテナーを使用する前に、次の前提条件を満たす必要があります。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
-
ホスト コンピューターに Docker がインストールされていること。 コンテナーが Azure に接続して課金データを送信できるように、Docker を構成する必要があります。
- Windows では、Linux コンテナーをサポートするように Docker を構成することも必要です。
- Docker の概念に関する基本的な知識が必要です。
- Free (F0) または Standard (S) Create a Language resource価格レベルの言語リソース。
必須パラメーターの収集
すべての Azure AI コンテナーに対して 3 つの主要なパラメーターが必須です。 Microsoft ソフトウェア ライセンス条項について、値 accept が示される必要があります。 エンドポイント URI と API キーも必要です。
エンドポイント URI
{ENDPOINT_URI} の値は、対応する Azure AI サービス リソースの Azure portal の [概要] ページで入手できます。
[概要] ページに移動し、エンドポイントの上にマウスを合わせると、[クリップボードにコピー] アイコンが表示されます。 必要に応じて、エンドポイントをコピーして使用します。
[キー]
{API_KEY} の値はコンテナーを起動するために使用され、Azure portal で、対応する Azure AI サービス リソースの [キー] ページで入手できます。
[キー] ページに移動し、[クリップボードにコピー] アイコンを選択します。
重要
これらのサブスクリプション キーは、Azure AI サービス API にアクセスするために使用されます。 キーを共有しないでください。 安全に保管してください。 たとえば、Azure Key Vault を使用します。 また、これらのキーを定期的に再生成することをお勧めします。 API 呼び出しを行うために必要なキーは 1 つだけです。 最初のキーを再生成するときに、2 番目のキーを使用してサービスに継続的にアクセスすることができます。
ホスト コンピューターの要件と推奨事項
ホストとは、Docker コンテナーを実行する x64 ベースのコンピューターのことです。 お客様のオンプレミス上のコンピューターを使用できるほか、次のような Azure 内の Docker ホスティング サービスを使用することもできます。
- Azure Kubernetes Service。
- Azure Container Instances。
- Azure Stack にデプロイされた Kubernetes クラスター。 詳しくは、「Kubernetes を Azure Stack にデプロイする」をご覧ください。
次の表では、Text Analytics for health コンテナーの最小および推奨仕様を説明します。 各 CPU コアは、少なくとも 2.6 ギガヘルツ (GHz) 以上である必要があります。 許容される 1 秒あたりのトランザクション数 (TPS) も示されています。
| 最小ホスト仕様 | 推奨されるホスト仕様 | 最小 TPS | 最大 TPS | |
|---|---|---|---|---|
| 1 ドキュメント/要求 | 4 コア、12 GB メモリ | 6 コア、12 GB メモリ | 15 | 30 |
| 10 ドキュメント/要求 | 6 コア、16 GB メモリ | 8 コア、20 GB メモリ | 15 | 30 |
CPU コアとメモリは、--cpus コマンドの一部として使用される --memory と docker run の設定に対応します。
docker pull によるコンテナー イメージの取得
医療向け Text Analytics コンテナー イメージは mcr.microsoft.com コンテナー レジストリ シンジケートにあります。
azure-cognitive-services/textanalytics/ リポジトリ内にあり、healthcare という名前が付いています。 完全修飾コンテナー イメージ名は mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare です
最新バージョンのコンテナーを使用するには、latest タグを使用できます。 また、MCR でタグの完全な一覧を確認することもできます。
docker pull コマンドを使用して、Microsoft パブリック コンテナー レジストリからこのコンテナー イメージをダウンロードします。
Microsoft Container Registry で注目のタグを見つけることができます
docker pull mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:<tag-name>
ヒント
docker images コマンドを使用して、ダウンロードしたコンテナー イメージを一覧表示できます。 たとえば、次のコマンドは、ダウンロードした各コンテナー イメージの ID、リポジトリ、およびタグが表として書式設定されて表示されます。
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID REPOSITORY TAG
<image-id> <repository-path/name> <tag-name>
docker run によるコンテナーの実行
コンテナーがホスト コンピューター上にある場合は、 docker run コマンドを使用してコンテナーを実行します。 コンテナーは停止するまで実行し続けます。
重要
- 以降のセクションの Docker コマンドには、行連結文字としてバック スラッシュ (
\) が使用されています。 ホスト オペレーティング システムの要件に基づいてバック スラッシュを交換または削除します。- コンテナーを実行するには、
Eula、Billing、およびApiKeyのオプションを指定する必要があります。それ以外の場合、コンテナーは起動しません。 詳細については、「課金」を参照してください。- 責任ある AI (RAI) 確認も
acceptの値で存在する必要があります。- 感情分析コンテナーと言語検出コンテナーは API の v3 を使用し、一般公開されています。 v2 の API が使用されているキー フレーズ抽出のコンテナーは、プレビュー段階です。
Text Analytics for Health コンテナーをインストールして実行するには、複数の方法があります。
- Azure portal を使用して言語リソースを作成し、Docker を使用してコンテナーを取得します。
- Docker で Azure 仮想マシン (VM) を使用し、コンテナーを実行します。
- 次の PowerShell と Azure CLI のスクリプトを使用して、リソースのデプロイとコンテナーの構成を自動化します。
Text Analytics for Health コンテナーを使用する場合、API の要求と応答に含まれるデータは Microsoft に表示されず、データに適用されるモデルのトレーニングには使用されません。
コンテナーをローカルで実行する
コンテナー イメージをダウンロードした後に独自の環境でコンテナーを実行するには、次の docker run コマンドを実行します。 プレースホルダーを独自の値に置き換えます。
| プレースホルダー | 値 | 形式または例 |
|---|---|---|
| {API_KEY} | 言語リソースのキー。 それは、Azure portal で、お使いのリソースの [キーとエンドポイント] ページで見つけることができます。 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| {ENDPOINT_URI} | API にアクセスするためのエンドポイント。 それは、Azure portal で、お使いのリソースの [キーとエンドポイント] ページで見つけることができます。 | https://<your-custom-subdomain>.cognitiveservices.azure.com |
docker run --rm -it -p 5000:5000 --cpus 6 --memory 12g \
mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:<tag-name> \
Eula=accept \
rai_terms=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}
このコマンドは、次の操作を行います。
- コンテナー イメージの Text Analytics for health コンテナーを実行します
- 6 つの CPU コアと 12 ギガバイト (GB) のメモリを割り当てます
- ポート 5000
TCP公開し、コンテナーに擬似 TTY を割り当てます - エンド ユーザー使用許諾契約 (EULA) と責任ある AI (RAI) の条項に同意します
- コンテナーの終了後にそれを自動的に削除します。 ホスト コンピューター上のコンテナー イメージは引き続き利用できます。
出力を視覚化するためのデモ UI
コンテナーには、REST ベースのクエリ予測エンドポイント API が用意されています。 コンテナーのエンドポイントに /demo を追加することでアクセスできる視覚化ツールもコンテナーに用意されています。 次に例を示します。
http://<serverURL>:5000/demo
次の cURL 要求の例を使用して、 serverURL 変数を適切な値に置き換えて、デプロイしたコンテナーにクエリを送信します。
curl -X POST 'http://<serverURL>:5000/text/analytics/v3.1/entities/health' --header 'Content-Type: application/json' --header 'accept: application/json' --data-binary @example.json
Azure Web App for Containers を使用してコンテナーをインストールする
Azure Web App for Containers は、クラウドでコンテナーを実行する専用の Azure リソースです。 自動スケーリング、Docker コンテナーと Docker Compose のサポート、HTTPS サポートなどの組み込み機能が提供されます。
Note
Azure Web App を使用すると、次の形式でドメインが自動的に取得されます。 <appservice_name>.azurewebsites.net
Azure CLI を使用してこの PowerShell スクリプトを実行し、HTTPS 経由でサブスクリプションとコンテナー イメージを使用して、Web App for Containers を作成します。 スクリプトが完了するまで (約 25 から 30 分) 待ってから、最初の要求を送信します。
$subscription_name = "" # THe name of the subscription you want you resource to be created on.
$resource_group_name = "" # The name of the resource group you want the AppServicePlan
# and AppService to be attached to.
$resources_location = "" # This is the ___location you wish the AppServicePlan to be deployed to.
# You can use the "az account list-locations -o table" command to
# get the list of available locations and ___location code names.
$appservice_plan_name = "" # This is the AppServicePlan name you wish to have.
$appservice_name = "" # This is the AppService resource name you wish to have.
$TEXT_ANALYTICS_RESOURCE_API_KEY = "" # This should be taken from the Language resource.
$TEXT_ANALYTICS_RESOURCE_API_ENDPOINT = "" # This should be taken from the Language resource.
$DOCKER_IMAGE_NAME = "mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:latest"
az login
az account set -s $subscription_name
az appservice plan create -n $appservice_plan_name -g $resource_group_name --is-linux -l $resources_location --sku P3V2
az webapp create -g $resource_group_name -p $appservice_plan_name -n $appservice_name -i $DOCKER_IMAGE_NAME
az webapp config appsettings set -g $resource_group_name -n $appservice_name --settings Eula=accept rai_terms=accept Billing=$TEXT_ANALYTICS_RESOURCE_API_ENDPOINT ApiKey=$TEXT_ANALYTICS_RESOURCE_API_KEY
# Once deployment complete, the resource should be available at: https://<appservice_name>.azurewebsites.net
Azure コンテナー インスタンスを使用してコンテナーをインストールする
Azure コンテナー インスタンス (ACI) を使用して、デプロイを容易にすることもできます。 ACI は、サーバーレスなマネージド Azure 環境内で Docker コンテナーをオンデマンドで実行できるリソースです。
Azure portal を使用して ACI リソースをデプロイする手順については、Azure Container Instances の使用方法に関する記事を参照してください。 Azure CLI を使用して次の PowerShell スクリプトを使用することもできます。このスクリプトは、コンテナー イメージを使用してサブスクリプションに ACI を作成します。 スクリプトが完了するまで (約 25 から 30 分) 待ってから、最初の要求を送信します。 ACI リソースあたりの CPU の最大数に制限があるため、要求ごとに 5 つ以上の大きなドキュメント (それぞれ約 5,000 文字) を送信する場合は、このオプションを選択しないでください。 可用性の情報については、ACI リージョンのサポートに関する記事を参照してください。
Note
Azure Container Instances には、組み込みドメインに対する HTTPS のサポートは含まれません。 HTTPS が必要な場合は、証明書の作成やドメインの登録など、手動で構成する必要があります。 手順については、次の NGINX の例を参照してください。
$subscription_name = "" # The name of the subscription you want you resource to be created on.
$resource_group_name = "" # The name of the resource group you want the AppServicePlan
# and AppService to be attached to.
$resources_location = "" # This is the ___location you wish the web app to be deployed to.
# You can use the "az account list-locations -o table" command to
# Get the list of available locations and ___location code names.
$azure_container_instance_name = "" # This is the AzureContainerInstance name you wish to have.
$TEXT_ANALYTICS_RESOURCE_API_KEY = "" # This should be taken from the Language resource.
$TEXT_ANALYTICS_RESOURCE_API_ENDPOINT = "" # This should be taken from the Language resource.
$DNS_LABEL = "" # This is the DNS label name you wish your ACI will have
$DOCKER_IMAGE_NAME = "mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:latest"
az login
az account set -s $subscription_name
az container create --resource-group $resource_group_name --name $azure_container_instance_name --image $DOCKER_IMAGE_NAME --cpu 4 --memory 12 --port 5000 --dns-name-label $DNS_LABEL --environment-variables Eula=accept rai_terms=accept Billing=$TEXT_ANALYTICS_RESOURCE_API_ENDPOINT ApiKey=$TEXT_ANALYTICS_RESOURCE_API_KEY
# Once deployment complete, the resource should be available at: http://<unique_dns_label>.<resource_group_region>.azurecontainer.io:5000
ACI の接続をセキュリティで保護する
既定では、コンテナー API を使用した ACI ではセキュリティは提供されません。コンテナーは通常、ポッド内で実行され、ネットワーク ブリッジによってポッドが外部アクセスから分離されます。 ただし、コンテナー エンドポイントをプライベートに保ち、前面コンポーネントを使用してコンテナーを変更することはできます。 次の例では、NGINX をイングレス ゲートウェイとして使用し、HTTPS/SSL およびクライアント証明書認証をサポートします。
Note
NGINX は、オープンソースの高パフォーマンス HTTP サーバーおよびプロキシです。 NGINX コンテナーを使用して、1 つのコンテナーの TLS 接続を終了できます。 より複雑な NGINX イングレス ベースの TLS 終端ソリューションも可能です。
NGINX をイングレス ゲートウェイとして設定する
NGINX では、構成ファイルを使用して、実行時に機能を有効にします。 別のサービスの TLS 終了を有効にするには、SSL 証明書を指定して TLS 接続を終了し、サービスのアドレスを指定 proxy_pass 必要があります。 サンプルが提供されています。
Note
ssl_certificate では、NGINX コンテナーのローカル ファイル システム内でパスが指定されている必要があります。
proxy_pass に指定するアドレスは、NGINX コンテナーのネットワーク内から使用できる必要があります。
NGINX コンテナーは、_.conf_の下にマウントされている/etc/nginx/conf.d/内のすべてのファイルを HTTP 構成パスに読み込みます。
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
# replace with .crt and .key paths
ssl_certificate /cert/Local.crt;
ssl_certificate_key /cert/Local.key;
___location / {
proxy_pass http://cognitive-service:5000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
Compose ファイルの例
次の例は、 Docker Compose ファイルを作成して NGINX コンテナーと正常性コンテナーをデプロイする方法を示しています。
version: "3.7"
services:
cognitive-service:
image: {IMAGE_ID}
ports:
- 5000:5000
environment:
- eula=accept
- billing={ENDPOINT_URI}
- apikey={API_KEY}
volumes:
# replace with path to logs folder
- <path-to-logs-folder>:/output
nginx:
image: nginx
ports:
- 443:443
volumes:
# replace with paths for certs and conf folders
- <path-to-certs-folder>:/cert
- <path-to-conf-folder>:/etc/nginx/conf.d/
この Docker Compose ファイルを開始するには、ファイルのルート レベルでコンソールから次のコマンドを実行します。
docker-compose up
詳細については、NGINX SSL 終端に関する NGINX のドキュメントを参照してください。
同じホスト上で複数のコンテナーを実行する
公開されているポートを使って複数のコンテナーを実行する予定の場合、必ず各コンテナーを別の公開されているポートで実行してください。 たとえば、最初のコンテナーをポート 5000 上で、2 番目のコンテナーを 5001 上で実行します。
このコンテナーと、別の Azure AI サービス コンテナーを HOST 上で一緒に実行することができます。 同じ Azure AI サービス コンテナーの複数のコンテナーを実行することもできます。
コンテナーの予測エンドポイントに対するクエリの実行
コンテナーには、REST ベースのクエリ予測エンドポイント API が用意されています。
コンテナーの API のホストとしては http://localhost:5000 を使用します。
コンテナーが実行されていることを検証する
コンテナーが実行されていることを検証する方法は複数あります。 問題になっているコンテナーの "外部 IP" アドレスと公開ポートを特定し、任意の Web ブラウザーを開きます。 次の各種の要求 URL を使用して、コンテナーが実行中であることを確認します。 ここに示す要求例の URL は http://localhost:5000 ですが、実際のコンテナーは異なる可能性があります。 使用するコンテナーの外部 IP アドレスと公開ポートを基にしてください。
| 要求 URL | 目的 |
|---|---|
http://localhost:5000/ |
コンテナーには、ホーム ページが用意されています。 |
http://localhost:5000/ready |
GET で要求することで、この URL により、コンテナーがモデルに対するクエリを受け取る準備ができていることを確認できます。 この要求は Kubernetes の liveness probe と readiness probe に対して使用できます。 |
http://localhost:5000/status |
これも GET で要求することで、この URL により、コンテナーを起動するために使用された API キーが有効であるかどうかを、エンドポイント クエリを発生させずに確認できます。 この要求は Kubernetes の liveness probe と readiness probe に対して使用できます。 |
http://localhost:5000/swagger |
コンテナーには、エンドポイントの完全なドキュメント一式と、[Try it out]\(試してみる\) の機能が用意されています。 この機能を使用すると、コードを一切記述することなく、お客様の設定を Web ベースの HTML フォームに入力したりクエリを実行したりできます。 クエリから戻った後、HTTP ヘッダーと HTTP 本文の必要な形式を示すサンプル CURL コマンドが得られます。 |
コンテナーへの API 要求を作成する
Visual Studio Code REST Client 拡張機能または次の cURL 要求の例を使用して、デプロイしたコンテナーにクエリを送信し、serverURL変数を適切な値に置き換えることができます。 コンテナーへの URL での API のバージョンは、ホストされた API とは異なることに注意してください。
Note
高速ヘルスケア相互運用性リソース (FHIR) 機能は最新のコンテナーで使用でき、新しい言語 REST API を介して公開されます。
curl -i -X POST 'http://<serverURL>:5000/language/analyze-text/jobs?api-version=2022-04-01-preview' --header 'Content-Type: application/json' --header --data-binary @example.json
次の JSON は、Language 要求の POST 本文に添付されている JSON ファイルの例です。
example.json
{
"analysisInput": {
"documents": [
{
"text": "The doctor prescried 200mg Ibuprofen.",
"language": "en",
"id": "1"
}
]
},
"tasks": [
{
"taskName": "analyze 1",
"kind": "Healthcare",
"parameters": {
"fhirVersion": "4.0.1"
}
}
]
}
コンテナーの応答本文
次の JSON は、コンテナー化された同期呼び出しからの Language 応答本文の例です。
{
"jobId": "{JOB-ID}",
"lastUpdateDateTime": "2022-04-18T15:50:16Z",
"createdDateTime": "2022-04-18T15:50:14Z",
"expirationDateTime": "2022-04-19T15:50:14Z",
"status": "succeeded",
"errors": [],
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "HealthcareLROResults",
"taskName": "analyze 1",
"lastUpdateDateTime": "2022-04-18T15:50:16.7046515Z",
"status": "succeeded",
"results": {
"documents": [
{
"id": "1",
"entities": [
{
"offset": 4,
"length": 6,
"text": "doctor",
"category": "HealthcareProfession",
"confidenceScore": 0.76
},
{
"offset": 21,
"length": 5,
"text": "200mg",
"category": "Dosage",
"confidenceScore": 0.99
},
{
"offset": 27,
"length": 9,
"text": "Ibuprofen",
"category": "MedicationName",
"confidenceScore": 1.0,
"name": "ibuprofen",
"links": [
{ "dataSource": "UMLS", "id": "C0020740" },
{ "dataSource": "AOD", "id": "0000019879" },
{ "dataSource": "ATC", "id": "M01AE01" },
{ "dataSource": "CCPSS", "id": "0046165" },
{ "dataSource": "CHV", "id": "0000006519" },
{ "dataSource": "CSP", "id": "2270-2077" },
{ "dataSource": "DRUGBANK", "id": "DB01050" },
{ "dataSource": "GS", "id": "1611" },
{ "dataSource": "LCH_NW", "id": "sh97005926" },
{ "dataSource": "LNC", "id": "LP16165-0" },
{ "dataSource": "MEDCIN", "id": "40458" },
{ "dataSource": "MMSL", "id": "d00015" },
{ "dataSource": "MSH", "id": "D007052" },
{ "dataSource": "MTHSPL", "id": "WK2XYI10QM" },
{ "dataSource": "NCI", "id": "C561" },
{ "dataSource": "NCI_CTRP", "id": "C561" },
{ "dataSource": "NCI_DCP", "id": "00803" },
{ "dataSource": "NCI_DTP", "id": "NSC0256857" },
{ "dataSource": "NCI_FDA", "id": "WK2XYI10QM" },
{ "dataSource": "NCI_NCI-GLOSS", "id": "CDR0000613511" },
{ "dataSource": "NDDF", "id": "002377" },
{ "dataSource": "PDQ", "id": "CDR0000040475" },
{ "dataSource": "RCD", "id": "x02MO" },
{ "dataSource": "RXNORM", "id": "5640" },
{ "dataSource": "SNM", "id": "E-7772" },
{ "dataSource": "SNMI", "id": "C-603C0" },
{ "dataSource": "SNOMEDCT_US", "id": "387207008" },
{ "dataSource": "USP", "id": "m39860" },
{ "dataSource": "USPMG", "id": "MTHU000060" },
{ "dataSource": "VANDF", "id": "4017840" }
]
}
],
"relations": [
{
"relationType": "DosageOfMedication",
"entities": [
{
"ref": "#/results/documents/0/entities/1",
"role": "Dosage"
},
{
"ref": "#/results/documents/0/entities/2",
"role": "Medication"
}
]
}
],
"warnings": [],
"fhirBundle": {
"resourceType": "Bundle",
"id": "bae9d4e0-191e-48e6-9c24-c1ff6097c439",
"meta": {
"profile": [
"http://hl7.org/fhir/4.0.1/StructureDefinition/Bundle"
]
},
"identifier": {
"system": "urn:ietf:rfc:3986",
"value": "urn:uuid:bae9d4e0-191e-48e6-9c24-c1ff6097c439"
},
"type": "document",
"entry": [
{
"fullUrl": "Composition/9044c2cc-dcec-4b9d-b005-bfa8be978aa8",
"resource": {
"resourceType": "Composition",
"id": "9044c2cc-dcec-4b9d-b005-bfa8be978aa8",
"status": "final",
"type": {
"coding": [
{
"system": "http://loinc.org",
"code": "11526-1",
"display": "Pathology study"
}
],
"text": "Pathology study"
},
"subject": {
"reference": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
"type": "Patient"
},
"encounter": {
"reference": "Encounter/6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
"type": "Encounter",
"display": "unknown"
},
"date": "2022-04-18",
"author": [
{
"reference": "Practitioner/fb5da4d8-e0f0-4434-8d29-4419b065c4d7",
"type": "Practitioner",
"display": "Unknown"
}
],
"title": "Pathology study",
"section": [
{
"title": "General",
"code": {
"coding": [
{
"system": "",
"display": "Unrecognized Section"
}
],
"text": "General"
},
"text": {
"div": "<div>\r\n\t\t\t\t\t\t\t<h1>General</h1>\r\n\t\t\t\t\t\t\t<p>The doctor prescried 200mg Ibuprofen.</p>\r\n\t\t\t\t\t</div>"
},
"entry": [
{
"reference": "List/db388912-b5fb-4073-a74c-2751fd3374dd",
"type": "List",
"display": "General"
}
]
}
]
}
},
{
"fullUrl": "Practitioner/fb5da4d8-e0f0-4434-8d29-4419b065c4d7",
"resource": {
"resourceType": "Practitioner",
"id": "fb5da4d8-e0f0-4434-8d29-4419b065c4d7",
"extension": [
{
"extension": [
{ "url": "offset", "valueInteger": -1 },
{ "url": "length", "valueInteger": 7 }
],
"url": "http://hl7.org/fhir/StructureDefinition/derivation-reference"
}
],
"name": [{ "text": "Unknown", "family": "Unknown" }]
}
},
{
"fullUrl": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
"resource": {
"resourceType": "Patient",
"id": "5c554347-4290-4b05-83ac-6637ff3bfb40",
"gender": "unknown"
}
},
{
"fullUrl": "Encounter/6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
"resource": {
"resourceType": "Encounter",
"id": "6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
"meta": {
"profile": [
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter"
]
},
"status": "finished",
"class": {
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"display": "unknown"
},
"subject": {
"reference": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
"type": "Patient"
}
}
},
{
"fullUrl": "MedicationStatement/24e860ce-2fdc-4745-aa9e-7d30bb487c4e",
"resource": {
"resourceType": "MedicationStatement",
"id": "24e860ce-2fdc-4745-aa9e-7d30bb487c4e",
"extension": [
{
"extension": [
{ "url": "offset", "valueInteger": 27 },
{ "url": "length", "valueInteger": 9 }
],
"url": "http://hl7.org/fhir/StructureDefinition/derivation-reference"
}
],
"status": "active",
"medicationCodeableConcept": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls",
"code": "C0020740",
"display": "Ibuprofen"
},
{
"system": "http://www.nlm.nih.gov/research/umls/aod",
"code": "0000019879"
},
{
"system": "http://www.whocc.no/atc",
"code": "M01AE01"
},
{
"system": "http://www.nlm.nih.gov/research/umls/ccpss",
"code": "0046165"
},
{
"system": "http://www.nlm.nih.gov/research/umls/chv",
"code": "0000006519"
},
{
"system": "http://www.nlm.nih.gov/research/umls/csp",
"code": "2270-2077"
},
{
"system": "http://www.nlm.nih.gov/research/umls/drugbank",
"code": "DB01050"
},
{
"system": "http://www.nlm.nih.gov/research/umls/gs",
"code": "1611"
},
{
"system": "http://www.nlm.nih.gov/research/umls/lch_nw",
"code": "sh97005926"
},
{ "system": "http://loinc.org", "code": "LP16165-0" },
{
"system": "http://www.nlm.nih.gov/research/umls/medcin",
"code": "40458"
},
{
"system": "http://www.nlm.nih.gov/research/umls/mmsl",
"code": "d00015"
},
{
"system": "http://www.nlm.nih.gov/research/umls/msh",
"code": "D007052"
},
{
"system": "http://www.nlm.nih.gov/research/umls/mthspl",
"code": "WK2XYI10QM"
},
{
"system": "http://ncimeta.nci.nih.gov",
"code": "C561"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_ctrp",
"code": "C561"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_dcp",
"code": "00803"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_dtp",
"code": "NSC0256857"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_fda",
"code": "WK2XYI10QM"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_nci-gloss",
"code": "CDR0000613511"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nddf",
"code": "002377"
},
{
"system": "http://www.nlm.nih.gov/research/umls/pdq",
"code": "CDR0000040475"
},
{
"system": "http://www.nlm.nih.gov/research/umls/rcd",
"code": "x02MO"
},
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "5640"
},
{
"system": "http://snomed.info/sct",
"code": "E-7772"
},
{
"system": "http://snomed.info/sct/900000000000207008",
"code": "C-603C0"
},
{
"system": "http://snomed.info/sct/731000124108",
"code": "387207008"
},
{
"system": "http://www.nlm.nih.gov/research/umls/usp",
"code": "m39860"
},
{
"system": "http://www.nlm.nih.gov/research/umls/uspmg",
"code": "MTHU000060"
},
{
"system": "http://hl7.org/fhir/ndfrt",
"code": "4017840"
}
],
"text": "Ibuprofen"
},
"subject": {
"reference": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
"type": "Patient"
},
"context": {
"reference": "Encounter/6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
"type": "Encounter",
"display": "unknown"
},
"dosage": [
{
"text": "200mg",
"doseAndRate": [{ "doseQuantity": { "value": 200 } }]
}
]
}
},
{
"fullUrl": "List/db388912-b5fb-4073-a74c-2751fd3374dd",
"resource": {
"resourceType": "List",
"id": "db388912-b5fb-4073-a74c-2751fd3374dd",
"status": "current",
"mode": "snapshot",
"title": "General",
"subject": {
"reference": "Patient/5c554347-4290-4b05-83ac-6637ff3bfb40",
"type": "Patient"
},
"encounter": {
"reference": "Encounter/6fe12f5b-e35c-4c92-a492-96feda5a1a3b",
"type": "Encounter",
"display": "unknown"
},
"entry": [
{
"item": {
"reference": "MedicationStatement/24e860ce-2fdc-4745-aa9e-7d30bb487c4e",
"type": "MedicationStatement",
"display": "Ibuprofen"
}
}
]
}
}
]
}
}
],
"errors": [],
"modelVersion": "2022-03-01"
}
}
]
}
}
クライアント ライブラリのサポートを使用してコンテナーを実行する
コンテナー バージョン 3.0.017010001-onprem-amd64 以降 (または latest コンテナーを使用している場合)、クライアント ライブラリを使用して Text Analytics for health コンテナーを実行できます。 これを行うには、次のパラメーターを docker run コマンドに追加します。
enablelro=true
その後、クライアント オブジェクトを認証するときに、コンテナーが実行されているエンドポイントを使用します。
http://localhost:5000
たとえば、C# を使用している場合は、次のコードを使用します。
var client = new TextAnalyticsClient("http://localhost:5000", "your-text-analytics-key");
コンテナーの停止
コンテナーをシャットダウンするには、コンテナーが実行されているコマンドライン環境で、Ctrl + C キーを押します。
トラブルシューティング
出力 マウント とログ記録を有効にしてコンテナーを実行すると、コンテナーによってログ ファイルが生成されます。 これらのログ ファイルは、コンテナーの起動中または実行中に発生する可能性がある問題のトラブルシューティングに役立ちます。
ヒント
トラブルシューティング情報とガイダンスの詳細については、Azure AI コンテナーのよくあるご質問 (FAQ) に関するページを参照してください。
課金
Text Analytics for health コンテナーは、Azure アカウントの "言語" リソースを使用して、Azure に課金情報を送信します。
コンテナーへのクエリは、ApiKey パラメーターに使用される Azure リソースの価格レベルで課金 されます。
Azure AI サービス コンテナーは、計測または課金エンドポイントに接続していないと、実行のライセンスが許可されません。 お客様は、コンテナーが常に課金エンドポイントに課金情報を伝えられるようにする必要があります。 Azure AI サービス コンテナーによって、お客様のデータ (解析対象の画像やテキストなど) が Microsoft に送信されることはありません。
Azure に接続する
コンテナーには、実行する課金引数の値が必要です。 これらの値により、コンテナーは課金エンドポイントに接続することができます。 コンテナーから、約 10 ~ 15 分ごとに使用状況が報告されます。 許可された時間枠内でコンテナーが Azure に接続しなかった場合、コンテナーは引き続き実行されますが、課金エンドポイントが復元されるまでクエリには対応しません。 接続は、10 ~15 分の同じ時間間隔で、10 回試行されます。 10 回以内に課金エンドポイントに接続できなかった場合、コンテナーによる要求の処理は停止されます。 課金のために Microsoft に送信される情報の例については、Azure AI サービス コンテナーのよくあるご質問に関するページを参照してください。
課金引数
docker run コマンドは、次の 3 つのオプションすべてに有効な値が指定された場合にコンテナーを起動します。
| オプション | 説明 |
|---|---|
ApiKey |
課金情報を追跡するために使用される Azure AI サービス リソースの API キー。 このオプションの値には、 Billing に指定されたプロビジョニング済みのリソースの API キーが設定されている必要があります。 |
Billing |
課金情報を追跡するために使用される Azure AI サービス リソースのエンドポイント。 このオプションの値には、プロビジョニング済みの Azure リソースのエンドポイント URI が設定されている必要があります。 |
Eula |
お客様がコンテナーのライセンスに同意したことを示します。 このオプションの値は accept に設定する必要があります。 |
まとめ
この記事では、Text Analytics for health コンテナーの概念とそのダウンロード、インストール、実行のワークフローについて説明しました。 要約すると:
- Text Analytics for health によって Docker 用の Linux コンテナーが提供されます
- コンテナー イメージは Microsoft Container Registry (MCR) からダウンロードされます。
- コンテナー イメージを Docker で実行します。
- REST API または SDK を使用して、Text Analytics for health コンテナーのホスト URI を指定すると、コンテナーの操作を呼び出すことができます。
- コンテナーをインスタンス化するときは、課金情報を指定する必要があります。
重要
Azure AI コンテナーは、計測のために Azure に接続されていないと、実行のライセンスが許可されません。 お客様は、コンテナーが課金情報を測定サービスに常に通信できることを確認する必要があります。 Azure AI コンテナーによって、お客様のデータ (解析対象のテキストなど) が Microsoft に送信されることはありません。
次のステップ
- 構成設定については、コンテナーの構成に関するページを参照してください。