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

时间:2011-02-16 16:46:11

标签: dicom clearcanvas

我试图在ClearCanvas中为我的DicomFile.DataSet添加一个新标签。

我注意到有方法“DicomFile.DataSet.RemoveAttribute”但没有“AddAtribute”方法。所以我一直在研究方法“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
}

我一直被困在看似微不足道的任务上。

1 个答案:

答案 0 :(得分:2)

您对属性的使用感到困惑。 DicomFiledAttribute是一个.NET属性,可以放在类的成员上,以便使用DicomAttributeCollection中的值自动填充类,或者使用DicomAttribute Collection中的值自动填充类。即,考虑到这样的测试类:


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;