Mercurial > hg > orthanc
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)) |