|
@@ -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
|