从 dicom 组和元素编号中获取 ClearCanvas DicomTag
Get ClearCanvas DicomTag from the dicom group and element numbers
我正在尝试从文本文件中读取 dicom 标签 (####,####)
并从清晰的 canvas 库中创建相应的 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
可以在此处找到明确的 canvas 等价物:https://github.com/ClearCanvas/ClearCanvas/blob/master/Dicom/DicomTags.cs
我认为文本文件具有十六进制的组和元素,而 ushort 将它们解析为十进制。
十进制的 0008、1070 是十六进制的 0x0008、0x042E,这不是有效的 dicom 标签(至少根据 dicomlookup.com)
如果您使用 HexNumber 数字样式指定 ushort.Parse,则应正确解析文本文件中的值。
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] 信息 - 将标记:0x00100010 设置为值:测试
我正在尝试从文本文件中读取 dicom 标签 (####,####)
并从清晰的 canvas 库中创建相应的 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
可以在此处找到明确的 canvas 等价物:https://github.com/ClearCanvas/ClearCanvas/blob/master/Dicom/DicomTags.cs
我认为文本文件具有十六进制的组和元素,而 ushort 将它们解析为十进制。 十进制的 0008、1070 是十六进制的 0x0008、0x042E,这不是有效的 dicom 标签(至少根据 dicomlookup.com)
如果您使用 HexNumber 数字样式指定 ushort.Parse,则应正确解析文本文件中的值。
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] 信息 - 将标记:0x00100010 设置为值:测试