2015-08-04 4 views
3

Я пытаюсь читать DICOM тег из текстового файла в (####,####) и создать соответствующий DicomTag из прозрачного полотна библиотекиПолучить ClearCanvas DicomTag из группы и элементов чисел DICOM

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

+0

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

ответ

2

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

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

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

1

Я использую следующие либо редактировать или создавать несуществующие тегов в Чистом 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: 24944 [6704] [7] INFO - Установка тегов: 0x00100010 значению: Тест