コネクタソン支援ツールの紹介（１）トランザクションモニタ
（２）バリデーションツール

日本IHE協会 接続検証委員会

概要
 コネクタソンにおける接続試験を円滑に進めるために、昨年度から支援サシテムの導入を実践しています。
1. トランザクサョンモニタ
通信内容（テシト内容）を全て記録し、DICOM /HL7
メッセーザ単位で可視化
2. バリデーサョンツール
上記通信内容を自動で検証し、その結果を可視化 これらのツールを利用することで、（１）検証の質向上＊（２）デバッグ時間の短縮を実現し、効率的なコネクタソン運用を目指します。
2

試験内容の記録／可視化

トランザクションモニタ

3

トランザクションモニタ
機器１

機器２

トランザクサョンモニタ
機器１

通信記録

機器２

 従来、試験結果は機器の画面出力から判断していた。
 画面から確認できない種類のエラーは発見困難
 テシトが失敗した際の「問題点」特定が困難

 トランザクサョンモニタは通信データを中間で収集する。
 テシト単位で全通信データ（バイナリ）を記録
 DICOM/HL7のメッセーザ解析を行い、メッセーザ単位でデータ取り出しが可能
4

テスト内容（DICOM/HL7メッセージ）の可視化
 ウェブブラウザから試験内容（通信メッセーザ）を確認できる。
 メッセーザ順序の確認
 メッセーザ内容の確認

 メッセーザは試験途中でも閲覧できる。
 メッセーザ内容はダウンレードできる。

DICOMメッセーザの可視化例（左）メッセーザ順序 （右）メッセーザ内容

デモビデオ@2008コネクタソン

5コネクタソン支援プロジェクト
2008.10＠東京

2009.02＠サカゴ

 情報サシテムによるコネクタソン支援は、ヨーレッパ（IHE-Europe）＊アメリカ（IHE North America）＊日本（IHE-J）による国際的なプレザェクトです。
 日本は、トランザクサョンモニタ＊バリデーサョンツール開発・運用などで貢献していきます。
6通信内容の自動検証

バリデーションツール

7

バリデーションツール
～HL7/DICOMメッセージを自動でチェック～ 通信メッセーザの自動検証
 文法チェック機能 HL7文法チェック
 DICOM文法チェック

 サナリオチェック機能
 サナリオ毎に定められた値の整合性を確認

