1
2
3
4
5 import wx
6
7
8
9
10
11
14
15 from Gnumed.wxpython import gmPhraseWheel
16 from Gnumed.wxpython import gmEMRStructWidgets
17 from Gnumed.wxpython import gmMedicationWidgets
18 from Gnumed.wxpython import gmDateTimeInput
19
20
21 kwds["style"] = wx.NO_BORDER | wx.TAB_TRAVERSAL
22 wx.ScrolledWindow.__init__(self, *args, **kwds)
23 self._LBL_allergies = wx.StaticText(self, -1, "")
24 self._LBL_component = wx.StaticText(self, -1, _("Brand by component"))
25 self._PRW_component = gmMedicationWidgets.cDrugComponentPhraseWheel(self, -1, "", style=wx.NO_BORDER)
26 self._BTN_database_brand = wx.Button(self, -1, _("Brands"), style=wx.BU_EXACTFIT)
27 self._LBL_or = wx.StaticText(self, -1, _("... or ..."))
28 self._TCTRL_brand_ingredients = wx.TextCtrl(self, -1, "", style=wx.TE_READONLY | wx.NO_BORDER)
29 self._BTN_heart = wx.Button(self, -1, _(u"♥"), style=wx.BU_EXACTFIT)
30 self._BTN_kidneys = wx.Button(self, -1, _("Kidneys"), style=wx.BU_EXACTFIT)
31 self._LBL_substance = wx.StaticText(self, -1, _("Unbranded substance"))
32 self._PRW_substance = gmMedicationWidgets.cSubstancePhraseWheel(self, -1, "", style=wx.NO_BORDER)
33 self._BTN_database_substance = wx.Button(self, -1, _("Manage"), style=wx.BU_EXACTFIT)
34 self._LBL_preparation = wx.StaticText(self, -1, _("Preparation"))
35 self._PRW_preparation = gmMedicationWidgets.cSubstancePreparationPhraseWheel(self, -1, "", style=wx.NO_BORDER)
36 self._DP_started = gmDateTimeInput.cDateInputPhraseWheel(self, -1, "", style=wx.NO_BORDER)
37 self._CHBOX_approved = wx.CheckBox(self, -1, _("Approved of"))
38 self._PRW_episode = gmEMRStructWidgets.cEpisodeSelectionPhraseWheel(self, -1, "", style=wx.NO_BORDER)
39 self._PRW_schedule = gmMedicationWidgets.cSubstanceSchedulePhraseWheel(self, -1, "", style=wx.NO_BORDER)
40 self._PRW_duration = gmPhraseWheel.cPhraseWheel(self, -1, "", style=wx.NO_BORDER)
41 self._CHBOX_long_term = wx.CheckBox(self, -1, _("Long-term"))
42 self._PRW_aim = gmPhraseWheel.cPhraseWheel(self, -1, "", style=wx.NO_BORDER)
43 self._PRW_notes = gmPhraseWheel.cPhraseWheel(self, -1, "", style=wx.NO_BORDER)
44 self._DP_discontinued = gmDateTimeInput.cDateInputPhraseWheel(self, -1, "", style=wx.NO_BORDER)
45 self._BTN_discontinued_as_planned = wx.Button(self, -1, _("Per plan"), style=wx.BU_EXACTFIT)
46 self._LBL_reason = wx.StaticText(self, -1, _("... Reason"))
47 self._PRW_discontinue_reason = gmPhraseWheel.cPhraseWheel(self, -1, "", style=wx.NO_BORDER)
48
49 self.__set_properties()
50 self.__do_layout()
51
52 self.Bind(wx.EVT_BUTTON, self._on_manage_brands_button_pressed, self._BTN_database_brand)
53 self.Bind(wx.EVT_BUTTON, self._on_heart_button_pressed, self._BTN_heart)
54 self.Bind(wx.EVT_BUTTON, self._on_kidneys_button_pressed, self._BTN_kidneys)
55 self.Bind(wx.EVT_BUTTON, self._on_manage_substances_button_pressed, self._BTN_database_substance)
56 self.Bind(wx.EVT_CHECKBOX, self._on_chbox_long_term_checked, self._CHBOX_long_term)
57 self.Bind(wx.EVT_BUTTON, self._on_discontinued_as_planned_button_pressed, self._BTN_discontinued_as_planned)
58
59
61
62 self.SetMinSize((660, 400))
63 self.SetScrollRate(10, 10)
64 self._LBL_component.SetForegroundColour(wx.Colour(255, 0, 0))
65 self._PRW_component.SetToolTipString(_("A component of a drug brand the patient is taking.\n\nLookup, and select, a single- (or multi-) component drug brand, by active ingredient name. All components of multi-component drugs will be displayed and automatically added to the patient's list."))
66 self._BTN_database_brand.SetToolTipString(_("Manage drug brands.\n\nNote that this will not select a component for you. What it does is to let you manage (add/edit/delete) the drug products/brands known to GNUmed from which you can select a component."))
67 self._TCTRL_brand_ingredients.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_BACKGROUND))
68 self._TCTRL_brand_ingredients.SetToolTipString(_("The active ingredients of this brand."))
69 self._BTN_heart.SetToolTipString(_("Show cardiac information relevant to substance selection."))
70 self._BTN_kidneys.SetToolTipString(_("Show renal insufficiency information related to substance selection."))
71 self._LBL_substance.SetForegroundColour(wx.Colour(255, 0, 0))
72 self._PRW_substance.SetToolTipString(_("The non-branded medication or non-medication substance, with optional strength."))
73 self._BTN_database_substance.SetToolTipString(_("Manage consumable substances.\n\nThis will not select a substance for you. It will, however, enable you to manage (add/edit/delete) the consumable substances available for selection."))
74 self._PRW_preparation.SetToolTipString(_("The preparation or form of the substance."))
75 self._DP_started.SetToolTipString(_("When was this substance started to be consumed."))
76 self._CHBOX_approved.SetToolTipString(_("Whether this substance is taken by advice."))
77 self._CHBOX_approved.SetValue(1)
78 self._PRW_episode.SetToolTipString(_("The episode this substance is taken under."))
79 self._PRW_schedule.SetToolTipString(_("The schedule for taking this substance."))
80 self._PRW_duration.SetToolTipString(_("How long is this substance supposed to be taken."))
81 self._CHBOX_long_term.SetToolTipString(_("Whether this substance is to be taken for the rest of the patient's life."))
82 self._PRW_aim.SetToolTipString(_("The aim of consuming this substance."))
83 self._PRW_notes.SetToolTipString(_("Any clinical notes, comments, or instructions on this substance intake."))
84 self._DP_discontinued.SetToolTipString(_("When was intake of this substance discontinued ?"))
85 self._BTN_discontinued_as_planned.SetToolTipString(_("Press if discontinuation was as planned."))
86 self._PRW_discontinue_reason.SetToolTipString(_("Reason for discontinuation."))
87 self._PRW_discontinue_reason.Enable(False)
88
89
91
92 __szr_main = wx.BoxSizer(wx.VERTICAL)
93 __gszr_main = wx.FlexGridSizer(13, 2, 1, 3)
94 __szr_discontinued_date = wx.BoxSizer(wx.HORIZONTAL)
95 __szr_duration = wx.BoxSizer(wx.HORIZONTAL)
96 __szr_started = wx.BoxSizer(wx.HORIZONTAL)
97 __szr_substance = wx.BoxSizer(wx.HORIZONTAL)
98 __szr_ingredient_details = wx.BoxSizer(wx.HORIZONTAL)
99 __szr_substance_buttons = wx.BoxSizer(wx.VERTICAL)
100 __szr_component = wx.BoxSizer(wx.HORIZONTAL)
101 __szr_main.Add(self._LBL_allergies, 0, wx.BOTTOM | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 2)
102 __sline_top = wx.StaticLine(self, -1)
103 __szr_main.Add(__sline_top, 0, wx.BOTTOM | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 3)
104 __gszr_main.Add(self._LBL_component, 0, wx.ALIGN_CENTER_VERTICAL, 0)
105 __szr_component.Add(self._PRW_component, 1, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 5)
106 __szr_component.Add(self._BTN_database_brand, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
107 __gszr_main.Add(__szr_component, 1, wx.EXPAND, 0)
108 __gszr_main.Add(self._LBL_or, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
109 __szr_ingredient_details.Add(self._TCTRL_brand_ingredients, 1, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 5)
110 __szr_substance_buttons.Add(self._BTN_heart, 0, wx.BOTTOM | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 3)
111 __szr_substance_buttons.Add(self._BTN_kidneys, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
112 __szr_ingredient_details.Add(__szr_substance_buttons, 0, wx.EXPAND, 0)
113 __gszr_main.Add(__szr_ingredient_details, 1, wx.EXPAND, 0)
114 __gszr_main.Add(self._LBL_substance, 0, wx.ALIGN_CENTER_VERTICAL, 0)
115 __szr_substance.Add(self._PRW_substance, 1, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 5)
116 __szr_substance.Add(self._BTN_database_substance, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
117 __gszr_main.Add(__szr_substance, 1, wx.EXPAND, 0)
118 __gszr_main.Add(self._LBL_preparation, 0, wx.ALIGN_CENTER_VERTICAL, 5)
119 __gszr_main.Add(self._PRW_preparation, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 10)
120 __gszr_main.Add((20, 20), 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
121 __line_top = wx.StaticLine(self, -1)
122 __gszr_main.Add(__line_top, 0, wx.TOP | wx.BOTTOM | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 3)
123 __lbl_started = wx.StaticText(self, -1, _("Started"))
124 __lbl_started.SetForegroundColour(wx.Colour(255, 0, 0))
125 __gszr_main.Add(__lbl_started, 0, wx.ALIGN_CENTER_VERTICAL, 0)
126 __szr_started.Add(self._DP_started, 4, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 10)
127 __szr_started.Add(self._CHBOX_approved, 1, wx.ALIGN_CENTER_VERTICAL, 0)
128 __szr_started.Add((20, 20), 1, wx.EXPAND, 0)
129 __gszr_main.Add(__szr_started, 1, wx.EXPAND, 0)
130 __lbl_episode = wx.StaticText(self, -1, _("Episode"))
131 __lbl_episode.SetForegroundColour(wx.Colour(255, 127, 0))
132 __gszr_main.Add(__lbl_episode, 0, wx.ALIGN_CENTER_VERTICAL, 0)
133 __gszr_main.Add(self._PRW_episode, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
134 __lbl_schedule = wx.StaticText(self, -1, _("Schedule"))
135 __gszr_main.Add(__lbl_schedule, 0, wx.ALIGN_CENTER_VERTICAL, 0)
136 __gszr_main.Add(self._PRW_schedule, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
137 __lbl_duration = wx.StaticText(self, -1, _("Duration"))
138 __gszr_main.Add(__lbl_duration, 0, wx.ALIGN_CENTER_VERTICAL, 0)
139 __szr_duration.Add(self._PRW_duration, 1, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 10)
140 __szr_duration.Add(self._CHBOX_long_term, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 2)
141 __gszr_main.Add(__szr_duration, 1, wx.EXPAND, 0)
142 __lbl_aim = wx.StaticText(self, -1, _("Aim"))
143 __gszr_main.Add(__lbl_aim, 0, wx.ALIGN_CENTER_VERTICAL, 0)
144 __gszr_main.Add(self._PRW_aim, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
145 __lbl_notes = wx.StaticText(self, -1, _("Advice"))
146 __gszr_main.Add(__lbl_notes, 0, wx.ALIGN_CENTER_VERTICAL, 0)
147 __gszr_main.Add(self._PRW_notes, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
148 __lbl_discontinued = wx.StaticText(self, -1, _("Discontinued"))
149 __gszr_main.Add(__lbl_discontinued, 0, wx.ALIGN_CENTER_VERTICAL, 5)
150 __szr_discontinued_date.Add(self._DP_discontinued, 4, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 10)
151 __szr_discontinued_date.Add(self._BTN_discontinued_as_planned, 1, wx.ALIGN_CENTER_VERTICAL, 5)
152 __szr_discontinued_date.Add((20, 20), 1, wx.EXPAND, 0)
153 __gszr_main.Add(__szr_discontinued_date, 1, wx.EXPAND, 0)
154 __gszr_main.Add(self._LBL_reason, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
155 __gszr_main.Add(self._PRW_discontinue_reason, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 5)
156 __gszr_main.AddGrowableCol(1)
157 __szr_main.Add(__gszr_main, 1, wx.EXPAND, 0)
158 self.SetSizer(__szr_main)
159 __szr_main.Fit(self)
160
161
163 print "Event handler `_on_chbox_long_term_checked' not implemented"
164 event.Skip()
165
167 print "Event handler `_on_discontinued_as_planned_button_pressed' not implemented"
168 event.Skip()
169
171 print "Event handler `_on_discontinued_date_changed' not implemented"
172 event.Skip()
173
175 print "Event handler `_on_manage_brands_button_pressed' not implemented"
176 event.Skip()
177
179 print "Event handler `_on_manage_substances_button_pressed' not implemented"
180 event.Skip()
181
183 print "Event handler `_on_heart_button_pressed' not implemented"
184 event.Skip()
185
187 print "Event handler `_on_kidneys_button_pressed' not implemented"
188 event.Skip()
189
190
191