1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
# -*- coding: utf-8 -*-
#from __future__ import print_function
__doc__ = """GNUmed LOINC handling widgets."""
#================================================================
__author__ = "Karsten Hilbert <Karsten.Hilbert@gmx.net>"
__license__ = "GPL v2 or later"
import logging
import sys
import os.path
import wx
if __name__ == '__main__':
sys.path.insert(0, '../../')
# from Gnumed.pycommon import gmI18N
# gmI18N.activate_locale()
# gmI18N.install_domain(domain = 'gnumed')
from Gnumed.pycommon import gmTools
from Gnumed.pycommon import gmMatchProvider
from Gnumed.pycommon import gmNetworkTools
from Gnumed.pycommon import gmDispatcher
from Gnumed.business import gmLOINC
from Gnumed.wxpython import gmAuthWidgets
from Gnumed.wxpython import gmGuiHelpers
from Gnumed.wxpython import gmPhraseWheel
_log = logging.getLogger('gm.ui.loinc')
#================================================================
def update_loinc_reference_data():
wx.BeginBusyCursor()
gmDispatcher.send(signal = 'statustext', msg = _('Updating LOINC data can take quite a while...'), beep = True)
# download
loinc_zip = gmNetworkTools.download_file(url = 'http://www.gnumed.de/downloads/data/loinc/loinctab.zip', suffix = '.zip')
if loinc_zip is None:
wx.EndBusyCursor()
gmGuiHelpers.gm_show_warning (
aTitle = _('Downloading LOINC'),
aMessage = _('Error downloading the latest LOINC data.\n')
)
return False
_log.debug('downloaded zipped LOINC data into [%s]', loinc_zip)
loinc_dir = gmNetworkTools.unzip_data_pack(filename = loinc_zip)
# split master data file
data_fname, license_fname = gmLOINC.split_LOINCDBTXT(input_fname = os.path.join(loinc_dir, 'LOINCDB.TXT'))
wx.EndBusyCursor()
conn = gmAuthWidgets.get_dbowner_connection(procedure = _('importing LOINC reference data'))
if conn is None:
return False
wx.BeginBusyCursor()
# import data
if gmLOINC.loinc_import(data_fname = data_fname, license_fname = license_fname, conn = conn):
gmDispatcher.send(signal = 'statustext', msg = _('Successfully imported LOINC reference data.'))
else:
gmDispatcher.send(signal = 'statustext', msg = _('Importing LOINC reference data failed.'), beep = True)
wx.EndBusyCursor()
return True
#================================================================
class cLOINCPhraseWheel(gmPhraseWheel.cPhraseWheel):
def __init__(self, *args, **kwargs):
gmPhraseWheel.cPhraseWheel.__init__(self, *args, **kwargs)
mp = gmLOINC.cLOINCMatchProvider()
mp.setThresholds(1, 2, 4)
#mp.print_queries = True
#mp.word_separators = '[ \t:@]+'
self.matcher = mp
self.selection_only = False
self.final_regex = r'\d{1,5}-\d{1}$'
self.SetToolTip(_('Select a LOINC (Logical Observation Identifiers Names and Codes).'))
#================================================================
# main
#----------------------------------------------------------------
if __name__ == '__main__':
if len(sys.argv) < 2:
sys.exit()
if sys.argv[1] != 'test':
sys.exit()
from Gnumed.pycommon import gmPG2
#----------------------------------------
gmPG2.get_connection()
app = wx.PyWidgetTester(size = (600, 80))
app.SetWidget(cLOINCPhraseWheel, -1)
app.MainLoop()
|