Leadtools.Dicom Requires Medical product license | Send comments on this topic. | Back to Introduction - All Topics | Help Version 15.10.31
SetIntValue Method
See Also  Example
Leadtools.Dicom Namespace > DicomDataSet Class : SetIntValue Method




Sets the integer value(s) of a Data Element.

Overload List

OverloadDescription
SetIntValue(DicomElement,IntPtr,Int32) Sets the integer value(s) of a Data Element.  
SetIntValue(DicomElement,Int32[],Int32) Sets the integer value(s) of a Data Element.  

Example

This example will initialize a DICOM Dataset and then insert different types of elements, update their values and finally verify those values by reading them back from the Dataset.

Visual BasicCopy Code
Public Sub DicomSetGetValueTest()
  'Make sure to initialize the DICOM engine, this needs to be done only once
  'In the whole application
  DicomEngine.Startup()

  Dim dicomDataset As DicomDataSet = New DicomDataSet()
    Using (dicomDataset)
       dicomDataset.Reset()
       dicomDataset.Initialize(DicomClassType.Undefined, DicomDataSetInitializeType.ExplicitVRLittleEndian)
       Dim element As DicomElement = dicomDataset.InsertElement(Nothing, False, DicomTagType.CineRate, DicomVRType.IS, False, 0)
       If Not element Is Nothing Then
          dicomDataset.SetIntValue(element, New Integer() {30}, 1)
          Dim value As Integer() = dicomDataset.GetIntValue(element, 0, 1) ' can also call GetLongValue
          Debug.Assert(value(0) = 30)
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.ChannelMaximumValue, DicomVRType.OB, False, 0)
       If Not element Is Nothing Then
          dicomDataset.SetByteValue(element, New Byte() {55}, 1)
          Dim value As Byte() = dicomDataset.GetByteValue(element, 0, 1)
          Debug.Assert(value(0) = 55)
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.NumberOfRemainingSuboperations, DicomVRType.US, False, 0)
       If Not element Is Nothing Then
          dicomDataset.SetShortValue(element, New Short() {2}, 1)
          Dim value As Short() = dicomDataset.GetShortValue(element, 0, 1)
          Debug.Assert(value(0) = 2)
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.SliceLocation, DicomVRType.DS, False, 0)
       If Not element Is Nothing Then
          dicomDataset.SetDoubleValue(element, New Double() {10.5}, 1)
          Dim value As Double() = dicomDataset.GetDoubleValue(element, 0, 1)
          Debug.Assert(value(0) = 10.5)
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.PresentationPixelMagnificationRatio, DicomVRType.FL, False, 0)
       If Not element Is Nothing Then
          dicomDataset.SetFloatValue(element, New Single() {3.2F}, 1)
          Dim value As Single() = dicomDataset.GetFloatValue(element, 0, 1)
          Debug.Assert(value(0) = 3.2F)
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.InstanceCreationDate, DicomVRType.DA, False, 0)
       If Not element Is Nothing Then
          Dim newvalue As DicomDateValue() = New DicomDateValue(0) {}
          newvalue(0).Year = 2004
          newvalue(0).Month = 1
          newvalue(0).Day = 8
          dicomDataset.SetDateValue(element, newvalue)
          Dim value As DicomDateValue() = dicomDataset.GetDateValue(element, 0, 1)
          Debug.Assert((value(0).Year = 2004) AndAlso (value(0).Month = 1) AndAlso (value(0).Day = 8))
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.InstanceCreationTime, DicomVRType.TM, False, 0)
       If Not element Is Nothing Then
          Dim newvalue As DicomTimeValue() = New DicomTimeValue(0) {}
          newvalue(0).Hours = 2
          newvalue(0).Minutes = 3
          newvalue(0).Seconds = 5
          dicomDataset.SetTimeValue(element, newvalue)
          Dim value As DicomTimeValue() = dicomDataset.GetTimeValue(element, 0, 1)
          Debug.Assert((value(0).Hours = 2) AndAlso (value(0).Minutes = 3) AndAlso (value(0).Seconds = 5))
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.AcquisitionDatetime, DicomVRType.DT, False, 0)
       If Not element Is Nothing Then
          Dim newvalue As DicomDateTimeValue() = New DicomDateTimeValue(0) {}
          newvalue(0).Year = 2004
          newvalue(0).Month = 1
          newvalue(0).Day = 8
          newvalue(0).Hours = 2
          newvalue(0).Minutes = 3
          newvalue(0).Seconds = 5
          dicomDataset.SetDateTimeValue(element, newvalue)
          Dim value As DicomDateTimeValue() = dicomDataset.GetDateTimeValue(element, 0, 1)
          Debug.Assert((value(0).Hours = 2) AndAlso (value(0).Minutes = 3) AndAlso (value(0).Seconds = 5))
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.PatientAge, DicomVRType.AS, False, 0)
       If Not element Is Nothing Then
          Dim newvalue As DicomAgeValue() = New DicomAgeValue(0) {}
          newvalue(0).Number = 25
          newvalue(0).Reference = DicomAgeReferenceType.Days
          dicomDataset.SetAgeValue(element, newvalue)
          Dim value As DicomAgeValue() = dicomDataset.GetAgeValue(element, 0, 1)
          Debug.Assert((value(0).Number = 25))
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.PatientName, DicomVRType.PN, False, 0)
       If Not element Is Nothing Then
          dicomDataset.FreeElementValue(element)
          dicomDataset.SetStringValue(element, "John Doe", DicomCharacterSetType.Default)
          Debug.Assert(dicomDataset.GetElementValueCount(element) = 1)
          Debug.Assert(dicomDataset.GetStringValue(element, 0) = "John Doe")
       End If

       Dim inPreamble As Byte() = New Byte(127) {}
       For i As Integer = 0 To 127
          inPreamble(i) = CByte(i)
       Next i
       dicomDataset.SetPreamble(inPreamble, 0, 128)
       Dim outPreamble As Byte() = dicomDataset.GetPreamble(128)
       Debug.Assert(inPreamble.Length = outPreamble.Length)

       element = dicomDataset.FindFirstElement(element, DicomTagType.NumberOfRemainingSuboperations, True)
       If Not element Is Nothing Then
          'We don�t really need to do this
          dicomDataset.FreeElementValue(element)
          Dim inBinaryValue As Byte() = New Byte(1) {}
          inBinaryValue(0) = 0
          inBinaryValue(1) = 1
          dicomDataset.SetBinaryValue(element, inBinaryValue, 2)
          Dim outBinaryValue As Byte() = dicomDataset.GetBinaryValue(element, 2)
          Debug.Assert((outBinaryValue(0) = 0) AndAlso (outBinaryValue(1) = 1))
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.StudyDate, DicomVRType.DA, False, 0)
       If Not element Is Nothing Then
          Dim date1 As DicomDateValue = New DicomDateValue()
          date1.Day = 1
          date1.Month = 2
          date1.Year = 2005
          Dim newvalue As DicomDateRangeValue() = New DicomDateRangeValue(0) {}
          newvalue(0).Date1 = date1
          newvalue(0).Type = DicomRangeType.Lower
          dicomDataset.SetDateRangeValue(element, newvalue)
          Dim value As DicomDateRangeValue = dicomDataset.GetDateRangeValue(element, 0)
          Debug.Assert((value.Type = DicomRangeType.Lower) AndAlso (value.Date1.Year = 2005))
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.StudyTime, DicomVRType.TM, False, 0)
       If Not element Is Nothing Then
          Dim time1 As DicomTimeValue = New DicomTimeValue()
          time1.Hours = 2
          time1.Minutes = 1
          time1.Seconds = 3
          Dim newvalue As DicomTimeRangeValue() = New DicomTimeRangeValue(0) {}
          newvalue(0).Time1 = time1
          newvalue(0).Type = DicomRangeType.Lower
          dicomDataset.SetTimeRangeValue(element, newvalue)
          Dim value As DicomTimeRangeValue = dicomDataset.GetTimeRangeValue(element, 0)
          Debug.Assert((value.Type = DicomRangeType.Lower) AndAlso (value.Time1.Hours = 2))
       End If

       element = dicomDataset.InsertElement(Nothing, False, DicomTagType.PatientID, DicomVRType.LO, False, 0)
       If Not element Is Nothing Then
          dicomDataset.SetConvertValue(element, "154-4485", 1)
          Debug.Assert(dicomDataset.GetConvertValue(element) = "154-4485")
       End If

       dicomDataset.Save("C:\\Test.dic", DicomDataSetSaveFlags.None)
    End Using

    DicomEngine.Shutdown()
 End Sub
