MeVisLab Toolbox Reference
ml::DicomModifyMultiFileVolumeExport Class Reference

ML module class DicomModifyMultiFileVolumeExport which exports a MultiFileVolume composed of DICOM frames as files with modified DICOM information into a destination directory. More...

#include <mlDicomModifyMultiFileVolumeExport.h>

Inheritance diagram for ml::DicomModifyMultiFileVolumeExport:
ml::Module ml::FieldContainer ml::Base

Public Member Functions

 DicomModifyMultiFileVolumeExport ()
 
- Public Member Functions inherited from ml::Module
MLMetaProfilePtrgetMetaProfile () const
 Returns the meta profile for the base operator.
 
const chargetTypeNameFast () const
 Macro to declare methods for the ML runtime type system (see mlRuntimeSubClass.h).
 
 Module (int numInputImages, int numOutputImages)
 Constructor: Initializes numInputImages input images and numOutputImages output images of the module.
 
 ~Module () override
 Destructor: Destroys this module.
 
InputConnectorFieldgetInputImageField (MLint i) const
 Returns the field representing input image i. i must be a valid index.
 
OutputConnectorFieldgetOutputImageField (MLint i=0) const
 Returns field representing output image i. i must be a valid index.
 
MLint getNumInputImages () const
 Returns number of input images of this module.
 
MLint getNumOutputImages () const
 Returns number of output images of this module.
 
PagedImagegetOutputImage (MLint outputIndex=0) const
 Returns output image outputIndex. The index needs to be in the range [0, getNumOutputImages()-1].
 
InputConnectorFieldaddInputImage (const char *name=nullptr)
 Adds a new input image with name to the module.
 
OutputConnectorFieldaddOutputImage (const char *name=nullptr)
 Adds a new output image with name to the module.
 
PagedImagegetInputImage (MLint inputIndex, bool getReal=false) const
 Returns the output image of the module connected to input inputIndex.
 
PagedImagegetUpdatedInputImage (MLint inputIndex, bool getReal=false) const
 Convenience method for safe access to the input image at index inputIndex.
 
