استخدام "تحليلات النص" للحاويات الصحية

تمكنك الحاويات من استضافة واجهة برمجة تطبيقات Text Analytics for Health على البنية الأساسية الخاصة بك. إذا كانت لديك متطلبات أمان أو إدارة بيانات لا يمكن الوفاء بها عن طريق الاتصال ب Text Analytics للسلامة عن بعد، فقد تكون الحاويات خيارا جيدا.

إذا لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

المتطلبات الأساسية

يجب أن تستوفي المتطلبات الأساسية التالية قبل استخدام Text Analytics للحاويات الصحية. إذا لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

  • Docker مثبت على كمبيوتر مضيف. يجب تكوين Docker للسماح للحاويات بالاتصال ببيانات الفوترة وإرسالها إلى Azure.
    • في Windows ، يجب أيضا تكوين Docker لدعم حاويات Linux.
    • يجب أن يكون لديك فهم أساسي لمفاهيم Docker.
  • مورد لغة مع طبقة التسعير المجانية (F0) أو القياسية (S).

جمع المعلمات المطلوبة

هناك حاجة إلى ثلاثة معلمات أساسية لجميع حاويات الخدمات المعرفية. يجب أن تكون شروط ترخيص برامج Microsoft موجودة بقيمة قبول. هناك حاجة أيضا إلى مفتاح URI وواجهة برمجة التطبيقات لنقطة النهاية.

URI نقطة النهاية

{ENDPOINT_URI} تتوفر القيمة في صفحة نظرة عامة على مدخل Azure لمورد الخدمات المعرفية المقابل. انتقل إلى صفحة نظرة عامة ، ومرر مؤشر الماوس فوق نقطة النهاية، وستظهر أيقونة نسخ إلى الحافظة . انسخ نقطة النهاية واستخدمها عند الحاجة.

Screenshot that shows gathering the endpoint URI for later use.

المفاتيح

{API_KEY} يتم استخدام القيمة لبدء تشغيل الحاوية وهي متوفرة في صفحة مفاتيح مدخل Azure من مورد الخدمات المعرفية المقابل. انتقل إلى صفحة المفاتيح ، وحدد أيقونة نسخ إلى الحافظة .

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

هام

يتم استخدام مفاتيح الاشتراك هذه للوصول إلى واجهة برمجة تطبيقات الخدمات المعرفية. لا تشارك مفاتيحك. تخزينها بشكل آمن. على سبيل المثال، استخدم Azure Key Vault. نوصي أيضا بإعادة إنشاء هذه المفاتيح بانتظام. مفتاح واحد فقط ضروري لإجراء استدعاء واجهة برمجة التطبيقات. عند إعادة إنشاء المفتاح الأول، يمكنك استخدام المفتاح الثاني لاستمرار الوصول إلى الخدمة.

متطلبات الكمبيوتر المضيف وتوصياته

المضيف هو جهاز كمبيوتر يستند إلى x64 يقوم بتشغيل حاوية Docker. يمكن أن يكون جهاز كمبيوتر في المبنى الخاص بك أو خدمة استضافة Docker في Azure، مثل:

يصف الجدول التالي المواصفات الدنيا والموصى بها ل Text Analytics للحاويات الصحية. يجب أن يكون كل نواة وحدة المعالجة المركزية 2.6 غيغاهرتز على الأقل (GHz) أو أسرع. يتم أيضا سرد المعاملات المسموح بها في الثانية (TPS).

الحد الأدنى من مواصفات المضيف مواصفات المضيف الموصى بها الحد الأدنى من TPS الحد الأقصى ل TPS
1 مستند/طلب 4 نواة، ذاكرة 10 جيجابايت 6 نواة، ذاكرة 12 جيجابايت 15 30
10 وثائق / طلب 6 نواة، ذاكرة 16 جيجابايت 8 نواة، ذاكرة 20 جيجابايت 15 30

يتوافق --cpus قلب وحدة المعالجة المركزية والذاكرة مع الإعدادات والإعدادات --memory المستخدمة كجزء من docker run الأمر.

