1
2
3
4
5 import wx
6
7
8
9
10
11
14
15 from Gnumed.wxpython import gmDemographicsWidgets
16 from Gnumed.wxpython import gmContactWidgets
17 from Gnumed.wxpython import gmAddressWidgets
18 from Gnumed.wxpython import gmDateTimeInput
19 from Gnumed.wxpython import gmProviderInboxWidgets
20
21
22 kwds["style"] = wx.NO_BORDER | wx.TAB_TRAVERSAL
23 wx.Panel.__init__(self, *args, **kwds)
24 self._PRW_lastname = gmDemographicsWidgets.cLastnamePhraseWheel(self, -1, "", style=wx.NO_BORDER)
25 self._PRW_firstnames = gmDemographicsWidgets.cFirstnamePhraseWheel(self, -1, "", style=wx.NO_BORDER)
26 self._PRW_dob = gmDateTimeInput.cDateInputPhraseWheel(self, -1, "", style=wx.NO_BORDER)
27 self._CHBOX_estimated_dob = wx.CheckBox(self, -1, _("Estimated"))
28 self._TCTRL_tob = wx.TextCtrl(self, -1, "", style=wx.NO_BORDER)
29 self._PRW_gender = gmDemographicsWidgets.cGenderSelectionPhraseWheel(self, -1, "", style=wx.NO_BORDER)
30 self._PRW_nickname = gmDemographicsWidgets.cNicknamePhraseWheel(self, -1, "", style=wx.NO_BORDER)
31 self._PRW_title = gmDemographicsWidgets.cTitlePhraseWheel(self, -1, "", style=wx.NO_BORDER)
32 self._PRW_address_searcher = gmAddressWidgets.cAddressPhraseWheel(self, -1, "", style=wx.NO_BORDER)
33 self._PRW_zip = gmAddressWidgets.cZipcodePhraseWheel(self, -1, "", style=wx.NO_BORDER)
34 self._PRW_street = gmAddressWidgets.cStreetPhraseWheel(self, -1, "", style=wx.NO_BORDER)
35 self._TCTRL_number = wx.TextCtrl(self, -1, "", style=wx.NO_BORDER)
36 self._TCTRL_unit = wx.TextCtrl(self, -1, "", style=wx.NO_BORDER)
37 self._PRW_urb = gmAddressWidgets.cUrbPhraseWheel(self, -1, "", style=wx.NO_BORDER)
38 self._PRW_region = gmAddressWidgets.cStateSelectionPhraseWheel(self, -1, "", style=wx.NO_BORDER)
39 self._PRW_country = gmAddressWidgets.cCountryPhraseWheel(self, -1, "", style=wx.NO_BORDER)
40 self._PRW_type = gmAddressWidgets.cAddressTypePhraseWheel(self, -1, "", style=wx.NO_BORDER)
41 self._PRW_channel_type = gmContactWidgets.cCommChannelTypePhraseWheel(self, -1, "", style=wx.NO_BORDER)
42 self._TCTRL_phone = wx.TextCtrl(self, -1, "", style=wx.NO_BORDER)
43 self._PRW_primary_provider = gmProviderInboxWidgets.cProviderPhraseWheel(self, -1, "", style=wx.NO_BORDER)
44 self._PRW_external_id_type = gmDemographicsWidgets.cExternalIDTypePhraseWheel(self, -1, "", style=wx.NO_BORDER)
45 self._TCTRL_external_id_value = wx.TextCtrl(self, -1, "", style=wx.NO_BORDER)
46 self._PRW_occupation = gmDemographicsWidgets.cOccupationPhraseWheel(self, -1, "", style=wx.NO_BORDER)
47 self._TCTRL_comment = wx.TextCtrl(self, -1, "", style=wx.NO_BORDER)
48
49 self.__set_properties()
50 self.__do_layout()
51
52
54
55 self._PRW_lastname.SetToolTipString(_("Required: lastname (family name)"))
56 self._PRW_lastname.SetFocus()
57 self._PRW_firstnames.SetToolTipString(_("Required: first name/given name"))
58 self._PRW_dob.SetToolTipString(_("Recommended: Date of birth. Your current time zone applies."))
59 self._CHBOX_estimated_dob.SetToolTipString(_("Check if the DOB is estimated rather than known precisely."))
60 self._TCTRL_tob.SetToolTipString(_("Optional: the time of birth if known"))
61 self._PRW_gender.SetToolTipString(_("Required: gender"))
62 self._PRW_nickname.SetToolTipString(_("Optional: nickname (alias, preferred name, call name, warrior name, artist name, pseudonym)"))
63 self._PRW_title.SetToolTipString(_("Optional: title (academic or honorary). Note that a title applies to a person, not to a particular name of that person (it will be kept even if the name changes)."))
64 self._PRW_address_searcher.SetToolTipString(_("Optional address search: enter a postal code or street name to select a pre-existing address to auto-fill the fields below.\n\nBy editing the fields you can create a new address as needed."))
65 self._PRW_zip.SetToolTipString(_("Primary address: zip/postal code\n\nUse '?' if unknown."))
66 self._PRW_street.SetToolTipString(_("Primary address: name of street"))
67 self._TCTRL_number.SetToolTipString(_("Primary address: number"))
68 self._TCTRL_unit.SetToolTipString(_("Primary address: unit within the number (appt. / room / etc)."))
69 self._PRW_urb.SetToolTipString(_("Primary address: city/town/village/dwelling/..."))
70 self._PRW_region.SetToolTipString(_("Primary address: state/province/county/..."))
71 self._PRW_country.SetToolTipString(_("Primary address: country of residence"))
72 self._PRW_type.SetToolTipString(_("The category under which to store this address."))
73 self._PRW_channel_type.SetToolTipString(_("The type of the primary communication channel."))
74 self._TCTRL_phone.SetToolTipString(_("Primary communication channel."))
75 self._PRW_primary_provider.SetToolTipString(_("Choose the provider the patient considers his or her primary provider in this praxis."))
76 self._PRW_external_id_type.SetToolTipString(_("The type of the external ID (selection only)."))
77 self._TCTRL_external_id_value.SetToolTipString(_("The value of the external ID."))
78 self._PRW_occupation.SetToolTipString(_("The current occupation."))
79 self._TCTRL_comment.SetToolTipString(_("A comment on this person."))
80
81
83
84 __szr_main = wx.BoxSizer(wx.VERTICAL)
85 __fgsizer_details = wx.FlexGridSizer(22, 2, 3, 5)
86 __szr_external_id_details = wx.BoxSizer(wx.HORIZONTAL)
87 __szr_other = wx.BoxSizer(wx.HORIZONTAL)
88 __szr_primary_contact_details = wx.BoxSizer(wx.HORIZONTAL)
89 __szr_number_details = wx.BoxSizer(wx.HORIZONTAL)
90 __szr_address = wx.BoxSizer(wx.HORIZONTAL)
91 __szr_dob = wx.BoxSizer(wx.HORIZONTAL)
92 __szr_identity = wx.BoxSizer(wx.HORIZONTAL)
93 __szr_message = wx.BoxSizer(wx.HORIZONTAL)
94 __szr_message.Add((20, 20), 1, wx.EXPAND, 0)
95 __lbl_message = wx.StaticText(self, -1, _("Basic demographics"), style=wx.ALIGN_CENTRE)
96 __lbl_message.SetFont(wx.Font(11, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
97 __szr_message.Add(__lbl_message, 0, wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0)
98 __szr_message.Add((20, 20), 1, wx.EXPAND, 0)
99 __szr_main.Add(__szr_message, 0, wx.EXPAND, 0)
100 __HLINE_top = wx.StaticLine(self, -1)
101 __szr_main.Add(__HLINE_top, 0, wx.ALL | wx.EXPAND, 3)
102 __fgsizer_details.Add((20, 20), 0, wx.EXPAND, 0)
103 __szr_identity.Add((20, 20), 1, wx.EXPAND, 0)
104 __lbl_identity = wx.StaticText(self, -1, _("Identity"), style=wx.ALIGN_CENTRE)
105 __lbl_identity.SetForegroundColour(wx.Colour(95, 159, 159))
106 __szr_identity.Add(__lbl_identity, 0, wx.ALIGN_CENTER_VERTICAL, 0)
107 __szr_identity.Add((20, 20), 1, wx.EXPAND, 0)
108 __fgsizer_details.Add(__szr_identity, 1, wx.EXPAND, 0)
109 __lbl_lastname = wx.StaticText(self, -1, _("Last name"))
110 __lbl_lastname.SetForegroundColour(wx.Colour(255, 0, 0))
111 __fgsizer_details.Add(__lbl_lastname, 0, wx.ALIGN_CENTER_VERTICAL, 0)
112 __fgsizer_details.Add(self._PRW_lastname, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
113 __lbl_firstnames = wx.StaticText(self, -1, _("First name(s)"))
114 __lbl_firstnames.SetForegroundColour(wx.Colour(255, 0, 0))
115 __fgsizer_details.Add(__lbl_firstnames, 0, wx.ALIGN_CENTER_VERTICAL, 0)
116 __fgsizer_details.Add(self._PRW_firstnames, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
117 __lbl_dob = wx.StaticText(self, -1, _("Date of birth"))
118 __lbl_dob.SetForegroundColour(wx.Colour(255, 127, 0))
119 __fgsizer_details.Add(__lbl_dob, 0, wx.ALIGN_CENTER_VERTICAL, 0)
120 __szr_dob.Add(self._PRW_dob, 1, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 3)
121 __szr_dob.Add(self._CHBOX_estimated_dob, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 10)
122 __vline_dob_sizer = wx.StaticLine(self, -1, style=wx.LI_VERTICAL)
123 __szr_dob.Add(__vline_dob_sizer, 0, wx.RIGHT | wx.EXPAND, 3)
124 __lbl_tob = wx.StaticText(self, -1, _("Time:"))
125 __szr_dob.Add(__lbl_tob, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 3)
126 __szr_dob.Add(self._TCTRL_tob, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
127 __fgsizer_details.Add(__szr_dob, 1, wx.EXPAND, 0)
128 __lbl_gender = wx.StaticText(self, -1, _("Gender"))
129 __lbl_gender.SetForegroundColour(wx.Colour(255, 0, 0))
130 __fgsizer_details.Add(__lbl_gender, 0, wx.ALIGN_CENTER_VERTICAL, 0)
131 __fgsizer_details.Add(self._PRW_gender, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
132 __lbl_nick_name = wx.StaticText(self, -1, _("Nick name"))
133 __fgsizer_details.Add(__lbl_nick_name, 0, wx.ALIGN_CENTER_VERTICAL, 0)
134 __fgsizer_details.Add(self._PRW_nickname, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
135 __lbl_title = wx.StaticText(self, -1, _("Title"))
136 __fgsizer_details.Add(__lbl_title, 0, wx.ALIGN_CENTER_VERTICAL, 0)
137 __fgsizer_details.Add(self._PRW_title, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
138 __fgsizer_details.Add((20, 20), 0, wx.EXPAND, 0)
139 __szr_address.Add((20, 20), 1, wx.EXPAND, 0)
140 __lbl_address_heading = wx.StaticText(self, -1, _("Primary address and contact"), style=wx.ALIGN_CENTRE)
141 __lbl_address_heading.SetForegroundColour(wx.Colour(95, 159, 159))
142 __szr_address.Add(__lbl_address_heading, 0, wx.ALIGN_CENTER_VERTICAL, 0)
143 __szr_address.Add((20, 20), 1, wx.EXPAND, 0)
144 __fgsizer_details.Add(__szr_address, 1, wx.EXPAND, 0)
145 __lbl_address = wx.StaticText(self, -1, _("Search existing"))
146 __fgsizer_details.Add(__lbl_address, 0, wx.ALIGN_CENTER_VERTICAL, 0)
147 __fgsizer_details.Add(self._PRW_address_searcher, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
148 __lbl_zip = wx.StaticText(self, -1, _("Postal code"))
149 __lbl_zip.SetForegroundColour(wx.Colour(255, 127, 0))
150 __fgsizer_details.Add(__lbl_zip, 0, wx.ALIGN_CENTER_VERTICAL, 0)
151 __fgsizer_details.Add(self._PRW_zip, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
152 __lbl_street = wx.StaticText(self, -1, _("Street"))
153 __lbl_street.SetForegroundColour(wx.Colour(255, 127, 0))
154 __fgsizer_details.Add(__lbl_street, 0, wx.ALIGN_CENTER_VERTICAL, 0)
155 __fgsizer_details.Add(self._PRW_street, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
156 __lbl_number = wx.StaticText(self, -1, _("Number"))
157 __lbl_number.SetForegroundColour(wx.Colour(255, 127, 0))
158 __fgsizer_details.Add(__lbl_number, 0, wx.ALIGN_CENTER_VERTICAL, 0)
159 __szr_number_details.Add(self._TCTRL_number, 1, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 5)
160 __lbl_unit = wx.StaticText(self, -1, _("Unit:"))
161 __szr_number_details.Add(__lbl_unit, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 3)
162 __szr_number_details.Add(self._TCTRL_unit, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
163 __fgsizer_details.Add(__szr_number_details, 1, wx.EXPAND, 0)
164 __lbl_urb = wx.StaticText(self, -1, _("Community"))
165 __lbl_urb.SetForegroundColour(wx.Colour(255, 127, 0))
166 __fgsizer_details.Add(__lbl_urb, 0, wx.ALIGN_CENTER_VERTICAL, 0)
167 __fgsizer_details.Add(self._PRW_urb, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
168 __lbl_region = wx.StaticText(self, -1, _("Region"))
169 __lbl_region.SetForegroundColour(wx.Colour(255, 127, 0))
170 __fgsizer_details.Add(__lbl_region, 0, wx.ALIGN_CENTER_VERTICAL, 0)
171 __fgsizer_details.Add(self._PRW_region, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
172 __lbl_zip_copy = wx.StaticText(self, -1, _("Country"))
173 __lbl_zip_copy.SetForegroundColour(wx.Colour(255, 127, 0))
174 __fgsizer_details.Add(__lbl_zip_copy, 0, wx.ALIGN_CENTER_VERTICAL, 0)
175 __fgsizer_details.Add(self._PRW_country, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
176 __lbl_address_type = wx.StaticText(self, -1, _("Type"))
177 __lbl_address_type.SetForegroundColour(wx.Colour(255, 127, 0))
178 __fgsizer_details.Add(__lbl_address_type, 0, wx.ALIGN_CENTER_VERTICAL, 0)
179 __fgsizer_details.Add(self._PRW_type, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
180 __lbl_primary_contact = wx.StaticText(self, -1, _("Contact"))
181 __fgsizer_details.Add(__lbl_primary_contact, 0, wx.ALIGN_CENTER_VERTICAL, 0)
182 __szr_primary_contact_details.Add(self._PRW_channel_type, 1, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 5)
183 __szr_primary_contact_details.Add(self._TCTRL_phone, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
184 __fgsizer_details.Add(__szr_primary_contact_details, 1, wx.EXPAND, 0)
185 __fgsizer_details.Add((20, 20), 0, wx.EXPAND, 0)
186 __szr_other.Add((20, 20), 1, wx.EXPAND, 0)
187 __lbl_other = wx.StaticText(self, -1, _("Other"), style=wx.ALIGN_CENTRE)
188 __lbl_other.SetForegroundColour(wx.Colour(95, 159, 159))
189 __szr_other.Add(__lbl_other, 0, wx.ALIGN_CENTER_VERTICAL, 0)
190 __szr_other.Add((20, 20), 1, wx.EXPAND, 0)
191 __fgsizer_details.Add(__szr_other, 1, wx.EXPAND, 0)
192 __lbl_primary_provider = wx.StaticText(self, -1, _("In-praxis primary"))
193 __fgsizer_details.Add(__lbl_primary_provider, 0, wx.ALIGN_CENTER_VERTICAL, 0)
194 __fgsizer_details.Add(self._PRW_primary_provider, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
195 __lbl_ext_id = wx.StaticText(self, -1, _("External ID"))
196 __fgsizer_details.Add(__lbl_ext_id, 0, wx.ALIGN_CENTER_VERTICAL, 0)
197 __szr_external_id_details.Add(self._PRW_external_id_type, 1, wx.RIGHT | wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 5)
198 __szr_external_id_details.Add(self._TCTRL_external_id_value, 1, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
199 __fgsizer_details.Add(__szr_external_id_details, 1, wx.EXPAND, 0)
200 __lbl_occupation = wx.StaticText(self, -1, _("Occupation"))
201 __fgsizer_details.Add(__lbl_occupation, 0, wx.ALIGN_CENTER_VERTICAL, 0)
202 __fgsizer_details.Add(self._PRW_occupation, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
203 __lbl_comment = wx.StaticText(self, -1, _("Comment"))
204 __fgsizer_details.Add(__lbl_comment, 0, wx.ALIGN_CENTER_VERTICAL, 0)
205 __fgsizer_details.Add(self._TCTRL_comment, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, 0)
206 __fgsizer_details.AddGrowableCol(1)
207 __szr_main.Add(__fgsizer_details, 1, wx.EXPAND, 0)
208 __HLINE_bottom = wx.StaticLine(self, -1)
209 __szr_main.Add(__HLINE_bottom, 0, wx.LEFT | wx.RIGHT | wx.TOP | wx.EXPAND, 3)
210 self.SetSizer(__szr_main)
211 __szr_main.Fit(self)
212
213
214
215