JSON 输出中的 DICOM RetrieveURL 标记为空
DICOM RetrieveURL tag is empty in JSON output
我正在使用 DicomDataSet
添加标签及其值,如下所示:
....
var ds = new DicomDataSet();
ds.Initialize(DicomClassType.StudyRootQueryStudy, DicomDataSetInitializeFlags.None);
ds.InsertElementAndSetValue(DicomTag.QueryRetrieveLevel, "STUDY");
ds.InsertElementAndSetValue(DicomTag.SpecificCharacterSet, "ISO_IR192");
ds.InsertElementAndSetValue(DicomTag.RetrieveURL, "http://localhost/Service/api/wado-rs/studies/" + row.StudyInstanceUID);
....
当我按 ds
制作 json
时,我看不到 00081190
的价值,例如 this link.
中的 json
制作json
文件截图代码:
string jsonFileNameOut = Path.Combine(@"C:\Study", $"{DateTime.Now.Ticks}.json");
// Save as JSON with no binary data
// For the demo, keep the json output file size small by skipping the pixel data
const DicomDataSetSaveJsonFlags jsonFlags = DicomDataSetSaveJsonFlags.IgnoreBinaryData |
DicomDataSetSaveJsonFlags.TrimWhiteSpace;
ds.SaveJson(jsonFileNameOut, jsonFlags);
为什么 vr
RetrieveUrl(81190
) 标签的值表示是 UN
(未知),输出如下所示:
[{
"00080005" : {
"vr" : "CS",
"Value" : [
"ISO_IR 192"
]
},
"00080052" : {
"vr" : "CS",
"Value" : [
"STUDY"
]
},
"00081190" : {
"vr" : "UN"
}
}]
我看了很多文章终于找到了解决方案我决定post这里的解决方案是为了那些像我这样不知道的人。
所以在 DICOM 协议中有一些私有标签 vr
(值表示)在解析为 json
或 xml
后默认为 UN
所以他们不会出现在输出中。
所以我们应该为 public 创建私人标签并为他们手动设置 vr
就像我下面做的那样:
DicomElement dm = ds.InsertElement(null, false, DicomTag.RetrieveURL, DicomVRType.UT, false, 1);
if (dm != null)
{
ds.FreeElementValue(dm);
ds.SetStringValue(dm, url, DicomCharacterSetType.UnicodeInUtf8);
}
InsertElement
and SetStringValue
解决的问题。
我正在使用 DicomDataSet
添加标签及其值,如下所示:
....
var ds = new DicomDataSet();
ds.Initialize(DicomClassType.StudyRootQueryStudy, DicomDataSetInitializeFlags.None);
ds.InsertElementAndSetValue(DicomTag.QueryRetrieveLevel, "STUDY");
ds.InsertElementAndSetValue(DicomTag.SpecificCharacterSet, "ISO_IR192");
ds.InsertElementAndSetValue(DicomTag.RetrieveURL, "http://localhost/Service/api/wado-rs/studies/" + row.StudyInstanceUID);
....
当我按 ds
制作 json
时,我看不到 00081190
的价值,例如 this link.
json
制作json
文件截图代码:
string jsonFileNameOut = Path.Combine(@"C:\Study", $"{DateTime.Now.Ticks}.json");
// Save as JSON with no binary data
// For the demo, keep the json output file size small by skipping the pixel data
const DicomDataSetSaveJsonFlags jsonFlags = DicomDataSetSaveJsonFlags.IgnoreBinaryData |
DicomDataSetSaveJsonFlags.TrimWhiteSpace;
ds.SaveJson(jsonFileNameOut, jsonFlags);
为什么 vr
RetrieveUrl(81190
) 标签的值表示是 UN
(未知),输出如下所示:
[{
"00080005" : {
"vr" : "CS",
"Value" : [
"ISO_IR 192"
]
},
"00080052" : {
"vr" : "CS",
"Value" : [
"STUDY"
]
},
"00081190" : {
"vr" : "UN"
}
}]
我看了很多文章终于找到了解决方案我决定post这里的解决方案是为了那些像我这样不知道的人。
所以在 DICOM 协议中有一些私有标签 vr
(值表示)在解析为 json
或 xml
后默认为 UN
所以他们不会出现在输出中。
所以我们应该为 public 创建私人标签并为他们手动设置 vr
就像我下面做的那样:
DicomElement dm = ds.InsertElement(null, false, DicomTag.RetrieveURL, DicomVRType.UT, false, 1);
if (dm != null)
{
ds.FreeElementValue(dm);
ds.SetStringValue(dm, url, DicomCharacterSetType.UnicodeInUtf8);
}
InsertElement
and SetStringValue
解决的问题。