findscu(1) OFFIS DCMTK findscu(1)

findscu - کلاینت ارسال کوئری و جستجوی اطلاعات در سامانه DICOM (کلاس SCU)

findscu [options] peer port [dcmfile-in...]

برنامهٔ findscu یک SCU (کاربر ردهٔ سرویس) را برای ردهٔ سرویس Query/Retrieve و ردهٔ سرویس Basic Worklist Management پیاده‌سازی می‌کند. برنامهٔ findscu تنها از قابلیت جستجو (کوئری) با استفاده از پیام C-FIND پشتیبانی می‌کند. این برنامه کلیدهای جستجو را به یک SCP ارسال کرده و منتظر پاسخ‌ها می‌ماند. از این برنامه می‌توان برای آزمودن SCPهای رده‌های سرویس Query/Retrieve و Basic Worklist Management استفاده کرد.

peer        نام میزبان طرف ارتباطی DICOM
port        شماره درگاه tcp/ip طرف ارتباطی
dcmfile-in  فایل(های) کوئری DICOM

-h    --help
        چاپ این متن راهنما و خروج
      --version
        چاپ اطلاعات نسخه و خروج
      --arguments
        چاپ آرگومان‌های بسط‌یافتهٔ خط فرمان
-q    --quiet
        حالت بی‌صدا، عدم چاپ هشدارها و خطاها
-v    --verbose
        حالت پرگو، چاپ جزئیات پردازش
-d    --debug
        حالت اشکال‌زدایی، چاپ اطلاعات اشکال‌زدایی
-ll   --log-level  [l]evel: string constant
        (fatal, error, warn, info, debug, trace)
        استفاده از سطح l برای ثبت‌کننده وقایع (logger)
-lc   --log-config  [f]ilename: string
        استفاده از فایل پیکربندی f برای ثبت‌کننده وقایع

بازنویسی کلیدهای تطبیق (matching keys):
  -k    --key  [k]ey: gggg,eeee="str", path or dictionary name="str"
          بازنویسی کلید تطبیق
مدل اطلاعاتی جستجو (کوئری):
  -W    --worklist
          استفاده از مدل اطلاعاتی فهرست کاری مدالیته (پیش‌فرض)
  -P    --patient
          استفاده از مدل اطلاعاتی ریشه بیمار (patient root)
  -S    --study
          استفاده از مدل اطلاعاتی ریشه مطالعه (study root)
  -O    --psonly
          استفاده از مدل اطلاعاتی فقط بیمار/مطالعه (patient/study only)
نسخه پروتکل IP:
  -i4   --ipv4
          استفاده انحصاری از IPv4 (پیش‌فرض)
  -i6   --ipv6
          استفاده انحصاری از IPv6
  -i0   --ip-auto
          استفاده از بررسی DNS برای تعیین خودکار پروتکل IP
عناوین موجودیت برنامه (AE Titles):
  -aet  --aetitle  [a]etitle: string
          تنظیم عنوان AE فراخواننده من (پیش‌فرض: FINDSCU)
  -aec  --call  [a]etitle: string
          تنظیم عنوان AE فراخوانده‌شده طرف ارتباط (پیش‌فرض: ANY-SCP)
نمایش‌های مقدار (VR) پس از سال ۱۹۹۳:
  +u    --enable-new-vr
          فعال‌سازی پشتیبانی از VRهای جدید (UN/UT) (پیش‌فرض)
  -u    --disable-new-vr
          غیرفعال‌سازی پشتیبانی از VRهای جدید، تبدیل به OB
نحوهای انتقال (TS) پیشنهادی برای ارسال:
  -x=   --propose-uncompr
          پیشنهاد تمام TSهای فشرده‌نشده، با VR صریح و
          ترتیب بایت محلی در ابتدا (پیش‌فرض)
  -xe   --propose-little
          پیشنهاد تمام TSهای فشرده‌نشده، با VR صریح و
          little endian در ابتدا
  -xb   --propose-big
          پیشنهاد تمام TSهای فشرده‌نشده، با VR صریح و
          big endian در ابتدا
  -xd   --propose-deflated
          پیشنهاد TS فشرده‌شده با deflate با VR صریح little endian
          و تمامی نحوهای انتقال فشرده‌نشده
  -xi   --propose-implicit
          فقط پیشنهاد دادن نحو انتقال با VR ضمنی little endian
