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




Loads a Data Set.

Overload List

OverloadDescription
Load(String,DicomDataSetLoadFlags) Loads a Data Set.  
Load(IntPtr,Int64,DicomDataSetFlags) Loads a Data Set.  

Example

This example will load a DICOM Dataset and enumerate all its elements.

Visual BasicCopy Code
Public Sub LoadEnumerateSample()
  Dim dicomFileName As String = "C:\Program Files\LEAD Technologies, Inc\LEADTOOLS 15\Images\IMAGE3.dic"
  'Make sure to initialize the DICOM engine, this needs to be done only once
  'In the whole application
  DicomEngine.Startup()
    Dim ds As DicomDataSet = New DicomDataSet()
    Using (ds)
       'Load DICOM File
       ds.Load(dicomFileName, DicomDataSetLoadFlags.None)
       'Insert patient name element, if it doesn�t already exist
       Dim element As DicomElement = ds.FindFirstElement(Nothing, DicomTagType.PatientName, False)
       If element Is Nothing Then
          element = ds.InsertElement(Nothing, False, DicomTagType.PatientName, DicomVRType.PN, False, 0)
       End If
       'The dataset should include the patient name element or an error occurred
       element = ds.FindLastElement(Nothing, DicomTagType.PatientName, False)
       Debug.Assert(Not element Is Nothing)
       'There can be only one patient element in the root level
       element = ds.FindPreviousElement(Nothing, False)
       Debug.Assert(element Is Nothing)
       element = ds.FindNextElement(Nothing, False)
       Debug.Assert(element Is Nothing)

       element = ds.FindFirstElement(Nothing, DicomTagType.PatientName, False)
       'Since the patient name element is in the root level,
       'GetRootElement will return the same element.
       Dim element1 As DicomElement = ds.GetRootElement(element)
       Debug.Assert((element1.Tag = element.Tag), "GetRootElement should return same element")

       'Since the patient name element has no parent then GetParentElement will return null
       element1 = ds.GetParentElement(element)
       Debug.Assert(element1 Is Nothing, "GetParentElement should return null")

       'Since the patient name element has no children then GetChildElement will return null
       element1 = ds.GetChildElement(element, False)
       Debug.Assert(element1 Is Nothing, "GetChildElement should return null")

       element1 = ds.GetFirstElement(element, False, False)
       Debug.Assert(Not element1 Is Nothing, "GetFirstElement Can�t return null in this case")

       element1 = ds.GetLastElement(element, False, False)
       Debug.Assert(Not element1 Is Nothing, "GetLastElement Can�t return null in this case")

       element1 = ds.GetPreviousElement(element, False, True)
       Dim element2 As DicomElement = ds.GetNextElement(element, False, True)

       Debug.Assert(ds.GetElementLevel(element) = 0)

       Debug.Assert(ds.ExistsElement(element))
       Debug.Assert(ds.IsVolatileElement(element) = False)

       'Patient Name is not the only element in this level
       Debug.Assert((Not element1 Is Nothing) AndAlso (Not element2 Is Nothing))
       'Delete the patient name element
       ds.DeleteElement(element)
    End Using
    DicomEngine.Shutdown()
 End Sub
C#Copy Code
public void LoadEnumerateSample() 

   string dicomFileName = @"C:\Program Files\LEAD Technologies, Inc\LEADTOOLS 15\Images\IMAGE3.dic"; 
   //Make sure to initialize the DICOM engine, this needs to be done only once  
   //In the whole application 
   DicomEngine.Startup(); 
   using (DicomDataSet ds = new DicomDataSet()) 
   { 
      //Load DICOM File 
      ds.Load(dicomFileName, DicomDataSetLoadFlags.None); 
      //Insert patient name element, if it doesn�t already exist 
      DicomElement element = ds.FindFirstElement(null, DicomTagType.PatientName, false); 
      if (element == null) 
      { 
         element = ds.InsertElement(null, false, DicomTagType.PatientName, DicomVRType.PN, false, 0); 
      } 
      //The dataset should include the patient name element or an error occurred 
      element = ds.FindLastElement(null, DicomTagType.PatientName, false); 
      Debug.Assert(element != null); 
      //There can be only one patient element in the root level 
      element = ds.FindPreviousElement(null, false); 
      Debug.Assert(element == null); 
      element = ds.FindNextElement(null, false); 
      Debug.Assert(element == null); 
 
      element = ds.FindFirstElement(null, DicomTagType.PatientName, false); 
      //Since the patient name element is in the root level, 
      //GetRootElement will return the same element. 
      DicomElement element1 = ds.GetRootElement(element); 
      Debug.Assert((element1.Tag == element.Tag), "GetRootElement should return same element"); 
 
      //Since the patient name element has no parent then GetParentElement will return null 
      element1 = ds.GetParentElement(element); 
      Debug.Assert(element1 == null, "GetParentElement should return null"); 
 
      //Since the patient name element has no children then GetChildElement will return null 
      element1 = ds.GetChildElement(element, false); 
      Debug.Assert(element1 == null, "GetChildElement should return null"); 
 
      element1 = ds.GetFirstElement(element, false, false); 
      Debug.Assert(element1 != null, "GetFirstElement Can�t return null in this case"); 
 
      element1 = ds.GetLastElement(element, false, false); 
      Debug.Assert(element1 != null, "GetLastElement Can�t return null in this case"); 
 
      element1 = ds.GetPreviousElement(element, false, true); 
      DicomElement element2 = ds.GetNextElement(element, false, true); 
 
      Debug.Assert(ds.GetElementLevel(element) == 0); 
 
      Debug.Assert(ds.ExistsElement(element)); 
      Debug.Assert(ds.IsVolatileElement(element) == false); 
 
      //Patient Name is not the only element in this level 
      Debug.Assert((element1 != null) && (element2 != null)); 
      //Delete the patient name element 
      ds.DeleteElement(element); 
   } 
   DicomEngine.Shutdown(); 
}

Remarks

If you know certain characteristics of the file, you can set those in flags. Any characteristic that you do not set will be automatically determined. For example, if you know that the Meta-header is present, but you do not know the byte order, or whether the Value Representation is Implicit or Explicit, you can set only DicomDataSetLoadFlags.MetaHeaderPresent in flags. During loading, LEADTOOLS will determine the byte order and whether the byte order is Implicit or Explicit.

If you do not know any of the characteristics of the file, set flags to DicomDataSetLoadFlags.None and LEADTOOLS will automatically determine all the file characteristics and load the file accordingly.

If DicomDataSetLoadFlags.LoadAndClose is not included in flags, the file will remain open until the object is destructed, or one of the following methods is called: Reset, Initialize, or Load (again).

To load a Data Set from memory, call Load.

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