DYT/Tool/3rdParty_x64/include/dcmtk/dcmiod/modhelp.h
2024-11-22 23:19:31 +08:00

211 lines
9.2 KiB
C++

/*
*
* Copyright (C) 2015, Open Connections GmbH
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation are maintained by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmiod
*
* Author: Michael Onken, Andriy Fedorov
*
* Purpose: Helper functions for copying common modules between datasets
*
*/
#ifndef MODHELP_H
#define MODHELP_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/ofstd/oftypes.h"
#include "dcmtk/dcmiod/ioddef.h"
// forward declarations
class DcmTagKey;
class DcmItem;
/** This class contains helper functions that permit copying common modules
* from DICOM standard part 3 between DICOM datasets.
* @note The attribute lists per module are taken from the final text version
* of DICOM 2013.
*/
class DCMTK_DCMIOD_EXPORT DcmModuleHelpers {
protected:
/// Generic copy module helper method.
template<size_t N>
static inline void copyModule(const DcmTagKey (&tags)[N],
DcmItem& src, DcmItem& dest);
/// List of tags within the Patient Module
static const DcmTagKey patientModuleTags[];
/// List of tags within the Clinical Trial Subject Module
static const DcmTagKey clinicalTrialSubjectModuleTags[];
/// List of tags within the General Study Module
static const DcmTagKey generalStudyModuleTags[];
/// List of tags within the Patient Study Module
static const DcmTagKey patientStudyModuleTags[];
/// List of tags within the Clinical Trial Study Module
static const DcmTagKey clinicalTrialStudyModuleTags[];
/// List of tags within the General Series Module
static const DcmTagKey generalSeriesModuleTags[];
/// List of tags within the Clinical Trial Series Module
static const DcmTagKey clinicalTrialSeriesModuleTags[];
/// List of tags within the General Equipment Module
static const DcmTagKey generalEquipmentModuleTags[];
/// List of tags within the Frame of Reference Module
static const DcmTagKey frameOfReferenceModuleTags[];
/// List of tags within the SOP Common Module, excluding Digital Signatures
/// Macro, i.e.\ MAC Parameters Sequence and Digital Signatures Sequence
static const DcmTagKey sopCommonModuleTags[];
/// List of tags within the General Image Module
static const DcmTagKey generalImageModuleTags[];
public:
/** Copy element defined by tag from source item to destination item.
* No in-depth search is performed but only the main level is searched
* for the given tag. If the tag is not found, the destination item
* is not touched at all.
* @param tag Tag key of the element to be copied
* @param src Item that serves as a source for copying the element.
* In typical image objects, this will be the main dataset.
* @param dest Item that serves as a destination for inserting the
* copied element, if found.
*/
static void copyElement(const DcmTagKey& tag, DcmItem& src, DcmItem& dest);
/** Copy Patient Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyPatientModule(DcmItem& src, DcmItem& dest);
/** Copy Clinical Trial Subject Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyClinicalTrialSubjectModule(DcmItem& src, DcmItem& dest);
/** Copy General Study Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyGeneralStudyModule(DcmItem& src, DcmItem& dest);
/** Copy Patient Study Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyPatientStudyModule(DcmItem& src, DcmItem& dest);
/** Copy Clinical Trial Study Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyClinicalTrialStudyModule(DcmItem& src, DcmItem& dest);
/** Copy General Series Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyGeneralSeriesModule(DcmItem& src, DcmItem& dest);
/** Copy Clinical Trial Series Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyClinicalTrialSeriesModule(DcmItem& src, DcmItem& dest);
/** Copy General Equipment Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyGeneralEquipmentModule(DcmItem& src, DcmItem& dest);
/** Copy Frame of Reference Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyFrameOfReferenceModule(DcmItem& src, DcmItem& dest);
/** Copy SOP Common Module attributes.
* Excludes: Digital Signatures Macro, i.e.\ MAC Parameters Sequence and
* Digital Signatures Sequence.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copySOPCommonModule(DcmItem& src, DcmItem& dest);
/** Copy General Image Module attributes.
* @param src Item to copy module from. Only the main level is searched,
* i.e.\ no in-depth search is performed on the various tags.
* @param dest Item to copy module to. An element not found within
* the source item will neither be created in the destination
* item, nor will any existing value be touched in the
* destination item.
*/
static void copyGeneralImageModule(DcmItem& src, DcmItem& dest);
};
#endif // MODHELP_H