Returns the value of a DICOM element
public DicomDataSet GetValue<T>(
DicomElement element,
T defaultValue,
out T value
)
Public Overloads Function GetValue(Of T)( _
ByVal element As DicomElement, _
ByVal defaultValue As T, _
ByRef value As T _
) As DicomDataSet
public:
DicomDataSet^ GetValuegeneric<typename T>
(
DicomElement^ element,
T^ defaultValue,
[Out] T^ value
)
element
an item in the data set
defaultValue
a value of type T that is returned if the actual value cannot be retrieved.
value
reference to an object that will be updated with the value.
T
specifies the type of the value to return
a reference to the DicomDataSet
This example will create a DICOM sequence, and then read back values from the sequence
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:\Users\Public\Documents\LEADTOOLS Images";
}
Imports Leadtools
Imports Leadtools.Dicom
'''
Private Sub 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
Dim ds As DicomDataSet = 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
Dim sRequestedProcedureID As String = String.Empty
Dim sScheduledProcedureStepID As String = String.Empty
ds.BeginReadSequence(DicomTag.RequestAttributesSequence) _
.BeginReadItem() _
.GetValue(Of String)(DicomTag.RequestedProcedureID, Nothing, sRequestedProcedureID) _
.GetValue(Of String)(DicomTag.ScheduledProcedureStepID, Nothing, sScheduledProcedureStepID) _
.EndReadItem() _
.EndReadSequence()
' Read the third item in the sequence
sRequestedProcedureID = String.Empty
sScheduledProcedureStepID = String.Empty
ds.BeginReadSequence(DicomTag.RequestAttributesSequence) _
.BeginReadItem(2) _
.GetValue(Of String)(DicomTag.RequestedProcedureID, Nothing, sRequestedProcedureID) _
.GetValue(Of String)(DicomTag.ScheduledProcedureStepID, Nothing, 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
Dim sWindowCenter1 As String = String.Empty
Dim sWindowWidth1 As String = String.Empty
Dim sWindowCenter2 As String = String.Empty
Dim sWindowWidth2 As String = String.Empty
ds.BeginReadSequence(DicomTag.PerFrameFunctionalGroupsSequence) _
.BeginReadItem() _
.BeginReadSequence(DicomTag.FrameVOILUTSequence) _
.BeginReadItem() _
.GetValue(Of String)(DicomTag.WindowCenter, Nothing, sWindowCenter1) _
.GetValue(Of String)(DicomTag.WindowWidth, Nothing, sWindowWidth1) _
.EndReadItem() _
.BeginReadItem() _
.GetValue(Of String)(DicomTag.WindowCenter, Nothing, sWindowCenter2) _
.GetValue(Of String)(DicomTag.WindowWidth, Nothing, sWindowWidth2) _
.EndReadItem() _
.EndReadSequence() _
.EndReadItem() _
.EndReadSequence()
ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "test.dcm"), DicomDataSetSaveFlags.None)
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
c#[Silverlight C# Example]
using Leadtools;
using Leadtools.Dicom;
using Leadtools.Examples;
private void DicomDataSet_BeginEditSequenceExample(Stream outputStream)
{
// 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(outputStream, DicomDataSetSaveFlags.None);
}
vb[Silverlight VB Example]
Imports Leadtools
Imports Leadtools.Dicom
Private Sub DicomDataSet_BeginEditSequenceExample(ByVal outputStream As Stream)
' 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
Dim ds As DicomDataSet = New DicomDataSet()
' ***************************************************
' *** Example 1
' ***************************************************
' Create a sequence with two items
With 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()
End With
' Now add a third item to the sequence
With ds.BeginEditSequence(DicomTag.RequestAttributesSequence)
.BeginEditItem(2)
.InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- third item")
.InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- third item")
.EndEditItem()
.EndEditSequence()
End With
' Now update the second item in the sequence
With ds.BeginEditSequence(DicomTag.RequestAttributesSequence)
.BeginEditItem(1)
.InsertElementAndSetValue(DicomTag.RequestedProcedureID, "RequestedProcedureID -- second item updated")
.InsertElementAndSetValue(DicomTag.ScheduledProcedureStepID, "ScheduledProcedureStepID -- second item updated")
.EndEditItem()
.EndEditSequence()
End With
' Read the first item in the sequence
Dim sRequestedProcedureID As String = String.Empty
Dim sScheduledProcedureStepID As String = String.Empty
With ds.BeginReadSequence(DicomTag.RequestAttributesSequence)
.BeginReadItem()
.GetValue(Of String)(DicomTag.RequestedProcedureID, Nothing, sRequestedProcedureID)
.GetValue(Of String)(DicomTag.ScheduledProcedureStepID, Nothing, sScheduledProcedureStepID)
.EndReadItem()
.EndReadSequence()
End With
' Read the third item in the sequence
sRequestedProcedureID = String.Empty
sScheduledProcedureStepID = String.Empty
With ds.BeginReadSequence(DicomTag.RequestAttributesSequence)
.BeginReadItem(2)
.GetValue(Of String)(DicomTag.RequestedProcedureID, Nothing, sRequestedProcedureID)
.GetValue(Of String)(DicomTag.ScheduledProcedureStepID, Nothing, sScheduledProcedureStepID)
.EndReadItem()
.EndReadSequence()
End With
' ***************************************************
' *** Example 2
' ***************************************************
' This example creates a sequence inside another sequence
' Add a per-frame functional gropus sequence with two items
With 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()
End With
' Now read the per-frame functional groups sequence with two items
Dim sWindowCenter1 As String = String.Empty
Dim sWindowWidth1 As String = String.Empty
Dim sWindowCenter2 As String = String.Empty
Dim sWindowWidth2 As String = String.Empty
With ds.BeginReadSequence(DicomTag.PerFrameFunctionalGroupsSequence)
.BeginReadItem()
.BeginReadSequence(DicomTag.FrameVOILUTSequence)
.BeginReadItem()
.GetValue(Of String)(DicomTag.WindowCenter, Nothing, sWindowCenter1)
.GetValue(Of String)(DicomTag.WindowWidth, Nothing, sWindowWidth1)
.EndReadItem()
.BeginReadItem()
.GetValue(Of String)(DicomTag.WindowCenter, Nothing, sWindowCenter2)
.GetValue(Of String)(DicomTag.WindowWidth, Nothing, sWindowWidth2)
.EndReadItem()
.EndReadSequence()
.EndReadItem()
.EndReadSequence()
End With
ds.Save(outputStream, DicomDataSetSaveFlags.None)
End Sub
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document