سطح فشرده‌سازی deflate (تنها همراه با --propose-deflated):
  +cl   --compression-level  [l]evel: integer (پیش‌فرض: 6)
          0=فشرده‌نشده، 1=سریع‌ترین، 9=بهترین فشرده‌سازی
سایر گزینه‌های شبکه:
  -to   --timeout  [s]econds: integer (پیش‌فرض: نامحدود)
          مهلت زمانی برای درخواست‌های اتصال
  -ts   --socket-timeout  [s]econds: integer (پیش‌فرض: 60)
          مهلت زمانی برای سوکت شبکه (0 برای نامحدود)
  -ta   --acse-timeout  [s]econds: integer (پیش‌فرض: 30)
          مهلت زمانی برای پیام‌های ACSE
  -td   --dimse-timeout  [s]econds: integer (پیش‌فرض: نامحدود)
          مهلت زمانی برای پیام‌های DIMSE
  -pdu  --max-pdu  [n]umber of bytes: integer (4096..131072)
          تنظیم حداکثر pdu دریافتی به n بایت (پیش‌فرض: 16384)
        --repeat  [n]umber: integer
          تکرار به تعداد n بار
        --abort
          قطع اضطراری ارتباط (abort) به‌جای رهاسازی عادی آن (release)
        --cancel  [n]umber: integer
          لغو پس از دریافت n پاسخ (پیش‌فرض: هرگز)

پشته پروتکل انتقال:
  -tls  --disable-tls
          استفاده از اتصال عادی TCP/IP (پیش‌فرض)
  +tls  --enable-tls  [p]rivate key file, [c]ertificate file: string
          استفاده از اتصال امن و احرازهویت‌شده TLS
  +tla  --anonymous-tls
          استفاده از اتصال امن TLS بدون گواهی
گذرواژه کلید خصوصی (تنها همراه با --enable-tls):
  +ps   --std-passwd
          درخواست از کاربر برای وارد کردن گذرواژه در stdin (پیش‌فرض)
  +pw   --use-passwd  [p]assword: string
          استفاده از گذرواژه مشخص‌شده
  -pw   --null-passwd
          استفاده از رشته خالی به عنوان گذرواژه
قالب فایل کلید و گواهی:
  -pem  --pem-keys
          خواندن کلیدها و گواهی‌ها در قالب فایل PEM (پیش‌فرض)
  -der  --der-keys
          خواندن کلیدها و گواهی‌ها در قالب فایل DER
مرجع صدور گواهی (CA):
  +cf   --add-cert-file  [f]ilename: string
          افزودن فایل گواهی به فهرست گواهی‌ها
  +cd   --add-cert-dir  [d]irectory: string
          افزودن گواهی‌های موجود در پوشه d به فهرست گواهی‌ها
  +crl  --add-crl-file  [f]ilename: string
          افزودن فایل فهرست ابطال گواهی (CRL)
          (به همراه فعال‌سازی ضمنی --enable-crl-vfy)
  +crv  --enable-crl-vfy
          فعال‌سازی اعتبارسنجی CRL گواهی برگ (leaf)
  +cra  --enable-crl-all
          فعال‌سازی اعتبارسنجی CRL کل زنجیره
نمایه امنیتی:
  +ph   --list-profiles
          فهرست کردن نمایه‌های TLS پشتیبانی‌شده و خروج
  +pg   --profile-8996
          نمایه BCP 195 RFC 8996 TLS (پیش‌فرض)
  +pm   --profile-8996-mod
          نمایه اصلاح‌شده BCP 195 RFC 8996 TLS
          # تنها در صورتی در دسترس است که کتابخانه زیرین TLS از تمام
          # ویژگی‌های TLS لازم برای این نمایه پشتیبانی کند
  +py   --profile-bcp195-nd
          نمایه Non-downgrading BCP 195 TLS (منسوخ‌شده)
  +px   --profile-bcp195
          نمایه BCP 195 TLS (منسوخ‌شده)
  +pz   --profile-bcp195-ex
          نمایه Extended BCP 195 TLS (منسوخ‌شده)
  +pb   --profile-basic
          نمایه Basic TLS Secure Transport Connection (منسوخ‌شده)
          # تنها در صورتی در دسترس است که کتابخانه زیرین TLS از 3DES پشتیبانی کند
  +pa   --profile-aes
          نمایه AES TLS Secure Transport Connection (منسوخ‌شده)
  +pn   --profile-null
          ارتباط احرازهویت‌شده رمزنگاری‌نشده
          (منسوخ‌شده، در IHE ATNA استفاده می‌شد)
