Просмотр исходного кода

Quick-fix for incomplete data display

since the columns that should be displayed are specific for
xnat:imageSessionData objects of type xnat:subjectVariablesData are not
displayed any more.
Andreas Fetzer лет назад: 9
Родитель
Сommit
36864f8104

+ 2 - 0
Libs/XNAT/Core/ctkXnatDefaultSchemaTypes.cpp

@@ -24,6 +24,8 @@
 QString ctkXnatDefaultSchemaTypes::XSI_PROJECT = "xnat:projectData";
 QString ctkXnatDefaultSchemaTypes::XSI_SUBJECT = "xnat:subjectData";
 QString ctkXnatDefaultSchemaTypes::XSI_EXPERIMENT = "xnat:experimentData";
+QString ctkXnatDefaultSchemaTypes::XSI_IMAGE_SESSION_DATA = "xnat:imageSessionData";
+QString ctkXnatDefaultSchemaTypes::XSI_SUBJECT_VARIABLE_DATA = "xnat:subjectVariablesData";
 QString ctkXnatDefaultSchemaTypes::XSI_SCAN = "xnat:imageScanData";
 QString ctkXnatDefaultSchemaTypes::XSI_ASSESSOR = "xnat:imageAssessorData";
 QString ctkXnatDefaultSchemaTypes::XSI_FILE = "xnat:abstractResource";

+ 2 - 0
Libs/XNAT/Core/ctkXnatDefaultSchemaTypes.h

@@ -34,6 +34,8 @@ struct CTK_XNAT_CORE_EXPORT ctkXnatDefaultSchemaTypes
   static QString XSI_PROJECT; // = "xnat:projectData"
   static QString XSI_SUBJECT; // = "xnat:subjectData"
   static QString XSI_EXPERIMENT; // = "xnat:experimentData"
+  static QString XSI_IMAGE_SESSION_DATA; // = "xnat:imageSessionData"
+  static QString XSI_SUBJECT_VARIABLE_DATA; // = "xnat:subjectVariablesData"
   static QString XSI_SCAN; // = "xnat:imageScanData"
   static QString XSI_ASSESSOR; // = "xnat:imageAssessorData"
   static QString XSI_FILE; // = "xnat:abstractResource"

+ 40 - 13
Libs/XNAT/Core/ctkXnatSubject.cpp

@@ -215,6 +215,26 @@ void ctkXnatSubject::reset()
 //----------------------------------------------------------------------------
 void ctkXnatSubject::fetchImpl()
 {
+  QList<ctkXnatObject*> experiments;
+  experiments.append(this->fetchImageSessionData());
+  experiments.append(this->fetchSubjectVariablesData());
+
+  foreach (ctkXnatObject* experiment, experiments)
+  {
+    QString label = experiment->name();
+    if (!label.isEmpty())
+    {
+      experiment->setId(label);
+    }
+
+    this->add(experiment);
+  }
+  this->fetchResources();
+}
+
+//----------------------------------------------------------------------------
+QList<ctkXnatObject*> ctkXnatSubject::fetchImageSessionData()
+{
   QString experimentsUri = this->resourceUri() + "/experiments";
   ctkXnatSession* const session = this->session();
   QMap<QString, QString> paramMap;
@@ -230,21 +250,28 @@ void ctkXnatSubject::fetchImpl()
     .arg(ctkXnatExperiment::SCANNER_TYPE)
     .arg(ctkXnatExperiment::IMAGE_MODALITY);
   paramMap.insert("columns", arglist);
+  paramMap.insert(ctkXnatObject::XSI_SCHEMA_TYPE, ctkXnatDefaultSchemaTypes::XSI_IMAGE_SESSION_DATA);
   QUuid queryId = session->httpGet(experimentsUri, paramMap);
-  QList<ctkXnatObject*> experiments = session->httpResults(queryId,
-                                                           ctkXnatDefaultSchemaTypes::XSI_EXPERIMENT);
-
-  foreach (ctkXnatObject* experiment, experiments)
-  {
-    QString label = experiment->name();
-    if (!label.isEmpty())
-    {
-      experiment->setId(label);
-    }
+  return session->httpResults(queryId, ctkXnatDefaultSchemaTypes::XSI_EXPERIMENT);
+}
 
-    this->add(experiment);
-  }
-  this->fetchResources();
+//----------------------------------------------------------------------------
+QList<ctkXnatObject*> ctkXnatSubject::fetchSubjectVariablesData()
+{
+  QString experimentsUri = this->resourceUri() + "/experiments";
+  ctkXnatSession* const session = this->session();
+  QMap<QString, QString> paramMap;
+  QString arglist = QString("%1,%2,%3,%4,%5,%6")
+    .arg(ctkXnatObject::ID)
+    .arg(ctkXnatObject::LABEL)
+    .arg(ctkXnatObject::XSI_SCHEMA_TYPE)
+    .arg(INSERT_DATE)
+    .arg(INSERT_USER)
+    .arg(ctkXnatObject::URI);
+  paramMap.insert("columns", arglist);
+  paramMap.insert(ctkXnatObject::XSI_SCHEMA_TYPE, ctkXnatDefaultSchemaTypes::XSI_SUBJECT_VARIABLE_DATA);
+  QUuid queryId = session->httpGet(experimentsUri, paramMap);
+  return session->httpResults(queryId, ctkXnatDefaultSchemaTypes::XSI_EXPERIMENT);
 }
 
 //----------------------------------------------------------------------------

+ 3 - 0
Libs/XNAT/Core/ctkXnatSubject.h

@@ -100,6 +100,9 @@ private:
 
   virtual void fetchImpl();
 
+  QList<ctkXnatObject*> fetchImageSessionData();
+  QList<ctkXnatObject*> fetchSubjectVariablesData();
+
   virtual void downloadImpl(const QString&);
 
   Q_DECLARE_PRIVATE(ctkXnatSubject)