xml2dsr(1) OFFIS DCMTK xml2dsr(1)

xml2dsr - تبدیل سند XML به فایل گزارش ساختاریافته دایکام (DICOM SR)

xml2dsr [گزینه‌ها] xmlfile-in dsrfile-out

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

یک فایل XML مناسب را می‌توان با استفاده از ابزار dsr2xml ایجاد کرد (گزینه +Xn برای افزودن اعلان فضای نام XML به عنصر ریشه توصیه می‌شود).

xmlfile-in   نام فایل ورودی XML برای تبدیل ("-" برای ورودی استاندارد stdin)
dsrfile-out  نام فایل خروجی DICOM SR ("-" برای خروجی استاندارد 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 برای لاگر

کدگذاری:
  +Ee  --template-envelope
         عنصر قالب، آیتم‌های محتوا را در بر می‌گیرد

اعتبارسنجی:
  +Vs  --validate-schema
         اعتبارسنجی سند XML در برابر طرح‌واره (Schema)
         (همراه با --template-envelope مجاز نیست)
  # نیازمند کامپایل libxml با پشتیبانی از XML Schema است
  +Vn  --check-namespace
         بررسی فضای نام XML در ریشه سند
شناسه‌های یکتا (UIDs):
  +Ug  --generate-new-uids
         تولید شناسه یکتای جدید Study/Series/SOP Instance UID
  -Uo  --dont-overwrite-uids
         عدم بازنویسی UIDs موجود (پیش‌فرض)
  +Uo  --overwrite-uids
         بازنویسی UIDs موجود

قالب فایل خروجی:
  +F   --write-file
         نوشتن در قالب فایل (پیش‌فرض)
  -F   --write-dataset
         نوشتن مجموعه داده بدون فراداده فایل
سینتکس انتقال خروجی:
  +t=  --write-xfer-same
         نوشتن با همان سینتکس انتقال ورودی (پیش‌فرض)
  +te  --write-xfer-little
         نوشتن با VR صریح و ترتیب بایت little endian
  +tb  --write-xfer-big
         نوشتن با VR صریح و ترتیب بایت big endian
  +ti  --write-xfer-implicit
         نوشتن با VR ضمنی و ترتیب بایت little endian
  +td  --write-xfer-deflated
         نوشتن با VR صریح فشرده‌شده deflated و little endian
نمایش مقادیر پس از ۱۹۹۳ (post-1993 VRs):
  +u   --enable-new-vr
         فعال‌سازی پشتیبانی از VRهای جدید (UN/UT) (پیش‌فرض)
  -u   --disable-new-vr
         غیرفعال کردن پشتیبانی از VRهای جدید، تبدیل به OB
کدگذاری طول گروه:
  +g=  --group-length-recalc
         محاسبه مجدد طول گروه‌ها در صورت وجود (پیش‌فرض)
  +g   --group-length-create
         همیشه همراه با عناصر طول گروه نوشته شود
  -g   --group-length-remove
         همیشه بدون عناصر طول گروه نوشته شود
کدگذاری طول در توالی‌ها و آیتم‌ها:
  +e   --length-explicit
         نوشتن با طول‌های صریح (پیش‌فرض)
  -e   --length-undefined
         نوشتن با طول‌های نامشخص
فاصله‌گذاری انتهای مجموعه داده (نه با --write-dataset):
  -p=  --padding-retain
         عدم تغییر فاصله‌گذاری (پیش‌فرض مگر اینکه --write-dataset باشد)
  -p   --padding-off
         بدون فاصله‌گذاری (ضمنی در صورت --write-dataset)
  +p   --padding-create  [f]ile-pad [i]tem-pad: integer
         تراز کردن فایل با مضربی از f بایت
         و آیتم‌ها با مضربی از i بایت
سطح فشرده‌سازی deflate (فقط با --write-xfer-deflated):
  +cl  --compression-level  [l]evel: integer (پیش‌فرض: 6)
         0=بدون فشرده‌سازی، 1=سریع‌ترین، 9=بهترین فشرده‌سازی

ابزار xml2dsr از رده‌های 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 Class نیست، بلکه برای ارتباطات بلادرنگ (Real-Time) استفاده می‌شود.

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

کدگذاری نویسه‌های دایکام به صورت خودکار از عنصر با تگ "0008,0005" (Specific Character Set) در صورت وجود تعیین می‌شود. مجموعه‌های نویسه زیر در حال حاضر پشتیبانی می‌شوند (نیازمند کامپایل libxml با پشتیبانی از iconv است، خروجی --version را ببینید):

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)

اگر libxml با پشتیبانی zlib کامپایل شده باشد، فایل ورودی (xmlfile-in) می‌تواند با ZIP فشرده شود، که معمولاً منجر به فایل‌های بسیار کوچک‌تری می‌گردد. برای بررسی اینکه آیا پشتیبانی از zlib در دسترس است، خروجی گزینه --version را بررسی کنید.

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

نسخه‌های مختلف libxml ظاهراً محدودیت‌های متفاوتی برای حداکثر طول مقدار یک عنصر XML دارند. بنابراین، باید از به کار بردن مقادیر بسیار طولانی برای عناصر خودداری شود. محدودیت معمول برای نسخه ۲.۷.۳ به بعد libxml برابر با ۱۰ مگابایت برای یک عنصر منفرد است.

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

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

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

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

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

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

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

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

dsr2xml(1)

حق نشر (C) ۲۰۰۳-۲۰۲۵ توسط OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.

پنج‌شنبه 9 ژوئیه 2026 18:43:40 Version 3.7.0