#include "ltdic.h"
L_LTDIC_API pDICOMELEMENT L_DicomInsertKey(hDS, pParent, pszKey, bOptional)
HDICOMDS hDS; |
a DICOM handle |
pDICOMELEMENT pParent; |
pointer to a DICOMELEMENT structure |
L_TCHAR * pszKey; |
type of key element to insert |
L_BOOL bOptional; |
flag that indicates which elements to insert |
Inserts a new key element in the Dicom Dir Data Set.
Parameter | Description | |
hDS | A DICOM handle. | |
pParent | Pointer to a DICOMELEMENT structure that contains a key element in the Data Set. The new key element will be inserted as a child of this key element. | |
pszKey | Character string that contains the type of key element to insert. Possible values are: | |
Value | Meaning | |
"PATIENT" | Patient key element | |
"STUDY" | Study key element | |
"SERIES" | Series key element | |
"IMAGE" | Image key element | |
"OVERLAY" | Overlay key element | |
"MODALITY LUT" | Modality-LUT key element | |
"VOI LUT" | VOI-LUT key element | |
"CURVE" | Curve key element | |
"STORED PRINT" | Stored print key element | |
"RT DOSE" | RT dose key element | |
"RT STRUCTURE SET" | RT structure set key element | |
"RT PLAN" | RT plan key element | |
"RT TREAT RECORD" | RT treatment record key element | |
"TOPIC" | Topic key element | |
"VISIT" | Visit key element | |
"RESULTS" | Results key element | |
"INTERPRETATION" | Interpretation key element | |
"STUDY COMPONENT" | Study Component key element | |
"PRESENTATION" | Presentation key element | |
"WAVEFORM" | Waveform key element | |
"SR DOCUMENT" | Structured Reporting Document key element | |
"PRIVATE" | Private key element | |
"KEY OBJECT DOC" | Key Object Document key element | |
"SPECTROSCOPY" | Spectroscopy key element | |
"RAW DATA" | Raw Data key element | |
"REGISTRATION" | Registration key element | |
"FIDUCIAL" | Fiducial key element | |
"HANGING PROTOCOL" | Hanging key element | |
"ENCAP DOC" | Encapsulated Document key element | |
"HL7 STRUC DOC" | HL7 Structured Document key element | |
"VALUE MAP" | Real World Value Mapping key element | |
"STEREOMETRIC" | Stereometric Relationship key element | |
bOptional | Flag that indicates which parts of the key element to insert. Possible values are: | |
Value | Meaning | |
TRUE | Insert all parts of the specified key element. | |
FALSE | Insert only the mandatory parts of the specified key element. |
!NULL |
A pointer to a DICOMELEMENT structure containing the newly inserted item. |
NULL |
Not enough memory to insert the item. |
The newly inserted key element is inserted as a child of pParent.
Required DLLs and Libraries
For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application |
Win32, x64, Linux.
L_INT DicomInsertKeyExample(L_VOID)
{
L_INT x;
L_TCHAR szOut[200];
L_TCHAR * pVal=NULL;
HDICOMDS hDS=NULL;
pDICOMELEMENT pKey=NULL;
pDICOMELEMENT pElement=NULL;
hDS = L_DicomCreateDS(NULL);
L_DicomInitDS(hDS, CLASS_UNKNOWN, 0);
/* insert some keys */
pKey = L_DicomInsertKey(hDS, NULL, TEXT("PATIENT"), TRUE); /* insert PATIENT level key */
if (pKey == NULL)
{
L_DicomFreeDS(hDS);
return DICOM_ERROR_MEMORY;
}
pKey = L_DicomInsertKey(hDS, pKey, TEXT("STUDY"), TRUE); /* insert STUDY level key */
if (pKey == NULL)
{
L_DicomFreeDS(hDS);
return DICOM_ERROR_MEMORY;
}
/* insert 5 SERIES level keys and some data */
for(x=1; x<=5; x++)
{
wsprintf(szOut, TEXT("%d"), x);
pKey = L_DicomInsertKey(hDS, pKey, TEXT("SERIES"), TRUE);
if (pKey == NULL)
{
L_DicomFreeDS(hDS);
return DICOM_ERROR_MEMORY;
}
pElement = L_DicomGetChildElement(hDS, pKey, FALSE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
if (!L_DicomSetStringValue(hDS, pElement, szOut, 1, DICOM_CHARACTER_SET_DEFAULT))
{
L_DicomFreeDS(hDS);
return FAILURE - 1;
}
pKey = L_DicomGetParentKey(hDS, pKey); /*move back up one level */
}
/* move to root key */
pKey = L_DicomGetRootKey(hDS, pKey); /* PATIENT level */
MessageBox(NULL, L_DicomGetValueKey(hDS, pKey), TEXT("Test"), MB_OK);
/* move to SERIES level */
pKey = L_DicomGetChildKey(hDS, pKey); /*STUDY*/
pKey = L_DicomGetChildKey(hDS, pKey); /*SERIES*/
/* find first SERIES */
pKey = L_DicomFindFirstKey(hDS, pKey, TEXT("SERIES"), TRUE);
pElement = L_DicomGetChildElement(hDS, pKey, TRUE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
pVal = L_DicomGetStringValue(hDS, pElement, 0, 1);
MessageBox(NULL, pVal, TEXT("Test"), MB_OK);
/* find next series */
pKey = L_DicomFindNextKey(hDS, pKey, TRUE);
pElement = L_DicomGetChildElement(hDS, pKey, TRUE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
pVal = L_DicomGetStringValue(hDS, pElement, 0, 1);
MessageBox(NULL, pVal, TEXT("Test"), MB_OK);
/* find last SERIES */
pKey = L_DicomFindLastKey(hDS, pKey, TEXT("SERIES"), TRUE);
pElement = L_DicomGetChildElement(hDS, pKey, TRUE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
pVal = L_DicomGetStringValue(hDS, pElement, 0, 1);
MessageBox(NULL, pVal, TEXT("Test"), MB_OK);
/* find previous SERIES */
pKey = L_DicomFindPrevKey(hDS, pKey, TRUE);
pElement = L_DicomGetChildElement(hDS, pKey, TRUE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
pVal = L_DicomGetStringValue(hDS, pElement, 0, 1);
MessageBox(NULL, pVal, TEXT("Test"), MB_OK);
/* find last SERIES and delete it */
pKey = L_DicomFindLastKey(hDS, pKey, TEXT("SERIES"), TRUE);
L_DicomDeleteKey(hDS, pKey);
/* move to root key */
pKey = L_DicomGetFirstKey(hDS, NULL, FALSE);
MessageBox(NULL, L_DicomGetValueKey(hDS, pKey), TEXT("Test"), MB_OK);
/* move to SERIES level */
pKey = L_DicomGetChildKey(hDS, pKey); /*STUDY*/
pKey = L_DicomGetChildKey(hDS, pKey); /*SERIES*/
/* move to first SERIES */
pKey = L_DicomGetFirstKey(hDS, pKey, TRUE);
pElement = L_DicomGetChildElement(hDS, pKey, TRUE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
pVal = L_DicomGetStringValue(hDS, pElement, 0, 1);
MessageBox(NULL, pVal, TEXT("Test"), MB_OK);
/* move to next series */
pKey = L_DicomGetNextKey(hDS, pKey, TRUE);
pElement = L_DicomGetChildElement(hDS, pKey, TRUE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
pVal = L_DicomGetStringValue(hDS, pElement, 0, 1);
MessageBox(NULL, pVal, TEXT("Test"), MB_OK);
/* move to last SERIES */
pKey = L_DicomGetLastKey(hDS, pKey, TRUE);
pElement = L_DicomGetChildElement(hDS, pKey, TRUE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
pVal = L_DicomGetStringValue(hDS, pElement, 0, 1);
MessageBox(NULL, pVal, TEXT("Test"), MB_OK);
/* move to previous SERIES */
pKey = L_DicomGetPrevKey(hDS, pKey, TRUE);
pElement = L_DicomGetChildElement(hDS, pKey, TRUE);
pElement = L_DicomFindFirstElement(hDS, pElement, TAG_REFERENCED_FILE_ID, TRUE);
pVal = L_DicomGetStringValue(hDS, pElement, 0, 1);
MessageBox(NULL, pVal, TEXT("Test"), MB_OK);
L_DicomFreeDS(hDS);
return DICOM_SUCCESS;
}