邪恶的DICOM列出了所有元素

时间:2016-09-29 14:59:54

标签: c# dicom

我想在C#中列出DICOM文件的所有标签。

我想要的内容如下面的链接所示

https://stackoverflow.com/a/7283042/1014189

我假设这是一个旧版本,因为当我将其粘贴到Visual Studio中时,它无法识别。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

假设您可以使用Evil Dicom

public class DicomManager
{
    public List<Tag> ReadAllTags(string dicomFile)
    {
        var dcm = DICOMObject.Read(dicomFile);
        return dcm.AllElements.Select(e => e.Tag).ToList();
    }
}
  

更新:   根据您的评论,我们假设您需要在UI上的组件中显示元素。我将举例说明如何在控制台应用程序中显示所有元素,但遍历算法在任何其他演示技术中都是相同的。

看看 Evil Dicom 中如何定义IDICOMElement接口:

  public interface IDICOMElement
  {
    Tag Tag { get; set; }

    Type DatType { get; }

    object DData { get; set; }

    ICollection DData_ { get; set; }
  }

这意味着元素具有使用它所需的所有信息。

迭代元素并显示标记名称 - 元素值。

var dcm = DICOMObject.Read(dicomFile);    
dcm.AllElements
       .ForEach(element => Console.WriteLine("{0} - {1}", element.Tag, element.DData));

正如您所看到的,如果你想要的只是显示值 - 它的字符串表示 - 前一个代码段应该足够了,但是在元素中你有更多关于对象内部和集合的真实类型的信息值 - 在多值元素的情况下。

但是你需要小心,因为DICOMObject中的一些VR可能非常大,所以请确保使用异步方法或工作线程进行处理,以保持UI响应并且不会获得值除非你特别需要。

希望这有帮助!