L_DicomInsertIOD

#include "Ltdic.h"

L_LTDIC_API pDICOMIOD L_DicomInsertIOD(pNeighbor, bChild, nCode, pszName, nType, nUsage, pszDescription)

pDICOMIOD pNeighbor;

/* pointer to a DICOMIOD structure */

L_BOOL bChild;

/* flag that indicates where to insert the item */

L_UINT32 nCode;

/* code */

L_TCHAR * pszName;

/* name of the inserted item */

L_UCHAR nType;

/* type */

L_UINT16 nUsage;

/* usage */

L_TCHAR * pszDescription;

/* description */

Inserts a new item in the IOD Structure.

Parameter

Description

pNeighbor

Pointer to a DICOMIOD structure that contains an item in the IOD Structure. The inserted item will be inserted as a neighbor to this item, or as a child, depending on the value of bChild.

bChild

Flag that indicates where to insert the item. Possible values are:

 

Value

Meaning

 

TRUE

The new item will be inserted as the last child of pNeighbor.

 

FALSE

The new item will be inserted as the last sibling of pNeighbor.

nCode

Code value that indicates which Information Object Definition you are inserting. The information object may be a Class, a Module or a Tag. For lists of default values, refer to Data Element Tag Constants, IOD Class Constants, and IOD Module Constants.

 

pszName

Character string that contains the name of the inserted item.

nType

The type of Information Object Definition you are working with. Possible values are:

 

Value

Meaning

 

IOD_TYPE_CLASS

[0x00] Class type Information Object Definition.

 

IOD_TYPE_MODULE

[0x01] Module type Information Object Definition.

 

IOD_TYPE_ELEMENT

[0x02] Element type Information Object Definition.

nUsage

Value that indicates whether the Information Object is mandatory, conditional or optional, and the type of usage. For a list of possible values, refer to IOD Usage Constants. For more information on mandatory, conditional and optional usage, refer to An Overview of Dicom or the DICOM Spec.

pszDescription

Character string that contains a description of the inserted Information Object Definition.

Returns

!NULL

A pointer to a DICOMIOD structure containing the newly inserted item.

NULL

Not enough memory to insert the item.

Comments

The illustrations below show how items are added to the IOD Structure (internally maintained as a tree), based on the value of bChild.

For the sake of these illustrations, the order of siblings is top to bottom. Therefore, since added items become the last sibling or the last child, these are drawn at the bottom of the appropriate group of items.

In this illustration, pNeighbor points to Item 1 and bChild is False. The new item is added as the last sibling of Item 1.

image\IODIsSib.gif

In this illustration, pNeighbor points to Item 1 and bChild is True. The new item is added as the last child of Item 1.

image\IODIsChd.gif

 

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

Platforms

Win32, x64

See Also

Functions:

L_DicomDeleteIOD, L_DicomResetIOD, L_DicomDefaultIOD, L_DicomInsertIOD, L_DicomLoadXmlIOD

Topics:

Working with Unique Identifiers

 

How to Disable the Automatic Loading of the default DICOM IOD Table

Example

This example inserts a new class in the IOD table

L_INT DicomInsertIODExample(L_VOID)
{
   pDICOMIOD pClass;
   pDICOMIOD pModule;
   pDICOMIOD pElement;

   /* Inserts a new class */
   pClass = L_DicomInsertIOD(NULL, FALSE, 7000, TEXT("New Class"), IOD_TYPE_CLASS, 0, TEXT(""));
   if (pClass == NULL)
      return DICOM_ERROR_MEMORY;

   /* Inserts a module in the class */
   pModule = L_DicomInsertIOD(pClass, TRUE, 7000, TEXT("AAA Module"), IOD_TYPE_MODULE,
                              IOD_USAGE_M, TEXT("This is a module"));
   if (pModule == NULL)
      return DICOM_ERROR_MEMORY;

   /* Inserts an element in the module */
   pElement = L_DicomInsertIOD(pModule, TRUE, TAG_CONTENT_DATE, TEXT("XXX Element"), IOD_TYPE_MODULE,
                               IOD_USAGE_1, TEXT("This is an element"));
   if (pElement == NULL)
      return DICOM_ERROR_MEMORY;

   /* Inserts an element in the module */
   pElement = L_DicomInsertIOD(pModule, TRUE, TAG_INSTITUTION_NAME, TEXT("YYY Element"),
                               IOD_TYPE_MODULE, IOD_USAGE_3, TEXT("This is an element"));
   if (pElement == NULL)
      return DICOM_ERROR_MEMORY;

   return DICOM_SUCCESS;
}