diff Core/DicomNetworking/DicomUserConnection.cpp @ 2888:61a5667f37d9

New modality manufacturer: "GE" for GE Healthcare EA and AW
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 13 Oct 2018 12:17:16 +0200
parents 73bc0c32547c
children d924f9bb61cc
line wrap: on
line diff
--- a/Core/DicomNetworking/DicomUserConnection.cpp	Fri Oct 12 14:37:54 2018 +0200
+++ b/Core/DicomNetworking/DicomUserConnection.cpp	Sat Oct 13 12:17:16 2018 +0200
@@ -625,12 +625,14 @@
       case ResourceType_Instance:
         clevel = "INSTANCE";
         if (manufacturer_ == ModalityManufacturer_ClearCanvas ||
-            manufacturer_ == ModalityManufacturer_Dcm4Chee)
+            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, DcmTagKey(0x0008, 0x0052), "IMAGE");
+          clevel = "IMAGE";
         }
         else
         {
@@ -644,6 +646,18 @@
         throw OrthancException(ErrorCode_ParameterOutOfRange);
     }
 
+
+    const char* universal;
+    if (manufacturer_ == ModalityManufacturer_GE)
+    {
+      universal = "*";
+    }
+    else
+    {
+      universal = "";
+    }      
+    
+
     // Add the expected tags for this query level.
     // WARNING: Do not reorder or add "break" in this switch-case!
     switch (level)
@@ -651,27 +665,37 @@
       case ResourceType_Instance:
         // SOP Instance UID
         if (!fields.HasTag(0x0008, 0x0018))
-          DU_putStringDOElement(dataset, DcmTagKey(0x0008, 0x0018), "");
+        {
+          DU_putStringDOElement(dataset, DcmTagKey(0x0008, 0x0018), universal);
+        }
 
       case ResourceType_Series:
         // Series instance UID
         if (!fields.HasTag(0x0020, 0x000e))
-          DU_putStringDOElement(dataset, DcmTagKey(0x0020, 0x000e), "");
+        {
+          DU_putStringDOElement(dataset, DcmTagKey(0x0020, 0x000e), universal);
+        }
 
       case ResourceType_Study:
         // Accession number
         if (!fields.HasTag(0x0008, 0x0050))
-          DU_putStringDOElement(dataset, DcmTagKey(0x0008, 0x0050), "");
+        {
+          DU_putStringDOElement(dataset, DcmTagKey(0x0008, 0x0050), universal);
+        }
 
         // Study instance UID
         if (!fields.HasTag(0x0020, 0x000d))
-          DU_putStringDOElement(dataset, DcmTagKey(0x0020, 0x000d), "");
+        {
+          DU_putStringDOElement(dataset, DcmTagKey(0x0020, 0x000d), universal);
+        }
 
       case ResourceType_Patient:
         // Patient ID
         if (!fields.HasTag(0x0010, 0x0020))
-          DU_putStringDOElement(dataset, DcmTagKey(0x0010, 0x0020), "");
-
+        {
+          DU_putStringDOElement(dataset, DcmTagKey(0x0010, 0x0020), universal);
+        }
+        
         break;
 
       default:
@@ -709,7 +733,8 @@
 
       case ResourceType_Instance:
         if (manufacturer_ == ModalityManufacturer_ClearCanvas ||
-            manufacturer_ == ModalityManufacturer_Dcm4Chee)
+            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