Package Gnumed :: Package wxpython :: Module gmATCWidgets
[frames] | no frames]

Source Code for Module Gnumed.wxpython.gmATCWidgets

  1  # -*- coding: utf-8 -*- 
  2   
  3  #from __future__ import print_function 
  4   
  5  __doc__ = """GNUmed ATC handling widgets.""" 
  6   
  7  #================================================================ 
  8  __author__ = "Karsten Hilbert <Karsten.Hilbert@gmx.net>" 
  9  __license__ = "GPL v2 or later" 
 10   
 11  import logging 
 12  import sys 
 13  import os.path 
 14   
 15   
 16  import wx 
 17   
 18  if __name__ == '__main__': 
 19          sys.path.insert(0, '../../') 
 20          from Gnumed.pycommon import gmI18N 
 21          gmI18N.activate_locale() 
 22          gmI18N.install_domain(domain = 'gnumed') 
 23  from Gnumed.pycommon import gmTools 
 24  from Gnumed.pycommon import gmMatchProvider 
 25  from Gnumed.pycommon import gmDispatcher 
 26   
 27  from Gnumed.business import gmATC 
 28   
 29  from Gnumed.wxpython import gmAuthWidgets 
 30  from Gnumed.wxpython import gmListWidgets 
 31  from Gnumed.wxpython import gmPhraseWheel 
 32   
 33   
 34  _log = logging.getLogger('gm.ui.atc') 
 35   
 36  #============================================================ 
37 -def browse_atc_reference_deprecated(parent=None):
38 39 if parent is None: 40 parent = wx.GetApp().GetTopWindow() 41 #------------------------------------------------------------ 42 def refresh(lctrl): 43 atcs = gmATC.get_reference_atcs() 44 45 items = [ [ 46 a['atc'], 47 a['term'], 48 gmTools.coalesce(a['unit'], ''), 49 gmTools.coalesce(a['administrative_route'], ''), 50 gmTools.coalesce(a['comment'], ''), 51 a['version'], 52 a['lang'] 53 ] for a in atcs ] 54 lctrl.set_string_items(items) 55 lctrl.set_data(atcs)
56 #------------------------------------------------------------ 57 gmListWidgets.get_choices_from_list ( 58 parent = parent, 59 msg = _('\nThe ATC codes as known to GNUmed.\n'), 60 caption = _('Showing ATC codes.'), 61 columns = [ 'ATC', _('Term'), _('Unit'), _('Route'), _('Comment'), _('Version'), _('Language') ], 62 single_selection = True, 63 refresh_callback = refresh 64 ) 65 66 #============================================================
67 -def update_atc_reference_data():
68 69 dlg = wx.FileDialog ( 70 parent = None, 71 message = _('Choose an ATC import config file'), 72 defaultDir = os.path.expanduser(os.path.join('~', 'gnumed')), 73 defaultFile = '', 74 wildcard = "%s (*.conf)|*.conf|%s (*)|*" % (_('config files'), _('all files')), 75 style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST 76 ) 77 78 result = dlg.ShowModal() 79 if result == wx.ID_CANCEL: 80 return 81 82 cfg_file = dlg.GetPath() 83 dlg.DestroyLater() 84 85 conn = gmAuthWidgets.get_dbowner_connection(procedure = _('importing ATC reference data')) 86 if conn is None: 87 return False 88 89 wx.BeginBusyCursor() 90 91 if gmATC.atc_import(cfg_fname = cfg_file, conn = conn): 92 gmDispatcher.send(signal = 'statustext', msg = _('Successfully imported ATC reference data.')) 93 else: 94 gmDispatcher.send(signal = 'statustext', msg = _('Importing ATC reference data failed.'), beep = True) 95 96 wx.EndBusyCursor() 97 return True
98 99 #============================================================
100 -class cATCPhraseWheel(gmPhraseWheel.cPhraseWheel):
101
102 - def __init__(self, *args, **kwargs):
103 104 gmPhraseWheel.cPhraseWheel.__init__(self, *args, **kwargs) 105 query = """ 106 SELECT DISTINCT ON (data) 107 data, 108 field_label, 109 list_label 110 FROM ( 111 ( 112 SELECT 113 code AS data, 114 (code || ': ' || term) 115 AS list_label, 116 (code || ' (' || term || ')') 117 AS field_label 118 FROM ref.atc 119 WHERE 120 term %(fragment_condition)s 121 OR 122 code %(fragment_condition)s 123 ) UNION ALL ( 124 SELECT 125 atc as data, 126 (atc || ': ' || description) 127 AS list_label, 128 (atc || ' (' || description || ')') 129 AS field_label 130 FROM ref.substance 131 WHERE 132 description %(fragment_condition)s 133 OR 134 atc %(fragment_condition)s 135 ) UNION ALL ( 136 SELECT 137 atc_code AS data, 138 (atc_code || ': ' || description || ' (' || preparation || ')') 139 AS list_label, 140 (atc_code || ': ' || description) 141 AS field_label 142 FROM ref.drug_product 143 WHERE 144 description %(fragment_condition)s 145 OR 146 atc_code %(fragment_condition)s 147 ) 148 -- it would be nice to be able to include ref.vacc_indication but that's hard to do in SQL 149 ) AS candidates 150 WHERE data IS NOT NULL 151 ORDER BY data, list_label 152 LIMIT 50""" 153 154 mp = gmMatchProvider.cMatchProvider_SQL2(queries = query) 155 mp.setThresholds(1, 2, 4) 156 # mp.word_separators = '[ \t=+&:@]+' 157 self.SetToolTip(_('Select an ATC (Anatomical-Therapeutic-Chemical) code.')) 158 self.matcher = mp 159 self.selection_only = True
160 161 #============================================================ 162 # main 163 #------------------------------------------------------------ 164 if __name__ == '__main__': 165 166 if len(sys.argv) < 2: 167 sys.exit() 168 169 if sys.argv[1] != 'test': 170 sys.exit() 171 172 from Gnumed.pycommon import gmPG2 173 174 #---------------------------------------- 175 gmPG2.get_connection() 176 app = wx.PyWidgetTester(size = (600, 80)) 177 app.SetWidget(cATCPhraseWheel, -1) 178 app.MainLoop() 179