Text Analytics gebruiken voor statuscontainers

Met containers kunt u de Text Analytics hosten voor status-API op uw eigen infrastructuur. Als u beveiligings- of gegevensbeheervereisten hebt waaraan niet kan worden voldaan door Text Analytics op afstand aan te roepen, is containers mogelijk een goede optie.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

U moet voldoen aan de volgende vereisten voordat u Text Analytics gebruikt voor statuscontainers. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

  • Docker geïnstalleerd op een hostcomputer. Docker moet zo worden geconfigureerd dat de containers verbinding kunnen maken met en factureringsgegevens naar Azure kunnen verzenden.
    • In Windows moet Docker ook worden geconfigureerd ter ondersteuning van Linux-containers.
    • U moet basiskennis hebben van Docker-concepten.
  • Een taalresource met de gratis prijscategorie (F0) of Standard (S).

Vereiste parameters verzamelen

Er zijn drie primaire parameters vereist voor alle Azure AI-containers. De licentievoorwaarden voor Microsoft-software moeten aanwezig zijn met een waarde van accepteren. Er is ook een eindpunt-URI en API-sleutel nodig.

Eindpunt-URI

De {ENDPOINT_URI} waarde is beschikbaar op de overzichtspagina van Azure Portal van de bijbehorende Azure AI-servicesresource. Ga naar de pagina Overzicht, plaats de muisaanwijzer op het eindpunt en er wordt een pictogram Kopiëren naar klembord weergegeven. Kopieer en gebruik waar nodig het eindpunt.

Screenshot that shows gathering the endpoint URI for later use.

Toetsen

De {API_KEY} waarde wordt gebruikt om de container te starten en is beschikbaar op de pagina Sleutels van azure Portal van de bijbehorende Azure AI-servicesresource. Ga naar de pagina Sleutels en selecteer het pictogram Kopiëren naar klembord .

Screenshot that shows getting one of the two keys for later use.

Belangrijk

Deze abonnementssleutels worden gebruikt voor toegang tot uw Azure AI-services-API. Deel je sleutels niet. Bewaar ze veilig. Gebruik bijvoorbeeld Azure Key Vault. We raden u ook aan deze sleutels regelmatig opnieuw te genereren. Er is slechts één sleutel nodig om een API-aanroep te maken. Wanneer u de eerste sleutel opnieuw genereert, kunt u de tweede sleutel gebruiken voor continue toegang tot de service.

Vereisten en aanbevelingen voor hostcomputers

De host is een x64-computer waarop de Docker-container wordt uitgevoerd. Het kan een computer op uw locatie of een Docker-hostingservice in Azure zijn, zoals:

In de volgende tabel worden de minimale en aanbevolen specificaties voor de Text Analytics voor statuscontainers beschreven. Elke CPU-kern moet ten minste 2,6 gigahertz (GHz) of sneller zijn. De toegestane transacties per seconde (TPS) worden ook vermeld.

Minimale hostspecificaties Aanbevolen hostspecificaties Minimale TPS Maximum aantal TPS's
1 document/aanvraag 4 kerngeheugen, 12 GB geheugen 6 kerngeheugen, 12 GB geheugen 15 30
10 documenten/aanvraag 6 kerngeheugen, 16 GB geheugen 8 kerngeheugen, 20 GB geheugen 15 30

DE CPU-kern en het geheugen komen overeen met de --cpus en --memory instellingen, die worden gebruikt als onderdeel van de docker run opdracht.

De containerinstallatiekopieën ophalen met docker pull

De installatiekopieën van de Text Analytics voor statuscontainers vindt u in het mcr.microsoft.com containerregistersyndicaat. Deze bevindt zich in de azure-cognitive-services/textanalytics/ opslagplaats en heeft de naam healthcare. De volledig gekwalificeerde containerinstallatiekopieënnaam is mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare

Als u de nieuwste versie van de container wilt gebruiken, kunt u de latest tag gebruiken. U kunt ook een volledige lijst met tags vinden op de MCR.

