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

本文关键字:获取 ClearCanvas DicomTag 编号 元素 dicom | 更新日期: 2023-09-27 18:06:18

我正试图从文本文件中读取DicomTag作为(####,####),并从清晰的画布库中创建相应的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

可以在这里找到对应的clear canvas: https://github.com/ClearCanvas/ClearCanvas/blob/master/Dicom/DicomTags.cs

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

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

如果指定了ushort。使用HexNumber Number样式进行解析,这将正确解析文本文件中的值。

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对象。统计数据。g_TaglistTag1是DICOM标记Stats的十六进制字符串。g_tbTagList1是标签的值。这也可以用于为DicomFile对象或DicomMessage对象设置标记值,只需进行简单的修改。

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

2015-09-18 21:02:24,944 [6704] [7] INFO - Setting Tag: 0x00100010 to value of: Test