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