احصل على صورة الحاوية باستخدام docker pull

استخدم الأمر لتنزيل صورة الحاوية docker pull هذه من سجل حاوية Microsoft العامة.

docker pull mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:latest

تلميح

يمكنك استخدام الأمر "صور عامل الإرساء " لسرد صور الحاوية التي تم تنزيلها. على سبيل المثال، يسرد الأمر التالي المعرف والمستودع والعلامة الخاصة بكل صورة حاوية تم تنزيلها، منسقة كجدول:

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

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

قم بتشغيل الحاوية باستخدام docker run

بمجرد أن تكون الحاوية على الكمبيوتر المضيف ، استخدم الأمر docker run لتشغيل الحاويات. سيستمر تشغيل الحاوية حتى تقوم بإيقافها.

هام

  • تستخدم أوامر عامل الرصيف في الأقسام التالية الشرطة المائلة الخلفية ، \كحرف استمرار سطر. استبدل هذا أو أزله استنادا إلى متطلبات نظام التشغيل المضيف.
  • تُحدد الخياراتEula وBillingApiKey لتشغيل الحاوية؛ وإلا فلن يتم تشغيل الحاوية. لمزيد من المعلومات، راجع الفوترة.
  • تستخدم حاويات تحليل المشاعر واكتشاف اللغة الإصدار 3 من واجهة برمجة التطبيقات ، وهي متاحة بشكل عام. تستخدم حاوية استخراج العبارة الرئيسية الإصدار v2 من واجهة برمجة التطبيقات ، وهي قيد المعاينة.

هناك طرق متعددة يمكنك من خلالها تثبيت حاوية Text Analytics for Health وتشغيلها.

  • استخدم مدخل Azure لإنشاء مورد لغة، واستخدم Docker للحصول على الحاوية الخاصة بك.
  • استخدم جهاز Azure الظاهري مع Docker لتشغيل الحاوية. ارجع إلى Docker على Azure.
  • استخدم البرامج النصية التالية ل PowerShell وAzure CLI لأتمتة نشر الموارد وتكوين الحاويات.

عند استخدام حاوية "تحليلات النص للصحة"، تكون البيانات المضمنة في طلبات واجهة برمجة التطبيقات واستجاباتها غير مرئية ل Microsoft، ولا يتم استخدامها للتدريب على النموذج المطبق على بياناتك.

تشغيل الحاوية على الصعيد المحلي

لتشغيل الحاوية في بيئتك الخاصة بعد تنزيل صورة الحاوية، نفذ الأمر التالي docker run . استبدل العناصر النائبة أدناه بقيمك الخاصة:

العنصر النائب القيمة تنسيق أو مثال
{API_KEY} مفتاح مورد اللغة الخاص بك. يمكنك العثور عليه في صفحة المفتاح ونقطة النهاية الخاصة بالمورد، على مدخل Azure. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{ENDPOINT_URI} نقطة النهاية للوصول إلى واجهة برمجة التطبيقات. يمكنك العثور عليه في صفحة المفتاح ونقطة النهاية الخاصة بالمورد، على مدخل 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:latest \
Eula=accept \
rai_terms=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY} 

هذا الأمر:

  • تشغيل "تحليلات النص" للحاوية الصحية من صورة الحاوية
  • يخصص 6 نواة وحدة المعالجة المركزية و 12 غيغابايت (GB) من الذاكرة
  • يعرض منفذ TCP 5000 وتخصيص TTY زائف للحاوية
  • يقبل اتفاقية ترخيص المستخدم النهائي (EULA) وشروط الذكاء الاصطناعي المسؤول (RAI)
  • يزيل الحاوية تلقائياً بعد إنهائها. صورة الحاوية لا تزال متوفرة على الكمبيوتر المضيف.

واجهة مستخدم تجريبية لتصور الإخراج

