使用 MedTech 服務記錄針對錯誤進行疑難排解

注意

快速醫療保健互通性資源 (FHIR®) 是開放式醫療保健規格。

本文提供 MedTech 服務記錄中找到之錯誤的疑難排解步驟和修正。

提示

存取 MedTech 服務記錄是針對 MedTech 服務的整體健康情況和效能進行疑難排解和評估的必要條件。

若要瞭解如何存取 MedTech 服務記錄,請參閱 如何啟用 MedTech 服務的診斷設定

MedTech 服務錯誤嚴重性

這個屬性代表發生錯誤的嚴重性。 以下是此屬性的可能值清單:

嚴重性 描述
非封鎖 資料流程程式發生問題,但不會停止處理裝置訊息。
封鎖 資料流程程式中有問題,而且預期不會處理任何裝置訊息。

MedTech 服務正在執行的作業

這個屬性代表發生錯誤時,MedTech 服務所執行的作業。 作業通常代表處理裝置訊息的資料流程階段。 資料流程階段會顯示在錯誤記錄檔中作為 OperationName。 以下是此屬性的可能值清單:

OperationName 描述
正規化 裝置訊息正規化的資料流程階段。
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,則錯誤可能是裝置訊息中指定裝置識別碼的 Device FHIR 資源不會參考 Patient FHIR 資源。 FHIR 資源的類型 (例如,錯誤訊息中指定了裝置、病患、遇到或觀察) 。 注意:只有在 MedTech 服務的解析類型設定為 [查閱] 時,才會發生此錯誤。

嚴重性:非封鎖

修正:確定您的裝置訊息包含 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 Resource Manager (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 值和 2 userAssignedIdentities 的屬性,) 包含使用者指派受控識別名稱的值 "userAssigned" , (請參閱將使用者指派的受控識別指派給 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 服務記錄針對錯誤進行疑難排解和修正。

若要瞭解 MedTech 服務常見問題 (常見問題) ,請參閱

FHIR® 是「健康等級七國際」的注冊商標,在美國商標辦公室註冊,並搭配其許可權使用。