瀏覽代碼

Further infrastructure for query/retrieve through gui

Add widgets to specify where the selected images should be
moved to and on what port.  The server on the other end
also needs to be configured to allow this send to take place.
Steve Pieper 14 年之前
父節點
當前提交
2a9943994f

+ 19 - 2
Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp

@@ -148,6 +148,8 @@ void ctkDICOMQueryRetrieveWidget::processRetrieve()
 {
   Q_D(ctkDICOMQueryRetrieveWidget);
 
+  QMap<QString,QVariant> serverParameters = d->ServerNodeWidget->parameters();
+
   foreach( QString studyUID, d->queriesByStudyUID.keys() )
   {
     logger.debug("need to retrieve " + studyUID + " from " + d->queriesByStudyUID[studyUID]->host());
@@ -156,8 +158,23 @@ void ctkDICOMQueryRetrieveWidget::processRetrieve()
     d->retrievalsByStudyUID[studyUID] = retrieve;
     retrieve->setCallingAETitle( query->callingAETitle() );
     retrieve->setCalledAETitle( query->calledAETitle() );
-    retrieve->setHost( query->host() );
-    //retrieve->setCallingPort( query->port() );
     retrieve->setCalledPort( query->port() );
+    retrieve->setHost( query->host() );
+
+    // pull from GUI
+    retrieve->setMoveDestinationAETitle( serverParameters["StorageAETitle"].toString() );
+    retrieve->setCallingPort( serverParameters["StoragePort"].toInt() );
+
+    logger.info ( "Starting to retrieve" );
+    try
+      {
+      retrieve->retrieveStudy ( studyUID, QDir("/tmp/ctk") );
+      }
+    catch (std::exception e)
+      {
+      logger.error ( "Retrieve failed" );
+      return;
+      }
+    logger.info ( "Retrieve success" );
   }
 }

+ 16 - 0
Libs/DICOM/Widgets/ctkDICOMServerNodeWidget.cpp

@@ -218,6 +218,20 @@ QString ctkDICOMServerNodeWidget::callingAETitle()
 }
 
 //----------------------------------------------------------------------------
+QMap<QString,QVariant> ctkDICOMServerNodeWidget::parameters()
+{
+  Q_D(ctkDICOMServerNodeWidget);
+
+  QMap<QString, QVariant> parameters;
+
+  parameters["CallingAETitle"] = d->CallingAETitle->text();
+  parameters["StorageAETitle"] = d->StorageAETitle->text();
+  parameters["StoragePort"] = d->StoragePort->text();
+
+  return parameters;
+}
+
+//----------------------------------------------------------------------------
 QStringList ctkDICOMServerNodeWidget::nodes()
 {
   Q_D(ctkDICOMServerNodeWidget);
@@ -237,6 +251,7 @@ QMap<QString, QVariant> ctkDICOMServerNodeWidget::nodeParameters(QString &node)
   Q_D(ctkDICOMServerNodeWidget);
 
   QMap<QString, QVariant> parameters;
+
   int count = d->NodeTable->rowCount();
   QStringList keys;
   keys << "Name" << "AETitle" << "Address" << "Port";
@@ -254,5 +269,6 @@ QMap<QString, QVariant> ctkDICOMServerNodeWidget::nodeParameters(QString &node)
       }
     }
   }
+
   return parameters;
 }

+ 1 - 0
Libs/DICOM/Widgets/ctkDICOMServerNodeWidget.h

@@ -41,6 +41,7 @@ public:
   virtual ~ctkDICOMServerNodeWidget();
 
   QString callingAETitle();
+  QMap<QString,QVariant> parameters();
   QStringList nodes();
   QMap<QString,QVariant> nodeParameters(QString &node);