1 """This is a basic requests panel.
2
3 Status: hacking
4
5 Copyright (C) 2004 Ian Haywood
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
21 """
22 __author__ = "Ian Haywood <ihaywood@gnu.org>"
23
24 from Gnumed.wxpython import gmPlugin, gmGuiHelpers
25 from Gnumed.business import gmForms
26 from Gnumed.wxpython.gmPhraseWheel import cPhraseWheel
27
28 if __name__ == '__main__':
29 _ = lambda x:x
30
31
32
33 import wx
34
37
38 kwds["style"] = wx.TAB_TRAVERSAL
39 wx.Panel.__init__(self, *args, **kwds)
40 self.label_1 = wxStaticText(self, -1, _("Type"))
41 self.wheel_type = cPhraseWheel(self, -1, "")
42 self.label_2 = wxStaticText(self, -1, _("Form"))
43 self.wheel_form = cPhraseWheel(self, -1, "")
44 self.label_3 = wxStaticText(self, -1, _("Request"))
45 self.text_ctrl_request = wx.TextCtrl(self, -1, "")
46 self.label_4 = wxStaticText(self, -1, _("Clinical"))
47 self.text_ctrl_clinical = wx.TextCtrl(self, -1, "", style=wx.TE_PROCESS_ENTER|wx.TE_MULTILINE)
48 self.label_5 = wxStaticText(self, -1, _("Instructions"))
49 self.text_ctrl_instructions = wx.TextCtrl(self, -1, "", style=wx.TE_PROCESS_ENTER|wx.TE_MULTILINE)
50 self.button_OK = wx.Button(self, -1, _("OK"))
51
52 self.__set_properties()
53 self.__do_layout()
54
55
59
60
62
63 sizer_1 = wx.BoxSizer(wx.VERTICAL)
64 grid_sizer_1 = wxFlexGridSizer(5, 2, 0, 0)
65 grid_sizer_1.Add(self.label_1, 0, 0, 0)
66 grid_sizer_1.Add(self.wheel_type, 0, wxEXPAND, 0)
67 grid_sizer_1.Add(self.label_2, 0, 0, 0)
68 grid_sizer_1.Add(self.wheel_form, 0, wxEXPAND, 0)
69 grid_sizer_1.Add(self.label_3, 0, 0, 0)
70 grid_sizer_1.Add(self.text_ctrl_request, 0, wxEXPAND, 0)
71 grid_sizer_1.Add(self.label_4, 0, 0, 0)
72 grid_sizer_1.Add(self.text_ctrl_clinical, 0, wxEXPAND, 0)
73 grid_sizer_1.Add(self.label_5, 0, 0, 0)
74 grid_sizer_1.Add(self.text_ctrl_instructions, 0, wxEXPAND, 0)
75 grid_sizer_1.AddGrowableRow(3)
76 grid_sizer_1.AddGrowableRow(4)
77 grid_sizer_1.AddGrowableCol(1)
78 sizer_1.Add(grid_sizer_1, 1, wxEXPAND, 0)
79 sizer_1.Add(self.button_OK, 0, wxALIGN_CENTER_HORIZONTAL, 0)
80 self.SetAutoLayout(1)
81 self.SetSizer(sizer_1)
82 sizer_1.Fit(self)
83 sizer_1.SetSizeHints(self)
84
85
86
87
88
89
90
92 """
93 A descendant of the autogenerated class to add activity
94 """
96 RequestsPanel.__init__ (self, parent, id)
97 self.wheel_type.matcher = gmForms.FormTypeMP()
98 self.wheel_form.matcher = gmForms.FormMP()
99 wx.EVT_BUTTON (self.button_OK, self.button_OK.GetId (), self._ok_pressed)
100
102 form_id = self.wheel_form.getData ()
103 print "Form id: %s" % form_id
104 type_id = self.wheel_type.getData ()
105 print "Type : %s" % type_id
106 if form_id and type_id:
107 try:
108 form = gmForms.get_form (form_id)
109 params = {}
110 params['type'] = self.wheel_type.GetValue ()
111 params['request'] = self.text_ctrl_request.GetValue ()
112 params['clinical_notes'] = self.text_ctrl_clinical.GetValue ()
113 params['instructions'] = self.text_ctrl_instructions.GetValue ()
114 form.store (params)
115 form.process (params)
116 form.printout ()
117 except gmForms.FormError, e:
118 gmGuiHelpers.gm_show_error (str(e), _("Error processing form"))
119 except:
120 gmLog.gmDefLog.LogException( "forms printing", sys.exc_info(), verbose=0)
121 else:
122 gmGuiHelpers.gm_show_error (_("You must select a form and type"), _("Missing field"))
123
124
125 -class gmRequest (gmPlugin.cNotebookPluginOld):
126
127 tab_name = _("Request")
128
131
133 return ("view", _("&Request"))
134
137
139
140 if not self._verify_patient_avail():
141 return None
142 return 1
143