Browse Source

Removing multiple occurances of Visit in imageBrowser

Andrej Studen 2 years ago
parent
commit
b6838cf5ea
1 changed files with 28 additions and 18 deletions
  1. 28 18
      slicerModules/imageBrowser.py

+ 28 - 18
slicerModules/imageBrowser.py

@@ -154,6 +154,7 @@ class imageBrowserWidget(ScriptedLoadableModuleWidget):
         self.setupList=qt.QComboBox()
         self.setupList.addItem('<Select>')
         self.setupList.addItem("limfomiPET_iBrowser.json")
+        self.setupList.addItem("iraemm_iBrowser.json")
         self.setupList.currentIndexChanged.connect(self.onSetupListChanged)
         setupFormLayout.addRow("Setup:",self.setupList)
 
@@ -265,16 +266,15 @@ class imageBrowserWidget(ScriptedLoadableModuleWidget):
         self.serverList.setStyleSheet('background-color: green')
 
     def onPatientListChanged(self,i):
-        idFilter={'variable':'PatientId',
-            'value':self.patientList.currentText,
-            'oper':'eq'}
-        ds=self.logic.getDataset(dbFilter=[idFilter])
+        ds=self.logic.getDataset(dbFilter={'participant':self.patientList.currentText})
 
         seq=[int(row['SequenceNum']) for row in ds['rows']]
-        self.visitList.clear()  
+        seq=['Visit {}'.format(s) for s in seq]
+        print(seq)
+        self.visitList.clear()   
             
         for s in seq:
-            self.visitList.addItem("Visit "+str(s))
+            self.visitList.addItem(s)
         self.onVisitListChanged(0)
 
     def onVisitListChanged(self,i):
@@ -284,10 +284,9 @@ class imageBrowserWidget(ScriptedLoadableModuleWidget):
             return
 
         print("Visit: Selected item: {}->{}".format(i,s))
-        idFilter={'variable':'PatientId',\
-              'value':self.patientList.currentText,'oper':'eq'}
-        sFilter={'variable':'SequenceNum','value':s,'oper':'eq'}
-        ds=self.logic.getDataset(dbFilter=[idFilter,sFilter])
+        dbFilter={'participant':self.patientList.currentText,
+            'seqNum':s}
+        ds=self.logic.getDataset(dbFilter=dbFilter)
         if not len(ds['rows'])==1:
             print("Found incorrect number {} of matches for [{}]/[{}]".\
                   format(len(ds['rows']),\
@@ -450,11 +449,24 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
         project=dset['project']
         schema=dset['schema']
         query=dset['query']
+        qFilter=[]
+        for f in dbFilter:
+            if f=='participant':
+                qFilter.append({'variable':self.isetup['participantField'],
+                    'value':dbFilter[f],'oper':'eq'})
+                continue
+            if f=='seqNum':
+                qFilter.append({'variable':'SequenceNum',
+                    'value':'{}'.format(dbFilter[f]),
+                    'oper':'eq'})
+                continue
+            qFilter.append({'variable':f,'value':dbFilter[f],'oper':'eq'})
+
         try:
             return self.db.selectRows(project,schema,query, \
-                dbFilter,dset['view'])
+                qFilter,dset['view'])
         except KeyError:
-            return self.db.selectRows(project,schema,query,dbFilter)
+            return self.db.selectRows(project,schema,query,qFilter)
 
     def loadImage(self,iData):
 
@@ -519,13 +531,11 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
             foreground=self.volumeNode['PET'],foregroundOpacity=0.5,fit=True)
 
     def loadSegmentation(self,row):
-        userFilter={'variable':'User','value':'{}'.format(self.remoteId['id']),
-                'oper':'eq'}
-        pField=self.isetup['participantField']
-        idFilter={'variable':pField,'value':row[pField],'oper':'eq'}
-        visitFilter={'variable':'visitCode','value':row['visitCode'],'oper':'eq'}
+        dbFilter={'User':'{}'.format(self.remoteId['id']),
+            'participant':row[self.isetup['participantField']],
+            'visitCode':row['visitCode']}
         ds=self.getDataset(name='SegmentationsMaster',
-                dbFilter=[idFilter,visitFilter,userFilter])
+                dbFilter=dbFilter)
         if len(ds['rows'])>1:
             print('Multiple segmentations found!')
             return