json2dcm: JSON文書をDICOMファイルまたはデータセットに変換する
書式
json2dcm [options] jsonfile-in dcmfile-out
説明
json2dcm ユーティリティは、JSON(JavaScript Object Notation)文書の内容をバイナリのDICOMファイルまたはデータセットに変換します。JSON文書は、DICOM Part 18 Section F で定義された「DICOM JSON Model」に準拠していることが前提となります。この種のJSONファイルは、たとえば dcm2json ツールで生成できます。
引数
jsonfile-in JSON input filename to be converted ("-" for stdin)
dcmfile-out DICOM output filename ("-" for stdout)
オプション
全般オプション
-h --help- このヘルプを表示して終了します
--version- バージョン情報を表示して終了します
--arguments- 展開後のコマンドライン引数を表示します
-q --quiet- quietモード。警告やエラーを表示しません
-v --verbose- verboseモード。処理の詳細を表示します
-d --debug- debugモード。デバッグ情報を表示します
-ll --log-level [l]evel: string constant- (fatal, error, warn, info, debug, trace) ロガーにレベル l を使用します
-lc --log-config [f]ilename: string- ロガーに設定ファイル f を使用します
入力オプション
+f --read-meta-info- メタ情報が存在すれば読み込みます(既定値)
-f --ignore-meta-info- ファイルメタ情報を無視します
処理オプション
+Ug --generate-new-uids- 新しい Study/Series/SOP Instance UID を生成します
-Uo --dont-overwrite-uids- 既存のUIDを上書きしません(既定値)
+Uo --overwrite-uids- 既存のUIDを上書きします(bulkdata URIの扱い:)
+Bu --parse-bulkdata-uri- Bulkdata URIを解釈します(既定値)
-Bu --ignore-bulkdata-uri- Bulkdata URIを無視します
+Bd --add-bulkdata-dir [d]irectory: string- 許可するバルクデータの取得元一覧に d を追加します(複数データセットを含む配列の扱い:)
-ar --array-reject- 複数データセットを拒否します(既定値)
+as --array-select [n]umber: integer- 配列からデータセット n を選択します
+ar --array-sequence- すべてのデータセットを private sequence に格納します
出力オプション
+F --write-file- ファイル形式で書き出します(既定値)
-F --write-dataset- ファイルメタ情報を付けずにデータセットを書き出します
+Fu --update-meta-info- 特定のファイルメタ情報を更新します(出力転送構文:)
+t= --write-xfer-same- 入力と同じTSで書き出します(既定値)
+te --write-xfer-little- explicit VR little endian TSで書き出します
+tb --write-xfer-big- explicit VR big endian TSで書き出します
+ti --write-xfer-implicit- implicit VR little endian TSで書き出します
+td --write-xfer-deflated- deflated explicit VR little endian TSで書き出します(エラー処理:)
-E --stop-on-error- 文書が不正なら書き出しません(既定値)
+E --ignore-errors- 文書が不正でも書き出しを試みます(1993年以降の値表現(VR):)
+u --enable-new-vr- 新しいVR(UN/UT)のサポートを有効にします(既定値)
-u --disable-new-vr- 新しいVRのサポートを無効にし、OBに変換します(シーケンスとアイテムの長さエンコード:)
+e --length-explicit- 明示的な長さで書き出します(既定値)
-e --length-undefined- 未定義の長さで書き出します(文字セットの扱い:)
+c --charset-accept- JSON中の指定文字セットで書き出します(既定値)
-c --charset-replace- JSON中の指定文字セットをUTF-8に置き換えます(deflate圧縮レベル(--write-xfer-deflated 指定時のみ):)
+cl --compression-level [l]evel: integer (default: 6)- 0=無圧縮、1=最速、9=最高圧縮
注記
期待されるJSON入力の基本構造は次のとおりです(詳細は DICOM Part 18 Section F を参照)。
{
"00080005": {
"vr": "CS",
"Value": [
"ISO_IR 192"
]
},
"00080020": {
"vr": "DT",
"Value": [
"20130409"
]
},
"00080030": {
"vr": "TM",
"Value": [
"131600.0000"
]
},
"00080050": {
"vr": "SH",
"Value": [
"11235813"
]
},
"00080056": {
"vr": "CS",
"Value": [
"ONLINE"
]
},
"00080061": {
"vr": "CS",
"Value": [
"CT",
"PET"
]
},
"00080090": {
"vr": "PN",
"Value": [
{
"Alphabetic": "^Bob^^Dr."
}
]
},
"00081190": {
"vr": "UR",
"Value": [
"http://wado.nema.org/studies/
1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873"
]
},
"00090010": {
"vr": "LO",
"Value": [
"Vendor A"
]
},
"00091002": {
"vr": "UN",
"InlineBinary": "z0x9c8v7"
},
"00100010": {
"vr": "PN",
"Value": [
{
"Alphabetic": "Wang^XiaoDong"
}
]
},
"00100020": {
"vr": "LO",
"Value": [
"12345"
]
},
"00100021": {
"vr": "LO",
"Value": [
"Hospital A"
]
},
"00100030": {
"vr": "DA",
"Value": [
"19670701"
]
},
"00100040": {
"vr": "CS",
"Value": [
"M"
]
},
"00101002": {
"vr": "SQ",
"Value": [
{
"00100020": {
"vr": "LO",
"Value": [
"54321"
]
},
"00100021": {
"vr": "LO",
"Value": [
"Hospital B"
]
}
},
{
"00100020": {
"vr": "LO",
"Value": [
"24680"
]
},
"00100021": {
"vr": "LO",
"Value": [
"Hospital C"
]
}
}
]
},
"0020000D": {
"vr": "UI",
"Value": [
"1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873"
]
},
"00200010": {
"vr": "SH",
"Value": [
"11235813"
]
},
"00201206": {
"vr": "IS",
"Value": [
4
]
},
"00201208": {
"vr": "IS",
"Value": [
942
]
}
}
文字エンコーディング
JSON形式はUTF-8エンコーディングのみをサポートします。したがって、生成されるDICOMファイルもUTF-8エンコーディングを含みます。JSONファイルに特定の文字セットが含まれていない場合、または "ISO_IR 192" 以外の特定の文字セットが指定されている場合は、警告が出力されます。
バイナリデータ、バルクデータ、ピクセルデータ
DICOM JSON Model は、"OB"、"OW"、"OD"、"OF"、"OL"、"OV" などのバイナリの値表現(VR)を持つ属性値を、Base64エンコードした形式で格納するために "InlineBinary" を用います。json2dcm は、カプセル化されていないピクセルデータを含むすべてのバイナリ属性についてこれをサポートします。
DICOM JSON Model では、属性値をJSONデータセットとは別に格納し、BulkDataURI 経由で参照することも認められています。これは、ローカルファイルシステム上のファイルを参照するファイルURIについてサポートされます。json2dcm ツールは、DCM4CHE が生成するファイルURIスキームの非公式な拡張もサポートします。この拡張では、ファイルの特定部分を指すために、"offset" と "length" という名前のパラメータをファイルURIの末尾に付加します。HTTP URIや、MIME multipart/related 構造内の別パートを指すURIは、json2dcm ではまだサポートされていません。コマンドラインオプション –ignore-bulkdata-uri を指定すると、すべてのバルクデータURIは無視され、バルクデータを持つ属性は空の値で書き出されます。
最後に、カプセル化された(特に圧縮された)ピクセルデータは json2dcm ではサポートされません。この特定のケースに対する DICOM JSON Model の構文が、DICOM規格でまだ定義されていないためです。
データセットの配列
DICOM JSON Model は、WADO-RS や QIDO-RS などの DICOMweb サービスで複数のデータセットを返すためにJSON配列構造を用います。単一のDICOMデータセットを含むJSON配列は、json2dcm が自動的に認識し、配列で囲まれていないデータセットと同様に扱います。複数のデータセットを含むJSON配列は、既定では拒否されます。代わりに –array-select オプションを使えば、配列から変換対象とするデータセットを1つ選択できます。–array-sequence オプションを指定すると、すべてのデータセットが、属性タグ (0009,1000) を持つ単一の private sequence のシーケンスアイテムとして書き出されます。主にデバッグ目的を想定したこの種のファイルは、値 "JSON2DCM_LIST_OF_DATASETS" を持つ private creator 要素 (0009,0010) によって識別できます。
末尾カンマ
JSONでは末尾カンマは許可されていませんが、json2dcm はそのようなJSONデータセットも警告やエラーメッセージなしに受け入れます。内部で使用するJSONパーサが寛容に処理するためです。したがって利用者は、json2dcm が受け入れたという理由だけで、JSONデータセットが正しいと考えてはなりません。本ツールは、JSONまたは DICOM JSON Model のバリデータとして設計されてはいません。
ロギング
各種コマンドラインツールおよびその基盤となるライブラリのロギング出力レベルは、利用者が指定できます。既定では、エラーと警告のみが標準エラー出力に書き出されます。オプション –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 に用意されています)。
終了コード
dcm2json ユーティリティは、終了時に次の終了コードを用います。これにより利用者は、アプリケーションが終了した理由を確認できます。
全般
EXITCODE_NO_ERROR 0
EXITCODE_COMMANDLINE_SYNTAX_ERROR 1
入力ファイルエラー
EXITCODE_CANNOT_READ_INPUT_FILE 20
出力ファイルエラー
EXITCODE_CANNOT_WRITE_OUTPUT_FILE 40
処理エラー
EXITCODE_INVALID_JSON_CONTENT 65
EXITCODE_BULKDATA_URI_NOT_SUPPORTED 66
環境変数
json2dcm ユーティリティは、DCMDICTPATH 環境変数で指定されたDICOMデータ辞書の読み込みを試みます。既定では、つまり DCMDICTPATH 環境変数が設定されていない場合は、データ辞書がアプリケーションに組み込まれていない限り(Windowsでは既定で組み込み)、ファイル < datadir>/dicom.dic が読み込まれます。
既定の動作を優先すべきであり、DCMDICTPATH 環境変数は代替のデータ辞書が必要な場合にのみ使用します。DCMDICTPATH 環境変数は、Unixシェルの PATH 変数と同じ形式で、コロン(":")でエントリを区切ります。Windowsシステムでは、区切り文字としてセミコロン(";")を用います。データ辞書のコードは、DCMDICTPATH 環境変数で指定された各ファイルの読み込みを試みます。データ辞書を1つも読み込めない場合はエラーとなります。
関連項目
dcm2json(1) dump2dcm(2)
著作権
Copyright (C) 2024-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.