# HG changeset patch # User Sebastien Jodogne # Date 1679739071 -3600 # Node ID 1e406c23b35243e69b095772f6dc48245c625818 # Parent 02c7e4aa79463d0f316372575466947f511de923 added unit test DicomMap.SetupFindTemplates diff -r 02c7e4aa7946 -r 1e406c23b352 OrthancFramework/Sources/DicomFormat/DicomMap.cpp --- a/OrthancFramework/Sources/DicomFormat/DicomMap.cpp Sat Mar 25 10:47:29 2023 +0100 +++ b/OrthancFramework/Sources/DicomFormat/DicomMap.cpp Sat Mar 25 11:11:11 2023 +0100 @@ -76,7 +76,8 @@ DICOM_TAG_STUDY_DESCRIPTION, DICOM_TAG_ACCESSION_NUMBER, DICOM_TAG_STUDY_INSTANCE_UID, - // New in db v6 + + // New in db v6 (Orthanc 0.9.5) DICOM_TAG_REQUESTED_PROCEDURE_DESCRIPTION, DICOM_TAG_INSTITUTION_NAME, DICOM_TAG_REQUESTING_PHYSICIAN, @@ -103,7 +104,7 @@ DICOM_TAG_NUMBER_OF_TIME_SLICES, DICOM_TAG_SERIES_INSTANCE_UID, - // New in db v6 + // New in db v6 (Orthanc 0.9.5) DICOM_TAG_IMAGE_ORIENTATION_PATIENT, DICOM_TAG_SERIES_TYPE, DICOM_TAG_OPERATOR_NAME, @@ -123,7 +124,7 @@ DICOM_TAG_TEMPORAL_POSITION_IDENTIFIER, DICOM_TAG_SOP_INSTANCE_UID, - // New in db v6 + // New in db v6 (Orthanc 0.9.5) DICOM_TAG_IMAGE_POSITION_PATIENT, DICOM_TAG_IMAGE_COMMENTS, diff -r 02c7e4aa7946 -r 1e406c23b352 OrthancFramework/UnitTestsSources/DicomMapTests.cpp --- a/OrthancFramework/UnitTestsSources/DicomMapTests.cpp Sat Mar 25 10:47:29 2023 +0100 +++ b/OrthancFramework/UnitTestsSources/DicomMapTests.cpp Sat Mar 25 11:11:11 2023 +0100 @@ -1066,6 +1066,101 @@ } +TEST(DicomMap, SetupFindTemplates) +{ + /** + * The templates for C-FIND must be common to all the Orthanc + * servers, and must not be altered by the "ExtraMainDicomTags" + * configuration option that was introduced in Orthanc 1.11.0. + **/ + + { + DicomMap m; + DicomMap::SetupFindPatientTemplate(m); + std::set tags; + m.GetTags(tags); + + // This corresponds to the values of DEFAULT_PATIENT_MAIN_DICOM_TAGS + ASSERT_EQ(5u, tags.size()); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PATIENT_ID, "nope", false)); + + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_OTHER_PATIENT_IDS, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PATIENT_BIRTH_DATE, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PATIENT_NAME, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PATIENT_SEX, "nope", false)); + } + + { + DicomMap m; + DicomMap::SetupFindStudyTemplate(m); + std::set tags; + m.GetTags(tags); + + // This corresponds to the values of DEFAULT_STUDY_MAIN_DICOM_TAGS + ASSERT_EQ(8u, tags.size()); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PATIENT_ID, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_ACCESSION_NUMBER, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_STUDY_INSTANCE_UID, "nope", false)); + + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_REFERRING_PHYSICIAN_NAME, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_STUDY_DATE, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_STUDY_DESCRIPTION, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_STUDY_ID, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_STUDY_TIME, "nope", false)); + } + + { + DicomMap m; + DicomMap::SetupFindSeriesTemplate(m); + std::set tags; + m.GetTags(tags); + + // This corresponds to the values of DEFAULT_SERIES_MAIN_DICOM_TAGS + ASSERT_EQ(13u, tags.size()); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PATIENT_ID, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_ACCESSION_NUMBER, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_STUDY_INSTANCE_UID, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_SERIES_INSTANCE_UID, "nope", false)); + + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_BODY_PART_EXAMINED, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_MODALITY, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_OPERATOR_NAME, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PERFORMED_PROCEDURE_STEP_DESCRIPTION, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PROTOCOL_NAME, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_SERIES_DATE, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_SERIES_DESCRIPTION, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_SERIES_NUMBER, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_SERIES_TIME, "nope", false)); + } + + { + DicomMap m; + DicomMap::SetupFindInstanceTemplate(m); + std::set tags; + m.GetTags(tags); + + // This corresponds to the values of DEFAULT_INSTANCE_MAIN_DICOM_TAGS + ASSERT_EQ(15u, tags.size()); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_PATIENT_ID, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_ACCESSION_NUMBER, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_STUDY_INSTANCE_UID, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_SERIES_INSTANCE_UID, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_SOP_INSTANCE_UID, "nope", false)); + + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_ACQUISITION_NUMBER, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_IMAGE_COMMENTS, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_IMAGE_INDEX, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_IMAGE_POSITION_PATIENT, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_INSTANCE_CREATION_DATE, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_INSTANCE_CREATION_TIME, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_INSTANCE_NUMBER, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_NUMBER_OF_FRAMES, "nope", false)); + ASSERT_EQ("", m.GetStringValue(DICOM_TAG_TEMPORAL_POSITION_IDENTIFIER, "nope", false)); + } +} + + #if ORTHANC_SANDBOXED != 1 #include "../Sources/SystemToolbox.h"