# HG changeset patch # User Sebastien Jodogne # Date 1679739669 -3600 # Node ID d2626a0628094c2b06915de8019c29d8d43dc54c # Parent 1e406c23b35243e69b095772f6dc48245c625818 fix DicomMap::SetupFindXXXTemplate() methods diff -r 1e406c23b352 -r d2626a062809 OrthancFramework/Sources/DicomFormat/DicomMap.cpp --- a/OrthancFramework/Sources/DicomFormat/DicomMap.cpp Sat Mar 25 11:11:11 2023 +0100 +++ b/OrthancFramework/Sources/DicomFormat/DicomMap.cpp Sat Mar 25 11:21:09 2023 +0100 @@ -587,73 +587,81 @@ } } - static void SetupFindTemplate(DicomMap& result, - const std::set& mainDicomTags) + void DicomMap::SetupFindPatientTemplate(DicomMap& result) { result.Clear(); - for (std::set::const_iterator itmt = mainDicomTags.begin(); - itmt != mainDicomTags.end(); ++itmt) - { - result.SetValue(*itmt, "", false); - } - } + // Identifying tags + result.SetValue(DICOM_TAG_PATIENT_ID, "", false); - void DicomMap::SetupFindPatientTemplate(DicomMap& result) - { - std::set mainDicomTags; - DicomMap::MainDicomTagsConfiguration::GetInstance().GetMainDicomTagsByLevel(mainDicomTags, ResourceType_Patient); - SetupFindTemplate(result, mainDicomTags); + // Other tags in the "Patient" module + result.SetValue(DICOM_TAG_OTHER_PATIENT_IDS, "", false); + result.SetValue(DICOM_TAG_PATIENT_BIRTH_DATE, "", false); + result.SetValue(DICOM_TAG_PATIENT_NAME, "", false); + result.SetValue(DICOM_TAG_PATIENT_SEX, "", false); } void DicomMap::SetupFindStudyTemplate(DicomMap& result) { - std::set mainDicomTags; - DicomMap::MainDicomTagsConfiguration::GetInstance().GetMainDicomTagsByLevel(mainDicomTags, ResourceType_Study); - SetupFindTemplate(result, mainDicomTags); + result.Clear(); + + // Identifying tags + result.SetValue(DICOM_TAG_PATIENT_ID, "", false); result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false); - result.SetValue(DICOM_TAG_PATIENT_ID, "", false); + result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "", false); - // These main DICOM tags are only indirectly related to the - // General Study Module, remove them - result.Remove(DICOM_TAG_INSTITUTION_NAME); - result.Remove(DICOM_TAG_REQUESTING_PHYSICIAN); - result.Remove(DICOM_TAG_REQUESTED_PROCEDURE_DESCRIPTION); + // Other tags in the "General Study" module + result.SetValue(DICOM_TAG_REFERRING_PHYSICIAN_NAME, "", false); + result.SetValue(DICOM_TAG_STUDY_DATE, "", false); + result.SetValue(DICOM_TAG_STUDY_DESCRIPTION, "", false); + result.SetValue(DICOM_TAG_STUDY_ID, "", false); + result.SetValue(DICOM_TAG_STUDY_TIME, "", false); } void DicomMap::SetupFindSeriesTemplate(DicomMap& result) { - std::set mainDicomTags; - DicomMap::MainDicomTagsConfiguration::GetInstance().GetMainDicomTagsByLevel(mainDicomTags, ResourceType_Series); - SetupFindTemplate(result, mainDicomTags); + result.Clear(); + + // Identifying tags + result.SetValue(DICOM_TAG_PATIENT_ID, "", false); result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false); - result.SetValue(DICOM_TAG_PATIENT_ID, "", false); result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "", false); + result.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "", false); - // These tags are considered as "main" by Orthanc, but are not in the Series module - result.Remove(DicomTag(0x0008, 0x0070)); // Manufacturer - result.Remove(DicomTag(0x0008, 0x1010)); // Station name - result.Remove(DicomTag(0x0018, 0x0024)); // Sequence name - result.Remove(DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES); - result.Remove(DICOM_TAG_IMAGES_IN_ACQUISITION); - result.Remove(DICOM_TAG_NUMBER_OF_SLICES); - result.Remove(DICOM_TAG_NUMBER_OF_TEMPORAL_POSITIONS); - result.Remove(DICOM_TAG_NUMBER_OF_TIME_SLICES); - result.Remove(DICOM_TAG_IMAGE_ORIENTATION_PATIENT); - result.Remove(DICOM_TAG_SERIES_TYPE); - result.Remove(DICOM_TAG_ACQUISITION_DEVICE_PROCESSING_DESCRIPTION); - result.Remove(DICOM_TAG_CONTRAST_BOLUS_AGENT); + // Other tags in the "General Series" module + result.SetValue(DICOM_TAG_BODY_PART_EXAMINED, "", false); + result.SetValue(DICOM_TAG_MODALITY, "", false); + result.SetValue(DICOM_TAG_OPERATOR_NAME, "", false); + result.SetValue(DICOM_TAG_PERFORMED_PROCEDURE_STEP_DESCRIPTION, "", false); + result.SetValue(DICOM_TAG_PROTOCOL_NAME, "", false); + result.SetValue(DICOM_TAG_SERIES_DATE, "", false); + result.SetValue(DICOM_TAG_SERIES_DESCRIPTION, "", false); + result.SetValue(DICOM_TAG_SERIES_NUMBER, "", false); + result.SetValue(DICOM_TAG_SERIES_TIME, "", false); } void DicomMap::SetupFindInstanceTemplate(DicomMap& result) { - std::set mainDicomTags; - DicomMap::MainDicomTagsConfiguration::GetInstance().GetMainDicomTagsByLevel(mainDicomTags, ResourceType_Instance); - SetupFindTemplate(result, mainDicomTags); + result.Clear(); + + // Identifying tags + result.SetValue(DICOM_TAG_PATIENT_ID, "", false); result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false); - result.SetValue(DICOM_TAG_PATIENT_ID, "", false); result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "", false); result.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "", false); + result.SetValue(DICOM_TAG_SOP_INSTANCE_UID, "", false); + + // Other tags in the "SOP Common" module + result.SetValue(DICOM_TAG_ACQUISITION_NUMBER, "", false); + result.SetValue(DICOM_TAG_IMAGE_COMMENTS, "", false); + result.SetValue(DICOM_TAG_IMAGE_INDEX, "", false); + result.SetValue(DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "", false); + result.SetValue(DICOM_TAG_IMAGE_POSITION_PATIENT, "", false); + result.SetValue(DICOM_TAG_INSTANCE_CREATION_DATE, "", false); + result.SetValue(DICOM_TAG_INSTANCE_CREATION_TIME, "", false); + result.SetValue(DICOM_TAG_INSTANCE_NUMBER, "", false); + result.SetValue(DICOM_TAG_NUMBER_OF_FRAMES, "", false); + result.SetValue(DICOM_TAG_TEMPORAL_POSITION_IDENTIFIER, "", false); } diff -r 1e406c23b352 -r d2626a062809 OrthancFramework/UnitTestsSources/DicomMapTests.cpp --- a/OrthancFramework/UnitTestsSources/DicomMapTests.cpp Sat Mar 25 11:11:11 2023 +0100 +++ b/OrthancFramework/UnitTestsSources/DicomMapTests.cpp Sat Mar 25 11:21:09 2023 +0100 @@ -1076,6 +1076,9 @@ { DicomMap m; + m.SetValue(DICOM_TAG_ENCAPSULATED_DOCUMENT, "nope", false); + m.SetValue(DICOM_TAG_PATIENT_ID, "patient_id", false); + DicomMap::SetupFindPatientTemplate(m); std::set tags; m.GetTags(tags); @@ -1092,6 +1095,9 @@ { DicomMap m; + m.SetValue(DICOM_TAG_ENCAPSULATED_DOCUMENT, "nope", false); + m.SetValue(DICOM_TAG_PATIENT_ID, "patient_id", false); + DicomMap::SetupFindStudyTemplate(m); std::set tags; m.GetTags(tags); @@ -1111,6 +1117,9 @@ { DicomMap m; + m.SetValue(DICOM_TAG_ENCAPSULATED_DOCUMENT, "nope", false); + m.SetValue(DICOM_TAG_PATIENT_ID, "patient_id", false); + DicomMap::SetupFindSeriesTemplate(m); std::set tags; m.GetTags(tags); @@ -1135,6 +1144,9 @@ { DicomMap m; + m.SetValue(DICOM_TAG_ENCAPSULATED_DOCUMENT, "nope", false); + m.SetValue(DICOM_TAG_PATIENT_ID, "patient_id", false); + DicomMap::SetupFindInstanceTemplate(m); std::set tags; m.GetTags(tags);