كيفية استخدام قوالب IotJsonPathContent مع تعيين جهاز خدمة MedTech

ملاحظة

موارد التشغيل التفاعلي للرعاية الصحية السريعة (FHIR®) هي مواصفات رعاية صحية مفتوحة.

توفر هذه المقالة نظرة عامة حول كيفية استخدام قوالب IotJsonPathContent داخل تعيين جهاز خدمة MedTech.

أساسيات قالب IotJsonPathContent

يمكن استخدام قوالب IotJsonPathContent عندما تبتاع خدمة MedTech رسائل الجهاز التي تم توجيهها من Azure IoT Hub. عند استخدام قوالب IotJsonPathContent داخل تعيين الجهاز، تستخرج خدمة MedTech معرف الجهاز والطابع الزمني للقياس من بيانات التعريف التي يوفرها مركز IoT. لا ينبغي تضمين DeviceIdExpression و TimestampExpression في قوالب IotJsonPathContent.

تدعم قوالب IotJsonPathContent لخدمة MedTech لغة تعبير JSON JSONPath. تستخدم التعبيرات لتحديد القالب الذي يجب استخدامه مع رسالة جهاز JSON معينة (على سبيل المثال: TypeMatchExpression) واستخراج قيم محددة مطلوبة لإنشاء رسالة تمت تسويتها (على سبيل المثال: PatientIdExpression و ValueExpression وما إلى ذلك). قوالب IotJsonPathContent مشابهة لقوالب CalculatedContent باستثناء DeviceIdExpression و TimestampExpression غير مدعومين.

ملاحظة

JMESPath غير مدعوم من قبل قوالب IotJsonPathContent.

يتم تعريف التعبير على أنه:

<name of expression> : <the expression>

في المثال التالي، typeMatchExpression يتم تعريف على النحو التالي:

"templateType": "IotJsonPathContent",
"template": {
   "typeName": "heartrate",
   "typeMatchExpression": "$..[?(@heartRate)]",
...
}

إذا تم إعداد خدمة MedTech لاستيعاب رسائل الجهاز من مركز IoT، فلن يطلب منك استخدام قوالب IotJsonPathContent. يمكن استخدام قوالب CalculatedContent بافتراض أنك تحدد DeviceIdExpression و TimestampExpression بشكل صحيح.

تسمح قوالب IotJsonPathContent بمطابقة القيم واستخراجها من رسالة الجهاز المقروءة من مركز أحداث Azure Event Hubs من خلال التعبيرات التالية:

العنصر الوصف مثال على تعبير JSONPath
typeMatchExpression التعبير الذي تقيمه خدمة MedTech مقابل حمولة رسالة الجهاز. إذا وجدت الخدمة قيمة رمز مميز مطابقة، فإنها تعتبر القالب مطابقا. $..[?(@heartRate)]
patientIdExpression التعبير لاستخراج معرف المريض. مطلوب عند تعيين نوع الحل لخدمات MedTech إلى إنشاء، واختياري عند تعيين نوع الدقة لخدمة MedTech إلى بحث. $.SystemProperties.iothub-connection-device-id
encounterIdExpression اختياري: التعبير لاستخراج معرف المصادفة. $.Body.encounterId
correlationIdExpression اختياري: التعبير لاستخراج معرف الارتباط. يمكنك استخدام هذا الإخراج لتجميع القيم في ملاحظة واحدة في تعيين وجهة FHIR. $.Body.correlationId
values[].valueExpression التعبير لاستخراج القيمة المطلوبة. $.Body.heartRate

هام

ستستخدم خدمة MedTech معرف الجهاز المحدد في مركز IoT كمعرف جهاز مورد FHIR. إذا تم إعداد خدمة MedTech لاستخدام نوع دقة الهوية من البحث، يجب أن يكون مورد الجهاز مع معرف جهاز مطابق موجودا في خدمة FHIR وإلا سيحدث خطأ عند معالجة رسالة الجهاز. إذا تم تعيين نوع دقة الهوية لخدمة MedTech إلى Create، patientIdExpression فيجب تضمين في تعيين الجهاز بحيث يمكن إنشاء مورد المريض الجديد ومورد الجهاز إذا لم يكنا موجودين بالفعل.

ملاحظة

يحدد نوع الحل كيفية ربط خدمة MedTech لبيانات الجهاز بموارد الجهاز وموارد المريض. تقرأ خدمة MedTech موارد الجهاز والمريض من خدمة FHIR باستخدام معرفات الجهازومعرفات المرضى. إذا تم تحديد معرف مواجهة واستخراجه من حمولة بيانات الجهاز، يتم ربطه بالملاحظة إذا كان هناك مواجهة على خدمة FHIR بهذا المعرف. إذا تمت تسوية معرف المصادفة بنجاح، ولكن لا يوجد FHIR Encounter مع معرف المصادفة هذا، يتم طرح استثناء FhirResourceNotFound . لمزيد من المعلومات حول تكوين نوع دقة خدمة MedTech، راجع تكوين علامة التبويب الوجهة.

