1
2
3
4 __author__ = "R.Terry <rterry@gnumed.net>, I.Haywood <i.haywood@ugrad.unimelb.edu.au>, K.Hilbert <Karsten.Hilbert@gmx.net>"
5 __license__ = "GPL v2 or later"
6
7
8 import sys, os.path, datetime as pyDT, logging
9
10
11 import wx
12
13
14 from Gnumed.pycommon import gmGuiBroker, gmDispatcher, gmTools, gmCfg2, gmDateTime, gmI18N
15 from Gnumed.business import gmPerson, gmEMRStructItems, gmAllergy
16 from Gnumed.wxpython import gmGuiHelpers
17 from Gnumed.wxpython import gmDemographicsWidgets
18 from Gnumed.wxpython import gmAllergyWidgets
19 from Gnumed.wxpython import gmPatSearchWidgets
20 from Gnumed.wxpython import gmEMRStructWidgets
21 from Gnumed.wxpython import gmPatPicWidgets
22
23
24 _log = logging.getLogger('gm.ui')
25
26
27 from Gnumed.wxGladeWidgets import wxgTopPnl
28
30
41
43 cfg = gmCfg2.gmCfgData()
44 if cfg.get(option = 'slave'):
45 self._TCTRL_patient_selector.SetEditable(0)
46 self._TCTRL_patient_selector.SetToolTip(None)
47
49
50 wx.EVT_LEFT_DCLICK(self._TCTRL_allergies, self._on_allergies_dclicked)
51
52
53 gmDispatcher.connect(signal = u'post_patient_selection', receiver = self._on_post_patient_selection)
54 gmDispatcher.connect(signal = u'allg_mod_db', receiver = self._on_allergies_change)
55 gmDispatcher.connect(signal = u'allg_state_mod_db', receiver = self._on_allergies_change)
56 gmDispatcher.connect(signal = u'name_mod_db', receiver = self._on_name_identity_change)
57 gmDispatcher.connect(signal = u'identity_mod_db', receiver = self._on_name_identity_change)
58 gmDispatcher.connect(signal = u'identity_tag_mod_db', receiver = self._on_tag_change)
59
60
61
69
71 wx.CallAfter(self.__update_tags)
72
74 wx.CallAfter(self.__update_age_label)
75
77
78
79 wx.CallAfter(self.__on_post_patient_selection, **kwargs)
80
82 wx.CallAfter(self.__update_allergies)
83
84
85
87 self.__update_age_label()
88 self.__update_allergies()
89 self.__update_tags()
90
93
128
130
131 emr = self.curr_pat.get_emr()
132 state = emr.allergy_state
133
134
135 if state['last_confirmed'] is None:
136 confirmed = _('never')
137 else:
138 confirmed = state['last_confirmed'].strftime('%Y %B %d').decode(gmI18N.get_encoding())
139 tt = (state.state_string + (90 * u' '))[:90] + u'\n'
140 tt += _('last confirmed %s\n') % confirmed
141 tt += gmTools.coalesce(state['comment'], u'', _('Comment (%s): %%s') % state['modified_by'])
142 tt += u'\n'
143
144
145 tmp = []
146 for allergy in emr.get_allergies():
147
148 if allergy['type'] == 'allergy':
149 tmp.append(allergy['descriptor'][:10].strip() + gmTools.u_ellipsis)
150
151 if allergy['definite']:
152 certainty = _('definite')
153 else:
154 certainty = _('suspected')
155 reaction = gmTools.coalesce(allergy['reaction'], _('reaction not recorded'))
156 if len(reaction) > 50:
157 reaction = reaction[:50] + gmTools.u_ellipsis
158 tt += u'%s (%s, %s): %s\n' % (
159 allergy['descriptor'],
160 allergy['l10n_type'],
161 certainty,
162 reaction
163 )
164
165 if len(tmp) == 0:
166 tmp = state.state_symbol
167 else:
168 tmp = ','.join(tmp)
169
170 if state['last_confirmed'] is not None:
171 tmp += state['last_confirmed'].strftime(' (%x)')
172
173 self._TCTRL_allergies.SetValue(tmp)
174 self._TCTRL_allergies.SetToolTipString(tt)
175
176
177 if __name__ == "__main__":
178 wx.InitAllImageHandlers()
179 app = wxPyWidgetTester(size = (400, 200))
180 app.SetWidget(cMainTopPanel, -1)
181 app.SetWidget(cTopPanel, -1)
182 app.MainLoop()
183
184