LEADTOOLS Medical (Leadtools.Dicom assembly)
LEAD Technologies, Inc

LoadAsync(ILeadStream,DicomDataSetLoadFlags) Method

Example 







A stream that contains the Data Set to be loaded.
Meta-header flags and Transfer Syntax flags that indicate the file characteristics to use when loading the file.
Loads a Data Set from a disk file. .NET support WinRT support
Syntax
public IAsyncOperation<bool> LoadAsync( 
   ILeadStream stream,
   DicomDataSetLoadFlags flags
)
'Declaration
 
Public Overloads Function LoadAsync( _
   ByVal stream As ILeadStream, _
   ByVal flags As DicomDataSetLoadFlags _
) As IAsyncOperation(Of Boolean)
'Usage
 
Dim instance As DicomDataSet
Dim stream As ILeadStream
Dim flags As DicomDataSetLoadFlags
Dim value As IAsyncOperation(Of Boolean)
 
value = instance.LoadAsync(stream, flags)
public IAsyncOperation<bool> LoadAsync( 
   ILeadStream stream,
   DicomDataSetLoadFlags flags
)
ObjectiveC Syntax
 function Leadtools.Dicom.DicomDataSet.LoadAsync(ILeadStream,DicomDataSetLoadFlags)( 
   stream ,
   flags 
)
public:
IAsyncOperation<bool>^ LoadAsync( 
   ILeadStream^ stream,
   DicomDataSetLoadFlags flags
) 

Parameters

stream
A stream that contains the Data Set to be loaded.
flags
Meta-header flags and Transfer Syntax flags that indicate the file characteristics to use when loading the file.

Return Value

When this method completes, it returns the true if the dataset was loaded, false otherwise.
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(DicomClassType,DicomDataSetInitializeType), or Load(String,DicomDataSetLoadFlags) (again). If LoadAndClose is used, for large images, this mage slow performance, however, the file handle will be released. If set to None, large images will load quickly, and image travers can begin immediately. However, until the file handle is released, nothing can be done to the image.

To load a Data Set from memory, call Load(IntPtr,Int64,DicomDataSetFlags).

Example
Copy CodeCopy Code  
Public Sub LoadEnumerateSample()
      Dim dicomFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm")
      '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, DicomTag.PatientName, False)
         If element Is Nothing Then
            element = ds.InsertElement(Nothing, False, DicomTag.PatientName, DicomVRType.PN, False, 0)
         End If
         'The dataset should include the patient name element or an error occurred
         element = ds.FindLastElement(Nothing, DicomTag.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, DicomTag.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

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
public void LoadEnumerateSample()
   {
      string dicomFileName = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm");
      //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, DicomTag.PatientName, false);
         if (element == null)
         {
            element = ds.InsertElement(null, false, DicomTag.PatientName, DicomVRType.PN, false, 0);
         }
         //The dataset should include the patient name element or an error occurred
         element = ds.FindLastElement(null, DicomTag.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, DicomTag.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();
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
public void LoadEnumerateSample(Stream dicomStream)
{
   //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(dicomStream, DicomDataSetLoadFlags.None);
      //Insert patient name element, if it doesn't already exist
      DicomElement element = ds.FindFirstElement(null, DicomTag.PatientName, false);
      if (element == null)
      {
         element = ds.InsertElement(null, false, DicomTag.PatientName, DicomVRType.PN, false, 0);
      }
      //The dataset should include the patient name element or an error occurred
      element = ds.FindLastElement(null, DicomTag.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, DicomTag.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();
}
Public Sub LoadEnumerateSample(ByVal dicomStream As Stream)
   'Make sure to initialize the DICOM engine, this needs to be done only once 
   'In the whole application
   DicomEngine.Startup()
   Using ds As DicomDataSet = New DicomDataSet()
      'Load DICOM File
      ds.Load(dicomStream, DicomDataSetLoadFlags.None)
      'Insert patient name element, if it doesn't already exist
      Dim element As DicomElement = ds.FindFirstElement(Nothing, DicomTag.PatientName, False)
      If element Is Nothing Then
         element = ds.InsertElement(Nothing, False, DicomTag.PatientName, DicomVRType.PN, False, 0)
      End If
      'The dataset should include the patient name element or an error occurred
      element = ds.FindLastElement(Nothing, DicomTag.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, DicomTag.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
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

DicomDataSet Class
DicomDataSet Members
Overload List
Load(IntPtr,Int64,DicomDataSetFlags) Method
Save(String,DicomDataSetSaveFlags) Method

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.

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