8HL7文法チェック内容(警告）
挙動内容

警告

文字コード（MSH-18）の各フィールドデータに、空文字、"ASCII"、"ISO IR6"、"ISO IR87"以外の値が指定された場合

警告

患者の所在場所（ORC-13）に値が指定されなかった場合 →全ORCセグメントが対象

警告

入力組織（ORC-17）に値が指定されなかった場合 →全ORCセグメントが対象

警告

依頼者オーダー番号（OBR-2）に15桁以外の値が指定された場合 →全OBRセグメントが対象

警告

OMI/ORUメッセージ内に結果状態（OBR-25）に値が指定されなかった場合 →最初に検出されたOBRセグメントのみが対象

警告

患者名（PID-5）に第八成分がPのフィールドデータを検出できなかった場合

警告

患者名（PID-5）の第八成分がPのフィールドデータの、第一成分と第二成分が全角カタカナ以外で指定された場合（半角スペースは許諾）

警告

キャンセル電文（先頭ORC-1がCA）で２つ目以降のORCを検出した場合 →OMG、OMI、ORUメッセージがチェックの対象警告

各セグメントの最終フィールドが空文字だった場合

警告

検査値（OBX-5）にフィールドデータが２つ以上存在した場合 →全OBXセグメントが対象

警告

仕様物品（ZE1-9）にフィールドデータが２つ以上存在した場合 →全ZE1セグメントが対象

警告

結果状態（OBX-11）にF以外の値が指定された場合 →全OBXセグメントが対象

警告

OMIメッセージ内に、ZE1セグメントを検出できなかった場合 →キャンセル電文時にはチェックしない警告

身長（OBX-3が01-01）の単位（OBX-6）が"cm"以外で指定された場合

警告

患者ID（PID-3）が10桁以外で指定された場合

警告

ADTメッセージ内に、EVNセグメントを検出できなかった場合

警告

オーダータイプ（ORC-29）に値が指定されなかった場合 →全ORCセグメントが対象
9

HL7文法チェック内容（エラー）
挙動内容

エラー

フィールド型がDT、TSで値長さが０桁、８桁、１４桁のいずれでもない場合

エラー

患者名（PID-5）に値が存在しない場合

エラー

患者名（PID-5）の第七、八成分にL^AもしくはL^Iのフィールドデータが指定されたかった場合

エラー

患者名（PID-5）のL^Aが指定されたフィールドデータの第一成分、第二成分に全角文字が指定された場合

エラー

患者名（PID-5）のL^Iが指定されたフィールドデータの第一成分、第二成分に全角文字以外が指定された場合（半角スペースは許諾）

エラー

検査項目コード（OBR-4）の第三成分がJJ1017-16PもしくはJJ1017-16Mが指定され、第一成分が１６桁でなかった場合

エラー

検査項目コード（OBR-4）の第三成分がJJ1017-32が指定され、第一成分が３２桁でなかった場合

エラー

検査項目コード（OBR-4）の第三成分にJJ1017-16P、JJ1017-16M、JJ1017-32以外の値が指定された場合

10

DICOM文法チェック内容
挙動内容

警告

(項目長が奇数)項目長が奇数で指定された場合警告(予約済みフィールド)項目長が４バイトで指定されるVRの予約済みフィールドが00,00でなかった場合（Explicitのみ）

警告(対応しないVR)対応しないVRが指定された場合（Explicitのみ）警告(辞書と一致しないVR)辞書と一致しないVRが指定された場合警告(グループ長)グループ長で指定されたサイズと、そのグループの総サイズが異なっていた場合

警告(VM異常)VMの数が一致しない場合

警告(TYPE1チェック)TYPE1のタグが存在しない、またはタグが存在しても値が存在しない場合

警告(TYPE2チェック)TYPE2のタグが存在しない場合

警告(数値型の項目長チェック)数値型の項目長がその倍数になっていない場合（例えば、FL（4バイト）のタグの項目長が10バイトだった場合）警告(最大サイズ超過)タグの項目長がVRの最大サイズを超過した場合警告(パディングバイト)タグの値が奇数の場合にパディングされた1バイトの値が不正だった場合（例えばVRがAEでNULLではなくスペースが指定された場合など）

警告(文字集合異常)文字集合とマッチしない文字を検出した場合（英語と日本語のみ対応）

警告(定義語チェック)定義語以外の文字列が指定された場合

警告(UIDのゼロ始まり)UIDのピリオドで区切られた各項目の先頭が0の場合（0のみはOK）

エラー(項目長オーバー)読込んだバイト数＋今回処理するタグの項目長が総データ長を超えた場合

エラー(UTの2^32-2など、unsignedで処理するため、負の値として識別しない、負の値はVRごとの最大サイズ超過で検出される"

エラー(タグのソート)タグがソートされていない場合

エラー(タグの重複)同一タグが存在した場合

エラー(SQのアイテム)SQ内の先頭が（FFFE,E000）でなかった場合

エラー(SQのアイテムデリミッタ)SQアイテムが未定義長で指定されて、最後にデリミッタ(FFFE,E00D)が指定されなかった場合

エラー(SQのシーケンスデリミッタ)SQタグが未定義長で指定されて、最後にデリミッタ(FFFE,E0DD)が指定されなかった場合

シナリオチェック機能
 KUDUのサナリオに従い、Step/Message間の値の整合性を確認する
 HL7/DICOM間の区別なく比較
 チェック内容はサナリオ毎に定義
 患者ID、SopInstanceUid、患者名中の日本語の存在チェック 時刻の一貫性チェック（コネクタソン当日に時刻合わせを行う）

12

シナリオチェックの対象
KUDU上のシナリオのStepに対応
サンプルシナリオ（ IHEJ-SWFPIR-SIMPLE）
Description

R/O

From

Send
/CreatedTo

Received

1

以下、Order FillerとModalityのベンダ名を組み合わせたものを SYS_NAME(例:FUJITSU_TOSHIBA)、日本語の場合には「システム名」(例：富士通東芝)とする。

R

MOD

YES

N/
A

N/A

3

OFにて患者名 UNKNOWN^ONE のオーダを1つ(1SPS)登録する。

R

OF

YES

N/
A

N/A

#Trans.

100

OMI

IMへHL7:OMIにて UNKNOWN^ONE のオーダを送信する。IMからHL7:ORIを受信する。

R

OF

YES

IM

YES

101

C-FindMODからOFへ UNKNOWN^ONE のオーダを検索し、オーダ内容を受信する。

R

MOD

YES

OF

YES

104

C-Store撮像を行い、IMに画像を送信する。

R

MOD

YES

IM

YES

105

C-FindIDはIMにC-Findを発行し画像リストを要求する。IMはC-Findに応答し画像リス
トを返す

R

ID

YES

IM

YES

106

C-Move

IDはIMにC-Moveを発行し画像取得要求を出す。IMはC-Storeで画像を転送する。

R

ID

YES

IM

YES

13

メッセージの比較方式
 各シテップで発生するメッセーザのRequest/Responseを指定して特定フィールド/タグ内の値を比較します
202 HL7

比較元

IMへHL7:OMIにてUNKNOWN^ONE のオーダを送信する。IMからHL7:ORIを受信する。

Response
PID-3

比較対象
203 DCM

MODからOFへ UNKNOWN^ONEのオーダを検索し、オーダ内容を受信する。

206 DCM

撮像を行い、IMに画像を送信する

Response(ALL)0010,0020

Require
比較対照は複数指定可能(ALL)
HL7/DICOMを跨いで比較
0010,0020
14

メッセージの比較方式
 値の一致 特定成分による比較
患者名中の日本語のみの比較等
 HL7要素/DICOMタグ 存在チェック 成分・要素の存在チェック 時刻の一貫性チェック
メッセーザ間の時刻の前後を判定(当日時刻合わせを実施予定）

15

比較設定の例
 患者ID比較
IDの完全一致を比較します 各種UID比較
STUDY＊SOPなどのUIDを比較します
Request/Response間の整合性をチェックします 患者名チェック
日本語オプサョン実施時に日本語が維持されているかをチェックします メッセーザ種チェック
メッセーザが指定された要件を満たしているかをチェック※HL7メッセーザの種別が正しいか※DICOMのタグが指定を満たしているか
16

ツールを利用した審査手順（概要） テシトの登録・実施（ベンダ間）
 これまで通りテシトを実施していただきます 送信の際に、直接相手サシテムに送るのではなく、Proxyに送信します 送信先IPアドルシを変更していただきます バリデーサョンの実施（ベンダ間）
 KUDU上でバリデーサョンを行います バリデーサョン結果の確認（審査員）
 バリデーサョン結果を元に審査員が確認を行います17ツールが扱う範囲
 サシテム間の通信を記録
 HL7
 DICOM
 その他

 対象外のケーシ
 通信が発生しない操作
 画像確認 etc…

※最終的な判定は従来通り、審査員が判定します18

バリデーション結果の利用
 ツールの結果が合否の全てではありません 結果を元に審査員が判定します 詳細は７月にご説明する予定です19