Share via


MedTech hizmeti cihaz eşlemesi ile IotJsonPathContent şablonlarını kullanma

Not

Fast Healthcare Interoperability Resources (FHIR®), açık bir sağlık hizmeti belirtimidir.

Bu makalede, MedTech hizmeti cihaz eşlemesi içinde IotJsonPathContent şablonlarının nasıl kullanılacağına genel bir bakış sağlanır.

IotJsonPathContent şablonunun temelleri

MedTech hizmeti bir Azure IoT Hubyönlendirilen cihaz iletilerini alırken IotJsonPathContent şablonları kullanılabilir. Cihaz eşlemesinde IotJsonPathContent şablonları kullanıldığında, MedTech hizmeti ioT hub'ı tarafından sağlanan meta verilerden cihaz kimliğini ve ölçüm zaman damgasını ayıklar. DeviceIdExpression ve TimestampExpression, IotJsonPathContent şablonlarına eklenmemelidir.

MedTech hizmeti IotJsonPathContent şablonları JSON ifade dili JSONPath'i destekler. İfadeler, belirli bir JSON cihaz iletisiyle hangi şablonun kullanılacağını belirlemek (örneğin: TypeMatchExpression) ve normalleştirilmiş ileti oluşturmak için gereken belirli değerleri ayıklamak için kullanılır (örneğin: PatientIdExpression, ValueExpression vb.). IotJsonPathContent şablonları, DeviceIdExpression ve TimestampExpression desteklenmemesi dışında CalculatedContent şablonlarına benzer.

Not

JMESPath, IotJsonPathContent şablonları tarafından desteklenmez.

İfade şöyle tanımlanır:

<name of expression> : <the expression>

Aşağıdaki örnekte şu typeMatchExpression şekilde tanımlanmıştır:

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

MedTech hizmetiniz bir IoT hub'ından cihaz iletilerini almak için ayarlandıysa, IotJsonPathContent şablonlarını kullanmanız gerekmez. DeviceIdExpression ve TimestampExpression'ı doğru tanımladığınız varsayılarak CalculatedContent şablonları kullanılabilir.

IotJsonPathContent şablonları, aşağıdaki ifadeler aracılığıyla bir Azure Event Hubs olay hub'ından okunan bir cihaz iletisinde eşleştirmeye ve bu iletiden değerleri ayıklamaya olanak sağlar:

Öğe Açıklama JSONPath ifade örneği
typeMatchExpression MedTech hizmetinin cihaz iletisi yüküne göre değerlendirdiğini ifade eder. Hizmet eşleşen bir belirteç değeri bulursa, şablonu bir eşleşme olarak kabul eder. $..[?(@heartRate)]
patientIdExpression Hasta tanımlayıcısını ayıklamak için ifade. MedTech hizmetlerinin Çözümleme türüOluştur olarak ayarlandığında ve MedTech hizmetinin Çözümleme türüArama olarak ayarlandığında isteğe bağlı olarak gereklidir. $.SystemProperties.iothub-connection-device-id
encounterIdExpression İsteğe bağlı: Karşılaşma tanımlayıcısını ayıklamak için ifade. $.Body.encounterId
correlationIdExpression İsteğe bağlı: Bağıntı tanımlayıcısını ayıklamak için ifade. FHIR hedef eşlemesinde değerleri tek bir gözlemde gruplandırmak için bu çıkışı kullanabilirsiniz. $.Body.correlationId
values[].valueExpression İstediğiniz değeri ayıklamak için ifade. $.Body.heartRate

Önemli

MedTech hizmeti, IoT hub'ında tanımlanan cihaz kimliğini FHIR kaynak cihaz tanımlayıcısı olarak kullanır. MedTech hizmeti , Arama'nın kimlik çözümleme türünü kullanacak şekilde ayarlandıysa, FHIR hizmetinde eşleşen cihaz tanımlayıcısına sahip bir Cihaz kaynağı bulunmalıdır , aksi takdirde cihaz iletisi işlendiğinde bir hata oluşur. MedTech hizmetinin kimlik çözümleme türü Oluştur olarak ayarlandıysa, yeni bir patientIdExpression Hasta kaynağı ve Cihaz kaynağı yoksa oluşturulabilmesi için cihaz eşlemesine eklenmelidir.

Not

Çözüm türü, MedTech hizmetinin cihaz verilerini Cihaz kaynakları ve Hasta kaynaklarıyla nasıl ilişkilendirir belirtir. MedTech hizmeti, cihaz tanımlayıcılarını ve hasta tanımlayıcılarını kullanarak FHIR hizmetinden Cihaz ve Hasta kaynaklarını okur. Bir karşılaşma tanımlayıcısı belirtilir ve cihaz veri yükünden ayıklanırsa, bu tanımlayıcıya sahip FHIR hizmetinde bir karşılaşma olup olmadığını gözleme bağlanır. Karşılaşma tanımlayıcısı başarıyla normalleştirilirse ancak bu tanımlayıcıyla FHIR Karşılaşması yoksa, FhirResourceNotFound özel durumu oluşturulur. MedTech hizmeti Çözümleme türünü yapılandırma hakkında daha fazla bilgi için bkz. Hedef sekmesini yapılandırma.