Gebruik de docker pull opdracht om deze containerinstallatiekopieën te downloaden uit het openbare Microsoft-containerregister. U vindt de aanbevolen tags in het Microsoft Container Registry

docker pull mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:<tag-name>

Tip

U kunt de opdracht docker-installatiekopieën gebruiken om uw gedownloade containerinstallatiekopieën weer te geven. De volgende opdracht bevat bijvoorbeeld de id, opslagplaats en tag van elke gedownloade containerinstallatiekopieën, opgemaakt als een tabel:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

De container uitvoeren met docker run

Zodra de container zich op de hostcomputer bevindt, gebruikt u de opdracht docker run om de containers uit te voeren. De container blijft actief totdat u de container stopt.

Belangrijk

  • De docker-opdrachten in de volgende secties gebruiken de back-slash, \als een regelvervolgteken. Vervang of verwijder deze op basis van de vereisten van uw hostbesturingssysteem.
  • De Eula, Billingen ApiKey opties moeten worden opgegeven om de container uit te voeren. Anders wordt de container niet gestart. Zie Facturering voor meer informatie.
  • De sentimentanalyse- en taaldetectiecontainers maken gebruik van v3 van de API en zijn algemeen beschikbaar. De sleuteltermextractiecontainer maakt gebruik van v2 van de API en is in preview.

Er zijn meerdere manieren waarop u de Text Analytics voor de statuscontainer kunt installeren en uitvoeren.

  • Gebruik Azure Portal om een taalresource te maken en gebruik Docker om uw container op te halen.
  • Gebruik een Azure-VM met Docker om de container uit te voeren.
  • Gebruik de volgende PowerShell- en Azure CLI-scripts om resource-implementatie en containerconfiguratie te automatiseren.

Wanneer u de Text Analytics voor statuscontainer gebruikt, zijn de gegevens in uw API-aanvragen en -antwoorden niet zichtbaar voor Microsoft en worden ze niet gebruikt voor het trainen van het model dat op uw gegevens is toegepast.

De container lokaal uitvoeren

Als u de container in uw eigen omgeving wilt uitvoeren nadat u de containerinstallatiekopieën hebt gedownload, voert u de volgende docker run opdracht uit. Vervang de onderstaande tijdelijke aanduidingen door uw eigen waarden:

Tijdelijke aanduiding Weergegeven als Opmaak of voorbeeld
{API_KEY} De sleutel voor uw taalresource. U vindt deze op de pagina Sleutel en eindpunt van uw resource, in Azure Portal. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{ENDPOINT_URI} Het eindpunt voor toegang tot de API. U vindt deze op de pagina Sleutel en eindpunt van uw resource, in 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} 

Met deze opdracht gebeurt het volgende:

  • Hiermee wordt de Text Analytics voor de statuscontainer uitgevoerd vanuit de containerinstallatiekopieën
  • Wijst 6 CPU-kernen en 12 gigabyte (GB) geheugen toe
  • Maakt TCP-poort 5000 beschikbaar en wijst een pseudo-TTY toe voor de container
  • Accepteert de gebruiksrechtovereenkomst (EULA) en verantwoordelijke VOORWAARDEN voor AI (RAI)
  • Hiermee wordt de container automatisch verwijderd nadat deze is afgesloten. De containerinstallatiekopie is nog steeds beschikbaar op de hostcomputer.

Demo-gebruikersinterface voor het visualiseren van uitvoer

De container bevat op REST gebaseerde eindpunt-API's voor queryvoorspelling. We hebben ook een visualisatiehulpprogramma in de container geleverd die toegankelijk is door toe te /demo voegen aan het eindpunt van de container. Voorbeeld:

http://<serverURL>:5000/demo

Gebruik de onderstaande cURL-voorbeeldaanvraag om een query te verzenden naar de container die u hebt geïmplementeerd, waarbij de serverURL variabele wordt vervangen door de juiste waarde.

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

De container installeren met behulp van Azure Web App for Containers

