dsr2xml(1) OFFIS DCMTK dsr2xml(1)

dsr2xml - تبدیل فایل و مجموعه داده‌های DICOM SR به XML

dsr2xml [options] dsrfile-in [xmlfile-out]

ابزار dsr2xml محتویات یک سند گزارش‌دهی ساختاریافته دایکام (DICOM Structured Reporting - SR) را اعم از فرمت فایلی یا مجموعه داده‌های خام (raw data set) به XML (زبان نشانه‌گذاری توسعه‌پذیر) تبدیل می‌کند. طرح‌واره اکس‌ام‌ال (XML Schema) با نام dsr2xml.xsd هنوز از قالب استانداردی پیروی نمی‌کند. با این حال، ممکن است برنامه dsr2xml در آینده در این زمینه ارتقا یابد (مثلاً با پشتیبانی از HL7/CDA - معماری اسناد بالینی).

اگر dsr2xml یک مجموعه داده خام را بخواند (داده‌های DICOM فاقد فراداده سرآیند فایل)، تلاش خواهد کرد تا نحو انتقال (transfer syntax) را از طریق بررسی چند بایت نخست فایل حدس بزند. حدس زدن صحیح نحو انتقال همواره ممکن نیست و بهتر است تا حد امکان با استفاده از ابزار dcmconv، مجموعه داده به فرمت فایل تبدیل شود. همچنین می‌توان از گزینه‌های -f و -t[ieb] برای اجبار dsr2xml به خواندن مجموعه داده با یک نحو انتقال خاص استفاده کرد.

dsrfile-in   نام فایل ورودی DICOM SR برای تبدیل ("-" برای stdin)
xmlfile-out  نام فایل خروجی XML (پیش‌فرض: stdout)

-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 برای لاگر

فرمت فایل ورودی:
  +f   --read-file
         خواندن فرمت فایل یا مجموعه داده (پیش‌فرض)
  +fo  --read-file-only
         فقط خواندن فرمت فایل
  -f   --read-dataset
         خواندن مجموعه داده بدون اطلاعات فراداده فایل
نحو انتقال ورودی:
  -t=  --read-xfer-auto
         استفاده از تشخیص خودکار TS (پیش‌فرض)
  -td  --read-xfer-detect
         نادیده گرفتن TS مشخص‌شده در هدر فراداده فایل
  -te  --read-xfer-little
         خواندن با TS صریح VR اندیان کوچک (little endian)
  -tb  --read-xfer-big
         خواندن با TS صریح VR اندیان بزرگ (big endian)
  -ti  --read-xfer-implicit
         خواندن با TS ضمنی VR اندیان کوچک (little endian)

مدیریت خطا:
  -Er  --unknown-relationship
         پذیرش نوع رابطه ناشناخته/ناموجود
  -Ev  --invalid-item-value
         پذیرش مقدار نامعتبر برای آیتم محتوا
         (مانند نقض تعریف VR یا VM)
  -Ec  --ignore-constraints
         نادیده گرفتن محدودیت‌های محتوای رابطه
  -Ee  --ignore-item-errors
         توقف نکردن هنگام خطاهای آیتم محتوا، فقط هشدار
         (مانند ویژگی‌های مفقود مختص نوع مقدار)
  -Ei  --skip-invalid-items
         رد کردن آیتم‌های نامعتبر محتوا (شامل زیردرخت)
  -Dv  --disable-vr-checker
         غیرفعال‌سازی بررسی مقادیر رشته‌ای مطابق با VR