C#Copy Code
public void DicomSetGetValueTest() 

   //Make sure to initialize the DICOM engine, this needs to be done only once  
   //In the whole application 
   DicomEngine.Startup(); 
   using (DicomDataSet dicomDataset = new DicomDataSet()) 
   { 
      dicomDataset.Reset(); 
      dicomDataset.Initialize(DicomClassType.Undefined, DicomDataSetInitializeType.ExplicitVRLittleEndian); 
      DicomElement element = dicomDataset.InsertElement(null, false, DicomTagType.CineRate, DicomVRType.IS, false, 0); 
      if (element != null) 
      { 
         dicomDataset.SetIntValue(element, new int[] { 30 }, 1); 
         int[] value = dicomDataset.GetIntValue(element, 0, 1);// can also call GetLongValue 
         Debug.Assert(value[0] == 30); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.ChannelMaximumValue, DicomVRType.OB, false, 0); 
      if (element != null) 
      { 
         dicomDataset.SetByteValue(element, new byte[] { 55 }, 1); 
         byte[] value = dicomDataset.GetByteValue(element, 0, 1); 
         Debug.Assert(value[0] == 55); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.NumberOfRemainingSuboperations, DicomVRType.US, false, 0); 
      if (element != null) 
      { 
         dicomDataset.SetShortValue(element, new short[] { 2 }, 1); 
         short[] value = dicomDataset.GetShortValue(element, 0, 1); 
         Debug.Assert(value[0] == 2); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.SliceLocation, DicomVRType.DS, false, 0); 
      if (element != null) 
      { 
         dicomDataset.SetDoubleValue(element, new double[] { 10.5 }, 1); 
         double[] value = dicomDataset.GetDoubleValue(element, 0, 1); 
         Debug.Assert(value[0] == 10.5); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.PresentationPixelMagnificationRatio, DicomVRType.FL, false, 0); 
      if (element != null) 
      { 
         dicomDataset.SetFloatValue(element, new float[] { 3.2F }, 1); 
         float[] value = dicomDataset.GetFloatValue(element, 0, 1); 
         Debug.Assert(value[0] == 3.2F); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.InstanceCreationDate, DicomVRType.DA, false, 0); 
      if (element != null) 
      { 
         DicomDateValue[] newvalue = new DicomDateValue[1]; 
         newvalue[0].Year = 2004; 
         newvalue[0].Month = 1; 
         newvalue[0].Day = 8; 
         dicomDataset.SetDateValue(element, newvalue); 
         DicomDateValue[] value = dicomDataset.GetDateValue(element, 0, 1); 
         Debug.Assert((value[0].Year == 2004) && (value[0].Month == 1) && (value[0].Day == 8)); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.InstanceCreationTime, DicomVRType.TM, false, 0); 
      if (element != null) 
      { 
         DicomTimeValue[] newvalue = new DicomTimeValue[1]; 
         newvalue[0].Hours = 2; 
         newvalue[0].Minutes = 3; 
         newvalue[0].Seconds = 5; 
         dicomDataset.SetTimeValue(element, newvalue); 
         DicomTimeValue[] value = dicomDataset.GetTimeValue(element, 0, 1); 
         Debug.Assert((value[0].Hours == 2) && (value[0].Minutes == 3) && (value[0].Seconds == 5)); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.AcquisitionDatetime, DicomVRType.DT, false, 0); 
      if (element != null) 
      { 
         DicomDateTimeValue[] newvalue = new DicomDateTimeValue[1]; 
         newvalue[0].Year = 2004; 
         newvalue[0].Month = 1; 
         newvalue[0].Day = 8; 
         newvalue[0].Hours = 2; 
         newvalue[0].Minutes = 3; 
         newvalue[0].Seconds = 5; 
         dicomDataset.SetDateTimeValue(element, newvalue); 
         DicomDateTimeValue[] value = dicomDataset.GetDateTimeValue(element, 0, 1); 
         Debug.Assert((value[0].Hours == 2) && (value[0].Minutes == 3) && (value[0].Seconds == 5)); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.PatientAge, DicomVRType.AS, false, 0); 
      if (element != null) 
      { 
         DicomAgeValue[] newvalue = new DicomAgeValue[1]; 
         newvalue[0].Number = 25; 
         newvalue[0].Reference = DicomAgeReferenceType.Days; 
         dicomDataset.SetAgeValue(element, newvalue); 
         DicomAgeValue[] value = dicomDataset.GetAgeValue(element, 0, 1); 
         Debug.Assert((value[0].Number == 25)); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.PatientName, DicomVRType.PN, false, 0); 
      if (element != null) 
      { 
         dicomDataset.FreeElementValue(element); 
         dicomDataset.SetStringValue(element, "John Doe", DicomCharacterSetType.Default); 
         Debug.Assert(dicomDataset.GetElementValueCount(element) == 1); 
         Debug.Assert(dicomDataset.GetStringValue(element, 0) == "John Doe"); 
      } 
 
      byte[] inPreamble = new byte[128]; 
      for (int i = 0; i < 128; i++) 
      { 
         inPreamble[i] = (byte)i; 
      } 
      dicomDataset.SetPreamble(inPreamble, 0, 128); 
      byte[] outPreamble = dicomDataset.GetPreamble(128); 
      Debug.Assert(inPreamble.Length == outPreamble.Length); 
 
      element = dicomDataset.FindFirstElement(element, DicomTagType.NumberOfRemainingSuboperations, true); 
      if (element != null) 
      { 
         //We don�t really need to do this 
         dicomDataset.FreeElementValue(element); 
         byte[] inBinaryValue = new byte[2]; 
         inBinaryValue[0] = 0; 
         inBinaryValue[1] = 1; 
         dicomDataset.SetBinaryValue(element, inBinaryValue, 2); 
         byte[] outBinaryValue = dicomDataset.GetBinaryValue(element, 2); 
         Debug.Assert((outBinaryValue[0] == 0) && (outBinaryValue[1] == 1)); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.StudyDate, DicomVRType.DA, false, 0); 
      if (element != null) 
      { 
         DicomDateValue date1 = new DicomDateValue(); 
         date1.Day = 1; 
         date1.Month = 2; 
         date1.Year = 2005; 
         DicomDateRangeValue[] newvalue = new DicomDateRangeValue[1]; 
         newvalue[0].Date1 = date1; 
         newvalue[0].Type = DicomRangeType.Lower; 
         dicomDataset.SetDateRangeValue(element, newvalue); 
         DicomDateRangeValue value = dicomDataset.GetDateRangeValue(element, 0); 
         Debug.Assert((value.Type == DicomRangeType.Lower) && (value.Date1.Year == 2005)); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.StudyTime, DicomVRType.TM, false, 0); 
      if (element != null) 
      { 
         DicomTimeValue time1 = new DicomTimeValue(); 
         time1.Hours = 2; 
         time1.Minutes = 1; 
         time1.Seconds = 3; 
         DicomTimeRangeValue[] newvalue = new DicomTimeRangeValue[1]; 
         newvalue[0].Time1 = time1; 
         newvalue[0].Type = DicomRangeType.Lower; 
         dicomDataset.SetTimeRangeValue(element, newvalue); 
         DicomTimeRangeValue value = dicomDataset.GetTimeRangeValue(element, 0); 
         Debug.Assert((value.Type == DicomRangeType.Lower) && (value.Time1.Hours == 2)); 
      } 
 
      element = dicomDataset.InsertElement(null, false, DicomTagType.PatientID, DicomVRType.LO, false, 0); 
      if (element != null) 
      { 
         dicomDataset.SetConvertValue(element, "154-4485", 1); 
         Debug.Assert(dicomDataset.GetConvertValue(element) == "154-4485"); 
      } 
 
      dicomDataset.Save(@"C:\\Test.dic", DicomDataSetSaveFlags.None); 
   } 
   DicomEngine.Shutdown(); 
}

Remarks

Note: The user is responsible to allocate the memory for value.

If you want to set more than one value in the Value Field of the Data Element, put all the integer values in an array of integer values, set value to the address of the array, and set count to the corresponding number of entries. For example, if you wish to set three integer values in the Value Field of the Data Element, create an array of integer values containing the three integer values, set value to the address of the array, and set count to three.

If more than one value is stored in the Value Field of the Data Element, you must set all values at the same time.

This method can be called only if the Value Representation of the Data Element is DicomVRType.AT, DicomVRType.IS, DicomVRType.SL, or DicomVRType.UL. For more information about Value Representations, refer to Default Value Representation Table.

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

Leadtools.Dicom requires a Medical toolkit license and unlock key. For more information, refer to: Raster Pro/Document/Medical Features