Azure Web App for Containers is een Azure-resource die is toegewezen aan het uitvoeren van containers in de cloud. Het biedt out-of-the-box mogelijkheden, zoals automatisch schalen, ondersteuning voor docker-containers en docker compose, HTTPS-ondersteuning en nog veel meer.

Notitie

Met Behulp van Azure Web App krijgt u automatisch een domein in de vorm van <appservice_name>.azurewebsites.net

Voer dit PowerShell-script uit met behulp van de Azure CLI om een web-app voor containers te maken, met behulp van uw abonnement en de containerinstallatiekopieën via HTTPS. Wacht totdat het script is voltooid (ongeveer 25-30 minuten) voordat u de eerste aanvraag indient.

$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

De container installeren met behulp van Azure Container Instance

U kunt ook een Azure Container Instance (ACI) gebruiken om de implementatie eenvoudiger te maken. ACI is een resource waarmee u Docker-containers on-demand kunt uitvoeren in een beheerde, serverloze Azure-omgeving.

Zie Hoe u Azure Container Instances gebruikt voor stappen voor het implementeren van een ACI-resource met behulp van Azure Portal. U kunt ook het onderstaande PowerShell-script gebruiken met behulp van Azure CLI. Hiermee maakt u een ACI voor uw abonnement met behulp van de containerinstallatiekopieën. Wacht totdat het script is voltooid (ongeveer 25-30 minuten) voordat u de eerste aanvraag indient. Als gevolg van de limiet voor het maximum aantal CPU's per ACI-resource, selecteert u deze optie niet als u verwacht dat u meer dan 5 grote documenten (ongeveer 5000 tekens per aanvraag) verzendt. Zie het artikel over regionale ondersteuning voor ACI voor informatie over beschikbaarheid.

Notitie

Azure Container Instances bevatten geen HTTPS-ondersteuning voor de ingebouwde domeinen. Als u HTTPS nodig hebt, moet u deze handmatig configureren, inclusief het maken van een certificaat en het registreren van een domein. Hieronder vindt u instructies om dit te doen met 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-connectiviteit beveiligen

Standaard is er geen beveiliging beschikbaar bij het gebruik van ACI met container-API. Dit komt doordat containers doorgaans worden uitgevoerd als onderdeel van een pod die door een netwerkbrug wordt beveiligd tegen de buitenkant. U kunt echter een container wijzigen met een frontgerichte component, waardoor het containereindpunt privé blijft. In de volgende voorbeelden wordt NGINX gebruikt als een ingangsgateway ter ondersteuning van HTTPS/SSL- en clientcertificaatverificatie.

Notitie

NGINX is een opensource http-server en proxy met hoge prestaties. Een NGINX-container kan worden gebruikt om een TLS-verbinding voor één container te beëindigen. Complexere oplossingen voor tls-beëindiging op basis van NGINX zijn ook mogelijk.

NGINX instellen als een ingangsgateway

NGINX maakt gebruik van configuratiebestanden om functies tijdens runtime in te schakelen. Als u TLS-beëindiging voor een andere service wilt inschakelen, moet u een SSL-certificaat opgeven om de TLS-verbinding te beëindigen en proxy_pass een adres voor de service op te geven. Hieronder vindt u een voorbeeld.

Notitie

ssl_certificate verwacht dat een pad moet worden opgegeven in het lokale bestandssysteem van de NGINX-container. Het opgegeven proxy_pass adres moet beschikbaar zijn vanuit het netwerk van de NGINX-container.

De NGINX-container laadt alle bestanden in de _.conf_ bestanden die zijn gekoppeld onder /etc/nginx/conf.d/ in het HTTP-configuratiepad.

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;
  }
}

Voorbeeld van Docker Compose-bestand

In het onderstaande voorbeeld ziet u hoe een docker compose-bestand kan worden gemaakt om NGINX- en statuscontainers te implementeren:

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/

Als u dit Docker Compose-bestand wilt initiëren, voert u de volgende opdracht uit vanuit een console op het hoofdniveau van het bestand:

docker-compose up

