| json2dcm(1) | OFFIS DCMTK | json2dcm(1) |
نام (NAME)
json2dcm - تبدیل سند JSON به فایل یا مجموعهداده DICOM
خلاصه دستور (SYNOPSIS)
json2dcm [options] jsonfile-in dcmfile-out
توضیحات (DESCRIPTION)
ابزار json2dcm محتوای یک سند JSON (JavaScript Object Notation) را به یک فایل یا مجموعهداده باینری DICOM تبدیل میکند. انتظار میرود سند JSON مطابق با «مدل DICOM JSON» همانگونه که در DICOM Part 18 Section F تعریف شده است باشد. چنین فایلهای JSON را میتوان برای نمونه با استفاده از ابزار dcm2json ایجاد کرد.
پارامترها (PARAMETERS)
jsonfile-in نام فایل ورودی JSON برای تبدیل ("-" برای stdin)
dcmfile-out نام فایل خروجی DICOM ("-" برای stdout)
گزینهها (OPTIONS)
گزینههای عمومی (general options)
-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 برای ثبتکننده وقایع
گزینههای ورودی (input options)
قالب فایل ورودی:
+f --read-meta-info
خواندن اطلاعات متا در صورت وجود (پیشفرض)
-f --ignore-meta-info
نادیده گرفتن اطلاعات متای فایل
گزینههای پردازش (processing options)
شناسههای یکتا:
+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
ذخیره همه مجموعهدادهها در دنباله خصوصی
گزینههای خروجی (output options)
قالب فایل خروجی:
+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=بهترین فشردهسازی
ساختار پایهای ورودی JSON مورد انتظار به شکل زیر است (برای جزئیات به DICOM Part 18 Section F مراجعه کنید):
{
"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
]
}
}
قالب JSON تنها
از کدگذاری
UTF-8 پشتیبانی
میکند.
بنابراین
فایل DICOM
تولیدشده
نیز شامل
کدگذاری UTF-8
خواهد بود.
اگر فایل JSON
فاقد یک
مجموعه
نویسه خاص
باشد، یا
مجموعهنویسهای
غیر از "ISO_IR 192"
داشته
باشد، یک
هشدار صادر
خواهد شد.
دادههای باینری، دادههای حجیم و دادههای پیکسلی (Binary Data, Bulk Data, and Pixel Data)
مدل DICOM JSON از "InlineBinary" برای ذخیره مقادیر مشخصه بازنماییهای مقدار باینری مانند "OB" ،"OW" ،"OD" ،"OF" ،"OL" ،"OV" و غیره در قالب کدگذاریشده Base64 استفاده میکند. این قابلیت در json2dcm برای تمام مشخصههای باینری، از جمله دادههای پیکسلی کپسولهنشده، پشتیبانی میشود.
مدل DICOM JSON همچنین امکان ذخیره مقادیر مشخصهها را بهصورت جداگانه از مجموعهداده JSON و ارجاع به آنها از طریق یک BulkDataURI فراهم میکند. این قابلیت برای URIهای فایلی که به فایلهای موجود در فایلسیستم محلی ارجاع میدهند، پشتیبانی میشود. ابزار json2dcm همچنین از پسوند غیررسمی طرحواره file URI که توسط DCM4CHE ایجاد شده پشتیبانی میکند؛ به طوری که پارامترهایی با نام "offset" و "length" به انتهای URI فایل اضافه میشوند تا به بخش خاصی از یک فایل ارجاع دهند. شناسههای HTTP URI و همچنین URIهایی که بخش دیگری را در یک ساختار MIME multipart/related مشخص میکنند، هنوز در json2dcm پشتیبانی نمیشوند. اگر گزینه خط فرمان --ignore-bulkdata-uri مشخص شود، تمام URIهای دادههای حجیم نادیده گرفته شده و مشخصههای حاوی دادههای حجیم با مقدار خالی نوشته خواهند شد.
در نهایت، دادههای پیکسلی کپسولهشده (بهویژه فشردهشده) توسط json2dcm پشتیبانی نمیشوند، زیرا نحو مدل DICOM JSON برای این مورد خاص هنوز در استاندارد DICOM تعریف نشده است.
آرایههای مجموعهداده (Arrays of Data Sets)
مدل DICOM JSON از ساختار آرایه JSON برای بازگرداندن چندین مجموعهداده در سرویسهای DICOMweb مانند WADO-RS یا QIDO-RS استفاده میکند. آرایههای JSON حاوی یک مجموعهداده DICOM منفرد بهطور خودکار توسط json2dcm شناسایی شده و همانند یک مجموعهداده بدون ساختار آرایه پیرامونی مدیریت میشوند. آرایههای JSON شامل چندین مجموعهداده بهطور پیشفرض رد میشوند. در عوض، میتوان از گزینه --array-select برای انتخاب یک مجموعهداده از آرایه جهت تبدیل استفاده کرد. گزینه --array-sequence باعث میشود تمام مجموعهدادهها بهعنوان آیتمهای توالی در یک توالی خصوصی با برچسب مشخصه (0009,1000) نوشته شوند. چنین فایلهایی که عمدتاً برای مقاصد اشکالزدایی در نظر گرفته شدهاند، از طریق عنصر سازنده خصوصی (0009,0010) که مقدار "JSON2DCM_LIST_OF_DATASETS" را دارد، قابل شناسایی هستند.
ویرگولهای انتهایی (Trailing Commas)
ویرگولهای انتهایی در JSON مجاز نیستند، اما json2dcm همچنان چنین مجموعهدادههای JSON را بدون هشدار یا پیام خطا میپذیرد، زیرا توسط تجزیهکننده JSON زیرین به شکلی مناسب مدیریت میشوند. بنابراین کاربران نباید صرفاً به این دلیل که json2dcm یک مجموعهداده JSON را میپذیرد، آن را معتبر فرض کنند. این ابزار بهعنوان یک اعتبارسنج برای JSON یا مدل DICOM JSON طراحی نشده است.
ثبت وقایع (LOGGING)
سطح خروجی ثبت وقایع ابزارهای مختلف خط فرمان و کتابخانههای زیرین میتواند توسط کاربر تعیین شود. بهطور پیشفرض، تنها خطاها و هشدارها در جریان خطای استاندارد نوشته میشوند. با استفاده از گزینه --verbose پیامهای اطلاعاتی مانند جزئیات پردازش نیز گزارش میشوند. گزینه --debug میتواند برای دریافت جزئیات بیشتر درباره فعالیتهای داخلی، برای مثال جهت مقاصد اشکالزدایی استفاده شود. سایر سطوح ثبت وقایع را میتوان با استفاده از گزینه --log-level انتخاب کرد. در حالت --quiet تنها خطاهای مهلک گزارش میشوند. در چنین شرایط خطای بسیار شدیدی، برنامه معمولاً خاتمه مییابد. برای جزئیات بیشتر درباره سطوح مختلف ثبت وقایع، به مستندات ماژول "oflog" مراجعه کنید.
در صورتی که خروجی ثبت وقایع باید در فایل نوشته شود (اختیاراً همراه با چرخش فایل وقایع)، یا به syslog (یونیکس) یا event log (ویندوز) فرستاده شود، گزینه --log-config میتواند استفاده شود. این فایل پیکربندی همچنین امکان هدایت تنها پیامهای خاص به یک جریان خروجی مشخص و فیلتر کردن برخی پیامها بر اساس ماژول یا برنامهای که تولید شدهاند را فراهم میکند. یک فایل پیکربندی نمونه در <etcdir>/logger.cfg ارائه شده است.
خط فرمان (COMMAND LINE)
تمام ابزارهای خط فرمان از نمادگذاری زیر برای پارامترها استفاده میکنند: کروشهها مقادیر اختیاری (۰-۱) را احاطه میکنند، سه نقطه انتهایی نشان میدهد که چند مقدار مجاز است (۱-n)، و ترکیبی از هر دو به معنی ۰ تا n مقدار است.
گزینههای خط فرمان به ترتیب با یک علامت پیشوند '+' یا '-' از پارامترها متمایز میشوند. معمولاً ترتیب و موقعیت گزینههای خط فرمان اختیاری است (یعنی میتوانند در هر جایی ظاهر شوند). با این حال، اگر گزینهها مانعةالجمع باشند، راستترین مورد به کار گرفته میشود. این رفتار با قواعد ارزیابی استاندارد در شلهای متداول یونیکس مطابقت دارد.
علاوه بر این، یک یا چند فایل دستور را میتوان با استفاده از علامت '@' به عنوان پیشوند نام فایل مشخص کرد (مانند @command.txt). چنین آرگومان دستوری پیش از هر ارزیابی بیشتر، با محتوای فایل متنی مربوطه جایگزین میشود (فاصلههای خالی متعدد به عنوان یک جداکننده منفرد در نظر گرفته میشوند مگر اینکه میان دو علامت نقل قول قرار گیرند). لطفاً توجه داشته باشید که یک فایل دستور نمیتواند شامل فایل دستور دیگری باشد. این رویکرد ساده اما مؤثر امکان خلاصه کردن ترکیبهای متداول گزینهها/پارامترها را فراهم کرده و از خط فرمانهای طولانی و گیجکننده جلوگیری میکند (یک مثال در فایل <datadir>/dumppat.txt ارائه شده است).
کدهای خروج (EXIT CODES)
ابزار dcm2json هنگام خاتمه از کدهای خروج زیر استفاده میکند. این امر کاربر را قادر میسازد دلیل خاتمه برنامه را بررسی کند.
عمومی (general)
EXITCODE_NO_ERROR 0 EXITCODE_COMMANDLINE_SYNTAX_ERROR 1
خطاهای فایل ورودی (input file errors)
EXITCODE_CANNOT_READ_INPUT_FILE 20
خطاهای فایل خروجی (output file errors)
EXITCODE_CANNOT_WRITE_OUTPUT_FILE 40
خطاهای پردازش (processing errors)
EXITCODE_INVALID_JSON_CONTENT 65 EXITCODE_BULKDATA_URI_NOT_SUPPORTED 66
محیط (ENVIRONMENT)
ابزار json2dcm تلاش خواهد کرد فرهنگهای داده DICOM مشخصشده در متغیر محیطی DCMDICTPATH را بارگذاری کند. بهطور پیشفرض، یعنی اگر متغیر محیطی DCMDICTPATH تنظیم نشده باشد، فایل <datadir>/dicom.dic بارگذاری خواهد شد مگر اینکه فرهنگ داده درون برنامه تعبیه شده باشد (پیشفرض برای Windows).
رفتار پیشفرض ارجحیت دارد و از متغیر محیطی DCMDICTPATH تنها زمانی باید استفاده شود که فرهنگهای داده جایگزین مورد نیاز باشند. متغیر محیطی DCMDICTPATH قالبی مشابه متغیر PATH در شل یونیکس دارد به این صورت که علامت دونقطه (":") ورودیها را جدا میکند. در سیستمهای Windows، از یک نقطهویرگول (";") به عنوان جداکننده استفاده میشود. کد فرهنگ داده تلاش خواهد کرد تا هر فایل مشخصشده در متغیر محیطی DCMDICTPATH را بارگذاری کند. بارگذاری نشدن فرهنگ داده یک خطا محسوب میشود.
همچنین ببینید (SEE ALSO)
کپیرایت و تکثیر (COPYRIGHT)
Copyright (C) 2024-2025 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
| Thu Jul 9 2026 18:43:40 | Version 3.7.0 |