我需要浏览一组DICOM文件并修改某些标签,使其与外部系统数据库中维护的数据保持最新。我希望使用GDCM。我是GDCM的新手。通过对堆栈溢出帖子的搜索表明,匿名器类可用于更改标签值。
Generating a simple CT DICOM image using GDCM
我的问题是,这是否是GDCM API的最佳用法,或者是否有更好的方法来更改单个标签的值,例如患者姓名或登记号。我不熟悉所有API选项,但是有指向API文档的链接。看起来可以使用DataElement SetValue成员,但在Value类中似乎没有有效的构造函数来执行此操作。任何帮助,将不胜感激。这是我目前的方法:
Anonymizer anon = new Anonymizer();
anon.SetFile(myFile);
anon.Replace(new Tag(0x0010, 0x0010), "BUGS^BUNNY");
答案 0 :(得分:1)
很晚了,但也许仍然有用。您没有提到是用C ++还是C#编写的,但是我假设后者是C ++,因为您不使用指针。通常,您的方法是正确的(除非您使用System.IO.File
而不是gdcm.File
)。值(Replace
函数的第二个参数)必须为纯字符串,因此不需要特殊的构造函数。您可能应该从doxygen documentation of gdcm开始,尤其是one complete example。它是C ++语言,但翻译应该没有问题。
答案 1 :(得分:0)
有两种方法填充 dicom标签:
匿名器
gdcm::Anonymizer anon;
anon.SetFile(file);
anon.Replace(gdcm::Tag(0x0002, 0x0013), "Implementation Version Name");
//Implementation Version Name
DatsElement
gdcm::Attribute<0x0018, 0x0088> ss;
ss.SetValue(10.0);
ds.Insert(ss.GetAsDataElement());