Package Gnumed :: Package business :: Module gmCoding
[frames] | no frames]

Source Code for Module Gnumed.business.gmCoding

  1  """GNUmed coding systems handling middleware""" 
  2  #============================================================ 
  3  __license__ = "GPL" 
  4  __version__ = "$Revision: 1.2 $" 
  5  __author__ = "K.Hilbert <Karsten.Hilbert@gmx.net>" 
  6   
  7   
  8  # stdlib 
  9  import sys, logging 
 10   
 11   
 12  # GNUmed modules 
 13  if __name__ == '__main__': 
 14          sys.path.insert(0, '../../') 
 15  from Gnumed.pycommon import gmPG2 
 16  from Gnumed.pycommon import gmBusinessDBObject 
 17   
 18  _log = logging.getLogger('gm.coding') 
 19  _log.info(__version__) 
 20   
 21  #============================================================ 
 22  # generic linked code handling 
 23  #------------------------------------------------------------ 
 24  _SQL_get_generic_linked_codes = u"SELECT * FROM clin.v_linked_codes WHERE %s" 
 25   
26 -class cGenericLinkedCode(gmBusinessDBObject.cBusinessDBObject):
27 """Represents a generic linked code. 28 29 READ ONLY 30 """ 31 _cmd_fetch_payload = _SQL_get_generic_linked_codes % u"pk_lnk_code2item = %s" 32 _cmds_store_payload = [] 33 _updatable_fields = []
34 #------------------------------------------------------------
35 -def get_generic_linked_codes(order_by=None):
36 if order_by is None: 37 order_by = u'true' 38 else: 39 order_by = u'true ORDER BY %s' % order_by 40 41 cmd = _SQL_get_generic_linked_codes % order_by 42 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': cmd}], get_col_idx = True) 43 return [ cGenericLinkedCode(row = {'data': r, 'idx': idx, 'pk_field': 'pk_lnk_code2item'}) for r in rows ]
44 #============================================================ 45 # this class represents a generic (non-qualified) code 46 #------------------------------------------------------------ 47 _SQL_get_generic_code = u"SELECT * FROM ref.v_generic_codes WHERE %s" 48
49 -class cGenericCode(gmBusinessDBObject.cBusinessDBObject):
50 """READ ONLY""" 51 _cmd_fetch_payload = _SQL_get_generic_code % u"pk_generic_code = %s" 52 _cmds_store_payload = [] 53 _updatable_fields = []
54 #------------------------------------------------------------
55 -def get_generic_codes(order_by=None):
56 if order_by is None: 57 order_by = u'true' 58 else: 59 order_by = u'true ORDER BY %s' % order_by 60 61 cmd = _SQL_get_generic_code % order_by 62 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': cmd}], get_col_idx = True) 63 return [ cGenericCode(row = {'data': r, 'idx': idx, 'pk_field': 'pk_generic_code'}) for r in rows ]
64 65 #============================================================ 66 # module level functions 67 #------------------------------------------------------------
68 -def get_coded_terms(coding_systems=None, languages=None, order_by=None):
69 70 where_snippets = [] 71 args = {} 72 73 if coding_systems is not None: 74 where_snippets.append(u"((coding_system IN %(sys)s) OR (coding_system_long IN %(sys)s)") 75 args['sys'] = tuple(coding_systems) 76 77 if languages is not None: 78 where_snippets.append(u'lang IN %(lang)s') 79 args['lang'] = tuple(languages) 80 81 cmd = u'select * from ref.v_coded_terms' 82 83 if len(where_snippets) > 0: 84 cmd += u' WHERE %s' % u' AND '.join(where_snippets) 85 86 if order_by is not None: 87 cmd += u' ORDER BY %s' % order_by 88 89 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': cmd, 'args': args}], get_col_idx = False) 90 91 return rows
92 #============================================================ 93 # main 94 #------------------------------------------------------------ 95 if __name__ == "__main__": 96 97 if len(sys.argv) < 2: 98 sys.exit() 99 100 if sys.argv[1] != 'test': 101 sys.exit() 102 103 #----------------------------------------------------
104 - def test_get_generic_codes():
105 print "generic codes:" 106 for code in get_generic_codes(): 107 print code
108 #----------------------------------------------------
109 - def test_get_coded_terms():
110 print "known codes:" 111 for term in get_coded_terms(): 112 print term
113 #----------------------------------------------------
114 - def test_get_generic_linked_codes():
115 print "generically linked generic codes:" 116 for code in get_generic_linked_codes(): 117 print code
118 #---------------------------------------------------- 119 #test_get_coded_terms() 120 #test_get_generic_codes() 121 test_get_generic_linked_codes() 122 123 #============================================================ 124