有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在我自己的API中实现Dicom属性字典

您好

我目前正在尝试学习一些Java编程。为了做到这一点,我正试图做一些真正有用的东西。因为我在学习医学成像,我想我会用Java编写自己的Dicom Api

Dicom标准的一部分是包含Dicom文件中使用的属性的数据字典。这些属性必须具有以下属性

元素说明

例如:
(0x0002,0x0000)长度
(0x0002,0x0002)MediaStoredSOPClassUID
(0x0002,0x0010)TransferSyntaxUID
(0x0003,0x0003)长度

我想知道应该如何在API中实现这些。我想到的选择是:

  • Enum,问题是唯一属性可能具有相同的描述

enum Attributes{ Length(0x0002,0x0000), Length(0x0003,0x0000, }

  • 一个静态类,只有一些包含属性的常量。还有激进分子的名字问题
  • 包含此数据的xml文件

我真的很想使用xml来实现这一点,因为数据的表格化和易于访问。但是有没有什么方法可以把它包含在我的Api中呢

~Timo Willemsen


共 (4) 个答案

  1. # 1 楼答案

    以下是PS 3.6-2008作为GDCM中使用的XML:

    http://gdcm.svn.sf.net/viewvc/gdcm/trunk/Source/DataDictionary/Part6.xml?view=markup

    如上所述,我还将添加VM和Retired标志:

     public class DicomEntry {  private: 
         private ushort group;
         private ushort element;
         private string vr;
         private string vm;
         private boolean retired;
         private string name;
         public string  key() { return String.format("(%s,%s)",group,element);
     } }
    
  2. # 3 楼答案

    为了便于访问,应该将XML文件放在类路径中,这样您就可以通过^{}获取其位置,或者通过^{}获取其内容

    要使用标准API读取/评估/写入XML文件,我可以推荐StAX。如果XML文件相对较大(超过数十兆字节),那么我可以推荐更多

    或者,如果文件不是很大,它是纯键值对,那么你也可以考虑properties files,你可以很容易地用^{} API管理,基本上扩展^ {< CD4>}。

  3. # 4 楼答案

    地图最适合您,请定义一个包含dicom条目的类:

    public class DicomEntry
    {
    private: 
        private string group;
        private string element;
        private string vr;
        private string name;
    
        public string  key() { return String.format("(%s,%s)",group,element); } 
    }
    

    还要创建一个包含所有条目的映射

    Map<string,DicomEntry> mp=new HashMap<string, DicomEntry>();
    

    将字典文件中的每一行读入条目类对象de后,将其添加到映射中

     mp.put(de.key(), de)
    

    由于组和元素的组合是唯一的,因此不会发生任何冲突