MLErrorCode processAllPages (int outputIndex=-1, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Processes all pages of a module for easy implementation of page-based image processing of complete images.
 
MLErrorCode processAllPages (ProcessAllPagesHandler &handler, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Process input images with a ProcessAllPagesHandler handler on a temporary output image (which allocates no data) For details, see processAllPages(-1) above.
 
MLErrorCode processMissingPages (int outputIndex=0, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Processes all missing pages on the given output image.
 
void clearOutputImage (MLint i=0)
 Clear cached output image pages of output image i.
 
MLint getOutputImageInplace (MLint outputIndex=0) const
 Return optimization flag: Return index of input image whose input tile is used also as output page for output outputIndex in calculateOutputSubImage() (instead of allocating its own memory).
 
MLint getBypass (MLint outputIndex=0) const
 Returns the currently bypass index or -1 if bypassing is disabled (default).
 
THREAD_SUPPORT getThreadSupport () const
 Returns the multithreading mode supported by this module, default is NO_THREAD_SUPPORT.
 
bool areRecursiveHandleNotificationsPermitted () const
 Returns if recursive entries in handleNotification are permitted.
 
MLint getHandleNotificationEntryCounter () const
 A counter returning the current number of (recursive re)entries in handleNotification.
 
PERMITTED_TYPES getVoxelDataTypeSupport () const
 Returns the current state of supported voxel data types.
 
bool isSupportedVoxelDataType (MLDataType dt) const
 Check if a given data type is supported on the module as configured with setVoxelDataTypeSupport.
 
virtual INPUT_HANDLE handleInput (int, INPUT_STATE) const
 This method may be reimplemented to enable support for invalid input images on the module.
 
INPUT_STATE getInputState (MLint index)
 Returns the current state of the input connection.
 
INPUT_STATE getUpdatedInputState (MLint index)
 Returns the updated state of the input image by calling updateImageProperties(index) and returning getInputState(index) afterwards.
 
bool isInputImageField (Field *field) const
 Returns if the given field is an input image field. This can be used in handleNotification(), to check if one of the input images has changed.
 
void touchOutputImageFields () const
 Touch all output image fields to indicate that the images have changed.
 
virtual void beginSaveFields ()
 Called before all fields data contents of this modules are saved.
 
virtual void endSaveFields ()
 Called after saving all field contents of this module.
 
- Public Member Functions inherited from ml::FieldContainer
 FieldContainer ()
 Constructor.
 
 ~FieldContainer () override
 Destructor: Deletes all added fields.
 
std::string whoAmI (bool withInstanceName=true) const
 Returns type and instance name of format "ClassTypeName(instanceName)" if the instance name is not empty and withInstanceName is true.
 
FieldaddField (const char *name, const char *type, const char *value)
 Adds a new field with name name, type type and value value (coded as string) to the container.
 
FieldaddField (Field *field)
 Adds a field, the ownership of the field is passed to the FieldContainer.
 
BoolFieldaddBool (const char *name)
 Creates a BoolField with name and adds it to the container. Default value is false.
 
BoolFieldaddBool (const char *name, bool value)
 Creates a BoolField with name and adds it to the container.
 
IntFieldaddInt (const char *name)
 Creates an IntField with name and adds it to the container. Default value is 0.
 
IntFieldaddInt (const char *name, MLint value)
 Creates an IntField with name and adds it to the container.
 
EnumFieldaddEnum (const char *name, const char *const *enumerationItemNames, MLint numEnumerationItems)
 Creates an EnumField field with name and adds it to the container.
 
EnumFieldaddEnum (const char *name, const std::vector< std::string > &enumerationItemNames)
 Creates an EnumField field with name and adds it to the container.
 
template<typename EnumType >
TypedEnumField< EnumType > * addEnum (const char *name, const EnumValues< EnumType > &values, EnumType initialValue)
 Creates a TypedEnumField field with name and adds it to the container.
 
FloatFieldaddFloat (const char *name)
 Creates a FloatField with name and adds it to the container. Default value is 0.f.
 
FloatFieldaddFloat (const char *name, float value)
 Creates a FloatField with name and adds it to the container.
 
ProgressFieldaddProgress (const char *name)
 Creates a float ProgressField with name and adds it to the container. Default value is 0.f.
 
ProgressFieldaddProgress (const char *name, float value)
 Creates a float ProgressField with name and adds it to the container.
 
DoubleFieldaddDouble (const char *name)
 Creates a DoubleField with name and adds it to the container. Default value is 0.
 
DoubleFieldaddDouble (const char *name, double value)
 Creates a DoubleField with name and adds it to the container.
 
StringFieldaddString (const char *name)
 Creates a StringField with name and adds it to the container. Default value is empty string.
 
StringFieldaddString (const char *name, const std::string &value)
 Creates a StringField with name and adds it to the container.
 
NotifyFieldaddNotify (const char *name)
 Creates a NotifyField field with name and adds it to the container.
 
TriggerFieldaddTrigger (const char *name)
 Creates a TriggerField field with name and adds it to the container.
 
BaseFieldaddBase (const char *name)
 Creates a Base field with name and adds it to the container. Default value is NULL.
 
BaseFieldaddBase (const char *name, Base *value)
 Creates a Base field with name and adds it to the container.
 
BaseFieldaddBase (const char *name, const RefCountedBasePtr &value)
 Creates a Base field with name and adds it to the container. Sets the value from intrusive pointer.
 
template<typename T >
BaseFieldaddBaseWithAllowedType (const char *name, T *value=nullptr)
 As above, but also sets the allowed type of the field.
 
template<typename T >
BaseFieldaddBaseWithAllowedType (const char *name, const ::boost::intrusive_ptr< T > &value)
 As above, but also sets the allowed type of the field.
 
template<typename T >
TypedBaseField< T > * addTypedBase (const char *name)
 Creates a TypedBaseField with name and adds it to the container. Default value is NULL.
 
template<typename T >
TypedBaseField< T > * addTypedBase (const char *name, T *value)
 Creates a TypedBaseField with name and adds it to the container.
 
template<typename T >
TypedBaseField< T > * addTypedBase (const char *name, const ::boost::intrusive_ptr< T > &value)
 Creates a TypedBaseField with name and adds it to the container. Sets the value from intrusive pointer.
 
SoNodeFieldaddSoNode (const char *name)
 Creates a SoNodeField with name and adds it to the container. Default value is NULL.
 
SoNodeFieldaddSoNode (const char *name, SoNode *value)
 Creates a SoNodeField with name and adds it to the container.
 
PointerFieldaddPointer (const char *name)
 Creates a PointerField with name and adds it to the container.
 
Vector2FieldaddVector2 (const char *name)
 Creates a Vector2Field with name and adds it to the container.
 
Vector2FieldaddVector2 (const char *name, const Vector2 &value)
 Creates a Vector2Field with name and adds it to the container.
 
Vector2FieldaddVector2 (const char *name, double x, double y)
 Creates a Vector2Field with name and adds it to the container.
 
Vector3FieldaddVector3 (const char *name)
 Creates a Vector3Field with name and adds it to the container.
 
Vector3FieldaddVector3 (const char *name, const Vector3 &value)
 Creates a Vector3Field with name and adds it to the container.
 
Vector3FieldaddVector3 (const char *name, double x, double y, double z)
 Creates a Vector3Field with name and adds it to the container.
 
Vector4FieldaddVector4 (const char *name)
 Creates a Vector4Field with name and adds it to the container.
 
Vector4FieldaddVector4 (const char *name, const Vector4 &value)
 Creates a Vector4Field with name and adds it to the container.
 
Vector4FieldaddVector4 (const char *name, double x, double y, double z, double w)
 Creates a Vector4Field with name and adds it to the container.
 
Vector5FieldaddVector5 (const char *name)
 Creates a Vector5Field with name and adds it to the container.
 
Vector5FieldaddVector5 (const char *name, const Vector5 &value)
 Creates a Vector5Field with name and adds it to the container.
 
Vector6FieldaddVector6 (const char *name)
 Creates a Vector6Field with name and adds it to the container.
 
Vector6FieldaddVector6 (const char *name, const Vector6 &value)
 Creates a Vector6Field with name and adds it to the container.
 
Vector10FieldaddVector10 (const char *name)
 Creates a Vector10Field with name and adds it to the container.
 
Vector10FieldaddVector10 (const char *name, const Vector10 &value)
 Creates a Vector10Field with name and adds it to the container.
 
ImageVectorFieldaddImageVector (const char *name)
 Creates a ImageVectorField with name and adds it to the container.
 
ImageVectorFieldaddImageVector (const char *name, const ImageVector &value)
 Creates a ImageVectorField with name and adds it to the container.
 
ImageVectorFieldaddImageVector (const char *name, MLint x, MLint y, MLint z, MLint c, MLint t, MLint u)
 Creates a ImageVectorField with name and adds it to the container.
 
SubImageBoxFieldaddSubImageBox (const char *name)
 Creates a SubImageBoxField with name and adds it to the container.
 
SubImageBoxFieldaddSubImageBox (const char *name, const SubImageBox &value)
 Creates a SubImageBoxField with name and adds it to the container.
 
SubImageBoxdFieldaddSubImageBoxd (const char *name)
 Creates a SubImageBoxd field with name and adds it to the container.
 
SubImageBoxdFieldaddSubImageBoxd (const char *name, const SubImageBoxd &value)
 Creates a SubImageBoxd field with name and adds it to the container.
 
ColorFieldaddColor (const char *name)
 Creates a ColorField with name and adds it to the container.
 
ColorFieldaddColor (const char *name, float r, float g, float b)
 Creates a ColorField with name and adds it to the container.
 
ColorFieldaddColor (const char *name, const Vector3 &value)
 Creates a ColorField with name and adds it to the container.
 
PlaneFieldaddPlane (const char *name)
 Creates a PlaneField with name and adds it to the container.
 
PlaneFieldaddPlane (const char *name, double f0, double f1, double f2, double f3)
 Creates a PlaneField with name and adds it to the container.
 
PlaneFieldaddPlane (const char *name, const Plane &value)
 Creates a PlaneField with name and adds it to the container.
 
RotationFieldaddRotation (const char *name)
 Creates a RotationField with name and adds it to the container.
 
RotationFieldaddRotation (const char *name, const Rotation &value)
 Creates a RotationField with name and adds it to the container.
 
Matrix2FieldaddMatrix2 (const char *name)
 Creates a Matrix2Field with name and adds it to the container.
 
Matrix2FieldaddMatrix2 (const char *name, const Matrix2 &value)
 Creates a Matrix2Field with name and adds it to the container.
 
Matrix3FieldaddMatrix3 (const char *name)
 Creates a Matrix3Field with name and adds it to the container.
 
Matrix3FieldaddMatrix3 (const char *name, const Matrix3 &value)
 Creates a Matrix3Field with name and adds it to the container.
 
Matrix4FieldaddMatrix4 (const char *name)
 Creates a Matrix4Field with name and adds it to the container.
 
Matrix4FieldaddMatrix4 (const char *name, const Matrix4 &value)
 Creates a Matrix4Field with name and adds it to the container.
 
Matrix5FieldaddMatrix5 (const char *name)
 Creates a Matrix5Field with name and adds it to the container.
 
Matrix5FieldaddMatrix5 (const char *name, const Matrix5 &value)
 Creates a Matrix5Field with name and adds it to the container.
 
Matrix6FieldaddMatrix6 (const char *name)
 Creates a Matrix6Field with name and adds it to the container.
 
Matrix6FieldaddMatrix6 (const char *name, const Matrix6 &value)
 Creates a Matrix6Field with name and adds it to the container.
 
MatrixFieldaddMatrix (const char *name)
 Creates a MatrixField with name and adds it to the container.
 
MatrixFieldaddMatrix (const char *name, const Matrix4 &value)
 Creates a MatrixField with name and adds it to the container.
 
MLDataTypeFieldaddMLDataType (const char *name)
 Creates a MTDataTypeField with name and adds it to the container.
 
MLDataTypeFieldaddMLDataType (const char *name, MLDataType value)
 Creates a MTDataTypeField with name and adds it to the container.
 
UniversalTypeFieldaddUniversalType (const char *name)
 Creates an UniversalTypeField field with name and adds it to the container.
 
IntListFieldaddIntList (const char *name)
 Creates an IntListField field with name and empty list value and adds it to the container.
 
IntListFieldaddIntList (const char *name, const std::vector< MLint > &value)
 Creates an IntListField field with name and given list value and adds it to the container.
 
DoubleListFieldaddDoubleList (const char *name)
 Creates an DoubleListField field with name and empty list value and adds it to the container.
 
DoubleListFieldaddDoubleList (const char *name, const std::vector< double > &value)
 Creates an DoubleListField field with name and given list value and adds it to the container.
 
Vector2ListFieldaddVector2List (const char *name)
 Creates an Vector2ListField field with name and empty list value and adds it to the container.
 
Vector2ListFieldaddVector2List (const char *name, const std::vector< Vector2 > &value)
 Creates an Vector2ListField field with name and given list value and adds it to the container.
 
Vector3ListFieldaddVector3List (const char *name)
 Creates an Vector3ListField field with name and empty list value and adds it to the container.
 
Vector3ListFieldaddVector3List (const char *name, const std::vector< Vector3 > &value)
 Creates an Vector3ListField field with name and given list value and adds it to the container.
 
Vector4ListFieldaddVector4List (const char *name)
 Creates an Vector4ListField field with name and empty list value and adds it to the container.
 
Vector4ListFieldaddVector4List (const char *name, const std::vector< Vector4 > &value)
 Creates an Vector4ListField field with name and given list value and adds it to the container.
 
size_t getNumFields () const
 Returns the number of added fields.
 
bool hasField (const std::string &name) const
 Returns true if the field with name name exists; otherwise false is returned.
 
FieldgetField (const std::string &name) const
 Returns the pointer to the field with name name.
 
FieldgetField (MLint index) const
 Returns pointer of field at index if it exists. If not, -1 is returned.
 
MLint getFieldIndex (Field *field) const
 Returns index of field if it exists. If not, -1 is returned.
 
void setFieldStringValue (const std::string &name, const std::string &value)
 Sets the value of the field with name if it exists.
 
std::string getFieldStringValue (const std::string &name) const
 Returns the string value of the field with name if it is found.
 
virtual void deactivateAttachments ()
 Disables notification handling, i.e., all fields of this module will not send notifications to attached sensors and fields any more if their values are set or changed.
 
- Public Member Functions inherited from ml::Base
 Base ()
 Constructor.
 
virtual ~Base ()
 Destructor.
 
virtual BasedeepCopy () const
 Set addStateToTree version number that can be accessed via getAddStateVersion()
 
bool isOfAllowedType (const std::vector< const RuntimeType * > &types) const
 Check if this object's type is equal to or derived from one of the types given in the argument.
 
virtual bool isRefCountedBase () const
 Returns if the instance is derived from RefCountedBase.
 
virtual std::string detailString () const
 Return a string describing this object.
 
virtual bool implementsPersistence (PersistenceInterface) const
 Override this method to declare which persistence interfaces are implemented by your derived class.
 
virtual std::string persistentState () const
 Returns a string describing the object's internal state.
 
virtual void setPersistentState (const std::string &state)
 Restores the object's internal state from a string that had been previously generated using persistentState().
 
virtual void addStateToTree (TreeNode *) const
 Attaches the object state as children of the given parent node.
 
virtual void readStateFromTree (TreeNode *)
 Reads the object state from the children of the given parent node.
 
virtual void writeTo (AbstractPersistenceOutputStream *) const
 Write the objects state to the data stream object.
 
virtual void readFrom (AbstractPersistenceInputStream *, int)
 Read the objects state from the data stream object.
 

Protected Member Functions

void activateAttachments () override
 Handles changes which were applied without notifications.
 
void handleNotification (Field *field) override
 Handles field changes.
 
const ZTUFileNameSet_getInputVolumeFileSet (Matrix4 *w2vMatrix=nullptr, bool *validMatrix=nullptr) const
 Return the input ZTUFileNameSet either from the currently connected MultiFileVolume or from the specified file name; return nullptr if none is available.
 
bool _requiresModifications () const
 Returns true if any modification is implied by the module parameters, for example by a connected filter plugin, or by enabled series or study instance UID changes; otherwise false is returned.
 
DICOMTagTools::ZTUIndex _getZTUPos (const DICOMCachedIOFileHandle &fileHandle, const ZTUFileNameSet &fileSet, DicomMessageCollector &dcmMsgCollector)
 Gets the SOPInstanceUID of fileHandle, searches it in fileSet and returns the ztu position of the fileHandle with "VALID" as value if found, otherwise ztuPos 0,0,0 with value "INVALID".
 
DICOMTagTools::ZTUVector _getZTUSuppressions (std::string &parseInfo, const ZTUFileNameSet &inFileSet) const
 Returns a list of ztu positions which are described in _ztuFrameSuppressionsFld.
 
void _export ()
 Stores the (modified) DICOM frames in the destination directory.
 
void _exportFilteredDicomBaseObject (DCMTree::Const_TreePtr inDCMTree, std::string &oldToNewSOPInstanceUIDList, const Matrix4 *w2vMatrix, DicomMessageCollector &dcmMsgCollector)
 If necessary then modify the passed DICOM tree and write it into the destination directory where the file name is build only from destinationDirectoryFld, destinationFileNameSuffixFld, and the index.
 
void _exportFilteredFileSet (const std::vector< DICOMCachedIOFileHandle > &allFiles, std::string &oldToNewSOPInstanceUIDList, const Matrix4 *w2vMatrix, const ZTUFileNameSet &originalInFileSet, DicomMessageCollector &dcmMsgCollector)
 Get all DCMFiles from the given file set and writes the files into the destination directory.
 
void _createExportTree (const DICOMCachedIOFileHandle &inOrigFilePath, DCMTree::Const_TreePtr inDCMTree, DICOMCachedIOFileHandle &recentMFFileHandle, DCMTree::Const_TreePtr &recentMFTree, DCMTree::TreePtr &modifiableExportTree, DCMTree::Const_TreePtr &constExportTree, DicomMessageCollector &dcmMsgCollector)
 Creates/determines the DICOM tree which can be modified and exported.
 
void _exportFile (const DICOMCachedIOFileHandle &inOrigFilePath, DCMTree::Const_TreePtr inDCMTree, size_t inFileIdx, BaseField *inFilterBase, const std::string &dstDirBase, const std::string &dstFileNameSuffix, std::string &oldSOPInstanceUID, std::string &newSOPInstanceUID, DICOMCachedIOFileHandle &recentMFFileHandle, DCMTree::Const_TreePtr &recentMFTree, const Matrix4 *w2vMatrix, const DICOMTagTools::ZTUIndex *ztuPos, DicomMessageCollector &dcmMsgCollector)
 Loads the DICOM file from origFilePath, filters it with a DicomModifyTagsPluginBase possible connected to inFilterBase, and writes it into a new file built from dstDirBase and fileIdx.
 
std::string _applyDCMTreeChanges (DCMTree::TreePtr dcmTree, std::string &oldSOPInstanceUID, std::string &newSOPInstanceUID)
 Applies all necessary DICOM tree changes to dcmTree before writing it to disk.
 
void _setUpImageTypeTag (DCMTree::TreePtr dcmTree, std::string &errStr)
 Sets up the value(s) of the ImageType tag in dcmTree according to the field settings, possible errors and issues are appended to errStr.
 
void _saveDCMTree (DCMTree::Const_TreePtr dcmTree, const DICOMCachedIOFileHandle &srcFilePath, size_t fileIdx, const std::string &dstDirBase, const std::string &dstFileNameSuffix, std::string &dstFilePath, DicomMessageCollector &dcmMsgCollector)
 Stores dcmTree in file dstFileName.
 
- Protected Member Functions inherited from ml::Module
void handleNotificationInternal (Field *field, FieldSensor::Strength strength) override
 Called from FieldContainer whenever a field changes.
 
virtual void provideCustomPage (int, const SubImageBox &, MLMemoryBlockHandle &)
 This method allows a Module to provide its own pages to the Host for the outputIndex output image.
 
void handleNotificationOff ()
 Decreases lock counter for handleNotification calls.
 
void handleNotificationOn ()
 Increases lock counter for handleNotification calls.
 
bool isHandleNotificationOn ()
 Returns true if handleNotification calls are permitted, otherwise false.
 
void setOutputImageInplace (MLint outputIndex=0, MLint inputIndex=0)
 Set optimization flag: If calculating a page in calculateOutputSubImage(), the output image page of output outputIndex shall use the same memory as the input page of input inputIndex.
 
void unsetOutputImageInplace (MLint outputIndex=0)
 Clear optimization flag: output page of output at outputIndex and input tile shall use different memory buffers in calculateOutputSubImage().
 
void setBypass (MLint outputIndex=0, MLint inputIndex=0)
 Sets the input image whose pages can also be used instead of output pages for the output image at outputIndex to avoid recalculations.
 
void setClampPagesToImageExtent (bool flag=true)
 Enables/disables page clamping on all output images.
 
void setThreadSupport (THREAD_SUPPORT supportMode)
 Pass any THREAD_SUPPORT supportMode to decide whether and what type of multithreading is supported by this module.
 
void permitRecursiveHandleNotifications (bool enable)
 If this flag is set to enable =true, recursive entries in handleNotification are permitted.
 
void setVoxelDataTypeSupport (PERMITTED_TYPES permTypes)
 Specifies which types this module supports.
 
virtual CalculateOutputImageHandlercreateCalculateOutputImageHandler (PagedImage *outputImage)
 Creates the CalculateOutputImageHandler for the given output image outputImage.
 
virtual void calculateOutputImageProperties (int outputIndex, PagedImage *outputImage)
 Set properties of output image outputImage with output index outputIndex.
 
virtual SubImageBox calculateInputSubImageBox (int, const SubImageBox &outputSubImageBox, int)
 Called by the Host to determine which input image region (tile) of input inputIndex is required to calculate a certain output image region (page) of output outputIndex.
 
virtual void calculateOutputSubImage (SubImage *outputSubImage, int outputIndex, SubImage *inputSubImages)
 Calculate page outputSubImage of output image with index outputIndex given the input image tiles in array inputSubImages.
 

Static Protected Member Functions

static std::string _filterDCMTree (DCMTree::TreePtr dcmTree, BaseField *inFilterBase, const Matrix4 *w2vMatrix, const DICOMTagTools::ZTUIndex *ztuPos)
 If a DicomModifyTagsPluginBase at inFilterBase is connected then it is applied to dcmTree.
 

Additional Inherited Members

- Public Types inherited from ml::Module
enum  PERMITTED_TYPES { ONLY_SCALAR_TYPES , ONLY_DEFAULT_TYPES , ALL_REGISTERED_TYPES }
 See documentation of setVoxelDataTypeSupport. More...
 
enum  INPUT_STATE { DISCONNECTED = 0 , CONNECTED_BUT_INVALID = 1 , CONNECTED_AND_VALID = 2 , CONNECTED_BUT_NEEDS_UPDATE = 3 }
 See documentation of handleInput. More...
 
enum  INPUT_HANDLE { INVALIDATE = 0 , ALLOW_INVALID_INPUT = 2 }
 See documentation of handleInput. More...
 
- Public Types inherited from ml::Base
enum  PersistenceInterface { PersistenceByString , PersistenceByTreeNode , PersistenceByStream }
 This enum describes the different persistence interfaces available. More...
 
- Static Public Member Functions inherited from ml::Module
static MLErrorCode getTile (PagedImage *image, SubImageBox loc, MLDataType datatype, void **data, const ScaleShiftData &scaleShiftData=ScaleShiftData(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 For documentation see Host::getTile() function with same signature.
 
static MLErrorCode getTile (PagedImage *image, SubImage &subimg, const ScaleShiftData &scaleShiftData=ScaleShiftData(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 For documentation see Host::getTile() function with same signature and Module passed as reference.
 
static MLErrorCode updateImageProperties (PagedImage *image)
 For documentation see Host::updateImageProperties() function with same signature.
 
static void freeTile (void *data)
 For documentation see Host::freeTile().
 
static void updateProgress (const char *info1, const char *info2)
 For documentation see Host::updateProgress().
 
static bool shouldTerminate ()
 For documentation see Host::shouldTerminate().
 
static FieldgetPressedNotifyField ()
 For documentation see Host::getPressedNotifyField().
 
static void adaptPageExtent (ImageVector &pageExtent, MLDataType imageType, const ImageVector &newImgExtent, const ImageVector &oldImgExtent, const ImageVector &pageUnit=ImageVector(0), const ImageVector &minPageExtent=ImageVector(0), const ImageVector &maxPageExtent=ImageVector(0))
 Adapt page size.
 
static std::string getVoxelValueAsString (PagedImage *image, const ImageVector &position, MLErrorCode *errorCode=nullptr, const std::string &errorResult="")
 Returns the voxel value at position position of the image image.
 
static size_t getNumModules ()
 Returns number of instantiated modules.
 
static ModulegetModule (size_t index)
 Returns pointer to instantiated module index.
 
static MLint findModuleIndex (Module &module)
 Returns index of Module module. If not found -1 is returned.
 
static void destroyModule ()
 Destroys static allocated tables to avoid memory leaks.
 
- Protected Types inherited from ml::Module
enum  THREAD_SUPPORT { NO_THREAD_SUPPORT = PagedImage::NO_THREAD_SUPPORT , MULTITHREADED = PagedImage::MULTITHREADED , IO_THREAD = PagedImage::IO_THREAD }
 Enumerator deciding whether and which type of multithreading is supported by this module. More...
 

Detailed Description

ML module class DicomModifyMultiFileVolumeExport which exports a MultiFileVolume composed of DICOM frames as files with modified DICOM information into a destination directory.

Definition at line 52 of file mlDicomModifyMultiFileVolumeExport.h.

Constructor & Destructor Documentation

◆ DicomModifyMultiFileVolumeExport()

ml::DicomModifyMultiFileVolumeExport::DicomModifyMultiFileVolumeExport ( )

Member Function Documentation

◆ _applyDCMTreeChanges()

std::string ml::DicomModifyMultiFileVolumeExport::_applyDCMTreeChanges ( DCMTree::TreePtr dcmTree,
std::string & oldSOPInstanceUID,
std::string & newSOPInstanceUID )
protected

Applies all necessary DICOM tree changes to dcmTree before writing it to disk.

Parameters
dcmTreeThe tree to be modified.
oldSOPInstanceUIDReturns the value of the SOPInstanceUID of the file before modifying it.
newSOPInstanceUIDReturns the value of the new SOPInstanceUID of the file after modifying it; if is not changed then the old one is returned.
Returns
An empty string on success, a string description of the error otherwise.

◆ _createExportTree()

void ml::DicomModifyMultiFileVolumeExport::_createExportTree ( const DICOMCachedIOFileHandle & inOrigFilePath,
DCMTree::Const_TreePtr inDCMTree,
DICOMCachedIOFileHandle & recentMFFileHandle,
DCMTree::Const_TreePtr & recentMFTree,
DCMTree::TreePtr & modifiableExportTree,
DCMTree::Const_TreePtr & constExportTree,
DicomMessageCollector & dcmMsgCollector )
protected

Creates/determines the DICOM tree which can be modified and exported.

If a modification of the returned tree is not necessary, because the module settings does not require it, then only a constant version of the tree is returned, otherwise only a modifiable version is returned. The routine loads the DICOM file from origFilePath if that is non empty, otherwise it uses inDCMTree. If necessary the tree is cloned to create a modifiable tree to ensure that no cached content is modified. In some cases special preparations are performed on the returned tree, for example the appropriate pixel data region from a multi-frame pixel source might be translated into a normal pixel data tag of the returned tree.

Parameters
inOrigFilePathThe file handle URL/path to the original DICOM file whose content to export; if it is empty then inDCMTree is exported alternatively.
inDCMTreeThe DICOM tree to use/modify/export instead of origFilePath if that is "".
recentMFFileHandleIf not empty then this indicates the handle of the last opened decomposed multi-frame file to be able to reuse it for faster access; it is updated synchronously with recentMFTree.
recentMFTreeIf non nullptr then this is the last opened non-decomposed tree of the decomposed multi-frame tree to be able to reuse it for faster access; it is updated synchronously with recentMFFileHandle.
modifiableExportTreeIf a modification of DICOM tag is necessary then this tree is returned as non nullptr pointer. Modification can be applied to it safely without overwriting cached contents. If no modifications on the tree are needed then this tree is returned as nullptr pointer.
constExportTreeIf modifications are not necessary then this tree is returned as non nullptr tree and it can be exported without further modifications. This tree might be from a cache, it is constant and therefore cannot be modified.
dcmMsgCollectorCollects error, info and issue messages (typically related to a handle).
Returns
An empty string on success, or a non empty string describing problems; it does not indicate the success state of the call which should be identified by non nullptr modifiableExportTree or constExportTree pointers.

◆ _export()

void ml::DicomModifyMultiFileVolumeExport::_export ( )
protected

Stores the (modified) DICOM frames in the destination directory.

◆ _exportFile()

void ml::DicomModifyMultiFileVolumeExport::_exportFile ( const DICOMCachedIOFileHandle & inOrigFilePath,
DCMTree::Const_TreePtr inDCMTree,
size_t inFileIdx,
BaseField * inFilterBase,
const std::string & dstDirBase,
const std::string & dstFileNameSuffix,
std::string & oldSOPInstanceUID,
std::string & newSOPInstanceUID,
DICOMCachedIOFileHandle & recentMFFileHandle,
DCMTree::Const_TreePtr & recentMFTree,
const Matrix4 * w2vMatrix,
const DICOMTagTools::ZTUIndex * ztuPos,
DicomMessageCollector & dcmMsgCollector )
protected

Loads the DICOM file from origFilePath, filters it with a DicomModifyTagsPluginBase possible connected to inFilterBase, and writes it into a new file built from dstDirBase and fileIdx.

Parameters
inOrigFilePathThe file handle URL/path to the original DICOM file from which a modified copy shall be created; if it is empty then inDCMTree is exported alternatively.
inDCMTreeThe DICOM tree to use/modify/export instead of inOrigFilePath if that is "".
inFileIdxThe index of the file to be modified; used for the creation of result file names.
inFilterBaseThe base field where a DicomModifyTagsPluginBase might be connected.
dstDirBaseThe destination directory in which the modified files shall be written.
dstFileNameSuffixSuffix added to destination file name.
oldSOPInstanceUIDReturns the value of the SOPInstanceUID of the file before modifying it.
newSOPInstanceUIDReturns the value of the new SOPInstanceUID of the file after modifying it; if is not changed then the old one is returned.
recentMFFileHandleIf not empty then this indicates the handle of the last opened decomposed multi-frame file to be able to reuse it for faster access; it is updated synchronously with recentMFTree.
recentMFTreeIf non nullptr then this is the last opened non-decomposed tree of the decomposed multi-frame tree to be able to reuse it for faster access; it is updated synchronously with recentMFFileHandle.
w2vMatrixThe world-to-voxel transformation matrix the frame belongs to; it will be passed as additional treeInfo to manipulated DICOM trees if available, otherwise it is ignored.
ztuPosIf non nullptr then it contains the ztu frame position of the DICOM frame inside of a MultiFileVolume.
dcmMsgCollectorCollects error, info and issue messages (typically related to a handle).
Returns
An empty string on success, otherwise a non empty string describing the problem.

◆ _exportFilteredDicomBaseObject()

void ml::DicomModifyMultiFileVolumeExport::_exportFilteredDicomBaseObject ( DCMTree::Const_TreePtr inDCMTree,
std::string & oldToNewSOPInstanceUIDList,
const Matrix4 * w2vMatrix,
DicomMessageCollector & dcmMsgCollector )
protected

If necessary then modify the passed DICOM tree and write it into the destination directory where the file name is build only from destinationDirectoryFld, destinationFileNameSuffixFld, and the index.

Parameters
inDCMTreeThe DICOM tree to export.
oldToNewSOPInstanceUIDListA newline separated list of mappings between SOPInstanceUIDs before and after modification of each file from allFiles.
w2vMatrixThe world-to-voxel transformation matrix the frame belongs to; it will be passed as additional treeInfo to manipulated DICOM trees if available, otherwise (if nullptr) it is ignored.
dcmMsgCollectorCollects error, info and issue messages (typically related to a handle).
Returns
Empty string on success, otherwise a non-empty descriptive string.

◆ _exportFilteredFileSet()

void ml::DicomModifyMultiFileVolumeExport::_exportFilteredFileSet ( const std::vector< DICOMCachedIOFileHandle > & allFiles,
std::string & oldToNewSOPInstanceUIDList,
const Matrix4 * w2vMatrix,
const ZTUFileNameSet & originalInFileSet,
DicomMessageCollector & dcmMsgCollector )
protected

Get all DCMFiles from the given file set and writes the files into the destination directory.

Parameters
allFilesA set of paths of DICOM files whose content shall be read, filtered and written.
oldToNewSOPInstanceUIDListA newline separated list of mappings between SOPInstanceUIDs before and after modification of each file from allFiles.
w2vMatrixThe world-to-voxel transformation matrix the frame belongs to; it will be passed as additional treeInfo to manipulated DICOM trees if available, otherwise (if nullptr) it is ignored.
originalInFileSetThe set of files from which allFiles have been extracted.
dcmMsgCollectorCollects error, info and issue messages (typically related to a handle).
Returns
Empty string on success, otherwise a non-empty descriptive string.

◆ _filterDCMTree()

static std::string ml::DicomModifyMultiFileVolumeExport::_filterDCMTree ( DCMTree::TreePtr dcmTree,
BaseField * inFilterBase,
const Matrix4 * w2vMatrix,
const DICOMTagTools::ZTUIndex * ztuPos )
staticprotected

If a DicomModifyTagsPluginBase at inFilterBase is connected then it is applied to dcmTree.

Parameters
dcmTreeThe tree to be filtered if a DicomModifyTagsPluginBase is appended otherwise it is left unchanged.
inFilterBaseThe base field where a DicomModifyTagsPluginBase might be connected.
w2vMatrixThe world-to-voxel transformation matrix the frame belongs to; it will be passed as additional treeInfo to manipulated DICOM trees if available, otherwise it is ignored.
ztuPosIf non nullptr then it contains the ztu position of the DICOM frame.
Returns
An empty string on success, otherwise a string description of the error.

◆ _getInputVolumeFileSet()

const ZTUFileNameSet * ml::DicomModifyMultiFileVolumeExport::_getInputVolumeFileSet ( Matrix4 * w2vMatrix = nullptr,
bool * validMatrix = nullptr ) const
protected

Return the input ZTUFileNameSet either from the currently connected MultiFileVolume or from the specified file name; return nullptr if none is available.

Parameters
w2vMatrixIf non nullptr then it will be set to either the getWorldToVoxelMatrix() of the image properties of the MultiFileVolume the file comes from or to the identity if it does not come from a MultiFileVolume. It will be ignored if it is nullptr.
validMatrixIf non nullptr then the validity state of the matrix is returned, and ignored if nullptr.
Returns
The ZTUFileNameSet from the currently connected MultiFileVolume or nullptr if not available.

◆ _getZTUPos()

DICOMTagTools::ZTUIndex ml::DicomModifyMultiFileVolumeExport::_getZTUPos ( const DICOMCachedIOFileHandle & fileHandle,
const ZTUFileNameSet & fileSet,
DicomMessageCollector & dcmMsgCollector )
protected

Gets the SOPInstanceUID of fileHandle, searches it in fileSet and returns the ztu position of the fileHandle with "VALID" as value if found, otherwise ztuPos 0,0,0 with value "INVALID".

Parameters
fileHandleThe handle of the file whose SOPInstanceUID shall be searched.
fileSetThe fileSet in which the SOPInstanceUID of fileHandle shall be searched.
dcmMsgCollectorCollects error, info and issue messages (typically related to a handle).
Returns
The ZTUIndex with the frame which has SOPInstanceUID of fileHandle or otherwise (0,0,0) with "INVALID".

◆ _getZTUSuppressions()

DICOMTagTools::ZTUVector ml::DicomModifyMultiFileVolumeExport::_getZTUSuppressions ( std::string & parseInfo,
const ZTUFileNameSet & inFileSet ) const
protected

Returns a list of ztu positions which are described in _ztuFrameSuppressionsFld.

If inFileSet a valid set of file handles the index range is also checked and handled as error, otherwise no out of range range checks are performed.

Parameters
parseInfois returned empty if complains about errors shall be returned.
inFileSetThe set of file handles from which some can be suppressed.
Returns
A vector with suppression indexes.

◆ _requiresModifications()

bool ml::DicomModifyMultiFileVolumeExport::_requiresModifications ( ) const
protected

Returns true if any modification is implied by the module parameters, for example by a connected filter plugin, or by enabled series or study instance UID changes; otherwise false is returned.

◆ _saveDCMTree()

void ml::DicomModifyMultiFileVolumeExport::_saveDCMTree ( DCMTree::Const_TreePtr dcmTree,
const DICOMCachedIOFileHandle & srcFilePath,
size_t fileIdx,
const std::string & dstDirBase,
const std::string & dstFileNameSuffix,
std::string & dstFilePath,
DicomMessageCollector & dcmMsgCollector )
protected

Stores dcmTree in file dstFileName.

Parameters
dcmTreeThe DICOM tree to be stored on disk.
srcFilePathThe file name handle from which dcmTree was loaded, will be used as a base to determine the file name for storage; if it is passed as empty string then a file name is built from dstDirBase, dstFileNameSuffix, and fileIdx.
fileIdxThe index of the source file; used to generate the output file name.
dstDirBaseThe destination directory in which the modified files shall be written.
dstFileNameSuffixSuffix added to destination file name.
dstFilePathIf non-nullptr it will be set to the file name in which the dcmTree is stored, otherwise ignored.
dcmMsgCollectorCollects error, info and issue messages (typically related to a handle).
Returns
An empty string on success; otherwise a non-empty string describing the problem.

◆ _setUpImageTypeTag()

void ml::DicomModifyMultiFileVolumeExport::_setUpImageTypeTag ( DCMTree::TreePtr dcmTree,
std::string & errStr )
protected

Sets up the value(s) of the ImageType tag in dcmTree according to the field settings, possible errors and issues are appended to errStr.

◆ activateAttachments()

void ml::DicomModifyMultiFileVolumeExport::activateAttachments ( )
overrideprotectedvirtual

Handles changes which were applied without notifications.

Reimplemented from ml::FieldContainer.

◆ handleNotification()

void ml::DicomModifyMultiFileVolumeExport::handleNotification ( Field * field)
overrideprotectedvirtual

Handles field changes.

Reimplemented from ml::Module.


The documentation for this class was generated from the following file: