C#
C++/CLI
public DicomDataSet BeginEditItem()
public:
DicomDataSet^ BeginEditItem();
a reference to the DicomDataSet
To edit an existing item that is not the first item, use the overload that takes an index. BeginEditItem For more information, see BeginEditSequence
using Leadtools;
using Leadtools.Dicom;
///
private void DicomDataSet_BeginEditSequenceExample()
{
// The methods below all return a 'this' pointer so that they can be chained together (a 'fluent' interface)
// BeginEditItem has an index item to allow you to specify which item to edit (defaults to 0).
// BeginReadItem should also have this overload.
//
// Create a DicomDataSet
DicomDataSet ds = new DicomDataSet();
// ***************************************************
// *** Example 1
// ***************************************************
// Create a sequence with two items
ds.BeginEditSequence(DicomTag.RequestAttributesSequence)
.BeginEditItem()
.InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- first item")
.InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- first item")
.EndEditItem()
.BeginEditItem()
.InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item")
.InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item")
.EndEditItem()
.EndEditSequence();
// Now add a third item to the sequence
ds.BeginEditSequence(DicomTag.RequestAttributesSequence)
.BeginEditItem(2)
.InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- third item")
.InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- third item")
.EndEditItem()
.EndEditSequence();
// Now update the second item in the sequence
ds.BeginEditSequence(DicomTag.RequestAttributesSequence)
.BeginEditItem(1)
.InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item updated")
.InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item updated")
.EndEditItem()
.EndEditSequence();
// Read the first item in the sequence
string sRequestedProcedureID;
string sScheduledProcedureStepID;
ds.BeginReadSequence(DicomTag.RequestAttributesSequence)
.BeginReadItem()
.GetValue<string>(DicomTag.RequestedProcedureID, null, out sRequestedProcedureID)
.GetValue<string>(DicomTag.ScheduledProcedureStepID, null, out sScheduledProcedureStepID)
.EndReadItem()
.EndReadSequence();
// Read the third item in the sequence
sRequestedProcedureID = string.Empty;
sScheduledProcedureStepID = string.Empty;
ds.BeginReadSequence(DicomTag.RequestAttributesSequence)
.BeginReadItem(2)
.GetValue<string>(DicomTag.RequestedProcedureID, null, out sRequestedProcedureID)
.GetValue<string>(DicomTag.ScheduledProcedureStepID, null, out sScheduledProcedureStepID)
.EndReadItem()
.EndReadSequence();
// ***************************************************
// *** Example 2
// ***************************************************
// This example creates a sequence inside another sequence
// Add a per-frame functional gropus sequence with two items
ds.BeginEditSequence(DicomTag.PerFrameFunctionalGroupsSequence)
.BeginEditItem()
.BeginEditSequence(DicomTag.FrameVOILUTSequence)
.BeginEditItem()
.InsertElementAndSetValue(DicomTag.WindowCenter, 32000)
.InsertElementAndSetValue(DicomTag.WindowWidth, 64000)
.EndEditItem()
.BeginEditItem()
.InsertElementAndSetValue(DicomTag.WindowCenter, 100)
.InsertElementAndSetValue(DicomTag.WindowWidth, 200)
.EndEditItem()
.EndEditSequence()
.EndEditItem()
.EndEditSequence();
// Now read the per-frame functional groups sequence with two items
string sWindowCenter1;
string sWindowWidth1;
string sWindowCenter2;
string sWindowWidth2;
ds.BeginReadSequence(DicomTag.PerFrameFunctionalGroupsSequence)
.BeginReadItem()
.BeginReadSequence(DicomTag.FrameVOILUTSequence)
.BeginReadItem()
.GetValue<string>(DicomTag.WindowCenter, null, out sWindowCenter1)
.GetValue<string>(DicomTag.WindowWidth, null, out sWindowWidth1)
.EndReadItem()
.BeginReadItem()
.GetValue<string>(DicomTag.WindowCenter, null, out sWindowCenter2)
.GetValue<string>(DicomTag.WindowWidth, null, out sWindowWidth2)
.EndReadItem()
.EndReadSequence()
.EndReadItem()
.EndReadSequence();
ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "test.dcm"), DicomDataSetSaveFlags.None);
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}