changeset 3561:bdafff1ce443

C-Find SCU at Instance level now sets the 0008,0052 tag to IMAGE per default (was INSTANCE). Source: https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/orthanc-users/FYxHXzlaQ0M/rn6d0SowAAAJ
author Alain Mazy <alain@mazy.be>
date Thu, 07 Nov 2019 10:38:46 +0100
parents 28ab86c6730e
children f47149cdc048
files Core/DicomNetworking/DicomUserConnection.cpp Core/Enumerations.cpp Core/Enumerations.h NEWS Resources/Configuration.json UnitTestsSources/MultiThreadingTests.cpp UnitTestsSources/UnitTestsMain.cpp
diffstat 7 files changed, 16 insertions(+), 56 deletions(-) [+]
line wrap: on
line diff
--- a/Core/DicomNetworking/DicomUserConnection.cpp	Thu Nov 07 07:20:42 2019 +0100
+++ b/Core/DicomNetworking/DicomUserConnection.cpp	Thu Nov 07 10:38:46 2019 +0100
@@ -703,22 +703,8 @@
         break;
 
       case ResourceType_Instance:
-        clevel = "INSTANCE";
-        if (manufacturer_ == ModalityManufacturer_ClearCanvas ||
-            manufacturer_ == ModalityManufacturer_Dcm4Chee ||
-            manufacturer_ == ModalityManufacturer_GE)
-        {
-          // This is a particular case for ClearCanvas, thanks to Peter Somlo <peter.somlo@gmail.com>.
-          // https://groups.google.com/d/msg/orthanc-users/j-6C3MAVwiw/iolB9hclom8J
-          // http://www.clearcanvas.ca/Home/Community/OldForums/tabid/526/aff/11/aft/14670/afv/topic/Default.aspx
-          DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "IMAGE");
-          clevel = "IMAGE";
-        }
-        else
-        {
-          DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "INSTANCE");
-        }
-
+        clevel = "IMAGE";
+        DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "IMAGE");
         sopClass = UID_FINDStudyRootQueryRetrieveInformationModel;
         break;
 
@@ -808,19 +794,7 @@
         break;
 
       case ResourceType_Instance:
-        if (manufacturer_ == ModalityManufacturer_ClearCanvas ||
-            manufacturer_ == ModalityManufacturer_Dcm4Chee ||
-            manufacturer_ == ModalityManufacturer_GE)
-        {
-          // This is a particular case for ClearCanvas, thanks to Peter Somlo <peter.somlo@gmail.com>.
-          // https://groups.google.com/d/msg/orthanc-users/j-6C3MAVwiw/iolB9hclom8J
-          // http://www.clearcanvas.ca/Home/Community/OldForums/tabid/526/aff/11/aft/14670/afv/topic/Default.aspx
-          DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "IMAGE");
-        }
-        else
-        {
-          DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "INSTANCE");
-        }
+        DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "IMAGE");
         break;
 
       default:
--- a/Core/Enumerations.cpp	Thu Nov 07 07:20:42 2019 +0100
+++ b/Core/Enumerations.cpp	Thu Nov 07 10:38:46 2019 +0100
@@ -824,12 +824,6 @@
       case ModalityManufacturer_StoreScp:
         return "StoreScp";
       
-      case ModalityManufacturer_ClearCanvas:
-        return "ClearCanvas";
-      
-      case ModalityManufacturer_Dcm4Chee:
-        return "Dcm4Chee";
-      
       case ModalityManufacturer_Vitrea:
         return "Vitrea";
       
@@ -1560,18 +1554,10 @@
     {
       return ModalityManufacturer_GenericNoUniversalWildcard;
     }
-    else if (manufacturer == "ClearCanvas")
-    {
-      return ModalityManufacturer_ClearCanvas;
-    }
     else if (manufacturer == "StoreScp")
     {
       return ModalityManufacturer_StoreScp;
     }
