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