FHIR サーバのデバッグ
インターシステムズでは、開発時の FHIR サーバのデバッグに役立つデバッグ・モードとログを提供しています。
FHIR サーバのデバッグ
FHIR サーバをデバッグ・モードにすると、開発時に問題を解決するのに役立つほか、HL7® FHIR® 要求を認証する必要が一時的になくなります。以下のデバッグ・パラメータを構成できます。
-
[認証なしアクセスを許可] — 認証と承認のストラテジを無視して、すべての FHIR 要求がサーバに届くようにすることができます。
-
[新しいサービス・インスタンス] — すべての FHIR 要求について、新しいサービス・オブジェクトをインスタンス化します。Interactions や InteractionsStrategy サブクラスなどのカスタムのアーキテクチャ・クラスに変更を加える場合は、このオプションを設定します。
-
[トレースバックを含む] — FHIR 要求により内部サーバ・エラーが発生すると、FHIR サーバは返される OperationOutcome リソースにスタック・トレースを含めます。
デバッグ・パラメータを構成するには、以下の手順に従います。
-
ターミナルで、以下のコマンドを実行します。
do ##class(HS.FHIRServer.ConsoleSetup).Setup()
-
オプション 4 : [FHIRServer エンドポイントの構成] を選択します。
-
プロンプトが表示されたら、目的のエンドポイントを指定します。
-
[CSP アプリケーション構成の編集] セクションで、既定値を受け入れます。
-
[FHIRService 構成の編集] セクションで、以下の「DebugMode の値」の表に従って DebugMode の値を設定します。
DebugMode の値値 認証なしアクセスを許可 新しいサービス・インスタンス トレースバックを含む 0 無効 無効 無効 1 無効 無効 有効 2 無効 有効 無効 3 無効 有効 有効 4 有効 無効 無効 5 有効 無効 有効 6 有効 有効 無効 7 有効 有効 有効
ログ
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.JsonAdvSQL.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
ログの構成に使用するグローバル (^%ISCLOG) は、ログ情報が書き込まれるグローバル (^ISCLOG) とは名前が異なることに注意してください。
ログの表示
HTTP 要求のログが有効になったら、ログ・エントリが ^ISCLOG グローバルに保存されます。このグローバルは %SYS ネームスペースにあります。
管理ポータルを使用してログを表示するには、[システムエクスプローラ]→[グローバル] に移動して、ISCLOG グローバル (%ISCLOG ではない) を表示します。%SYS ネームスペースにいることを確認します。
ログの無効化
HTTP 要求のログを無効にするには、ターミナルを開いて以下のコマンドを入力します。
set ^%ISCLOG=1
FHIR テスト・ユーティリティ
管理ポータルに表示される FHIR テスト・ユーティリティ ([Health]→[FHIR テスト・ユーティリティ]) は、現在の FHIR アーキテクチャでは機能しません。このユーティリティは、今でも、従来の FHIR テクノロジで機能します。