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._LBL_substance = wx.StaticText(self, -1, _("Unbranded substance"))
30 self._PRW_substance = gmMedicationWidgets.cSubstancePhraseWheel(self, -1, "", style=wx.NO_BORDER)
31 self._BTN_database_substance = wx.Button(self, -1, _("Manage"), style=wx.BU_EXACTFIT)
32 self._LBL_preparation = wx.StaticText(self, -1, _("Preparation"))
33 self._PRW_preparation = gmMedicationWidgets.cSubstancePreparationPhraseWheel(self, -1, "", style=wx.NO_BORDER)
34 self._DP_started = gmDateTimeInput.cDateInputPhraseWheel(self, -1, "", style=wx.NO_BORDER)
35 self._CHBOX_approved = wx.CheckBox(self, -1, _("Approved of"))
36 self._DP_discontinued = gmDateTimeInput.cDateInputPhraseWheel(self, -1, "", style=wx.NO_BORDER)
37 self._BTN_discontinued_as_planned = wx.Button(self, -1, _("Per plan"), style=wx.BU_EXACTFIT)
38 self._LBL_reason = wx.StaticText(self, -1, _("... Reason"))
39 self._PRW_discontinue_reason = gmPhraseWheel.cPhraseWheel(self, -1, "", style=wx.NO_BORDER)
40 self._PRW_schedule = gmMedicationWidgets.cSubstanceSchedulePhraseWheel(self, -1, "", style=wx.NO_BORDER)
41 self._PRW_duration = gmPhraseWheel.cPhraseWheel(self, -1, "", style=wx.NO_BORDER)
42 self._CHBOX_long_term = wx.CheckBox(self, -1, _("Long-term"))
43 self._PRW_episode = gmEMRStructWidgets.cEpisodeSelectionPhraseWheel(self, -1, "", style=wx.NO_BORDER)
44 self._PRW_aim = gmPhraseWheel.cPhraseWheel(self, -1, "", style=wx.NO_BORDER)
45 self._PRW_notes = gmPhraseWheel.cPhraseWheel(self, -1, "", style=wx.NO_BORDER)
46
47 self.__set_properties()
48 self.__do_layout()
49
50 self.Bind(wx.EVT_BUTTON, self._on_manage_brands_button_pressed, self._BTN_database_brand)
51 self.Bind(wx.EVT_BUTTON, self._on_manage_substances_button_pressed, self._BTN_database_substance)
52 self.Bind(wx.EVT_BUTTON, self._on_discontinued_as_planned_button_pressed, self._BTN_discontinued_as_planned)
53 self.Bind(wx.EVT_CHECKBOX, self._on_chbox_long_term_checked, self._CHBOX_long_term)
54
55
57
58 self.SetMinSize((660, 400))
59 self.SetScrollRate(10, 10)
60 self._LBL_component.SetForegroundColour(wx.Colour(255, 0, 0))
61 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."))
62 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."))
63 self._TCTRL_brand_ingredients.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_BACKGROUND))
64 self._TCTRL_brand_ingredients.SetToolTipString(_("The active ingredients of this brand."))
65 self._LBL_substance.SetForegroundColour(wx.Colour(255, 0, 0))
66 self._PRW_substance.SetToolTipString(_("The non-branded medication or non-medication substance, with optional strength."))
67 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."))
68 self._PRW_preparation.SetToolTipString(_("The preparation or form of the substance."))
69 self._DP_started.SetToolTipString(_("When was this substance started to be consumed."))
70 self._CHBOX_approved.SetToolTipString(_("Whether this substance is taken by advice."))
71 self._CHBOX_approved.SetValue(1)
72 self._DP_discontinued.SetToolTipString(_("When was intake of this substance discontinued ?"))
73 self._BTN_discontinued_as_planned.SetToolTipString(_("Press if discontinuation was as planned."))
74 self._PRW_discontinue_reason.SetToolTipString(_("Reason for discontinuation."))
75 self._PRW_discontinue_reason.Enable(False)
76 self._PRW_schedule.SetToolTipString(_("The schedule for taking this substance."))
77 self._PRW_duration.SetToolTipString(_("How long is this substance supposed to be taken."))
78 self._CHBOX_long_term.SetToolTipString(_("Whether this substance is to be taken for the rest of the patient's life."))
79 self._PRW_episode.SetToolTipString(_("The episode this substance is taken under."))
80 self._PRW_aim.SetToolTipString(_("The aim of consuming this substance."))
81 self._PRW_notes.SetToolTipString(_("Any clinical notes, comments, or instructions on this substance intake."))
82
83
85
86 __szr_main = wx.BoxSizer(wx.VERTICAL)
87 __gszr_main = wx.FlexGridSizer(14, 2, 1, 3)
88 __szr_duration = wx.BoxSizer(wx.HORIZONTAL)
89 __szr_discontinued_date = wx.BoxSizer(wx.HORIZONTAL)
90 __szr_started = wx.BoxSizer(wx.HORIZONTAL)
91 __szr_substance = wx.BoxSizer(wx.HORIZONTAL)
92 __szr_component = wx.BoxSizer(wx.HORIZONTAL)
93 __szr_main.Add(self._LBL_allergies, 0, wx.BOTTOM|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 2)
94 __sline_top = wx.StaticLine(self, -1)
95 __szr_main.Add(__sline_top, 0, wx.BOTTOM|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 3)
96 __gszr_main.Add(self._LBL_component, 0, wx.ALIGN_CENTER_VERTICAL, 0)
97 __szr_component.Add(self._PRW_component, 1, wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 5)
98 __szr_component.Add(self._BTN_database_brand, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
99 __gszr_main.Add(__szr_component, 1, wx.EXPAND, 0)
100 __gszr_main.Add(self._LBL_or, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
101 __gszr_main.Add(self._TCTRL_brand_ingredients, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0)
102 __gszr_main.Add(self._LBL_substance, 0, wx.ALIGN_CENTER_VERTICAL, 0)
103 __szr_substance.Add(self._PRW_substance, 1, wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 5)
104 __szr_substance.Add(self._BTN_database_substance, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
105 __gszr_main.Add(__szr_substance, 1, wx.EXPAND, 0)
106 __gszr_main.Add(self._LBL_preparation, 0, wx.ALIGN_CENTER_VERTICAL, 5)
107 __gszr_main.Add(self._PRW_preparation, 1, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 10)
108 __gszr_main.Add((20, 20), 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0)
109 __line_top = wx.StaticLine(self, -1)
110 __gszr_main.Add(__line_top, 0, wx.TOP|wx.BOTTOM|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 3)
111 __lbl_started = wx.StaticText(self, -1, _("Started"))
112 __lbl_started.SetForegroundColour(wx.Colour(255, 0, 0))
113 __gszr_main.Add(__lbl_started, 0, wx.ALIGN_CENTER_VERTICAL, 0)
114 __szr_started.Add(self._DP_started, 4, wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 10)
115 __szr_started.Add(self._CHBOX_approved, 1, wx.ALIGN_CENTER_VERTICAL, 0)
116 __szr_started.Add((20, 20), 1, wx.EXPAND, 0)
117 __gszr_main.Add(__szr_started, 1, wx.EXPAND, 0)
118 __lbl_discontinued = wx.StaticText(self, -1, _("Discontinued"))
119 __gszr_main.Add(__lbl_discontinued, 0, wx.ALIGN_CENTER_VERTICAL, 5)
120 __szr_discontinued_date.Add(self._DP_discontinued, 4, wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 10)
121 __szr_discontinued_date.Add(self._BTN_discontinued_as_planned, 1, wx.ALIGN_CENTER_VERTICAL, 5)
122 __szr_discontinued_date.Add((20, 20), 1, wx.EXPAND, 0)
123 __gszr_main.Add(__szr_discontinued_date, 1, wx.EXPAND, 0)
124 __gszr_main.Add(self._LBL_reason, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
125 __gszr_main.Add(self._PRW_discontinue_reason, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 5)
126 __lbl_schedule = wx.StaticText(self, -1, _("Schedule"))
127 __gszr_main.Add(__lbl_schedule, 0, wx.ALIGN_CENTER_VERTICAL, 0)
128 __gszr_main.Add(self._PRW_schedule, 1, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0)
129 __lbl_duration = wx.StaticText(self, -1, _("Duration"))
130 __gszr_main.Add(__lbl_duration, 0, wx.ALIGN_CENTER_VERTICAL, 0)
131 __szr_duration.Add(self._PRW_duration, 1, wx.RIGHT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 10)
132 __szr_duration.Add(self._CHBOX_long_term, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 2)
133 __gszr_main.Add(__szr_duration, 1, wx.EXPAND, 0)
134 __lbl_episode = wx.StaticText(self, -1, _("Episode"))
135 __lbl_episode.SetForegroundColour(wx.Colour(255, 127, 0))
136 __gszr_main.Add(__lbl_episode, 0, wx.ALIGN_CENTER_VERTICAL, 0)
137 __gszr_main.Add(self._PRW_episode, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0)
138 __lbl_aim = wx.StaticText(self, -1, _("Aim"))
139 __gszr_main.Add(__lbl_aim, 0, wx.ALIGN_CENTER_VERTICAL, 0)
140 __gszr_main.Add(self._PRW_aim, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0)
141 __lbl_notes = wx.StaticText(self, -1, _("Advice"))
142 __gszr_main.Add(__lbl_notes, 0, wx.ALIGN_CENTER_VERTICAL, 0)
143 __gszr_main.Add(self._PRW_notes, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 0)
144 __gszr_main.AddGrowableCol(1)
145 __szr_main.Add(__gszr_main, 1, wx.EXPAND, 0)
146 self.SetSizer(__szr_main)
147 __szr_main.Fit(self)
148
149
151 print "Event handler `_on_chbox_long_term_checked' not implemented"
152 event.Skip()
153
155 print "Event handler `_on_discontinued_as_planned_button_pressed' not implemented"
156 event.Skip()
157
159 print "Event handler `_on_discontinued_date_changed' not implemented"
160 event.Skip()
161
163 print "Event handler `_on_manage_brands_button_pressed' not implemented"
164 event.Skip()
165
167 print "Event handler `_on_manage_substances_button_pressed' not implemented"
168 event.Skip()
169
170
171