你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 MedTech 服务日志排查错误

注意

快速医疗保健互操作性资源 (FHIR®) 是一个开放的医疗保健规范。

本文提供 MedTech 服务日志中发现的错误的故障排除步骤和修复。

提示

有权访问 MedTech 服务日志对于排查和评估 MedTech 服务的整体运行状况和性能至关重要。

若要了解如何访问 MedTech 服务日志,请参阅 如何为 MedTech 服务启用诊断设置

MedTech 服务错误严重性

此属性表示出现的错误的严重级别。 下面是此属性的可能值列表:

严重性 说明
非阻塞 数据流过程中存在问题,但设备消息的处理不会停止。
阻塞 数据流过程中存在问题,预计不会处理任何设备消息。

MedTech 服务执行的操作

此属性表示发生错误时 MedTech 服务执行的操作。 操作通常表示处理设备消息的数据流阶段。 数据流阶段在错误日志中显示为 OperationName。 下面是此属性的可能值列表:

OperationName 说明
标准化 规范化设备消息的数据流阶段。
FHIRConversion 分组规范化数据转换为观察资源的数据流阶段。

注意

若要了解 MedTech 服务设备消息数据转换,请参阅 MedTech 服务设备数据处理阶段概述

MedTech 服务运行状况检查异常和修复

将自动定期执行运行状况检查,以检查 MedTech 服务是否可以规范化和转换设备消息。 如果运行状况检查未通过,则会发生 HealthCheckException 并记录。

在 MedTech 服务日志中,运行状况检查失败记录为 HealthCheckExceptionLogType,失败的运行状况检查的名称记录在消息中。

下表中列出了运行状况检查的名称,其任何故障的修复方法如下所述:

HealthCheck
CredentialStore:IsCustomerFacingMiCredentialBundlePresent
ExternalEventHub:IsAuthenticated
FhirService:IsAuthenticated

注意

虽然 HealthCheckException 是一个阻塞性问题,但它可能是暂时性的,无需干预即可自行解决。

CredentialStore:IsCustomerFacingMiCredentialBundlePresent

说明:检查是否已启用 MedTech 服务的系统分配托管标识,或者是否配置了用户分配的托管标识。

严重性:阻止

修复:按照 ManagedIdentityCredentialNotFound 中所述的修复操作。

ExternalEventHub:IsAuthenticated

说明:检查事件中心是否有效,以及 MedTech 服务是否有权访问它。

严重性:阻止

修复:遵循 InvalidEventHubException 中所述的修补程序,确保事件中心有效。 然后,按照 UnauthorizedAccessEventHubException 中所述的修补程序,确保 MedTech 服务有权访问事件中心。

FhirService:IsAuthenticated

说明:检查 FHIR 目标是否有效,以及 MedTech 服务是否对它具有写入访问权限。

严重性:阻止

修复:遵循 InvalidFhirServiceException 中所述的修补程序,确保 FHIR 目标有效。 然后,按照 UnauthorizedAccessFhirServiceException 中所述的修补程序,确保 MedTech 服务对 FHIR 目标具有写入访问权限。

MedTech 服务错误和修复

如果在规范化或转换设备消息时发生错误,则会记录该错误。

在 MedTech 服务日志中,错误的名称记录在 LogType 中。

下表中列出了错误的名称,表下方提供了这些错误的名称:

LogType
CorrelationIdNotDefinedException
FhirDataMappingException
FhirResourceNotFoundException
IncompatibleDataException
InvalidDataFormatException
InvalidEventHubException
InvalidFhirServiceException
InvalidQuantityFhirValueException
InvalidTemplateException
ManagedIdentityCredentialNotFound
MultipleResourceFoundException
NormalizationDataMappingException
PatientDeviceMismatchException
ResourceIdentityNotDefinedException
TemplateExpressionException
TemplateNotFoundException
UnauthorizedAccessEventHubException
UnauthorizedAccessFhirServiceException

CorrelationIdNotDefinedException

说明:如果在设备映射中指定了 CorrelationIdExpression (这是分析设备消息) 相关标识符的表达式,则当设备消息中不存在相关标识符或设备映射中未正确配置 CorrelationIdExpression 时,会发生此错误。 注意:CorrelationIdExpression 是 可选的。 将共享相同设备、类型和相关标识符的度量分组到单个 FHIR 观察资源中时,会发生此错误。

严重性:阻止

修复:

  • 如果需要 CorrelationIdExpression:确保设备消息包含相关标识符。 此外,在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡,确保correlationIdExpression设备映射中的值存在,并在设备消息中正确引用相关标识符的键。

  • 如果不需要 CorrelationIdExpression:在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡,并删除设备映射中包含的行correlationIdExpression

FhirDataMappingException

说明:使用 FHIR 目标映射转换规范化数据时出错。 如果未在 FHIR 目标映射中定义与规范化数据对应的模板,则会发生此错误。

严重性:阻止

修复:在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡和“目标”边栏选项卡,确保对于设备映射中的每个模板,FHIR 目标映射中有一个具有相同typeName值的模板。 此外,修复在“ 目标 ”边栏选项卡中编辑和保存 FHIR 目标映射时显示的任何验证错误。

FhirResourceNotFoundException

说明:在 FHIR 目标中找不到设备消息中给定标识符的 FHIR 资源时,会发生此错误。 如果 FHIR 资源的类型为 Patient,则错误可能是设备消息中给定的设备标识符的设备 FHIR 资源未引用 Patient FHIR 资源。 错误消息中指定了 FHIR 资源的类型 (例如 Device、Patient、Encounter 或 Observation) 。 注意:仅当 MedTech 服务的解析类型设置为 Lookup 时,才会发生此错误。

严重性:非阻塞

修复:确保设备消息包含错误消息中指定的类型的 FHIR 资源的标识符。 此外,在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡,确保{FHIR resource’s type specified in the error message}IdExpression (设备 deviceIdExpression 映射中的) 值存在,并在设备消息中正确引用标识符的键。

IncompatibleDataException

说明:设备消息与设备映射 (存在不兼容性,例如,设备消息和/或设备映射) 中可能缺少或空白所需的属性。 错误消息中指定了错误的设备映射属性。

严重性:非阻塞性

修复:确保设备消息包含:

  • 由错误消息中指定的设备映射属性引用的密钥。

  • 键的非空值。

此外,在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡,并确保错误消息中指定的设备映射属性具有正确引用设备消息中的相应键的值。

InvalidDataFormatException

说明:设备消息的格式不能解析为 JSON 对象。

严重性:非阻塞性

修复:确保设备消息采用 JSON 格式。 确认 JSON 格式的一种方法是使用联机 JSON 验证程序。

InvalidEventHubException

说明:由于以下原因之一,事件中心无效:

  • 至少有一个事件中心详细信息 (事件中心命名空间、事件中心名称或使用者组) 格式不正确或不存在。 事件中心命名空间应包含事件中心,事件中心应包含使用者组。

  • 多个服务正在从事件中心使用者组读取数据。

严重性:阻止

修复:在Azure 门户,转到 MedTech 服务的“事件中心”边栏选项卡,并确保填写事件中心详细信息的所有字段。 若要确保只有 MedTech 服务从使用者组读取数据,请执行以下任一操作:

  • 浏览服务并确保 MedTech 服务是唯一访问 使用者组的服务。

  • 转到Azure 门户中的事件中心,创建只有 MedTech 服务访问的新使用者组,转到 MedTech 服务的“事件中心”边栏选项卡,然后在“使用者组”字段中选择新的使用者

InvalidFhirServiceException

说明:FHIR 目标无效,因为它的格式不正确、不存在或不是 Azure Health Data Services 中的 FHIR 服务。

严重性:阻止

修复:在Azure 门户,转到 MedTech 服务的“目标”边栏选项卡,并确保正确填写 FHIR 服务器字段。

InvalidQuantityFhirValueException

说明:数量资源数据类型的值无效 (例如,它可能采用) 不支持的格式。 错误消息中指定了错误值。

严重性:非阻塞性

修复:根据 FHIR Quantity.value 规范,确保设备消息中的值采用受支持的数据类型。

InvalidTemplateException

说明:设备映射或 FHIR 目标映射中存在模板错误。 错误包括:

  • 模板的模板类型 (缺少属性) 表示 templateType 或具有空值。

  • (根集合模板下) 属性表示 template 的模板没有 JSON 对象(由大括号 {}标识)作为其值。

  • 缺少) 属性表示 typeName 的模板类型 (或具有空值。

  • 映射中的多个模板具有相同的类型, (属性 typeName) 具有相同的值。

错误消息中指定了模板的类型和错误行。

严重性:阻止

修复:在Azure 门户,转到“设备映射”边栏选项卡 (如果错误出现在设备映射) 中,则转到“目标”边栏选项卡, (如果错误位于 MedTech 服务的 FHIR 目标映射) 中,请转到“目标”边栏选项卡,并更正错误消息中指定的模板。

ManagedIdentityCredentialNotFound

说明:当 MedTech 服务连接到事件中心时,MedTech 服务的系统分配托管标识已禁用或不存在,或者未为 MedTech 服务配置用户分配的托管标识。 注意:如果使用配置错误的 Azure 资源管理器 (ARM) 模板部署了 MedTech 服务,则可能会出现此错误。

严重性:阻止

修复:修复取决于要使用的托管标识的类型。 可以在托管标识类型中查看系统分配的托管标识与用户分配 的托管标识之间的差异。 注意:MedTech 服务仅支持一个标识:系统分配的托管标识或单个用户分配的托管标识。  

如果要使用系统分配的托管标识:

  1. 如果要使用 ARM 模板部署 MedTech 服务,请确保 ARM 模板中的 MedTech 服务资源具有identity包含type"SystemAssigned"的属性 (请参阅 GitHub) 上 azuredeploy.json 文件中的示例 ARM 模板。

  2. 在Azure 门户,转到 MedTech 服务的“标识”边栏选项卡,转到“系统分配”选项卡,并确保执行以下操作:

    • 状态” 设置为 “开”。
    • Azure 角色分配显示事件中心具有分配给 MedTech 服务的系统分配托管标识的Azure 事件中心数据接收者角色。 如果没有,请按照这些 说明进行操作。 

如果要使用用户分配的托管标识:

  1. 确保具有用户分配的托管标识。 如果没有,请使用 Azure 门户ARM 模板创建一个。

  2. 如果要使用 ARM 模板部署 MedTech 服务,请确保 ARM 模板中的 MedTech 服务资源具有 identity 包含 1) type"userAssigned" 和 2) userAssignedIdentities 包含用户分配的托管标识名称的属性 (请参阅将 用户分配的托管标识分配给 Azure VM) 中的示例。

  3. 在Azure 门户,转到 MedTech 服务的“标识”边栏选项卡,转到“用户分配”选项卡,并确保显示用户分配的托管标识。 如果没有,请添加用户分配的托管标识 (请参阅将 用户分配的托管标识分配给现有 VM) 的示例。

  4. 在Azure 门户,转到事件中心,将Azure 事件中心数据接收者角色分配给 MedTech 服务的用户分配的托管标识 (请参阅说明,但使用用户分配的托管标识而不是系统分配的托管标识) 。

