Usare i contenitori di Analisi del testo per la salute
I contenitori consentono di ospitare l'API Analisi del testo per la salute nell'infrastruttura personale. Se i requisiti di sicurezza o di governance dei dati non possono essere soddisfatti chiamando Analisi del testo per la salute da remoto, i contenitori potrebbero essere un'ottima opzione.
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Prerequisiti
Per usare i contenitori di Analisi del testo per la salute, è necessario soddisfare i prerequisiti seguenti. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Avere Docker installato in un computer host. Docker deve essere configurato per consentire ai contenitori di connettersi ai dati di fatturazione e inviarli ad Azure.
- In Windows, è anche necessario configurare Docker per supportare i contenitori Linux.
- È necessario avere una conoscenza di base dei concetti di Docker.
- Una risorsa linguistica con il piano tariffario gratuito (F0) o standard (S).
Raccogliere i parametri necessari
Sono necessari tre parametri principali per tutti i contenitori di Intelligenza artificiale di Azure. Le condizioni di licenza per il software Microsoft devono essere presenti con un valore di accettazione. Sono necessari anche un URI dell’endpoint e una chiave API.
URI endpoint
Il valore {ENDPOINT_URI}
è disponibile nella pagina Panoramica del portale di Azure della risorsa di Servizi di Azure AI corrispondente. Accedere alla pagina Panoramica e passare il puntatore del mouse sull'endpoint. Verrà visualizzata un'icona Copia negli Appunti . Copiare e usare l'endpoint se necessario.
Chiavi
Il valore {API_KEY}
viene usato per avviare il contenitore ed è disponibile nella pagina Chiavi del portale di Azure della risorsa di Servizi di Azure AI corrispondente. Accedere alla pagina Chiavi e selezionare l'icona Copia negli Appunti .
Importante
Queste chiavi di sottoscrizione vengono usate per accedere all'API Servizi di Azure AI. Non condividere le chiavi. Archiviarle in modo sicuro. Usare, ad esempio, Azure Key Vault. È anche consigliabile rigenerare queste chiavi regolarmente. Per effettuare una chiamata API è necessaria una sola chiave. Quando si rigenera la prima chiave, è possibile usare la seconda chiave per mantenere l'accesso al servizio.
Requisiti e consigli per i computer host
L'host è un computer con architettura x64 che esegue il contenitore Docker. Può essere un computer dell'ambiente locale o un servizio di hosting Docker in Azure, tra cui:
- Servizio Azure Kubernetes.
- Istanze di Azure Container.
- Cluster Kubernetes distribuito in Azure Stack. Per altre informazioni, vedere Deploy Kubernetes to Azure Stack (Distribuire Kubernetes in Azure Stack).
La tabella seguente riporta le specifiche minime e consigliate per il contenitore di Analisi del testo per la salute. Ogni core CPU deve essere di almeno 2,6 gigahertz (GHz) o superiore. Sono elencate anche le transazioni al secondo (TPS) consentite.
Specifiche host minime | Specifiche host consigliate | TPS minimo | TPS massimo | |
---|---|---|---|---|
1 documento/richiesta | 4 core, 12 GB di memoria | 6 core, 12 GB di memoria | 15 | 30 |
10 documenti/richiesta | 6 core, 16 GB di memoria | 8 core, 20 GB di memoria | 15 | 30 |
La memoria e il core CPU corrispondono alle impostazioni --cpus
e --memory
, che vengono usate come parte del comando docker run
.
Ottenere l'immagine del contenitore con docker pull
L'immagine del contenitore di Analisi del testo per la salute è disponibile nel registro contenitori mcr.microsoft.com
. Si trova all'interno del repository azure-cognitive-services/textanalytics/
ed è denominata healthcare
. Il nome completo dell'immagine del contenitore è mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare
Per usare la versione più recente del contenitore, è possibile usare il tag latest
. È anche possibile trovare un elenco completo dei tag in Registro contenitori Microsoft.
Usare il comando docker pull
per scaricare questa immagine del contenitore dal Registro contenitori Microsoft pubblico. È possibile trovare i tag in primo piano nel Registro Azure Container
docker pull mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:<tag-name>
Suggerimento
È possibile usare il comando docker images per visualizzare l'elenco delle immagini dei contenitori scaricate. Ad esempio, il comando seguente visualizza l'ID, il repository e il tag di ogni immagine del contenitore scaricata, in formato tabella:
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID REPOSITORY TAG
<image-id> <repository-path/name> <tag-name>
Eseguire il contenitore con docker run
Quando il contenitore si trova nel computer host, usare il comando esecuzione Docker per eseguire i contenitori. Il contenitore continuerà a essere eseguito fino a quando non viene arrestato.
Importante
- I comandi di Docker nelle sezioni seguenti usano la barra rovesciata,
\
, come carattere di continuazione di riga. Sostituirla o rimuoverla in base ai requisiti del sistema operativo host. - È necessario specificare le opzioni
Eula
,Billing
eApiKey
per eseguire il contenitore. In caso contrario, il contenitore non si avvia. Per altre informazioni, vedereFatturazione.- Il riconoscimento dell'intelligenza artificiale responsabile (RAI) deve essere presente anche con il valore
accept
.
- Il riconoscimento dell'intelligenza artificiale responsabile (RAI) deve essere presente anche con il valore
- I contenitori di analisi valutazione e rilevamento della lingua usano la versione 3 dell'API e sono disponibili a livello generale. Il contenitore di estrazione frasi chiave usa la versione 2 dell'API ed è in anteprima.
Esistono diversi modi per installare ed eseguire il contenitore di Analisi del testo per la lingua.
- Usare il portale di Azure per creare una risorsa Lingua e usare Docker per ottenere il contenitore.
- Usare una macchina virtuale di Azure con Docker per eseguire il contenitore.
- Usare gli script di PowerShell e dell'interfaccia della riga di comando di Azure seguenti per automatizzare la distribuzione delle risorse e la configurazione del contenitore.
Quando si usa il contenitore di Analisi del testo per la salute, i dati contenuti nelle richieste e nelle risposte dell'API non sono visibili a Microsoft e non vengono usati per il training del modello applicato ai dati.
Eseguire il contenitore in locale
Per eseguire il contenitore nel proprio ambiente dopo aver scaricato l'immagine del contenitore, eseguire il comando seguente docker run
. Sostituire i segnaposto indicati di seguito con i propri valori:
Segnaposto | Valore | Formato o esempio |
---|---|---|
{API_KEY} | Chiave per la risorsa Lingua. È disponibile nella pagina Chiave ed endpoint della risorsa nel portale di Azure. | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
{ENDPOINT_URI} | Endpoint per l'accesso all'API. È disponibile nella pagina Chiave ed endpoint della risorsa nel portale di Azure. | 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}
Questo comando:
- Esegue il contenitore di Analisi del testo per la salute dall'immagine del contenitore
- Alloca 6 core CPU e 12 GB di memoria
- Espone la porta TCP 5000 e alloca un pseudo terminale TTY per il contenitore
- Accetta il contratto di licenza con l'utente finale (EULA) e le condizioni di intelligenza artificiale responsabile (RAI)
- Rimuove automaticamente il contenitore dopo la chiusura. L'immagine del contenitore rimane disponibile nel computer host.
Interfaccia utente demo per visualizzare l'output
Il contenitore fornisce le API dell'endpoint di stima della query basata su REST. È stato anche fornito uno strumento di visualizzazione nel contenitore he risulta accessibile aggiungendo /demo
all'endpoint del contenitore. Ad esempio:
http://<serverURL>:5000/demo
Usare la richiesta cURL di esempio seguente per inviare una query al contenitore distribuito sostituendo la variabile serverURL
con il valore appropriato.
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
Installare il contenitore usando l'app Web per contenitori di Azure
L'App Web per contenitori di Azure è una risorsa di Azure dedicata all'esecuzione di contenitori nel cloud. Offre funzionalità predefinite, ad esempio la scalabilità automatica, il supporto per i contenitori Docker e docker compose, il supporto HTTPS e molto altro ancora.
Nota
Usando l'app Web di Azure si otterrà automaticamente un dominio sotto forma di <appservice_name>.azurewebsites.net
Eseguire questo script di PowerShell usando l'interfaccia della riga di comando di Azure per creare un'app Web per contenitori, usando la sottoscrizione e l'immagine del contenitore tramite HTTPS. Attendere il completamento dello script (circa 25-30 minuti) prima di inviare la prima richiesta.
$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 AppSerivce 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
Installare il contenitore usando l'istanza di Azure Container
È anche possibile usare un'istanza di Azure Container per semplificare la distribuzione. L'istanza di Azure Container (ACI) è una risorsa che consente di eseguire contenitori Docker su richiesta in un ambiente Azure gestito e serverless.
Per informazioni sulla distribuzione di una risorsa ACI tramite il portale di Azure, vedere Come usare le Istanze di Azure Container. Inoltre è possibile usare lo script di PowerShell seguente usando l'interfaccia della riga di comando di Azure, che creerà un'istanza del contenitore nella sottoscrizione usando l'immagine del contenitore. Attendere il completamento dello script (circa 25-30 minuti) prima di inviare la prima richiesta. A causa del limite per il numero massimo di CPU per risorsa ACI, non selezionare questa opzione se si prevede di inviare più di 5 documenti di grandi dimensioni (circa 5000 caratteri per ogni richiesta). Per informazioni sulla disponibilità, vedere l'articolo supporto a livello di area di Azure Container.
Nota
Le Istanze di Azure Container non includono il supporto HTTPS per i domini predefiniti. Se è necessario HTTPS, è necessario configurarlo manualmente, inclusa la creazione di un certificato e la registrazione di un dominio. È possibile trovare le istruzioni per eseguire questa operazione con NGINX di seguito.
$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
Connettività ACI sicura
Per impostazione predefinita, non è disponibile alcuna sicurezza quando si usa ACI con l'API contenitore. Questo perché in genere i contenitori verranno eseguiti come parte di un pod protetto dall'esterno da un bridge di rete. È tuttavia possibile modificare un contenitore con un componente frontale, mantenendo privato l'endpoint del contenitore. Gli esempi seguenti usano NGINX come gateway di ingresso per supportare l'autenticazione HTTPS/SSL e del certificato client.
Nota
NGINX è un server HTTP open source ad alte prestazioni e un proxy. È possibile usare un contenitore NGINX per terminare una connessione TLS per un singolo contenitore. Sono anche possibili soluzioni di terminazione TLS basate su ingresso NGINX più complesse.
Configurare NGINX come gateway di ingresso
NGINX usa file di configurazione per abilitare le funzionalità in fase di esecuzione. Per abilitare la terminazione TLS per un altro servizio, è necessario specificare un certificato SSL per terminare la connessione TLS e proxy_pass
specificare un indirizzo per il servizio. Di seguito è riportato un esempio.
Nota
ssl_certificate
prevede che venga specificato un percorso all'interno del file system locale del contenitore NGINX. L'indirizzo specificato per proxy_pass
deve essere disponibile all'interno della rete del contenitore NGINX.
Il contenitore NGINX caricherà tutti i file in _.conf_
che sono montati in /etc/nginx/conf.d/
nel percorso di configurazione 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;
}
}
File docker compose di esempio
L'esempio seguente illustra come creare un file docker compose per distribuire contenitori NGINX e di salute:
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/
Per avviare questo file docker compose, eseguire il comando seguente da una console a livello radice del file:
docker-compose up
Per altre informazioni, vedere la documentazione di NGINX sulla Terminazione SSL NGINX.
Eseguire più contenitori nello stesso host
Se si intende eseguire più contenitori con porte esposte, assicurarsi di eseguire ogni contenitore con una porta esposta diversa. Eseguire ad esempio il primo contenitore sulla porta 5000 e il secondo sulla porta 5001.
È possibile eseguire questo contenitore e un contenitore di Servizi di Azure AI diverso contemporaneamente sull'HOST. È anche possibile eseguire più contenitori dello stesso contenitore di Servizi di Azure AI.
Eseguire una query sull'endpoint di stima del contenitore
Il contenitore fornisce le API dell'endpoint di stima della query basata su REST.
Usare l'host http://localhost:5000
per le API del contenitore.
Verificare che il contenitore sia in esecuzione
Per verificare se il contenitore è in esecuzione, sono disponibili diverse opzioni. Individuare l'indirizzo IP esterno e la porta esposta del contenitore in questione, quindi aprire il Web browser di scelta. Usare i vari URL di richiesta seguenti per verificare che il contenitore sia in esecuzione. Gli URL di richiesta di esempio elencati di seguito sono http://localhost:5000
, ma il proprio contenitore specifico potrebbe variare. Assicurarsi di usare l'indirizzo IP esterno e la porta esposta del contenitore.
Richiesta URL | Scopo |
---|---|
http://localhost:5000/ |
Il contenitore fornisce un home page. |
http://localhost:5000/ready |
Questo URL, richiesto con un'operazione GET, verifica che il contenitore sia pronto per accettare una query sul modello. Questa richiesta può essere usata per i probe di attività e di idoneità di Kubernetes. |
http://localhost:5000/status |
Questo URL, anch'esso richiesto con un'operazione GET, verifica se la chiave API usata per avviare il contenitore sia valida senza che sia necessaria una query sull'endpoint. Questa richiesta può essere usata per i probe di attività e di idoneità di Kubernetes. |
http://localhost:5000/swagger |
Il contenitore fornisce un set completo di documentazione per gli endpoint e una funzionalità Prova. Con questa funzionalità, è possibile immettere le impostazioni in un modulo HTML basato sul Web ed eseguire la query senza scrivere codice. Dopo che la query restituisce il risultato, viene fornito un comando CURL di esempio per illustrare il formato richiesto per il corpo e le intestazioni HTTP. |
Strutturare la richiesta API per il contenitore
È possibile usare l’estensione client REST di Visual Studio Code o la richiesta cURL di esempio seguente per inviare una query al contenitore distribuito, sostituendo la variabile serverURL
con il valore appropriato. Si noti che la versione dell'API nell'URL per il contenitore è diversa dall'API ospitata.
Nota
La funzionalità Fast Healthcare Interoperability Resources (FHIR) è disponibile nel contenitore più recente ed è esposta tramite la nuova API REST del linguaggio.
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
Il codice JSON seguente è un esempio di file JSON associato al corpo POST della richiesta di linguaggio:
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"
}
}
]
}
Corpo della risposta del contenitore
Il codice JSON seguente è un esempio del corpo della risposta del linguaggio dalla chiamata sincrona in contenitori:
{
"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"
}
}
]
}
}
Eseguire il contenitore con il supporto della libreria client
A partire dalla versione del contenitore3.0.017010001-onprem-amd64
(o se si usa il contenitore latest
), è possibile eseguire contenitore di Analisi del testo per la salute usando la libreria client. A tale scopo, aggiungere il parametro seguente al comando docker run
:
enablelro=true
Successivamente, quando si autentica l'oggetto client, usare l'endpoint in cui è in esecuzione il contenitore:
http://localhost:5000
Ad esempio, se si usa C# si userà il codice seguente:
var client = new TextAnalyticsClient("http://localhost:5000", "your-text-analytics-key");
Arrestare il contenitore
Per arrestare il contenitore, nell'ambiente della riga di comando in cui è in esecuzione il contenitore premere CTRL+C.
Risoluzione dei problemi
Se si esegue il contenitore con un punto di montaggio di output e la registrazione attivata, il contenitore genera file di log utili per risolvere i problemi che si verificano durante l'avvio o l'esecuzione del contenitore.
Suggerimento
Per altre informazioni sulla risoluzione dei problemi e per indicazioni, vedere Domande frequenti sui contenitori di Azure per intelligenza artificiale.
Fatturazione
I contenitori Analisi del testo per la salute inviano le informazioni di fatturazione ad Azure usando una risorsa Lingua nell'account di Azure.
Le query sul contenitore vengono fatturate secondo il piano tariffario della risorsa di Azure usata per il parametro ApiKey
.
I contenitori di Servizi di Azure AI non possiedono la licenza per l'esecuzione senza connessione all'endpoint di misurazione o fatturazione. È necessario consentire ai contenitori di comunicare sempre le informazioni di fatturazione all'endpoint di fatturazione. I contenitori di Servizi di Azure AI non inviano a Microsoft i dati dei clienti, ad esempio l'immagine o il testo analizzato.
Connect to Azure
Per eseguire il contenitore, sono necessari i valori dell'argomento di fatturazione. Questi valori consentono al contenitore di connettersi all'endpoint di fatturazione. Il contenitore segnala l'utilizzo ogni 10-15 minuti. Se il contenitore non si connette ad Azure entro la finestra temporale consentita, continuerà a essere eseguito ma non fornirà query finché l'endpoint di fatturazione non verrà ripristinato. Il tentativo di connessione viene effettuato 10 volte nello stesso intervallo di tempo di 10-15 minuti. Se non è possibile stabilire la connessione con l'endpoint di fatturazione dopo 10 tentativi, il contenitore non potrà più gestire le richieste. Per un esempio di informazioni inviate a Microsoft per la fatturazione, vedere le Domande frequenti sui contenitori di Servizi di Azure AI.
Argomenti di fatturazione
Il comando docker run
avvierà il contenitore quando vengono forniti valori validi per tutte e tre le opzioni seguenti:
Opzione | Descrizione |
---|---|
ApiKey |
Chiave API della risorsa di Servizi di Azure AI usata per tenere traccia delle informazioni di fatturazione. Il valore di questa opzione deve essere impostato su una chiave API per la risorsa di cui è stato effettuato il provisioning specificata in Billing . |
Billing |
Endpoint della risorsa di Servizi di Azure AI usata per tenere traccia delle informazioni di fatturazione. Il valore di questa opzione deve essere impostato sull'URI dell'endpoint di una risorsa di Azure di cui è stato effettuato il provisioning. |
Eula |
Indica che è la licenza per il contenitore è stata accettata. Il valore di questa opzione deve essere impostato su accept. |
Riepilogo
In questo articolo sono stati descritti i concetti e il flusso di lavoro per scaricare, installare ed eseguire i contenitori di Analisi del testo per la salute. Riepilogo:
- Analisi del testo per la salute fornisce un contenitore Linux per Docker
- Le immagini dei contenitori vengono scaricate da Registro Container Microsoft.
- Le immagini dei contenitori vengono eseguite in Docker.
- È possibile usare l'API REST o l'SDK per chiamare le operazioni nei contenitori di Analisi del testo per la salute specificando l'URI host del contenitore.
- Quando si crea un'istanza di un contenitore, è necessario specificare le informazioni di fatturazione.
Importante
I contenitori di Azure per intelligenza artificiale non sono concessi in licenza per l'esecuzione senza essere connessi ad Azure per la misurazione. I clienti devono consentire ai contenitori di comunicare sempre le informazioni di fatturazione al servizio di misurazione. I contenitori di Azure per intelligenza artificiale non inviano dati dei clienti (ad esempio il testo analizzato) a Microsoft.
Passaggi successivi
- Vedere Configurare i contenitori per informazioni sulle impostazioni di configurazione.