class SmsFrame(wx.Dialog): """docstring for SmsFrame""" def __init__(self, *arg, **kwargs): super(SmsFrame, self).__init__(*arg, **kwargs, size=(700, 500)) panel = wx.Panel(self) panel.SetBackgroundColour(wx.WHITE) wx.StaticText(self, -1, "Penerima", pos=(10, 10)) self.nomor = wx.TextCtrl(self, -1, pos=(10, 40), size=(300, 30)) self.boxmsg = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE, pos=(330, 40), size=(330, 350)) self.send = wx.Button(self, -1, "Kirim", pos=(330, 400)) wx.Button(self, -1, "Batal", pos=(420, 400)) self.pilihb = wx.Button(self, -1 , "Pilih", pos=(510, 400)) self.pilihb.Bind(wx.EVT_BUTTON, self.pilih) self.send.Bind(wx.EVT_BUTTON, self.kirim) self.dataOlv = ObjectListView(self, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER, pos=(10, 100), size=(300,350)) self.dataOlv.SetColumns([ ColumnDefn("No", "left", 150, "no_telp"), ColumnDefn("Nama", "left", 100, "nama") ]) query = ("SELECT nama_pel, no_telp FROM tb_member") stmt = '' hasil = connector.Execute(query, stmt, 4) sql = hasil["Data"] data = [] for i in sql: dict = {"no_telp": i[0], "nama": i[1]} data.append(dict) self.dataOlv.SetObjects(data) self.SetTitle("Sms Gateway") self.Show(True) def kirim(self, e): no_telp = self.nomor.GetValue() msg = self.boxmsg.GetValue() account_sid = "AC3cddc95d61ca0bb2e33dc5f8b48c93e8" auth_token = "f8d01a882f7e58b8b87d34fe1c6f1865" client = Client(account_sid, auth_token) message = client.messages.create( to=no_telp, from_="+15863718428", body=msg ) tglhari = datetime.datetime.now().date() query = ("INSERT INTO tb_sms_terkirim (status, no_telp, tanggal, keterangan) VALUES (%s,%s,%s,%s)") stmt = ("terkirim", no_telp, tglhari, msg) connector.Execute(query, stmt, 1) def pilih(self, e): ind = self.dataOlv.GetFirstSelected() if ind >= 0 : self.item = self.dataOlv.GetItem(ind, 1) self.nomor.SetValue(self.item.GetText())
class Problems(wx.Panel): def __init__(self, parent, id, ptID): wx.Panel.__init__(self, parent, id) self.ptID = ptID self.problem = '' #receives the newly selected problem back from AddProblemDialog self.probs = [] for items in prob_find(ptID): self.probs.append( Problem(items["short_des"], items["prob_date"], items["icd10"], items["problem_number"])) self.problist = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.problist.SetColumns([ ColumnDefn("Problem", "left", 400, valueGetter="short_des"), ColumnDefn("First Treated", "left", 100, valueGetter="prob_date"), ColumnDefn("ICD-10 Code", "left", 100, valueGetter="icd10") ]) self.problist.rowFormatter = self.rowFormatter self.problist.useAlternateBackColors = False self.problist.SetObjects(self.probs) self.problist.cellEditMode = ObjectListView.CELLEDIT_DOUBLECLICK self.problist.Bind(EVT_CELL_EDIT_STARTING, self.HandleCellEditStarting) self.problist.Bind(EVT_CELL_EDIT_FINISHED, self.HandleCellEditFinished) leftprob = wx.BoxSizer(wx.VERTICAL) rightprob = wx.BoxSizer(wx.VERTICAL) mainsizer = wx.BoxSizer(wx.HORIZONTAL) buttons = (('Add', self.OnNewProb, leftprob), ('Remove', self.OnRemProb, leftprob), ('icd Toggle', self.OnToggle, leftprob)) for label, handler, sizer in buttons: EMR_utilities.buildOneButton(self, self, label, handler, sizer) clock = EMR_utilities.makeClock(self, leftprob) rightprob.Add(self.problist, 1, wx.EXPAND | wx.TOP, 5) mainsizer.Add(leftprob, 0) mainsizer.Add(rightprob, 1, wx.EXPAND) self.SetSizer(mainsizer) listBilledICD(ptID) self.myFont = wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD) def OnNewProb(self, event): #opens dialog window with fields for new problem, does lookup based on description only, updates MySQL, #then clears the list and resets the lists with new query for problems dlg = AddProblemDialog(self, self, -1, 'New Problem') dlg.ProbInstance = self dlg.CenterOnScreen() if dlg.ShowModal() == wx.ID_OK: today = datetime.date.today() newICD = EMR_utilities.getData( 'SELECT icd10 FROM ICD10billable WHERE short_des = "%s";' % self.problem) query = 'INSERT INTO problems10 SET short_des = "%s", prob_date = "%s", patient_ID = "%s", icd10 = "%s";' % \ (self.problem, today, self.ptID, newICD[0]) EMR_utilities.updateData(query) self.UpdateList() dlg.Destroy() def OnRemProb(self, event): obj = self.problist.GetSelectedObjects() for items in obj: qry = 'DELETE FROM problems10 WHERE problem_number = %s;' % items.problem_number self.problist.RemoveObject(items) EMR_utilities.updateData(qry) def UpdateList(self): #problems = prob_find(self.ptID) self.probs = [] for items in prob_find(self.ptID): self.probs.append( Problem(items["short_des"], items["prob_date"], items["icd10"], items["problem_number"])) self.problist.SetObjects(self.probs) def HandleCellEditStarting(self, event): pass def HandleCellEditFinished(self, event): sqlstmt = 'UPDATE problems10 SET short_des = "%s" WHERE problem_number = %s;' \ % (self.problist.GetItem(event.rowIndex, event.subItemIndex).GetText(), event.rowModel["problem_number"]) EMR_utilities.updateData(sqlstmt) def OnToggle(self, event): pass def rowFormatter(self, listItem, model): qryBill = 'SELECT billable FROM ICD10billable WHERE icd10 = "%s";' % model.icd10 qryHCC = 'SELECT hcc FROM hcc WHERE icd10 = "%s";' % model.icd10 resultsBill = EMR_utilities.getData(qryBill) resultsHCC = EMR_utilities.getData(qryHCC) if resultsBill[0] == '0': listItem.SetTextColour(wx.RED) else: pass try: if resultsHCC[0] == 'Yes': listItem.SetBackgroundColour('Light Grey') except: pass
class TestObjectListView(wtc.WidgetTestCase): """ Setup of all base tests used for all types of ObjectListView's and do test the normal ObjectListView. The other ObjectListView tests just override setUp to create the appropriate ListView. """ def setUp(self): super(TestObjectListView, self).setUp() panel = wx.Panel(self.frame, -1) self.objectListView = ObjectListView(panel, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) sizerPanel = wx.BoxSizer(wx.VERTICAL) sizerPanel.Add(self.objectListView, 1, wx.ALL | wx.EXPAND, 4) panel.SetSizer(sizerPanel) sizerFrame = wx.BoxSizer(wx.VERTICAL) sizerFrame.Add(panel, 1, wx.ALL | wx.EXPAND, 4) self.frame.SetSizer(sizerFrame) loadOLV(self.objectListView) def testInitialState(self): self.objectListView.ClearAll() self.assertEqual(self.objectListView.GetColumnCount(), 0) self.assertEqual(self.objectListView.GetItemCount(), 0) self.assertEqual(len(self.objectListView.modelObjects), 0) loadOLV(self.objectListView) def testBasicState(self): self.assertEqual(self.objectListView.GetColumnCount(), len(personColumns)) self.assertEqual(self.objectListView.GetItemCount(), len(persons)) def testSelectObject(self): self.objectListView.SelectObject(persons[0]) self.assertEqual(self.objectListView.GetSelectedObject(), persons[0]) males = [x for x in persons if x.sex == "Male"] self.objectListView.SelectObjects(males) self.assertEqual(set(self.objectListView.GetSelectedObjects()), set(males)) def testSelectAll(self): self.objectListView.SelectAll() for i in range(0, self.objectListView.GetItemCount()): self.assertTrue(self.objectListView.IsSelected(i)) def testDeSelectAll(self): self.objectListView.SelectAll() self.objectListView.DeselectAll() for i in range(0, self.objectListView.GetItemCount()): self.assertFalse(self.objectListView.IsSelected(i)) def testGetSelectedObject(self): self.objectListView.SelectAll() self.assertEqual(self.objectListView.GetSelectedObject(), None) self.objectListView.DeselectAll() self.assertEqual(self.objectListView.GetSelectedObject(), None) self.objectListView.SelectObject(persons[0]) self.assertEqual(self.objectListView.GetSelectedObject(), persons[0]) self.objectListView.SelectObject(persons[1], False) self.assertEqual(self.objectListView.GetSelectedObject(), None) def testGetSelectedObjects(self): self.objectListView.SelectAll() self.assertEqual(set(self.objectListView.GetSelectedObjects()), set(persons)) self.objectListView.SelectObject(persons[0]) self.assertEqual(len(self.objectListView.GetSelectedObjects()), 1) self.objectListView.DeselectAll() self.assertEqual(len(self.objectListView.GetSelectedObjects()), 0) def testRefresh(self): rowIndex = 1 primaryColumn = self.objectListView.GetPrimaryColumnIndex() person = self.objectListView[rowIndex] nameInList = self.objectListView.GetItem(rowIndex, primaryColumn).GetText() self.assertEqual(nameInList, person.name) person.name = "Some different name" self.assertNotEqual(nameInList, person.name) self.objectListView.RefreshObject(person) self.assertEqual( self.objectListView.GetItem(rowIndex, primaryColumn).GetText(), person.name) person.name = nameInList def testSorting(self): self.objectListView.SortBy(0, False) self.assertEqual( self.objectListView.GetItem(0).GetText(), "Zoe Meliko") self.objectListView.SortBy(0, True) self.assertEqual( self.objectListView.GetItem(0).GetText(), "ae cummings") self.objectListView.SortBy(2, False) self.assertEqual( self.objectListView.GetItem(0).GetText(), "Ginger Hawk") self.objectListView.SortBy(2, True) self.assertEqual( self.objectListView.GetItem(0).GetText(), "Ian Janide") def testColumnResizing(self): widths = [ self.objectListView.GetColumnWidth(i) for i in range(len(self.objectListView.columns)) ] self.frame.SetSize(self.frame.GetSize() + (100, 100)) self.objectListView.Layout() # The space filling columns should have increased in width, but the # others should be the same for (colIndex, oldWidth) in enumerate(widths): if self.objectListView.columns[colIndex].isSpaceFilling: self.assertTrue( oldWidth < self.objectListView.GetColumnWidth(colIndex)) else: self.assertEqual(oldWidth, self.objectListView.GetColumnWidth(colIndex)) def testEditing(self): rowIndex = 1 primaryColumnIndex = self.objectListView.GetPrimaryColumnIndex() self.objectListView.cellEditMode = ObjectListView.CELLEDIT_F2ONLY # self.objectListView.SortBy(primaryColumnIndex+1) originalName = self.objectListView[rowIndex].name self.assertEqual( self.objectListView.GetItem(rowIndex, primaryColumnIndex).GetText(), originalName) self.objectListView.DeselectAll() self.objectListView.SetItemState( rowIndex, wx.LIST_STATE_SELECTED | wx.LIST_STATE_FOCUSED, wx.LIST_STATE_SELECTED | wx.LIST_STATE_FOCUSED) # Fake an F2, change the value of the edit, and then fake a Return to # commit the change evt = wx.KeyEvent(wx.EVT_CHAR.evtType[0]) evt.m_keyCode = wx.WXK_F2 self.objectListView._HandleChar(evt) self.objectListView.StartCellEdit(rowIndex, primaryColumnIndex) self.objectListView.cellEditor.SetValue("new name for X") self.objectListView.FinishCellEdit() evt.m_keyCode = wx.WXK_RETURN self.objectListView._HandleChar(evt) self.assertEqual( self.objectListView.GetItem(rowIndex, primaryColumnIndex).GetText(), "new name for X") # Put the original value back evt.m_keyCode = wx.WXK_F2 self.objectListView._HandleChar(evt) self.objectListView.StartCellEdit(rowIndex, primaryColumnIndex) self.objectListView.cellEditor.SetValue(originalName) self.objectListView.FinishCellEdit() evt.m_keyCode = wx.WXK_RETURN self.objectListView._HandleChar(evt) self.assertEqual( self.objectListView.GetItem(rowIndex, primaryColumnIndex).GetText(), originalName) def testLackOfCheckboxes(self): self.objectListView.InstallCheckStateColumn(None) firstObject = self.objectListView[0] self.assertIn(self.objectListView.IsChecked(firstObject), (None, False)) self.assertEqual(self.objectListView.GetCheckedObjects(), list()) self.objectListView.Check(firstObject) self.assertIn(self.objectListView.IsChecked(firstObject), (None, False)) def testCreateCheckStateColumn(self): self.objectListView.InstallCheckStateColumn(None) firstObject = self.objectListView[0] self.assertIn(self.objectListView.IsChecked(firstObject), (False, None)) self.objectListView.CreateCheckStateColumn() self.objectListView.Check(firstObject) self.assertEqual(self.objectListView.IsChecked(firstObject), True) def testAutoCheckboxes(self): col = ColumnDefn("Check") self.objectListView.AddColumnDefn(col) self.assertTrue(col.checkStateGetter is None) self.assertTrue(col.checkStateSetter is None) self.objectListView.InstallCheckStateColumn(col) self.assertTrue(col.checkStateGetter is not None) self.assertTrue(col.checkStateSetter is not None) object = self.objectListView[0] self.assertEqual(self.objectListView.IsChecked(object), False) self.objectListView.Check(object) self.assertEqual(self.objectListView.IsChecked(object), True) def testCheckboxes(self): def myGetter(modelObject): return getattr(modelObject, "isChecked", False) def mySetter(modelObject, newValue): modelObject.isChecked = newValue self.objectListView.SetImageLists() col = ColumnDefn("Check", checkStateGetter=myGetter, checkStateSetter=mySetter) self.objectListView.AddColumnDefn(col) self.assertEqual(self.objectListView.checkStateColumn, col) firstObject = self.objectListView[1] lastObject = self.objectListView[4] self.assertEqual(self.objectListView.IsChecked(firstObject), False) self.assertEqual(self.objectListView.IsChecked(lastObject), False) self.objectListView.Check(firstObject) self.assertEqual(self.objectListView.IsChecked(firstObject), True) self.assertEqual(self.objectListView.IsChecked(lastObject), False) self.objectListView.Check(lastObject) self.assertEqual(self.objectListView.IsChecked(firstObject), True) self.assertEqual(self.objectListView.IsChecked(lastObject), True) if not isinstance(self.objectListView, VirtualObjectListView): self.assertEqual(set(self.objectListView.GetCheckedObjects()), set([firstObject, lastObject])) self.objectListView.Uncheck(firstObject) self.assertEqual(self.objectListView.IsChecked(firstObject), False) self.assertEqual(self.objectListView.IsChecked(lastObject), True) self.objectListView.ToggleCheck(lastObject) self.assertEqual(self.objectListView.IsChecked(firstObject), False) self.assertEqual(self.objectListView.IsChecked(lastObject), False) def testNoAlternateColours(self): # When there is no alternate colors, each row's background colour # should be invalid self.objectListView.useAlternateBackColors = False self.objectListView.RepopulateList() bkgdColours = [ self.getBackgroundColour(i) for i in range(self.objectListView.GetItemCount()) ] self.assertFalse( self.objectListView.oddRowsBackColor in set(bkgdColours)) self.assertFalse( self.objectListView.evenRowsBackColor in set(bkgdColours)) def testAlternateColours(self): self.objectListView.useAlternateBackColors = True self.objectListView.RepopulateList() for i in range(self.objectListView.GetItemCount()): if i & 1: self.assertEqual(self.objectListView.oddRowsBackColor, self.getBackgroundColour(i)) else: self.assertEqual(self.objectListView.evenRowsBackColor, self.getBackgroundColour(i)) def getBackgroundColour(self, i): # There is no consistent way to get the background color of an item (i.e. one that # works on both normal and virtual lists) so we have to split this into a method # so we can change it for a virtual list return self.objectListView.GetItemBackgroundColour(i) def testEmptyListMsg(self): self.objectListView.SetObjects(None) self.assertTrue(self.objectListView.stEmptyListMsg.IsShown()) self.objectListView.SetObjects(persons) self.assertFalse(self.objectListView.stEmptyListMsg.IsShown()) def testFilteringHead(self): self.objectListView.SetFilter(Filter.Head(1)) self.objectListView.SetObjects(persons) self.assertEqual(len(self.objectListView.GetFilteredObjects()), 1) self.assertEqual(self.objectListView.GetFilteredObjects()[0], persons[0]) self.objectListView.SetFilter(None) def testFilteringTail(self): self.objectListView.SetFilter(Filter.Tail(1)) self.objectListView.SetObjects(persons) # The group list will have a group header at row 0 so skip it if isinstance(self.objectListView, GroupListView): firstDataIndex = 1 else: firstDataIndex = 0 self.assertEqual(len(self.objectListView.GetFilteredObjects()), 1) self.assertEqual(self.objectListView.GetFilteredObjects()[0], persons[-1]) self.objectListView.SetFilter(None) def testFilteringPredicate(self): males = [x for x in persons if x.sex == "Male"] self.objectListView.SetFilter( Filter.Predicate(lambda person: person.sex == "Male")) self.objectListView.SetSortColumn(personColumns[-1]) self.objectListView.SetObjects(persons) self.assertEqual(set(self.objectListView.GetFilteredObjects()), set(males)) self.objectListView.SetFilter(None) def testFilteringTextSearch(self): containsF = [ x for x in persons if "f" in x.sex.lower() or "f" in x.name.lower() ] self.objectListView.SetFilter( Filter.TextSearch(self.objectListView, text="f")) self.objectListView.SetObjects(persons) self.assertEqual(set(self.objectListView.GetFilteredObjects()), set(containsF)) self.objectListView.SetFilter(None) def testFilteringChain(self): filterMale = Filter.Predicate(lambda person: person.sex == "Male") filterContainsF = Filter.TextSearch(self.objectListView, text="f") self.objectListView.SetFilter(Filter.Chain(filterMale, filterContainsF)) self.objectListView.SetObjects(persons) self.assertEqual(len(self.objectListView.GetFilteredObjects()), 1) self.assertEqual(self.objectListView.GetFilteredObjects()[0].name, "Eric Fandango") self.objectListView.SetFilter(None)
class Prevention(wx.Panel): def __init__(self, parent, id, ptID): wx.Panel.__init__(self, parent, id) self.ptID = ptID prevents = prevent_find(ptID) self.preventList = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.preventList.SetColumns([ ColumnDefn("Name", "left", 250, valueGetter="prevent_name", isEditable=True), ColumnDefn("Last Date", "center", 100, valueGetter="date", isEditable=True), ColumnDefn("Result", "center", 300, valueGetter="reason", isEditable=True), ColumnDefn("Interval", "center", 60, valueGetter="p_interval", isEditable=True), ColumnDefn("Notes", "left", 500, valueGetter="notes", isEditable=True), ]) self.preventList.SetObjects(prevents) self.preventList.cellEditMode = ObjectListView.CELLEDIT_DOUBLECLICK self.preventList.Bind(EVT_CELL_EDIT_STARTING, self.HandleCellEditStarting) self.preventList.Bind(EVT_CELL_EDIT_FINISHED, self.preventListHandleCellEditFinished) mainSizer = wx.BoxSizer(wx.VERTICAL) vaccines = vaccine_find(ptID) self.vaccineList = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.vaccineList.SetColumns([ ColumnDefn("Vaccine", "left", 150, valueGetter="vaccine", isEditable=True), ColumnDefn("Dates Given", "left", 600, valueGetter="dates", isEditable=True), ColumnDefn("Notes", "left", 500, valueGetter="notes", isEditable=True), ]) self.vaccineList.SetObjects(vaccines) self.vaccineList.cellEditMode = ObjectListView.CELLEDIT_DOUBLECLICK self.vaccineList.Bind(EVT_CELL_EDIT_STARTING, self.HandleCellEditStarting) self.vaccineList.Bind(EVT_CELL_EDIT_FINISHED, self.vaccineListHandleCellEditFinished) #Build the add/delete buttons for each list preventSizer = wx.BoxSizer(wx.HORIZONTAL) vaccineSizer = wx.BoxSizer(wx.HORIZONTAL) prevButtons = (('Add', self.OnAddPrevent), ('Delete', self.OnDelPrevent)) for label, handler in prevButtons: EMR_utilities.buildOneButton(self, self, label, handler, preventSizer) vacButtons = (('Add', self.OnAddVaccine), ('Delete', self.OnDelVaccine), ('Print', self.OnPrintVaccines)) for label, handler in vacButtons: EMR_utilities.buildOneButton(self, self, label, handler, vaccineSizer) #Set the sizers that have not already been set self.preventTitle = wx.StaticText(self, -1, 'Health Maintenance') self.vaccineTitle = wx.StaticText(self, -1, 'Vaccines') titlefont = wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD) self.preventTitle.SetFont(titlefont) self.vaccineTitle.SetFont(titlefont) preventSizer.Add(self.preventTitle, 0, wx.ALIGN_CENTER | wx.ALL, 5) mainSizer.Add(preventSizer) mainSizer.Add(self.preventList, 1, wx.EXPAND | wx.TOP, 3) mainSizer.Add((15, -1)) vaccineSizer.Add(self.vaccineTitle, 0, wx.ALIGN_CENTER | wx.ALL, 5) mainSizer.Add(vaccineSizer) mainSizer.Add(self.vaccineList, 1, wx.EXPAND | wx.TOP, 3) mainSizer.Add((-1, 5)) self.SetSizer(mainSizer) self.Centre() self.Show(True) #def getKey(item): # return item['vaccine'] def OnPrintVaccines(self, event): obj = self.vaccineList.GetObjects() string = '' v = [] for items in obj: v.append((items['vaccine'], items['dates'], items['notes'])) for things in sorted(v): string = '%s %s %s\n' % \ (things[1], things[0], things[2]) + string form_lt = "%s/EMR_outputs/Vaccines.html" % settings.LINUXPATH form_at = "%s/EMR_outputs/Vaccines.html" % settings.APPLEPATH form_wt = "%s\EMR_outputs\Vaccines.html" % settings.WINPATH form = open(EMR_utilities.platformText(form_lt, form_at, form_wt), 'r') s = form.read() form.close() dem_data = EMR_utilities.getDictData( 'SELECT * FROM demographics WHERE patient_ID = %s;' % self.ptID) dem_data['string'] = string dem_data['date'] = EMR_utilities.dateToday() dem_data['name_address'] = EMR_formats.format_address(dem_data) script_text = s % (dem_data) printer = EMR_utilities.Printer() printer.PreviewText(script_text) '''path_lt = "%s/EMR_outputs/%s/Orders" % (settings.LINUXPATH, self.ptID) path_at = "%s/EMR_outputs/%s/Orders" % (settings.APPLEPATH, self.ptID) path_wt = "%s\EMR_outputs\%s\Orders" % (settings.WINPATH, self.ptID) path = EMR_utilities.platformText(path_lt, path_at, path_wt) filename = "%s\script%s.html" % (path, EMR_utilities.dateToday(t='yes')) f = open(filename, 'w') f.write(script_text) f.close()''' def HandleCellEditStarting(self, event): pass def vaccineListHandleCellEditFinished(self, event): sqlstmt = 'UPDATE vaccines SET %s = "%s" WHERE vaccine_number = %s;' \ % (self.vaccineList.columns[event.subItemIndex].valueGetter, self.vaccineList.GetItem(event.rowIndex, event.subItemIndex).GetText(), event.rowModel["vaccine_number"]) EMR_utilities.updateData(sqlstmt) def preventListHandleCellEditFinished(self, event): sqlstmt = 'UPDATE prevents2 SET %s = "%s" WHERE prevent_number = %s;' \ % (self.preventList.columns[event.subItemIndex].valueGetter, self.preventList.GetItem(event.rowIndex, event.subItemIndex).GetText(), event.rowModel["prevent_number"]) EMR_utilities.updateData(sqlstmt) def OnAddPrevent(self, event): prev = wx.GetTextFromUser('What is the new health maintance item?', 'Health Maintenance') if prev == "": pass else: note = wx.GetTextFromUser('Any notes?', 'Notes') query = 'INSERT INTO prevents2 SET prevent_name = "%s", date = "%s", reason = "normal", p_interval = 1, notes = "%s", patient_ID = %s;' % \ (prev, EMR_utilities.dateToday(), note, self.ptID) EMR_utilities.updateData(query) self.UpdatePrevents() def OnAddVaccine(self, event): vac = wx.GetTextFromUser('What is the new vaccine?', 'Vaccines') dates = wx.GetTextFromUser('What date(s) was vaccine given?', 'Vaccines') if vac == "": pass else: note = wx.GetTextFromUser('Any notes?', 'Notes') query = 'INSERT INTO vaccines SET vaccine = "%s", dates = "%s", notes = "%s", patient_ID = %s;' % \ (vac, dates, note, self.ptID) EMR_utilities.updateData(query) self.UpdateVaccines() def OnDelPrevent(self, event): obj = self.preventList.GetSelectedObjects() for items in obj: qry = 'DELETE FROM prevents2 WHERE prevent_number = %s;' % items[ 'prevent_number'] self.preventList.RemoveObject(items) EMR_utilities.updateData(qry) def OnDelVaccine(self, event): obj = self.vaccineList.GetSelectedObjects() for items in obj: qry = 'DELETE FROM vaccines WHERE vaccine_number = %s;' % items[ 'vaccine_number'] self.vaccineList.RemoveObject(items) EMR_utilities.updateData(qry) def UpdatePrevents(self): prevents = prevent_find(self.ptID) self.preventList.SetObjects(prevents) def UpdateVaccines(self): vac = vaccine_find(self.ptID) self.vaccineList.SetObjects(vac)
class TabTwo(wx.Panel): """docstring for TabTwo""" capture = '' def __init__(self, parent, capture=capture): wx.Panel.__init__(self, parent) self.photoDefault = "images/no_webcam.jpg" self.pathp = '' #pic = wx.Image(self.photoDefault, wx.BITMAP_TYPE_ANY).ConvertToBitmap() #wx.StaticBitmap(self, -1, pic, (50,20), (1000,300)) bitmap = wx.Bitmap(self.photoDefault) bitmap = scale_bitmap(bitmap, 640, 380) control = wx.StaticBitmap(self, -1, bitmap) control.SetPosition((50, 280)) #50, 420 self.text = wx.StaticText(self, -1, "B805WYN", (790, 280)) font = wx.Font(20, wx.DECORATIVE, wx.NORMAL, wx.NORMAL) self.text.SetFont(font) #Button self.btnOpenFile = wx.Button(self, -1, "Open File", pos=(720, 320), size=(120, 30)) self.btnStart = wx.Button(self, -1, "Start", pos=(720, 350), size=(120, 30)) self.btnStop = wx.Button(self, -1, "Stop", pos=(720, 350), size=(120, 30)) self.btnRecog = wx.Button(self, -1, "Recognize", pos=(720, 380), size=(120, 30)) self.btntambahData = wx.Button(self, -1, "Tambah Data", pos=(850, 320), size=(120, 30)) self.btnKepen = wx.Button(self, -1, "Tambah Kepentingan", pos=(850, 350), size=(120, 30)) # #event self.btnStop.Hide() self.btnStart.Bind(wx.EVT_BUTTON, self.start) self.btnStop.Bind(wx.EVT_BUTTON, self.stop) self.btnOpenFile.Bind(wx.EVT_BUTTON, self.openFile) self.btnRecog.Bind(wx.EVT_BUTTON, self.recognition) self.btnKepen.Bind(wx.EVT_BUTTON, self.kepentingan) self.btntambahData.Bind(wx.EVT_BUTTON, self.tambahData) #bx = wx.StaticBox(self, 1, pos=(690,9), size=(300, 140)) #customize self.btnStart.SetBitmap(wx.Bitmap("images/rec.png")) self.btnStop.SetBitmap(wx.Bitmap("images/stop.png")) self.btnOpenFile.SetBitmap(wx.Bitmap("images/folder(1).png")) self.btnRecog.SetBitmap(wx.Bitmap("images/eye-button.png")) #camera setup #videoWarper = wx.StaticBox(self, label="Video",size=(400,300)) #videoBoxSizer = wx.StaticBoxSizer(videoWarper, wx.VERTICAL) parent.Centre() self.Show() #hasil Recog text = wx.StaticText(self, -1, "Nomor Plat :", (1020, 30)) text = wx.StaticText(self, -1, "Daerah :", (1020, 50)) self.plateNumberPlat = wx.StaticText(self, -1, "Unknown", (1140, 30)) daerahPlat = wx.StaticText(self, -1, "Unknown", (1140, 50)) #-----Database------ text = wx.StaticText(self, -1, "Name :", (1020, 70)) text = wx.StaticText(self, -1, "Date Added :", (1020, 90)) text = wx.StaticText(self, -1, "Latest Visit :", (1020, 110)) text = wx.StaticText(self, -1, "Visit :", (1020, 130)) text = wx.StaticText(self, -1, "Kepentingan :", (1020, 150)) text = wx.StaticText(self, -1, "Tanggal Rekom :", (1020, 150)) self.nameDatabaseRecog = wx.StaticText(self, -1, "Unknown", (1140, 70)) self.dateAddedRecog = wx.StaticText(self, -1, "Unknown", (1140, 90)) self.latestVisitDatabaseRecog = wx.StaticText(self, -1, "Unknown", (1140, 110)) self.visitDatabaseRecog = wx.StaticText(self, -1, "Unknown", (1140, 130)) self.kepentinganText = wx.StaticText(self, -1, "Unknown", (1140, 150)) self.rekomendasiText = wx.StaticText(self, -1, "Unknown", (1140, 170)) #end Recog #list Recognition self.dataOlv = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER, pos=(50, 20), size=(950, 250)) #list candidates self.dataOlvCand = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER, pos=(1020, 270), size=(310, 200)) self.dataMobilTampil = [] #List Credit Digunakan labelCredit = wx.StaticText(self, -1, "Credit 2000 / Month", pos=(1020, 503)) self.dataOlvCre = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER, pos=(1020, 520), size=(320, 150)) self.dataCredit = [] self.btnRecog.Disable() def tambahData(self, e): ind = self.dataOlv.GetFirstSelected() if ind >= 0: self.item = self.dataOlv.GetItem(ind) print(ind) app = data_kendaraan.data_Kendaraan(self) app.Show(True) def kepentingan(self, e): hasil = kp.KepentinganFrame(self) hasil.Show(True) def start(self, e): self.capture = cv2.VideoCapture(0) videoFrame = wx.Panel(self, -1, pos=(50, 280), size=(640, 380)) ShowCapture(videoFrame, self.capture) self.btnStart.Hide() self.btnStop.Show() self.btnRecog.Enable() self.pathp = '' def stop(self, e): self.btnStart.Show() self.btnStop.Hide() bitmap = wx.Bitmap(self.photoDefault) bitmap = scale_bitmap(bitmap, 640, 380) control = wx.StaticBitmap(self, -1, bitmap) control.SetPosition((50, 280)) self.btnRecog.Disable() self.capture.release() def openFile(self, e): openFileDialog = wx.FileDialog(self, "Open", "", "", "Image File (*.jpg, *.png)|*.jpg", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) openFileDialog.ShowModal() #Pake If kjklnjaksjdhkdj self.pathp = openFileDialog.GetPath() bitmap = wx.Bitmap(openFileDialog.GetPath()) bitmap = scale_bitmap(bitmap, 640, 380) control = wx.StaticBitmap(self, -1, bitmap) control.SetPosition((50, 280)) openFileDialog.Destroy() self.btnRecog.Enable() def recognition(self, e): print(self.pathp) if self.pathp == '': self.ret, self.image = self.capture.read() print(self.ret) print(self.image) if os.path.exists("itemp\plate\plat1.jpg"): self.imageName = "itemp\plate\plat_{0}.jpg".format( int(time.time())) cv2.imwrite(self.imageName, self.image) self.jsonName = "itemp\json\json_{0}.json".format( int(time.time())) else: self.imageName = "itemp\plate\plat1.jpg" cv2.imwrite(self.imageName, self.image) self.jsonName = "itemp\json\json1.json" bitmap = wx.Bitmap(self.imageName) bitmap = scale_bitmap(bitmap, 280, 200) control = wx.StaticBitmap(self, -1, bitmap) control.SetPosition((720, 420)) IMAGE_PATH = self.imageName else: IMAGE_PATH = self.pathp SECRET_KEY = 'sk_42b18388bc96def5ad015425' with open(IMAGE_PATH, 'rb') as image_file: img_base64 = base64.b64encode(image_file.read()) url = 'https://api.openalpr.com/v2/recognize_bytes?recognize_vehicle=1&country=id&secret_key=%s' % ( SECRET_KEY) try: r = requests.post(url, data=img_base64) except Exception as e: print("Error: Kendaraan Tidak Ditemukan") return data_file = json.dumps(r.json(), indent=2) data = json.loads(str(data_file)) hasil = data['results'][0] tanggalini = datetime.datetime.now() query = ( "SELECT keterangan2, rekomendasi FROM tb_kunjungan WHERE plate = %s and tgl_kunjungan = %s" ) stmt = (hasil['plate'], "{0}".format(str(tanggalini)[:10])) datarek = connector.Execute(query, stmt, 4) hasilrek = datarek["Data"] print(hasilrek) if len(hasilrek) > 0: self.kepentinganText.SetLabel(str(hasilrek[0][0])) self.rekomendasiText.SetLabel(str(hasilrek[0][1])) else: self.kepentinganText.SetLabel("Belum Terdaftar") self.rekomendasiText.SetLabel("Belum Terdaftar") query = ("SELECT * FROM tb_member WHERE plate IN (%s)") stmt = (hasil['plate']) hasilSql = connector.Execute(query, stmt, 3) dataSql = hasilSql['Data'] print(dataSql) if len(dataSql) > 0: self.dict = { "camera": "Camera 1", "time": str(datetime.datetime.now().time()), "merk": dataSql[0][5], "perusahaan": dataSql[0][6], "model": dataSql[0][7], "warna": dataSql[0][4], "tahun": dataSql[0][8], "plate": hasil['plate'] } else: self.plateMobil = hasil['plate'] self.warnaMobil = hasil["vehicle"]['color'][0]['name'].upper() self.merkMobil = hasil["vehicle"]['make_model'][0]['name'].upper(), self.perusahaanMobil = hasil["vehicle"]['make'][0]['name'].upper() self.tahunMobil = str(hasil["vehicle"]['year'][0]['name']) self.modelMobil = hasil["vehicle"]['body_type'][0]['name'].upper() self.dict = { "camera": "Camera 1", "time": str(datetime.datetime.now().time()), "merk": self.merkMobil, "perusahaan": self.perusahaanMobil, "model": self.modelMobil, "warna": self.warnaMobil, "tahun": self.tahunMobil, "plate": self.plateMobil } self.plateNumberPlat.SetLabel(hasil['plate']) self.text.SetLabel(hasil['plate']) if len(dataSql) > 0: tanggal = str(dataSql[0][2]) self.nameDatabaseRecog.SetLabel(dataSql[0][1]) self.dateAddedRecog.SetLabel("{0}".format(tanggal[:10])) self.latestVisitDatabaseRecog.SetLabel(str(dataSql[0][11])) query = ("SELECT * FROM tb_kunjungan WHERE plate IN (%s)") stmt = (hasil['plate']) jmlSql = connector.Execute(query, stmt, 3) datajmlh = jmlSql['Data'] self.visitDatabaseRecog.SetLabel(str(len(datajmlh) + 1)) query = ( "INSERT INTO tb_kunjungan (plate, tgl_kunjungan) VALUES (%s, %s)" ) stmt = (dataSql[0][0], datetime.datetime.now()) hasilSql = connector.Execute(query, stmt, 1) query = ("UPDATE tb_member SET latest_visit = %s WHERE plate = %s") stmt = (datetime.datetime.now(), dataSql[0][0]) hasilSql = connector.Execute(query, stmt, 1) else: self.nameDatabaseRecog.SetLabel("Tidak Terdaftar") self.dateAddedRecog.SetLabel("Tidak Terdaftar") self.latestVisitDatabaseRecog.SetLabel("Hari Ini") self.visitDatabaseRecog.SetLabel("1") query = ( "INSERT INTO tb_kunjungan (plate, tgl_kunjungan) VALUES (%s, %s)" ) stmt = (hasil['plate'], datetime.datetime.now()) hasilSql = connector.Execute(query, stmt, 1) candidates = hasil['candidates'] e = [] for i in candidates: Candidates = { 'confidences': str(int(i['confidence'])) + " " + "%", 'plate': i['plate'] } e.append(Candidates) self.dataOlv.SetColumns([ ColumnDefn("Camera", "left", 100, "camera"), ColumnDefn("Time", "left", 100, "time"), ColumnDefn("Plate", "left", 100, "plate"), ColumnDefn("Merk", "left", 100, "merk"), ColumnDefn("Perusahaan", "left", 102, "perusahaan"), ColumnDefn("Model", "left", 100, "model"), ColumnDefn("Warna", "left", 100, "warna"), ColumnDefn("Tahun", "left", 100, "tahun") ]) self.dataMobilTampil.append(self.dict) self.dataOlv.SetObjects(self.dataMobilTampil) self.dataOlvCand.SetColumns([ ColumnDefn("Plate", 'left', 100, 'plate'), ColumnDefn("confidence", 'left', 100, 'confidences') ]) self.dataOlvCand.SetObjects(e) credit = { "credit": 2000, "digunakan": data['credits_monthly_used'], "sisa": 2000 - int(data['credits_monthly_used']) } self.dataOlvCre.SetColumns([ ColumnDefn("Credit", "left", 100, "credit"), ColumnDefn("Digunakan", "left", 100, "digunakan"), ColumnDefn("Sisa", "left", 100, "sisa") ]) self.dataCredit.append(credit) self.dataOlvCre.SetObjects(self.dataCredit)
class Vitals(wx.Panel): def __init__(self, parent, ID, PtID): wx.Panel.__init__(self, parent, ID) #I need some way to set the max size for the grid self.PtID = PtID self.qry = "SELECT * FROM vitals WHERE patient_ID = %s;" % (str(self.PtID)) self.vitals = list(EMR_utilities.getAllDictData(self.qry)) self.textctrl = {} self.vitalsList = ObjectListView(self, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER) self.vitalsList.SetColumns([ ColumnDefn("Weight", "center", 80, valueGetter="wt"), ColumnDefn("Height", "center", 80, valueGetter="ht"), ColumnDefn("HC", "center", 80, valueGetter="hc"), ColumnDefn("Systolic", "center", 80, valueGetter="sBP"), ColumnDefn("Diastolic", "center", 80, valueGetter="dBP"), ColumnDefn("Pulse", "center", 80, valueGetter="pulse"), ColumnDefn("Resp", "center", 80, valueGetter="resp"), ColumnDefn("O2 Sat", "center", 80, valueGetter="sats"), ColumnDefn("Temp", "center", 80, valueGetter="temp"), ColumnDefn("Date", "center", 120, valueGetter="vitals_date") ]) self.vitalsList.SetObjects(self.vitals) self.vitalsList.cellEditMode = ObjectListView.CELLEDIT_DOUBLECLICK self.vitalsList.Bind(EVT_CELL_EDIT_STARTING, self.HandleCellEditStarting) self.vitalsList.Bind(EVT_CELL_EDIT_FINISHED, self.listHandleCellEditFinished) self.vitalsbox = wx.BoxSizer(wx.HORIZONTAL) self.vitalsbox.Add(self.vitalsList, 1, wx.EXPAND |wx.ALL, 20) self.mainsizer = wx.BoxSizer(wx.VERTICAL) border = wx.StaticBox(self, -1, 'Add Vitals') f = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.LIGHT) border.SetFont(f) addvitals = wx.StaticBoxSizer(border, wx.HORIZONTAL) controls = [('Wt', 40), ('Ht', 30), ('HC', 30), ('Temp', 40), ('SBP', 40), ('DBP', 40), ('Pulse', 40), ('Resp', 30), \ ('O2 Sats', 30), ('Date', 80)] for label, size in controls: EMR_utilities.buildOneTextCtrl(self, label, size, addvitals) self.textctrl['Date'].SetValue(str(EMR_utilities.dateToday())) self.mainsizer.Add(self.vitalsbox) self.mainsizer.Add(addvitals, 0, wx.ALL, 20) buttonAdd = EMR_utilities.buildOneButton(self, self, 'Update Vitals', self.UpdateVitals) buttonDel = EMR_utilities.buildOneButton(self, self, 'Delete Vitals', self.DeleteVitals) self.mainsizer.Add(buttonAdd, 0, wx.ALIGN_LEFT|wx.ALIGN_TOP|wx.LEFT|wx.TOP, 20) self.mainsizer.Add(buttonDel, 0, wx.ALIGN_LEFT|wx.ALIGN_TOP|wx.LEFT|wx.TOP, 20) self.SetSizer(self.mainsizer) def HandleCellEditStarting(self, event): pass def listHandleCellEditFinished(self, event): sqlstmt = 'UPDATE vitals SET %s = "%s" WHERE vitals_number = %s;' \ % (self.vitalsList.columns[event.subItemIndex].valueGetter, self.vitalsList.GetItem(event.rowIndex, event.subItemIndex).GetText(), event.rowModel["vitals_number"]) EMR_utilities.updateData(sqlstmt) def UpdateVitals(self, event): updateqry = 'INSERT INTO vitals SET wt = "%s", ht = "%s", hc = "%s", temp = "%s", sBP = "%s", dBP = "%s", \ pulse = "%s", resp = "%s", sats = "%s", vitals_date = "%s", patient_ID = %s;' % (self.textctrl['Wt'].GetValue(), self.textctrl['Ht'].GetValue(), self.textctrl['HC'].GetValue(), self.textctrl['Temp'].GetValue(), self.textctrl['SBP'].GetValue(), self.textctrl['DBP'].GetValue(), self.textctrl['Pulse'].GetValue(), self.textctrl['Resp'].GetValue(), self.textctrl['O2 Sats'].GetValue(), self.textctrl['Date'].GetValue(), self.PtID) EMR_utilities.updateData(updateqry) self.UpdateList() data = EMR_utilities.getData("SELECT dob, sex FROM demographics WHERE patient_ID = %s;" % self.PtID) if data[1] == 'male': sex = 'boy' else: sex = 'girl' s = data[0].strftime("%B") + ',' + str(data[0].day) + ',' + str(data[0].year) + ',' + sex + ',' + \ self.textctrl['Ht'].GetValue() + ',' + self.textctrl['Wt'].GetValue() + ',' + self.textctrl['HC'].GetValue() with open('/home/mb/Dropbox/iMacros/Datasources/growth.txt', 'w') as f: f.write(s) f.close() self.Layout() #this line from C M and Robin Dunn on the mailing list; see 20 Feb 08 email for items in self.textctrl: self.textctrl[items].SetValue("") def DeleteVitals(self, event): obj = self.vitalsList.GetSelectedObjects() for items in obj: qry = 'DELETE FROM vitals WHERE vitals_number = %s;' % items['vitals_number'] EMR_utilities.updateData(qry) self.UpdateList() def UpdateList(self): self.vitals = list(EMR_utilities.getAllDictData(self.qry)) #this function just updates the list after new vitals added or deleted self.vitalsList.SetObjects(self.vitals)
class Meds(wx.Panel): def __init__(self, parent, id, ptID): wx.Panel.__init__(self, parent, id) self.ptID = ptID self.toggler = 'Current Meds' self.reviewed = 0 meds = med_find(ptID) self.list = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.list.SetColumns([ ColumnDefn("Name", "left", 250, valueGetter="med_name"), ColumnDefn("Dose", "center", 180, valueGetter="dose"), ColumnDefn("Tablets", "center", 60, valueGetter="number_tablets"), ColumnDefn("Route", "left", 60, valueGetter="route"), ColumnDefn("Frequency", "left", 80, valueGetter="frequency"), ColumnDefn("#", "center", 40, valueGetter="number_pills"), ColumnDefn("Refills", "center", 50, valueGetter="refills"), ColumnDefn("Date", "left", 100, valueGetter="script_date") ]) self.list.SetObjects(meds) self.list.cellEditMode = ObjectListView.CELLEDIT_DOUBLECLICK self.list.Bind(EVT_CELL_EDIT_STARTING, self.HandleCellEditStarting) self.list.Bind(EVT_CELL_EDIT_FINISHED, self.listHandleCellEditFinished) leftmed = wx.BoxSizer(wx.VERTICAL) rightmed = wx.BoxSizer(wx.VERTICAL) mainmed = wx.BoxSizer(wx.HORIZONTAL) medbuttons = (('Archive', self.OnArchMed), ('Print', self.OnpRintMed), ('Delete', self.OnDeleteMed), ('Toggle', self.OnToggleMed), ('Interactions', self.OnInteractions), ('Reviewed', self.OnReviewed)) for label, handler in medbuttons: EMR_utilities.buildOneButton(self, self, label, handler, leftmed) allergies = allergy_find(ptID) self.allergylist = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.allergylist.SetColumns([ ColumnDefn("Allergy", "left", 200, valueGetter="allergy"), ColumnDefn("Reaction", "left", 250, valueGetter="reaction") ]) self.allergylist.SetObjects(allergies) self.allergylist.cellEditMode = ObjectListView.CELLEDIT_DOUBLECLICK self.allergylist.Bind(EVT_CELL_EDIT_STARTING, self.HandleCellEditStarting) self.allergylist.Bind(EVT_CELL_EDIT_FINISHED, self.allergyHandleCellEditFinished) leftall = wx.BoxSizer(wx.VERTICAL) rightall = wx.BoxSizer(wx.VERTICAL) mainall = wx.BoxSizer(wx.HORIZONTAL) allbuttons = (('Add', self.OnNewAll, leftall), ('Remove', self.OnRemAll, leftall)) for label, handler, sizer in allbuttons: EMR_utilities.buildOneButton(self, self, label, handler, sizer) addmed = AddMed(self, -1, self.ptID) #Set the sizers that have not already been set mainsizer = wx.BoxSizer(wx.VERTICAL) rightmed.Add(self.list, 1, wx.EXPAND | wx.TOP, 3) self.medtitle = wx.StaticText(self, -1, self.toggler) titlefont = wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD) self.medtitle.SetFont(titlefont) mainmed.Add(leftmed, 0) mainmed.Add((15, -1)) mainmed.Add(rightmed, 1, wx.EXPAND) rightall.Add(self.allergylist, 1, wx.EXPAND | wx.TOP, 3) rightmed.Add(addmed, 1, wx.EXPAND) mainall.Add(leftall, 0) mainall.Add((15, -1)) mainall.Add(rightall, 1, wx.EXPAND) mainsizer.Add(mainall, 2, wx.EXPAND) mainsizer.Add(self.medtitle, 0, wx.ALIGN_CENTER | wx.ALL, 5) mainsizer.Add(mainmed, 4, wx.EXPAND) mainsizer.Add((-1, 5)) self.SetSizer(mainsizer) self.Centre() self.Show(True) def OnArchMed( self, event ): #need add/edit form pulled up on selected meds, update query, requery meds #open AddEditMed form with selected/checked med filled in obj = self.list.GetSelectedObjects() for items in obj: qry = 'UPDATE meds SET archive = 1 WHERE med_number = %s;' % items[ 'med_number'] self.list.RemoveObject(items) EMR_utilities.updateData(qry) def OnpRintMed(self, event): obj = self.list.GetSelectedObjects() string = '' for items in obj: string = '%s %s\n take %s %s %s #%s refills: %s\n\n' % \ (items["med_name"], items["dose"], items["number_tablets"], items["route"], items["frequency"], items["number_pills"], items["refills"]) + string form_lt = "%s/EMR_outputs/Script.html" % settings.LINUXPATH form_at = "%s/EMR_outputs/Script.html" % settings.APPLEPATH form_wt = "%s\EMR_outputs\Script.html" % settings.WINPATH form = open(EMR_utilities.platformText(form_lt, form_at, form_wt), 'r') s = form.read() form.close() dem_data = EMR_utilities.getDictData( 'SELECT * FROM demographics WHERE patient_ID = %s;' % self.ptID) dem_data['string'] = string dem_data['date'] = EMR_utilities.dateToday() dem_data['name_address'] = EMR_formats.format_address(dem_data) script_text = s % (dem_data) printer = EMR_utilities.Printer() printer.PreviewText(script_text) path_lt = "%s/EMR_outputs/%s/Orders" % (settings.LINUXPATH, self.ptID) path_at = "%s/EMR_outputs/%s/Orders" % (settings.APPLEPATH, self.ptID) path_wt = "%s\EMR_outputs\%s\Orders" % (settings.WINPATH, self.ptID) path = EMR_utilities.platformText(path_lt, path_at, path_wt) filename = "%s/script%s.html" % ( path, EMR_utilities.dateToday(t='file format')) f = open(filename, 'w') f.write(script_text) f.close() def OnDeleteMed(self, event): obj = self.list.GetSelectedObjects() for items in obj: qry = 'DELETE FROM meds WHERE med_number = %s;' % items[ 'med_number'] self.list.RemoveObject(items) EMR_utilities.updateData(qry) def OnToggleMed(self, event): if self.toggler == 'Current Meds': self.toggler = 'Archived Meds' self.medtitle.SetLabel(self.toggler) qry = 'SELECT * FROM meds WHERE archive = 1 AND patient_ID = %s' % ( self.ptID) data = EMR_utilities.getAllDictData(qry) self.list.SetObjects(list(data)) else: self.toggler = 'Current Meds' self.medtitle.SetLabel(self.toggler) self.UpdateList() def OnInteractions(self, event): obj = self.list.GetSelectedObjects() string = 'http://mletter.best.vwh.net/Psc/dip2.cgi?userid=guest' count = 1 for items in obj: string = string + '&drug%s=%s' % (count, items['med_name']) count = count + 1 results = EMR_utilities.HTML_Frame(self, "Medication Interactions", html_str=string) results.Show() def OnReviewed(self, event): self.reviewed = 1 def OnNewAll(self, event): allergy = wx.GetTextFromUser('What is the patient allergic to?', 'New Allergy') if allergy == "": pass else: reaction = wx.GetTextFromUser('What happened?', 'Reaction') query = 'INSERT INTO allergies SET allergy = "%s", reaction = "%s", patient_ID = %s;' % \ (allergy, reaction, self.ptID) EMR_utilities.updateData(query) self.UpdateAllergy() def OnRemAll(self, event): obj = self.allergylist.GetSelectedObjects() for items in obj: qry = 'DELETE FROM allergies WHERE allergy_number = %s;' % items[ 'allergy_number'] self.allergylist.RemoveObject(items) EMR_utilities.updateData(qry) def UpdateList( self ): #this function just updates the list after new med added or deleted meds = med_find(self.ptID) #These lines put the data from the query self.list.SetObjects(meds) def UpdateAllergy(self): allergies = allergy_find(self.ptID) self.allergylist.SetObjects(allergies) def HandleCellEditStarting(self, event): pass def allergyHandleCellEditFinished(self, event): sqlstmt = 'UPDATE allergies SET %s = "%s" WHERE allergy_number = %s;' \ % (self.allergylist.columns[event.subItemIndex].valueGetter, self.allergylist.GetItem(event.rowIndex, event.subItemIndex).GetText(), event.rowModel["allergy_number"]) EMR_utilities.updateData(sqlstmt) def listHandleCellEditFinished(self, event): sqlstmt = 'UPDATE meds SET %s = "%s" WHERE med_number = %s;' \ % (self.list.columns[event.subItemIndex].valueGetter, self.list.GetItem(event.rowIndex, event.subItemIndex).GetText(), event.rowModel["med_number"]) EMR_utilities.updateData(sqlstmt)
class data_Kendaraan(wx.Dialog): """docstring for data_Kendaraan""" def __init__(self, *arg, **kwargs): super(data_Kendaraan, self).__init__(*arg, **kwargs, pos=(300, 50), size=(900, 600)) self.SetTitle("Data Kendaraan") panel = wx.Panel(self) panel.SetBackgroundColour(wx.WHITE) #tampil data self.tampilMysql() #label-label wx.StaticText(self, -1, "Nomor Plat :", pos=(30, 20)) wx.StaticText(self, -1, "Nama Pelanggan :", pos=(30, 50)) wx.StaticText(self, -1, "No Telp :", (30, 80)) wx.StaticText(self, -1, "Merk :", (30, 110)) wx.StaticText(self, -1, "Model :", (30, 140)) wx.StaticText(self, -1, "Perusahaan :", (500, 20)) wx.StaticText(self, -1, "Warna :", (500, 50)) wx.StaticText(self, -1, "Jenis :", (500, 80)) wx.StaticText(self, -1, "Tahun :", (500, 110)) #textbox-textbox self.txtNomor = wx.TextCtrl(self, -1, pos=(150, 20), size=(30, 25)) wx.TextCtrl(self, -1, pos=(190, 20), size=(50, 25)) wx.TextCtrl(self, -1, pos=(250, 20), size=(50, 25)) self.txtNama = wx.TextCtrl(self, -1, pos=(150, 50), size=(250, 25)) self.txtTelp = wx.TextCtrl(self, -1, pos=(150, 80), size=(250, 25)) self.txtMerk = wx.TextCtrl(self, -1, pos=(150, 110), size=(250, 25)) self.txtModel = wx.TextCtrl(self, -1, pos=(150, 140), size=(250, 25)) self.txtPerusahaan = wx.TextCtrl(self, -1, pos=(600, 20), size=(250, 25)) self.txtWarna = wx.TextCtrl(self, -1, pos=(600, 50), size=(250, 25)) pilihanJenis = ["Mobil", "Motor"] self.txtJenis = wx.ComboBox(self, choices=pilihanJenis, pos=(600, 80), size=(250, 25)) pilihanTahun = [ "1996 - 2000", "2001 - 2004", "2005 - 2009", "2010 - 2014", "2015 - 2019" ] self.txtTahun = wx.ComboBox(self, choices=pilihanTahun, pos=(600, 110), size=(250, 25)) pilihanSort = ["Nomor Plat", "Nama", "Tanggal", "Jenis", "Perusahaan"] self.txtSort = wx.ComboBox(self, choices=pilihanSort, pos=(300, 191.5), size=(190, 24)) self.txtSort.SetValue("Nama") self.txtSearch = wx.TextCtrl(self, -1, pos=(600, 191.5), size=(250, 24)) self.txtPilihan = wx.TextCtrl(self, -1) self.txtPilihan.SetValue("add") self.txtPilihan.Hide() #button-button self.btnsave = wx.Button(self, -1, "Save", pos=(500, 140)) self.btnCancel = wx.Button(self, -1, "Cancel", pos=(600, 140)) self.btnEdit = wx.Button(self, -1, "Edit", pos=(30, 190)) self.btnDelete = wx.Button(self, -1, "Delete", pos=(120, 190)) self.btnSort = wx.Button(self, -1, "Sort By", pos=(210, 190)) self.btnSearch = wx.Button(self, -1, "Search", pos=(500, 190)) self.btnkepentingan = wx.Button(self, -1, "Kepentingan", pos=(700, 140)) #event-event self.btnsave.Bind(wx.EVT_BUTTON, self.saveData) self.btnEdit.Bind(wx.EVT_BUTTON, self.editData) self.btnDelete.Bind(wx.EVT_BUTTON, self.deleteData) self.btnCancel.Bind(wx.EVT_BUTTON, self.cancelBtn) self.txtSearch.Bind(wx.EVT_TEXT, self.searching) self.btnkepentingan.Bind(wx.EVT_BUTTON, self.tampil) self.dataOlv = ObjectListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER, pos=(10, 230), size=(850, 300)) self.setDataMobil() self.Centre() self.Show(True) def tampil(self, e): hasil = kp.KepentinganFrame(self) hasil.Show(True) def searching(self, e): self.setSearch() self.setDataMobil() def setSearch(self): varSearch = self.txtSearch.GetValue() valSort = self.txtSort.GetValue() if valSort == "Nomor Plat": query = ("SELECT * FROM tb_member WHERE plate LIKE %s") elif valSort == "Tanggal": query = ("SELECT * FROM tb_member WHERE added_date LIKE %s") elif valSort == "Perusahaan": query = ("SELECT * FROM tb_member WHERE perusahaan LIKE %s") elif valSort == 'Jenis': query = ("SELECT * FROM tb_member WHERE jenis LIKE %s") else: query = ("SELECT * FROM tb_member WHERE nama_pel LIKE %s") stmt = ("%" + varSearch + "%") self.datasek = [] hasil = connector.Execute(query, stmt, 3) if hasil != 'Koneksi Gagal': data = hasil['Data'] for i in data: self.tanggalIni = str(i[2]) dict = { 'plate': i[0], 'nama': i[1], 'tanggal': "{0}".format(self.tanggalIni[:10]), 'warna': i[4], 'merk': i[5], 'perusahaan': i[6], 'model': i[7], 'tahun': i[8], 'jenis': i[9], "telp": i[10] } self.datasek.append(dict) else: wx.MessageBox(message="Cek Koneksi Anda", caption="Error", style=wx.OK | wx.ICON_INFORMATION) def setDataMobil(self, data=None): self.dataOlv.SetColumns([ ColumnDefn("Plate", "left", 100, "plate"), ColumnDefn("Nama", "left", 100, "nama"), ColumnDefn("Telp", "left", 100, "telp"), ColumnDefn("Added", "left", 90, "tanggal"), ColumnDefn("Jenis", "left", 70, "jenis"), ColumnDefn("Merk", "left", 100, "merk"), ColumnDefn("Perusahaan", "left", 102, "perusahaan"), ColumnDefn("Model", "left", 100, "model"), ColumnDefn("Warna", "left", 100, "warna"), ColumnDefn("Tahun", "left", 100, "tahun") ]) if self.txtSearch != '': self.setSearch() self.dataOlv.SetObjects(self.datasek) else: self.dataOlv.SetObjects(self.dataMobil) def tampilMysql(self): self.dataMobil = [] #--Getting Data Mobil From Mysql query = "SELECT * FROM tb_member ORDER BY added_date DESC" stmt = '' hasil = connector.Execute(query, stmt, 2) if hasil != 'Koneksi Gagal': data = hasil['Data'] for i in data: self.tanggalIni = str(i[2]) dict = { 'plate': i[0], 'nama': i[1], 'tanggal': "{0}".format(self.tanggalIni[:10]), 'warna': i[4], 'merk': i[5], 'perusahaan': i[6], 'model': i[7], 'tahun': i[8], 'jenis': i[9], "telp": i[10] } self.dataMobil.append(dict) else: wx.MessageBox(message="Cek Koneksi Anda", caption="Error", style=wx.OK | wx.ICON_INFORMATION) #--end def saveData(self, e): self.getValueTextBox() if self.txtPilihan.GetValue() == 'add': if self.nomor == '' or self.nama == '' or self.telp == '' or self.merk == '' or self.model == '' or self.perusahaan == '' or self.warna == '' or self.jenis == '' or self.tahun == '': dlg = wx.MessageDialog(self, "Pastikan Data Sudah Penuh", "Perhatian", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() return else: query = ( "INSERT INTO tb_member (plate, nama_pel, added_date, warna, merk, perusahaan, model, tahun, jenis, no_telp) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" ) stmt = (self.nomor.upper(), self.nama, datetime.datetime.now(), self.warna.upper(), self.merk.upper(), self.perusahaan.upper(), self.model.upper(), self.tahun, self.jenis.upper(), self.telp) hasil = connector.Execute(query, stmt, 1) self.tampilMysql() self.setDataMobil() self.delValueTextBox() elif self.txtPilihan.GetValue() == "edit": query = ( "UPDATE tb_member SET nama_pel = %s, warna = %s, merk = %s, perusahaan = %s, model = %s, tahun = %s, jenis = %s, no_telp = %s WHERE plate = %s" ) stmt = (self.nama, self.warna.upper(), self.merk.upper(), self.perusahaan.upper(), self.model.upper(), self.tahun, self.jenis.upper(), self.telp, self.nomor.upper()) connector.Execute(query, stmt, 1) self.tampilMysql() self.setDataMobil() self.delValueTextBox() self.txtPilihan.SetValue('add') self.txtNomor.Enable() def editData(self, e): ind = self.dataOlv.GetFirstSelected() if ind >= 0: self.item = self.dataOlv.GetItem(ind) self.item2 = self.dataOlv.GetItem(ind, 1) query = ("SELECT * FROM tb_member WHERE plate = %s and nama_pel = %s") stmt = (self.item.GetText(), self.item2.GetText()) hasil = connector.Execute(query, stmt, 4) data = hasil['Data'] self.txtNomor.SetValue(data[0][0]) self.txtNama.SetValue(data[0][1]) self.txtTelp.SetValue(data[0][10]) self.txtMerk.SetValue(data[0][5]) self.txtModel.SetValue(data[0][7]) self.txtPerusahaan.SetValue(data[0][6]) self.txtWarna.SetValue(data[0][4]) self.txtJenis.SetValue(data[0][9]) self.txtTahun.SetValue(data[0][8]) self.txtPilihan.SetValue("edit") self.txtNomor.Disable() def deleteData(self, e): ind = self.dataOlv.GetFirstSelected() if ind >= 0: self.item = self.dataOlv.GetItem(ind) self.item2 = self.dataOlv.GetItem(ind, 1) query = ("DELETE FROM tb_member WHERE plate = %s and nama_pel = %s") stmt = (self.item.GetText(), self.item2.GetText()) connector.Execute(query, stmt, 1) self.tampilMysql() self.setDataMobil() def cancelBtn(self, e): self.delValueTextBox() self.txtNomor.Enable() self.txtPilihan.SetValue('add') def getValueTextBox(self): self.nomor = self.txtNomor.GetValue() self.nama = self.txtNama.GetValue() self.telp = self.txtTelp.GetValue() self.merk = self.txtMerk.GetValue() self.model = self.txtModel.GetValue() self.perusahaan = self.txtPerusahaan.GetValue() self.warna = self.txtWarna.GetValue() self.jenis = self.txtJenis.GetValue() self.tahun = self.txtTahun.GetValue() def delValueTextBox(self): self.txtNomor.SetValue('') self.txtNama.SetValue('') self.txtTelp.SetValue('') self.txtMerk.SetValue('') self.txtModel.SetValue('') self.txtPerusahaan.SetValue('') self.txtWarna.SetValue('') self.txtJenis.SetValue('') self.txtTahun.SetValue('')