Java 如何在自己的API中实现Dicom属性字典
您好 我目前正在尝试学习一些Java编程。为了做到这一点,我正试图做一些真正有用的东西。因为我在学习医学成像,我想我会用Java编写自己的Dicom Api Dicom标准的一部分是包含Dicom文件中使用的属性的数据字典。这些属性必须具有以下属性 (组、元素)说明 例如:Java 如何在自己的API中实现Dicom属性字典,java,attributes,dicom,Java,Attributes,Dicom,您好 我目前正在尝试学习一些Java编程。为了做到这一点,我正试图做一些真正有用的东西。因为我在学习医学成像,我想我会用Java编写自己的Dicom Api Dicom标准的一部分是包含Dicom文件中使用的属性的数据字典。这些属性必须具有以下属性 (组、元素)说明 例如: (0x0002,0x0000)长度 (0x0002,0x0002)MediaStoredSOPClassUID (0x0002,0x0010)TransferSyntaxUID (0x0003,0x0003)长度 我想知道应
(0x0002,0x0000)长度
(0x0002,0x0002)MediaStoredSOPClassUID
(0x0002,0x0010)TransferSyntaxUID
(0x0003,0x0003)长度
我想知道应该如何在API中实现这些。我想到的选择是:
- Enum,问题是唯一属性可能具有相同的描述李>
枚举属性{
长度(0x0002,0x0000),
长度(0x0003,0x0000,
}
- 只有一些常量包含属性的静态类。还有名称问题
- 包含此数据的xml文件
~Timo Willemsen映射最适合您,定义一个类来保存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>();
由于组和元素的组合是唯一的,因此您可能会遇到任何冲突贴图最适合您,请定义一个包含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>();
由于组和元素的组合是唯一的,因此您可能会遇到任何冲突为了便于访问,XML文件应该放在类路径中,以便您可以通过或通过获取其位置 要使用标准API读取/评估/写入XML文件,我可以推荐。如果XML文件相对较大(超过数十兆字节),那么我可以推荐更多
可选的是,如果文件不是很大,它是纯密钥值对,那么你也可以考虑,基本上扩展了<>代码> map .< /p> ,以便于访问,XML文件应该放置在类路径中,这样你就可以通过它的内容或它的内容得到它的位置。 要使用标准API读取/评估/写入XML文件,我可以推荐。如果XML文件相对较大(超过数十兆字节),那么我可以推荐更多
另一方面,如果文件不是很大,它是纯密钥值对,那么你也可以考虑用API来管理,它基本上扩展了<代码> MAP>代码> .< /P>
你可能还想研究其他的源代码,特别是包含一个基于XML和XSLT的验证器。研究其他来源的ant,特别是包含一个基于XML和XSLT的验证器。有几个可用于。
以下是PS 3.6-2008,作为GDCM中使用的XML: 如上所述,我还将添加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);
} }
以下是PS 3.6-2008作为GDCM中使用的XML: 如上所述,我还将添加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);
} }
好的。首先很抱歉。我认为我最初的问题有点模糊,所以我对它进行了编辑。很抱歉弄错了。这也是我想到的。唯一困扰我的是你回答的这一部分“在将字典文件中的每一行读入entry类对象后”我知道如何进行文件io。但要设计它,我仍然需要包含一个静态文件(xml、csv、txt)我的API中的文件。我看不到解决方法,将字典硬编码到java源代码中是不好的形式,如果属性被添加或从集合中抽象出来,将迫使您重新编译。包含这样一个文件有什么不好的呢?顺便说一句,我更喜欢使用csv文件,因为它对人类更具可读性。老实说,我没有理由不这样做好主意。谢谢。我会努力解决的。好的。首先,对不起。我认为我最初的问题有点模糊,所以我编辑了它。很抱歉弄错了。这也是我想到的。唯一让我困扰的是你答案的这一部分“在将字典文件中的每一行读入entry类对象后”我知道如何进行文件io。但要设计它,我仍然需要包含一个静态文件(xml、csv、txt)我的API中的文件。我看不到解决方法,将字典硬编码到java源代码中是不好的形式,如果属性被添加或从集合中抽象出来,将迫使您重新编译。包含这样一个文件有什么不好的呢?顺便说一句,我更喜欢使用csv文件,因为它对人类更具可读性。老实说,我没有理由不这样做好主意。谢谢。我会努力解决的。非常感谢!我不知道属性文件的正确性。结合Alon的答案,我想我可以正确地解决这个问题。非常感谢!我不知道属性文件的正确性。结合Alon的答案,我想我可以正确地解决这个问题。谢谢你提供的信息。Pixelmed是我的一个例子^^。我不知道ImageJ插件。感谢您提供的信息。Pixelmed是我的一个例子^^。我不知道ImageJ插件。