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