İfade dilleri

JSONPath varsayılan ifade dilidir ve IotJsonPathContent şablonuna bir ifade dilinin eklenmesi desteklenmez. İfade nesnesinde ifade dilini belirtmeye çalışırsanız, ifade nesnesini içeren IotJsonPathContent şablonu başarısız olur.

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

İpucu

JSONPath hakkında daha fazla bilgi için bkz. JSONPath - JSON için XPath. IotJsonPathContent şablonları , JSONPath ifadelerini çözümlemek için JSON .NET uygulamasını kullanır.

Örnek

MedTech hizmeti bir cihaz iletisini işlerken, CollectionContent içindeki şablonlar iletiyi değerlendirmek için kullanılır. typeMatchExpression, şablonun cihaz iletisinden normalleştirilmiş bir ileti oluşturmak için kullanılıp kullanılmayacağını belirlemek için kullanılır. typeMatchExpression değeri true olarak değerlendirilirse, cihaz iletisinden valueExpression JSON değerlerini bulup ayıklamak ve normalleştirilmiş bir ileti oluşturmak için değeri kullanılır.

İpucu

Azure IoT Hub uzantısıyla Visual Studio Code, test ve sorun giderme amacıyla IoT hub'ınıza IoT cihaz iletileri göndermek için önerilen bir yöntemdir.

MedTech hizmet cihazı ve FHIR hedef eşlemelerini oluşturma, güncelleştirme ve sorunlarını giderme konusunda yardım için MedTech hizmet Eşlemesi hata ayıklayıcısını kullanabilirsiniz. Eşleme hata ayıklayıcısı, Azure portal bırakmak zorunda kalmadan satır içi ayarlamaları gerçek zamanlı olarak kolayca görüntülemenizi ve yapmanızı sağlar. Eşleme hata ayıklayıcısı, normalleştirilmiş iletilere işlendikten ve FHIR Gözlemlerine dönüştürüldükten sonra nasıl görüneceğini görmek için test cihazı iletilerini karşıya yüklemek için de kullanılabilir.

Bu örnekte, verileri yakalayan heartRate bir cihaz iletisi kullanıyoruz:

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

Not

Cihazdan buluta (D2C) iletilerde cihaz yanıltmasını önlemek için, Azure IoT Hub tüm cihaz iletilerini olay hub'ına yönlendirmeden önce ek özelliklerle zenginleştirir. Örneğin: Özellikler: iothub-creation-time-utc ve SystemProperties: iothub-connection-device-id. Daha fazla bilgi için bkz. Kimlik sahtekarlığına karşı koruma özellikleri.

patientIdExpression yalnızca Oluşturma modundaki MedTech hizmetleri için gereklidir; ancak Arama kullanılıyorsa, hedef FHIR hizmetinde eşleşen cihaz tanımlayıcısı olan bir Cihaz kaynağı bulunmalıdır. Bu örneklerde MedTech hizmetinizin Oluşturma modunda olduğu varsayılır. Oluşturma ve AramaHedefi özellikleri hakkında daha fazla bilgi için bkz. Hedef sekmesini yapılandırma.

IoT hub'ı, MedTech hizmeti cihaz iletisini olay hub'ından okumadan önce cihaz iletisini zenginleştirir ve olay hub'ına yönlendirir:

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

Normalleştirme aşaması için bu cihaz eşlemesini kullanıyoruz:

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

Sonuçta elde edilen normalleştirilmiş ileti, normalleştirme aşamasından sonra şöyle görünür:

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

İpucu

Yaygın MedTech hizmeti dağıtım hatalarını düzeltme konusunda yardım için bkz. MedTech hizmeti dağıtım hatalarını giderme.

MedTech hizmet hatalarını düzeltme konusunda yardım için bkz. MedTech hizmet günlüklerini kullanarak hataları giderme.

Sonraki adımlar

Bu makalede, MedTech hizmeti cihaz eşlemesi ile IotJsonPathContent şablonlarını kullanmayı öğrendiniz.

MedTech hizmetini bir Azure IoT Hub aracılığıyla cihaz ileti yönlendirmesi etkinleştirilmiş olarak dağıtmak için bkz.

MedTech hizmeti FHIR hedef eşlemesine genel bakış için bkz.

MedTech hizmeti senaryo tabanlı eşleme örneklerine genel bakış için bkz.

FHIR®, Health Level Seven International'ın KAYıTLı ticari markasıdır, ABD Ticari Marka Ofisi'nde kayıtlıdır ve izinleri ile birlikte kullanılır.