مجموعه رمز (ciphersuite):
  +cc   --list-ciphers
          فهرست کردن مجموعه‌های رمز TLS پشتیبانی‌شده و خروج
  +cs   --cipher  [c]iphersuite name: string
          افزودن مجموعه رمز به فهرست مجموعه‌های مورد مذاکره
نشانگر نام سرور (SNI):
        --no-sni
          عدم استفاده از SNI (پیش‌فرض)
        --request-sni  [s]erver name: string
          درخواست نام سرور s
تولیدکننده شبه‌تصادفی:
  +rs   --seed  [f]ilename: string
          مقداردهی اولیه (seed) تولیدکننده تصادفی با محتویات f
  +ws   --write-seed
          بازنویسی مقدار seed اصلاح‌شده (تنها همراه با --seed)
  +wf   --write-seed-file  [f]ilename: string (تنها همراه با --seed)
          نوشتن مقدار seed اصلاح‌شده در فایل f
احراز هویت طرف ارتباط (peer):
  -rc   --require-peer-cert
          اعتبارسنجی گواهی طرف ارتباط؛ در صورت عدم وجود ناموفق شود (پیش‌فرض)
  -ic   --ignore-peer-cert
          عدم اعتبارسنجی گواهی طرف ارتباط

عمومی:
  -od   --output-directory  [d]irectory: string (پیش‌فرض: ".")
          نوشتن فایل‌های خروجی در پوشهٔ موجود d
تصحیح خودکار داده‌ها:
  +dc   --enable-correction
          فعال‌سازی تصحیح خودکار داده‌ها
  -dc   --disable-correction
          غیرفعال‌سازی تصحیح خودکار داده‌ها (پیش‌فرض)
پاسخ‌های C-FIND:
  +sr   --show-responses
          ارسال همیشگی پاسخ‌ها به ثبت‌کننده وقایع (logger)
  -sr   --hide-responses
          عدم ارسال پاسخ‌ها به ثبت‌کننده وقایع
  -X    --extract
          استخراج پاسخ‌ها در فایل‌های DICOM (به صورت rsp0001.dcm...)
  -Xx   --extract-xml
          استخراج پاسخ‌ها در فایل‌های XML (به صورت rsp0001.xml...)
  -Xs   --extract-xml-single  [f]ilename: string
          استخراج تمام پاسخ‌ها در فایل XML داده‌شده f
  -Xlo  --limit-output  [n]umber: integer
          محدود کردن تعداد پاسخ‌های استخراج‌شده در فایل به n
          (پیش‌فرض: نامحدود)

هر فایلی که در خط فرمان ارائه شود، به عنوان بخشی از یک درخواست C-FIND به SCP ارسال خواهد شد. فایل جستجو (کوئری) باید یک مجموعه داده معتبر DICOM حاوی بخش dataset از پیام C-FIND-RQ باشد. برای مثال، فایل کوئری می‌تواند با استفاده از ابزار dump2dcm از روی اسکریپتی شبیه به نمونهٔ زیر ایجاد شود:

# query patient names and IDs
(0008,0052) CS [PATIENT]     # QueryRetrieveLevel
(0010,0010) PN []            # PatientName
(0010,0020) LO []            # PatientID

ویژگی‌های مجزای هر فایل ارسالی را می‌توان با استفاده از گزینهٔ -k اصلاح کرد یا تکمیل نمود. برای نمونه دستور:

findscu -P -k "(0010,0010)=HEWETT*" caesar 5678 patqry.dcm

