Browse Source

Add filtering by modality

Seems to work against dcm4chee servers, but not against conquest.
Steve Pieper 14 years ago
parent
commit
079c7e723e
1 changed files with 12 additions and 0 deletions
  1. 12 0
      Libs/DICOM/Core/ctkDICOMQuery.cpp

+ 12 - 0
Libs/DICOM/Core/ctkDICOMQuery.cpp

@@ -250,6 +250,18 @@ void ctkDICOMQuery::query(ctkDICOMDatabase& database )
       d->query->putAndInsertString( DCM_PatientID,
         (QString("*") + d->Filters[key].toString() + QString("*")).toAscii().data());
     }
+    if ( key == QString("Modalities") )
+    {
+      // make the filter be an "OR" of modalities using backslash (dicom-style)
+      QString modalitySearch("");
+      foreach (QString modality, d->Filters[key].toStringList())
+      {
+        modalitySearch += modality + QString("\\");
+      }
+      modalitySearch.chop(1); // remove final backslash
+      logger.debug("modalitySearch " + modalitySearch);
+      d->query->putAndInsertString( DCM_ModalitiesInStudy, modalitySearch.toAscii().data() );
+    }
   }
 
   FINDResponses *responses = new FINDResponses();