From 78f5215c70921ec872a4f85bf3c30a1acb88f321 Mon Sep 17 00:00:00 2001 From: blasisd Date: Mon, 31 Jan 2022 17:14:46 +0200 Subject: [PATCH] Fixed openFDA switch --- .../app/__pycache__/apps.cpython-38.pyc | Bin 2009 -> 2037 bytes .../app/__pycache__/forms.cpython-38.pyc | Bin 19955 -> 20179 bytes .../app/__pycache__/models.cpython-38.pyc | Bin 9113 -> 9101 bytes .../app/__pycache__/urls.cpython-38.pyc | Bin 5520 -> 5855 bytes .../app/__pycache__/views.cpython-38.pyc | Bin 90343 -> 90569 bytes gentelella/app/static/build/css/pv_dash.css | 128 +++++++++++++++++- .../app/static/build/js/final_report.js | 17 ++- .../app/templates/app/final_report.html | 75 ++++++---- gentelella/app/views.py | 67 +++++---- .../__pycache__/settings.cpython-38.pyc | Bin 6823 -> 6823 bytes .../__pycache__/urls.cpython-38.pyc | Bin 1514 -> 1416 bytes requirements.txt | 5 +- 12 files changed, 224 insertions(+), 68 deletions(-) diff --git a/gentelella/app/__pycache__/apps.cpython-38.pyc b/gentelella/app/__pycache__/apps.cpython-38.pyc index baf40c7fc23bc96e82b156d39e7a5709c66aafae..c6606faddfb74120d43d2ba651fff618ee9eb0ba 100644 GIT binary patch delta 303 zcmXv~J5I$w3|xDY&E~U&h6_X-f|kz(C}^I9&{K>;Kza`)OXn4!)KoMS6v+W7Pfny=L)^1IP@-S70W&v1P2w=Flj%DX}XW+ zSG91;YE~54_%tDXBVEL*Pbv1xH0!3|s4Z+pNe8~C9Z+_UF1Chs2QJ}+%o#R?UE{b< zZ(nc&it!U)VKZ+cf8H!D=jF-q5j7W8J6r!H<#Iu_t(S}OJ=le8Yx)W((4cYLR(J3X D4U12{ delta 273 zcmXw!u}TCn5Qa0!CYwzzyI>>iLx`2dwLXH_2qMRgoTnC=i(oOqBK1`^78W`11!SMb z#wV~7D?!YjIL+{X^A9usSNGPrW9JMjwg2)t`+jwnx9>#-mRJOW43B$!_kokxK&*nm zimJp{(@>E}0PLUm9%cS>$-)%L;<^r!L{=L{)dH38Dvk7qW%wrQKq!UC#2Hh3+eQ?xdGrou|c55CjSb8h*|bI@%KjF3TwuQ$!*s1b_>`SGDLB>Go-Mju(mLyur@PA zakew0F{ZGku(xnTaiwsiaJDc+af8LUQn-O)JnalD3{kwn44OQXUs`KU*05R2SU&lh z%`wJDljquIFxF3IvvcNs475y>x5x)b6+N9CW*5O&J$b#Ibv+AEz!`{(#ehT!Ll$Ee zQw>8F^8%I>#)XV2OudXibD68M75vLmi;6N+GV{_EbQMx7N>cN{?Btx(#Ju>z($wOT z%>2B(#LS}9VujrNl+v73g|z%41vHtGjKmU!jKs23g{;!z5{0Bx-PAmV6k&gx}@xC%;ventX>>W-`CM9@`_3>5n%%+dD8ac1&(@P-owH}p^#D)0t+@aI delta 379 zcmcaSm+|v#M&3|fUM>b8Fj(?AF?S@`a~?KPkA^<-~vH^x(wCwb=p+5f#Y7|&1E t@ClyW;G@gtU1e%$m#M&8H7^1|388ihan+aF*ysQ8ks>xI&45T)1 z7T(IpmI!1Ou}w~t6Xs3>F+D*<`s5x_P3{a3Qw>C9PCh0Y!N|8+UhEnpWBla(3bK=h zC9E0KCi_ct1IgPG(%iQ=LsBbB+%i*hQa1mVn87r8hO{nY^W=llT8tHw-$<*nfNY*z z%Otf~UnUGt&F)6wYj0t)zP>Jo$MpN( z*7?J+*msGY#~9)wp8nj2!mM6tg<+^!ucC1np|$0Ix)RY=sMj4 zH{d2rtm|t!u6hg84wzKEwU5$Edyva25LD zV4$=Zwk|0xqfWpRrKhNVSW$Y0D#CN67pRl)QmKME1+Sz^BV>S9l?OMfInV*B;r$Sv z4X5Gtx;_*m1F$*~>s}L1^;?aIWc;H>w!XvUej1BQ7 zxw=(IttKv!j0Ip)V1c>)8a#!+a$b*xG%&|zKpmT!+`^Y88GFv+mK{*eR;+-zj!(qT z#-`!Da->0)w47@y(ZIA_2bYySxMRQ_Gw^vv_B6_pmBo-HC(Ax8M2u&fEBhszB$M9a z>==b`)8xO;!1J;v#e8$#EtRm1IlNiU9+2f=82YZwta)<*H)wJESI78~@VUqF!<(FX zE)RH%eBLTc8I<;qA-rM1BOoDma3&gw+LC|!JLk-3EcwUiR=GT%O6^hb8sGj! z-W^etp8~tD8N@}r-3wpKHLZC9u0XuiL8CB36ZQYPit2-FvNuaR;X2%an=S3FhO@V@ z+Yh&8cP^wmr~#Oly}PJExF>Z#qz5$7tPep|HW#p2f(5CEAuXbY;gRg=Z9SGEA=N@M zLV}Pes#%67avKvl0;bdwY804MJ)~vSNodI4N=O!J3~bqR+UuT5@%E%E<)Ov_RwdVv z6R1|Bp(*tvWOAi%1y+k#Osv*IcKTg{cN7Z;;QyHqWPQo L#ptI9iL3trrFaUH diff --git a/gentelella/app/__pycache__/views.cpython-38.pyc b/gentelella/app/__pycache__/views.cpython-38.pyc index 6cf1df74f230bda300495ac6a42e8a8410fc9b68..a9858bdca0e24158f0557ddeb0453e68c52d9ab1 100644 GIT binary patch delta 27827 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 delta 27002 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 diff --git a/gentelella/app/static/build/css/pv_dash.css b/gentelella/app/static/build/css/pv_dash.css index 2580d32f..7ece89a1 100644 --- a/gentelella/app/static/build/css/pv_dash.css +++ b/gentelella/app/static/build/css/pv_dash.css @@ -605,7 +605,6 @@ iframe.modalIframe { padding-left: 1.5rem; } - .custom-control-inline { display: -ms-inline-flexbox; display: inline-flex; @@ -699,8 +698,6 @@ button.close { } } - - .pathways-int-fld select { margin: 0 1rem; direction: ltr; @@ -722,7 +719,6 @@ button.close { border-color: rgba(52, 152, 219, 0.88); } - .age_crit_info { background-color: rgba(75, 95, 113, 0.88); /*#4d6f80;*/ border-color: rgba(75, 95, 113, 0.88); @@ -775,6 +771,7 @@ button.close { background-color: #738d9c; border-color: #5c7586 } + .btn-enlarge:hover, .btn-enlarge:focus, .btn-enlarge:active, @@ -817,8 +814,6 @@ button.close { box-sizing: border-box; } - - /*@media (min-width: 768px)*/ /*.icon-bar {*/ /* position: fixed;*/ @@ -866,7 +861,6 @@ button.close { /* overflow: hidden;*/ /*}*/ - #notesTbl td { vertical-align: middle; text-align: left; @@ -991,4 +985,124 @@ input[type='checkbox']+span { .btn>span.hidden-xs, .btn>span.visible-lg { color: white; +} + +.bs-switch { + position: relative; + width: 50px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none +} + +.bs-switch .bs-switch-checkbox { + display: none +} + +.bs-switch .bs-switch-label { + position: relative; + display: block; + overflow: hidden; + border: 2px solid #e4e4e4; + border-radius: 20px; + cursor: pointer +} + +.bs-switch .bs-switch-inner { + margin-left: -100%; + width: 200%; + -webkit-transition-delay: 0s; + -moz-transition-delay: 0s; + -o-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-timing-function: ease-in; + -moz-transition-timing-function: ease-in; + -o-transition-timing-function: ease-in; + transition-timing-function: ease-in; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + -o-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-property: margin; + -moz-transition-property: margin; + -o-transition-property: margin; + transition-property: margin +} + +.bs-switch .bs-switch-inner:before, +.bs-switch .bs-switch-inner:after { + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + width: 50%; + height: 18px; + color: #fff; + font-size: 10px; + line-height: 1.8 +} + +.bs-switch .bs-switch-inner:before { + padding-left: 6px; + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; + background-color: #2e9e89; + color: #fff; + /*content: "ON";*/ + content: '\2713'; + -ms-border-radius: 20px; + -o-border-radius: 20px +} + +.bs-switch .bs-switch-inner:after { + padding-right: 6px; + background-color: #eee; + color: #999; + content: '\2717'; + /*content: "OFF";*/ + text-align: right +} + +.bs-switch .bs-switch-switch { + position: absolute; + top: 0; + right: 28px; + bottom: 0; + margin: 2px; + width: 15px; + border: 2px solid #e4e4e4; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; + background: #fff; + -webkit-transition-delay: 0s; + -moz-transition-delay: 0s; + -o-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-timing-function: ease-in; + -moz-transition-timing-function: ease-in; + -o-transition-timing-function: ease-in; + transition-timing-function: ease-in; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + -o-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-property: all; + -moz-transition-property: all; + -o-transition-property: all; + transition-property: all; + -ms-border-radius: 15px; + -o-border-radius: 15px +} + +.bs-switch.bs-switch-blank .bs-switch-inner:before, +.bs-switch.bs-switch-blank .bs-switch-inner:after { content: "" } +.bs-switch-checkbox:checked + .bs-switch-label .bs-switch-inner { + margin-left: 0 +} + +.bs-switch-checkbox:checked + .bs-switch-label .bs-switch-switch { + right: 0 } \ No newline at end of file diff --git a/gentelella/app/static/build/js/final_report.js b/gentelella/app/static/build/js/final_report.js index 80b6fb00..b88a6c8d 100644 --- a/gentelella/app/static/build/js/final_report.js +++ b/gentelella/app/static/build/js/final_report.js @@ -27,16 +27,25 @@ $(function(){ $("#resultBtn").prop("disabled", proceed_disabled); }); + // $("#concomitantSwitch").on('change', function() { + // if ($(this).is(':checked')) { + // switchStatus = $(this).is(':checked'); + // } + // else { + // switchStatus = $(this).is(':checked'); + // } + // }); + $("[id*=ShinyBtn]").click(function(){ var drug= $(this).data('drug'); var con= $(this).data('con'); var hash= $(this).data('hash'); var lang = $("#curLang").data("lang").substring(0, 2).toLowerCase(); - var urlquickview1= openfda_shiny_endpoint + $(this).attr('id').replace('ShinyBtn','').replace(/\d+/,'') + "/?lang=" + lang + "&t1=" + drug + "&v1=patient.drug.openfda.generic_name&t2=" + con + "&v2=patient.reaction.reactionmeddrapt&hash=" + hash; - var urlquickview2= openfda_shiny_endpoint + $(this).attr('id').replace('ShinyBtn','').replace(/\d+/,'') + "/?lang=" + lang + "&t1=" + drug + "&v1=patient.drug.openfda.generic_name&hash=" + hash; - var urlquickview3= openfda_shiny_endpoint + $(this).attr('id').replace('ShinyBtn','').replace(/\d+/,'') + "/?lang=" + lang + "&t2=" + con + "&v2=patient.reaction.reactionmeddrapt&hash=" + hash; - // console.log(urlquickview1); + var concomitant = $("#concomitantSwitch").is(':checked')? "TRUE": "FALSE"; + var urlquickview1= openfda_shiny_endpoint + $(this).attr('id').replace('ShinyBtn','').replace(/\d+/,'') + "/?lang=" + lang + "&t1=" + drug + "&v1=patient.drug.openfda.generic_name&t2=" + con + "&v2=patient.reaction.reactionmeddrapt&concomitant="+concomitant+"&hash=" + hash; + var urlquickview2= openfda_shiny_endpoint + $(this).attr('id').replace('ShinyBtn','').replace(/\d+/,'') + "/?lang=" + lang + "&t1=" + drug + "&v1=patient.drug.openfda.generic_name&concomitant="+concomitant+"&hash=" + hash; + var urlquickview3= openfda_shiny_endpoint + $(this).attr('id').replace('ShinyBtn','').replace(/\d+/,'') + "/?lang=" + lang + "&t2=" + con + "&v2=patient.reaction.reactionmeddrapt&concomitant="+concomitant+"&hash=" + hash; if (con == '') { document.getElementById('iframe_shiny').src = urlquickview2; diff --git a/gentelella/app/templates/app/final_report.html b/gentelella/app/templates/app/final_report.html index c978266e..8be022de 100644 --- a/gentelella/app/templates/app/final_report.html +++ b/gentelella/app/templates/app/final_report.html @@ -164,52 +164,67 @@


-
+ {% if drug_condition_hash %} +
+
{% trans "Συγχορηγούμενα" %}:
+
+
+ + +
+
+
+ {% endif %} + +
{% for d,c,k in drug_condition_hash %} -
- -
-
+
+ +
+
- {% trans "Γρήγορη Επισκόπηση" %} + {% trans "Γρήγορη Επισκόπηση" %} - {% if d and c %} + {% if d and c %} - {% trans "Δυναμικό PRR" %} + {% trans "Δυναμικό PRR" %} - {% trans "Ανάλυση Αλλαγής Σημείου" %} + {% trans "Ανάλυση Αλλαγής Σημείου" %} - {% elif d %} + {% elif d %} - {% trans "Πίνακας Ελέγχου" %} + {% trans "Πίνακας Ελέγχου" %} - {% trans "Λόγος Αναφορών" %} + {% trans "Λόγος Αναφορών" %} - {% trans "Έλεγχος Λόγου Πιθανοφανειών" %} + {% trans "Έλεγχος Λόγου Πιθανοφανειών" %} - {% elif c %} - {% trans "Λόγος Αναφορών" %} - {% trans "Έλεγχος Λόγου Πιθανοφανειών" %} - {%endif%} - + {% elif c %} + {% trans "Λόγος Αναφορών" %} + {% trans "Έλεγχος Λόγου Πιθανοφανειών" %} + {%endif%} + - {%for key1,value1 in notes_openfda1.items%} - {% if key1 == k %} - {% trans "Σημειώσεις" %} + {%for key1,value1 in notes_openfda1.items%} + {% if key1 == k %} + {% trans "Σημειώσεις" %} - {% endif %} - {%endfor%} + {% endif %} + {%endfor%} -
-
-
+
+
+
{% endfor %}
diff --git a/gentelella/app/views.py b/gentelella/app/views.py index 00905c27..5e0ea43b 100644 --- a/gentelella/app/views.py +++ b/gentelella/app/views.py @@ -1769,10 +1769,14 @@ def final_report(request, scenario_id=None): error_response = HttpResponse(content=str(e), status=500) return error_response - drugs = [d for d in sc.drugs.all()] - conditions = [c for c in sc.conditions.all()] - all_combs = list(product([d.name for d in drugs] or [""], - [c.name for c in conditions] or [""])) + drugs = sc.drugs.all() + conditions = sc.conditions.all() + print("Drugs len:", len(drugs)) + print("Conditions len:", len(conditions)) + all_combs = list(product([d for d in drugs] or [None], + [c for c in conditions] or [None])) + + print("All combs:", len(all_combs)) scenario_open = sc.id @@ -1785,6 +1789,7 @@ def final_report(request, scenario_id=None): drug_condition_hash.append(list(all_combs[i])+[hash]) + print("All dch:", len(drug_condition_hash)) hashes = list(map(lambda dch: dch[2], drug_condition_hash)) if request.build_absolute_uri(request.get_full_path()) == request.META.get('HTTP_REFERER'): @@ -1811,14 +1816,18 @@ def final_report(request, scenario_id=None): for i in notes_wsview_openfda: notes_content_openfda = list(map(lambda el: el.content, filter(lambda elm: elm.wsview == i, user_notes))) dict_openfda_notes[i] = notes_content_openfda[0] - for i, j, k in drug_condition_hash: - for key in dict_openfda_notes: - if i + ' - ' + j == key: - notes_openfda1[k] = dict_openfda_notes[key] - if i == key and j == "": - notes_openfda1[k] = dict_openfda_notes[key] - if j == key and i == "": - notes_openfda1[k] = dict_openfda_notes[key] + + notes_openfda1 = dict([(k, dict_openfda_notes.get(" - ".join(list(filter(None, [i and i.name, j and j.name])))) + ) for i,j,k in drug_condition_hash]) + + # for i, j, k in drug_condition_hash: + # for key in dict_openfda_notes: + # if i and j and i.name + ' - ' + j.name == key: + # notes_openfda1[k] = dict_openfda_notes[key] + # if i and i.name == key and not j: + # notes_openfda1[k] = dict_openfda_notes[key] + # if j and j.name == key and not i: + # notes_openfda1[k] = dict_openfda_notes[key] # ir table and heatmap @@ -1829,13 +1838,16 @@ def final_report(request, scenario_id=None): sc_conditions = sc.conditions.all() # Get drugs concept set id - drugs_names = ohdsi_wrappers.name_entities_group([d.name for d in sc_drugs], "Drug") if len( - sc_drugs) != 1 \ + drugs_names = ohdsi_wrappers.name_entities_group([d.name for d in sc_drugs], domain="Drug", + owner=sc.owner, sid=sc.id) if len(sc_drugs) != 1 \ else "Drug - {}".format(sc_drugs[0].name) - condition_names = ohdsi_wrappers.name_entities_group([c.name for c in sc_conditions], "Condition") \ - if len(sc_conditions) != 1 else "Condition - {}".format(sc_conditions[0].name) + condition_names = ohdsi_wrappers.name_entities_group([c.name for c in sc_conditions], domain="Condition", + owner=sc.owner, sid=sc.id) if len(sc_conditions) != 1 \ + else "Condition - {}".format(sc_conditions[0].name) - ir_name = ohdsi_wrappers.name_entities_group([drugs_names] + [condition_names], "ir") + ir_name = ohdsi_wrappers.name_entities_group([drugs_names] + [condition_names], domain="ir", + owner=sc.owner, sid=sc.id) + print("ir_name:", ir_name) ir_ent = ohdsi_wrappers.get_entity_by_name("ir", ir_name) if ir_ent: ir_id = ir_ent.get("id") @@ -1843,7 +1855,7 @@ def final_report(request, scenario_id=None): ir_id = None char_name = ohdsi_wrappers.name_entities_group(list(map(lambda c: c, filter(None, [drugs_names, condition_names]))), - "char") + domain="char", owner=sc.owner, sid=sc.id) char_ent = ohdsi_wrappers.get_entity_by_name("cohort-characterization", char_name) if char_ent: char_id = char_ent.get("id") @@ -1852,7 +1864,7 @@ def final_report(request, scenario_id=None): conditions_distinct_names = list(map(lambda c: "Condition - {}".format(c.name), sc_conditions)) cp_name = ohdsi_wrappers.name_entities_group(list(map(lambda c: c, [drugs_names] + conditions_distinct_names)), - "cp") + domain="cp", owner=sc.owner, sid=sc.id) cp_ent = ohdsi_wrappers.get_entity_by_name("pathway-analysis", cp_name) if cp_ent: cp_id = cp_ent.get("id") @@ -2287,13 +2299,16 @@ def report_pdf(request, scenario_id=None, report_notes=None, pub_titles=None, pu sc_conditions = sc.conditions.all() # Get drugs concept set id - drugs_names = ohdsi_wrappers.name_entities_group([d.name for d in sc_drugs], "Drug") if len( - sc_drugs) != 1 \ + drugs_names = ohdsi_wrappers.name_entities_group([d.name for d in sc_drugs], domain="Drug", + owner=sc.owner, sid=sc.id) if len(sc_drugs) != 1 \ else "Drug - {}".format(sc_drugs[0].name) - condition_names = ohdsi_wrappers.name_entities_group([c.name for c in sc_conditions], "Condition") \ - if len(sc_conditions) != 1 else "Condition - {}".format(sc_conditions[0].name) + condition_names = ohdsi_wrappers.name_entities_group([c.name for c in sc_conditions], domain="Condition", + owner=sc.owner, sid=sc.id) if len(sc_conditions) != 1 \ + else "Condition - {}".format(sc_conditions[0].name) + + ir_name = ohdsi_wrappers.name_entities_group([drugs_names] + [condition_names], domain="ir", + owner=sc.owner, sid=sc.id) - ir_name = ohdsi_wrappers.name_entities_group([drugs_names] + [condition_names], "ir") ir_ent = ohdsi_wrappers.get_entity_by_name("ir", ir_name) if ir_ent: ir_id = ir_ent.get("id") @@ -2301,7 +2316,7 @@ def report_pdf(request, scenario_id=None, report_notes=None, pub_titles=None, pu ir_id = None char_name = ohdsi_wrappers.name_entities_group(list(map(lambda c: c, filter(None, [drugs_names, condition_names]))), - "char") + domain="char", owner=sc.owner, sid=sc.id) char_ent = ohdsi_wrappers.get_entity_by_name("cohort-characterization", char_name) if char_ent: char_id = char_ent.get("id") @@ -2310,7 +2325,7 @@ def report_pdf(request, scenario_id=None, report_notes=None, pub_titles=None, pu conditions_distinct_names = list(map(lambda c: "Condition - {}".format(c.name), sc_conditions)) cp_name = ohdsi_wrappers.name_entities_group(list(map(lambda c: c, [drugs_names] + conditions_distinct_names)), - "cp") + domain="cp", owner=sc.owner, sid=sc.id) cp_ent = ohdsi_wrappers.get_entity_by_name("pathway-analysis", cp_name) if cp_ent: cp_id = cp_ent.get("id") diff --git a/gentelella/gentelella/__pycache__/settings.cpython-38.pyc b/gentelella/gentelella/__pycache__/settings.cpython-38.pyc index d2d7bafd58fcaf1daf9cb9813d43bb003668788f..c2621f7b2771c68eff701585ec58e4f4e32192c5 100644 GIT binary patch delta 28 icmZ2(y4;jEl$V!_0SM~Oe@=AV$SW_!C^%VHstN#YHwS(I delta 28 icmZ2(y4;jEl$V!_0SI#5zE8B<$SW_!C@@)9stN#Ya|eO| diff --git a/gentelella/gentelella/__pycache__/urls.cpython-38.pyc b/gentelella/gentelella/__pycache__/urls.cpython-38.pyc index e0ceda8ddfef611bdb64f26e87617e3e05fca342..45b4e3a42e4c98e33ac55b757d88e4b94af4c40b 100644 GIT binary patch delta 184 zcmaFG-NDTp%FD~e00c41J}2Iv$Scb@ZKAeKJX;ET3dbC#D6Ul26wXxU6s~5*W+ot; zJC$<*_dKA;>wSdJ-0AeB9fCyN)XP7o+A1QizsvPD4bbhaqI6wzP? zO|gylb~8=h%zTBBe{u&)>SRe)BQ{~68;XP{2eOtb$N-rv`~r+TAjrnV$n=kmi-!@) IXXW_@0C~nKF8}}l delta 288 zcmeC+e#Olj%FD~e00ah0J}2Iu$ScdZZlbnLJ!1-64p%OB6gMM73S$a;4o@y`6fcm? zk;0k6HHRsRFO@ZgJC!+wr#3QrDWN!1Wd$x6&i&(}-N&r8!QEy^j@18FH@2l^lETt+6Kqd>n03#0wG669&6C=|