DCMTK
Version 3.6.3
OFFIS DICOM Toolkit
|
Class with helper functions used within the dcmiod module (and beyond) More...
Static Public Member Functions | |
static OFCondition | getAndCheckElementFromDataset (DcmItem &dataset, DcmElement &delem, const OFString &vm, const OFString &type, const char *moduleName=NULL) |
Get element from dataset and check it for correct value multiplicity and type. More... | |
static OFCondition | getAndCheckElementFromDataset (DcmItem &dataset, const DcmTagKey &tagKey, DcmElement *&delem, const OFString &vm, const OFString &type, const char *moduleName=NULL) |
Get element from dataset and check it for correct value multiplicity and type. More... | |
static OFCondition | getAndCheckElementFromDataset (DcmItem &dataset, DcmElement &delem, const IODRule *rule) |
Get element from dataset and check it for correct value multiplicity and type. More... | |
static OFCondition | getAndCheckElementFromDataset (DcmItem &dataset, DcmElement *&delem, const IODRule *rule) |
Get element from dataset and check it for correct value multiplicity and type. More... | |
static const OFString & | currentDate (OFString &dateString) |
Get current date in DICOM 'DA' format (YYYYMMDD) More... | |
static const OFString & | currentTime (OFString &timeString) |
Get current time in DICOM 'TM' format (HHMMSS) The optional UTC notation (e.g. +0100) is currently not supported. More... | |
static OFCondition | copyElementToDataset (OFCondition &result, DcmItem &dataset, const DcmElement &delem, const OFString &vm, const OFString &type, const char *moduleName=NULL) |
Copy given element to the dataset The element is only added if 'result' is EC_Normal. More... | |
static OFCondition | copyElementToDataset (OFCondition &result, DcmItem &dataset, const DcmElement &delem, const IODRule *rule) |
Copy given element to the dataset. More... | |
static OFCondition | addElementToDataset (OFCondition &result, DcmItem &dataset, DcmElement *delem, const IODRule *rule) |
Add given element to the dataset The element is only added if 'result' is EC_Normal and the 'delem' pointer is not NULL. More... | |
static OFCondition | checkElementValue (const DcmElement *delem, const DcmTagKey &tagKey, const OFString &vm, const OFString &type, const OFCondition &searchCond=EC_Normal, const char *moduleName=NULL, const dcmtk::log4cplus::LogLevel logLevel=dcmtk::log4cplus::WARN_LOG_LEVEL) |
Check element value for correct value multiplicity and type. More... | |
static OFCondition | checkElementValue (const DcmElement &delem, const OFString &vm, const OFString &type, const OFCondition &searchCond=EC_Normal, const char *moduleName=NULL, const dcmtk::log4cplus::LogLevel logLevel=dcmtk::log4cplus::WARN_LOG_LEVEL) |
Check element value for correct value multiplicity and type. More... | |
static OFCondition | getStringValueFromElement (const DcmElement &delem, OFString &stringValue, const signed long pos) |
Get string value from element. More... | |
static OFCondition | getStringValueFromItem (const DcmTagKey &key, DcmItem &item, OFString &result, const signed long &pos) |
Get string value from item. More... | |
static OFCondition | getFloat64ValueFromItem (const DcmTagKey &key, DcmItem &item, Float64 &result, const unsigned long &pos) |
Get Float64 value from item. More... | |
static OFCondition | getFloat64ValuesFromItem (const DcmTagKey &key, DcmItem &item, OFVector< Float64 > &result) |
Get Float64 values from item. More... | |
static OFCondition | getFloat64ValueFromElement (const DcmElement &delem, Float64 &result, const unsigned long pos) |
Get Float64 value from element. More... | |
static OFCondition | getFloat64ValuesFromElement (const DcmElement &delem, OFVector< Float64 > &result) |
Get Float64 values from element. More... | |
static OFCondition | setUint16ValuesOnElement (DcmElement &delem, const OFVector< Uint16 > &values, const OFString &vm, const OFBool check) |
Set a DcmElement's content from Uint16 vector. More... | |
static OFCondition | getUint16ValuesFromElement (DcmElement &delem, OFVector< Uint16 > &values) |
Get Uint16 values from DcmElement. More... | |
static OFCondition | getAndCheckSingleItem (DcmSequenceOfItems &seq, DcmItem *&item, const DcmTagKey &checkKey=DCM_UndefinedTagKey) |
Returns single item from given sequence. More... | |
template<class Container > | |
static OFCondition | copyFromUint8Array (DcmElement *elem, Container &destination) |
Copies Uint8 values from given element to destination container (must support push_back() method). More... | |
static OFCondition | checkSOPClass (DcmItem *item, const OFString &desiredSOPClass, OFString &valueFound) |
Check whether SOP class UID matches the expected value. More... | |
static OFBool | isSequenceTag (const DcmTagKey &key, const OFString &privateCreator="") |
Check whether given tag is a sequence tag. More... | |
template<class Container > | |
static OFCondition | readSubSequence (DcmSequenceOfItems *source, const DcmTagKey &seqKey, Container &destination, const OFString &cardinality, const OFString &type, const OFString &module) |
Reads items from DICOM sequence into container by creating a dedicated container item for each DICOM item. More... | |
template<class Container > | |
static OFCondition | readSubSequence (DcmItem &source, const DcmTagKey &seqKey, Container &destination, const OFString &cardinality, const OFString &type, const OFString &module) |
Reads DICOM sequence into container by creating a dedicated container element for each DICOM item. More... | |
template<class Container > | |
static OFCondition | readSubSequence (DcmItem &source, const DcmTagKey &seqKey, Container &destination, IODRule *rule) |
Reads DICOM sequence into container by creating a dedicated container element for each DICOM item. More... | |
template<class Container > | |
static OFCondition | readSingleItem (DcmItem &source, const DcmTagKey &seqKey, Container &destination, const OFString &type, const OFString &module) |
Reads single DICOM item from a specific sequence into a destination class. More... | |
template<class Container > | |
static OFCondition | readSingleItem (DcmItem &source, const DcmTagKey &seqKey, Container &destination, IODRule *rule=NULL) |
Reads single DICOM item from a specific sequence into a destination class. More... | |
template<class Container > | |
static void | writeSubSequence (OFCondition &result, const DcmTagKey &seqKey, Container &source, DcmItem &destination, const OFString &cardinality, const OFString &type, const OFString &module) |
Write given container into a DICOM sequence that is created within the given item. More... | |
template<class Container > | |
static void | writeSubSequence (OFCondition &result, const DcmTagKey &seqKey, Container &source, DcmItem &destination, IODRule *rule) |
Write given container into a DICOM sequence that is created within the given item. More... | |
template<class Container > | |
static void | writeSingleItem (OFCondition &result, const DcmTagKey &seqKey, Container &source, DcmItem &destination, const OFString &type, const OFString &module) |
Writes given container into a DICOM item of a specific sequence. More... | |
template<class Container > | |
static void | writeSingleItem (OFCondition &result, const DcmTagKey &seqKey, Container &source, DcmItem &destination, IODRule *rule) |
Writes given container into a DICOM item of a specific sequence. More... | |
static void | checkSubSequence (OFCondition &result, DcmItem &surroundingItem, const DcmTagKey &seqKey, const OFString &cardinality, const OFString &type, const OFString &module, const dcmtk::log4cplus::LogLevel logLevel) |
Check whether a given sequence exists in a given item and whether it conforms to to its requirement type. More... | |
template<class Container > | |
static void | freeContainer (Container &container) |
Deletes all elements from given container and calls "delete" on each of them to clear memory. More... | |
template<class Container > | |
static void | copyContainer (const Container &src, Container &dst) |
Clones and copies all elements from source to destination container by copy constructing all elements. More... | |
static const DcmTagKey | parseTagKey (const OFString &keyString) |
Function that takes a string representation of a tag key and converts it to a tag key instance if possible. More... | |
static OFCondition | decompress (DcmDataset &dset) |
Decompress given dataset if possible. More... | |
static OFString | createUID (const Uint8 level=0) |
Create new Unique Identifier (UID) More... | |
static Uint16 | limitMaxFrames (const size_t numFramesPresent, const OFString &warning) |
Print warning if more than 65535 frames are present. More... | |
Private Member Functions | |
DcmIODUtil () | |
Undefined default constructor (only static functions) | |
~DcmIODUtil () | |
Undefined destructor. | |
Class with helper functions used within the dcmiod module (and beyond)
|
static |
Add given element to the dataset The element is only added if 'result' is EC_Normal and the 'delem' pointer is not NULL.
result | Reference to status variable (checked before adding and updated afterwards!) |
dataset | Reference to DICOM dataset to which the element should be added |
delem | Pointer to DICOM element which should be added. The element is always consumed by this function, i.e. insertion was successful and therefore ownership is transferred to the dataset, or the element is deleted from memory if it could not be inserted. |
rule | Rule describing parameters to be checked on element. |
|
static |
Check element value for correct value multiplicity and type.
delem | Pointer to DICOM element to be checked (might be NULL) |
tagKey | DICOM tag of the DICOM element the parameter 'delem' points to |
vm | Value multiplicity (according to the data dictionary) to be checked for. (See DcmElement::checkVM() for a list of valid values.) Interpreted as cardinality (number of items) for sequence attributes. |
type | Value type (valid value: "1", "1C", "2", something else) |
searchCond | Optional flag indicating the status of a previous 'search' function call |
moduleName | Optional module name to be printed (default: "IOD" if NULL) |
logLevel | The log level to log errors to |
|
static |
Check element value for correct value multiplicity and type.
delem | DICOM element to be checked |
vm | Value multiplicity (according to the data dictionary) to be checked for. (See DcmElement::checkVM() for a list of valid values.) Interpreted as cardinality (number of items) for sequence attributes. |
type | Value type (valid value: "1", "1C", "2", something else) |
searchCond | Optional flag indicating the status of a previous 'search' function call |
moduleName | Optional module name to be printed (default: "IOD" if NULL) |
logLevel | The log level to log errors to |
|
static |
Check whether SOP class UID matches the expected value.
item | Item to read from. NULL value causes error return value. |
desiredSOPClass | The value that is expected |
valueFound | The value actually found (empty if no value could be retrieved) |
|
static |
Check whether a given sequence exists in a given item and whether it conforms to to its requirement type.
result | If sequence is valid, result is set to EC_Normal, otherwise to an error. |
surroundingItem | The item that should contain the given sequence. |
seqKey | The sequence to look for |
cardinality | Expected number of items (i.e. expected number of elements in source container). See DcmElement::checkVM() for a list of valid values. |
type | The sequence type as noted in part 3 of the DICOM standard, i.e. "1,1C,2,2C or 3". |
module | Name of the module/macro this sequence is contained in. Used for error messages and can also be left empty. |
logLevel | The log level to write errors to |
|
inlinestatic |
Clones and copies all elements from source to destination container by copy constructing all elements.
src | The container that should be copied. Must contain pointers to objects that are allocated on the heap, and that are copy-constructible |
dst | The container to copy the cloned elements to. |
|
static |
Copy given element to the dataset The element is only added if 'result' is EC_Normal.
A copy of the given element is created, i.e. the caller is responsible for deleting the original element handed to this function (if desired).
result | Reference to status variable (checked before adding and updated afterwards!) |
dataset | Reference to DICOM dataset to which the element should be added |
delem | Reference to DICOM element which should be added; a copy is created so caller is responsible for deleting delem (if desired). |
vm | Value multiplicity (according to the data dictionary) to be checked for. (See DcmElement::checkVM() for a list of valid values.). Interpreted as cardinality (number of items) for sequence attributes. |
type | Value type (valid value: "1", "2" or something else which is not checked) |
moduleName | Optional module name to be printed (NULL: no module printed at all) |
|
static |
Copy given element to the dataset.
The element is only added if 'result' is EC_Normal.
result | reference to status variable (checked before adding and updated afterwards!) |
dataset | reference to DICOM dataset to which the element should be added |
delem | reference to DICOM element which should be added; the value is copied from the original dataset's element |
rule | Rule describing parameters to be checked on element. |
|
inlinestatic |
Copies Uint8 values from given element to destination container (must support push_back() method).
elem | the element to read from. If NULL, an error is returned. |
destination | the container to store the Uint8 values to |
References EC_IllegalParameter, DcmElement::getUint8(), DcmObject::getVM(), and OFCondition::good().
|
static |
Create new Unique Identifier (UID)
level | 0: instance level, 1: Series level, >=2: Study level. Calling always with level=0 is not an error but will result in unique values, too. |
Get current date in DICOM 'DA' format (YYYYMMDD)
dateString | String used to store the current date. (empty string if current date could not be retrieved) |
Get current time in DICOM 'TM' format (HHMMSS) The optional UTC notation (e.g. +0100) is currently not supported.
timeString | String used to store the current time (empty string if current time could not be retrieved) |
|
static |
Decompress given dataset if possible.
Decompression codecs have to be registered beforehand.
dset | The dataset to decompress |
|
inlinestatic |
Deletes all elements from given container and calls "delete" on each of them to clear memory.
container | The container that should be cleared. Must contain pointers to objects that are allocated on the heap. |
|
static |
Get element from dataset and check it for correct value multiplicity and type.
dataset | DICOM dataset from which the element should be retrieved. (Would be 'const' if the methods from 'dcmdata' would also (be 'const'.) |
delem | DICOM element used to store the value (always creates a copy of the dataset element's value) |
vm | Value multiplicity (according to the data dictionary) to be checked for. (See DcmElement::checkVM() for a list of valid values.) Interpreted as cardinality (number of items) for sequence attributes. |
type | Value type (valid value: "1", "1C", "2", something else which is not checked) |
moduleName | Optional module name to be printed (NULL: no module printed at all) |
|
static |
Get element from dataset and check it for correct value multiplicity and type.
dataset | DICOM dataset from which the element should be retrieved. (Would be 'const' if the methods from 'dcmdata' would also be 'const') |
tagKey | Tag key of the element to get |
delem | DICOM element that is set to a copy of the dataset's orinal element |
vm | Value multiplicity (according to the data dictionary) to be checked for. (See DcmElement::checkVM() for a list of valid values.) Interpreted as cardinality (number of items) for sequence attributes. |
type | Value type (valid value: "1", "1C", "2", something else which is not checked) |
moduleName | Optional module name to be printed (NULL: no module printed at all) |
|
static |
Get element from dataset and check it for correct value multiplicity and type.
dataset | DICOM dataset from which the element should be retrieved. (Would be 'const' if the methods from 'dcmdata' would also be 'const'.) |
delem | DICOM element used to store the value (always creates a copy of the value from the original element) |
rule | Rule describing parameters to be checked on element |
|
static |
Get element from dataset and check it for correct value multiplicity and type.
dataset | DICOM dataset from which the element should be retrieved. (Would be 'const' if the methods from 'dcmdata' would also be 'const') |
delem | DICOM element that is set to a copy of the dataset's orinal element |
rule | Rule describing parameters to be checked on element. |
|
static |
Returns single item from given sequence.
Returns error number of items is 0 or more than 1.
seq | Sequence to read from. |
item | The resulting item, NULL in case of error |
checkKey | If given it is checked whether the given seq parameter matches the tag key provided in the checkKey parameter. If not, an error is returned. |
|
static |
Get Float64 value from element.
delem | The element whose value should be retrieved |
result | Reference to variable in which the result should be stored. |
pos | Index of the value to get (0..vm-1) |
|
static |
Get Float64 value from item.
key | The tag key of the attribute whose value should be retrieved |
item | The item to search the attribute in |
result | Reference to variable in which the result should be stored. |
pos | Index of the value to get (0..vm-1) |
|
static |
Get Float64 values from element.
delem | The element to get the value from |
result | Reference to variable in which the result should be stored. |
|
static |
Get Float64 values from item.
key | The tag key of the attribute whose value should be retrieved |
item | The item to search the attribute in |
result | Reference to variable in which the result should be stored. |
|
static |
Get string value from element.
delem | DICOM element from which the string value should be retrieved |
stringValue | Reference to variable in which the result should be stored. (This parameter is automatically cleared if an error occurs.) |
pos | Index of the value to get (0..vm-1), -1 for all components |
|
static |
Get string value from item.
key | The tag key of the attribute whose value should be retrieved |
item | The item to search the attribute in |
result | Reference to variable in which the result should be stored. (This parameter is automatically cleared if an error occurs.) |
pos | Index of the value to get (0..vm-1), -1 for all components |
|
static |
Get Uint16 values from DcmElement.
delem | DICOM element to read from |
values | Vector used as destination for the values |
|
static |
Check whether given tag is a sequence tag.
key | the tag key to be checked |
privateCreator | The private creator to check for if tag is private |
|
static |
Print warning if more than 65535 frames are present.
This is the maximum number since the Number of Frames attribute is only 16 bit thus not permitting larger values. The method returns the number of frames that can be used, i.e. either 65535 if the maximum is exceeded, otherwise the actual number of frames.
numFramesPresent | The number of frames actually present |
warning | The message to be printed if Number of Frames is larger than 65535. |
Function that takes a string representation of a tag key and converts it to a tag key instance if possible.
keyString | String of the format "(gggg,eeee)" |
|
inlinestatic |
Reads single DICOM item from a specific sequence into a destination class.
The container must support the read(DcmItem) function. If a single item (i.e. the first item of the specified sequence) cannot be read, an error is returned.
source | The source DICOM item read the sequence from |
seqKey | The tag key of the sequence to be read |
destination | The destination container to read into See DcmElement::checkVM() for a list of valid values. |
type | The sequence type as noted in part 3 of the DICOM standard, i.e. "1,1C,2,2C or 3". |
module | Name of the module/macro this sequence is contained in. Used for error messages and can also be left empty. |
References DcmItem::findAndGetSequenceItem().
|
inlinestatic |
Reads single DICOM item from a specific sequence into a destination class.
The container must support the read(DcmItem) function. If a single item (i.e. the first item of the specified sequence) cannot be read, an error is returned.
source | The source DICOM item read the sequence from |
seqKey | The tag key of the sequence to be read |
destination | The destination container to read into See DcmElement::checkVM() for a list of valid values. |
rule | The rule (for the sequence) used for reading. |
References IODRule::getModule(), and IODRule::getType().
|
inlinestatic |
Reads items from DICOM sequence into container by creating a dedicated container item for each DICOM item.
The container must support push_back(T) function and the container's element type T must support the read(DcmItem*) function.
source | The source sequence to read items from |
seqKey | The sequence's tag key that is expected |
destination | The destination container to read into |
cardinality | Expected number of items. See DcmElement::checkVM() for a list of valid values. |
type | The sequence type as noted in part 3 of the DICOM standard, i.e. "1,1C,2,2C or 3". |
module | Name of the module/macro this sequence is contained in. Used for error messages and can also be left empty. |
References OFString::c_str(), EC_Normal, and EC_TagNotFound.
|
inlinestatic |
Reads DICOM sequence into container by creating a dedicated container element for each DICOM item.
The container must support push_back(T) function and the container's element type T must support the read(DcmItem*) function.
source | The source DICOM item read the sequence from |
seqKey | The tag key of the sequence to be read |
destination | The destination container to read into |
cardinality | Expected number of items. See DcmElement::checkVM() for a list of valid values. |
type | The sequence type as noted in part 3 of the DICOM standard, i.e. "1,1C,2,2C or 3". |
module | Nname of the module/macro this sequence is contained in. Used for error messages and can also be left empty. |
References DcmItem::findAndGetSequence().
|
inlinestatic |
Reads DICOM sequence into container by creating a dedicated container element for each DICOM item.
The container must support the push_back(T) function and the container's element type T must support the read(DcmItem*) function.
source | The source DICOM item read the sequence from |
seqKey | The tag key of the sequence to be read |
destination | The destination container to read into |
rule | The rule for reading this sequence. If NULL, an error is returned. |
References IODRule::getModule(), IODRule::getType(), and IODRule::getVM().
|
static |
Set a DcmElement's content from Uint16 vector.
delem | DICOM element to be filled |
values | Vector use as a source for the values |
vm | Value multiplicity (according to the data dictionary) to be checked for. (See DcmElement::checkVM() for a list of valid values.) |
check | If OFTrue, then it is checked whether number of values conforms to the value provided by the vm parameter. |
|
inlinestatic |
Writes given container into a DICOM item of a specific sequence.
The sequence is created from scratch so that any old information will be lost.
result | If writing is successful, result will contain EC_Normal. Otherwise an error code is set. |
seqKey | The tag key of the sequence to be written |
source | The source container to read from. Must support the write(DcmItem*) function. |
destination | The DICOM item that should hold the sequence (with a single item) in the end. |
type | The sequence type as noted in part 3 of the DICOM standard, i.e. "1,1C,2,2C or 3". |
module | Name of the module/macro this sequence is contained in. Used for error messages and can also be left empty. |
References DcmItem::findAndDeleteElement(), and OFCondition::good().
|
inlinestatic |
Writes given container into a DICOM item of a specific sequence.
The sequence is created from scratch so that any old information will be lost.
result | If writing is successful, result will contain EC_Normal. Otherwise an error code is set. |
seqKey | The tag key of the sequence to be written |
source | The source container to read from. Must support the write(DcmItem*) function. |
destination | The DICOM item that should hold the sequence (with a single item) in the end. |
rule | The rule for writing the given sequence |
References EC_CannotCheck, IODRule::getModule(), IODRule::getType(), and OFCondition::good().
|
inlinestatic |
Write given container into a DICOM sequence that is created within the given item.
The sequence is created from scratch, i.e. any old sequence (and its items) will be overwritten.
result | If writing is successful, result will contain EC_Normal. Otherwise an error code is set. |
seqKey | The tag key of the sequence to be write |
source | The source container to read from. Must support the write(DcmItem*) function. |
destination | The DICOM destination item to write the sequence to See DcmElement::checkVM() for a list of valid values. |
cardinality | Expected number of items (i.e. expected number of elements in source container). See DcmElement::checkVM() for a list of valid values. |
type | The sequence type as noted in part 3 of the DICOM standard, i.e. "1,1C,2,2C or 3". |
module | Name of the module/macro this sequence is contained in. Used for error messages and can also be left empty. |
References OFCondition::bad(), DcmItem::findAndDeleteElement(), DcmItem::findAndDeleteSequenceItem(), DcmItem::findOrCreateSequenceItem(), OFCondition::good(), DcmItem::insertEmptyElement(), and OFCondition::text().
|
inlinestatic |
Write given container into a DICOM sequence that is created within the given item.
The container. The sequence is created from scratch, i.e. any old sequence (and its items) will be overwritten.
result | If writing is successful, result will contain EC_Normal. Otherwise an error code is set. |
seqKey | The tag key of the sequence to be write |
source | The source container to read from. Must support the write(DcmItem*) function. |
destination | The DICOM destination item to write the sequence to |
rule | Rule describing the requirements for this sequence. If NULL an error is returned (IOD_EC_NoSuchRule), but no error error is reported to the logger. |
References IODRule::getModule(), IODRule::getTagKey(), IODRule::getType(), IODRule::getVM(), and OFCondition::good().