dsr2html(1) OFFIS DCMTK dsr2html(1)

dsr2html - تبدیل و رندر فایل و مجموعه‌داده DICOM SR به HTML/XHTML

dsr2html [options] dsrfile-in [htmlfile-out]

ابزار dsr2html محتوای یک سند گزارش‌دهی ساختاریافته دایکام (DICOM SR) را (در قالب فایل یا مجموعه‌داده خام) به فرمت HTML (زبان نشانه‌گذاری ابرمتن) نسخه 3.2 یا 4.01 و همچنین XHTML (زبان نشانه‌گذاری ابرمتن توسعه‌پذیر) نسخه 1.1 تبدیل و رندر می‌کند.

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

dsrfile-in    نام فایل ورودی DICOM SR برای رندر شدن ("-" برای ورودی استاندارد stdin)
htmlfile-out  نام فایل خروجی HTML/XHTML (پیش‌فرض: خروجی استاندارد 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
         استفاده از تشخیص خودکار سینتکس انتقال (پیش‌فرض)
  -td  --read-xfer-detect
         نادیده گرفتن سینتکس انتقال مشخص‌شده در هدر فایل
  -te  --read-xfer-little
         خواندن با سینتکس انتقال explicit VR little endian
  -tb  --read-xfer-big
         خواندن با سینتکس انتقال explicit VR big endian
  -ti  --read-xfer-implicit
         خواندن با سینتکس انتقال implicit VR little endian

اطلاعات تکمیلی:
  -Ip  --processing-details
         نمایش آیتم محتوایی که هم‌اکنون در حال پردازش است
مدیریت خطا:
  -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
مجموعه نویسه‌های خاص (specific character set):
  +Cr  --charset-require
         الزام اعلام مجموعه نویسه توسعه‌یافته (پیش‌فرض)
  +Ca  --charset-assume  [c]harset: string
         فرض کردن مجموعه نویسه c در صورت عدم اعلام مجموعه نویسه توسعه‌یافته
       --charset-check-all
         بررسی تمام عناصر داده با مقادیر رشته‌ای
         (پیش‌فرض: فقط PN, LO, LT, SH, ST, UC و UT)
         # این گزینه فقط برای بررسی توسعه‌یافته جهت لزوم حضور
         # مشخصه Specific Character Set (0008,0005) استفاده می‌شود،
         # اما برای تبدیل مقادیر عناصر نامتأثر به UTF-8 کاربرد ندارد
         # (مانند مقادیر عنصری با VR از نوع CS)
  +U8  --convert-to-utf8
         تبدیل تمام مقادیر عناصر متأثر از
         Specific Character Set (0008,0005) به UTF-8
         # نیازمند پشتیبانی از سوی کتابخانه کدگذاری نویسه زیرین است
         # (برای اطلاع از اینکه کدام‌یک موجود است، به خروجی --version مراجعه کنید)

سازگاری HTML/XHTML:
  +H3  --html-3.2
         استفاده از ویژگی‌های سازگار با HTML نسخه 3.2 تنها
  +H4  --html-4.0
         مجاز دانستن تمام ویژگی‌های HTML نسخه 4.01 (پیش‌فرض)
  +X1  --xhtml-1.1
         انطباق با مشخصات XHTML نسخه 1.1
  +Hd  --add-document-type
         افزودن ارجاع به تعریف نوع سند SGML
شیوه‌نامه آبشاری (CSS)، همراه با HTML 3.2 قابل استفاده نیست:
  +Sr  --css-reference  URL: string
         افزودن ارجاع به CSS مشخص‌شده در سند
  +Sf  --css-file  [f]ilename: string
         قراردادن مستقیم محتوای CSS مشخص‌شده درون سند
رندر عمومی:
  +Ri  --expand-inline
         بسط آیتم‌های محتوای کوتاه درون‌خطی (پیش‌فرض)
  -Ri  --never-expand-inline
         هرگز بسط ندادن آیتم‌های محتوا به صورت درون‌خطی
  +Ra  --always-expand-inline
         همیشه بسط دادن آیتم‌های محتوا به صورت درون‌خطی
  +Rd  --render-full-data
         رندر کامل داده‌های آیتم‌های محتوا
  +Rt  --section-title-inline
         رندر عنوان‌های بخش به صورت درون‌خطی، نه جداگانه
  +Rh  --hyperlink-url-prefix  [p]refix: string
         استفاده از پیشوند URL p برای پیوندها به اشیاء ترکیبی
         (پیش‌فرض: http://localhost/dicom.cgi)
رندر سند:
  +Dt  --document-type-title
         استفاده از نوع سند به عنوان عنوان سند (پیش‌فرض)
  +Dp  --patient-info-title
         استفاده از اطلاعات بیمار به عنوان عنوان سند
  -Dh  --no-document-header
         عدم رندر اطلاعات عمومی سند
رندر کدها:
  +Ci  --render-inline-codes
         رندر کدها در بلوک‌های متنی پیوسته
  +Cn  --concept-name-codes
         رندر کد نام‌های مفهوم (Concept Names)
  +Cu  --numeric-unit-codes
         رندر کد واحدهای سنجش عددی
  +Cv  --code-value-unit
         استفاده از مقدار کد به عنوان واحد سنجش (پیش‌فرض)
  +Cm  --code-meaning-unit
         استفاده از مفهوم کد به عنوان واحد سنجش
  +Cc  --render-all-codes
         رندر تمام کدها (شامل +Ci، +Cn و +Cu)
  +Ct  --code-details-tooltip
         رندر جزئیات کد به صورت تول‌تیپ (راهنمای شناور) (شامل +Cc)

ابزار dsr2html از کلاس‌های 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 (*)

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

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

ASCII         (ISO_IR 6)                       =>  (none)
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 پیش از رندر به قالب HTML/XHTML استفاده کرد.

لطفاً توجه داشته باشید که استفاده از گزینه‌های --css-reference، --css-file یا --hyperlink-url-prefix می‌تواند منجر به مسائل امنیتی شود، زیرا ممکن است مهاجم از آن‌ها برای تزریق محتوای خطرناک به خروجی HTML/XHTML سوءاستفاده کند. مقادیر ارائه‌شده به این گزینه‌ها بررسی نمی‌شوند؛ نه URL و پیشوند آن و نه محتوای فایل CSS تعیین‌شده.

سطح جزئیات خروجی ثبت گزارش‌های (logging) ابزارهای خط فرمان گوناگون و کتابخانه‌های زیرین توسط کاربر قابل تعیین است. به طور پیش‌فرض، تنها خطاها و هشدارها در جریان خطای استاندارد (stderr) نوشته می‌شوند. با استفاده از گزینه --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 ارائه شده است).

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

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

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

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

<datadir>/report.css - نمونه فایل شیوه‌نامه آبشاری برای HTML
<datadir>/reportx.css - نمونه فایل شیوه‌نامه آبشاری برای XHTML

dcmconv(1)

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

Thu Jul 9 2026 18:43:40 Version 3.7.0