⚠️ これは 非公式の翻訳サイトです。DCMTK / OFFIS とは無関係です。正確な情報は 原文(https://support.dcmtk.org/docs/findscu.html) を参照してください。

findscu: DICOM 問い合わせ(C-FIND)SCU

書式

findscu [options] peer port [dcmfile-in...]

説明

findscu アプリケーションは、Query/Retrieve サービスクラスおよび Basic Worklist Management サービスクラスの SCU を実装したものです。findscu は C-FIND メッセージを使った問い合わせ機能のみをサポートします。問い合わせキーを SCP に送り、その応答を待ちます。Query/Retrieve および Basic Worklist Management サービスクラスの SCP をテストする用途に使えます。

引数

peer        hostname of DICOM peer

port        tcp/ip port number of peer

dcmfile-in  DICOM query file(s)

オプション

全般オプション

-h --help
このヘルプを表示して終了します
--version
バージョン情報を表示して終了します
--arguments
展開後のコマンドライン引数を表示します
-q --quiet
静粛モード。警告やエラーを表示しません
-v --verbose
詳細表示モード。処理の詳細を表示します
-d --debug
デバッグモード。デバッグ情報を表示します
-ll --log-level [l]evel: string constant
(fatal, error, warn, info, debug, trace)ロガーにレベル l を使います
-lc --log-config [f]ilename: string
ロガーに設定ファイル f を使います

ネットワークオプション

-k --key [k]ey: gggg,eeee="str", path or dictionary name="str"
一致キーを上書きします 問い合わせ情報モデル:
-W --worklist
Modality Worklist 情報モデルを使います(既定値)
-P --patient
patient root 情報モデルを使います
-S --study
study root 情報モデルを使います
-O --psonly
patient/study only 情報モデルを使います IP プロトコルバージョン:
-i4 --ipv4
IPv4 のみを使います(既定値)
-i6 --ipv6
IPv6 のみを使います
-i0 --ip-auto
DNS ルックアップで IP プロトコルを判定します アプリケーションエンティティタイトル:
-aet --aetitle [a]etitle: string
自分の calling AE Title を設定します(既定値: FINDSCU)
-aec --call [a]etitle: string
相手の called AE Title を設定します(既定値: ANY-SCP) 1993 年以降の値表現:
+u --enable-new-vr
新しい VR(UN/UT)のサポートを有効にします(既定値)
-u --disable-new-vr
新しい VR のサポートを無効にし、OB に変換します 提案する転送構文:
-x= --propose-uncompr
すべての非圧縮 Transfer Syntax を提案し、ローカルのバイト順での explicit VR を先頭にします(既定値)
-xe --propose-little
すべての非圧縮 Transfer Syntax を提案し、explicit VR little endian を先頭にします
-xb --propose-big
すべての非圧縮 Transfer Syntax を提案し、explicit VR big endian を先頭にします
-xd --propose-deflated
deflated explicit VR little endian Transfer Syntax とすべての非圧縮転送構文を提案します
-xi --propose-implicit
implicit VR little endian Transfer Syntax のみを提案します deflate 圧縮レベル(--propose-deflated 指定時のみ):
+cl --compression-level [l]evel: integer (default: 6)
0=非圧縮, 1=最速, 9=最高圧縮 その他のネットワークオプション:
-to --timeout [s]econds: integer (default: unlimited)
接続要求のタイムアウト
-ts --socket-timeout [s]econds: integer (default: 60)
ネットワークソケットのタイムアウト(0 で無効)
-ta --acse-timeout [s]econds: integer (default: 30)
ACSE メッセージのタイムアウト
-td --dimse-timeout [s]econds: integer (default: unlimited)
DIMSE メッセージのタイムアウト
-pdu --max-pdu [n]umber of bytes: integer (4096..131072)
受信 PDU の最大サイズを n バイトに設定します(既定値: 16384)
--repeat [n]umber: integer
n 回繰り返します
--abort
アソシエーションを解放せずに中断します
--cancel [n]umber: integer
n 件の応答後にキャンセルします(既定値: しない)

トランスポート層セキュリティ(TLS)オプション

-tls --disable-tls
通常の TCP/IP 接続を使います(既定値)
+tls --enable-tls [p]rivate key file, [c]ertificate file: string
認証付きのセキュアな TLS 接続を使います
+tla --anonymous-tls
証明書なしのセキュアな TLS 接続を使います 秘密鍵パスワード(--enable-tls 指定時のみ):
+ps --std-passwd
標準入力でのパスワード入力を促します(既定値)
+pw --use-passwd [p]assword: string
指定したパスワードを使います
-pw --null-passwd
空文字列をパスワードとして使います 鍵・証明書ファイル形式:
-pem --pem-keys
鍵と証明書を PEM ファイルとして読み込みます(既定値)
-der --der-keys
鍵と証明書を DER ファイルとして読み込みます 認証局:
+cf --add-cert-file [f]ilename: string
証明書ファイルを証明書リストに追加します
+cd --add-cert-dir [d]irectory: string
d 内の証明書を証明書リストに追加します
+crl --add-crl-file [f]ilename: string
証明書失効リストファイルを追加します(--enable-crl-vfy を含意する)
+crv --enable-crl-vfy
リーフ証明書の CRL 検証を有効にします
+cra --enable-crl-all
チェーン全体の CRL 検証を有効にします セキュリティプロファイル:
+ph --list-profiles
対応する TLS プロファイルを一覧表示して終了します
+pg --profile-8996
BCP 195 RFC 8996 TLS プロファイル(既定値)
+pm --profile-8996-mod
修正版 BCP 195 RFC 8996 TLS プロファイル # このプロファイルに必要な TLS 機能をすべて # 下層の TLS ライブラリがサポートする場合のみ利用可能
+py --profile-bcp195-nd
ダウングレード非対応 BCP 195 TLS プロファイル(廃止)
+px --profile-bcp195
BCP 195 TLS プロファイル(廃止)
+pz --profile-bcp195-ex
拡張 BCP 195 TLS プロファイル(廃止)
+pb --profile-basic
Basic TLS Secure Transport Connection プロファイル(廃止) # 下層の TLS ライブラリが 3DES をサポートする場合のみ利用可能
+pa --profile-aes
AES TLS Secure Transport Connection プロファイル(廃止)
+pn --profile-null
認証付き非暗号化通信(廃止。IHE ATNA で使われていた) 暗号スイート:
+cc --list-ciphers
対応する TLS 暗号スイートを一覧表示して終了します
+cs --cipher [c]iphersuite name: string
暗号スイートをネゴシエート対象のリストに追加します サーバー名表示(SNI):
--no-sni
SNI を使いません(既定値)
--request-sni [s]erver name: string
サーバー名 s を要求します 疑似乱数生成器:
+rs --seed [f]ilename: string
f の内容で乱数生成器をシードします
+ws --write-seed
変更したシードを書き戻します(--seed 指定時のみ)
+wf --write-seed-file [f]ilename: string (only with --seed)
変更したシードをファイル f に書き出します ピア認証:
-rc --require-peer-cert
ピア証明書を検証し、無ければ失敗とします(既定値)
-ic --ignore-peer-cert
ピア証明書を検証しません

出力オプション

-od --output-directory [d]irectory: string (default: ".")
既存のディレクトリ d に出力ファイルを書き出します 自動データ補正:
+dc --enable-correction
自動データ補正を有効にします
-dc --disable-correction
自動データ補正を無効にします(既定値) C-FIND 応答:
+sr --show-responses
応答を常にロガーへ出力します
-sr --hide-responses
応答をロガーへ出力しません
-X --extract
応答を DICOM ファイルに抽出します(rsp0001.dcm...)
-Xx --extract-xml
応答を XML ファイルに抽出します(rsp0001.xml...)
-Xs --extract-xml-single [f]ilename: string
すべての応答を指定の XML ファイル f に抽出します
-Xlo --limit-output [n]umber: integer
ファイルへ抽出する応答数を n 件までに制限します(既定値: 無制限)

注記

コマンドラインで指定した各ファイルは、C-FIND リクエストの一部として SCP へ送られます。問い合わせファイルは、C-FIND-RQ メッセージのデータセット部分を含む有効な DICOM データセットでなければなりません。問い合わせファイルは、例えば次のようなスクリプトから dump2dcm ユーティリティで作成できます。

# query patient names and IDs
(0008,0052) CS [PATIENT]     # QueryRetrieveLevel
(0010,0010) PN []            # PatientName
(0010,0020) LO []            # PatientID

送信する各ファイルの個々の属性は、-k オプションで変更したり補ったりできます。例えば次のコマンド:

findscu -P -k "(0010,0010)=HEWETT*" caesar 5678 patqry.dcm

を SCP caesar の TCP/IP ポート 5678 へ送ると、patqry.dcm 内の PatientName 属性の値はすべて "HEWETT*" になります。その属性が存在すれば置き換えられ、なければ挿入されます。-k オプションは複数回指定できます。値の部分('=' の後)は省略してもよく、その場合は属性が長さ 0 で送られます。

以前のバージョンの findscu では、タグキーはグループ番号・要素番号を括弧で囲まずに指定していました。例えば "(0010,0010)" ではなく "0010,0010" のように書きました。新しい構文への移行を推奨しますが、古い構文も依然として動作します。

また -k では、DICOM 要素を指定するために要素タグの代わりに辞書名も受け付けます。例えば上記の findscu の呼び出しは、次のように書けます。

findscu -P -k PatientName="HEWETT*" caesar 5678 patqry.dcm

-k オプションでは、シーケンス・アイテム・入れ子になった属性を指定することもできます。その場合は特別な「パス」記法を使う必要があります。例:

findscu -W -k "(0040,0100)[0].Modality=CT" caesar 5678

この呼び出しは、タグ (0040,0100) "Scheduled Procedure Step Sequence" と、そのシーケンスの最初のアイテム内の属性 "Modality"(値 "CT")を指定することで、CT モダリティ向けに予定された手続きをホスト caesar のワークリストサーバーへ問い合わせます。このパス記法の詳細は dcmodify のドキュメントを参照してください。

コマンドラインでファイルを指定しない場合、問い合わせは 1 つ以上の -k オプションで完全に指定しなければなりません。複数の問い合わせファイルを与えた場合、findscu は複数の C-FIND リクエストを SCP へ送ります。

受信した各組の応答識別子は、オプション –hide-responses、後述の –extract 系のいずれか、–quiet、または適切なロガー設定を使わない限り、ロガーへ出力されます。これらを使った場合でも、オプション –show-responses でロガーへの出力を強制できます。

さらに、応答データセットは個々の DICOM ファイル(オプション –extract を使用)または XML ファイル(オプション –extract-xml を使用)として抽出することもできます。後者の出力形式はファイル dcm2xml.dtd で記述されています(最上位要素は "data-set")。XML ファイルでは、Specific Character Set が適切な XML エンコーディングへ自動的にマッピングされます。それが不可能な場合、例えば ISO 2022 文字集合のときは、非 ASCII 文字や #32 未満の文字は "&#nnn;" として格納されます("nnn" は数値文字コードを表します)。ただしこれにより無効な文字実体参照(ESC に対する "" など)が生じることがあり、ほとんどの XML パーサーは文書を拒否する点に注意してください。

あるいは、オプション –extract-xml-single を使えば、1 つのアソシエーションのすべての応答データセットを単一の XML ファイルへ抽出できます。XML 文書の最上位要素は "responses" です("type" 属性は "C-FIND")。個々のデータセットは前述のとおり格納されます。文字集合変換のサポートが有効な場合は UTF-8 エンコーディングが使われます。すなわち、すべてのデータセットが UTF-8 へ変換されます(異なる文字集合が使われる際に非 ASCII 文字で問題が起きるのを避けるため、これが強く推奨されます)。

DICOM 適合性

findscu アプリケーションは、SCU として次の SOP クラスをサポートします。

FINDPatientRootQueryRetrieveInformationModel       1.2.840.10008.5.1.4.1.2.1.1
FINDStudyRootQueryRetrieveInformationModel         1.2.840.10008.5.1.4.1.2.2.1
FINDPatientStudyOnlyQueryRetrieveInformationModel  1.2.840.10008.5.1.4.1.2.3.1
FINDModalityWorklistInformationModel               1.2.840.10008.5.1.4.31

findscu アプリケーションは、コマンドラインオプション(-P-S-O-W)に応じて、上記のサポート対象 SOP クラスのいずれか 1 つについてプレゼンテーションコンテキストを提案します。基本的に、次の転送構文をサポートします。

LittleEndianImplicitTransferSyntax                 1.2.840.10008.1.2
LittleEndianExplicitTransferSyntax                 1.2.840.10008.1.2.1
DeflatedExplicitVRLittleEndianTransferSyntax       1.2.840.10008.1.2.1.99 (*)
BigEndianExplicitTransferSyntax                    1.2.840.10008.1.2.2

(*) zlib サポートを有効にしてコンパイルした場合(–version の出力を参照)

どの転送構文をどの順序で実際に提案するかは、–propose オプションで指定できます。

findscu アプリケーションは拡張ネゴシエーションをサポートしません。

ロギング

各種コマンドラインツールおよび下層ライブラリのロギング出力のレベルは、ユーザーが指定できます。既定では、エラーと警告のみが標準エラー出力へ書き出されます。オプション –verbose を使うと、処理の詳細など情報メッセージも報告されます。オプション –debug は、デバッグ目的など内部動作の詳細を得るために使えます。その他のロギングレベルはオプション –log-level で選択できます。–quiet モードでは致命的エラーのみが報告されます。そのような非常に重大なエラーが起きた場合、アプリケーションは通常終了します。各ロギングレベルの詳細は、モジュール "oflog" のドキュメントを参照してください。

ロギング出力をファイルへ(必要に応じてログファイルのローテーション付きで)、syslog(Unix)へ、またはイベントログ(Windows)へ書き出したい場合は、オプション –log-config が使えます。この設定ファイルでは、特定のメッセージのみを特定の出力ストリームへ振り向けたり、メッセージの生成元モジュールやアプリケーションに基づいて特定のメッセージをフィルタリングしたりもできます。設定ファイルの例は < etcdir>/logger.cfg に用意されています。

コマンドライン

すべてのコマンドラインツールは、引数について次の記法を使います。角括弧は省略可能な値(0〜1 個)を囲みます。末尾の 3 つのドットは複数の値が許されること(1〜n 個)を示します。両者の組み合わせは 0〜n 個の値を意味します。

コマンドラインオプションは、先頭の '+' または '-' 記号によって引数と区別されます。通常、コマンドラインオプションの順序と位置は任意です(つまりどこに現れてもかまいません)。ただし、オプションが排他的な場合は、最も右に現れたものが使われます。この挙動は、一般的な Unix シェルの標準的な評価規則に従います。

さらに、ファイル名の前に '@' 記号を付けることで、1 つ以上のコマンドファイルを指定できます(例: @command.txt)。このコマンド引数は、以降の評価に先立って、対応するテキストファイルの内容に置き換えられます(連続する空白は、引用符で囲まれていない限り単一の区切りとして扱われます)。コマンドファイルの中に別のコマンドファイルを含めることはできない点に注意してください。この単純ながら効果的な仕組みにより、よく使うオプション・引数の組み合わせをまとめられ、長くて分かりにくいコマンドラインを避けられます(例は < datadir>/dumppat.txt に用意されています)。

環境変数

findscu ユーティリティは、DCMDICTPATH 環境変数で指定された DICOM データ辞書を読み込もうとします。既定では、すなわち DCMDICTPATH 環境変数が設定されていない場合は、データ辞書がアプリケーションに組み込まれていない限り、ファイル < datadir>/dicom.dic が読み込まれます(Windows では組み込みが既定)。

通常はこの既定の挙動が望ましく、DCMDICTPATH 環境変数は別のデータ辞書が必要なときにのみ使うべきです。DCMDICTPATH 環境変数は Unix シェルの PATH 変数と同じ形式で、コロン(":")でエントリを区切ります。Windows システムでは区切り文字にセミコロン(";")を使います。データ辞書のコードは、DCMDICTPATH 環境変数で指定された各ファイルを読み込もうとします。データ辞書を 1 つも読み込めない場合はエラーとなります。

指定したコマンドラインオプションによっては、findscu ユーティリティは文字集合マッピングテーブルを読み込もうとします。これは、DCMTK が oficonv ライブラリ付きでコンパイルされ(これが既定)、かつマッピングテーブルがライブラリに組み込まれていない(DCMTK が共有ライブラリを使う場合の既定)ときに発生します。

マッピングテーブルファイルは、DCMTK の < datadir> にあることが期待されます。別の場所を指定するには DCMICONVPATH 環境変数を使えます。別の場所を指定した場合、それらのマッピングテーブルは組み込みのテーブルも置き換えます。

ファイル

< datadir>/dcm2xml.dtd - 文書型定義(DTD)ファイル

関連項目

movescu(1), dump2dcm(1), dcmodify(1)

Copyright (C) 1994-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.