توفر الحاوية واجهات برمجة التطبيقات لنقاط نهاية توقّع الاستعلام المستند إلى REST. لقد قدمنا أيضا أداة تصور في الحاوية يمكن الوصول إليها عن طريق الإلحاق بنقطة نهاية الحاوية /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 مخصص لتشغيل الحاويات في السحابة. إنه يجلب إمكانات خارج الصندوق مثل القياس التلقائي ، ودعم حاويات عامل الرصيف وتأليف عامل الرصيف ، ودعم HTTPS وأكثر من ذلك بكثير.

ملاحظة

باستخدام Azure Web App ، ستحصل تلقائيا على نطاق في شكل <appservice_name>.azurewebsites.net

قم بتشغيل هذا البرنامج النصي PowerShell باستخدام Azure CLI لإنشاء تطبيق ويب للحاويات، باستخدام اشتراكك وصورة الحاوية عبر HTTPS. انتظر حتى يكتمل البرنامج النصي (حوالي 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 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

تثبيت الحاوية باستخدام مثيل حاوية Azure

يمكنك أيضا استخدام مثيل حاوية Azure (ACI) لتسهيل النشر. ACI هو مورد يسمح لك بتشغيل حاويات Docker عند الطلب في بيئة Azure مدارة بدون خادم.

راجع كيفية استخدام مثيلات حاوية Azure للحصول على خطوات نشر مورد ACI باستخدام مدخل Azure. يمكنك أيضا استخدام البرنامج النصي PowerShell أدناه باستخدام Azure CLI، والذي سيقوم بإنشاء ACI على اشتراكك باستخدام صورة الحاوية. انتظر حتى يكتمل البرنامج النصي (حوالي 25-30 دقيقة) قبل إرسال الطلب الأول. نظرا للحد الأقصى لعدد وحدات المعالجة المركزية لكل مورد ACI، لا تحدد هذا الخيار إذا كنت تتوقع إرسال أكثر من 5 مستندات كبيرة (حوالي 5000 حرف لكل منها) لكل طلب. راجع مقالة الدعم الإقليمي ل ACI للحصول على معلومات التوفر.

ملاحظة

لا تتضمن مثيلات حاوية Azure دعم 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 آمن

بشكل افتراضي ، لا يوجد أمان متوفر عند استخدام ACI مع واجهة برمجة تطبيقات الحاوية. وذلك لأن الحاويات عادة ما تعمل كجزء من جراب محمي من الخارج بواسطة جسر شبكة. ومع ذلك، يمكنك تعديل حاوية باستخدام مكون أمامي، مع الحفاظ على خصوصية نقطة نهاية الحاوية. تستخدم الأمثلة التالية NGINX كبوابة دخول لدعم HTTPS/SSL ومصادقة شهادة العميل.

ملاحظة

NGINX هو خادم HTTP مفتوح المصدر وعالي الأداء ووكيل. يمكن استخدام حاوية NGINX لإنهاء اتصال TLS لحاوية واحدة. حلول إنهاء TLS المستندة إلى دخول NGINX أكثر تعقيدا ممكنة أيضا.

إعداد NGINX كبوابة دخول

يستخدم NGINX ملفات التكوين لتمكين الميزات في وقت التشغيل. لتمكين إنهاء طبقة النقل الآمنة لخدمة أخرى، يجب عليك تحديد شهادة طبقة المقابس الآمنة لإنهاء اتصال طبقة النقل الآمنة وتحديد proxy_pass عنوان للخدمة. وترد أدناه عينة.

ملاحظة

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

مثال على إنشاء ملف Docker

يوضح المثال أدناه كيفية إنشاء ملف إنشاء عامل الرصيف لنشر 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 هذا، قم بتنفيذ الأمر التالي من وحدة تحكم على مستوى الجذر للملف:

docker-compose up

لمزيد من المعلومات، راجع وثائق NGINX حول إنهاء NGINX SSL.

تشغيل حاويات متعددة على نفس المضيف

إذا كنت تنوي تشغيل حاويات متعددة مع منافذ مكشوفة، فتأكد من تشغيل كل حاوية بمنفذ مكشوف مختلف. على سبيل المثال، قم بتشغيل الحاوية الأولى على المنفذ 5000 والحاوية الثانية على المنفذ 5001.

يمكنك تشغيل هذه الحاوية وحاوية Azure Cognitive Services مختلفة على المضيف معا. يمكنك أيضا تشغيل حاويات متعددة من نفس حاوية الخدمات المعرفية.

الاستعلام عن نقطة نهاية التنبؤ بالحاوية

توفر الحاوية واجهات برمجة التطبيقات لنقاط نهاية توقّع الاستعلام المستند إلى REST.

استخدم المضيف http://localhost:5000، لواجهات برمجة تطبيقات الحاوية.

التحقق من تشغيل حاوية

هناك عدة طرق للتحقق من أن الحاوية قيد التشغيل. حدد موقع عنوان IP الخارجي والمنفذ المكشوف للحاوية المعنية، وافتح متصفح الويب المفضل لديك. استخدم عناوين URL المختلفة للطلبات التالية للتحقق من صحة تشغيل الحاوية. أمثلة عناوين URL للطلبات المدرجة هنا هي http://localhost:5000، ولكن قد تختلف الحاوية المحددة. تأكد من الاعتماد على عنوان IP الخارجي للحاوية والمنفذ المكشوف.

URL للطلب الغرض
http://localhost:5000/ توفر الحاوية صفحةً رئيسيةً.
http://localhost:5000/ready يوفر عنوان URL هذا، المطلوب باستخدام GET، التحقق من أن الحاوية جاهزة لقبول استعلام مقابل النموذج. يمكن استخدام هذا الطلب لتحقيقات Kubernetes للأحياء والاستعداد.
http://localhost:5000/status يتحقق عنوان URL هذا المطلوب أيضا مع GET مما إذا كان مفتاح واجهة برمجة التطبيقات المستخدم لبدء تشغيل الحاوية صالحا دون التسبب في استعلام نقطة نهاية. يمكن استخدام هذا الطلب لتحقيقات Kubernetes للأحياء والاستعداد.
http://localhost:5000/swagger توفر الحاوية مجموعةً كاملةً من الوثائق لنقاط النهاية وميزة Try it out. باستخدام هذه الميزة ، يمكنك إدخال إعداداتك في نموذج HTML مستند إلى الويب وإجراء الاستعلام دون الحاجة إلى كتابة أي رمز. بعد إرجاع الاستعلام، يتم توفير مثال لأمر CURL لإظهار رؤوس HTTP وتنسيق النص الأساسي المطلوب.

Container's home page

هيكلة طلب واجهة برمجة التطبيقات للحاوية

يمكنك استخدام ساعي البريد أو مثال طلب cURL أدناه لإرسال استعلام إلى الحاوية التي نشرتها، واستبدال serverURL المتغير بالقيمة المناسبة. لاحظ أن إصدار واجهة برمجة التطبيقات في عنوان URL للحاوية يختلف عن واجهة برمجة التطبيقات المستضافة.

ملاحظة

تتوفر ميزة موارد التشغيل البيني السريع للرعاية الصحية (FHIR) في أحدث حاوية، ويتم الكشف عنها من خلال واجهة برمجة تطبيقات REST الجديدة للغة.

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 التالي هو مثال على ملف JSON المرفق بنص POST الخاص بطلب اللغة:

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 التالي هو مثال على نص استجابة اللغة من المكالمة المتزامنة المعبأة في حاويات:

{
  "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 container باستخدام مكتبة العميل. للقيام بذلك، أضف المعلمة التالية إلى الأمر docker run :

enablelro=true

بعد ذلك عند مصادقة كائن العميل، استخدم نقطة النهاية التي يتم تشغيل الحاوية عليها:

http://localhost:5000

على سبيل المثال، إذا كنت تستخدم C # يمكنك استخدام التعليمة البرمجية التالية:

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

إيقاف الحاوية

لإيقاف تشغيل الحاوية، في بيئة سطر الأوامر حيث يتم تشغيل الحاوية، حدد Ctrl+C.

استكشاف الأخطاء وإصلاحها

إذا قمت بتشغيل الحاوية مع تمكين تحميل الإخراج والتسجيل، تقوم الحاوية بإنشاء ملفات سجل مفيدة لاستكشاف المشكلات التي تحدث أثناء بدء تشغيل الحاوية أو تشغيلها.

تلميح

لمزيد من المعلومات والإرشادات حول استكشاف الأخطاء وإصلاحها، راجع الأسئلة المتداولة حول حاويات الخدمات المعرفية (FAQ).

الفوترة

ترسل تحليلات النص للحاويات الصحية معلومات الفوترة إلى Azure، باستخدام مورد لغة على حساب Azure الخاص بك.

تتم فوترة الاستعلامات إلى الحاوية في طبقة التسعير لمورد Azure المستخدم للمعلمة ApiKey .

حاويات Azure Cognitive Services غير مرخصة للتشغيل دون الاتصال بنقطة نهاية القياس أو الفوترة. يجب تمكين الحاويات من توصيل معلومات الفوترة بنقطة نهاية الفوترة في جميع الأوقات. لا ترسل حاويات الخدمات المعرفية بيانات العملاء، مثل الصورة أو النص الذي يتم تحليله، إلى Microsoft.

قم بالاتصال بـ Azure

تحتاج الحاوية إلى قيم وسيطة الفوترة لتشغيلها. تسمح هذه القيم للحاوية بالاتصال بنقطة نهاية الفوترة. تقوم الحاوية بالإبلاغ عن الاستخدام كل 10 إلى 15 دقيقة تقريبا. إذا لم تتصل الحاوية ب Azure خلال الإطار الزمني المسموح به، فستستمر الحاوية في العمل ولكنها لا تعرض الاستعلامات حتى تتم استعادة نقطة نهاية الفوترة. تتم محاولة الاتصال 10 مرات في نفس الفاصل الزمني من 10 إلى 15 دقيقة. إذا تعذر عليها الاتصال بنقطة نهاية الفوترة خلال 10 محاولات، فستتوقف الحاوية عن عرض الطلبات. راجع الأسئلة المتداولة حول حاوية الخدمات المعرفية للحصول على مثال على المعلومات المرسلة إلى Microsoft للفوترة.

وسيطات الفوترة

docker run سيبدأ الأمر الحاوية عند توفير جميع الخيارات الثلاثة التالية بقيم صالحة:

الخيار الوصف
ApiKey مفتاح واجهة برمجة التطبيقات لمورد الخدمات المعرفية المستخدم لتعقب معلومات الفوترة.
يجب تعيين قيمة هذا الخيار إلى مفتاح API للمورد الموفر المحدد في Billing.
Billing نقطة نهاية مورد الخدمات المعرفية المستخدم لتعقب معلومات الفوترة.
يجب تعيين قيمة هذا الخيار إلى URI نقطة النهاية لمورد Azure مزود.
Eula يشير إلى أنك قبلت ترخيص الحاوية.
يجب تعيين قيمة هذا الخيار لقبول.

الملخص

في هذه المقالة، تعلمت المفاهيم وسير العمل لتنزيل "تحليلات النص" للحاويات الصحية وتثبيتها وتشغيلها. وخلاصة القول:

  • توفر تحليلات النص للصحة حاوية Linux ل Docker
  • يتم تنزيل صور الحاوية من سجل حاويات Microsoft (MCR).
  • يتم تشغيل صور الحاوية في Docker.
  • يمكنك استخدام واجهة برمجة تطبيقات REST أو SDK لاستدعاء العمليات في Text Analytics للحاويات الصحية عن طريق تحديد عنوان URI المضيف للحاوية.
  • يجب عليك تحديد معلومات الفوترة عند إنشاء حاوية.

هام

حاويات الخدمات المعرفية غير مرخصة للعمل دون أن تُوصل بـ Azure للقياس. يحتاج العملاء إلى تمكين الحاويات من توصيل معلومات الفوترة مع خدمة القياس في جميع الأوقات. لا ترسل حاويات الخدمات المعرفية بيانات العملاء (مثل النص الذي يتم تحليله) إلى Microsoft.

الخطوات التالية