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

wlmscpfs: DICOM 基本ワークリスト管理 SCP(データファイルベース)

書式

wlmscpfs [options] port

説明

wlmscpfs は、基本ワークリスト管理サービスの Service Class Provider(SCP)を実装したアプリケーションです。指定された TCP/IP ポートで待ち受け、Worklist Management SCU からのアソシエーション要求を受け付けます。アソシエーションが受理されワークリスト問い合わせを受信すると、wlmscpfs はファイルシステム上の特定ディレクトリ(対応するプログラムオプションで指定できる)にある所定のファイルを検索して該当するワークリスト情報を探し、その情報を呼び出し元の Worklist Management SCU へ送り返します。ワークリスト管理問い合わせの処理に加え、wlmscpfs は検証サービスクラス(Verification Service Class)の SCP としても動作します。

引数

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 を使用します

マルチプロセスオプション

-s --single-process
シングルプロセスモード
--fork
アソシエーションごとに子プロセスを fork します(既定値)

入力オプション

-dfp --data-files-path [p]ath: string (default: .)
ワークリストデータファイルへのパス。ワークリストファイルの扱い:
-efr --enable-file-reject
不完全なワークリストファイルの拒否を有効にします(既定値)
-dfr --disable-file-reject
不完全なワークリストファイルの拒否を無効にします

処理オプション

-cs0 --return-no-char-set
特定文字集合を返しません(既定値)
-cs1 --return-iso-ir-100
特定文字集合 ISO IR 100 を返します
-csk --keep-char-set
ファイルで指定された文字集合を返します。その他の処理オプション:
-nse --no-sq-expansion
C-FIND 要求メッセージ内の空シーケンスの展開を無効にします

ネットワークオプション

-i4 --ipv4
IPv4 のみを使用します(既定値)
-i6 --ipv6
IPv6 のみを使用します
-i0 --ip-auto
IPv6/IPv4 デュアルスタックを使用します。優先するネットワーク転送構文:
+x= --prefer-uncompr
明示的 VR・ローカルバイト順を優先します(既定値)
+xe --prefer-little
明示的 VR・リトルエンディアン TS を優先します
+xb --prefer-big
明示的 VR・ビッグエンディアン TS を優先します
+xd --prefer-deflated
deflate 圧縮した明示的 VR・リトルエンディアン TS を優先します
+xi --implicit
暗黙的 VR・リトルエンディアン TS のみ受け付けます。ネットワークホストアクセス制御(tcp wrapper):
-ac --access-full
任意のホストからの接続を受け付けます(既定値)
+ac --access-control
ホストアクセス制御規則を適用します。1993 年以降の値表現:
+u --enable-new-vr
新しい VR(UN/UT)のサポートを有効にします(既定値)
-u --disable-new-vr
新しい VR のサポートを無効にし、OB に変換します。deflate 圧縮レベル(--prefer-deflated 指定時のみ):
+cl --compression-level [l]evel: integer (default: 6)
0=無圧縮, 1=最速, 9=最良圧縮。その他のネットワークオプション:
-ta --acse-timeout [s]econds: integer (default: 30)
ACSE メッセージのタイムアウト
-td --dimse-timeout [s]econds: integer (default: unlimited)
DIMSE メッセージのタイムアウト
--max-associations [a]ssocs: integer (default: 50)
並列アソシエーションの最大数を制限します
--refuse
アソシエーションを拒否します(refuse)
--reject
implementation class UID がない場合にアソシエーションを拒絶します(reject)
--no-fail
無効な問い合わせでも失敗扱いにしません
--sleep-before [s]econds: integer
find の前に s 秒スリープします(既定値: 0)
--sleep-after [s]econds: integer
find の後に s 秒スリープします(既定値: 0)
--sleep-during [s]econds: integer
find の最中に s 秒スリープします(既定値: 0)
-pdu --max-pdu [n]umber of bytes: integer (4096..131072)
受信 PDU の最大サイズを n バイトに設定します(既定値: 16384)
-dhl --disable-host-lookup
ホスト名の名前解決を無効にします

出力オプション

