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

使用 MedTech 服务日志排查错误

重要

MedTech 服务的弃用于 2025 年 5 月 3 日启动。 如果使用 MedTech 服务不再是优先级,请取消预配实例,可在 此处找到该实例。 以下区域中的活动实例的支持将于 2028 年 5 月 3 日结束:美国西部 2、英国南部、西欧、美国东部、澳大利亚东部、美国东部 2、印度中部、北欧。 可在 此处找到 MedTech 服务的开放源代码版本。

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

小窍门

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

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

MedTech 服务错误严重性

此属性表示发生的错误的严重性。 下面是此属性的可能值列表:

Severity Description
非阻止 数据流过程中存在问题,但设备消息处理不会停止。
阻塞 数据流过程中存在问题,并且不会处理任何设备消息。

MedTech 服务正在执行的作

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

OperationName Description
正常化 设备消息规范化的数据流阶段。
FHIRConversion 分组规范化数据的数据流阶段将转换为观察资源。

注释

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

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

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

在 MedTech 服务日志中,使用 LogType of HealthCheckException 记录运行状况检查失败,并且失败的运行状况检查的名称记录在 消息中。

运行状况检查的名称在下表中列出,下表下面描述了其任何故障的修复:

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 资源未引用患者 FHIR 资源。 FHIR 资源的类型(例如设备、患者、遇到或观察)在错误消息中指定。 注意:仅当 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

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

严重性:非阻止

修复:确保设备消息中的值根据 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"的属性(请参阅 GitHubazuredeploy.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 资源的类型(例如设备、患者、遇到或观察)在错误消息中指定。

严重性:非阻止

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

NormalizationDataMappingException

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

严重性:阻止

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

PatientDeviceMismatchException

说明:FHIR 目标中的设备资源引用患者 FHIR 资源,该资源具有与设备消息中给出的患者标识符不匹配的标识符(这意味着,设备已链接到另一名患者)。

严重性:非阻止

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

ResourceIdentityNotDefinedException

说明:当设备消息中不存在 FHIR 资源的标识符,或者在设备映射中未配置用于分析 FHIR 资源的标识符的表达式时,将发生此错误。 FHIR 资源的类型(例如设备、患者、遇到或观察)在错误消息中指定。 注意:仅当 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 服务的常见问题解答

注释

FHIR® 是 HL7 的注册商标,用于 HL7 的权限。