virgil/commit

Fix count drug occurrences in same report only once

authorMichiel Hildebrand
Mon Jul 15 22:50:13 2013 +0200
committerMichiel Hildebrand
Mon Jul 15 22:50:13 2013 +0200
commitd36f94660152bf040db72128bd274caf813fdc4c
tree003cc4be954d17ec1402c4d5484c45d0a68c0f52
parentb29e036643f59c8a3a4c99af61005da9f2a2bd2c
Diff style: patch stat
diff --git a/api/reports.pl b/api/reports.pl
index 6cf2920..cef3e61 100644
--- a/api/reports.pl
+++ b/api/reports.pl
@@ -78,7 +78,7 @@ http_cc(Request) :-
 		drug_reaction_cc(DrugMentions, Reaction, CC),
 		length(CC, Total)
 	    ;   nonvar(Reaction)
-	    ->  drug_reaction_cc([], Reaction, CC),
+	    ->	reaction_cc(Reaction, CC),
 		length(CC, Total)
 	    ),
 	    list_offset(CC, Offset, CC_Offset),
@@ -97,19 +97,18 @@ drug_match(Drug, Methods, DrugMentions) :-
 		DrugMentions0),
 	sort(DrugMentions0, DrugMentions).
 
-drug_reaction_cc([], ReactionMention, []) :-
+reaction_cc(ReactionMention, []) :-
 	(var(ReactionMention); ReactionMention==all),
 	!.
-drug_reaction_cc([], ReactionMention, CC) :-
-	nonvar(ReactionMention),
-	!,
-	findall(cc(Report,Drug,Reaction),
-	      (	  rdf(Report, aers:reaction, literal(exact(ReactionMention), Reaction)),
+reaction_cc(ReactionMention, CC) :-
+	findall(cc_drug(Report,Drug),
+	      (	  rdf(Report, aers:reaction, literal(exact(ReactionMention), _Reaction)),
 		  rdf(Report, aers:drug, DrugUse),
 		  rdf(DrugUse, aers:drugname, literal(Drug))
 	      ),
 	      CC0),
 	sort(CC0, CC).
+
 drug_reaction_cc(DrugMentions, ReactionMention, CC) :-
 	DrugMentions = [_|_],
 	!,
@@ -117,7 +116,7 @@ drug_reaction_cc(DrugMentions, ReactionMention, CC) :-
 	->  ReactionLit = literal(Reaction)
 	;   ReactionLit = literal(exact(ReactionMention), Reaction)
 	),
-	findall(cc(Report,Drug,Reaction),
+	findall(cc_reaction(Report,Reaction),
 	      (	  member(Drug, DrugMentions),
 		  rdf(DrugUse, aers:drugname, literal(Drug)),
 		  rdf(Report, aers:drug, DrugUse),
@@ -131,9 +130,10 @@ report_obj(R, JSON) :-
 	resource_CBD(rdf, R, Graph),
 	graph_json(Graph, JSON).
 
-cc_json(cc(Report,Drug,Reaction),
-	json([report=Report,drug=Drug,reaction=Reaction])).
-
+cc_json(cc_reaction(Report,Reaction),
+	json([report=Report,reaction=Reaction])).
+cc_json(cc_drug(Report,Drug),
+	json([report=Report,drug=Drug])).
 
 %%	http_contingency_table(+Request)
 %
@@ -158,7 +158,7 @@ http_contingency_table(Request) :-
 	drug_match(Drug, DrugMatch, DrugMentions),
 	drug_reaction_cc(DrugMentions, Reaction, CC_A),
 	drug_reaction_cc(DrugMentions, all, CC_AC),
-	drug_reaction_cc([], Reaction, CC_AB),
+	reaction_cc(Reaction, CC_AB),
 	cc_count(ABCD),
 	length(CC_A, A),
 	length(CC_AB, AB),