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

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

      1  # -*- coding: utf-8 -*-
      2  #!/usr/bin/python
      3  #############################################################################
      4  #
      5  # gmGP_FamilyHistory.py
      6  # ----------------------------------
      7  #
      8  # This panel will hold all the family history details
      9  #
     10  # If you don't like it - change this code see @TODO!
     11  #
     12  # @author: Dr. Richard Terry
     13  # @copyright: author
     14  # @license: GPL v2 or later (details at http://www.gnu.org)
     15  # @dependencies: wxPython (>= version 2.3.1)
     16
     17  # @TODO:
     18  #       almost everything
     19  #
     20  ############################################################################
     21  __author__  = "R.Terry <rterry@gnumed.net>, H.Herb <hherb@gnumed.net>, S.Tan"
     22
     23
     24  import wx
     25
     26  import gmEditArea, gmPlugin_Patient
     27  import gmGuiElement_HeadingCaptionPanel         #panel class to display top headings
     28  import gmGuiElement_DividerCaptionPanel         #panel class to display sub-headings or divider headings
     29  import gmGuiElement_AlertCaptionPanel           #panel to hold flashing alert messages
     30  from gmPatientHolder import PatientHolder
     31
     32
     33  ID_MEMBERCONDITIONSLIST = wxNewId()
     34  ID_FAMILYMEMBERSLIST = wxNewId()
     35  ID_IMMUNISATIONS = wxNewId()
     36  ID_ALL_MENU  = wxNewId()
     37  gmSECTION_FAMILYHISTORY = 4
     38  #------------------------------------
     39  #Dummy data to simulate allergy items
     40  #------------------------------------
     41  familymemberdata = {
     42  1 : ("Mother",""),
     43  2 : ("General Family History",""),
     44  3 : ("Freda -Aunt",""),
     45  }
     46  membersconditionsdata = {
     47  1 : ("Acute myocardial infarction aged 73, caused death 73",""),
     48  2 : ("Hypertension age onset 40",""),
     49  }
     50
     51  #----------------------------------------------------------------------
     52 -class FamilyHistoryPanel(wxPanel, PatientHolder):
     53
     54 -        def __init__(self, parent,id):
     55                  wxPanel.__init__(self, parent, id,wxDefaultPosition,wxDefaultSize,wxRAISED_BORDER)
     56                  PatientHolder.__init__(self)
     57                  # main heading
     58                  self.FamilyHistoryPanelheading = gmGuiElement_HeadingCaptionPanel.HeadingCaptionPanel(self,-1,"  FAMILY AND SOCIAL HISTORY  ")
     59                  # editarea
     60                  self.editarea = gmEditArea.gmFamilyHxEditArea(self, -1)
     61                  #self.editarea = gmFamilyHxEditArea(self, -1)
     62                  #-----------------------------------------------
     63                  #add the divider headings below the editing area
     64                  #-----------------------------------------------
     65                  self.family_members_heading = gmGuiElement_DividerCaptionPanel.DividerCaptionPanel(self,-1,"Family Members")
     66                  self.members_disease_conditions = gmGuiElement_DividerCaptionPanel.DividerCaptionPanel(self,-1,"Condition")
     67                  self.sizer_divider_members_condition = wxBoxSizer(wxHORIZONTAL)
     68                  self.sizer_divider_members_condition.Add(self.family_members_heading,1, wxEXPAND)
     69                  self.sizer_divider_members_condition.Add( self.members_disease_conditions,1, wxEXPAND)
     70                  #--------------------------------------------------------------------------------------
     71                  #add the list to contain the family members
     72                  #
     73                  # c++ Default Constructor:
     74                  # wxListCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition,
     75                  # const wxSize& size = wxDefaultSize, long style = wxLC_ICON,
     76                  # const wxValidator& validator = wxDefaultValidator, const wxString& name = "listCtrl")
     77                  #
     78                  #--------------------------------------------------------------------------------------
     79                  self.family_members_list = wxListCtrl(self, ID_FAMILYMEMBERSLIST,  wxDefaultPosition, wxDefaultSize,wxLC_REPORT|wxLC_NO_HEADER|wxSUNKEN_BORDER)
     80                  self.family_members_list.SetFont(wxFont(12,wxSWISS, wxNORMAL, wxNORMAL, False, ''))
     81                  self.member_conditions_list = wxListCtrl(self,ID_MEMBERCONDITIONSLIST,  wxDefaultPosition, wxDefaultSize,wxLC_REPORT|wxLC_NO_HEADER|wxSUNKEN_BORDER)
     82                  self.member_conditions_list.SetFont(wxFont(12,wxSWISS, wxNORMAL, wxNORMAL, False, ''))
     83                  self.sizer_members_conditions = wxBoxSizer(wxHORIZONTAL)
     84                  self.sizer_members_conditions.Add(self.family_members_list,4,wxEXPAND)
     85                  self.sizer_members_conditions.Add(self.member_conditions_list,6, wxEXPAND)
     86                  #----------------------------------------
     87                  # add some dummy data to the Members list
     88                  #-----------------------------------------
     89                  self.family_members_list.InsertColumn(0, "Member")
     90                  self.family_members_list.InsertColumn(1, "null")
     91                  #-------------------------------------------------------------
     92                  #loop through the familymemberdata array and add to the list control
     93                  #note the different syntax for the first coloum of each row
     94                  #i.e. here > self.family_members_list.InsertItem(x, data[0])!!
     95                  #-------------------------------------------------------------
     96                  items = familymemberdata.items()
     97                  for x in range(len(items)):
     98                          key, data = items[x]
     99                          #gmLog.gmDefLog.Log (gmLog.lData, items[x])
    100                          self.family_members_list.InsertItem(x, data[0])
    101                          self.family_members_list.SetItem(x, 1, data[1])
    102                          self.family_members_list.SetItemData(x, key)
    103                  self.family_members_list.SetColumnWidth(0, wxLIST_AUTOSIZE)
    104                  #-------------------------------------------
    105                  # add some dummy data to the conditions list
    106                  #-------------------------------------------
    107                  self.member_conditions_list.InsertColumn(0, "Condition")
    108                  self.member_conditions_list.InsertColumn(1, "null")
    109                  #-------------------------------------------------------------
    110                  #loop through the familymemberdata array and add to the list control
    111                  #note the different syntax for the first coloum of each row
    112                  #i.e. here > self.family_members_list.InsertItem(x, data[0])!!
    113                  #-------------------------------------------------------------
    114                  items = membersconditionsdata.items()
    115                  for x in range(len(items)):
    116                          key, data = items[x]
    117                          #gmLog.gmDefLog.Log (gmLog.lData, items[x])
    118                          self.member_conditions_list.InsertItem(x, data[0])
    119                          self.member_conditions_list.SetItem(x, 1, data[1])
    120                          self.member_conditions_list.SetItemData(x, key)
    121
    122                  self.member_conditions_list.SetColumnWidth(0, wxLIST_AUTOSIZE)
    123                  self.member_conditions_list.SetColumnWidth(1, wxLIST_AUTOSIZE)
    124                  #------------------------------------------------------------------------------------------
    125                  #add a richtext control or a wxTextCtrl multiline to allow user to enter the social history
    126                  #------------------------------------------------------------------------------------------
    127                  self.social_history_subheading = gmGuiElement_DividerCaptionPanel.DividerCaptionPanel(self,-1,"Social History")
    128                  self.txt_social_history = wxTextCtrl(self, 30,
    129                                          "Born in QLD, son of an itinerant drover. Mother worked as a bush nurse. "
    130                                          "Two brothers, Fred and Peter. Left school aged 15yrs, apprentice fitter "
    131                                          "then worked in industry for 10ys. At 22yrs age married Joan, two children"
    132                                          "Peter b1980 and Rachaelb1981. Retired in 1990 due to receiving a fortune.",
    133                                          wxDefaultPosition,wxDefaultSize, style=wxTE_MULTILINE|wxNO_3D|wxSIMPLE_BORDER)
    134                  self.txt_social_history.SetInsertionPoint(0)
    135                  self.txt_social_history.SetFont(wxFont(12,wxSWISS, wxNORMAL, wxNORMAL, False, ''))
    136                  #----------------------------------------
    137                  #add an alert caption panel to the bottom
    138                  #----------------------------------------
    139                  self.alertpanel = gmGuiElement_AlertCaptionPanel.AlertCaptionPanel(self,-1,"  Alerts  ")
    140                  #---------------------------------------------
    141                  #add all elements to the main background sizer
    142                  #---------------------------------------------
    143                  self.mainsizer = wxBoxSizer(wxVERTICAL)
    144                  self.mainsizer.Add(self.FamilyHistoryPanelheading,0,wxEXPAND)
    145  #               self.mainsizer.Add(self.dummypanel1,1,wxEXPAND)
    146                  self.mainsizer.Add(self.editarea,6,wxEXPAND)
    147                  self.mainsizer.Add(self.sizer_divider_members_condition,0,wxEXPAND)
    148                  self.mainsizer.Add(self.sizer_members_conditions,4,wxEXPAND)
    149                  self.mainsizer.Add(self.social_history_subheading,0,wxEXPAND)
    150                  self.mainsizer.Add(self.txt_social_history,4,wxEXPAND)
    151                  self.mainsizer.Add(self.alertpanel,0,wxEXPAND)
    152                  self.SetSizer(self.mainsizer)
    153                  self.mainsizer.Fit (self)
    154                  self.SetAutoLayout(True)
    155                  EVT_SIZE (self, self.OnSize)
    156
    157 -        def OnSize (self, event):
    158                  w, h = event.GetSize ()
    159                  self.mainsizer.SetDimension (0, 0, w, h)
    160  #----------------------------------------------------------------------
    161 -class gmGP_FamilyHistory(gmPlugin_Patient.wxPatientPlugin):
    162          """Plugin to encapsulate the family history window."""
    163
    164          __icons = {
    165  """icon_two_people""": 'x\xda\x9d\x90\xb1\x0e\x83 \x10\x86w\x9f\xe2\x12@\x9b\x98\x10X\xaa#\x81\xc4\
    166  \xb1\x0c.\xae\xc6t\xaa)}\xff\xa9w\x07\xd8\xb4n\x05\xf5\xf2}w?$^\xf6\x97m\xe6\
    167  \xce^\x81\x1e\x0b\xb6k\xd6\xb9\x93\xb0\x81\xdf\xd7\xed\xc1\xd4"\x89a\x1c\x82\
    168  1\xcc\x82x\x1a\x8d\x99F\xe6\x85\xd8\xe0\n\xb9\x1f+\x97\xbe\xcey2\xcc)\xe7C\
    169  \xed\x03\xf2-=\xef\x0c.\x87\xa7P\x9a\xaa^V\xc2=\xb1\x1f}\xf05\xfc\xbd\x8a\
    170  \xd4Z3\xe6\x9a\xa5^p\x93[\x12\xd52\x99R\xe2A\xac\x1f\t\xa9\x1c\x97\x8e3c\x8c\
    171  =\xbe\xe0\x9c\x13\xc2\xb9C\xba\x08(A:\tU\x82\x94\x92%H\xa8R\xb0\x14\xb8\x95R\
    172  \xf8-\x17I\x1a\x01rh\x7f$\'N\xb2\xc5}\xc8\x0c\x7f\xcb\xd3\xaf\xd3o\x85>c\\'
    173  }
    174
    175 -        def name (self):
    176                  return 'Family History Window'
    177
    178          #FIXME - put ampersand in correct position
    179 -        def MenuInfo (self):
    180                  return ('view', '&Family History')
    181
    182 -        def GetIconData(self, anIconID = None):
    183                  if anIconID == None:
    184                          return self.__icons[_("""icon_two_people""")]
    185                  else:
    186                          if anIconID in self.__icons:
    187                                  return self.__icons[anIconID]
    188                          else:
    189                                  return self.__icons[_("""icon_two_people""")]
    190
    191 -        def GetWidget (self, parent):
    192                  return FamilyHistoryPanel (parent, -1)
    193  #======================================================================
    194  # main
    195  #----------------------------------------------------------------------
    196  if __name__ == "__main__":
    197          app = wxPyWidgetTester(size = (600, 600))
    198          app.SetWidget(FamilyHistoryPanel, -1)
    199          app.MainLoop()
    200
    201  #======================================================================#
    202