.TH "json2dcm" 1 "Thu Jul 9 2026 18:43:40" "Version 3.7.0" "OFFIS DCMTK" \" -*- nroff -*- .nh .SH "نام (NAME)" json2dcm \- تبدیل سند JSON به فایل یا مجموعه‌داده DICOM .PP .SH "خلاصه دستور (SYNOPSIS)" .PP .PP .nf json2dcm [options] jsonfile-in dcmfile-out .fi .PP .SH "توضیحات (DESCRIPTION)" .PP ابزار \fBjson2dcm\fP محتوای یک سند JSON (JavaScript Object Notation) را به یک فایل یا مجموعه‌داده باینری DICOM تبدیل می‌کند\&. انتظار می‌رود سند JSON مطابق با «مدل DICOM JSON» همان‌گونه که در DICOM Part 18 Section F تعریف شده است باشد\&. چنین فایل‌های JSON را می‌توان برای نمونه با استفاده از ابزار \fBdcm2json\fP ایجاد کرد\&. .SH "پارامترها (PARAMETERS)" .PP .PP .nf jsonfile-in نام فایل ورودی JSON برای تبدیل ("-" برای stdin) dcmfile-out نام فایل خروجی DICOM ("-" برای 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-meta-info خواندن اطلاعات متا در صورت وجود (پیش‌فرض) -f --ignore-meta-info نادیده گرفتن اطلاعات متای فایل .fi .PP .SS "گزینه‌های پردازش (processing options)" .PP .nf شناسه‌های یکتا: +Ug --generate-new-uids تولید Study/Series/SOP Instance UID جدید -Uo --dont-overwrite-uids عدم بازنویسی UIDهای موجود (پیش‌فرض) +Uo --overwrite-uids بازنویسی UIDهای موجود مدیریت Bulkdata URI: +Bu --parse-bulkdata-uri تجزیه Bulkdata URIها (پیش‌فرض) -Bu --ignore-bulkdata-uri نادیده گرفتن Bulkdata URIها +Bd --add-bulkdata-dir [d]irectory: string افزودن d به فهرست منابع bulk data مجاز مدیریت آرایه‌های حاوی چندین مجموعه‌داده: -ar --array-reject رد کردن چندین مجموعه‌داده (پیش‌فرض) +as --array-select [n]umber: integer انتخاب مجموعه‌داده n از آرایه +ar --array-sequence ذخیره همه مجموعه‌داده‌ها در دنباله خصوصی .fi .PP .SS "گزینه‌های خروجی (output options)" .PP .nf قالب فایل خروجی: +F --write-file نوشتن در قالب فایل (پیش‌فرض) -F --write-dataset نوشتن مجموعه‌داده بدون اطلاعات متای فایل +Fu --update-meta-info به‌روزرسانی اطلاعات متای مشخص فایل سینتکس انتقال خروجی: +t= --write-xfer-same نوشتن با همان TS ورودی (پیش‌فرض) +te --write-xfer-little نوشتن با TS از نوع explicit VR little endian +tb --write-xfer-big نوشتن با TS از نوع explicit VR big endian +ti --write-xfer-implicit نوشتن با TS از نوع implicit VR little endian +td --write-xfer-deflated نوشتن با TS از نوع deflated explicit VR little endian مدیریت خطا: -E --stop-on-error عدم نوشتن در صورت نامعتبر بودن سند (پیش‌فرض) +E --ignore-errors تلاش برای نوشتن حتی در صورت نامعتبر بودن سند نمایش‌های مقدار (VR) پس از ۱۹۹۳: +u --enable-new-vr فعال‌سازی پشتیبانی از VRهای جدید (UN/UT) (پیش‌فرض) -u --disable-new-vr غیرفعال‌سازی پشتیبانی از VRهای جدید، تبدیل به OB کدگذاری طول در دنباله‌ها و آیتم‌ها: +e --length-explicit نوشتن با طول‌های صریح (پیش‌فرض) -e --length-undefined نوشتن با طول‌های تعریف‌نشده مدیریت مجموعه نویسه‌ها: +c --charset-accept نوشتن با مجموعه نویسه‌های مشخص‌شده در JSON (پیش‌فرض) -c --charset-replace جایگزینی مجموعه نویسه‌های مشخص‌شده در JSON با UTF-8 سطح فشرده‌سازی deflate (فقط با --write-xfer-deflated): +cl --compression-level [l]evel: integer (default: 6) 0=بدون فشرده‌سازی، 1=سریع‌ترین، 9=بهترین فشرده‌سازی .fi .PP.SH "نکات (NOTES)" .PP ساختار پایه‌ای ورودی JSON مورد انتظار به شکل زیر است (برای جزئیات به DICOM Part 18 Section F مراجعه کنید): .PP .PP .nf { "00080005": { "vr": "CS", "Value": [ "ISO_IR 192" ] }, "00080020": { "vr": "DT", "Value": [ "20130409" ] }, "00080030": { "vr": "TM", "Value": [ "131600\&.0000" ] }, "00080050": { "vr": "SH", "Value": [ "11235813" ] }, "00080056": { "vr": "CS", "Value": [ "ONLINE" ] }, "00080061": { "vr": "CS", "Value": [ "CT", "PET" ] }, "00080090": { "vr": "PN", "Value": [ { "Alphabetic": "^Bob^^Dr\&." } ] }, "00081190": { "vr": "UR", "Value": [ "http://wado\&.nema\&.org/studies/ 1\&.2\&.392\&.200036\&.9116\&.2\&.2\&.2\&.1762893313\&.1029997326\&.945873" ] }, "00090010": { "vr": "LO", "Value": [ "Vendor A" ] }, "00091002": { "vr": "UN", "InlineBinary": "z0x9c8v7" }, "00100010": { "vr": "PN", "Value": [ { "Alphabetic": "Wang^XiaoDong" } ] }, "00100020": { "vr": "LO", "Value": [ "12345" ] }, "00100021": { "vr": "LO", "Value": [ "Hospital A" ] }, "00100030": { "vr": "DA", "Value": [ "19670701" ] }, "00100040": { "vr": "CS", "Value": [ "M" ] }, "00101002": { "vr": "SQ", "Value": [ { "00100020": { "vr": "LO", "Value": [ "54321" ] }, "00100021": { "vr": "LO", "Value": [ "Hospital B" ] } }, { "00100020": { "vr": "LO", "Value": [ "24680" ] }, "00100021": { "vr": "LO", "Value": [ "Hospital C" ] } } ] }, "0020000D": { "vr": "UI", "Value": [ "1\&.2\&.392\&.200036\&.9116\&.2\&.2\&.2\&.1762893313\&.1029997326\&.945873" ] }, "00200010": { "vr": "SH", "Value": [ "11235813" ] }, "00201206": { "vr": "IS", "Value": [ 4 ] }, "00201208": { "vr": "IS", "Value": [ 942 ] } } .fi .PP.SS "کدگذاری نویسه‌ها (Character Encoding)" قالب JSON تنها از کدگذاری UTF-8 پشتیبانی می‌کند\&. بنابراین فایل DICOM تولیدشده نیز شامل کدگذاری UTF-8 خواهد بود\&. اگر فایل JSON فاقد یک مجموعه نویسه خاص باشد، یا مجموعه‌نویسه‌ای غیر از "ISO_IR 192" داشته باشد، یک هشدار صادر خواهد شد\&. .SS "داده‌های باینری، داده‌های حجیم و داده‌های پیکسلی (Binary Data, Bulk Data, and Pixel Data)" مدل DICOM JSON از "InlineBinary" برای ذخیره مقادیر مشخصه بازنمایی‌های مقدار باینری مانند "OB" ،"OW" ،"OD" ،"OF" ،"OL" ،"OV" و غیره در قالب کدگذاری‌شده Base64 استفاده می‌کند\&. این قابلیت در \fBjson2dcm\fP برای تمام مشخصه‌های باینری، از جمله داده‌های پیکسلی کپسوله‌نشده، پشتیبانی می‌شود\&. .PP مدل DICOM JSON همچنین امکان ذخیره مقادیر مشخصه‌ها را به‌صورت جداگانه از مجموعه‌داده JSON و ارجاع به آن‌ها از طریق یک BulkDataURI فراهم می‌کند\&. این قابلیت برای URIهای فایلی که به فایل‌های موجود در فایل‌سیستم محلی ارجاع می‌دهند، پشتیبانی می‌شود\&. ابزار \fBjson2dcm\fP همچنین از پسوند غیررسمی طرح‌واره file URI که توسط \fIDCM4CHE\fP ایجاد شده پشتیبانی می‌کند؛ به طوری که پارامترهایی با نام "offset" و "length" به انتهای URI فایل اضافه می‌شوند تا به بخش خاصی از یک فایل ارجاع دهند\&. شناسه‌های HTTP URI و همچنین URIهایی که بخش دیگری را در یک ساختار MIME multipart/related مشخص می‌کنند، هنوز در \fBjson2dcm\fP پشتیبانی نمی‌شوند\&. اگر گزینه خط فرمان \fI--ignore-bulkdata-uri\fP مشخص شود، تمام URIهای داده‌های حجیم نادیده گرفته شده و مشخصه‌های حاوی داده‌های حجیم با مقدار خالی نوشته خواهند شد\&. .PP در نهایت، داده‌های پیکسلی کپسوله‌شده (به‌ویژه فشرده‌شده) توسط \fBjson2dcm\fP پشتیبانی نمی‌شوند، زیرا نحو مدل DICOM JSON برای این مورد خاص هنوز در استاندارد DICOM تعریف نشده است\&. .SS "آرایه‌های مجموعه‌داده (Arrays of Data Sets)" مدل DICOM JSON از ساختار آرایه JSON برای بازگرداندن چندین مجموعه‌داده در سرویس‌های DICOMweb مانند WADO-RS یا QIDO-RS استفاده می‌کند\&. آرایه‌های JSON حاوی یک مجموعه‌داده DICOM منفرد به‌طور خودکار توسط \fBjson2dcm\fP شناسایی شده و همانند یک مجموعه‌داده بدون ساختار آرایه پیرامونی مدیریت می‌شوند\&. آرایه‌های JSON شامل چندین مجموعه‌داده به‌طور پیش‌فرض رد می‌شوند\&. در عوض، می‌توان از گزینه \fI--array-select\fP برای انتخاب یک مجموعه‌داده از آرایه جهت تبدیل استفاده کرد\&. گزینه \fI--array-sequence\fP باعث می‌شود تمام مجموعه‌داده‌ها به‌عنوان آیتم‌های توالی در یک توالی خصوصی با برچسب مشخصه (0009,1000) نوشته شوند\&. چنین فایل‌هایی که عمدتاً برای مقاصد اشکال‌زدایی در نظر گرفته شده‌اند، از طریق عنصر سازنده خصوصی (0009,0010) که مقدار "JSON2DCM_LIST_OF_DATASETS" را دارد، قابل شناسایی هستند\&. .SS "ویرگول‌های انتهایی (Trailing Commas)" ویرگول‌های انتهایی در JSON مجاز نیستند، اما \fBjson2dcm\fP همچنان چنین مجموعه‌داده‌های JSON را بدون هشدار یا پیام خطا می‌پذیرد، زیرا توسط تجزیه‌کننده JSON زیرین به شکلی مناسب مدیریت می‌شوند\&. بنابراین کاربران نباید صرفاً به این دلیل که \fBjson2dcm\fP یک مجموعه‌داده JSON را می‌پذیرد، آن را معتبر فرض کنند\&. این ابزار به‌عنوان یک اعتبارسنج برای JSON یا مدل DICOM JSON طراحی نشده است\&. .SH "ثبت وقایع (LOGGING)" .PP سطح خروجی ثبت وقایع ابزارهای مختلف خط فرمان و کتابخانه‌های زیرین می‌تواند توسط کاربر تعیین شود\&. به‌طور پیش‌فرض، تنها خطاها و هشدارها در جریان خطای استاندارد نوشته می‌شوند\&. با استفاده از گزینه \fI--verbose\fP پیام‌های اطلاعاتی مانند جزئیات پردازش نیز گزارش می‌شوند\&. گزینه \fI--debug\fP می‌تواند برای دریافت جزئیات بیشتر درباره فعالیت‌های داخلی، برای مثال جهت مقاصد اشکال‌زدایی استفاده شود\&. سایر سطوح ثبت وقایع را می‌توان با استفاده از گزینه \fI--log-level\fP انتخاب کرد\&. در حالت \fI--quiet\fP تنها خطاهای مهلک گزارش می‌شوند\&. در چنین شرایط خطای بسیار شدیدی، برنامه معمولاً خاتمه می‌یابد\&. برای جزئیات بیشتر درباره سطوح مختلف ثبت وقایع، به مستندات ماژول "oflog" مراجعه کنید\&. .PP در صورتی که خروجی ثبت وقایع باید در فایل نوشته شود (اختیاراً همراه با چرخش فایل وقایع)، یا به syslog (یونیکس) یا event log (ویندوز) فرستاده شود، گزینه \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 "کدهای خروج (EXIT CODES)" .PP ابزار \fBdcm2json\fP هنگام خاتمه از کدهای خروج زیر استفاده می‌کند\&. این امر کاربر را قادر می‌سازد دلیل خاتمه برنامه را بررسی کند\&. .SS "عمومی (general)" .PP .nf EXITCODE_NO_ERROR 0 EXITCODE_COMMANDLINE_SYNTAX_ERROR 1 .fi .PP .SS "خطاهای فایل ورودی (input file errors)" .PP .nf EXITCODE_CANNOT_READ_INPUT_FILE 20 .fi .PP .SS "خطاهای فایل خروجی (output file errors)" .PP .nf EXITCODE_CANNOT_WRITE_OUTPUT_FILE 40 .fi .PP .SS "خطاهای پردازش (processing errors)" .PP .nf EXITCODE_INVALID_JSON_CONTENT 65 EXITCODE_BULKDATA_URI_NOT_SUPPORTED 66 .fi .PP .SH "محیط (ENVIRONMENT)" .PP ابزار \fBjson2dcm\fP تلاش خواهد کرد فرهنگ‌های داده DICOM مشخص‌شده در متغیر محیطی \fIDCMDICTPATH\fP را بارگذاری کند\&. به‌طور پیش‌فرض، یعنی اگر متغیر محیطی \fIDCMDICTPATH\fP تنظیم نشده باشد، فایل \fI/dicom\&.dic\fP بارگذاری خواهد شد مگر اینکه فرهنگ داده درون برنامه تعبیه شده باشد (پیش‌فرض برای Windows)\&. .PP رفتار پیش‌فرض ارجحیت دارد و از متغیر محیطی \fIDCMDICTPATH\fP تنها زمانی باید استفاده شود که فرهنگ‌های داده جایگزین مورد نیاز باشند\&. متغیر محیطی \fIDCMDICTPATH\fP قالبی مشابه متغیر \fIPATH\fP در شل یونیکس دارد به این صورت که علامت دو‌نقطه (":") ورودی‌ها را جدا می‌کند\&. در سیستم‌های Windows، از یک نقطه‌ویرگول (";") به عنوان جداکننده استفاده می‌شود\&. کد فرهنگ داده تلاش خواهد کرد تا هر فایل مشخص‌شده در متغیر محیطی \fIDCMDICTPATH\fP را بارگذاری کند\&. بارگذاری نشدن فرهنگ داده یک خطا محسوب می‌شود\&. .SH "همچنین ببینید (SEE ALSO)" .PP \fBdcm2json\fP(1) \fBdump2dcm\fP(2) .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .PP Copyright (C) 2024-2025 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.