Adding/Extracting Sequences in MSVC

Sometimes we are asked about how to Add/Extract DICOM sequences in Microsoft Visual C++, to avoid replying similar emails in the further, we put the code here.


Adding Sequence

IDicomDataSetPtr ds;
ds.CreateInstance("DicomObjects.DicomDataSet");
IDicomDataSetsPtr seq; seq.CreateInstance("DicomObjects.DicomDataSets");
IDicomDataSetPtr seqItem1; seqItem1.CreateInstance("DicomObjects.DicomDataSet"); IDicomDataSetPtr seqItem2; seqItem2.CreateInstance("DicomObjects.DicomDataSet");
seqItem1->Name = "seqItem1"; seqItem2->Name = "seqItem2";
seq->Add(seqItem1); seq->Add(seqItem2);
ds->Attributes->Add(group, element, (IDispatch *)seq);


Extracting Sequence

IDicomDataSetsPtr seq2;
seq2 = (IDicomDataSetsPtr)ds->Attributes->Get_Item(0x88,0x200)->Get_Value();
IDicomDataSetPtr seqItemA; IDicomDataSetPtr seqItemB;
seqItemA = seq2->Item[(short)(1)]; seqItemB = seq2->Item[(short)(2)];
_bstr_t name1; _bstr_t name2; name1 = seqItemA->Name; name2 = seqItemB->Name;

User login