Commit e3be96b9c28c57119a76cab97fd3be9c61fbe027

Authored by Paulo Henrique Junqueira Amorim
1 parent 52b8819f

ENH: Removed shortcut to pacs temporarily

invesalius/control.py
... ... @@ -486,7 +486,8 @@ class Controller():
486 486  
487 487 if file_range != None and file_range[1] > file_range[0]:
488 488 filelist = filelist[file_range[0]:file_range[1] + 1]
489   -
  489 +
  490 + print ">>>>>>>>>>>>>>>>>>",filelist
490 491 zspacing = dicom_group.zspacing * interval
491 492 size = dicom.image.size
492 493 bits = dicom.image.bits_allocad
... ...
invesalius/gui/frame.py
... ... @@ -458,7 +458,7 @@ class MenuBar(wx.MenuBar):
458 458 file_menu = wx.Menu()
459 459 app = file_menu.Append
460 460 app(const.ID_DICOM_IMPORT, _("Import DICOM...\tCtrl+I"))
461   - app(const.ID_DICOM_NETWORK, _("Retrieve DICOM from PACS"))
  461 + #####app(const.ID_DICOM_NETWORK, _("Retrieve DICOM from PACS"))
462 462 file_menu.AppendMenu(const.ID_IMPORT_OTHERS_FILES, _("Import Others Files"), others_file_menu)
463 463 app(const.ID_PROJECT_OPEN, _("Open Project...\tCtrl+O"))
464 464 app(const.ID_PROJECT_SAVE, _("Save Project\tCtrl+S"))
... ...
invesalius/gui/import_network_panel.py
... ... @@ -220,6 +220,7 @@ class TextPanel(wx.Panel):
220 220 def __bind_pubsub_evt(self):
221 221 #ps.Publisher().subscribe(self.SelectSeries, 'Select series in import panel')
222 222 ps.Publisher().subscribe(self.Populate, 'Populate tree')
  223 + ps.Publisher().subscribe(self.SetHostsList, 'Set FindPanel hosts list')
223 224  
224 225 def __bind_events_wx(self):
225 226 self.Bind(wx.EVT_SIZE, self.OnSize)
... ... @@ -314,7 +315,7 @@ class TextPanel(wx.Panel):
314 315 tree.SetItemText(parent, "%s" % age, 2)
315 316 tree.SetItemText(parent, "%s" % gender, 3)
316 317 tree.SetItemText(parent, "%s" % study_description, 4)
317   - tree.SetItemText(parent, "%s" % modality, 5)
  318 + tree.SetItemText(parent, "%s" % "", 5)
318 319 tree.SetItemText(parent, "%s" % date + " " + time, 6)
319 320 tree.SetItemText(parent, "%s" % str(n_amount_images), 7)
320 321 tree.SetItemText(parent, "%s" % institution, 8)
... ... @@ -330,18 +331,24 @@ class TextPanel(wx.Panel):
330 331 n_images = patients[patient][series]['n_images']
331 332 date = patients[patient][series]['acquisition_date']
332 333 time = patients[patient][series]['acquisition_time']
  334 + modality = patients[patient][series]['modality']
333 335  
334   - child = tree.AppendItem(parent, serie_description)
  336 + child = tree.AppendItem(parent, series)
335 337 tree.SetItemPyData(child, series)
336 338  
337 339 tree.SetItemText(child, "%s" % serie_description, 0)
338 340 #tree.SetItemText(child, "%s" % dicom.acquisition.protocol_name, 4)
339   - #tree.SetItemText(child, "%s" % dicom.acquisition.modality, 5)
  341 + tree.SetItemText(child, "%s" % modality, 5)
340 342 tree.SetItemText(child, "%s" % date + " " + time, 6)
341 343 tree.SetItemText(child, "%s" % n_images , 7)
342 344  
343   - self.idserie_treeitem[child] = (patient, series)
  345 + self.idserie_treeitem[(patient, series)] = child
  346 +
344 347  
  348 + tree.Expand(self.root)
  349 + #tree.SelectItem(parent_select)
  350 + tree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivate)
  351 + #tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged)
345 352  
346 353 """
347 354  
... ... @@ -394,6 +401,13 @@ class TextPanel(wx.Panel):
394 401 tree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivate)
395 402 tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged)"""
396 403  
  404 + def SetHostsList(self, evt_pub):
  405 + self.hosts = evt_pub.data
  406 +
  407 + def GetHostList(self):
  408 + ps.Publisher().sendMessage('Get NodesPanel host list')
  409 + return self.hosts
  410 +