لغات التعبير

JSONPath هي لغة التعبير الافتراضية، ولا يتم دعم تضمين لغة تعبير داخل قالب IotJsonPathContent. إذا حاولت تحديد لغة التعبير في كائن تعبير، يفشل قالب IotJsonPathContent الذي يحتوي على كائن التعبير.

"templateType": "IotJsonPathContent",
   "template": {
      "typeName": "heartrate",
      "typeMatchExpression": "$..[?(@heartRate)]",
...
}

تلميح

لمزيد من المعلومات حول JSONPath، راجع JSONPath - XPath ل JSON. تستخدم قوالب IotJsonPathContent تنفيذ JSON .NET لحل تعبيرات JSONPath.

مثال

عندما تقوم خدمة MedTech بمعالجة رسالة جهاز، يتم استخدام القوالب الموجودة في CollectionContent لتقييم الرسالة. typeMatchExpression يتم استخدام لتحديد ما إذا كان يجب استخدام القالب لإنشاء رسالة تمت تسويتها من رسالة الجهاز أم لا. typeMatchExpression إذا تم تقييم إلى صحيح، فسيتم valueExpression استخدام القيمة لتحديد موقع قيم JSON واستخراجها من رسالة الجهاز وإنشاء رسالة تمت تسويتها.

تلميح

Visual Studio Code مع ملحق Azure IoT Hub هو أسلوب موصى به لإرسال رسائل جهاز IoT إلى مركز IoT للاختبار واستكشاف الأخطاء وإصلاحها.

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

في هذا المثال، نستخدم رسالة جهاز تلتقط heartRate البيانات:

{
    "PatientId": "patient1",
    "HeartRate" : "78"
}

ملاحظة

لتجنب تزييف هوية الجهاز في رسائل من جهاز إلى سحابة (D2C)، يثري Azure IoT Hub جميع رسائل الجهاز بخصائص إضافية قبل توجيهها إلى مركز الأحداث. على سبيل المثال: الخصائص: iothub-creation-time-utcوStemProperties: iothub-connection-device-id. لمزيد من المعلومات، راجع خصائص مكافحة الانتحال.

patientIdExpression مطلوب فقط لخدمات MedTech في وضع الإنشاء ؛ ومع ذلك، إذا كان يتم استخدام البحث ، يجب أن يكون مورد الجهاز مع معرف جهاز مطابق موجودا في خدمة FHIR الوجهة. تفترض هذه الأمثلة أن خدمة MedTech في وضع الإنشاء . لمزيد من المعلومات حول خصائص Create and LookupDestination، راجع تكوين علامة التبويب Destination.

يثري مركز IoT رسالة الجهاز ويوجهها إلى مركز الأحداث قبل أن تقرأ خدمة MedTech رسالة الجهاز من مركز الأحداث:

{
    "Body": {
        "PatientId": "patient1",
        "HeartRate": "78"
    },
    "SystemProperties": {
        "iothub-enqueuedtime": "2023-07-25T20:41:26.046Z",
        "iothub-connection-device-id": "sampleDeviceId"
    },
    "Properties": {
        "iothub-creation-time-utc": "2023-07-25T20:41:26.046Z"
    }
}   

نحن نستخدم تعيين الجهاز هذا لمرحلة التسوية:

{
    "templateType": "CollectionContent",
    "template": [
        {
            "templateType": "IotJsonPathContent",
            "template": {
                "typeName": "HeartRate",
                "typeMatchExpression": "$..[?(@Body.HeartRate)]",
                "patientIdExpression": "$.Body.PatientId",
                "values": [
                    {
                        "required": true,
                        "valueExpression": "$.Body.HeartRate",
                        "valueName": "HeartRate"
                    }
                ]
            }
        }
    ]    
}

ستبدو الرسالة التي تمت تسويتها الناتجة كما يلي بعد مرحلة التسوية:

{
    "type": "HeartRate",
    "occurrenceTimeUtc": "2023-07-25T20:41:26.046Z",
    "deviceId": "sampleDeviceId",
    "patientId": "patient1",
    "properties": [
        {
            "name": "HeartRate",
            "value": "78"
        }
    ]
}

تلميح

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

للمساعدة في إصلاح أخطاء خدمة MedTech، راجع استكشاف الأخطاء وإصلاحها باستخدام سجلات خدمة MedTech.

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

في هذه المقالة، تعلمت كيفية استخدام قوالب IotJsonPathContent مع تعيين جهاز خدمة MedTech.

لنشر خدمة MedTech مع تمكين توجيه رسائل الجهاز من خلال Azure IoT Hub، راجع

للحصول على نظرة عامة حول تعيين وجهة FHIR لخدمة MedTech، راجع

للحصول على نظرة عامة على نماذج التعيينات المستندة إلى سيناريو خدمة MedTech، راجع

FHIR® هي علامة تجارية مسجلة ل Health Level Seven International، مسجلة في مكتب العلامات التجارية في الولايات المتحدة وتستخدم بإذن منهم.