从dicom组和元素编号中获取ClearCanvas DicomTag

时间:2015-08-04 22:58:05

标签: c# dicom clearcanvas

我尝试从文本文件中读取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

2 个答案:

答案 0 :(得分:2)

我认为文本文件的组和元素是十六进制的,而ushort的解析是十进制的。 0008,1070作为十进制是0x0008,0x042E是十六进制,这不是一个有效的dicom标签(至少根据dicomlookup.com)

如果使用十六进制数字样式指定ushort.Parse,则应正确解析文本文件中的值。

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

答案 1 :(得分:1)

我使用以下内容在Clear Canvas中编辑或创建不存在的标签:

Main

AC_To_Coerce是DicomAttributeCollection对象。 Stats.g_TaglistTag1是DICOM标记的十六进制字符串,Stats.g_tbTagList1是标记的值。这也可用于为DicomFile对象或DicomMessage对象设置标签值,只需进行简单修改。

设置或创建并设置值并记录以下行,例如:

2015-09-18 21:02:24,944 [6704] [7]信息 - 设置标签:0x00100010至值:测试