هنگامی که به SCP با نام caesar در درگاه 5678 پروتکل TCP/IP ارسال شود، موجب می‌گردد که هر ویژگی PatientName در patqry.dcm دارای مقدار "HEWETT*" شود. اگر چنین ویژگی‌ای از قبل وجود داشته باشد جایگزین می‌شود و در صورت عدم وجود، درج خواهد شد. گزینهٔ -k می‌تواند بیش از یک بار تکرار شود. بخش مقدار (بعد از '=') می‌تواند حذف شود که باعث می‌شود ویژگی با طول صفر ارسال گردد.

در نسخه‌های پیشین findscu، کلیدهای تگ بدون پرانتز در اطراف شماره گروه و عنصر مشخص می‌شدند، مانند "0010,0010" به‌جای "(0010,0010)". مهاجرت به نحو جدید توصیه می‌شود؛ با این حال، نحو قدیمی همچنان کار می‌کند.

همچنین گزینهٔ -k به‌جای تگ‌های عنصر، نام‌های واژه‌نامه (dictionary names) را برای مشخص کردن عناصر DICOM می‌پذیرد. برای نمونه، فراخوانی findscu در بالا می‌تواند بدین شکل نوشته شود:

findscu -P -k PatientName="HEWETT*" caesar 5678 patqry.dcm

مشخص کردن توالی‌ها (sequences)، آیتم‌ها و ویژگی‌های تودرتو نیز با استفاده از گزینهٔ -k امکان‌پذیر است. در این حالت‌ها، باید از یک نشانه‌گذاری ویژه به نام نشانه‌گذاری «مسیر» (path notation) استفاده شود، مانند:

findscu -W -k "(0040,0100)[0].Modality=CT" caesar 5678

این دستور با مشخص کردن تگ (0040,0100) یعنی "Scheduled Procedure StepSequence" و ویژگی "Modality" در آیتم اول این توالی با مقدار "CT"، سرور فهرست کاری (worklist server) در میزبان caesar را برای هرگونه اقدام برنامه‌ریزی‌شده مدالیته‌های CT جستجو می‌کند. جزئیات مربوط به این نشانه‌گذاری مسیر را می‌توان در مستندات dcmodify یافت.

چنانچه هیچ فایلی در خط فرمان مشخص نشود، جستجو باید به صورت کامل با یک یا چند گزینهٔ -k تعیین گردد. در صورت ارائه چندین فایل کوئری، برنامهٔ findscu چندین درخواست C-FIND به SCP ارسال خواهد کرد.

هر مجموعه از شناسه‌های پاسخ دریافت‌شده، به ثبت‌کننده وقایع (logger) ارسال می‌شود، مگر اینکه گزینهٔ --hide-responses، هر یک از گونه‌های --extract در زیر، گزینهٔ --quiet یا یک پیکربندی مناسب برای logger استفاده شده باشد. در چنین شرایطی، خروجی به ثبت‌کننده وقایع را می‌توان با گزینهٔ --show-responses اجبار کرد.

علاوه بر این، مجموعه داده‌های پاسخ را می‌توان به صورت فایل‌های مجزای DICOM (با گزینهٔ --extract) یا فایل‌های XML (با گزینهٔ --extract-xml) استخراج کرد. قالب خروجی مورد دوم در فایل dcm2xml.dtd (که با عنصر سطح بالا "data-set" آغاز می‌شود) شرح داده شده است. برای فایل‌های XML، ویژگی Specific Character Set به صورت خودکار به کدگذاری مناسب XML نگاشت می‌شود. اگر این کار امکان‌پذیر نباشد، برای نمونه در خصوص مجموعه‌های نویسه ISO 2022، نویسه‌های غیر ASCII و نویسه‌های با کد کمتر از ۳۲ به صورت "&#nnn;" ذخیره می‌شوند که در آن "nnn" کد عددی نویسه است. لطفاً توجه داشته باشید که این امر ممکن است منجر به ارجاعات موجودیت نویسه‌ای نامعتبر (مانند "" برای ESC) شود و موجب گردد اکثر تجزیه‌کننده‌های XML سند را رد کنند.