-    else if (manufacturer == "Dcm4Chee")
-    {
-      return ModalityManufacturer_Dcm4Chee;
-    }
     else if (manufacturer == "Vitrea")
     {
       return ModalityManufacturer_Vitrea;
@@ -1587,7 +1573,10 @@
       obsolete = true;
     }
     else if (manufacturer == "EFilm2" ||
-             manufacturer == "MedInria")
+             manufacturer == "MedInria" ||
+             manufacturer == "ClearCanvas" ||
+             manufacturer == "Dcm4Chee"
+             )
     {
       result = ModalityManufacturer_Generic;
       obsolete = true;
@@ -1600,8 +1589,8 @@
 
     if (obsolete)
     {
-      LOG(WARNING) << "The \"" << manufacturer << "\" manufacturer is obsolete since "
-                   << "Orthanc 1.3.0. To guarantee compatibility with future Orthanc "
+      LOG(WARNING) << "The \"" << manufacturer << "\" manufacturer is now obsolete. "
+                   << "To guarantee compatibility with future Orthanc "
                    << "releases, you should replace it by \""
                    << EnumerationToString(result)
                    << "\" in your configuration file.";
--- a/Core/Enumerations.h	Thu Nov 07 07:20:42 2019 +0100
+++ b/Core/Enumerations.h	Thu Nov 07 10:38:46 2019 +0100
@@ -612,8 +612,6 @@
     ModalityManufacturer_GenericNoWildcardInDates,
     ModalityManufacturer_GenericNoUniversalWildcard,
     ModalityManufacturer_StoreScp,
-    ModalityManufacturer_ClearCanvas,
-    ModalityManufacturer_Dcm4Chee,
     ModalityManufacturer_Vitrea,
     ModalityManufacturer_GE
   };
--- a/NEWS	Thu Nov 07 07:20:42 2019 +0100
+++ b/NEWS	Thu Nov 07 10:38:46 2019 +0100
@@ -2,7 +2,8 @@
 ===============================
 
 * "/changes": Allow the "limit" argument to be greater than 100
-
+* C-Find SCU at Instance level now sets the 0008,0052 tag at IMAGE per default (was INSTANCE).
+  Therefore, the "ClearCanvas" and "Dcm4Chee" modality manufacturer have now been deprecated.
 
 Version 1.5.8 (2019-10-16)
 ==========================
--- a/Resources/Configuration.json	Thu Nov 07 07:20:42 2019 +0100
+++ b/Resources/Configuration.json	Thu Nov 07 10:38:46 2019 +0100
@@ -189,15 +189,13 @@
      * - "GenericNoUniversalWildcard" (to replace "*" by "" in all fields
      *   in outgoing C-Find SCU requests originating from Orthanc),
      * - "StoreScp" (storescp tool from DCMTK),
-     * - "ClearCanvas",
-     * - "Dcm4Chee",
      * - "Vitrea",
      * - "GE" (Enterprise Archive, MRI consoles and Advantage Workstation
      *   from GE Healthcare).
      *
      * This parameter is case-sensitive.
      **/
-    // "clearcanvas" : [ "CLEARCANVAS", "192.168.1.1", 104, "ClearCanvas" ]
+    // "vitrea" : [ "VITREA", "192.168.1.1", 104, "Vitrea" ]
 
     /**
      * By default, the Orthanc SCP accepts all DICOM commands (C-ECHO,
--- a/UnitTestsSources/MultiThreadingTests.cpp	Thu Nov 07 07:20:42 2019 +0100
+++ b/UnitTestsSources/MultiThreadingTests.cpp	Thu Nov 07 10:38:46 2019 +0100
@@ -1909,7 +1909,7 @@
     modality.SetApplicationEntityTitle("HELLO");
     modality.SetHost("world");
     modality.SetPortNumber(45);
-    modality.SetManufacturer(ModalityManufacturer_Dcm4Chee);
+    modality.SetManufacturer(ModalityManufacturer_GenericNoWildcardInDates);
     modality.Serialize(s, true);
     ASSERT_EQ(Json::objectValue, s.type());
   }
@@ -1919,7 +1919,7 @@
     ASSERT_EQ("HELLO", modality.GetApplicationEntityTitle());
     ASSERT_EQ("world", modality.GetHost());
     ASSERT_EQ(45u, modality.GetPortNumber());
-    ASSERT_EQ(ModalityManufacturer_Dcm4Chee, modality.GetManufacturer());
+    ASSERT_EQ(ModalityManufacturer_GenericNoWildcardInDates, modality.GetManufacturer());
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Echo));
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Find));
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Get));
--- a/UnitTestsSources/UnitTestsMain.cpp	Thu Nov 07 07:20:42 2019 +0100
+++ b/UnitTestsSources/UnitTestsMain.cpp	Thu Nov 07 10:38:46 2019 +0100
@@ -630,13 +630,13 @@
   ASSERT_STREQ("GenericNoWildcardInDates", EnumerationToString(StringToModalityManufacturer("GenericNoWildcardInDates")));
   ASSERT_STREQ("GenericNoUniversalWildcard", EnumerationToString(StringToModalityManufacturer("GenericNoUniversalWildcard")));
   ASSERT_STREQ("StoreScp", EnumerationToString(StringToModalityManufacturer("StoreScp")));
-  ASSERT_STREQ("ClearCanvas", EnumerationToString(StringToModalityManufacturer("ClearCanvas")));
-  ASSERT_STREQ("Dcm4Chee", EnumerationToString(StringToModalityManufacturer("Dcm4Chee")));
   ASSERT_STREQ("Vitrea", EnumerationToString(StringToModalityManufacturer("Vitrea")));
   ASSERT_STREQ("GE", EnumerationToString(StringToModalityManufacturer("GE")));
   // backward compatibility tests (to remove once we make these manufacturer really obsolete)
   ASSERT_STREQ("Generic", EnumerationToString(StringToModalityManufacturer("MedInria")));
   ASSERT_STREQ("Generic", EnumerationToString(StringToModalityManufacturer("EFilm2")));
+  ASSERT_STREQ("Generic", EnumerationToString(StringToModalityManufacturer("ClearCanvas")));
+  ASSERT_STREQ("Generic", EnumerationToString(StringToModalityManufacturer("Dcm4Chee")));
   ASSERT_STREQ("GenericNoWildcardInDates", EnumerationToString(StringToModalityManufacturer("SyngoVia")));
   ASSERT_STREQ("GenericNoWildcardInDates", EnumerationToString(StringToModalityManufacturer("AgfaImpax")));
 }