comparison Core/DicomParsing/DicomModification.cpp @ 3860:9ccbbd55bc23

allow Keeping the SOPInstanceUID in /instances/../modify
author Alain Mazy <alain@mazy.be>
date Fri, 24 Apr 2020 17:30:41 +0200
parents 2a170a8f1faf
children
comparison
equal deleted inserted replaced
3856:dd0fcbf6a791 3860:9ccbbd55bc23
356 removePrivateTags_(false), 356 removePrivateTags_(false),
357 level_(ResourceType_Instance), 357 level_(ResourceType_Instance),
358 allowManualIdentifiers_(true), 358 allowManualIdentifiers_(true),
359 keepStudyInstanceUid_(false), 359 keepStudyInstanceUid_(false),
360 keepSeriesInstanceUid_(false), 360 keepSeriesInstanceUid_(false),
361 keepSopInstanceUid_(false),
361 updateReferencedRelationships_(true), 362 updateReferencedRelationships_(true),
362 isAnonymization_(false), 363 isAnonymization_(false),
363 //privateCreator_("PrivateCreator"), 364 //privateCreator_("PrivateCreator"),
364 identifierGenerator_(NULL) 365 identifierGenerator_(NULL)
365 { 366 {
385 keepStudyInstanceUid_ = true; 386 keepStudyInstanceUid_ = true;
386 } 387 }
387 else if (tag == DICOM_TAG_SERIES_INSTANCE_UID) 388 else if (tag == DICOM_TAG_SERIES_INSTANCE_UID)
388 { 389 {
389 keepSeriesInstanceUid_ = true; 390 keepSeriesInstanceUid_ = true;
391 }
392 else if (tag == DICOM_TAG_SOP_INSTANCE_UID)
393 {
394 keepSopInstanceUid_ = true;
390 } 395 }
391 else if (tag.IsPrivate()) 396 else if (tag.IsPrivate())
392 { 397 {
393 privateTagsToKeep_.insert(tag); 398 privateTagsToKeep_.insert(tag);
394 } 399 }
1101 } 1106 }
1102 1107
1103 if (level_ <= ResourceType_Instance && // Always true 1108 if (level_ <= ResourceType_Instance && // Always true
1104 !IsReplaced(DICOM_TAG_SOP_INSTANCE_UID)) 1109 !IsReplaced(DICOM_TAG_SOP_INSTANCE_UID))
1105 { 1110 {
1106 MapDicomTags(toModify, ResourceType_Instance); 1111 if (keepSopInstanceUid_)
1112 {
1113 LOG(WARNING) << "Modifying an instance while keeping its original SOPInstanceUID: This should be avoided!";
1114 }
1115 else
1116 {
1117 MapDicomTags(toModify, ResourceType_Instance);
1118 }
1107 } 1119 }
1108 1120
1109 // (7) Update the "referenced" relationships in the case of an anonymization 1121 // (7) Update the "referenced" relationships in the case of an anonymization
1110 if (isAnonymization_) 1122 if (isAnonymization_)
1111 { 1123 {
1339 static const char* REMOVE_PRIVATE_TAGS = "RemovePrivateTags"; 1351 static const char* REMOVE_PRIVATE_TAGS = "RemovePrivateTags";
1340 static const char* LEVEL = "Level"; 1352 static const char* LEVEL = "Level";
1341 static const char* ALLOW_MANUAL_IDENTIFIERS = "AllowManualIdentifiers"; 1353 static const char* ALLOW_MANUAL_IDENTIFIERS = "AllowManualIdentifiers";
1342 static const char* KEEP_STUDY_INSTANCE_UID = "KeepStudyInstanceUID"; 1354 static const char* KEEP_STUDY_INSTANCE_UID = "KeepStudyInstanceUID";
1343 static const char* KEEP_SERIES_INSTANCE_UID = "KeepSeriesInstanceUID"; 1355 static const char* KEEP_SERIES_INSTANCE_UID = "KeepSeriesInstanceUID";
1356 static const char* KEEP_SOP_INSTANCE_UID = "KeepSOPInstanceUID";
1344 static const char* UPDATE_REFERENCED_RELATIONSHIPS = "UpdateReferencedRelationships"; 1357 static const char* UPDATE_REFERENCED_RELATIONSHIPS = "UpdateReferencedRelationships";
1345 static const char* IS_ANONYMIZATION = "IsAnonymization"; 1358 static const char* IS_ANONYMIZATION = "IsAnonymization";
1346 static const char* REMOVALS = "Removals"; 1359 static const char* REMOVALS = "Removals";
1347 static const char* CLEARINGS = "Clearings"; 1360 static const char* CLEARINGS = "Clearings";
1348 static const char* PRIVATE_TAGS_TO_KEEP = "PrivateTagsToKeep"; 1361 static const char* PRIVATE_TAGS_TO_KEEP = "PrivateTagsToKeep";
1365 value[REMOVE_PRIVATE_TAGS] = removePrivateTags_; 1378 value[REMOVE_PRIVATE_TAGS] = removePrivateTags_;
1366 value[LEVEL] = EnumerationToString(level_); 1379 value[LEVEL] = EnumerationToString(level_);
1367 value[ALLOW_MANUAL_IDENTIFIERS] = allowManualIdentifiers_; 1380 value[ALLOW_MANUAL_IDENTIFIERS] = allowManualIdentifiers_;
1368 value[KEEP_STUDY_INSTANCE_UID] = keepStudyInstanceUid_; 1381 value[KEEP_STUDY_INSTANCE_UID] = keepStudyInstanceUid_;
1369 value[KEEP_SERIES_INSTANCE_UID] = keepSeriesInstanceUid_; 1382 value[KEEP_SERIES_INSTANCE_UID] = keepSeriesInstanceUid_;
1383 value[KEEP_SOP_INSTANCE_UID] = keepSopInstanceUid_;
1370 value[UPDATE_REFERENCED_RELATIONSHIPS] = updateReferencedRelationships_; 1384 value[UPDATE_REFERENCED_RELATIONSHIPS] = updateReferencedRelationships_;
1371 value[IS_ANONYMIZATION] = isAnonymization_; 1385 value[IS_ANONYMIZATION] = isAnonymization_;
1372 value[PRIVATE_CREATOR] = privateCreator_; 1386 value[PRIVATE_CREATOR] = privateCreator_;
1373 1387
1374 SerializationToolbox::WriteSetOfTags(value, removals_, REMOVALS); 1388 SerializationToolbox::WriteSetOfTags(value, removals_, REMOVALS);
1462 removePrivateTags_ = SerializationToolbox::ReadBoolean(serialized, REMOVE_PRIVATE_TAGS); 1476 removePrivateTags_ = SerializationToolbox::ReadBoolean(serialized, REMOVE_PRIVATE_TAGS);
1463 level_ = StringToResourceType(SerializationToolbox::ReadString(serialized, LEVEL).c_str()); 1477 level_ = StringToResourceType(SerializationToolbox::ReadString(serialized, LEVEL).c_str());
1464 allowManualIdentifiers_ = SerializationToolbox::ReadBoolean(serialized, ALLOW_MANUAL_IDENTIFIERS); 1478 allowManualIdentifiers_ = SerializationToolbox::ReadBoolean(serialized, ALLOW_MANUAL_IDENTIFIERS);
1465 keepStudyInstanceUid_ = SerializationToolbox::ReadBoolean(serialized, KEEP_STUDY_INSTANCE_UID); 1479 keepStudyInstanceUid_ = SerializationToolbox::ReadBoolean(serialized, KEEP_STUDY_INSTANCE_UID);
1466 keepSeriesInstanceUid_ = SerializationToolbox::ReadBoolean(serialized, KEEP_SERIES_INSTANCE_UID); 1480 keepSeriesInstanceUid_ = SerializationToolbox::ReadBoolean(serialized, KEEP_SERIES_INSTANCE_UID);
1481 keepSopInstanceUid_ = SerializationToolbox::ReadBoolean(serialized, KEEP_SOP_INSTANCE_UID);
1467 updateReferencedRelationships_ = SerializationToolbox::ReadBoolean 1482 updateReferencedRelationships_ = SerializationToolbox::ReadBoolean
1468 (serialized, UPDATE_REFERENCED_RELATIONSHIPS); 1483 (serialized, UPDATE_REFERENCED_RELATIONSHIPS);
1469 isAnonymization_ = SerializationToolbox::ReadBoolean(serialized, IS_ANONYMIZATION); 1484 isAnonymization_ = SerializationToolbox::ReadBoolean(serialized, IS_ANONYMIZATION);
1470 1485
1471 if (serialized.isMember(PRIVATE_CREATOR)) 1486 if (serialized.isMember(PRIVATE_CREATOR))