dcmrecv: シンプルなDICOMストレージSCP(受信側)
書式
dcmrecv [options] port
説明
dcmrecv は、ストレージサービスクラスの Service Class Provider (SCP) を実装したアプリケーションです。よく知られた storescp ユーティリティと比べてオプションが少なく、その分だけ扱いやすくなっています。タイトルにある「シンプル」はこの点を指します。主な用途は、Storage Service Class User (SCU) から多数の DICOM データセットを受信し、設定可能なディレクトリとファイル構造のもとに保存することです。
引数
port tcp/ip port number to listen on
オプション
全般オプション
-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 を使用します
+v --verbose-pc- 詳細表示モードでプレゼンテーションコンテキストを表示します
ネットワークオプション
-i4 --ipv4- IPv4 のみを使用します(既定値)
-i6 --ipv6- IPv6 のみを使用します
-i0 --ip-auto- 設定ファイルから IPv6/IPv4 デュアルスタックのアソシエーションネゴシエーションプロファイルを使用します:
-xf --config-file [f]ilename, [p]rofile: string- 設定ファイル f のプロファイル p を使用します application entity title:
-uca --use-called-aetitle- 常に called AE title で応答します(既定値)
-aet --aetitle [a]etitle: string- 自分の AE title を設定し、called AE title を照合します other network options:
-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)
-dhl --disable-host-lookup disable hostname lookup
トランスポート層セキュリティ(TLS)オプション
-tls --disable-tls- 通常の TCP/IP 接続を使用します(既定値)
+tls --enable-tls [p]rivate key file, [c]ertificate file: string- 認証付きのセキュアな TLS 接続を使用します private key password (only with --enable-tls):
+ps --std-passwd- 標準入力からパスワードの入力を求めます(既定値)
+pw --use-passwd [p]assword: string- 指定したパスワードを使用します
-pw --null-passwd- 空文字列をパスワードとして使用します key and certificate file format:
-pem --pem-keys- 鍵と証明書を PEM ファイルとして読み込みます(既定値)
-der --der-keys- 鍵と証明書を DER ファイルとして読み込みます certification authority:
+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 検証を有効にします security profile:
+ph --list-profiles- サポートする TLS プロファイルを一覧表示して終了します
+pg --profile-8996- BCP 195 RFC 8996 TLS プロファイル(既定値)
+pm --profile-8996-mod- 修正版 BCP 195 RFC 8996 TLS プロファイル # only available if underlying TLS library supports # all TLS features required for this profile
+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 Profile(廃止予定) # only available if underlying TLS library supports 3DES
+pa --profile-aes- AES TLS Secure Transport Connection Profile(廃止予定)
+pn --profile-null- 認証付きの非暗号化通信(廃止予定。IHE ATNA で使用されていました) ciphersuite:
+cc --list-ciphers- サポートする TLS 暗号スイートを一覧表示して終了します
+cs --cipher [c]iphersuite name: string- ネゴシエーション対象の暗号スイートリストに暗号スイートを追加します
+dp --dhparam [f]ilename: string- DH/DSS 暗号スイート用の DH パラメータを読み込みます server name indication:
--no-sni- SNI を使用しません(既定値)
--expect-sni [s]erver name: string- サーバ名 s に対する要求を期待します pseudo random generator:
+rs --seed [f]ilename: string- f の内容で乱数生成器をシードします
+ws --write-seed- 変更後のシードを書き戻します(--seed と併用時のみ)
+wf --write-seed-file [f]ilename: string (only with --seed)- 変更後のシードをファイル f に書き出します peer authentication:
-rc --require-peer-cert- ピア証明書を検証し、存在しなければ失敗とします(既定値)
-vc --verify-peer-cert- ピア証明書が存在する場合に検証します
-ic --ignore-peer-cert- ピア証明書を検証しません
出力オプション
-od --output-directory [d]irectory: string (default: ".")- 受信したオブジェクトを既存のディレクトリ d に書き込みます subdirectory generation:
-s --no-subdir- サブディレクトリを生成しません(既定値)
+ssd --series-date-subdir- シリーズ日付からサブディレクトリを生成します filename generation:
+fd --default-filenames- インスタンス UID からファイル名を生成します(既定値)
+fu --unique-filenames- 新しい UID に基づいて一意なファイル名を生成します
+fsu --short-unique-names- 短い疑似乱数の一意なファイル名を生成します
+fst --system-time-names- 現在のシステム時刻からファイル名を生成します
-fe --filename-extension [e]xtension: string (default: none)- 生成したすべてのファイル名に e を付加します storage mode:
-B --normal- 暗黙的な形式変換を許可します(既定値)
+B --bit-preserving- データセットを受信したとおりに書き込みます
--ignore- データセットを無視します。受信しますが保存しません
注記
典型的な使い方
dcmrecv の典型的なユースケースは、ストレージ SCU から送られてくる SOP インスタンスを受信し、DICOM ファイルとして保存することです。次のコマンドはまさにこれを行います:
dcmrecv --verbose <port> --config-file storescp.cfg default
自動生成されるサブディレクトリ構造、短いファイル名、すべての DICOM ファイルへの拡張子 ".dcm" を使いたい場合は、次のコマンドを使います:
dcmrecv -v -xf storescp.cfg default <port> --series-date-subdir
--short-unique-names
--filename-extension .dcm
非常に大きな SOP インスタンスを扱う場合や、データセットを受信したとおりに書き込みたい場合(例えばデバッグ目的)は、「bit preserving モード」を使うとよいでしょう:
dcmrecv -v -xf storescp.cfg default <port> --bit-preserving
受信したデータセットは、常にネットワーク伝送に使われたのと同じ Transfer Syntax で DICOM ファイルとして保存されます。
DICOM 適合性
基本的に dcmrecv は、プライベートなものも含め、すべての Storage SOP クラスを SCP としてサポートします。ただし、これには対応するアソシエーションネゴシエーションプロファイルを設定ファイルから読み込む必要があります。この設定ファイルの形式と意味は asconfig.txt に記載されています。
既定では、つまりアソシエーションネゴシエーションプロファイルを読み込まない場合、dcmrecv は SCP として Verification SOP クラスのみをサポートします(既定の転送構文、すなわち Implicit VR Little Endian で)。
将来的には、設定ファイルを読み込まずに、サポートするプレゼンテーションコンテキスト(すなわち SOP クラスと Transfer Syntax の組み合わせ)のリストを直接指定できるオプションが追加されるかもしれません。
サブディレクトリの生成
–series-date-subdir オプションは、受信した DICOM データセットのデータ要素 Series Date (0008,0021) の値に基づいて、(指定した出力ディレクトリの下に)サブディレクトリを生成します。この値がデータセットから取得でき、かつ有効である(すなわち有効な DICOM 日付フィールドからなる)場合、サブディレクトリ構造は次のようになります:
<output-directory>/data/<year>/<month>/<day>/<filename>
Series Date (0008,0021) を取得できない、または無効な場合は、現在のシステム日付を使って次のサブディレクトリ構造になります:
<output-directory>/undef/<year><month><day>/<filename>
いずれの場合も、
ファイル名の生成
既定では、受信した DICOM データセットを保存するファイル名は次のスキームに従って生成されます:
<short-modality-prefix>.<sop-instance-uid><filename-extension>
同じ SOP インスタンスを 2 回受信した場合は、警告メッセージが出力され、既存のファイルが上書きされます。
–unique-filenames オプションを使うと、受信した各 DICOM データセットが必ず別々のファイルとして保存されます。すなわちファイルが上書きされることはなくなります。これは、生成する各ファイル名に新しく作成した一意な識別子 (UID) を使うことで実現されます(実際の SOP Instance UID 値との衝突を避けるため、中置文字列 ".X" を付けます)。このオプションの命名スキームは次のとおりです:
<short-modality-prefix>.X.<unique-identifier><filename-extension>
–short-unique-names オプションを使うと、ファイル名は疑似乱数の名前生成器によって生成され、衝突がないこと(すなわち既存ファイルが上書きされないこと)も保証されます。命名スキームは次のとおりです:
<short-modality-prefix>_<pseudo-random-name><filename-extension>
最後に、–system-time-names オプションを使うと、現在のシステム時刻に基づいてファイル名を生成できます:
<date><time>.<short-modality-prefix><filename-extension>
制限事項
–bit-preserving オプションは –series-date-subdir オプションと併用できないので注意してください。bit preserving モードでは受信したデータセットが直接ファイルに保存されるため、ファイルが作成される前には Series Date (0008,0021) の値を参照できないからです。
ロギング
各種コマンドラインツールおよびその基盤となるライブラリのロギング出力のレベルは、ユーザが指定できます。既定では、エラーと警告のみが標準エラー出力に書き出されます。–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 ファイルにあります)。
終了コード
dcmrecv ユーティリティは、終了時に次の終了コードを使います。これにより、アプリケーションが終了した理由をユーザが確認できます。
全般
EXITCODE_NO_ERROR 0
EXITCODE_COMMANDLINE_SYNTAX_ERROR 1
入力ファイルエラー
EXITCODE_CANNOT_READ_INPUT_FILE 20 (*)
出力ファイルエラー
EXITCODE_CANNOT_WRITE_OUTPUT_FILE 40 (*)
EXITCODE_INVALID_OUTPUT_DIRECTORY 45
ネットワークエラー
EXITCODE_CANNOT_INITIALIZE_NETWORK 60 (*)
EXITCODE_CANNOT_START_SCP_AND_LISTEN 64
EXITCODE_INVALID_ASSOCIATION_CONFIG 66
EXITCODE_CANNOT_CREATE_TRANSPORT_LAYER 71
() 実際には、これらのコードは現在 dcmrecv* では使われておらず、対応する終了コードのグループのプレースホルダーとして存在します。
環境変数
dcmrecv ユーティリティは、DCMDICTPATH 環境変数で指定された DICOM データ辞書の読み込みを試みます。既定では、すなわち DCMDICTPATH 環境変数が設定されていない場合、辞書がアプリケーションに組み込まれていない限り(Windows では既定で組み込み)、< datadir>/dicom.dic ファイルが読み込まれます。
通常はこの既定の動作が望ましく、DCMDICTPATH 環境変数は別のデータ辞書が必要な場合にのみ使うべきです。DCMDICTPATH 環境変数は Unix シェルの PATH 変数と同じ形式で、コロン (":") でエントリを区切ります。Windows システムではセミコロン (";") を区切り文字に使います。データ辞書のコードは、DCMDICTPATH 環境変数で指定された各ファイルの読み込みを試みます。データ辞書を 1 つも読み込めない場合はエラーとなります。
ファイル
< docdir>/asconfig.txt - 設定ファイルのドキュメント
< etcdir>/storescp.cfg - アソシエーションネゴシエーションプロファイルの例
関連項目
dcmsend(1), storescu(1), storescp(1)
著作権
Copyright (C) 2013-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.