3

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
}

私は些細な仕事のように見えることに行き詰まっています。

4

1 に答える 1

2

属性の使用を少し混乱させています。DicomFiledAttribute は、クラスに DicomAttributeCollection からの値が自動的に入力されるように、または DicomAttribute Collection からの値がクラスに自動的に入力されるように、クラスのメンバーに配置できる .NET 属性です。つまり、次のようなテスト クラスが与えられます。


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;

于 2011-02-16T20:34:09.767 に答える