Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.3.25
|
Leadtools.Dicom Namespace > DicomDataSet Class > GetValue Method : GetValue<T>(DicomElement,T,T) Method |
public DicomDataSet GetValue<T>( DicomElement element, T defaultValue, out T value )
'Declaration
Public Overloads Function GetValue(Of T)( _ ByVal element As DicomElement, _ ByVal defaultValue As T, _ ByRef value As T _ ) As DicomDataSet
'Usage
Dim instance As DicomDataSet Dim element As DicomElement Dim defaultValue As T Dim value As T Dim value As DicomDataSet value = instance.GetValue(Of T)(element, defaultValue, value)
public DicomDataSet GetValue<T>( DicomElement element, T defaultValue, out T value )
function Leadtools.Dicom.DicomDataSet.GetValue``1(DicomElement,``0,``0)( element , defaultValue , value )
public: DicomDataSet^ GetValuegeneric<typename T> ( DicomElement^ element, T^ defaultValue, [Out] T^ value )
This example will create a DICOM sequence, and then read back values from the sequence
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
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"; }
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); }
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