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

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>

いずれの場合も、 は 10 進 4 桁、 は 10 進 2 桁からなります。

ファイル名の生成

既定では、受信した 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>

は 16 進数表記の 16 桁からなります。

最後に、–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.