MedTech 서비스 디바이스 매핑과 함께 IotJsonPathContent 템플릿을 사용하는 방법
이 문서에서는 MedTech 서비스 디바이스 매핑 내에서 IotJsonPathContent 템플릿을 사용하는 방법을 간략하게 설명합니다.
IotJsonPathContent 템플릿 기본 사항
IotJsonPathContent 템플릿은 MedTech 서비스가 Azure IoT Hub에서 라우팅된 디바이스 메시지를 수집할 때 사용할 수 있습니다. IotJsonPathContent 템플릿이 디바이스 매핑 내에서 사용되는 경우 MedTech 서비스는 IoT 허브에서 제공하는 메타데이터에서 디바이스 ID와 측정 타임스탬프를 추출합니다. DeviceIdExpression 및 TimestampExpression은 IotJsonPathContent 템플릿에 포함되어서는 안 됩니다.
MedTech 서비스 IotJsonPathContent 템플릿은 JSON 식 언어 JSONPath를 지원합니다. 식은 지정된 JSON 디바이스 메시지(예: TypeMatchExpression)와 함께 사용할 템플릿을 식별하고 정규화된 메시지(예: PatientIdExpression, ValueExpression 등)를 만드는 데 필요한 특정 값을 추출하는 데 사용됩니다. IotJsonPathContent 템플릿은 DeviceIdExpression 및 TimestampExpression이 지원되지 않는다는 점을 제외하면 CalculatedContent 템플릿과 유사합니다.
참고 항목
JMESPath는 IotJsonPathContent 템플릿에서 지원되지 않습니다.
식은 다음과 같이 정의됩니다.
<name of expression> : <the expression>
다음 예에서 typeMatchExpression
은 다음과 같이 정의됩니다.
"templateType": "IotJsonPathContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": "$..[?(@heartRate)]",
...
}
MedTech 서비스가 IoT 허브에서 디바이스 메시지를 수집하도록 설정된 경우 IotJsonPathContent 템플릿을 사용할 필요가 없습니다. DeviceIdExpression 및 TimestampExpression을 올바르게 정의한 경우 CalculatedContent 템플릿을 사용할 수 있습니다.
IotJsonPathContent 템플릿을 사용하면 다음 식을 통해 Azure Event Hubs Event Hubs에서 읽은 디바이스 메시지에서 값을 일치시키고 추출할 수 있습니다.
요소 | 설명 | JSONPath 식 예 |
---|---|---|
typeMatchExpression | MedTech 서비스가 디바이스 메시지 페이로드에 대해 평가하는 식입니다. 서비스가 일치하는 토큰 값을 찾으면 템플릿이 일치하는 것으로 간주합니다. | $..[?(@heartRate)] |
patientIdExpression | 환자 ID를 추출하는 식입니다. MedTech 서비스의 해결 유형이 만들기로 설정된 경우에는 필수이고, MedTech 서비스의 해결 유형이 조회로 설정된 경우 선택 사항입니다. | $.SystemProperties.iothub-connection-device-id |
encounterIdExpression | 선택 사항: 우대 식별자를 추출하는 식입니다. | $.Body.encounterId |
correlationIdExpression | 선택 사항: 상관 관계 식별자를 추출하는 식입니다. 이 출력을 사용하여 FHIR® 대상 매핑에서 값을 단일 관찰로 그룹화할 수 있습니다. | $.Body.correlationId |
values[].valueExpression | 원하는 값을 추출하는 식입니다. | $.Body.heartRate |
Important
MedTech 서비스는 IoT 허브에 정의된 디바이스 ID를 FHIR 리소스 디바이스 식별자로 사용합니다. MedTech 서비스가 조회의 ID 해결 유형을 사용하도록 설정된 경우 일치하는 디바이스 식별자가 있는 디바이스 리소스가 FHIR 서비스에 반드시 존재해야 합니다. 그렇지 않으면 디바이스 메시지가 처리될 때 오류가 발생합니다. MedTech 서비스의 ID 확인 형식이 만들기로 설정된 경우 새 환자 리소스와 디바이스 리소스가 아직 존재하지 않는 경우 만들어질 수 있도록 디바이스 매핑에 patientIdExpression
을 포함해야 합니다.
참고 항목
해결 형식은 MedTech 서비스가 디바이스 데이터를 디바이스 리소스 및 환자 리소스와 연결하는 방법을 지정합니다. MedTech 서비스는 디바이스 식별자 및 환자 ID를 사용하여 FHIR 서비스에서 디바이스 및 환자 리소스를 읽습니다. 우대 식별자가 지정되고 디바이스 데이터 페이로드에서 추출되는 경우 해당 식별자가 있는 FHIR 서비스에 조우가 존재하면 관찰에 연결됩니다. 우대 식별자가 성공적으로 정규화되었지만 해당 우대 식별자가 있는 FHIR 우대가 없으면 FhirResourceNotFound 예외가 발생합니다. MedTech 서비스 해결 형식 구성에 대한 자세한 내용은 대상 탭 구성을 참조하세요.
식 언어
JSONPath는 기본 식 언어이며, IotJsonPathContent 템플릿 내에 식 언어를 포함하는 것은 지원되지 않습니다. 식 개체에 식 언어를 지정하려고 하면 식 개체가 포함된 IotJsonPathContent 템플릿이 실패합니다.
"templateType": "IotJsonPathContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": "$..[?(@heartRate)]",
...
}
팁
JSONPath에 대한 자세한 내용은 JSONPath - JSON용 XPath를 참조하세요. IotJsonPathContent 템플릿은 JSONPath 식을 확인하기 위해 JSON .NET 구현을 사용합니다.
예시
MedTech 서비스가 디바이스 메시지를 처리할 때 CollectionContent의 템플릿을 사용하여 메시지를 평가합니다. typeMatchExpression
은 디바이스 메시지에서 정규화된 메시지를 만드는 데 템플릿을 사용해야 하는지 여부를 결정하는 데 사용됩니다. typeMatchExpression
이 true로 평가되면 valueExpression
값을 사용하여 디바이스 메시지에서 JSON 값을 찾아 추출하고 정규화된 메시지를 만듭니다.
팁
Azure IoT Hub 확장 기능이 포함된 Visual Studio Code는 테스트 및 문제 해결을 위해 IoT 디바이스 메시지를 IoT Hub에 보내는 데 권장되는 방법입니다.
MedTech 서비스 디바이스 및 FHIR 대상 매핑 만들기, 업데이트, 문제 해결에 도움을 받으려면 MedTech 서비스 매핑 디버거를 사용할 수 있습니다. 매핑 디버거를 사용하면 Azure Portal을 종료하지 않고도 실시간으로 쉽게 확인하고 인라인 조정할 수 있습니다. 매핑 디버거는 테스트 디바이스 메시지를 업로드하여 해당 메시지가 정규화된 메시지로 처리되고 FHIR Observation으로 변환된 후 어떻게 보이는지 확인하는 데에도 사용할 수 있습니다.
이 예에서는 heartRate
데이터를 캡처하는 디바이스 메시지를 사용하고 있습니다.
{
"PatientId": "patient1",
"HeartRate" : "78"
}
참고 항목
D2C(디바이스-클라우드) 메시지에서 디바이스 스푸핑을 방지하기 위해 Azure IoT Hub는 이벤트 허브로 라우팅하기 전에 모든 디바이스 메시지를 추가 속성으로 보강합니다. 예: 속성: iothub-creation-time-utc
및 시스템 속성: iothub-connection-device-id
. 자세한 내용은 스푸핑 방지 속성을 참조하세요.
patientIdExpression
은 만들기 모드의 MedTech 서비스에만 필요합니다. 그러나 Lookup을 사용하는 경우 일치하는 디바이스 식별자가 있는 디바이스 리소스가 대상 FHIR 서비스에 있어야 합니다. 이 예에서는 MedTech 서비스가 만들기 모드에 있다고 가정합니다. 만들기 및 조회대상 속성에 대한 자세한 내용은 대상 탭 구성을 참조하세요.
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 서비스 로그를 사용하여 오류 문제 해결을 참조하세요.
다음 단계
참고 항목
FHIR®은 HL7의 등록 상표이며, HL7의 사용 허가 하에 사용됩니다.