Skip to content

Commit 3edbc6d

Browse files
committed
MCQ query backend implemented
1 parent 40da796 commit 3edbc6d

3 files changed

Lines changed: 464 additions & 130 deletions

File tree

cohd/cohd.py

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,44 @@ def api_cohd():
4848
return redirect("https://cohd.smart-api.info/", code=302)
4949

5050

51+
@app.route('/api/metadata/datasets')
52+
def api_metadata_datasets():
53+
return query_cohd_mysql.query_db_datasets()
54+
55+
56+
@app.route('/api/metadata/domainCounts')
57+
def api_metadata_domainCounts():
58+
dataset_id = query_cohd_mysql.get_arg_dataset_id(request.args)
59+
return query_cohd_mysql.query_db_domain_counts(dataset_id)
60+
61+
62+
@app.route('/api/metadata/domainPairCounts')
63+
def api_metadata_domainPairCounts():
64+
dataset_id = query_cohd_mysql.get_arg_dataset_id(request.args)
65+
return query_cohd_mysql.query_db_domain_pair_counts(dataset_id)
66+
67+
68+
@app.route('/api/metadata/patientCount')
69+
def api_metadata_patientCount():
70+
dataset_id = query_cohd_mysql.get_arg_dataset_id(request.args)
71+
return query_cohd_mysql.query_db_patient_count(dataset_id)
72+
73+
5174
@app.route('/api/omop/findConceptIDs')
5275
@app.route('/api/v1/omop/findConceptIDs')
5376
def api_omop_reference():
54-
return api_call('omop', 'findConceptIDs')
77+
query = request.args.get('q')
78+
dataset_id = query_cohd_mysql.get_arg_dataset_id(request.args)
79+
domain_id = request.args.get('domain')
80+
min_count = request.args.get('min_count')
81+
return query_cohd_mysql.query_db_find_concept_ids(dataset_id, query, domain_id, min_count)
5582

5683

5784
@app.route('/api/omop/concepts')
5885
@app.route('/api/v1/omop/concepts')
5986
def api_omop_concepts():
60-
return api_call('omop', 'concepts')
87+
query = request.args.get('q')
88+
return query_cohd_mysql.query_db_concepts(query)
6189

6290

6391
@app.route('/api/omop/conceptAncestors')
@@ -95,25 +123,6 @@ def api_omop_xrefFromOMOP():
95123
return api_call('omop', 'xrefFromOMOP')
96124

97125

98-
@app.route('/api/metadata/datasets')
99-
def api_metadata_datasets():
100-
return api_call('metadata', 'datasets')
101-
102-
103-
@app.route('/api/metadata/domainCounts')
104-
def api_metadata_domainCounts():
105-
return api_call('metadata', 'domainCounts')
106-
107-
108-
@app.route('/api/metadata/domainPairCounts')
109-
def api_metadata_domainPairCounts():
110-
return api_call('metadata', 'domainPairCounts')
111-
112-
113-
@app.route('/api/metadata/patientCount')
114-
def api_metadata_patientCount():
115-
return api_call('metadata', 'patientCount')
116-
117126

118127
@app.route('/api/frequencies/singleConceptFreq')
119128
@app.route('/api/v1/frequencies/singleConceptFreq')
@@ -160,6 +169,11 @@ def api_association_relativeFrequency():
160169
return api_call('association', 'relativeFrequency')
161170

162171

172+
@app.route('/api/association/mcq')
173+
def api_association_mcq():
174+
return api_call('association', 'mcq')
175+
176+
163177
@app.route('/api/temporal/conceptAgeCounts')
164178
def api_temporal_conceptAgeCounts():
165179
return api_call('temporal', 'conceptAgeCounts')
@@ -306,7 +320,8 @@ def api_call(service=None, meta=None, query=None, version=None):
306320
elif service == 'association':
307321
if meta == 'chiSquare' or \
308322
meta == 'obsExpRatio' or \
309-
meta == 'relativeFrequency':
323+
meta == 'relativeFrequency' or \
324+
meta == 'mcq':
310325
result = query_cohd_mysql.query_db(service, meta, request.args)
311326
else:
312327
result = 'meta not recognized', 400

0 commit comments

Comments
 (0)