FHIR サーバのデバッグ
インターシステムズでは、開発時の FHIR® サーバのデバッグに役立つデバッグ・モードとログを提供しています。
FHIR サーバのデバッグ
FHIR サーバをデバッグ・モードにすると、開発時に問題を解決するのに役立つほか、FHIR 要求を認証する必要が一時的になくなります。デバッグ・オプションを設定するには、以下の手順に従います。
-
管理ポータルで、[Health] → [FHIR 構成] → [サーバ構成] に移動します。FHIR サーバのネームスペースにいることを確認します。
-
FHIR サーバのエンドポイントを選択します。
-
[編集] を選択します。
-
[デバッグ] セクションで、有効にするデバッグ・オプションのチェック・ボックスにチェックを付けます。
-
[認証なしアクセスを許可] — 認証と承認のストラテジを無視して、すべての FHIR 要求がサーバに届くようにすることができます。
-
[新しいサービス・インスタンス] — すべての FHIR 要求について、新しいサービス・オブジェクトをインスタンス化します。Interactions や InteractionsStrategy サブクラスなどのカスタムのアーキテクチャ・クラスに変更を加える場合は、このオプションを設定します。
-
[トレースバックを含む] — FHIR サーバは、OperationOutcome リソースでスタック・トレースを送信することによって、FHIR 要求に応答します。
-
-
[更新] を選択します。
ログ
FHIR サーバには、次の 2 種類のログが用意されています。
-
内部 FHIR サーバのログ — どのクラス・メソッドが呼び出されているかなど、FHIR サーバ・アーキテクチャがどのように FHIR 要求を処理しているかに関する情報を提供します。
-
HTTP 要求のログ — REST クライアントから FHIR サーバへの HTTP 要求に関する情報を提供します。
内部 FHIR サーバのログ
FHIR サーバは、サーバが受信する FHIR 要求をアーキテクチャが処理する様子についての基本的なログ情報を提供します。この情報には、呼び出されるクラス・メソッド、SQL 関連メッセージ、および _include 検索がどのように処理されているかなどが含まれます。このタイプのログを有効にするには、以下の操作を実行します。
-
InterSystems ターミナルを開きます。
-
FHIR サーバのネームスペースに移動します。例えば、以下のように入力します。
set $namespace = "FHIRNamespace"
-
保存するログ情報のタイプを指定するグローバル ^FSLogChannel を作成します。グローバルを作成するための構文は以下のとおりです。
set ^FSLogChannel(channelType) = 1
channelType は以下のいずれかになります。
-
Msg — ステータス・メッセージをログに記録します。
-
SQL — SQL 関連の情報をログに記録します。
-
_include — _include パラメータおよび _revinclude パラメータを使用する検索に関連する情報をログに記録します。
-
all — 3 つのタイプの情報すべてをログに記録します。
例えば、すべてのタイプの情報のログを有効にするには、以下のように入力します。
set ^FSLogChannel("all") = 1
-
新しいタイプのログ情報 (例えば、Msg から SQL) に切り替えるには、既存の ^FSLogChannel グローバルを削除してから、もう一度新しい channelType で設定します。
ログの表示
FHIR サーバ・アーキテクチャのログを有効にすると、ログ・エントリが ^FSLOG グローバルに保存されます。管理ポータルを使用してログを表示するには、[システムエクスプローラ] → [グローバル] に移動して、FSLOG グローバル (FSLogChannel ではない) を表示します。FHIR サーバのネームスペースにいることを確認します。
グローバルの各ノードは以下のような構造になっています。
CurrentMethod^CurrentClass|LogType|LogMessage
例えば、^FSLOG グローバルのノードのログ・エントリは、以下のようになる場合があります。
"runQuery^HS.FHIRServer.Storage.Json.Interactions|SQL|Parameters: (2)"
ログの無効化
FHIR サーバ・アーキテクチャのログを無効にするには、単に ^FSLogChannel グローバルを削除するか、このグローバルを 0 に設定します。例えば、ターミナルで以下のように入力できます。
kill ^FSLogChannel
HTTP 要求のログ
HTTP 要求のログが有効な場合、FHIR クライアントから要求を受信する REST ハンドラは、各 HTTP 要求に関する情報を ISCLog グローバルに書き込みます。このタイプのログを有効にするには、以下の操作を実行します。
-
InterSystems ターミナルを開きます。
-
任意のネームスペースから、以下のコマンドを入力して、グローバル ^%ISCLog を構成し、HTTP 要求のログ記録を開始します。
set ^%ISCLOG=5 set ^%ISCLOG("Category","HSFHIR")=5 set ^%ISCLOG("Category","HSFHIRServer")=5
ログの表示
HTTP 要求のログが有効になったら、ログ・エントリが ^ISCLOG グローバルに保存されます。このグローバルは %SYS ネームスペースにあります。
管理ポータルを使用してログを表示するには、[システムエクスプローラ] → [グローバル] に移動して、ISCLOG グローバル (%ISCLOG ではない) を表示します。%SYS ネームスペースにいることを確認します。
ログの無効化
HTTP 要求のログを無効にするには、ターミナルを開いて以下のコマンドを入力します。
set ^%ISCLOG=1
FHIR テスト・ユーティリティ
管理ポータルに表示される FHIR テスト・ユーティリティ ([Health] → [FHIR テスト・ユーティリティ]) は、現在の FHIR アーキテクチャでは機能しません。このユーティリティは、今でも、従来の FHIR テクノロジで機能します。