397 411 def OnSelChanged(self, evt):
398 412 item = self.tree.GetSelection()
399 413 if self._selected_by_user:
... ... @@ -418,10 +432,31 @@ class TextPanel(wx.Panel):
418 432  
419 433 def OnActivate(self, evt):
420 434 item = evt.GetItem()
421   - group = self.tree.GetItemPyData(item)
422   - my_evt = SelectEvent(myEVT_SELECT_SERIE_TEXT, self.GetId())
423   - my_evt.SetItemData(group)
424   - self.GetEventHandler().ProcessEvent(my_evt)
  435 + item_parent = self.tree.GetItemParent(item)
  436 +
  437 + patient_id = self.tree.GetItemPyData(item_parent)
  438 + serie_id = self.tree.GetItemPyData(item)
  439 +
  440 + hosts = self.GetHostList()
  441 +
  442 + for key in hosts.keys():
  443 + if key != 0:
  444 + dn = dcm_net.DicomNet()
  445 + dn.SetHost(self.hosts[key][1])
  446 + dn.SetPort(self.hosts[key][2])
  447 + dn.SetAETitleCall(self.hosts[key][3])
  448 + dn.SetAETitle(self.hosts[0][3])
  449 + dn.RunCMove((patient_id, serie_id))
  450 + #dn.SetSearchWord(self.find_txt.GetValue())
  451 +
  452 + #ps.Publisher().sendMessage('Populate tree', dn.RunCFind())
  453 +
  454 +
  455 +
  456 + #my_evt = SelectEvent(myEVT_SELECT_SERIE_TEXT, self.GetId())
  457 + #my_evt.SetItemData(group)
  458 + #self.GetEventHandler().ProcessEvent(my_evt)
  459 +
425 460  
426 461 def OnSize(self, evt):
427 462 self.tree.SetSize(self.GetSize())
... ...
invesalius/invesalius.py
... ... @@ -34,6 +34,7 @@ else:
34 34 wxversion.select('2.8-unicode', optionsRequired=True)
35 35  
36 36 import wx
  37 +from wx.lib.pubsub import setupv1
37 38 import wx.lib.pubsub as ps
38 39 import wx.lib.agw.advancedsplash as agw
39 40  
... ...
invesalius/net/dicom.py
... ... @@ -51,7 +51,7 @@ class DicomNet:
51 51 tags = [(0x0010, 0x0010), (0x0010, 0x1010), (0x0010,0x0040), (0x0008,0x1030),\
52 52 (0x0008,0x0060), (0x0008,0x0022), (0x0008,0x0080), (0x0010,0x0030),\
53 53 (0x0008,0x0050), (0x0008,0x0090), (0x0008,0x103E), (0x0008,0x0033),\
54   - (0x0008,0x0032)]
  54 + (0x0008,0x0032), (0x0020,0x000d)]
55 55  
56 56  
57 57 ds = gdcm.DataSet()
... ... @@ -109,6 +109,9 @@ class DicomNet:
109 109 acquisition_time = utils.format_time(self.GetValueFromDICOM(rt, (0x0008,0x0032)))
110 110 acquisition_date = utils.format_date(self.GetValueFromDICOM(rt, (0x0008,0x0022)))
111 111  
  112 + teste = self.GetValueFromDICOM(rt, (0x0020,0x000d))
  113 + print ">>>>>>>>>>>>>>>>>>>>", teste
  114 +
112 115 patients[patient_id][serie_id] = {'name':name, 'age':age, 'gender':gender,\
113 116 'study_description':study_description,\
114 117 'modality':modality, \
... ... @@ -125,3 +128,66 @@ class DicomNet:
125 128 patients[patient_id][serie_id]['n_images'] += 1
126 129  
127 130 return patients
  131 +
  132 +
  133 + def RunCMove(self, values):
  134 +
  135 + ds = gdcm.DataSet()
  136 +
  137 + #for v in values:
  138 +
  139 +
  140 + tg_patient = gdcm.Tag(0x0010, 0x0020)
  141 + tg_serie = gdcm.Tag(0x0020, 0x000e)
  142 +
  143 + de_patient = gdcm.DataElement(tg_patient)
  144 + de_serie = gdcm.DataElement(tg_serie)
  145 +
  146 + patient_id = str(values[0])
  147 + serie_id = str(values[1])
  148 +
  149 + print "(0x0010, 0x0020)",patient_id
  150 +
  151 + print "(0x0020, 0x000e)",serie_id
  152 + print "\n\n"
  153 +
  154 + de_patient.SetByteValue(patient_id, gdcm.VL(len(patient_id)))
  155 + de_serie.SetByteValue(serie_id, gdcm.VL(len(serie_id)))
  156 +
  157 + ds.Insert(de_patient)
  158 + ds.Insert(de_serie)
  159 +
  160 +
  161 + cnf = gdcm.CompositeNetworkFunctions()
  162 + theQuery = cnf.ConstructQuery(gdcm.ePatientRootType, gdcm.eImageOrFrame, ds)
  163 + #ret = gdcm.DataSetArrayType()
  164 +
  165 + """
  166 + CMove (const char *remote,
  167 + uint16_t portno,
  168 + const BaseRootQuery *query,
  169 +
  170 + uint16_t portscp,
  171 + const char *aetitle=NULL,
  172 + const char *call=NULL,
  173 + const char *outputdir=NULL)"""
  174 +
  175 +
  176 +
  177 + cnf.CMove(self.address, int(self.port), theQuery, 11113, self.aetitle,\
  178 + self.aetitle_call, "/home/phamorim/Desktop/output/")
  179 +
  180 +
  181 + ret = gdcm.DataSetArrayType()
  182 +
  183 + cnf.CFind(self.address, int(self.port), theQuery, ret, self.aetitle,\
  184 + self.aetitle_call)
  185 +
  186 + print "aetitle",self.aetitle
  187 + print "call",self.aetitle_call
  188 + print "Baixados..........."
  189 +
  190 +
  191 + for r in ret:
  192 + print r
  193 + print "\n"
... ...