In this scenario a DICOM image is loaded and stored in the data storage. In order to find this data node later, the function mitk::DataNode::Pointer node = m_DataStorage->GetNode(...) is used.
As a parameter a NodePredicateDataProperty has been used that is initialized with a TemporoSpatialStringProperty:
std::string propertyName = GeneratePropertyNameForDICOMTag(0x0020, 0x000E); const std::string& DICOMID = "TheDICOMValueOfTheDICOMTag"; TemporoSpatialStringProperty::Pointer DICOMIDProperty = TemporoSpatialStringProperty::New(DICOMID); NodePredicateDataProperty::Pointer DICOMIDPredicate = NodePredicateDataProperty::New(propertyName.c_str(), DICOMIDProperty); return DICOMIDPredicate;
When usind the GetNode(...)-function, the NodePredicateDataProperty::CheckNode-function is called. Here the TemporoSpatialStringProperty of the node predicate is compared to the TemporoSpatialStringProperty of the data node.
Here, the properties never match: The created TemporoSpatialStringProperty has only one entry (the DICOM Tag with it's value), but the original data node has e.g. 400 entries, all with the same values. I guess this is due to the number of 400 dicom images in the folder that represent the DICOM image.
How is this property to be used?