Тег DICOM RetrieveURL пуст в выводе JSON - PullRequest
0 голосов
/ 18 ноября 2018

Я использую 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); 
....

когда я делаю json за ds Я не вижу значения для 00081190, как 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"
   }
  }]

1 Ответ

0 голосов
/ 19 ноября 2018

Я наконец-то нашел решение после прочтения многих статей, и я решил опубликовать решение здесь для тех, кто не знает этого, таких как я.

Так что в протоколе DICOM есть некоторые частные теги, которые vr (ЗначениеПредставление) для них UN по умолчанию после синтаксического анализа до json или xml, поэтому они не будут отображаться на выходе.

Поэтому мы должны сделать приватный тег общедоступным и установить 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 и SetStringValue.

...