55import json
66from app import app
77import uuid
8+ import pprint
89
910ENDPOINT_URL = 'http://localhost:5820/guidelines/query'
1011UPDATE_URL = 'http://localhost:5820/guidelines/update'
@@ -73,32 +74,103 @@ def recommendations():
7374 guideline_uri = request .args .get ('uri' , '' )
7475 guideline_label = request .args .get ('label' ,'' )
7576
77+
78+
79+
7680 query = PREFIXES + """
77- SELECT DISTINCT ?rec ?rec_label ?crec ?irec ?erec WHERE
81+ SELECT DISTINCT ?rec ?rec_label WHERE
7882 {
7983 ?rec tmr4i:partOf <""" + guideline_uri + """> .
8084 ?rec rdfs:label ?rec_label .
8185 ?rec a owl:NamedIndividual .
82- OPTIONAL {
83- ?rec tmr4i:interactsInternallyWith ?crec .
84- ?crec a owl:NamedIndividual .
85- }
86- OPTIONAL {
87- ?rec a tmr4i:InternallyInteractingRecommendation .
88- BIND(tmr4i:InternallyInteractingRecommendation AS ?irec)
86+ }"""
87+
88+ recommendations_menu = sparql (query , strip = True )
89+
90+
91+ ## initialize the rest of the results with the stuff for the recommendations menu
92+ all_results = []
93+ all_results .extend (recommendations_menu )
94+
95+ query = PREFIXES + """
96+ SELECT DISTINCT * WHERE
97+ {
98+ ?rec tmr4i:partOf <""" + guideline_uri + """> .
99+ ?rec rdfs:label ?rec_label .
100+ ?rec a owl:NamedIndividual .
101+ ?rec tmr4i:interactsInternallyWith ?internal_rec .
102+ ?internal_rec rdfs:label ?internal_rec_label .
103+ ?internal_rec a tmr4i:Recommendation .
104+ ?internal_rec a owl:NamedIndividual .
105+ BIND(tmr4i:InternallyInteractingRecommendation AS ?irec)
106+ }"""
107+
108+ all_results .extend (sparql (query , strip = True ))
109+
110+ query = PREFIXES + """
111+ SELECT DISTINCT * WHERE
112+ {
113+ ?rec tmr4i:partOf <""" + guideline_uri + """> .
114+ ?rec rdfs:label ?rec_label .
115+ ?rec a owl:NamedIndividual .
116+ ?rec tmr4i:interactsExternallyWith ?external_rec .
117+ ?external_rec rdfs:label ?external_rec_label .
118+ ?external_rec a tmr4i:Recommendation .
119+ ?external_rec a owl:NamedIndividual .
120+ ?i tmr4i:relates ?rec .
121+ ?i tmr4i:relates ?external_rec .
122+ ?i tmr4i:drug ?drug1 .
123+ ?drug1 rdfs:label ?drug1_label .
124+ ?i tmr4i:drug ?drug2 .
125+ ?drug2 rdfs:label ?drug2_label .
126+ FILTER(?drug1 != ?drug2)
127+ BIND(tmr4i:ExternallyInteractingRecommendation AS ?erec)
89128 }
90- OPTIONAL {
91- ?rec a tmr4i:ExternallyInteractingRecommendation .
129+ """
130+
131+ all_results .extend (sparql (query , strip = True ))
132+
133+ query = PREFIXES + """
134+ SELECT DISTINCT * WHERE
135+ {
136+ ?rec tmr4i:partOf <""" + guideline_uri + """> .
137+ ?rec rdfs:label ?rec_label .
138+ ?rec a owl:NamedIndividual .
139+ ?i tmr4i:relates ?rec .
140+ ?i tmr4i:action ?care_action .
141+ ?care_action rdfs:label ?care_action_label .
142+ ?i tmr4i:drug ?drug1 .
143+ ?drug1 rdfs:label ?drug1_label .
144+ ?i tmr4i:alternative_drug ?drug2 .
145+ ?drug2 rdfs:label ?drug2_label .
92146 BIND(tmr4i:ExternallyInteractingRecommendation AS ?erec)
93147 }
94- }"""
148+ """
149+ all_results .extend (sparql (query , strip = True ))
95150
151+ log .debug (all_results )
96152
97- recommendations = sparql (query , strip = True )
153+ recommendations = []
154+ double_drugs = set ()
155+ print len (all_results )
156+ for r in all_results :
157+ if 'drug1_label' and 'drug2_label' in r :
158+ d1 = r ['drug1_label' ]['value' ]
159+ d2 = r ['drug2_label' ]['value' ]
160+
161+ if (d2 ,d1 ) in double_drugs :
162+ log .debug ("Drug couple already found" )
163+ else :
164+ double_drugs .add ((d1 ,d2 ))
165+ recommendations .append (r )
166+ else :
167+ recommendations .append (r )
168+
169+ print len (recommendations )
98170
99- log . debug (recommendations )
171+ pprint . pprint (recommendations )
100172
101- return render_template ('recommendations_list.html' , recommendations = recommendations , guideline_label = guideline_label )
173+ return render_template ('recommendations_list.html' , recommendations_menu = recommendations_menu , recommendations = recommendations , guideline_label = guideline_label )
102174
103175@app .route ('/gettransitions' , methods = ['GET' ])
104176def transitions ():
@@ -111,7 +183,11 @@ def transitions():
111183 ?transformable_situation rdfs:label ?transformable_situation_label .
112184 ?transition tmr4i:hasExpectedPostSituation ?post_situation .
113185 ?post_situation rdfs:label ?post_situation_label .
186+ ?transition tmr4i:promotedBy ?care_action .
187+ ?care_action rdfs:label ?care_action_label .
188+ ?care_action a owl:NamedIndividual .
114189 ?transition a owl:NamedIndividual .
190+
115191 ?transformable_situation a owl:NamedIndividual .
116192 ?post_situation a owl:NamedIndividual .
117193 OPTIONAL {
@@ -122,11 +198,13 @@ def transitions():
122198 ?transition tmr4i:inverseToTransition ?inverse_transition .
123199 ?inverse_transition a owl:NamedIndividual .
124200 ?irec tmr4i:recommends ?inverse_transition .
201+ ?irec rdfs:label ?irec_label .
125202 }
126203 OPTIONAL {
127204 ?transition tmr4i:similarToTransition ?similar_transition .
128205 ?similar_transition a owl:NamedIndividual .
129206 ?srec tmr4i:recommends ?similar_transition .
207+ ?srec rdfs:label ?srec_label .
130208 }
131209
132210
@@ -141,6 +219,9 @@ def transitions():
141219 ?transformable_situation rdfs:label ?transformable_situation_label .
142220 ?transition tmr4i:hasExpectedPostSituation ?post_situation .
143221 ?post_situation rdfs:label ?post_situation_label .
222+ ?transition tmr4i:promotedBy ?care_action .
223+ ?care_action rdfs:label ?care_action_label .
224+ ?care_action a owl:NamedIndividual .
144225 ?transition a owl:NamedIndividual .
145226 ?transformable_situation a owl:NamedIndividual .
146227 ?post_situation a owl:NamedIndividual .
@@ -151,10 +232,14 @@ def transitions():
151232 OPTIONAL {
152233 ?transition tmr4i:inverseToTransition ?inverse_transition .
153234 ?inverse_transition a owl:NamedIndividual .
235+ ?irec tmr4i:recommends ?inverse_transition .
236+ ?irec rdfs:label ?irec_label .
154237 }
155238 OPTIONAL {
156239 ?transition tmr4i:similarToTransition ?similar_transition .
157240 ?similar_transition a owl:NamedIndividual .
241+ ?srec tmr4i:recommends ?similar_transition .
242+ ?srec rdfs:label ?srec_label .
158243 }
159244 BIND(IF (bound(?f_condition), ?f_condition, "none") as ?filter_condition)
160245
@@ -206,13 +291,18 @@ def sparql(query, strip=False, endpoint_url = ENDPOINT_URL):
206291 if v ['type' ] == 'uri' and not k + '_label' in r .keys ():
207292 new_result [k + '_label' ] = {}
208293 new_result [k + '_label' ]['type' ] = 'literal'
209-
210294 new_result [k + '_label' ]['value' ] = v ['value' ][v ['value' ].rfind ('/' )+ 1 :]
295+
211296 elif not k + '_label' in r .keys ():
212297 new_result [k + '_label' ] = {}
213298 new_result [k + '_label' ]['type' ] = 'literal'
214299 new_result [k + '_label' ]['value' ] = v ['value' ]
215300
301+ new_result [k + '_stripped' ] = {}
302+ new_result [k + '_stripped' ]['type' ] = 'literal'
303+ new_result [k + '_stripped' ]['value' ] = v ['value' ][v ['value' ].rfind ('/' )+ 1 :]
304+
305+
216306 new_result [k ] = v
217307
218308 new_results .append (new_result )
@@ -279,7 +369,7 @@ def internal_recommendation_interaction():
279369 else :
280370 print "result already found" , (two ,one )
281371
282- log .debug (len ( deduped_results ), " interactions found." )
372+ log .debug ("{} interactions found.". format ( len ( deduped_results )) )
283373
284374 update_template = PREFIXES + """
285375 INSERT DATA
@@ -351,16 +441,16 @@ def incompatible_drugs_external_interaction():
351441 else :
352442 print "result already found" , (RTwo ,ROne ,DTwo ,DOne )
353443
354- log .debug (len ( deduped_results ) + " external interactions found." )
444+ log .debug ("{} external interactions found.". format ( len ( deduped_results )) )
355445
356446 update_template = PREFIXES + """
357447 INSERT DATA
358448 {{
359449 tmr4i:{0} a tmr4i:IncompatibleDrugExternalInteraction, owl:NamedIndividual .
360450 tmr4i:{0} tmr4i:relates <{1}> .
361451 tmr4i:{0} tmr4i:relates <{2}> .
362- tmr4i:{0} tmr4i:relates <{3}> .
363- tmr4i:{0} tmr4i:relates <{4}> .
452+ tmr4i:{0} tmr4i:drug <{3}> .
453+ tmr4i:{0} tmr4i:drug <{4}> .
364454 <{1}> tmr4i:interactsExternallyWith <{2}> .
365455 <{2}> tmr4i:interactsExternallyWith <{1}> .
366456 }}
@@ -416,8 +506,8 @@ def alternative_drugs_external_interaction():
416506 ?iir a tmr4i:AlternativeDrugExternalInteraction .
417507 ?iir tmr4i:relates ?rec .
418508 ?iir tmr4i:relates ?ca .
419- ?iir tmr4i:relates ?d .
420- ?iir tmr4i:relates ?dALT .
509+ ?iir tmr4i:drug ?d .
510+ ?iir tmr4i:alternative_drug ?dALT .
421511 }
422512
423513 }
@@ -439,16 +529,16 @@ def alternative_drugs_external_interaction():
439529 else :
440530 print "result already found" , (rec ,ca ,DTwo ,DOne )
441531
442- log .debug (len ( deduped_results ) + " external interactions found." )
532+ log .debug ("{} external alternative interactions found.". format ( len ( deduped_results )) )
443533
444534 update_template = PREFIXES + """
445535 INSERT DATA
446536 {{
447537 tmr4i:{0} a tmr4i:AlternativeDrugExternalInteraction, owl:NamedIndividual .
448538 tmr4i:{0} tmr4i:relates <{1}> .
449- tmr4i:{0} tmr4i:relates <{2}> .
450- tmr4i:{0} tmr4i:relates <{3}> .
451- tmr4i:{0} tmr4i:relates <{4}> .
539+ tmr4i:{0} tmr4i:action <{2}> .
540+ tmr4i:{0} tmr4i:drug <{3}> .
541+ tmr4i:{0} tmr4i:alternative_drug <{4}> .
452542 }}
453543 """
454544
0 commit comments