Получите ClearCanvas DicomTag из группы dicom и номеров элементов

Я пытаюсь прочитать теги dicom из текстового файла как (####,####) и создать соответствующий тег DicomTag из библиотеки прозрачного холста.

//parsing txt string to find the corresponding dicomtag
foreach (String elem in settings)
{
    String tag = elem.Replace("(", "").Replace(")", "");
    String[] arr = tag.Split(',');
    DicomTag dTag = DicomTagDictionary.GetDicomTag(ushort.Parse(arr[0]), ushort.Parse(arr[1]));

    if (dTag != null)
    {
        toRemove.Add(dTag);
    }
    else
    {
        MessageBox.Show("Tag: (" + arr[0] + "," + arr[1] + ") is not valid");
    }
}

Иногда, даже если тег существует, метод DicomTagDictionary.GetDicomTag(ushort group, ushort element) не может найти тег, например (0008,0008) работает, но тег (0008,1070) не работает.

теги можно найти здесь: http://medical.nema.org/Dicom/2011/11_06pu.pdf

эквивалент прозрачного холста можно найти здесь: https://github.com/ClearCanvas/ClearCanvas/blob/master/Dicom/DicomTags.cs


person TCulos    schedule 04.08.2015    source источник
comment
Я раньше не использовал ClearCanvas, но сначала подумал, что текст имеет группу и элемент в шестнадцатеричном формате, в то время как ushort анализирует их как десятичный. Может быть, попробовать ushort.Parse со стилем шестнадцатеричного числа? msdn.microsoft.com/en-us/library /kbaxyssf(v=vs.110).aspx   -  person rkh    schedule 05.08.2015


Ответы (2)


Я думаю, что текстовый файл имеет группу и элемент в шестнадцатеричном формате, в то время как ushort анализирует их как десятичный. 0008, 1070 в десятичном виде равно 0x0008, 0x042E в шестнадцатеричном формате, что не является допустимым тегом dicom (по крайней мере, согласно dicomlookup.com)

Если вы укажете ushort.Parse со стилем шестнадцатеричных чисел, это должно правильно проанализировать значение из текстового файла.

msdn.microsoft.com/en-us/library/kbaxyssf(v=vs.110).aspx

person rkh    schedule 05.08.2015

Я использую следующее, чтобы редактировать или создавать несуществующие теги в Clear Canvas:

Platform.Log(LogLevel.Info, "Setting Tag: " + "0x" + Stats.g_TaglistTag1 + " to value of: " + Stats.g_tbTagList1);
AC_To_Coerce[Convert.ToUInt32("0x" + Stats.g_TaglistTag1, 16)].SetStringValue(Stats.g_tbTagList1);

AC_To_Coerce — это объект DicomAttributeCollection. Stats.g_TaglistTag1 — это шестнадцатеричная строка для тега DICOM, Stats.g_tbTagList1 — это значение тега. Это также можно использовать для установки значения тега для объекта DicomFile или объекта DicomMessage с простой модификацией.

Это устанавливает или создает и устанавливает значение и регистрирует, например, следующую строку:

2015-09-18 21:02:24,944 [6704] [7] ИНФОРМАЦИЯ — установка тега: 0x00100010 на значение: тест

person Jake    schedule 19.09.2015