L_DicomGetLastElement

#include "Ltdic.h"

L_LTDIC_API pDICOMELEMENT L_DicomGetLastElement(hDS, pElement, bTree, bVolatile)

HDICOMDS hDS;

/* a DICOM handle */

pDICOMELEMENT pElement;

/* pointer to a DICOMELEMENT structure */

L_BOOL bTree;

/* flag that indicates how to evaluate the Data Set */

L_BOOL bVolatile;

/* flag that indicates the type of element to retrieve */

Returns a pointer to the last item in the Data Set.

Parameter

Description

hDS

A DICOM handle.

pElement

Pointer to a DICOMELEMENT structure within the Data Set. A pointer to the DICOMELEMENT structure that contains the last item in the Data Set will be returned.

bTree

Flag that indicates how the Data Set will be evaluated. Possible values are:

 

Value

Meaning

 

TRUE

Evaluate the Data Set as a tree.

 

FALSE

Evaluate the Data Set as a list.

bVolatile

Flag that indicates the type of element to retrieve. Possible values are:

 

Value

Meaning

 

TRUE

Retrieve the last element, volatile or non-volatile.

 

FALSE

Retrieve the last non-volatile element.

Returns

!NULL

A pointer to a DICOMELEMENT structure that contains the last item in the Data Set.

NULL

The Data Set is empty.

Comments

If the Data Set is evaluated as a tree structure, this function returns the last item on the same level as pElement with the same parent as pElement. Please note that the numbering of the items in this illustration is arbitrary and does not imply order.

image\GetLstTr.gif

If the passed pointer points to :

The function returns a pointer to :

Item 1

Item 2

Item 3

Item 4

Item 5

Item 5

Item 6

Item 7

NULL

Item 2

 

If the Data Set is evaluated as a list, the last item in the list is returned. Please note that the numbering of the items in this illustration does indicate the order of the items when the Data Set is evaluated as a list.

image\GetLtLst.gif

If the passed pointer points to :

The function returns a pointer to :

NULL

Item 30

Item 12

Item 30

Item 14

Item 30

Item 22

Item 30

Item 25

Item 30

The following functions will also help you navigate the Data Set as either a tree or a list:

L_DicomGetFirstElement

L_DicomGetPrevElement

L_DicomGetNextElement

If you evaluate the Data Set as a tree, you can also use the following functions to navigate the tree:

L_DicomGetRootElement

L_DicomGetParentElement

L_DicomGetChildElement

A volatile element is an element that can be changed or destroyed in the process of inserting or setting an image. A non-volatile element is an element that must be changed manually. It is not changed or destroyed by inserting or setting an image.

For example, a grayscale image has elements TAG_SMALLEST_IMAGE_PIXEL_VALUE, TAG_LARGEST_IMAGE_PIXEL_VALUE, etc. If the image is changed to a color image, these elements disappear and the following elements appear: TAG_RED_PALETTE_COLOR_LOOKUP_TABLE_DESCRIPTOR, etc. These are volatile elements since they are changed or destroyed when an image is changed or set.

To retrieve the last element that must be changed manually, i.e. is not volatile, set bVolatile to FALSE. To retrieve the last element, either volatile or non-volatile, set bVolatile to TRUE.

Required DLLs and Libraries

LTDIC

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application

See Also

Functions:

L_DicomGetFirstElement, L_DicomGetPrevElement, L_DicomGetNextElement, L_DicomGetCountModule, L_DicomGetRootElement, L_DicomGetParentElement, L_DicomGetChildElement, L_DicomIsVolatileElement

Topics:

Working with Data Sets

Example

The first example displays the name of the last element in the current level. The second example displays the name of the last element in the Data Set.

L_INT DicomGetLastElementExample1(L_VOID)
{
   HDICOMDS       hDS;
   pDICOMELEMENT  pLast;
   pDICOMELEMENT  pElement;
   pDICOMTAG      pTag;
   L_TCHAR         szUnknown[]=TEXT("Unknown");
   L_TCHAR        *p;

   hDS = L_DicomCreateDS(NULL);

   L_DicomInitDS(hDS, CLASS_XA_BIPLANE_IMAGE_STORAGE_RETIRED, 0); 

   pElement = L_DicomFindFirstElement(hDS, NULL, TAG_RADIATION_SETTING, FALSE);
   if (pElement != NULL)
   {
      pLast = L_DicomGetLastElement(hDS, pElement, TRUE, FALSE);

      pTag = L_DicomFindTag(pLast->nTag);
      if (pTag != NULL)
      {
         p = pTag->pszName;
      }
      else
      {
         p = szUnknown;
      }

      MessageBox(NULL, p, TEXT("Notice"), MB_OK);
   }

   L_DicomFreeDS(hDS);
   return DICOM_SUCCESS;
}

L_INT DicomGetLastElementExample2(L_VOID)
{
   HDICOMDS       hDS;
   pDICOMELEMENT  pLast;
   pDICOMELEMENT  pElement;
   pDICOMTAG      pTag;
   L_TCHAR         szUnknown[]=TEXT("Unknown");
   L_TCHAR        *p;

   hDS = L_DicomCreateDS(NULL);

   L_DicomInitDS(hDS, CLASS_XA_BIPLANE_IMAGE_STORAGE_RETIRED, 0); 

   pElement = L_DicomFindFirstElement(hDS, NULL, TAG_RADIATION_SETTING, FALSE);
   if (pElement != NULL)
   {
      pLast = L_DicomGetLastElement(hDS, pElement, FALSE, FALSE);

      pTag = L_DicomFindTag(pLast->nTag);
      if (pTag != NULL)
      {
         p = pTag->pszName;
      }
      else
      {
         p = szUnknown;
      }

      MessageBox(NULL, p, TEXT("Notice"), MB_OK);
   }

   L_DicomFreeDS(hDS);
   return DICOM_SUCCESS;
}