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

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

//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

2 ответа

Решение

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

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

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

Я использую следующее для редактирования или создания несуществующих тегов в 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] INFO - Значение тега: 0x00100010 для значения: Test

Другие вопросы по тегам