Inserts a new key element in the Dicom Dir Data Set.
#include "ltdic.h"
L_LTDIC_API pDICOMELEMENT L_DicomInsertKey(hDS, pParent, pszKey, bOptional)
A DICOM handle.
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.
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 |
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. |
Value | Meaning |
---|---|
!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.
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;
}