dcm2xml(1) OFFIS DCMTK dcm2xml(1)

dcm2xml - تبدیل فایل و مجموعه داده دایکام به XML

dcm2xml [options] dcmfile-in [xmlfile-out]

ابزار dcm2xml محتویات یک فایل DICOM (قالب فایل یا مجموعه داده خام) را به XML (زبان نشانه‌گذاری گسترش‌پذیر) تبدیل می‌کند. دو قالب خروجی وجود دارد. اولی مختص به DCMTK با DTD (تعریف نوع سند) مربوط به آن است که در فایل dcm2xml.dtd شرح داده شده است. دومی به "Native DICOM Model" اشاره دارد که برای سرویس میزبانی برنامه DICOM در بخش ۱۹ استاندارد DICOM مشخص شده است.

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

dcmfile-in   نام فایل ورودی DICOM برای تبدیل ("-" برای 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
مقادیر تگ‌های طولانی:
  +M    --load-all
          بارگذاری مقادیر تگ‌های بسیار طولانی (مانند داده‌های پیکسل)
  -M    --load-short
          عدم بارگذاری مقادیر بسیار طولانی (پیش‌فرض)
  +R    --max-read-length  [k]bytes: integer (4..4194302, پیش‌فرض: 4)
          تعیین آستانه مقادیر طولانی بر حسب کیلوبایت k

مجموعه نویسه‌های خاص (specific character set):
  +Cr   --charset-require
          الزام به اعلان مجموعه نویسه گسترش‌یافته (پیش‌فرض)
  +Ca   --charset-assume  [c]harset: string
          فرض مجموعه نویسه c در صورت عدم اعلان مجموعه نویسه
  +Cc   --charset-check-all
          بررسی تمام عناصر داده دارای مقادیر رشته‌ای
          (پیش‌فرض: فقط PN, LO, LT, SH, ST, UC و UT)
  +U8   --convert-to-utf8
          تبدیل تمام مقادیر عناصر تحت تأثیر مجموعه نویسه خاص
          (0008,0005) به UTF-8

قالب عمومی XML:
  -dtk  --dcmtk-format
          خروجی در قالب اختصاصی DCMTK (پیش‌فرض)
  -nat  --native-format
          خروجی در قالب Native DICOM Model (بخش ۱۹)
  +Xn   --use-xml-namespace
          افزودن اعلان فضای نام XML به عنصر ریشه
قالب اختصاصی DCMTK (نه با --native-format):
  +Xd   --add-dtd-reference
          افزودن ارجاع به تعریف نوع سند (DTD)
  +Xe   --embed-dtd-content
          تعبیه محتوای تعریف نوع سند در سند XML
  +Xf   --use-dtd-file  [f]ilename: string
          استفاده از فایل DTD مشخص‌شده (فقط با +Xe)
  +Wn   --write-element-name
          نوشتن نام عناصر داده دایکام (پیش‌فرض)
  -Wn   --no-element-name
          عدم نوشتن نام عناصر داده دایکام
  +Wb   --write-binary-data
          نوشتن داده‌های باینری عناصر OB و OW
          (پیش‌فرض: خاموش، با --load-all با احتیاط استفاده شود)
کدگذاری داده‌های باینری:
  +Eh   --encode-hex
          کدگذاری داده‌های باینری به صورت اعداد هگزادسیمال
          (پیش‌فرض برای قالب اختصاصی DCMTK)
  +Eu   --encode-uuid
          کدگذاری داده‌های باینری به صورت ارجاع UUID
          (پیش‌فرض برای Native DICOM Model)
  +Eb   --encode-base64
          کدگذاری داده‌های باینری به صورت Base64 (RFC 2045, MIME)

ساختار اساسی خروجی XML اختصاصی DCMTK ایجادشده از یک فایل دایکام به صورت زیر است:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE file-format SYSTEM "dcm2xml.dtd">
<file-format xmlns="http://dicom.offis.de/dcmtk">
  <meta-header xfer="1.2.840.10008.1.2.1" name="Little Endian Explicit">
    <element tag="0002,0000" vr="UL" vm="1" len="4"
             name="MetaElementGroupLength">
      166
    </element>
    ...
    <element tag="0002,0013" vr="SH" vm="1" len="16"
             name="ImplementationVersionName">
      OFFIS_DCMTK_353
    </element>
  </meta-header>
  <data-set xfer="1.2.840.10008.1.2" name="Little Endian Implicit">
    <element tag="0008,0005" vr="CS" vm="1" len="10"
             name="SpecificCharacterSet">
      ISO_IR 100
    </element>
    ...
    <sequence tag="0028,3010" vr="SQ" card="2" name="VOILUTSequence">
      <item card="3">
        <element tag="0028,3002" vr="xs" vm="3" len="6"
                 name="LUTDescriptor">
          256\0\8
        </element>
        ...
      </item>
      ...
    </sequence>
    ...
    <element tag="7fe0,0010" vr="OW" vm="1" len="262144"
             name="PixelData" loaded="no" binary="hidden">
    </element>
  </data-set>
</file-format>

تگ‌های "file-format" و "meta-header" برای مجموعه‌های داده دایکام وجود ندارند.

ویژگی‌های دارای فیلدهای مقداری بسیار بزرگ (مانند داده‌های پیکسل) به طور پیش‌فرض بارگذاری نمی‌شوند. این موارد را می‌توان با ویژگی اضافی "loaded" با مقدار "no" شناسایی کرد (به مثال بالا مراجعه کنید). گزینه خط فرمان --load-all برنامه را وادار می‌کند تمام فیلدهای مقداری از جمله فیلدهای بسیار طولانی را بارگذاری کند.

علاوه بر این، داده‌های باینری ویژگی‌های OB و OW به طور پیش‌فرض در فایل خروجی XML نوشته نمی‌شوند. این عناصر را می‌توان با ویژگی اضافی "binary" با مقدار "hidden" شناسایی کرد (پیش‌فرض "no" است). گزینه خط فرمان --write-binary-data باعث چاپ فیلدهای باینری نیز می‌شود (مقدار ویژگی "yes" یا "base64"). اما هنگام استفاده هم‌زمان از این گزینه با --load-all به دلیل حجم بسیار زیاد داده‌های پیکسل خروجی احتیاط کنید. توجه داشته باشید که در این زمینه، مقادیر عناصر با VRهای OD, OF, OL و OV به عنوان "داده باینری" تلقی نمی‌شوند.

چندین مقدار (یعنی جایی که چندگانگی مقدار دایکام بزرگتر از ۱ است) با یک بک‌اسلش "\" از هم جدا می‌شوند (به جز داده‌های کدگذاری‌شده با Base64). ویژگی "len" تعداد بایت‌های فیلد مقدار ذخیره‌شده در مجموعه داده دایکام را نشان می‌دهد؛ یعنی ممکن است با طول مقدار کدگذاری‌شده در XML به دلیل حذف پدینگ‌های غیرضروری تفاوت داشته باشد. اگر این ویژگی در تگ‌های شروع "sequence" یا "item" غایب باشد، عنصر مربوطه دایکام با طول تعریف‌نشده ذخیره شده است.

شرح قالب Native DICOM Model را می‌توان در بخش ۱۹ استاندارد دایکام ("Application Hosting") یافت.

داده‌های باینری، یعنی مقادیر عناصر دایکام با VRهای OB یا OW، و همچنین مقادیر OD، OF، OL، OV و UN به طور پیش‌فرض به دلیل اندازه بزرگشان در خروجی XML نوشته نمی‌شوند. در عوض، برای هر عنصر یک شناسه منحصر‌به‌فرد جهانی (UUID) جدید تولید شده و به عنوان صفت یک عنصر XML بنام <BulkData> نوشته می‌شود. علاوه بر این، الحاقیه ۱۶۳ عنصر جدید <InlineBinary> را معرفی می‌کند که امکان کدگذاری داده‌های باینری به صورت Base64 را فراهم می‌سازد. در حال حاضر گزینه خط فرمان --encode-base64 این کدگذاری را برای این VRها فعال می‌کند: OB، OD، OF، OL، OV، OW و UN.

علاوه بر موارد فوق، در پیاده‌سازی فعلی فرمت Native DICOM Model، مقادیر عناصر بزرگ با VR غیر از موارد بالا به عنوان bulk data نوشته نمی‌شوند، اگرچه برای عناصر متنی بسیار طولانی (به ویژه UT) یا فیلدهای عددی طولانی می‌توانست مفید باشد.

کدگذاری نویسه‌های 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"

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

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

سطح خروجی گزارش‌گیری می‌تواند توسط کاربر تعیین شود. به طور پیش‌فرض فقط خطاها و هشدارها در خروجی خطای استاندارد نوشته می‌شوند. با استفاده از گزینه --verbose پیام‌های اطلاع‌رسانی نیز گزارش می‌شوند. گزینه --debug جزئیات فعالیت‌های داخلی را چاپ می‌کند. در حالت --quiet تنها خطاهای مهلک چاپ می‌شوند. برای هدایت لاگ به فایل یا سیستم syslog می‌توان از گزینه --log-config استفاده کرد.

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

ابزار dcm2xml تلاش خواهد کرد تا واژه‌نامه‌های داده دایکام مشخص‌شده در متغیر محیطی DCMDICTPATH را بارگذاری کند. متغیر DCMICONVPATH نیز برای مشخص کردن مسیر جدول‌های نگاشت مجموعه نویسه‌ها به کار می‌رود.

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

xml2dcm(1), dcmconv(1)

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

Thu Jul 9 2026 18:43:40 Version 3.7.0