مجموعه کاراکترهای خاص:
  +Cr  --charset-require
         الزام اعلام مجموعه کاراکترهای بسط‌یافته (پیش‌فرض)
  +Ca  --charset-assume  [c]harset: string
         فرض کردن مجموعه کاراکتر c در صورت عدم اعلام
  +Cc  --charset-check-all
         بررسی تمام عناصر داده‌ای دارای مقادیر رشته‌ای
         (پیش‌فرض: فقط PN, LO, LT, SH, ST, UC و UT)
         # این گزینه فقط برای بررسی بسط‌یافته این مورد استفاده می‌شود
         # که آیا صفت Specific Character Set (0008,0005) باید حضور
         # داشته باشد یا خیر، نه برای تبدیل مقادیر غیرمتاثر به UTF-8
  +U8  --convert-to-utf8
         تبدیل تمام مقادیر عناصر تحت تاثیر
         Specific Character Set (0008,0005) به UTF-8
         # نیازمند پشتیبانی کتابخانه رمزگذاری زیرین کاراکترها است
         # (خروجی --version را برای بررسی دسترسی ببینید)

رمزگذاری:
  +Ea  --attr-all
         کدگذاری همه‌چیز به‌عنوان صفت XML
         (میانبر برای +Ec, +Er, +Ev و +Et)
  +Ec  --attr-code
         کدگذاری مقدار کد، طراح طرح کدگذاری و نسخه
         طرح کدگذاری به‌عنوان صفت XML
  +Er  --attr-relationship
         کدگذاری نوع رابطه به‌عنوان صفت XML
  +Ev  --attr-value-type
         کدگذاری نوع مقدار به‌عنوان صفت XML
  +Et  --attr-template-id
         کدگذاری شناسه قالب به‌عنوان صفت XML
  +Ee  --template-envelope
         احاطه آیتم‌های محتوا توسط عنصر قالب
         (نیازمند +Wt، متضمن +Et)
ساختار XML:
  +Xs  --add-schema-reference
         افزودن ارجاع به طرح‌واره XML با نام "dsr2xml.xsd"
         (همراه با +Ea, +Ec, +Er, +Ev, +Et, +Ee, +We مجاز نیست)
  +Xn  --use-xml-namespace
         افزودن اعلان فضای‌نام (XML namespace) به عنصر ریشه
نوشتن:
  +We  --write-empty-tags
         نوشتن تمام تگ‌ها حتی اگر مقدار آن‌ها خالی باشد
  +Wi  --write-item-id
         همیشه شناسه آیتم را بنویس
  +Wt  --write-template-id
         نوشتن اطلاعات شناسایی قالب

ابزار dsr2xml از کلاس‌های SOP زیر پشتیبانی می‌کند:

SpectaclePrescriptionReportStorage           1.2.840.10008.5.1.4.1.1.78.6
MacularGridThicknessAndVolumeReportStorage   1.2.840.10008.5.1.4.1.1.79.1
BasicTextSRStorage                           1.2.840.10008.5.1.4.1.1.88.11
EnhancedSRStorage                            1.2.840.10008.5.1.4.1.1.88.22
ComprehensiveSRStorage                       1.2.840.10008.5.1.4.1.1.88.33
Comprehensive3DSRStorage                     1.2.840.10008.5.1.4.1.1.88.34
ProcedureLogStorage                          1.2.840.10008.5.1.4.1.1.88.40
MammographyCADSRStorage                      1.2.840.10008.5.1.4.1.1.88.50
KeyObjectSelectionDocumentStorage            1.2.840.10008.5.1.4.1.1.88.59
ChestCADSRStorage                            1.2.840.10008.5.1.4.1.1.88.65
XRayRadiationDoseSRStorage                   1.2.840.10008.5.1.4.1.1.88.67
RadiopharmaceuticalRadiationDoseSRStorage    1.2.840.10008.5.1.4.1.1.88.68
ColonCADSRStorage                            1.2.840.10008.5.1.4.1.1.88.69
ImplantationPlanSRStorage                    1.2.840.10008.5.1.4.1.1.88.70
AcquisitionContextSRStorage                  1.2.840.10008.5.1.4.1.1.88.71
SimplifiedAdultEchoSRStorage                 1.2.840.10008.5.1.4.1.1.88.72
PatientRadiationDoseSRStorage                1.2.840.10008.5.1.4.1.1.88.73
PlannedImagingAgentAdministrationSRStorage   1.2.840.10008.5.1.4.1.1.88.74
PerformedImagingAgentAdministrationSRStorage 1.2.840.10008.5.1.4.1.1.88.75
WaveformAnnotationSRStorage                  1.2.840.10008.5.1.4.1.1.88.77
RenditionSelectionDocumentRealTimeCommunication 1.2.840.10008.10.4 (*)

