Package Gnumed :: Package wxpython :: Module gmEMRTextDump
[frames] | no frames]

Source Code for Module Gnumed.wxpython.gmEMRTextDump

  1  """GNUmed scrolled window text dump of EMR content. 
  2  """ 
  3  #============================================================ 
  4  __version__ = "$Revision: 1.22 $" 
  5  __author__ = "K.Hilbert <Karsten.Hilbert@gmx.net>" 
  6   
  7  import sys, string 
  8   
  9   
 10  import wx 
 11   
 12   
 13  from Gnumed.pycommon import gmDispatcher, gmExceptions 
 14  from Gnumed.business import gmPerson 
 15   
 16   
 17  _log = gmLog.gmDefLog 
 18  #============================================================ 
19 -class gmEMRDumpPanel(wx.Panel):
20 - def __init__(self, *args, **kwargs):
21 wx.Panel.__init__(self, *args, **kwargs) 22 self.__do_layout() 23 24 if not self.__register_events(): 25 raise gmExceptions.ConstructorError, 'cannot register interests'
26 #--------------------------------------------------------
27 - def __do_layout(self):
28 self.txt = wx.TextCtrl( 29 self, 30 -1, 31 _('No EMR data loaded.'), 32 style = wx.TE_MULTILINE | wx.TE_READONLY 33 ) 34 # arrange widgets 35 szr_outer = wx.StaticBoxSizer(wx.StaticBox(self, -1, _("EMR text dump")), wx.VERTICAL) 36 szr_outer.Add(self.txt, 1, wx.EXPAND, 0) 37 # and do layout 38 self.SetAutoLayout(1) 39 self.SetSizer(szr_outer) 40 szr_outer.Fit(self) 41 szr_outer.SetSizeHints(self) 42 self.Layout()
43 #--------------------------------------------------------
44 - def __register_events(self):
45 # client internal signals 46 gmDispatcher.connect(signal = u'post_patient_selection', receiver = self._on_post_patient_selection) 47 return 1
48 #--------------------------------------------------------
49 - def _on_post_patient_selection(self):
50 pass
51 # FIXME: if has_focus ... 52 #--------------------------------------------------------
53 - def populate(self):
54 pat = gmPerson.gmCurrentPatient() 55 # this should not really happen 56 if not pat.connected: 57 _log.Log(gmLog.lErr, 'no active patient, cannot get EMR text dump') 58 self.txt.SetValue(_('Currently there is no active patient. Cannot retrieve EMR text.')) 59 return None 60 emr = pat.get_emr() 61 if emr is None: 62 _log.Log(gmLog.lErr, 'cannot get EMR text dump') 63 self.txt.SetValue(_( 64 'An error occurred while retrieving a text\n' 65 'dump of the EMR for the active patient.\n\n' 66 'Please check the log file for details.' 67 )) 68 return None 69 dump = emr.get_text_dump() 70 if dump is None: 71 _log.Log(gmLog.lErr, 'cannot get EMR text dump') 72 self.txt.SetValue(_( 73 'An error occurred while retrieving a text\n' 74 'dump of the EMR for the active patient.\n\n' 75 'Please check the log file for details.' 76 )) 77 return None 78 keys = dump.keys() 79 keys.sort() 80 txt = '' 81 for age in keys: 82 for line in dump[age]: 83 txt = txt + "%s\n" % line 84 self.txt.SetValue(txt) 85 return True
86 #============================================================
87 -class gmScrolledEMRTextDump(wx.ScrolledWindow):
88 - def __init__(self, parent):
89 wx.ScrolledWindow.__init__( 90 self, 91 parent, 92 -1 93 ) 94 self.txt = wx.TextCtrl( 95 self, 96 -1, 97 _('No EMR data loaded.'), 98 style = wx.TE_MULTILINE | wx.TE_READONLY 99 ) 100 szr_vbox_main = wx.BoxSizer(wx.VERTICAL) 101 szr_vbox_main.Add(self.txt, 0, wxEXPAND | wx.CENTER | wx.ALL, 5) 102 103 self.SetAutoLayout(1) 104 self.SetSizer(szr_vbox_main) 105 szr_vbox_main.Fit(self) 106 szr_vbox_main.SetSizeHints(self) 107 szr_vbox_main.SetVirtualSizeHints(self) 108 self.Layout() 109 110 # scroll back to top after initial events 111 self.EnableScrolling(0, 1) 112 self.SetScrollRate(0, 20) 113 wx.CallAfter(self.Scroll, 0, 0)
114 115 116 #============================================================ 117