MedTech サービス ログを使用したエラーのトラブルシューティング
Note
Fast Healthcare Interoperability Resources (FHIR®) は、オープンな医療仕様です。
この記事では、MedTech サービス ログで見つかったエラーのトラブルシューティング手順と修正プログラムについて説明します。
ヒント
MedTech サービスの全体的な正常性とパフォーマンスのトラブルシューティングと評価には、MedTech サービス ログにアクセスすることが不可欠です。
MedTech サービス ログにアクセスする方法については、「 MedTech サービスの診断設定を有効にする方法」を参照してください。
MedTech サービス エラーの重大度
このプロパティは、発生したエラーの重大度を表します。 このプロパティで使用できる値の一覧を次に示します。
重大度 | 説明 |
---|---|
非ブロッキング | データ フロー プロセスに問題が存在しますが、デバイス メッセージの処理は停止しません。 |
ブロッキング | データ フロー プロセスに問題が存在し、デバイス メッセージの処理は想定されません。 |
MedTech サービスによって実行される操作
このプロパティは、エラーが発生したときに MedTech サービスによって実行される操作を表します。 通常、操作は、デバイス メッセージが処理されるデータ フロー ステージを表します。 データ フロー ステージは、エラー ログに OperationName として表示されます。 このプロパティで使用できる値の一覧を次に示します。
OperationName | 説明 |
---|---|
正規化 | デバイス メッセージが正規化されるデータ フロー ステージ。 |
FHIRConversion | グループ化された正規化されたデータが Observation リソースに変換されるデータ フロー ステージ。 |
Note
MedTech サービス デバイス メッセージ データ変換の詳細については、「 MedTech サービス デバイスのデータ処理ステージの概要」を参照してください。
MedTech サービスの正常性チェック例外と修正
正常性チェックは、MedTech サービスがデバイス メッセージを正規化および変換できるかどうかをチェックするために、自動的かつ定期的に実行されます。 正常性チェックが成功しなかった場合は、HealthCheckException が発生し、ログに記録されます。
MedTech サービス ログでは、正常性チェックエラーが LogType の HealthCheckException でログに記録され、失敗した正常性チェックの名前がメッセージに記録されます。
正常性チェックの名前を次の表に示します。エラーの修正については、次の表を参照してください。
HealthCheck |
---|
CredentialStore:IsCustomerFacingMiCredentialBundlePresent |
ExternalEventHub:IsAuthenticated |
FhirService:IsAuthenticated |
Note
HealthCheckException はブロックの問題ですが、一時的な問題であり、介入なしで解決される可能性があります。
CredentialStore:IsCustomerFacingMiCredentialBundlePresent
説明: MedTech サービスのシステム割り当てマネージド ID が有効になっているか、ユーザー割り当てマネージド ID が構成されているかどうかを確認します。
重大度: ブロック
修正: ManagedIdentityCredentialNotFound で説明されている修正に従います。
ExternalEventHub:IsAuthenticated
説明: イベント ハブが有効であること、および MedTech サービスがアクセス権を受け取っていることを確認します。
重大度: ブロック
修正: InvalidEventHubException で説明されている修正に従って、イベント ハブが有効であることを確認します。 次に、「 UnauthorizedAccessEventHubException」で説明されている修正に従って、MedTech サービスがイベント ハブへのアクセスを受け取っていることを確認します。
FhirService:IsAuthenticated
説明: FHIR 変換先が有効であること、および MedTech サービスがそれに対する書き込みアクセス権を持っていることを確認します。
重大度: ブロック
修正: 「InvalidFhirServiceException」で説明されている修正に従って、FHIR 変換先が有効であることを確認します。 次に、「 UnauthorizedAccessFhirServiceException」で説明されている修正に従って、MedTech サービスが FHIR 変換先への書き込みアクセス権を持っていることを確認します。
MedTech サービスのエラーと修正
デバイス メッセージの正規化または変換中にエラーが発生した場合は、ログに記録されます。
MedTech サービス ログでは、エラーの名前が LogType に記録されます。
エラーの名前を次の表に示し、それらの修正を表の下に示します。
CorrelationIdNotDefinedException
説明: デバイス マッピングで CorrelationIdExpression (デバイス メッセージから関連付け識別子を解析する式) が指定されている場合、関連付け識別子がデバイス メッセージに存在しない場合、または CorrelationIdExpression がデバイス マッピングで正しく構成されていない場合に、このエラーが発生します。 注: CorrelationIdExpression は 省略可能です。 このエラーは、同じデバイス、種類、関連付け識別子を共有する測定値を 1 つの FHIR Observation リソースにグループ化するときに発生します。
重大度: ブロック
修正:
CorrelationIdExpression が必要な場合: デバイス メッセージに関連付け識別子が含まれていることを確認します。 また、Azure portalで、MedTech サービスの [デバイス マッピング] ブレードに移動し、デバイス マッピングの値が
correlationIdExpression
存在し、デバイス メッセージ内の関連付け識別子のキーを正しく参照していることを確認します。CorrelationIdExpression が必要ない場合: Azure portalで、MedTech サービスの [デバイス マッピング] ブレードに移動し、デバイス マッピングに含まれている行を
correlationIdExpression
削除します。
FhirDataMappingException
説明: FHIR 変換先マッピングを使用して正規化されたデータを変換中にエラーが発生しました。 このエラーは、正規化されたデータに対応するテンプレートが FHIR 変換先マッピングで定義されていない場合に発生します。
重大度: ブロック
修正: Azure portalで、MedTech サービスの [デバイス マッピング] ブレードと [宛先] ブレードに移動し、デバイス マッピングの各テンプレートに対して、FHIR 変換先マッピングに同じtypeName
値を持つテンプレートがあることを確認します。 また、[ 変換先 ] ブレードで FHIR 変換先マッピングを編集および保存するときに表示される検証エラーを修正します。
FhirResourceNotFoundException
説明: このエラーは、デバイス メッセージで指定された識別子を持つ FHIR リソースが FHIR 変換先で見つからない場合に発生します。 FHIR リソースの種類が Patient の場合、デバイス メッセージで指定されたデバイス識別子を持つ Device FHIR リソースが Patient FHIR リソースを参照していない可能性があります。 FHIR リソースの種類 (Device、Patient、Encounter、Observation など) がエラー メッセージで指定されています。 注: このエラーは、MedTech サービスの解決の種類が Lookup に設定されている場合にのみ発生します。
重大度: 非ブロッキング
修正: デバイス メッセージに、エラー メッセージで指定された型を持つ FHIR リソースの識別子が含まれていることを確認します。 また、Azure portalで、MedTech サービスの [デバイス マッピング] ブレードに移動し、デバイス マッピングの (たとえば) 値が{FHIR resource’s type specified in the error message}IdExpression
存在し、deviceIdExpression
デバイス メッセージ内の識別子のキーを正しく参照していることを確認します。
IncompatibleDataException
説明: デバイス メッセージとデバイス マッピングの間に非互換性があります (たとえば、デバイス メッセージやデバイス マッピングで必要なプロパティが見つからないか空白になっている可能性があります)。 エラーを含むデバイス マッピング プロパティは、エラー メッセージで指定されます。
重大度: 非ブロッキング
修正: デバイス メッセージに次のものが含まれていることを確認します。
エラー メッセージで指定されたデバイス マッピング プロパティによって参照されるキー。
キーの空白以外の値。
また、Azure portalで、MedTech サービスの [デバイス マッピング] ブレードに移動し、エラー メッセージで指定されたデバイス マッピング プロパティに、デバイス メッセージ内の対応するキーを正しく参照する値があることを確認します。
InvalidDataFormatException
説明: デバイス メッセージは、JSON オブジェクトに解析できる形式ではありません。
重大度: 非ブロッキング
修正: デバイス メッセージが JSON 形式であることを確認します。 JSON 形式を確認する 1 つの方法は、オンライン JSON 検証ツールを使用することです。
InvalidEventHubException
説明: 次のいずれかの理由で、イベント ハブが無効です。
少なくとも 1 つのイベント ハブの詳細 (Event Hubs 名前空間、イベント ハブ名、またはコンシューマー グループ) が正しく書式設定されていないか、存在しません。 Event Hubs 名前空間にはイベント ハブが含まれており、イベント ハブにはコンシューマー グループが含まれている必要があります。
複数のサービスがイベント ハブ コンシューマー グループから読み取りを行います。
重大度: ブロック
修正: Azure portalで、MedTech サービスの [Event Hubs] ブレードに移動し、イベント ハブの詳細のすべてのフィールドが入力されていることを確認します。 MedTech サービスのみがコンシューマー グループから読み取られるようにするには、次のいずれかを行います。
サービスを確認し、MedTech サービスが コンシューマー グループにアクセスする唯一のサービスであることを確認します。
Azure portalでイベント ハブに移動し、MedTech サービスのみがアクセスする新しいコンシューマー グループを作成し、MedTech サービスの [Event Hubs] ブレードに移動し、[コンシューマー グループ] フィールドで新しいコンシューマー グループを選択します。
InvalidFhirServiceException
説明: FHIR 変換先は、正しく書式設定されていないか、存在しないか、または Azure Health Data Services の FHIR サービスでないため、無効です。
重大度: ブロック
修正: Azure portalで、MedTech サービスの [宛先] ブレードに移動し、FHIR サーバー フィールドが正しく入力されていることを確認します。
InvalidQuantityFhirValueException
説明: Quantity リソース データ型の値が無効です (たとえば、サポートされていない形式である可能性があります)。 エラーが発生した値は、エラー メッセージで指定されます。
重大度: 非ブロッキング
修正: FHIR Quantity.value 仕様に従って、デバイス メッセージ内の値がサポートされているデータ型にあることを確認します。
InvalidTemplateException
説明: デバイス マッピングまたは FHIR 変換先マッピングでテンプレートにエラーが発生しました。 エラーは次のとおりです。
テンプレートのテンプレートの種類 (プロパティで
templateType
表されます) が見つからないか、空白の値を持っています。ルート コレクション テンプレートの下のテンプレート (プロパティで
template
表されます) には、値として中かっこ{}
で識別される JSON オブジェクトがありません。テンプレートの型 (プロパティで
typeName
表されます) が見つからないか、空白の値を持っています。マッピング内の複数のテンプレートの型が同じです (プロパティ
typeName
の値は同じです)。
エラーを含むテンプレートの型と行は、エラー メッセージで指定されます。
重大度: ブロック
修正: Azure portalで、MedTech サービスの [デバイス マッピング] ブレード (デバイス マッピングにエラーがある場合) または [宛先] ブレード (FHIR 変換先マッピングにエラーがある場合) に移動し、エラー メッセージで指定されたテンプレートを修正します。
ManagedIdentityCredentialNotFound
説明: MedTech サービスがイベント ハブに接続している場合、MedTech サービスのシステム割り当てマネージド ID が無効になっているか、存在しないか、ユーザー割り当てマネージド ID が MedTech サービス用に構成されていません。 注: このエラーは、MedTech サービスが正しく構成されていない Azure Resource Manager (ARM) テンプレートを使用してデプロイされた場合に発生する可能性があります。
重大度: ブロック
修正: 修正は、使用するマネージド ID の種類によって異なります。 システム割り当てマネージド ID とユーザー割り当てマネージド ID の違いは、「 マネージド ID の種類」で確認できます。 注: MedTech サービスは、システム割り当てマネージド ID または単一のユーザー割り当てマネージド ID のいずれか 1 つの ID のみをサポートします。
システム割り当てマネージド ID を使用する場合:
ARM テンプレートを使用して MedTech サービスをデプロイする場合は、ARM テンプレート
identity
の MedTech サービス リソースに、 の"SystemAssigned"
値をtype
含むプロパティがあることを確認します (GitHub の azuredeploy.json ファイルの ARM テンプレートの例を参照してください)。Azure portalで、MedTech サービスの [ID] ブレードに移動し、[システム割り当て済み] タブに移動し、次のことを確認します。
- [状態] は [オン] に設定されます。
- Azure ロールの割り当てでは、イベント ハブに、MedTech サービスのシステム割り当てマネージド ID に割り当てられたAzure Event Hubs データ レシーバー ロールが割り当てられていることが示されています。 そうでない場合は、次の 手順に従います。
ユーザー割り当てマネージド ID を使用する場合:
ユーザー割り当てマネージド ID があることを確認します。 そうでない場合は、Azure portalまたは ARM テンプレートを使用して作成します。
ARM テンプレートを使用して MedTech サービスをデプロイする場合は
identity
、ARM テンプレート内の MedTech サービス リソースに、1) の値"userAssigned"
と 2)type
userAssignedIdentities
ユーザー割り当てマネージド ID の名前を含む値を含むプロパティがあることを確認します (「ユーザー割り当てマネージド ID を Azure VM に割り当てる」の例を参照してください)。Azure portalで、MedTech サービスの [ID] ブレードに移動し、[ユーザー割り当て] タブに移動し、ユーザー割り当てマネージド ID が表示されていることを確認します。 そうでない場合は、ユーザー割り当てマネージド ID を追加します (「 既存の VM にユーザー割り当てマネージド ID を割り当てる」の例を参照してください)。
Azure portalで、イベント ハブに移動し、Azure Event Hubs データ レシーバー ロールを MedTech サービスのユーザー割り当てマネージド ID に割り当てます (手順を参照してくださいが、システム割り当てマネージド ID ではなく、ユーザー割り当てマネージド ID を使用します)。
MultipleResourceFoundException
説明: デバイス メッセージから取得された同じ識別子を持つ複数の FHIR リソースが FHIR 変換先にありますが、見つかった FHIR リソースは 1 つだけです。 FHIR リソースの種類 (Device、Patient、Encounter、Observation など) がエラー メッセージで指定されています。
重大度: 非ブロッキング
修正: エラー メッセージで指定された型を持つ複数の FHIR リソースに識別子が割り当てられないことを確認します。
NormalizationDataMappingException
説明: デバイス マッピングを使用してデバイス メッセージを正規化中にエラーが発生しました。
重大度: ブロック
修正: Azure portalで、MedTech サービスの [デバイス マッピング] ブレードに移動し、デバイス マッピングの編集と保存時に表示される検証エラーを修正します。
PatientDeviceMismatchException
説明: FHIR 宛先のデバイス リソースは、デバイス メッセージで指定された患者識別子と一致しない識別子を持つ Patient FHIR リソースを参照します (つまり、デバイスは別の患者にリンクされています)。
重大度: 非ブロッキング
修正: 患者識別子が複数のデバイスに割り当てられないことを確認します。
ResourceIdentityNotDefinedException
説明: このエラーは、FHIR リソースの識別子がデバイス メッセージに存在しない場合、またはデバイス メッセージから FHIR リソースの識別子を解析する式がデバイス マッピングで構成されていない場合に発生します。 FHIR リソースの種類 (Device、Patient、Encounter、Observation など) がエラー メッセージで指定されています。 注: このエラーは、MedTech サービスの解決の種類が [作成] に設定されている場合にのみ発生します。
重大度: 非ブロッキング
修正: デバイス メッセージに、エラー メッセージで指定された型を持つ FHIR リソースの識別子が含まれていることを確認します。 また、Azure portalで、MedTech サービスの [デバイス マッピング] ブレードに移動し、デバイス マッピングの (たとえば) 値が{FHIR resource’s type specified in the error message}IdExpression
存在し、deviceIdExpression
デバイス メッセージ内の識別子のキーを正しく参照していることを確認します。
TemplateExpressionException
説明: デバイス マッピング内のテンプレートに式が含まれるエラーがあります。 エラーは次のとおりです。
必要な式がありません。
式の言語 (プロパティで
language
表される) はサポートされていません。 すべてのテンプレート型は JSONPath で式をサポートします。JMESPath で式をサポートするのは CalculatedContent テンプレート型のみです。式の値 (プロパティで
value
表されます) が、式の言語の構文に従って正しく書式設定されていません。
エラーが発生した式と行は、エラー メッセージで指定されます。
重大度: ブロック
修正: Azure portalで、MedTech サービスの [デバイス マッピング] ブレードに移動し、デバイス マッピング内のエラー メッセージで指定された式を修正します。
TemplateNotFoundException
説明: デバイス マッピング内のテンプレートには、FHIR 変換先マッピング内で同じ種類の一致するテンプレートがありません。 テンプレートの型は、エラー メッセージで指定されます。
重大度: 非ブロッキング
修正: Azure portalで、MedTech サービスの [デバイス マッピング] ブレードと [宛先] ブレードに移動し、デバイス マッピングの各テンプレートに対して、FHIR 変換先マッピング内に同じtypeName
値を持つテンプレートがあることを確認します。
UnauthorizedAccessEventHubException
説明: MedTech サービスがイベント ハブへのアクセスを受信しません。
重大度: ブロック
修正: Azure portalで、イベント ハブに移動し、Azure Event Hubs Data Receiver ロールを MedTech サービスに割り当てます (手順を参照)。
UnauthorizedAccessFhirServiceException
説明: MedTech サービスに FHIR 変換先への書き込みアクセスがありません。
重大度: ブロック
修正: Azure portalで、FHIR サービスに移動し、FHIR Data Writer ロールを MedTech サービスに割り当てます (手順を参照)。
Note
このトラブルシューティング ガイドを使用して MedTech サービスの問題を解決できない場合は、Azure テクニカル サポート チケットを開き、デバイス メッセージ とデバイスと FHIR 宛先マッピング のコピーを要求に添付して、問題の判断に役立てることができます。
次の手順
この記事では、MedTech サービス ログを使用してエラーのトラブルシューティングと修正を行う方法について説明しました。
MedTech サービスについてよく寄せられる質問 (FAQ) については、次を参照してください。
FHIR®は、米国商標庁に登録されている Health Level Seven International の登録商標であり、その許可を得て使用しています。