-rfp --request-file-path [p]ath: string
要求ファイルを保存するパス
-rff --request-file-format [f]ormat: string (default: #t.dump)
要求ファイルのファイル名フォーマット

注記

上記オプションのうち大半は意味するところが明確です。しかし一部のオプションはきわめて特殊なため詳細な説明を要します。それらをここで述べます。

返す文字集合に関するオプションは、wlmscpfs が DICOM の既定文字レパートリーに含まれない文字で構成される属性値を返す状況を想定したものです。たとえばそうした場合、–return-iso-ir-100 オプションを使えば、モダリティのワークリスト管理 C-FIND 要求への応答に DICOM の特定文字集合属性(Specific Character Set, (0008,0005))を所定の値とともに含めるよう指定できます。この値は、返される属性値の文字がどの文字レパートリーから取られたか(この例ではレパートリー ISO IR 100)を示します。なお wlmscpfs は、返す値がすべて実際にこの文字レパートリーで構成されていることを保証しません。そうなっていることを前提として動作します。

一般に、特定文字集合属性(0008,0005)が C-FIND 応答に含まれるのは、文字集合の影響を受ける属性、すなわち値表現 PN, LO, LT, SH, ST, UT のいずれかの属性を含む場合のみです。

このアプリケーションが処理する C-FIND 要求は DICOM の特定文字集合属性(0008,0005)を含むことがありますが、本アプリケーションはこの属性値をマッチングに用いることは一切ありません。また、本アプリケーションが返す C-FIND 応答に DICOM の特定文字集合属性(0008,0005)が含まれるかどうかは、つねに起動時に指定した「返す文字集合」オプションによって決まります。

–enable-file-reject と –disable-file-reject オプションは、マッチング処理の際に完全なワークリストファイルのみを使うようにするファイル拒否機構を有効・無効にします。ワークリストファイルが完全とみなされるのは、SCP が C-FIND 応答メッセージで SCU に返す可能性のあるタイプ 1 情報をすべて含んでいる場合です。該当するタイプ 1 属性は DICOM 規格 part 4 annex K の Table K.6-1 にすべて列挙されています("Return Key Type" 列を参照)。

要求ファイルの書き出し

–request-file-path オプションを指定すると、受信した C-FIND 要求をテキストファイルに書き出せます。オプション値で、これらのファイルを保存する出力先ディレクトリを指定します。要求ファイルはすべて dcmdump ツールが出力するのと同じ "dump" 形式で保存され、生のまま、すなわち wlmscpfs によるタグ処理を一切加えずに、wlmscpfs に届いたとおりに書き出されます。

要求ファイルを書き出すと、要求ファイルディレクトリを監視することでワークリストデータベース(wlmscpfs の場合は –data-file-path ディレクトリから提供されるワークリストファイル)を「対話的に」準備できます。要求ファイルが現れたら、データベースのワークリストエントリを更新するための時間が必要になります。そのため、–request-file-path–sleep-before オプションと組み合わせて使うとよいでしょう。このオプションを使えば、wlmscpfs が実際にワークリストデータベースの照合を始めるまで待機する秒数を指定できます。なお、–data-file-path で書き出された要求ファイルが wlmscpfs によって自動削除されることはありません。

要求ファイルが有効な場合、wlmscpfs は指定ディレクトリ内に自動でファイル名を生成しなければなりません。既定のフォーマットは .dump で、 は YYYYMMDDhhmmssffffff 形式となります。各部の意味は次のとおりです。

  • YYYY は現在の年
  • MM は現在の月
  • DD は現在の日
  • hh は現在の時(24 時間形式)
  • mm は現在の分
  • ss は現在の秒
  • ffffff は現在の秒の端数

要求ファイルを使い、かつ一意なファイル名を確保したいほとんどのアプリケーションでは、この既定で十分機能します。この命名規則を変更したい場合は –request-file-format オプションを使えます。これにより –request-file-path が用いるファイル命名パターンを指定できます。

柔軟性のため、–request-file-format に与えるパターンでは次のプレースホルダーを使えます。

  • a: 相手側 SCU の calling application entity title

  • c: called application entity title(ワークリスト SCP アプリケーションの AE Title)

  • i: 要求を処理しているワークリスト SCP アプリケーションプロセスのプロセス ID

  • p: 患者 ID(存在する場合。なければ空文字列)

  • t: YYYYMMDDhhmmssffffff 形式のタイムスタンプ

既定値(すなわち –request-file-format を明示しない場合の値)は #t.dump であり、上記のタイムスタンプ形式になります。

ユーザー定義フォーマット文字列の例としては "request_#i_#a_#c.txt" などが挙げられます。#i は、–fork オプションで wlmscpfs のマルチプロセスモードを有効にしている場合に最も意味を持ちます。同時に発生した要求が同じファイル名にならないようにするためです。

なお、#p プレースホルダーは要求中の患者 ID(Patient ID, (0010,0020))の値をそのまま使う点に注意が必要です。すなわち、その文字列に非 ASCII 文字が含まれていると、wlmscpfs が計算するファイル名が壊れて正常に書き出せなかったり、書き出せても壊れて見えたりすることがあります。また、空の患者 ID もそのまま使われ、#p は空文字列に置き換えられます。

DICOM 適合性

wlmscpfs は SCP として次の SOP クラスをサポートします。

VerificationSOPClass                  1.2.840.10008.1.1
FINDModalityWorklistInformationModel  1.2.840.10008.5.1.4.31

wlmscpfs は、上記のサポート対象 SOP クラスすべてについて、次の転送構文のいずれかを用いたプレゼンテーションコンテキストを受け付けます。

LittleEndianImplicitTransferSyntax    1.2.840.10008.1.2
LittleEndianExplicitTransferSyntax    1.2.840.10008.1.2.1
BigEndianExplicitTransferSyntax       1.2.840.10008.1.2.2

wlmscpfs の既定の動作は、既定の暗黙的転送構文よりも明示的エンコーディングの転送構文を優先することです。ビッグエンディアンのハードウェア上で wlmscpfs を実行している場合は、BigEndianExplicit 転送構文を LittleEndianExplicit より優先します(その逆も同様)。この動作は –prefer オプションで変更できます(上記参照)。

zlib サポートを有効にしてコンパイルされており(–version の出力を参照)、かつ –prefer-deflated オプションを使う場合は、次の転送構文も受け付けます。

DeflatedExplicitVRLittleEndianTransferSyntax  1.2.840.10008.1.2.1.99

wlmscpfs は拡張ネゴシエーションをサポートしません。

現時点で wlmscpfs はマッチングキーとして次の属性をサポートします。

(0008,0020) StudyDate
(0008,0030) StudyTime
(0008,0050) AccessionNumber
(0008,0090) ReferringPhysicianName
(0010,0010) PatientName
(0010,0020) PatientID
(0010,0021) IssuerOfPatientID
(0010,0030) PatientBirthDate
(0010,0040) PatientSex
(0010,2297) Responsible Person
(0010,2298) Responsible Person Role
(0032,1032) RequestingPhysician
(0038,0010) AdmissionID
(0040,0100) ScheduledProcedureStepSequence
  (0008,0060) > Modality
  (0040,0001) > ScheduledStationAETitle
  (0040,0002) > ScheduledProcedureStepStartDate
  (0040,0003) > ScheduledProcedureStepStartTime
  (0040,0006) > ScheduledPerformingPhysicianName
(0040,1001) RequestedProcedureID
(0040,1003) RequestedProcedurePriority

リターンキーとして wlmscpfs は現時点で次の属性をサポートします。

(0008,0020) StudyDate
(0008,0030) StudyTime
(0008,0050) AccessionNumber
(0008,0080) InstitutionName
(0008,0081) InstitutionAddress
(0008,1040) InstitutionalDepartmentName
(0008,0090) ReferringPhysicianName
(0008,1080) AdmittingDiagnosesDescription
(0008,1110) ReferencedStudySequence
  (0008,1150) > ReferencedSOPClassUID
  (0008,1155) > ReferencedSOPInstanceUID
(0008,1120) ReferencedPatientSequence
  (0008,1150) > ReferencedSOPClassUID
  (0008,1155) > ReferencedSOPInstanceUID
(0010,0010) PatientName
(0010,0020) PatientID
(0010,0021) IssuerOfPatientID
(0010,0030) PatientBirthDate
(0010,0040) PatientSex
(0010,1000) OtherPatientIDs (retired)
(0010,1001) OtherPatientNames
(0010,1020) PatientSize
(0010,1030) PatientWeight
(0010,1040) PatientAddress
(0010,1080) MilitaryRank
(0010,2000) MedicalAlerts
(0010,2110) ContrastAllergies
(0010,2160) EthnicGroup (retired)
(0010,21a0) SmokingStatus
(0010,21b0) AdditionalPatientHistory
(0010,21c0) PregnancyStatus
(0010,21d0) LastMenstrualDate
(0010,2297) ResponsiblePerson
(0010,2298) ResponsiblePersonRole
(0010,4000) PatientComments
(0020,000d) StudyInstanceUID
(0032,1032) RequestingPhysician
(0032,1033) RequestingService
(0032,1060) RequestedProcedureDescription
(0032,1064) RequestedProcedureCodeSequence
  (0008,0100) > CodeValue
  (0008,0102) > CodingSchemeDesignator
  (0008,0103) > CodingSchemeVersion
  (0008,0104) > CodeMeaning
(0038,0010) AdmissionID
(0038,0011) IssuerOfAdmissionID
(0038,0050) SpecialNeeds
(0038,0300) CurrentPatientLocation
(0038,0500) PatientState
(0040,0100) ScheduledProcedureStepSequence
  (0008,0060) > Modality
  (0032,1070) > RequestedContrastAgent
  (0040,0001) > ScheduledStationAETitle
  (0040,0002) > ScheduledProcedureStepStartDate
  (0040,0003) > ScheduledProcedureStepStartTime
  (0040,0004) > ScheduledProcedureStepEndDate
  (0040,0005) > ScheduledProcedureStepEndTime
  (0040,0006) > ScheduledPerformingPhysicianName
  (0040,0007) > ScheduledProcedureStepDescription
  (0040,0008) > ScheduledProtocolCodeSequence
    (0008,0100) > > CodeValue
    (0008,0102) > > CodingSchemeDesignator
    (0008,0103) > > CodingSchemeVersion
    (0008,0104) > > CodeMeaning
  (0040,0009) > ScheduledProcedureStepID
  (0040,0010) > ScheduledStationName
  (0040,0011) > ScheduledProcedureStepLocation
  (0040,0012) > PreMedication
  (0040,0020) > ScheduledProcedureStepStatus
  (0040,0400) > CommentsOnTheScheduledProcedureStep
(0040,1001) RequestedProcedureID
(0040,1002) ReasonForTheRequestedProcedure
(0040,1003) RequestedProcedurePriority
(0040,1004) PatientTransportArrangements
(0040,1005) RequestedProcedureLocation
(0040,1008) ConfidentialityCode
(0040,1009) ReportingPriority
(0040,1010) NamesOfIntendedRecipientsOfResults
(0040,1400) RequestedProcedureComments
(0040,2001) ReasonForTheImagingServiceRequest
(0040,2004) IssueDateOfImagingServiceRequest
(0040,2005) IssueTimeOfImagingServiceRequest
(0040,2008) OrderEnteredBy
(0040,2009) OrderEnterersLocation
(0040,2010) OrderCallbackPhoneNumber
(0040,2016) PlacerOrderNumberImagingServiceRequest
(0040,2017) FillerOrderNumberImagingServiceRequest
(0040,2400) ImagingServiceRequestComments
(0040,3001) ConfidentialityConstraintOnPatientDataDescription

属性 (0008,0005) SpecificCharacterSet は特別なケースであり、wlmscpfs におけるその扱いは上記の注記セクションで述べたとおりです。

アクセス制御

TCP wrapper サポートを有効にして Unix プラットフォームでコンパイルした場合、–access-control コマンドラインオプションでホストベースのアクセス制御を有効にできます。この場合、システムのホストアクセス制御テーブルに定義された wlmscpfs 向けのアクセス制御規則が適用されます。ホストアクセス制御テーブルの既定の場所は /etc/hosts.allow/etc/hosts.deny です。詳細は hosts_access(5) を参照してください。

ロギング

各種コマンドラインツールおよび基盤ライブラリのログ出力レベルはユーザーが指定できます。既定では、エラーと警告のみが標準エラー出力に書き出されます。–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 にあります)。

環境変数

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

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

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