(*) این مورد کلاس Storage SOP نیست، بلکه برای ارتباطات بی‌درنگ (Real-Time) استفاده می‌شود.

لطفاً توجه داشته باشید که در حال حاضر فقط ویژگی‌های اجباری و برخی ویژگی‌های اختیاری پشتیبانی می‌شوند.

رمزگذاری XML به‌طور خودکار از ویژگی (0008,0005) "Specific Character Set" در دایکام با استفاده از نگاشت زیر تعیین می‌شود:

ASCII         (ISO_IR 6)                       =>  "UTF-8"
UTF-8         "ISO_IR 192"                     =>  "UTF-8"
ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
ISO Latin 9   "ISO_IR 203"                     =>  "ISO-8859-15"
Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
Thai          "ISO_IR 166"                     =>  "TIS-620"
Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
Chinese       "GB18030"                        =>  "GB18030"
Chinese       "GBK"                            =>  "GBK"

اگر این ویژگی دایکام در فایل ورودی وجود نداشته باشد، در حالی که مورد نیاز است، می‌توان از گزینه --charset-assume برای مشخص کردن دستی مجموعه کاراکتر مناسب (با استفاده از اصطلاحات تعریف‌شده دایکام) استفاده کرد. به دلایل سازگاری با نسخه‌های پیشین این ابزار، اصطلاحات زیر نیز پشتیبانی شده و به‌طور خودکار به اصطلاحات تعریف‌شده دایکام نگاشت می‌شوند: latin-1، latin-2، latin-3، latin-4، latin-5، latin-9، cyrillic، arabic، greek، hebrew.

می‌توان از گزینه --convert-to-utf8 برای تبدیل فایل یا مجموعه داده دایکام به رمزگذاری UTF-8 پیش از تبدیل به قالب XML استفاده کرد.

اگر نگاشتی تعریف نشده باشد و از گزینه --convert-to-utf8 استفاده نشود، کاراکترهای غیر ASCII و کاراکترهای کمتر از کد 32 به‌صورت "&#nnn;" ذخیره می‌شوند که "nnn" به کد عددی کاراکتر اشاره دارد. این امر ممکن است منجر به مراجع موجودیت کاراکتری نامعتبر (مانند "" برای ESC) شود و سبب رد شدن سند توسط اکثر تجزیه‌کننده‌های XML گردد.

لطفاً در استفاده از گزینه‌های پردازشی --unknown-relationship، --invalid-item-value، --ignore-constraints، --ignore-item-errors و --skip-invalid-items دقت فرمایید زیرا بررسی‌های اعتبارسنجی را روی فایل ورودی DICOM SR غیرفعال می‌کنند و بنابراین ممکن است خروجی ناسازگار با استاندارد ایجاد شود. با این حال، ممکن است دلایلی برای استفاده از یک یا چند مورد از این گزینه‌ها وجود داشته باشد، مانند خواندن و پردازش سندی از SR که کدگذاری آن نادرست است.

طرح‌واره XML با نام dsr2xml.xsd از تمام انواع قالب‌های خروجی dsr2xml پشتیبانی نمی‌کند. با این حال، قالب خروجی پیش‌فرض (به همراه گزینه --use-xml-namespace) باید کار کند.

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

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

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

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

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

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

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

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

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

<datadir>/dsr2xml.xsd - فایل طرح‌واره XML

xml2dsr(1), dcmconv(1)

کپی‌رایت (C) 2000-2025 توسط OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.

9 ژوئیه 2026 نسخه 3.7.0