gpt4 book ai didi

dicom - ClearCanvas DicomFile.DataSet -- 如何添加新标签?

转载 作者:行者123 更新时间:2023-12-01 14:02:49 25 4
gpt4 key购买 nike

我正在尝试向 ClearCanvas 中的 DicomFile.DataSet 添加新标签。

我注意到有方法“DicomFile.DataSet.RemoveAttribute”但没有“AddAttribute”方法。所以我一直在研究方法“LoadDicomFields”和“SaveDicomFields”,但到目前为止似乎无法让它们工作。我尝试将“DicomFieldAttribute”传递给这些方法,但无济于事。

我在这里错过了什么?或者我需要做什么才能将新标签添加到 DataSet。

DicomFieldAttribute c = new DicomFieldAttribute(tag);
List<DicomFieldAttribute> cs = new List<DicomFieldAttribute>();
cs.Add(c);
DicomFile.DataSet.LoadDicomFields(cs);
DicomFile.DataSet.SaveDicomFields(cs);
if(DicomFile.DataSet.Contains(tag))
{
tag = 0; //BreakPoint never reached here
}

或者我也试过了::

DicomFieldAttribute c = new DicomFieldAttribute(tag);
DicomFile.DataSet.LoadDicomFields(c);
DicomFile.DataSet.SaveDicomFields(c);
if(DicomFile.DataSet.Contains(tag))
{
tag = 0; //BreakPoint never reached here
}

我一直坚持看似微不足道的任务。

最佳答案

您有点混淆了属性的使用。 DicomFiledAttribute 是一个 .NET 属性,可以放置在一个类的成员上,以便该类自动填充来自 DicomAttributeCollection 的值,或者让该类自动填充来自 DicomAttribute 集合的值。即,给定一个这样的测试类:


public class TestClass
{
[DicomField(DicomTags.SopClassUid, DefaultValue = DicomFieldDefault.Default)]
public DicomUid SopClassUid = null;

[DicomField(DicomTags.SopInstanceUid, DefaultValue = DicomFieldDefault.Default)]
public DicomUid SOPInstanceUID = null;

[DicomField(DicomTags.StudyDate, DefaultValue = DicomFieldDefault.Default)]
public DateTime StudyDate;
}

您可以像这样填充类的实例:


DicomFile file = new DicomFile("filename.dcm");
file.Load();
TestClass testInstance = new TestClass();

file.DataSet.LoadDicomFields(testInstance);
// testInstance should now be populated with the values from file

如果您只对填充一些 DICOM 标签感兴趣,DicomAttributeCollection 中有一个索引器。如果 DicomAttribute 实例不存在,索引器将自动为通过索引器请求的标签创建一个实例。因此,要填充一个值,您可以这样做:



DicomFile file = new DicomFile("filename.dcm");

file.DataSet[DicomTags.SopInstanceUid].SetStringValue("1.1.1");

如果你想自己创建 DicomAttribute,你可以这样做:


DicomAttribute attrib = new DicomAttributeUI(DicomTags.SopInstanceUid);
attrib.SetStringValue("1.1.1");

DicomFile file = new DicomFile("filename.dcm");
file.DataSet[DicomTags.SopInstanceUid] = attrib;

关于dicom - ClearCanvas DicomFile.DataSet -- 如何添加新标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5019365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com