به عنوان روشی جایگزین، تمام مجموعه داده‌های پاسخ یک ارتباط (association) را می‌توان با گزینهٔ --extract-xml-single در یک فایل XML واحد استخراج کرد. عنصر سطح بالای سند XML عبارت از "responses" (همراه با ویژگی "type" با مقدار "C-FIND") خواهد بود. مجموعه داده‌های مجزا همانند آنچه در بالا شرح داده شد ذخیره می‌شوند. در صورت فعال بودن پشتیبانی از تبدیل مجموعه نویسه، از کدگذاری UTF-8 استفاده می‌شود، یعنی تمام مجموعه داده‌ها به کدگذاری UTF-8 تبدیل می‌شوند (که برای جلوگیری از بروز مشکلات مرتبط با نویسه‌های غیر ASCII در هنگام استفاده از مجموعه‌های نویسهٔ متفاوت، اکیداً توصیه می‌شود).

برنامهٔ findscu از SOP Classهای زیر به‌عنوان یک SCU پشتیبانی می‌کند:

FINDPatientRootQueryRetrieveInformationModel       1.2.840.10008.5.1.4.1.2.1.1
FINDStudyRootQueryRetrieveInformationModel         1.2.840.10008.5.1.4.1.2.2.1
FINDPatientStudyOnlyQueryRetrieveInformationModel  1.2.840.10008.5.1.4.1.2.3.1
FINDModalityWorklistInformationModel               1.2.840.10008.5.1.4.31

برنامهٔ findscu بسته به گزینه‌های خط فرمان (-P، -S، -O یا -W)، بافت‌های ارائه‌دهنده (presentation contexts) را برای یکی از SOP Classهای پشتیبانی‌شدهٔ فوق پیشنهاد خواهد داد. به‌طور کلی، نحوهای انتقال زیر پشتیبانی می‌شوند:

LittleEndianImplicitTransferSyntax                 1.2.840.10008.1.2
LittleEndianExplicitTransferSyntax                 1.2.840.10008.1.2.1
DeflatedExplicitVRLittleEndianTransferSyntax       1.2.840.10008.1.2.1.99 (*)
BigEndianExplicitTransferSyntax                    1.2.840.10008.1.2.2

(*) در صورتی که همراه با پشتیبانی از zlib کامپایل شده باشد (خروجی --version را ببینید)

اینکه کدام نحوهای انتقال و با چه ترتیبی در واقع پیشنهاد شوند، با گزینه‌های --propose قابل تعیین است.

برنامهٔ findscu از مذاکرهٔ بسط‌یافته (extended negotiation) پشتیبانی نمی‌کند.

سطح خروجی ثبت وقایع در ابزارهای مختلف خط فرمان و کتابخانه‌های زیربنایی توسط کاربر قابل تعیین است. به‌طور پیش‌فرض، فقط خطاها و هشدارها در جریان خطای استاندارد نوشته می‌شوند. با استفاده از گزینهٔ --verbose، پیام‌های اطلاعاتی مانند جزئیات پردازش نیز گزارش می‌شوند. گزینهٔ --debug می‌تواند برای دریافت جزئیات بیشتر دربارهٔ فعالیت‌های درونی، برای مثال با اهداف اشکال‌زدایی به‌کار رود. سایر سطوح ثبت وقایع با استفاده از گزینهٔ --log-level قابل انتخاب هستند. در حالت --quiet فقط خطاهای مهلک گزارش می‌شوند. در رخدادهای خطای بسیار وخیم از این دست، برنامه معمولاً خاتمه می‌یابد. برای جزئیات بیشتر دربارهٔ سطوح مختلف ثبت وقایع، به مستندات ماژول «oflog» مراجعه کنید.

در صورتی که خروجی ثبت وقایع باید درون یک فایل (اختیاراً به همراه چرخش فایل لاگ)، در syslog (یونیکس) یا event log (ویندوز) نوشته شود، می‌توان از گزینهٔ --log-config استفاده کرد. این فایل پیکربندی همچنین امکان هدایت تنها پیام‌های خاصی به یک جریان خروجی معین، و فیلتر کردن پیام‌های خاص بر اساس ماژول یا برنامه‌ای که در آن ایجاد شده‌اند را فراهم می‌کند. یک نمونه فایل پیکربندی در <etcdir>/logger.cfg ارائه شده است.

تمامی ابزارهای خط فرمان از نشانه‌گذاری زیر برای پارامترها استفاده می‌کنند: قلاب‌ها مقادیر اختیاری را در بر می‌گیرند (0-1)، سه نقطهٔ پایانی نشان می‌دهند که چندین مقدار مجاز است (1-n)، و ترکیبی از هر دو به معنای 0 تا n مقدار است.