Zie de documentatie van NGINX over NGINX SSL-beëindiging voor meer informatie.

Meerdere containers op dezelfde host uitvoeren

Als u van plan bent om meerdere containers met blootgestelde poorten uit te voeren, moet u ervoor zorgen dat u elke container uitvoert met een andere weergegeven poort. Voer bijvoorbeeld de eerste container uit op poort 5000 en de tweede container op poort 5001.

U kunt deze container en een andere Azure AI-servicescontainer laten uitvoeren op de HOST. U kunt ook meerdere containers van dezelfde Azure AI-servicescontainer uitvoeren.

Een query uitvoeren op het voorspellingseindpunt van de container

De container bevat op REST gebaseerde eindpunt-API's voor queryvoorspelling.

Gebruik de host, http://localhost:5000, voor container-API's.

Controleren of een container wordt uitgevoerd

Er zijn verschillende manieren om te controleren of de container wordt uitgevoerd. Zoek het externe IP-adres en de weergegeven poort van de betreffende container en open uw favoriete webbrowser. Gebruik de verschillende aanvraag-URL's die volgen om te controleren of de container wordt uitgevoerd. De hier vermelde voorbeeldaanvraag-URL's zijn http://localhost:5000, maar uw specifieke container kan variëren. Zorg ervoor dat u vertrouwt op het externe IP-adres van uw container en de weergegeven poort.

Aanvraag-URL Doel
http://localhost:5000/ De container bevat een startpagina.
http://localhost:5000/ready Aangevraagd met GET biedt deze URL een verificatie dat de container gereed is voor het accepteren van een query voor het model. Deze aanvraag kan worden gebruikt voor Kubernetes-liveness - en gereedheidstests.
http://localhost:5000/status Deze URL wordt ook aangevraagd met GET en controleert of de API-sleutel die wordt gebruikt om de container te starten, geldig is zonder een eindpuntquery te veroorzaken. Deze aanvraag kan worden gebruikt voor Kubernetes-liveness - en gereedheidstests.
http://localhost:5000/swagger De container bevat een volledige set met documentatie voor de eindpunten en een functie Uitproberen. Met deze functie kunt u uw instellingen invoeren in een HTML-webformulier en de query maken zonder dat u code hoeft te schrijven. Nadat de query is geretourneerd, wordt er een voorbeeld van een CURL-opdracht gegeven om de HTTP-headers en de hoofdtekstindeling te demonstreren die vereist is.

Container's home page

De API-aanvraag voor de container structuren

U kunt Postman of de onderstaande cURL-voorbeeldaanvraag gebruiken om een query te verzenden naar de container die u hebt geïmplementeerd, waarbij u de serverURL variabele vervangt door de juiste waarde. Houd er rekening mee dat de versie van de API in de URL voor de container anders is dan de gehoste API.

Notitie

De functie Fast Healthcare Interoperability Resources (FHIR) is beschikbaar in de nieuwste container en wordt weergegeven via de nieuwe taal-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

De volgende JSON is een voorbeeld van een JSON-bestand dat is gekoppeld aan de POST-hoofdtekst van de taalaanvraag:

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"
            }
        }
    ]
}

Hoofdtekst van containerantwoord

De volgende JSON is een voorbeeld van de hoofdtekst van het taalantwoord van de synchrone aanroep in een container:

{
  "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"
        }
      }
    ]
  }
}

De container uitvoeren met ondersteuning voor clientbibliotheek

Vanaf de containerversie 3.0.017010001-onprem-amd64 (of als u de latest container gebruikt), kunt u de Text Analytics uitvoeren voor de statuscontainer met behulp van de clientbibliotheek. Voeg hiervoor de volgende parameter toe aan de docker run opdracht:

enablelro=true

Gebruik daarna het eindpunt waarop uw container wordt uitgevoerd wanneer u het clientobject verifieert:

http://localhost:5000

Als u bijvoorbeeld C# gebruikt, gebruikt u de volgende code:

