←Select platform

FindFirstKey(DicomElement,string,bool) Method

Summary
Returns the first item in the Dicom Dir Data Set with the specified key element type.
Syntax
C#
Objective-C
C++/CLI
Java
public DicomElement FindFirstKey( 
   DicomElement element, 
   string key, 
   bool tree 
) 
- (nullable LTDicomElement *)findFirstKey:(nullable LTDicomElement *)element stringKey:(NSString *)key tree:(BOOL)tree; 
public DicomElement findFirstKey(DicomElement element, String key, boolean tree) 
public: 
DicomElement^ FindFirstKey(  
   DicomElement^ element, 
   String^ key, 
   bool tree 
)  

Parameters

element
An item in the Data Set.

key
The type of key element to find.

tree
true to evaluate the Data Set as a tree; false to evaluate the Data Set as a list.

Return Value

The first item in the Data Set with the specified key element type, or a null reference (Nothing in VB) if an item with the specified key element type was not found.

Remarks

For the sake of the following illustrations, the order of siblings is top to bottom. Therefore first is evaluated top to bottom. If the Data Set is evaluated as a tree structure, this method returns the first item on the same level as element with the same parent as element, that has key element type key.

Please note that the numbering of the items of interest in this first illustration is arbitrary and does not imply order.

fndfttr.gif
If the passed object points to: The method returns an object pointing to:
Item 1 The first sibling (same level, same parent) of Item 1 that has the key element type key, if such an item exists. If such an item does not exist, the method returns null.
Item 2 The first sibling (same level, same parent) of Item 2 that has the key element type key, if such an item exists. If such an item does not exist, the method returns null.
Item 3 The first sibling (same level, same parent) of Item 3 that has the key element type key, if such an item exists. If such an item does not exist, the method returns null.

If the Data Set is evaluated as a list, this method returns the first item in the entire list that has key element type key. The search begins at the top of the list.

Please note that the numbering of the items in the following illustration does indicate the order of the items when the Data Set is evaluated as a list.

fndftlst.gif
If the passed object points to: The method returns an object pointing to:
Item 1 The first item in the list that has key element type key, if such an item exists. Searching begins at the top of the list. If an item with key element type key is not found, null is returned.
Item 14 The first item in the list that has key element type key, if such an item exists. Searching begins at the top of the list. If an item with key element type key is not found, null is returned.
Item 22 The first item in the list that has key element type key, if such an item exists. Searching begins at the top of the list. If an item with key element type key is not found, null is returned.

The following methods will also help you find elements in the Data Set with a specific key element type:

FindLastKey

FindPreviousKey

FindNextKey

Example
C#
using Leadtools; 
using Leadtools.Dicom; 
 
 
public void DicomDIRSample() 
{ 
   //Make sure to initialize the DICOM engine, this needs to be done only once  
   DicomEngine.Startup(); 
   using (DicomDataSet dicomDIR = new DicomDataSet()) 
   { 
      dicomDIR.Reset(); 
      //Initialize the dataset as a DICOMDIR class 
      dicomDIR.Initialize(DicomClassType.BasicDirectory, DicomDataSetInitializeType.ExplicitVRLittleEndian); 
      Debug.Assert(dicomDIR.InformationClass == DicomClassType.BasicDirectory); 
      Debug.Assert(dicomDIR.InformationFlags == (DicomDataSetFlags.ExplicitVR | DicomDataSetFlags.LittleEndian | DicomDataSetFlags.MetaHeaderPresent)); 
      //Insert a patient level key 
      DicomElement patientKey = dicomDIR.InsertKey(null, DicomDirKeyType.Patient, true); 
      //Insert a study key under the patient key 
      DicomElement studyKey = dicomDIR.InsertKey(patientKey, DicomDirKeyType.Study, true); 
      //Now insert three series keys under the study key 
      DicomElement seriesKey = dicomDIR.InsertKey(studyKey, DicomDirKeyType.Series, true); 
      seriesKey = dicomDIR.InsertKey(studyKey, DicomDirKeyType.Series, true); 
      seriesKey = dicomDIR.InsertKey(studyKey, DicomDirKeyType.Series, true); 
      DicomElement key = dicomDIR.GetRootKey(seriesKey); 
      //Get the key value, You can also call GetKeyValuePtr 
      DicomDirKeyType keyValue = dicomDIR.GetKeyValue(key); 
      //The root key for the series key should be patient 
      Debug.Assert(keyValue == DicomDirKeyType.Patient, "The root key for the series key should be patient in this case"); 
      //Get the parent key for the series, it should be study 
      key = dicomDIR.GetParentKey(seriesKey); 
      keyValue = dicomDIR.GetKeyValue(key); 
      Debug.Assert(keyValue == DicomDirKeyType.Study, "The parent key for the series key should be study in this case"); 
      //The child for the study key should be series 
      key = dicomDIR.GetChildKey(studyKey); 
      keyValue = dicomDIR.GetKeyValue(key); 
      Debug.Assert(keyValue == DicomDirKeyType.Series, "The child for the study key should be series"); 
      //The first key should be patient, if we traverse the DICOMDIR as a list 
      key = dicomDIR.GetFirstKey(studyKey, false); 
      keyValue = dicomDIR.GetKeyValue(key); 
      Debug.Assert(keyValue == DicomDirKeyType.Patient); 
      //The last key should be series, if we traverse the DICOMDIR as a list 
      key = dicomDIR.GetLastKey(studyKey, false); 
      keyValue = dicomDIR.GetKeyValue(key); 
      Debug.Assert(keyValue == DicomDirKeyType.Series); 
      //The key before the study key should be patient, if we traverse the DICOMDIR as a list 
      key = dicomDIR.GetPreviousKey(studyKey, false); 
      keyValue = dicomDIR.GetKeyValue(key); 
      Debug.Assert(keyValue == DicomDirKeyType.Patient); 
      //The key after the study key should be series, if we traverse the DICOMDIR as a list 
      key = dicomDIR.GetNextKey(studyKey, false); 
      keyValue = dicomDIR.GetKeyValue(key); 
      Debug.Assert(keyValue == DicomDirKeyType.Series); 
      //If we delete the study key, the series keys under it will get deleted too 
      dicomDIR.DeleteKey(studyKey); 
      key = dicomDIR.FindFirstKey(null, DicomDirKeyType.Series, false); 
      Debug.Assert(key == null); 
      key = dicomDIR.FindLastKey(null, DicomDirKeyType.Series, false); 
      Debug.Assert(key == null); 
      key = dicomDIR.FindPreviousKey(null, false); 
      Debug.Assert(key == null); 
      key = dicomDIR.FindNextKey(null, false); 
      Debug.Assert(key == null); 
   } 
   DicomEngine.Shutdown(); 
} 
Requirements

Target Platforms

Help Version 23.0.2024.8.20
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Dicom Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.