.TH "dcmodify" 1 "Thu Jul 9 2026 18:43:40" "Version 3.7.0" "OFFIS DCMTK" \" -*- nroff -*- .nh .SH "نام (NAME)" dcmodify \- اصلاح و ویرایش تگ‌ها و مقادیر در پرونده‌های DICOM .PP .SH "خلاصه دستور (SYNOPSIS)" .PP .PP .nf dcmodify [options] dcmfile-in\&.\&.\&. .fi .PP .SH "توضیحات (DESCRIPTION)" .PP ابزار \fBdcmodify\fP برنامه‌ای است که امکان ویرایش، درج و حذف تگ‌ها و آیتم‌ها را در فایل‌های DICOM فراهم می‌کند\&. توالی‌ها (Sequences) و تگ‌هایی با تعدد مقدار (value multiplicity) بزرگ‌تر از ۱ نیز پشتیبانی می‌شوند\&. در حال حاضر اطلاعات متاسرآیند (metaheader) و نمایش مقدار (VR) تگ نمی‌توانند مستقیماً توسط \fBdcmodify\fP تغییر یابند\&. علاوه بر اصلاح تگ‌ها، \fBdcmodify\fP گزینه‌های ورودی متعددی را در دسترس قرار می‌دهد — تا \fBdcmodify\fP را وادار کند فایل‌های ورودی را مطابق با مشخصات ارائه‌شده توسط کاربر مدیریت کند — و همچنین گزینه‌های خروجی برای کنترل قالب خروجی فایل‌های حاصل ارائه می‌دهد\&. .PP در صورتی که چندین تغییر باید انجام شود، \fBdcmodify\fP تغییرات را دقیقاً به همان ترتیبی که در خط فرمان ظاهر می‌شوند انجام می‌دهد\&. لطفاً توجه داشته باشید که \fBdcmodify\fP بررسی نمی‌کند که آیا یک مقدار داده‌شده با نمایش مقدار (VR) مربوطه مطابقت دارد یا خیر\&. معمولاً یک پیام خطا چاپ می‌شود، اما به طور کلی این کاربر است که باید از استفاده صحیح از VR اطمینان حاصل کند\&. .PP اگر \fBdcmodify\fP تگی را که باید درج کند نشناسد، VR آن تگ روی UN (ناشناخته) تنظیم می‌شود و مقدار مشخص‌شده در خط فرمان به عنوان یک سری اعداد هگزادسیمال (مانند آنچه برای VR=OB ارائه می‌شود) تفسیر می‌گردد\&. لطفاً این تگ‌ها را در دیکشنری وارد کنید تا از این رفتار جلوگیری شود\&. همچنین با مشخص کردن گزینه \fI-iun\fP، می‌توان \fBdcmodify\fP را وادار کرد که مقادیر UN را دست‌نخورده باقی بگذارد\&. استفاده از گزینه \fI-u\fP به \fBdcmodify\fP اجازه می‌دهد تمامی ویژگی‌های VR=UN را به عنوان OB ذخیره کند\&. .PP ابزار \fBdcmodify\fP قادر است با اصطلاحاً «مسیرهای تگ» (tag paths) کار کند تا به تگ‌های درون توالی‌ها دسترسی داشته باشد\&. نحو (به شکل شبه‌فرمال) عبارت است از: .PP .PP .nf {sequence[item-no]\&.}*element .fi .PP .PP که در آن 'sequence' یک تگ توالی مانند (0008,1111) یا نام تگ در دیکشنری است\&. عبارت 'item-no' شماره آیتمی را که باید به آن دسترسی پیدا کرد مشخص می‌کند (شمارش از صفر شروع می‌شود)\&. 'element' تگ هدفی را که باید روی آن کار شود تعریف می‌کند\&. یک تگ می‌تواند یا مستقیماً به صورت (0010,0010) یا از طریق نام متناظر آن در دیکشنری مانند "PatientName" مشخص شود\&. علامت '*' نشان می‌دهد که می‌توانید عبارات توالی را برای دسترسی به سطوح عمیق‌تر در فایل‌های DICOM تکرار کنید (بخش مثال‌ها را ببینید)\&. برای 'item-no' نیز می‌توان از نویسه عام '*' برای انتخاب تمام آیتم‌ها در توالی احاطه‌کننده استفاده کرد (بخش نویسه‌های عام را در زیر ببینید)\&. .PP هنگام درج مسیرهای تگ متشکل از چندین گره (یعنی نه یک عنصر منفرد) با استفاده از گزینه \fI-i\fP، هر یک از اجزای گم‌شده در مسیر (آیتم‌ها، توالی‌ها، عناصر برگ) در صورت نبودن، به طور خودکار درج می‌شوند\&. این قابلیت برای نویسه‌های عام آیتم کار نمی‌کند: زمانی که حتی یک آیتم در توالی احاطه‌کننده وجود نداشته باشد، \fBdcmodify\fP مسلماً نمی‌تواند تصمیم بگیرد که چه تعداد آیتم باید ایجاد شود\&. با این حال، اگر شماره آیتمی مانند '5' مشخص شود، هر ۶ آیتم (از صفر شمرده شده) می‌توانند به صورت خودکار در حالت درج ایجاد شوند (و ایجاد می‌شوند)\&. اگر قبلاً ۲ آیتم وجود داشته باشد، بقیه (۴ آیتم) درج خواهند شد\&. .PP ابزار \fBdcmodify\fP روی دایرکتوری‌ها کار نمی‌کند؛ یعنی پارامتر \fIdcmfile-in\fP\&.\&.\&. نباید شامل نام‌های دایرکتوری باشد\&. .PP لطفاً توجه داشته باشید که نکاتی در رابطه با تغییر تگ‌های اختصاصی (بخش تگ‌های اختصاصی را ببینید) و برای تغییر UIDها (بخش تغییر شناسه‌های یکتا را ببینید) وجود دارد\&. .SH "پارامترها (PARAMETERS)" .PP .PP .nf dcmfile-in نام فایل(های) ورودی DICOM برای ویرایش ("-" برای stdin/stdout) .fi .PP .SH "گزینه‌ها (OPTIONS)" .PP .SS "گزینه‌های عمومی (general options)" .PP .nf -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 برای ثبت‌کننده لاگ .fi .PP .SS "گزینه‌های ورودی (input options)" .PP .nf قالب فایل ورودی: +f --read-file خواندن قالب فایل یا مجموعه داده (پیش‌فرض) +fo --read-file-only فقط خواندن قالب فایل -f --read-dataset خواندن مجموعه داده بدون اطلاعات متای فایل +fc --create-file ایجاد قالب فایل در صورت عدم وجود فایل نحو انتقال ورودی: -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 تجزیه ویژگی‌های با طول فرد: +ao --accept-odd-length پذیرش ویژگی‌های با طول فرد (پیش‌فرض) +ae --assume-even-length فرض اینکه طول واقعی یک بایت بزرگ‌تر است تصحیح خودکار داده‌ها: +dc --enable-correction فعال‌سازی تصحیح خودکار داده‌ها (پیش‌فرض) -dc --disable-correction غیرفعال‌سازی تصحیح خودکار داده‌ها قالب جریان بیتی ورودی فشرده‌شده: +bd --bitstream-deflated انتظار جریان بیتی فشرده‌شده deflated (پیش‌فرض) +bz --bitstream-zlib انتظار جریان بیتی deflated zlib .fi .PP .SS "گزینه‌های پردازش (processing options)" .PP .nf پشتیبان‌گیری از فایل‌های ورودی: --backup پشتیبان‌گیری از فایل‌ها پیش از ویرایش (پیش‌فرض) -nb --no-backup عدم پشتیبان‌گیری از فایل‌ها (خطرناک) حالت درج: -i --insert "[t]ag-path=[v]alue" درج (یا بازنویسی) مسیر در موقعیت t با مقدار v -if --insert-from-file "[t]ag-path=[f]ilename" درج (یا بازنویسی) مسیر در موقعیت t با مقدار از فایل f -nrc --no-reserv-check عدم بررسی رزروهای اختصاصی حالت ویرایش: -m --modify "[t]ag-path=[v]alue" ویرایش تگ در موقعیت t به مقدار v -mf --modify-from-file "[t]ag-path=[f]ilename" ویرایش تگ در موقعیت t به مقدار از فایل f -ma --modify-all "[t]ag=[v]alue" ویرایش تمامی تگ‌های منطبق t در فایل به مقدار v حالت پاک کردن: -e --erase "[t]ag-path" پاک کردن تگ/آیتم در موقعیت t -ea --erase-all "[t]ag" پاک کردن تمامی تگ‌های منطبق t در فایل -ep --erase-private پاک کردن تمامی داده‌های اختصاصی از فایل شناسه یکتا: -gst --gen-stud-uid تولید Study Instance UID جدید -gse --gen-ser-uid تولید Series Instance UID جدید -gin --gen-inst-uid تولید SOP Instance UID جدید -nmu --no-meta-uid عدم به‌روزرسانی UIDهای متاسرآیند در صورت ویرایش UIDهای مرتبط در مجموعه داده مدیریت خطا: -ie --ignore-errors ادامه پردازش فایل در صورت بروز خطای ویرایش -imt --ignore-missing-tags موفق در نظر گرفتن «تگ یافت نشد» هنگام ویرایش یا پاک کردن در فایل‌ها -iun --ignore-un-values عدم تلاش برای نوشتن مقدار در عناصری که دارای VR از نوع UN هستند .fi .PP .SS "گزینه‌های خروجی (output options)" .PP .nf قالب فایل خروجی: +F --write-file نوشتن قالب فایل (پیش‌فرض) -F --write-dataset نوشتن مجموعه داده بدون اطلاعات متای فایل نحو انتقال خروجی: +t= --write-xfer-same نوشتن با همان نحو انتقال ورودی (پیش‌فرض) +te --write-xfer-little نوشتن با TS صریح VR و ترتیب بایت little endian +tb --write-xfer-big نوشتن با TS صریح VR و ترتیب بایت big endian +ti --write-xfer-implicit نوشتن با TS ضمنی VR و ترتیب بایت little endian نمایش مقادیر پس از ۱۹۹۳ (post-1993 value representations): +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 نوشتن همیشگی بدون عناصر طول گروه کدگذاری طول در توالی‌ها و آیتم‌ها: +le --length-explicit نوشتن با طول‌های صریح (پیش‌فرض) -le --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 بایت .fi .PP .SH "تگ‌های اختصاصی (PRIVATE TAGS)" .PP هنگام کار با تگ‌های اختصاصی، نکاتی وجود دارد که باید در نظر بگیرید\&. با این وجود، درج یا ویرایش یک تگ رزرو (gggg,00xx) همیشه باید به درستی کار کند\&. .SS "درج‌ها (Insertions)" اگر می‌خواهید یک تگ اختصاصی (غیر از یک رزرو با gggg,00xx) درج کنید، مطمئن شوید که آن را در دیکشنری خود فهرست کرده‌اید (برای جزئیات به \fI/datadict\&.txt\fP مراجعه کنید)\&. اگر فهرست نشده باشد، \fBdcmodify\fP آن را با VR=UN درج خواهد کرد\&. همچنین در برخی موارد ممکن است درج برای برخی مقادیر حتی با شکست مواجه شود\&. .PP اگر تگ اختصاصی خود را در دیکشنری داشته باشید، \fBdcmodify\fP به شرح زیر عمل می‌کند: هنگامی که یک رزرو در مجموعه داده احاطه‌کننده تگ بیابد که ایجادکننده اختصاصی (private creator) آن مطابقت دارد، درج با VR موجود در دیکشنری و مقدار داده‌شده در خط فرمان انجام می‌شود\&. اما اگر ایجادکننده اختصاصی مطابقت نداشته باشد یا هیچ‌کدام تنظیم نشده باشد، \fBdcmodify\fP با یک خطا بازمی‌گردد\&. اگر یک تگ اختصاصی باید صرف‌نظر از وجود نداشتن رزرو درج شود، می‌توان از گزینه \fI-nrc\fP استفاده کرد که درج را اجباری می‌کند\&. با این حال، در این حالت VR روی UN تنظیم می‌شود، زیرا تگ را نمی‌توان در دیکشنری یافت\&. .PP توضیحات بالا را در مورد نحوه مدیریت درج مقادیر در عناصری با VR ناشناخته ببینید\&. .SS "ویرایش‌ها (Modifications)" اگر مقدار یک تگ اختصاصی را ویرایش کنید، \fBdcmodify\fP مقدار VR آن را با دیکشنری بررسی نخواهد کرد\&. بنابراین لطفاً دقت کنید که تنها مقادیری را وارد کنید که با VR تگ مطابقت دارند\&. .PP اگر می‌خواهید مقدار \fIو\fP نمایش مقدار (VR) یک تگ اختصاصی را تغییر دهید، زیرا به تازگی این تگ را به دیکشنری خود افزوده‌اید، می‌توانید آن را با \fBdcmodify\fP حذف کرده و دوباره درج کنید\&. در این صورت \fBdcmodify\fP از ورودی دیکشنری شما برای تعیین VR صحیح استفاده می‌کند (همچنین زیربخش درج‌ها را ببینید)\&. .PP همچنین، توضیحات بالا را در مورد نحوه مدیریت درج مقادیر در عناصری با VR ناشناخته ببینید\&. .SS "حذف‌ها (Deletions)" هنگامی که از \fBdcmodify\fP برای حذف یک تگ رزرو اختصاصی استفاده می‌کنید، لطفاً توجه داشته باشید که \fBdcmodify\fP به تگ‌های اختصاصی که تحت این رزرو هستند دست نمی‌زند\&. کاربر موظف است سازگاری بین رزروها و تگ‌های اختصاصی مرتبط با آن‌ها را مدیریت کند\&. .PP برای حذف تگ‌های اختصاصی غیر رزروی، نکته خاصی وجود ندارد\&. .SH "تغییر شناسه‌های یکتا (CHANGING UIDS)" .PP اگر تغییراتی را در تگ‌های مرتبط در مجموعه داده ('SOP Class UID' و 'SOP Instance UID') از طریق گزینه‌های حالت درج یا ویرایش اعمال کنید، \fBdcmodify\fP به طور خودکار 'Media Storage SOP Class UID' و 'Media Storage SOP Instance UID' را در متاسرآیند تصحیح خواهد کرد\&. می‌توانید این رفتار را با استفاده از گزینه \fI-nmu\fP غیرفعال کنید\&. .PP اگر UIDهای جدید را با \fI-gst\fP، \fI-gse\fP یا \fI-gin\fP تولید کنید، این کار فقط بر UID انتخابی شما تأثیر می‌گذارد\&. بنابراین اگر از \fI-gst\fP برای تولید یک 'Study Instance UID' جدید استفاده کنید، 'Series Instance UID' و 'SOP Instance UID' تحت تأثیر قرار نخواهند گرفت! این به شما امکان می‌دهد هر مقدار را جداگانه تولید کنید\&. به طور معمول، شما باید UIDهای «زیرین» را نیز ویرایش کنید\&. به عنوان نقطه ضعفی برای این انعطاف‌پذیری، کاربر باید اطمینان حاصل کند که هنگام ایجاد فایل‌های DICOM «جدید» با UIDهای جدید از طریق \fBdcmodify\fP، سایر UIDها در صورت لزوم توسط کاربر به‌روزرسانی شوند\&. .PP هنگام انتخاب گزینه \fI-gin\fP، تگ متاسرآیند مربوطه ('Media Storage SOP Instance UID') به طور خودکار به‌روزرسانی می‌شود\&. این رفتار را نمی‌توان غیرفعال کرد\&. .PP هنگام کار بر روی چندین فایل ورودی، \fBdcmodify\fP هر فایل را به صورت جداگانه پردازش می‌کند؛ یعنی برای هر فایل به صورت مجزا UID تولید خواهد کرد\&. به عنوان مثال، هنگام استفاده از گزینه \fI-gst\fP، \fBdcmodify\fP یک Study Instance UID متفاوت را در هر فایل درج می‌کند، به جای اینکه یک شناسه واحد تولید کند و آن را در تمام فایل‌های در حال پردازش بنویسد\&. .SH "ایجاد فایل‌های جدید (CREATING NEW FILES)" .PP گزینه \fI--create-file\fP به \fBdcmodify\fP اجازه می‌دهد تا در صورتی که فایلی از قبل روی دیسک وجود نداشته باشد، آن را ایجاد کند\&. این قابلیت می‌تواند برای ایجاد فایل‌ها از ابتدا با انجام درج‌های متوالی با استفاده از گزینه‌هایی مانند \fI--insert\fP به کار رود\&. این امر به‌ویژه هنگام ایجاد فایل‌های پرس‌وجو (query) برای ابزارهایی مانند \fBfindscu\fP یا \fBmovescu\fP می‌تواند بسیار مفید باشد\&. در صورتی که هیچ نحو انتقال خروجی خاصی تعریف نشده باشد، \fBdcmodify\fP گزینه Little Endian Explicit Uncompressed را برای خروجی انتخاب می‌کند\&. فایل‌هایی که به تازگی ایجاد می‌شوند همیشه در قالب فایل DICOM نوشته می‌شوند، یعنی گزینه \fI--write-dataset\fP همراه با \fI--create-file\fP مجاز نیست\&. بدین ترتیب، حداقل متاسرآیند نوشته می‌شود و در شرایطی که هیچ درجی در فراخوانی \fBdcmodify\fP انجام نشود، فایلی با طول صفر بایت ایجاد نخواهد شد\&. .SH "مقادیر عناصر از فایل (ELEMENT VALUES FROM FILE)" .PP به منظور خواندن مقدار عنصر از یک فایل به جای مشخص کردن آن در خط فرمان، می‌توان از گزینه‌های \fI-mf\fP و \fI-if\fP استفاده کرد\&. لطفاً توجه داشته باشید که برای عناصر OW، انتظار می‌رود داده‌ها دارای ترتیب little endian باشند و در صورت لزوم بایت‌های آن‌ها جابه‌جا (swap) خواهد شد\&. اندازه فایل باید همیشه یک عدد زوج از بایت‌ها باشد، یعنی هیچ پدینگ خودکاری انجام نمی‌شود\&. .SH "نویسه‌های عام (WILDCARDS)" .PP ابزار \fBdcmodify\fP همچنین استفاده از نویسه عام "*" را برای شماره آیتم‌ها در عبارات مسیر مجاز می‌داند؛ به عنوان مثال "ContentSequence[*]\&.CodeValue" تمامی ویژگی‌های "CodeValue" را در تمامی آیتم‌های ContentSequence انتخاب می‌کند\&. استفاده از نویسه عام برای تمامی عملیات پایه امکان‌پذیر است، یعنی گزینه‌های ویرایش \fI-m\fP، درج \fI-i\fP و پاک کردن \fI-e\fP که این امر به همراه ایجاد خودکار گره‌های میانی مسیر، آن را به ابزاری قدرتمند برای ساخت و پردازش مجموعه‌داده‌های پیچیده تبدیل می‌کند\&. .PP گزینه‌های \fI-ma\fP و \fI-ea\fP برای ویرایش یا حذف تمامی رخدادهای یک عنصر DICOM بر اساس تگ آن، هیچ نویسه عامی را نمی‌پذیرند و فقط روی عناصر منفرد (یعنی یک نام دیکشنری منفرد یا کلید تگ) کار می‌کنند\&. .SH "مثال‌ها (EXAMPLES)" .PP .PP .nf -i --insert: dcmodify -i "(0010,0010)=A Name" file\&.dcm تگ PatientName را در فایل 'file.dcm' در سطح اول درج می‌کند. اگر تگ از قبل وجود داشته باشد، گزینه -i آن را بازنویسی می‌کند! اگر می‌خواهید عنصری با تعدد مقدار (value multiplicity) بزرگ‌تر از ۱ (مثلاً ۴) درج کنید، می‌توانید این کار را با دستور زیر انجام دهید: dcmodify -i "(0018,1310)=1\\2\\3\\4" dcmodify -i "(0008,1111)[0]\&.PatientName=Another Name" *\&.dcm تگ PatientName را در اولین آیتم از توالی (0008,1111) درج می‌کند. توجه داشته باشید که استفاده از نویسه‌های عام برای فایل‌ها امکان‌پذیر است. همچنین می‌توانید مسیرهای طولانی‌تری برای تگ مشخص کنید (به عنوان مثال: "(0008,1111)[0]\&.(0008,1111)[1]\&.(0010,0010)=A Third One"). اگر هر بخشی از مسیر، مثلاً توالی یا آیتم "0" وجود نداشته باشد، به صورت خودکار توسط dcmodify درج می‌شود. dcmodify -i "(0008,1111)[*]\&.PatientName=Another Name" *\&.dcm تگ PatientName را در _تک‌تک_ آیتم‌های توالی (0008,1111) درج می‌کند. توجه داشته باشید که استفاده از نویسه‌های عام برای فایل‌ها امکان‌پذیر است. همچنین می‌توانید مسیرهای تگ طولانی‌تری را نیز مشخص کنید (به عنوان مثال: "(0008,1111)[*]\&.(0008,1111)[*]\&.(0010,0010)=A Third One"). -if --insert-from-file: dcmodify -if "PixelData=pixel\&.raw" file\&.dcm محتوای فایل 'pixel.raw' را در عنصر PixelData فایل 'file.dcm' درج می‌کند. محتوای فایل همان‌طور که هست خوانده می‌شود. انتظار می‌رود داده‌های OW دارای ترتیب بایت little endian باشند و در صورت نیاز جابه‌جا (swap) می‌شوند. هیچ بررسی برای اطمینان از منطقی بودن میزان داده‌ها با توجه به سایر ویژگی‌ها مانند Rows یا Columns انجام نخواهد شد. -m --modify: dcmodify -m "(0010,0010)=A Name" file\&.dcm تگ (0010,0010) را در سطح اول به "A Name" تغییر می‌دهد. این گزینه همچنین مسیرهای طولانی‌تر تگ را همان‌طور که در بالا برای -i نشان داده شد می‌پذیرد. اگر عنصر برگ یا هر بخش میانی مسیر وجود نداشته باشد، برخلاف گزینه '-i' درج نمی‌شود. dcmodify -m "(0010,0010)=A Name" -imt file\&.dcm تگ (0010,0010) را در سطح اول به "A Name" تغییر می‌دهد. با توجه به گزینه داده‌شده '-imt'، در صورت عدم وجود عنصر/آیتم (یا هر گره میانی در یک مسیر طولانی‌تر)، به جای پیام "tag not found"، موفقیت گزارش می‌شود. توجه داشته باشید که برای گزینه '-m' آخرین گره در مسیر باید یک عنصر برگ باشد، یعنی یک توالی یا یک آیتم نباشد. -mf --modify-from-file: dcmodify -mf "PixelData=pixel\&.raw" file\&.dcm همانند -if عمل می‌کند، در صورتی که از قبل عنصر PixelData در 'file.dcm' وجود داشته باشد. در غیر این صورت هیچ تغییری اعمال نمی‌شود. -ma --modify-all: dcmodify -ma "(0010,0010)=New Name" file\&.dcm همانند -m عمل می‌کند اما بر روی تمام تگ‌های منطبق یافت‌شده در 'file.dcm' اعمال می‌شود. بنابراین، کل مجموعه داده شامل توالی‌ها را برای تگ (0010,0010) جستجو کرده و آن‌ها را به "New Name" تغییر می‌دهد. -e --erase: dcmodify -e "(0010,0010)" *\&.dcm تگ (0010,0010) را در تمام فایل‌های *&.dcm در سطح اول پاک می‌کند. این گزینه همچنین مسیرهای طولانی‌تر تگ را همان‌طور که در بالا برای -i نشان داده شد مجاز می‌داند. dcmodify -e "(0010,0010)" -imt *\&.dcm تگ (0010,0010) را در تمام فایل‌های *&.dcm در سطح اول پاک می‌کند. با توجه به گزینه داده‌شده '-imt'، در صورت عدم وجود عنصر/آیتم (یا هر گره میانی در یک مسیر طولانی‌تر)، به جای پیام "tag not found"، موفقیت گزارش می‌شود. -ea --erase-all: dcmodify -ea "(0010,0010)" *\&.dcm مشابه -e است، اما در توالی‌ها و آیتم‌ها نیز جستجو می‌کند. -ep --erase-private: dcmodify -ep *\&.dcm تمام تگ‌های اختصاصی (یعنی تگ‌هایی که شماره گروه فرد دارند) را از تمامی فایل‌های منطبق با *&.dcm در دایرکتوری جاری حذف می‌کند. -gst --gen-stud-uid: dcmodify -gst file\&.dcm این دستور یک مقدار جدید برای StudyInstanceUID (0020,000d) تولید می‌کند. سایر UIDها تغییر نمی‌کنند! -gse --gen-ser-uid: dcmodify -gse file\&.dcm این دستور یک مقدار جدید برای SeriesInstanceUID (0020,000e) تولید می‌کند. سایر UIDها تغییر نمی‌کنند! -gin --gen-inst-uid: dcmodify -gin file\&.dcm این دستور یک مقدار جدید برای SOPInstanceUID (0008,0018) تولید می‌کند. مقدار متناظر MediaStorageSOPInstanceUID (0002,0003) به طور خودکار به مقدار جدید تنظیم می‌شود. لطفاً توجه داشته باشید که جلوگیری از این به‌روزرسانی متاسرآیند از طریق گزینه -nmu امکان‌پذیر نیست. -nmu --no-meta-uid: dcmodify -m "SOPInstanceUID=[UID]" -nmu *\&.dcm این دستور SOPInstanceUID را به [UID] داده‌شده تغییر می‌دهد، اما گزینه -nmu از تنظیم MediaStorageSOPInstanceUID در متاسرآیند توسط dcmodify جلوگیری می‌کند. .fi .PP .SH "مدیریت خطا (ERROR HANDLING)" .PP ابزار \fBdcmodify\fP تلاش می‌کند تا هر یک از عملیات ویرایش مشخص‌شده در خط فرمان را اجرا کند: اگر یکی از آن‌ها خطایی برگرداند، سایر عملیات به هر حال انجام می‌شوند\&. با این حال در صورت بروز هرگونه خطا، فایل تغییریافته ذخیره نمی‌شود، مگر اینکه گزینه \fI--ignore-errors\fP مشخص شده باشد\&. اگر این گزینه انتخاب شود، \fBdcmodify\fP به تغییر فایل‌های دیگر مشخص‌شده در خط فرمان نیز ادامه می‌دهد؛ در غیر این صورت \fBdcmodify\fP پس از اولین فایلی که دارای خطاهای ویرایش باشد خارج می‌شود\&. .PP اگر گزینه \fI--ignore-missing-tags\fP فعال باشد، هرگونه عملیات ویرایش یا پاک کردن (یعنی نه \fI--insert\fP) که به دلیل عدم وجود تگ با شکست مواجه شود، موفق تلقی می‌شود\&. این امر در صورتی منطقی است که شخصی بخواهد مطمئن شود تگ‌های خاصی در فایل وجود ندارند یا — در صورت وجود — روی مقدار خاصی تنظیم شده‌اند\&. .SH "ثبت گزارش‌ها (LOGGING)" .PP سطح گزارش‌گیری خروجی ابزارهای مختلف خط فرمان و کتابخانه‌های زیرین می‌تواند توسط کاربر مشخص شود\&. به طور پیش‌فرض، فقط خطاها و هشدارها در جریان خطای استاندارد (stderr) نوشته می‌شوند\&. با استفاده از گزینه \fI--verbose\fP پیام‌های اطلاع‌رسانی مانند جزئیات پردازش نیز گزارش می‌شوند\&. گزینه \fI--debug\fP می‌تواند برای دریافت جزئیات بیشتر در مورد فعالیت‌های داخلی، به عنوان مثال برای اهداف اشکال‌زدایی استفاده شود\&. سایر سطوح گزارش‌گیری را می‌توان با استفاده از گزینه \fI--log-level\fP انتخاب کرد\&. در حالت \fI--quiet\fP فقط خطاهای مهلک گزارش می‌شوند\&. در چنین شرایط خطای بسیار شدیدی، برنامه معمولاً متوقف خواهد شد\&. برای جزئیات بیشتر در مورد سطوح مختلف گزارش‌گیری، مستندات ماژول "oflog" را ببینید\&. .PP در صورتی که خروجی گزارش‌گیری باید در فایل نوشته شود (اختیاری با چرخش فایل لاگ)، در syslog (یونیکس) یا گزارش رویدادها (ویندوز)، گزینه \fI--log-config\fP می‌تواند استفاده شود\&. این فایل پیکربندی همچنین اجازه می‌دهد تا فقط پیام‌های خاصی به یک جریان خروجی مشخص هدایت شوند و پیام‌های خاصی بر اساس ماژول یا برنامه‌ای که در آن تولید می‌شوند فیلتر گردند\&. یک نمونه فایل پیکربندی در \fI/logger\&.cfg\fP ارائه شده است\&. .SH "خط فرمان (COMMAND LINE)" .PP تمام ابزارهای خط فرمان از نمادگذاری زیر برای پارامترها استفاده می‌کنند: براکت‌های کروشه مقادیر اختیاری را احاطه می‌کنند (۰-۱)، سه نقطه انتهایی نشان می‌دهد که چندین مقدار مجاز است (۱-n)، ترکیبی از هر دو به معنای ۰ تا n مقدار است\&. .PP گزینه‌های خط فرمان با یک علامت '+' یا '-' در ابتدا از پارامترها متمایز می‌شوند\&. معمولاً ترتیب و موقعیت گزینه‌های خط فرمان اختیاری است (یعنی می‌توانند در هر جایی ظاهر شوند)\&. با این حال، اگر گزینه‌ها مانعة‌الجمع باشند، آخرین گزینه در سمت راست استفاده می‌شود\&. این رفتار مطابق با قوانین استاندارد ارزیابی پوسته‌های رایج یونیکس است\&. .PP علاوه بر این، یک یا چند فایل فرمان را می‌توان با استفاده از علامت '@' به عنوان پیشوند نام فایل مشخص کرد (مانند \fI@command\&.txt\fP)\&. چنین آرگومان فرمانی قبل از هرگونه ارزیابی بیشتر، با محتوای فایل متنی مربوطه جایگزین می‌شود (فاصله‌های متوالی به عنوان یک جداکننده منفرد در نظر گرفته می‌شوند مگر اینکه بین دو علامت نقل‌قول قرار گیرند)\&. لطفاً توجه داشته باشید که یک فایل فرمان نمی‌تواند شامل یک فایل فرمان دیگر باشد\&. این رویکرد ساده اما مؤثر اجازه می‌دهد تا ترکیب‌های رایج گزینه‌ها/پارامترها را خلاصه کرده و از خط فرمان‌های طولانی و گیج‌کننده جلوگیری شود (یک مثال در فایل \fI/dumppat\&.txt\fP ارائه شده است)\&. .SH "محیط (ENVIRONMENT)" .PP ابزار \fBdcmodify\fP تلاش خواهد کرد تا دیکشنری‌های داده DICOM مشخص‌شده در متغیر محیطی \fIDCMDICTPATH\fP را بارگذاری کند\&. به طور پیش‌فرض، یعنی اگر متغیر محیطی \fIDCMDICTPATH\fP تنظیم نشده باشد، فایل \fI/dicom\&.dic\fP بارگذاری خواهد شد مگر اینکه دیکشنری درون خود برنامه تعبیه شده باشد (پیش‌فرض برای ویندوز)\&. .PP رفتار پیش‌فرض باید ترجیح داده شود و متغیر محیطی \fIDCMDICTPATH\fP تنها زمانی استفاده شود که دیکشنری‌های داده جایگزین مورد نیاز باشند\&. متغیر محیطی \fIDCMDICTPATH\fP همان فرمت متغیر \fIPATH\fP پوسته یونیکس را دارد که در آن دو نقطه (":") ورودی‌ها را جدا می‌کند\&. در سیستم‌های ویندوز، نقطه ویرگول (";") به عنوان جداکننده استفاده می‌شود\&. کد دیکشنری داده تلاش خواهد کرد تا هر فایل مشخص‌شده در متغیر محیطی \fIDCMDICTPATH\fP را بارگذاری کند\&. در صورتی که هیچ دیکشنری داده‌ای بارگذاری نشود، خطا خواهد بود\&. .SH "حق نشر (COPYRIGHT)" .PP Copyright (C) 2003-2025 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.