MultipleResourceFoundException

说明:在 FHIR 目标中找到具有相同标识符的多个 FHIR 资源(从设备消息中获取),但应只找到一个 FHIR 资源。 错误消息中指定 FHIR 资源的类型 (例如 Device、Patient、Encounter 或 Observation) 。

严重性:非阻塞性

修复:确保标识符未分配给错误消息中指定的类型的多个 FHIR 资源。

NormalizationDataMappingException

说明:使用设备映射规范化设备消息时出错。

严重性:阻止

修复:在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡,修复编辑和保存设备映射时显示的任何验证错误。

PatientDeviceMismatchException

说明:FHIR 目标中的设备资源引用患者 FHIR 资源,其标识符与设备消息中提供的患者标识符不匹配 (意思是,该设备链接到另一个患者) 。

严重性:非阻塞性

修复:确保未将患者标识符分配给多个设备。

ResourceIdentityNotDefinedException

说明:当设备消息中不存在 FHIR 资源的标识符,或者在设备映射中未配置用于从设备消息分析 FHIR 资源的标识符的表达式时,会发生此错误。 错误消息中指定 FHIR 资源的类型 (例如 Device、Patient、Encounter 或 Observation) 。 注意:仅当 MedTech 服务的解析类型设置为 “创建”时,才会发生此错误。

严重性:非阻塞性

修复:确保设备消息包含错误消息中指定的类型的 FHIR 资源的标识符。 此外,在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡,确保{FHIR resource’s type specified in the error message}IdExpression (设备 deviceIdExpression 映射中的) 值存在,并在设备消息中正确引用标识符的键。

TemplateExpressionException

说明:设备映射内模板中的表达式出错。 错误包括:

  • 缺少必需的表达式。

  • 不支持表达式的语言 (由 language 属性表示) 。 所有模板类型都支持 JSONPath 中的表达式;只有 CalculatedContent 模板类型支持 JMESPath 中的表达式。

  • 表达式的值 (属性 value) 表示,根据表达式语言的语法,格式不正确。

错误消息中指定了包含错误的表达式和行。

严重性:阻止

修复:在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡,并更正设备映射中的错误消息中指定的表达式。

TemplateNotFoundException

说明:设备映射中的模板在 FHIR 目标映射中没有具有相同类型的匹配模板。 错误消息中指定了模板的类型。

严重性:非阻塞性

修复:在Azure 门户,转到 MedTech 服务的“设备映射”边栏选项卡和“目标”边栏选项卡,并确保对于设备映射中的每个模板,FHIR 目标映射中有一个具有相同typeName值的模板。

UnauthorizedAccessEventHubException

说明:MedTech 服务缺少对事件中心的访问权限。

严重性:阻止

修复:在Azure 门户,转到事件中心,并将Azure 事件中心数据接收器角色分配给 MedTech 服务, (请参阅) 说明

UnauthorizedAccessFhirServiceException

说明:MedTech 服务缺少对 FHIR 目标的写入访问权限。

严重性:阻止

修复:在Azure 门户,转到 FHIR 服务,并将 FHIR 数据编写者角色分配给 MedTech 服务 (请参阅) 说明

注意

如果无法使用此故障排除指南修复 MedTech 服务问题,可以打开 Azure 技术支持 票证,将设备消息 和设备和 FHIR 目标映射 的副本附加到请求,以便更好地帮助确定问题。

后续步骤

本文介绍了如何使用 MedTech 服务日志排查和修复错误。

若要了解 MedTech 服务常见问题 (常见问题解答) ,请参阅

FHIR® 是 Health Level Seven International 的注册商标,在美国商标局注册,经其许可使用。