گزینه‌های خط فرمان به ترتیب با یک علامت پیشوند «+» یا «-» از پارامترها متمایز می‌شوند. معمولاً ترتیب و موقعیت گزینه‌های خط فرمان اختیاری است (یعنی می‌توانند در هر جایی ظاهر شوند). با این حال، اگر گزینه‌ها مانعة‌الجمع باشند، گزینه‌ای که در راست‌ترین موقعیت قرار دارد اعمال می‌شود. این رفتار با قواعد استاندارد ارزیابی در شل‌های متداول یونیکس مطابقت دارد.

علاوه بر این، یک یا چند فایل دستور می‌توانند با استفاده از علامت «@» به عنوان پیشوند نام فایل مشخص شوند (مانند @command.txt). چنین آرگومان دستوری پیش از هرگونه ارزیابی بیشتر، با محتوای فایل متنی مربوطه جایگزین می‌شود (چندین نویسهٔ فاصلهٔ خالی به عنوان یک جداکنندهٔ واحد در نظر گرفته می‌شوند، مگر آنکه بین دو علامت نقل‌قول قرار گرفته باشند). لطفاً توجه داشته باشید که یک فایل دستور نمی‌تواند حاوی فایل دستور دیگری باشد. این رویکرد ساده اما مؤثر امکان خلاصه کردن ترکیب‌های متداول گزینه‌ها/پارامترها را فراهم کرده و از خطوط فرمان طولانی و گیج‌کننده جلوگیری می‌کند (یک نمونه در فایل <datadir>/dumppat.txt ارائه شده است).

ابزار findscu تلاش خواهد کرد فرهنگ‌های دادهٔ DICOM مشخص‌شده در متغیر محیطی DCMDICTPATH را بارگذاری کند. به‌طور پیش‌فرض، یعنی در صورتی که متغیر محیطی DCMDICTPATH تنظیم نشده باشد، فایل <datadir>/dicom.dic بارگذاری خواهد شد مگر اینکه فرهنگ داده درون برنامه تعبیه شده باشد (حالت پیش‌فرض برای ویندوز).

رفتار پیش‌فرض ارجح است و متغیر محیطی DCMDICTPATH تنها زمانی باید استفاده شود که فرهنگ‌های دادهٔ جایگزین مورد نیاز باشند. ساختار متغیر محیطی DCMDICTPATH همانند متغیر PATH در پوستهٔ یونیکس است که در آن دونقطه (":") ورودی‌ها را از هم جدا می‌کند. در سیستم‌های ویندوز، از نقطه ویرگول (";") به عنوان جداکننده استفاده می‌شود. کد فرهنگ داده تلاش خواهد کرد هر فایل مشخص‌شده در متغیر محیطی DCMDICTPATH را بارگذاری کند. چنانچه هیچ فرهنگ داده‌ای بارگذاری نشود، این یک خطا در نظر گرفته می‌شود.

بسته به گزینه‌های مشخص‌شده در خط فرمان، ابزار findscu تلاش خواهد کرد تا جدول‌های نگاشت مجموعه نویسه را بارگذاری کند. این حالت زمانی رخ می‌دهد که DCMTK با کتابخانه oficonv (که حالت پیش‌فرض است) کامپایل شده باشد و جدول‌های نگاشت درون کتابخانه گنجانده نشده باشند (حالت پیش‌فرض هنگامی که DCMTK از کتابخانه‌های مشترک استفاده می‌کند).

انتظار می‌رود فایل‌های جدول نگاشت در <datadir> متعلق به DCMTK قرار داشته باشند. متغیر محیطی DCMICONVPATH می‌تواند برای مشخص کردن مکانی دیگر استفاده شود. در صورت تعیین مکانی متفاوت، آن جدول‌های نگاشت جایگزین هرگونه جدول درونی نیز خواهند شد.

<datadir>/dcm2xml.dtd - فایل تعریف نوع سند (DTD)

movescu(1), dump2dcm(1), dcmodify(1)

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

Thu Jul 9 2026 18:43:40 Version 3.7.0