1 """GNUmed coding systems handling middleware"""
2
3 __license__ = "GPL"
4 __author__ = "K.Hilbert <Karsten.Hilbert@gmx.net>"
5
6
7
8 import sys
9 import logging
10
11
12
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
21 _log = logging.getLogger('gm.coding')
22
23
27
28 gmDispatcher.connect(_on_code_link_modified, u'clin.episode_code_mod_db')
29 gmDispatcher.connect(_on_code_link_modified, u'clin.rfe_code_mod_db')
30 gmDispatcher.connect(_on_code_link_modified, u'clin.aoe_code_mod_db')
31 gmDispatcher.connect(_on_code_link_modified, u'clin.health_issue_code_mod_db')
32 gmDispatcher.connect(_on_code_link_modified, u'clin.narrative_code_mod_db')
33 gmDispatcher.connect(_on_code_link_modified, u'clin.procedure_code_mod_db')
34
35
36
37
38 _SQL_get_generic_linked_codes = u"SELECT * FROM clin.v_linked_codes WHERE %s"
39
48
58
59
60
61 _SQL_get_generic_code = u"SELECT * FROM ref.v_generic_codes WHERE %s"
62
68
70 if order_by is None:
71 order_by = u'true'
72 else:
73 order_by = u'true ORDER BY %s' % order_by
74
75 cmd = _SQL_get_generic_code % order_by
76 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': cmd}], get_col_idx = True)
77 return [ cGenericCode(row = {'data': r, 'idx': idx, 'pk_field': 'pk_generic_code'}) for r in rows ]
78
79
80
81
83
84 where_snippets = []
85 args = {}
86
87 if coding_systems is not None:
88 where_snippets.append(u"((coding_system IN %(sys)s) OR (coding_system_long IN %(sys)s)")
89 args['sys'] = tuple(coding_systems)
90
91 if languages is not None:
92 where_snippets.append(u'lang IN %(lang)s')
93 args['lang'] = tuple(languages)
94
95 cmd = u'select * from ref.v_coded_terms'
96
97 if len(where_snippets) > 0:
98 cmd += u' WHERE %s' % u' AND '.join(where_snippets)
99
100 if order_by is not None:
101 cmd += u' ORDER BY %s' % order_by
102
103 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': cmd, 'args': args}], get_col_idx = False)
104
105 return rows
106
107
109 cmd = u'SELECT * FROM ref.data_source ORDER BY %s' % order_by
110 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': cmd}], get_col_idx = False)
111 return rows
112
113
114 -def create_data_source(long_name=None, short_name=None, version=None, source=None, language=None):
115
116 args = {
117 'lname': long_name,
118 'sname': short_name,
119 'ver': version,
120 'src': source,
121 'lang': language
122 }
123
124 cmd = u"SELECT pk FROM ref.data_source WHERE name_long = %(lname)s AND name_short = %(sname)s AND version = %(ver)s"
125 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': cmd, 'args': args}])
126 if len(rows) > 0:
127 return rows[0]['pk']
128
129 cmd = u"""
130 INSERT INTO ref.data_source (name_long, name_short, version, source, lang)
131 VALUES (
132 %(lname)s,
133 %(sname)s,
134 %(ver)s,
135 %(src)s,
136 %(lang)s
137 )
138 RETURNING pk
139 """
140 rows, idx = gmPG2.run_rw_queries(queries = [{'cmd': cmd, 'args': args}], return_data = True)
141
142 return rows[0]['pk']
143
144
145
146
147 if __name__ == "__main__":
148
149 if len(sys.argv) < 2:
150 sys.exit()
151
152 if sys.argv[1] != 'test':
153 sys.exit()
154
155
160
165
170
171
172
173 test_get_generic_linked_codes()
174
175
176