| Home | Trees | Indices | Help |
|
|---|
|
|
1 # GNUmed ...
2 # licnese: GPL v2 or later
3
4 #===============================================================
5 # $Source: /home/ncq/Projekte/cvs2git/vcs-mirror/gnumed/gnumed/client/wxpython/patient/gmGP_ScratchPadRecalls.py,v $
6 # $Id: gmGP_ScratchPadRecalls.py,v 1.19 2008-04-13 14:39:49 ncq Exp $
7 __version__ = "$Revision: 1.19 $"
8
9 try:
10 import wxversion
11 import wx
12 except ImportError:
13 from wxPython import wx
14
15 import gmPlugin, gmShadow, gmDispatcher, gmPG2
16 from gmPatientHolder import PatientHolder
17 scratchpaddata = {}
18 recalldata = {}
19
20 query_scratchpad = "select id, timestamp, text, author from scratchpad where id_identity=%s"
21 query_recalls = "select id, timestamp, reason from recalls where id_identity=%s"
22
23 #===============================================================
26 self.patientID=None
27 wxPanel.__init__(self,parent,id,wxDefaultPosition,wxDefaultSize,style = wxRAISED_BORDER)
28 PatientHolder.__init__(self)
29 self.parent=parent
30 self.create_widgets()
31 self.layout_widgets()
32 self.register_interests()
33 self._con = gmPG.ConnectionPool()
34
35
36
38 self.lbl_fgcolour = wxColor(0,0,131)
39 self.list_fgcolour = wxColor(255,0,0)
40 self.lbl_font = wxFont(12,wxSWISS,wxNORMAL, wxBOLD,False,'')
41 #add a label which is the heading for the text data entry 'Scratchpad'
42 self.scratchpad_lbl = wxStaticText(self,-1, _("Scratch Pad"),style = wxALIGN_CENTRE) #add static text control for the capion
43 self.scratchpad_lbl.SetForegroundColour(self.lbl_fgcolour) #set caption text colour
44 self.scratchpad_lbl.SetFont(self.lbl_font)
45 #Add a text control under that
46 self.scratchpad_txt = wxTextCtrl(self,-1,"",wxDefaultPosition,wxDefaultSize,0)
47 #Add a label for the recalls/reviews list
48 self.recalls_lbl = wxStaticText(self,-1, _("Recalls/Reviews"),style = wxALIGN_CENTRE) #add static text control for the capion
49 self.recalls_lbl.SetForegroundColour(self.lbl_fgcolour) #set caption text colour
50 self.recalls_lbl.SetFont(self.lbl_font)
51
52 #------------------------------------------------------------------------------
53 #Add a simple listcontrol under that for scratchpad items
54 #------------------------------------------------------------------------------
55 self.list_scratchpad = wxListCtrl(self, -1, wxDefaultPosition, wxDefaultSize,wxLC_REPORT|wxLC_NO_HEADER|wxSUNKEN_BORDER)
56 self.list_scratchpad.SetForegroundColour(self.list_fgcolour)
57 self.list_scratchpad.InsertColumn(0, _("Logged"))
58 self.list_scratchpad.InsertColumn(1, "", wxLIST_FORMAT_LEFT)
59
60 #--------------------------------------------------------------------------
61 #Add a simple listcontrol under that for recall items
62 #--------------------------------------------------------------------------
63 self.list_recalls = wxListCtrl(self, -1, wxDefaultPosition, wxDefaultSize,wxLC_REPORT|wxLC_NO_HEADER|wxSUNKEN_BORDER)
64 self.list_recalls.SetForegroundColour(self.list_fgcolour)
65 self.list_recalls.InsertColumn(0, _("Recall or Review"))
66 self.list_recalls.InsertColumn(1, _("Status"), wxLIST_FORMAT_LEFT)
67
69 self.sizer= wxBoxSizer(wxVERTICAL)
70 self.sizer.Add(self.scratchpad_lbl,0,wxEXPAND)
71 self.sizer.Add(self.scratchpad_txt,0,wxEXPAND)
72 #sizer.Add(10,10,0,wxEXPAND)
73 self.sizer.Add(self.list_scratchpad,30,wxEXPAND)
74 self.sizer.Add(self.recalls_lbl,0, wxEXPAND)
75 #sizer.Add(5,5,0,wxEXPAND)
76 self.sizer.Add(self.list_recalls,70,wxEXPAND)
77 self.SetSizer(self.sizer) #set the sizer
78 self.sizer.Fit(self) #set to minimum size as calculated by sizer
79 self.SetAutoLayout(True) #tell frame to use the sizer
80 self.Show(True)
81
85
87 self.list_scratchpad.DeleteAllItems()
88 if patid is None:
89 return
90 db = self._con.GetConnection('clinical')
91 cur = db.cursor()
92 cur.execute(query_recalls % str(patid))
93 fetched = cur.fetchall()
94 for index in range(len(fetched)):
95 row=fetched[index]
96 id=row[0]
97 #date=row[1].strftime("%d.%m.%y")
98 date=str(row[1])[:10]
99 text=row[2]
100 self.list_recalls.InsertStringItem(index, date )
101 self.list_recalls.SetStringItem(index, 1, text)
102 self.list_recalls.SetItemData(index, id)
103 self.list_recalls.SetColumnWidth(0, wxLIST_AUTOSIZE)
104 self.list_recalls.SetColumnWidth(1, 200)
105
106
108 self.list_scratchpad.DeleteAllItems()
109 self.scratchpad_txt.SetValue("")
110 if patid is None:
111 return
112 db = self._con.GetConnection('clinical')
113 cur = db.cursor()
114 cur.execute(query_scratchpad % str(patid))
115 fetched = cur.fetchall()
116 for index in range(len(fetched)):
117 row=fetched[index]
118 id=row[0]
119 #date=row[1].strftime("%d.%m.%y")
120 date=str(row[1])[:10]
121 reason=row[2]
122 self.list_scratchpad.InsertStringItem(index, date)
123 self.list_scratchpad.SetStringItem(index, 1, reason)
124 self.list_scratchpad.SetItemData(index, id)
125 self.list_scratchpad.SetColumnWidth(0, wxLIST_AUTOSIZE)
126 self.list_scratchpad.SetColumnWidth(1, 200)
127
128
130 "must be executed when the current patient changes. Updates all widgets accordingly"
131 if kwargs is None:
132 #new patient, blank widgets
133 self.UpdateRecalls(None)
134 self.UpdateSCratchpad(None)
135 return
136
137 kwds = kwargs['kwds']
138 patid = kwds['ID']
139 self.UpdateRecalls(patid)
140 self.UpdateScratchpad(patid)
141
142 #===============================================================
144 """
145 Plugin to encapsulate the scratch pad and recalls
146 """
149
151 mwm = self.gb['clinical.manager']
152 mwm.RegisterRightSide ('scratchpad_recalls', ScratchPadRecalls
153 (mwm.righthalfpanel, -1), position=2)
154
157
158 #===============================================================
159 # Main
160 #===============================================================
161 if __name__ == "__main__":
162 app = wxPyWidgetTester(size = (400, 500))
163 app.SetWidget(ScratchPadRecalls, -1)
164 app.MainLoop()
165 #===============================================================
166 # $Log: gmGP_ScratchPadRecalls.py,v $
167 # Revision 1.19 2008-04-13 14:39:49 ncq
168 # - no more old style logging
169 #
170 # Revision 1.18 2008/01/30 14:03:42 ncq
171 # - use signal names directly
172 # - switch to std lib logging
173 #
174 # Revision 1.17 2006/05/15 13:42:02 ncq
175 # - use new signals for activating_patient/patient_selected
176 #
177 # Revision 1.16 2005/09/26 18:01:53 ncq
178 # - use proper way to import wx26 vs wx2.4
179 # - note: THIS WILL BREAK RUNNING THE CLIENT IN SOME PLACES
180 # - time for fixup
181 #
182 # Revision 1.15 2004/07/18 20:30:54 ncq
183 # - wxPython.true/false -> Python.True/False as Python tells us to do
184 #
185 # Revision 1.14 2003/11/17 10:56:42 sjtan
186 #
187 # synced and commiting.
188 #
189 # Revision 1.2 2003/10/25 08:29:40 sjtan
190 #
191 # uses gmDispatcher to send new currentPatient objects to toplevel gmGP_ widgets. Proprosal to use
192 # yaml serializer to store editarea data in narrative text field of clin_root_item until
193 # clin_root_item schema stabilizes.
194 #
195 # Revision 1.1 2003/10/23 06:02:40 sjtan
196 #
197 # manual edit areas modelled after r.terry's specs.
198 #
199 # Revision 1.13 2003/04/05 00:39:23 ncq
200 # - "patient" is now "clinical", changed all the references
201 #
202 # Revision 1.12 2003/02/02 13:37:27 ncq
203 # - typo
204 #
205 # Revision 1.11 2003/02/02 13:36:52 ncq
206 # - cvs metadata keywords
207 #
208
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Mon Jun 25 03:58:58 2012 | http://epydoc.sourceforge.net |