diff OrthancServer/DicomProtocol/DicomUserConnection.cpp @ 519:1b2cdc855bd3

Parameter for PACS manufacturer, support for ClearCanvas
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 20 Aug 2013 13:39:42 +0200
parents 4d5f0857ec9c
children 08eca5d86aad
line wrap: on
line diff
--- a/OrthancServer/DicomProtocol/DicomUserConnection.cpp	Mon Aug 19 14:47:03 2013 +0200
+++ b/OrthancServer/DicomProtocol/DicomUserConnection.cpp	Tue Aug 20 13:39:42 2013 +0200
@@ -294,7 +294,20 @@
       break;
 
     case FindRootModel_Instance:
-      DU_putStringDOElement(dataset.get(), DcmTagKey(0x0008, 0x0052), "INSTANCE");
+      if (manufacturer_ == ModalityManufacturer_ClearCanvas)
+      {
+        // 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
+        printf("CLEAR CANVAS\n");
+        DU_putStringDOElement(dataset.get(), DcmTagKey(0x0008, 0x0052), "IMAGE");
+      }
+      else
+      {
+        printf("GENERIC\n");
+        DU_putStringDOElement(dataset.get(), DcmTagKey(0x0008, 0x0052), "INSTANCE");
+      }
+
       sopClass = UID_FINDStudyRootQueryRetrieveInformationModel;
 
       // Accession number
@@ -453,6 +466,7 @@
     distantAet_ = "ANY-SCP";
     distantPort_ = 104;
     distantHost_ = "127.0.0.1";
+    manufacturer_ = ModalityManufacturer_Generic;
 
     pimpl_->net_ = NULL;
     pimpl_->params_ = NULL;
@@ -476,6 +490,12 @@
     distantAet_ = aet;
   }
 
+  void DicomUserConnection::SetDistantManufacturer(ModalityManufacturer manufacturer)
+  {
+    Close();
+    manufacturer_ = manufacturer;
+  }
+
 
   void DicomUserConnection::SetDistantHost(const std::string& host)
   {