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