Package Gnumed :: Package wxpython :: Package patient :: Module gmGP_Measurements |
[frames] | no frames]

# Source Code for Module Gnumed.wxpython.patient.gmGP_Measurements

      1  # -*- coding: utf-8 -*-
      2  #!/usr/bin/python
      3  #############################################################################
      4  #
      5  # gmGP_Measurements
      6  # ----------------------------------
      7  #
      8  # This panel will allow the input of measurements eg Blood pressure, weight
      9  # height, INR, etc, or display things '  measurable' grabbed from other sections
     10  # e.g Hb, wcc etc
     11  #
     12  # If you don't like it - change this code see @TODO!
     13  #
     14  # @author: Dr. Richard Terry
     15  # @copyright: author
     16  # @license: GPL v2 or later (details at http://www.gnu.org)
     17  # @dependencies: wxPython (>= version 2.3.1)
     18  # @change log:
     19  #           09.08.2002 rterry initial implementation, untested
     20  #
     21  # @TODO: just about everything. Gui for demonstration purposes only
     22  #
     23  #
     24  ############################################################################
     25
     26  import wx
     27
     28  import gmGuiElement_HeadingCaptionPanel        #panel class to display top headings
     29  import gmGuiElement_DividerCaptionPanel        #panel class to display sub-headings or divider headings
     30  import gmGuiElement_AlertCaptionPanel          #panel to hold flashing alert messages
     31  import gmEditArea                              #panel class holding editing
     32  import gmPlugin_Patient
     33  import gmI18N
     34  from gmListCtrlMapper import gmListCtrlMapper
     35
     36  import gmPatientHolder
     37
     38  ID_MEASUREMENTVALUESLIST = wxNewId()
     39  gmSECTION_MEASUREMENTS = 10
     40  ID_MEASURMENTTYPESLIST = wxNewId()
     41
     42  #------------------------------------
     43  #Dummy data to simulate allergy items
     44  #------------------------------------
     45  measurementtypesdata = {
     46  1 : ("Blood Pressure",""),
     47  2 : ("Height",""),
     48  3 : ("Weight",""),
     49  4 : ("INR",""),
     50  5 : ("Etc, Etc....",""),
     51  }
     52
     53  values_BP_data = {
     54  1 : ("01/10/2001","140/80"),
     55  2 : ("19/01/2002","180/105"),
     56  3 : ("21/05/2002","156/84"),
     57  4 : ("08/08/2002","170/110"),
     58  }
     59
     60  values_INR_data = {
     61  1 : ("01/10/2001","1.1"),
     62  2 : ("19/01/2002","2.7"),
     63  3 : ("21/05/2002","3.5"),
     64  4 : ("08/08/2002","2.8"),
     65  }
     66  values_Weight_data = {
     67  1 : ("01/10/2001","79.8"),
     68  2 : ("19/01/2002","88.5"),
     69  3 : ("21/05/2002","87.4"),
     70  4 : ("08/08/2002","87.3"),
     71  }
     72  values_Height_data = {
     73  1 : ("01/10/2001","142"),
     74  2 : ("19/01/2002","148"),
     75  3 : ("21/05/2002","149"),
     76  4 : ("08/08/2002","152"),
     77  }
     78  measurement_prompts = {
     79  1:("Type"),
     80  2:("Value"),
     81  3:("Date"),
     82  4:("Comment"),
     83  5:("Progress Notes"),
     84  6:(""),
     85          }
     86
     87 -class MeasurementPanel (wxPanel, gmPatientHolder.PatientHolder):
     88 -        def __init__(self,parent, id):
     89                  wxPanel.__init__(self, parent, id, wxDefaultPosition, wxDefaultSize, wxRAISED_BORDER)
     90                  gmPatientHolder.PatientHolder.__init__(self)
     91                  #--------------------
     92                  #add the main heading
     93                  #--------------------
     94                  self.pasthistorypanelheading = gmGuiElement_HeadingCaptionPanel.HeadingCaptionPanel(self,-1," MEASUREMENTS ")
     95                  #----------------------------------
     96                  #dummy panel above the editing area
     97                  #----------------------------------
     98                  self.dummypanel1 = wxPanel(self,-1,wxDefaultPosition,wxDefaultSize,0)
     99                  self.dummypanel1.SetBackgroundColour(wxColor(222,222,222))
    100                  ##--------------------------------------------------
    101                  #now create the editarea specific for measurements
    102                  #--------------------------------------------------
    103                  #self.editarea = gmEditArea.EditArea(self,-1,measurement_prompts,gmSECTION_MEASUREMENTS)
    104                  self.editarea = gmEditArea.gmMeasurementEditArea(self, -1)
    105                  #self.dummypanel2 = wxPanel(self,-1,wxDefaultPosition,wxDefaultSize,0)
    106                  #self.dummypanel2.SetBackgroundColour(wxColor(222,222,222))
    107                  #-----------------------------------------------
    108                  #add the divider headings below the editing area
    109                  #-----------------------------------------------
    110                  self.measurementtypes_heading = gmGuiElement_DividerCaptionPanel.DividerCaptionPanel(self,-1,"Type")
    111                  self.measurements_values_heading = gmGuiElement_DividerCaptionPanel.DividerCaptionPanel(self,-1,"Values")
    112                  self.sizer_measurements_types_heading = wxBoxSizer(wxHORIZONTAL)
    113                  self.sizer_measurements_types_heading.Add(self.measurementtypes_heading,1, wxEXPAND)
    114                  self.sizer_measurements_types_heading.Add(self.measurements_values_heading,1, wxEXPAND)
    115
    116                  #--------------------------------------------------------------------------------------
    117                  #add the list of significant problems
    118                  #
    119                  # c++ Default Constructor:
    120                  # wxListCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition,
    121                  # const wxSize& size = wxDefaultSize, long style = wxLC_ICON,
    122                  # const wxValidator& validator = wxDefaultValidator, const wxString& name = "listCtrl")
    123                  #
    124                  #--------------------------------------------------------------------------------------
    125                  self.measurement_types_list = wxListCtrl(self, ID_MEASURMENTTYPESLIST,  wxDefaultPosition, wxDefaultSize,wxLC_REPORT|wxLC_NO_HEADER|wxSUNKEN_BORDER)
    126                  self.measurement_types_list.SetFont(wxFont(10,wxSWISS, wxNORMAL, wxNORMAL, False, ''))
    127                  self.measurements_values_list = wxListCtrl(self, ID_MEASUREMENTVALUESLIST,  wxDefaultPosition, wxDefaultSize,wxLC_REPORT|wxLC_NO_HEADER|wxSUNKEN_BORDER)
    128                  self.measurements_values_list.SetFont(wxFont(10,wxSWISS, wxNORMAL, wxNORMAL, False, ''))
    129                  self.sizer_measurementtypes_values = wxBoxSizer(wxHORIZONTAL)
    130                  self.sizer_measurementtypes_values.Add(self.measurement_types_list,4,wxEXPAND)
    131                  self.sizer_measurementtypes_values.Add(self.measurements_values_list,6, wxEXPAND)
    132                  #---------------------------------------------
    133                  # add some dummy data to the measurements list
    134                  #---------------------------------------------
    135                  self.measurement_types_list.InsertColumn(0, _("Type"))
    136                  self.measurement_types_list.InsertColumn(1, "")
    137                  #-------------------------------------------------------------
    138                  #loop through the measurementtypesdata array and add to the list control
    139                  #note the different syntax for the first coloum of each row
    140                  #i.e. here > self.measurement_types_list.InsertItem(x, data[0])!!
    141                  #-------------------------------------------------------------
    142                  m = gmListCtrlMapper(self.measurement_types_list)
    143                  m.SetData(measurementtypesdata)
    144                  self.typesMapper = m
    145                  #items = measurementtypesdata.items()
    146                  #for x in range(len(items)):
    147                  #       key, data = items[x]
    148                  #       self.measurement_types_list.InsertItem(x, data[0])
    149                  #       self.measurement_types_list.SetItem(x, 1, data[1])
    150                  #       self.measurement_types_list.SetItemData(x, key)
    151                  self.measurement_types_list.SetColumnWidth(0, wxLIST_AUTOSIZE)
    152                  self.measurement_types_list.SetColumnWidth(1, wxLIST_AUTOSIZE)
    153                  #-----------------------------------------
    154                  # add some dummy data to the values list
    155                  #-----------------------------------------
    156                  self.measurements_values_list.InsertColumn(0, "Date")
    157                  self.measurements_values_list.InsertColumn(1, "Value")
    158                  #-------------------------------------------------------------
    159                  #loop through the measurementtypesdata array and add to the list control
    160                  #note the different syntax for the first coloum of each row
    161                  #i.e. here > self.measurement_types_list.InsertItem(x, data[0])!!
    162                  #-------------------------------------------------------------
    163                  m = gmListCtrlMapper(self.measurements_values_list)
    164                  m.SetData(values_BP_data)
    165                  self.valueMapper = m
    166                  #items = values_BP_data.items()
    167                  #for x in range(len(items)):
    168                  #       key, data = items[x]
    169                  #       self.measurements_values_list.InsertItem(x, data[0])
    170                  #       self.measurements_values_list.SetItem(x, 1, data[1])
    171                  #       self.measurements_values_list.SetItemData(x, key)
    172                  self.measurements_values_list.SetColumnWidth(0, wxLIST_AUTOSIZE)
    173                  self.measurements_values_list.SetColumnWidth(1, wxLIST_AUTOSIZE)
    174                  #----------------------------------------
    175                  #add an alert caption panel to the bottom
    176                  #----------------------------------------
    177                  self.alertpanel = gmGuiElement_AlertCaptionPanel.AlertCaptionPanel(self,-1,"  Alerts  ")
    178                  #---------------------------------------------
    179                  #add all elements to the main background sizer
    180                  #---------------------------------------------
    181                  self.mainsizer = wxBoxSizer(wxVERTICAL)
    182                  self.mainsizer.Add(self.pasthistorypanelheading,0,wxEXPAND)
    183                  self.mainsizer.Add(self.dummypanel1,0,wxEXPAND)
    184                  self.mainsizer.Add(self.editarea,1,wxEXPAND)
    185                  self.mainsizer.Add(self.sizer_measurements_types_heading,0,wxEXPAND)
    186                  self.mainsizer.Add(self.sizer_measurementtypes_values,2,wxEXPAND)
    187                  self.mainsizer.Add(self.alertpanel,0,wxEXPAND)
    188                  self.SetSizer(self.mainsizer)
    189                  self.mainsizer.Fit
    190                  self.SetAutoLayout(True)
    191                  self.Show(True)
    192
    193
    194  #--------------------------------------------------------------------
    195 -class gmGP_Measurements (gmPlugin_Patient.wxPatientPlugin):
    196          """
    197          Plugin to encapsulate the prescriptions window
    198          """
    199
    200          __icons = {
    201  """icon_Set_Square""": 'x\xda\xd3\xc8)0\xe4\nV74S\x00"S\x05Cu\xae\xc4`\xf5|\x85d\x05\xa7\x9c\xc4\
    202  \xe4l0O\x0f\xc8S6\xb70w60\x00\xf3\xfda|s\x0b0?\x02\xc4w\xb3p\x83\xc9+\x00\
    203  \xf9~\xf9y\xa9P\x8e\x82\x82^D\x84\x9e\x02\x14 \x0b\xe6c\x11\xd4\xcb\'\xac2\
    204  \x1f\r@\\\x19\x81\n\xa1\x82\xa8\x00\xb7\xa0?\x10\xe4\xeb\xe9\xe5\xfbC\x015\
    205  \xdcI}\x95z\x00\xc7\xd5_\x1b'
    206  }
    207
    208 -        def name (self):
    209                  return 'Measurements'
    210
    211 -        def MenuInfo (self):
    212                  return ('view', '&Measurements')
    213
    214 -        def GetIconData(self, anIconID = None):
    215                  if anIconID == None:
    216                          return self.__icons[_("""icon_Set_Square""")]
    217                  else:
    218                          if anIconID in self.__icons:
    219                                  return self.__icons[anIconID]
    220                          else:
    221                                  return self.__icons[_("""icon_Set_Square""")]
    222
    223 -        def GetWidget (self, parent):
    224                  return  MeasurementPanel (parent, -1)
    225
    226
    227  if __name__ == "__main__":
    228          app = wxPyWidgetTester(size = (600, 600))
    229          app.SetWidget(MeasurementPanel, -1)
    230          app.MainLoop()
    231