var client = new TextAnalyticsClient("http://localhost:5000", "your-text-analytics-key");

De container stoppen

Als u de container wilt afsluiten, selecteert u Ctrl+C in de opdrachtregelomgeving waarin de container wordt uitgevoerd.

Probleemoplossing

Als u de container uitvoert waarvoor uitvoerkoppeling en logboekregistratie zijn ingeschakeld, genereert de container logboekbestanden die handig zijn om problemen op te lossen die optreden tijdens het starten of uitvoeren van de container.

Tip

Zie veelgestelde vragen over Azure AI-containers voor meer informatie en richtlijnen voor probleemoplossing.

Billing

Text Analytics voor statuscontainers verzenden factureringsgegevens naar Azure met behulp van een taalresource in uw Azure-account.

Query's naar de container worden gefactureerd in de prijscategorie van de Azure-resource die wordt gebruikt voor de ApiKey parameter.

Azure AI-servicescontainers hebben geen licentie om te worden uitgevoerd zonder verbinding te maken met het meter- of factureringseindpunt. U moet de containers inschakelen om factureringsgegevens te communiceren met het factureringseindpunt. Azure AI-servicescontainers verzenden geen klantgegevens, zoals de afbeelding of tekst die wordt geanalyseerd, naar Microsoft.

Verbinding maken met Azure

De container moet de waarden voor factureringsargumenten uitvoeren. Met deze waarden kan de container verbinding maken met het factureringseindpunt. De container rapporteert ongeveer om de 10 tot 15 minuten het gebruik. Als de container niet binnen het toegestane tijdvenster verbinding maakt met Azure, blijft de container actief, maar voert deze geen query's uit totdat het factureringseindpunt is hersteld. De verbinding wordt 10 keer geprobeerd met hetzelfde tijdsinterval van 10 tot 15 minuten. Als er geen verbinding kan worden gemaakt met het factureringseindpunt binnen de 10 pogingen, stopt de container met het verwerken van aanvragen. Zie de veelgestelde vragen over de Azure AI-servicescontainer voor een voorbeeld van de informatie die naar Microsoft is verzonden voor facturering.

Factureringsargumenten

Met docker run de opdracht wordt de container gestart wanneer alle drie de volgende opties geldige waarden bevatten:

Optie Omschrijving
ApiKey De API-sleutel van de Azure AI-servicesresource die wordt gebruikt om factureringsgegevens bij te houden.
De waarde van deze optie moet worden ingesteld op een API-sleutel voor de ingerichte resource die is opgegeven in Billing.
Billing Het eindpunt van de Azure AI-servicesresource die wordt gebruikt om factureringsgegevens bij te houden.
De waarde van deze optie moet worden ingesteld op de eindpunt-URI van een ingerichte Azure-resource.
Eula Geeft aan dat u de licentie voor de container hebt geaccepteerd.
De waarde van deze optie moet worden ingesteld op accepteren.

Samenvatting

In dit artikel hebt u concepten en werkstroom geleerd voor het downloaden, installeren en uitvoeren van Text Analytics voor statuscontainers. Samengevat:

  • Text Analytics voor status biedt een Linux-container voor Docker
  • Containerinstallatiekopieën worden gedownload vanuit het Microsoft Container Registry (MCR).
  • Containerinstallatiekopieën worden uitgevoerd in Docker.
  • U kunt de REST API of SDK gebruiken om bewerkingen in Text Analytics aan te roepen voor statuscontainers door de host-URI van de container op te geven.
  • U moet factureringsgegevens opgeven bij het instantiëren van een container.

Belangrijk

Azure AI-containers worden niet gelicentieerd om te worden uitgevoerd zonder dat ze zijn verbonden met Azure voor meting. Klanten moeten ervoor zorgen dat de containers altijd factureringsgegevens kunnen communiceren met de meterservice. Azure AI-containers verzenden geen klantgegevens (bijvoorbeeld tekst die wordt geanalyseerd) naar Microsoft.

Volgende stappen

  • Zie Containers configureren voor configuratie-instellingen.