DICOM Toolkit(dcmtk)の使い方を毎回調べるのが馬鹿らしいのでまとめる。
日本語で教えてくれる優しいところがないので、とりあえず動かすを第一目標に調べた結果を残す。
基本的なオプションのみまとめる。もっと知りたければ頑張ってマニュアル読む。
DICOM的なワードもそのうちまとめる。
storescp.exe -v -aet [AEタイトル] [port]
例:AEタイトル=TESTSVR、ポート=4006でDICOM受信したい場合
storescp.exe -v -aet TESTSVR 4006
実行後は受付待ちに入るので、他の操作がしたいなら別窓開いて作業する。
storescu.exe -v -aet [送り元AEタイトル] -aec [送り先AEタイトル] [hostname] [port] [DICOM File]
例:自身のAEタイトル=TESTSVR1から
相手のAEタイトル=TESTSVR2(ホスト名=SCPSVR、ポート=4006)に
カレント下のdataフォルダの拡張子.dcmのファイルのみDICOM送信したい場合
storescu.exe -v -aet TESTSVR1 -aec TESTSVR2 SCPSVR 4006 .\data*.dcm
あらかじめWorklistファイル(.wl)を作っておく必要がある。
毎回データ作るの大変なのでpowersehllで自動生成するスクリプトを書いたが公開するには恥ずかしいレベルなので割愛。
[dcmtk置いたパス]\share\dcmtk\wlistdb\OFFISにサンプルがあるのでそれを参考に作る
※1ファイル1件
(0008,0050) SH 00000
(0040,0100) SQ
(fffe,e000) -
(0008,0060) CS MR
(0032,1070) LO BARIUMSULFAT
(fffe,e00d) -
(fffe,e0dd) -
注意:上記は説明用にだいぶ端折ってるので、必須タグとかは自分で書くこと。
基本は(gggg,eeee) [VR] [Value]の順に一行一タグで書いていく。
SQタグは構造示すタグが挟まるので、上記のようにVRはハイフン、値は無しで書く。
軽く触れておくと
* (fffe,e000) : SQItem開始
* (fffe,e00d) : SQItemデリミタ(SQItemがLength不明の場合)
* (fffe,e0dd) : SQデリミタ(SQ全体がLength不明の場合)
詳細はPS3.5あたりに書いてあるのでそちらを参照のこと。
dump2dcm [1で作ったdumpファイルのパス] [出力先のパス]
例:カレント下のdataフォルダのwklist1.dumpを同じフォルダのwklist1.wlにDICOM変換したい場合
dump2dcm.exe .\data\wklist1.dump .\data\wklist1.wl
複数作るだろうからスクリプト書いてぐるぐる回すといい
確か勝手に同名ファイルは作ってくれなかったはず。
SCUからC-FINDかけてくるAEタイトルのフォルダを作って、その中に入れておく必要あり。
次の手順と合わせてよく忘れるので注意。
また、"lockfile"もAEタイトルフォルダの中に作っておく(wlmcspfs流すときに必要)
例:問い合わせを受けるAEタイトル=MWMTEST、カレント下のdataフォルダにWorklistファイル(wklist1.wl)を置く場合
.\data\MWMTEST\wklist1.wl
.\data\MWMTEST\lockfile
wlmscpfs.exe -v -csk -dfp [3のAETITLEフォルダの親のパス] [port]
例:カレント下のdataフォルダにAEタイトルフォルダ作ってWorklistファイル(wklist1.wl)を置いた場合
wlmscpfs.exe -v -csk -dfp .\data 4006
実行後は受付待ちに入るので、他の操作がしたいなら別窓開いて作業する。
Specific Character Set(0008,0005)に"\ISO 2022 IR87"セットして、
バイナリエディタ使って、日本語の前後にエスケープ(iB 24 42 日本語 1B 28 42)入れて、
Lengthも合わせてみたけどうまくいかなかった。
一時調査中断中。
一方でUTF-8でならうまくいったので、こだわりがなければこっちで。
1.Specific Character Set(0008,0005)に"ISO IR192"セット
2.dumpに日本語を入力してUTF-8で保存
3.メモ帳編集の場合BOMが入ったので先頭3バイト削除
4.dump2dcmでwlファイル作る
Q/RさせるDICOMファイル群のIndexファイルを作る(これを使ってQueryを返すらしい。)
dcmqridx.exe -v [index出力先フォルダ] [対象のDICOMファイル]
例:カレント下のdataフォルダにDICOMファイルがあり、同じフォルダにIndexファイルを吐き出す場合
dcmqridx.exe -v .\data .\data*.dcm
[dcmtk置いたパス]\etc\dcmtk\dcmqrscp.cfgにサンプルがあるのでコピーして使う
Host TableのBEGINからENDの間に
[設定名] = ([AEタイトル], [HostName], [Port])
の形で書く。
例:AEタイトル=TESTSVR1、HostName=SCUTEST、Port=4006をqrtestの名前で設定する場合
HostTable BEGIN
qrtest = (TESTSVR1, SCUTEST, 4006)
HostTable END
なお、複数の設定を一個の設定にまとめたりもできるとのこと
[設定名1] = ([AEタイトル], [HostName], [Port])
[設定名2] = ([AEタイトル], [HostName], [Port])
[設定名ALL] = [設定名1], [設定名2]
例:AEタイトル=TESTSVR1、HostName=SCUTEST1、Port=4006をqrtest1、
AEタイトル=TESTSVR2、HostName=SCUTEST2、Port=4006をqrtest2、
上記二つをqrtestallまとめる場合
HostTable BEGIN
qrtest1 = (TESTSVR1, SCUTEST1, 4006)
qrtest2 = (TESTSVR2, SCUTEST2, 4006)
qrtestall = qrtest1, qrtest2
HostTable END
AE TableのBEGINからENDの間に
[AEタイトル] [Q/RさせるDICOMファイル置き場] [Read/Write] [(最大検査数, 最大検査Byte)] [対応するHostTable設定名]
の形で書く。
DICOMファイル置き場はここで相対書くとどこからになるか不明。試したことはない。
やってみたくなったら試して結果を追記する。
Read/WriteはQRで書いてどうするんだろうと思うけどわからないときはRW
最大検査数、バイトに関してはある程度で絞っておかないと用意した検査数によっては泣きたくなるので適宜。
例:AEタイトル=QRSCPAE、ファイル置き場=H:DICOM¥QRSCP¥QRTEST、最大検査を200件、1024MBとし、qrtest1に設定した相手のみ有効とする場合
AETable BEGIN
QRSCPAE H:DICOM¥QRSCP¥QRTEST RW (200,1024mb) qrtest1
AETable END
dcmqrscp -v -c [設定ファイルのパス] [Port]
* -v : 詳細表示
* -c : 設定ファイルのパス指定
例:カレント下のetcに2の設定ファイルがあり、Port=4006で受け付ける場合
dcmqrscp -v -c .\etc\dcmqrscp.cfg 4006
実行後は受付待ちに入るので、他の操作がしたいなら別窓開いて作業する。
ppsscpfsなるものがあるらしいが、見当たらない。
誰か教えてほしい。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント