finish add overall_servival

This commit is contained in:
BOHUNG 2019-12-08 13:32:03 +08:00
parent 6b1d72e54a
commit 2e00a82db4
3 changed files with 110 additions and 36 deletions

View File

@ -118,35 +118,94 @@ $(document).ready(function(){
post_json[name] = index; post_json[name] = index;
}; };
}; };
post_json['locale'] = I18n.locale;
var result = $.post("/cancerpredictResult",{"data":post_json}); var result = $.post("/cancerpredictResult",{"data":post_json});
result.done(function(){ result.done(function(){
var load_heml = $('#result_table_content').html(result.responseJSON.table); var load_heml = $('#result_table_content').html(result.responseJSON.table);
load_heml.ready(function(){ load_heml.ready(function(){
$('#result_table_content .cancer_years').eq(0).addClass('active'); $('#result_table_content .cancer_years').eq(0).addClass('active');
$('.cancer_table_btn').off('click').on('click',function(){ for(var i = 0;i < $('#result_table_content .cancer_years').length;i++){
var index = $(this).index()/2; $('#result_table_content .cancer_years').eq(i).attr('index',i)
};
$('#result_table_content .cancer_years').off('click').on('click',function(){
try{ try{
$(this).parent().find('>input').attr('value',0); $(this).parent().find('.cancer_years').removeClass('active');
$(this).parent().find('>input').eq(index).attr('value',1); //$('#result_text_content .cancer_years').eq($(this).attr('index')).click();
$(this).parent().find('>button').removeClass('active');
$(this).parent().removeClass('cancertable_empty');
}catch{}; }catch{};
$(this).addClass('active'); $(this).addClass('active');
$('#current_year').attr('index',$(this).attr('index'));
$('#current_year').attr('value',$(this).html());
$('#current_year').change();
}); });
}); });
load_heml = $('#result_text_content').html(result.responseJSON.texts); load_heml = $('#result_text_content').html(result.responseJSON.texts);
load_heml.ready(function(){ load_heml.ready(function(){
$('#result_text_content .cancer_years').eq(0).addClass('active'); $('#result_text_content .cancer_years').eq(0).addClass('active');
$('.cancer_table_btn').off('click').on('click',function(){ for(var i = 0;i < $('#result_text_content .cancer_years').length;i++){
var index = $(this).index()/2; $('#result_text_content .cancer_years').eq(i).attr('index',i)
};
$('#result_text_content .cancer_years').off('click').on('click',function(){
try{ try{
$(this).parent().find('>input').attr('value',0); $(this).parent().find('.cancer_years').removeClass('active');
$(this).parent().find('>input').eq(index).attr('value',1); //$('#result_table_content .cancer_years').eq($(this).attr('index')).click();
$(this).parent().find('>button').removeClass('active');
$(this).parent().removeClass('cancertable_empty');
}catch{}; }catch{};
$(this).addClass('active'); $(this).addClass('active');
$('#current_year').attr('value',$(this).html());
$('#current_year').attr('index',$(this).attr('index'));
$('.surgery_year').html($(this).html()); $('.surgery_year').html($(this).html());
$('#current_year').change();
});
var treatmeny_method = result.responseJSON.treatmeny_method;
var lpv = [0,-0.8397,-0.4147,-0.3203,0.3321];
var servive_ratio_arr = [result.responseJSON.servive_ratio]
var yes = (I18n.locale=="zh_tw") ? "是" : "yes";
var year = $('#current_year').attr('value');
var active_treatment = ['Surgery_only']
var lpv_real = [result.responseJSON['lpv']];
var lpv_dict={}
var lpv_calc={1:-0.001476145,3:-0.01261639,5:-0.02519608}
active_treatment.push = function() {
if(arguments.length == 1){
var year = $('#current_year').attr('value');
var lpv_current = lpv_real[lpv_real.length-1]+lpv_dict[arguments[0]];
lpv_real.push(lpv_current);
var servive_ratio = (Math.exp(lpv_calc[year])**lpv_current)*100;
var benefit = servive_ratio - servive_ratio_arr[servive_ratio_arr.legnth - 1];
servive_ratio_arr.push(servive_ratio);
$('tr.'+arguments[0]+' td.Overall_Survival').html(servive_ratio);
$('tr.'+arguments[0]+' td.Additional_Benefit').html(benefit);
console.log(servive_ratio_arr[servive_ratio_arr.legnth - 1]);
return Array.prototype.push.apply(this, arguments);
}else{
return Array.prototype.push.apply(this, arguments);
}
};
for(var i = 0;i<treatmeny_method.length;i++){
lpv_dict[treatmeny_method[i]] = lpv[i];
$('#'+treatmeny_method[i]+' .cancer_table_btn').eq(1).click(function(){
if(!active_treatment.includes($(this).parent().attr('id'))){
active_treatment.push($(this).parent().attr('id'))
console.log($(this).parent().attr('id'))
}
})
}
$('#current_year').change(function(){
$('.surgery_year').html($(this).attr('value'));
$('.cancer_years').removeClass('active');
$('#result_text_content .cancer_years').eq($(this).attr("index")).addClass('active');
$('#result_table_content .cancer_years').eq($(this).attr("index")).addClass('active');
var year = $(this).attr('value');
servive_ratio_arr = [];
for(var i = 0;i<active_treatment.length;i++){
var servive_ratio = (Math.exp(lpv_calc[year])**lpv_real[i])*100;
servive_ratio_arr.push(servive_ratio);
$('tr.'+active_treatment[i]+' td.Overall_Survival').html(servive_ratio);
}
$('.'+active_treatment[0]+'.Overall_Survival').html(servive_ratio_arr[0]);
/*for(var i = 0;i<treatmeny_method.length;i++){
$('.'+treatmeny_method[i]+'["name='+yes+'"]').attr('value') == 1
}*/
$('.survive_person').html(servive_ratio);
}); });
}); });
}) })

View File

@ -10,6 +10,8 @@ class CancerpredictsController < ApplicationController
tags = OrbitHelper.widget_tags tags = OrbitHelper.widget_tags
categories = OrbitHelper.widget_categories || [] categories = OrbitHelper.widget_categories || []
create_first_field create_first_field
locale = params['data']['locale'].to_s rescue 'zh_tw'
locale = 'zh_tw' if locale == 'zh_cn'
result = {:result=>"123"} result = {:result=>"123"}
result['age1'] = -(params['data']['age'].to_f/100)**(-0.5) result['age1'] = -(params['data']['age'].to_f/100)**(-0.5)
result['age2'] = -(params['data']['age'].to_f/100)**(-0.5)*Math.log(params['data']['age'].to_f/100,10) result['age2'] = -(params['data']['age'].to_f/100)**(-0.5)*Math.log(params['data']['age'].to_f/100,10)
@ -58,37 +60,38 @@ class CancerpredictsController < ApplicationController
result['lpv'] = ((result['age1']-0.7276655)*(-10.87)+(result['age2']-0.4540707)*8.968+(result['size1']-0.643632)*0.7678+(result['nposit']-1.346932)*0.5339+ result['lpv'] = ((result['age1']-0.7276655)*(-10.87)+(result['age2']-0.4540707)*8.968+(result['size1']-0.643632)*0.7678+(result['nposit']-1.346932)*0.5339+
result['grade_2']*0.4795+result['grade_3']*0.818+result['subtype_HER2']*0.1806+result['subtype_triple']*0.6457+result['pstage_2']*0.5311+ result['grade_2']*0.4795+result['grade_3']*0.818+result['subtype_HER2']*0.1806+result['subtype_triple']*0.6457+result['pstage_2']*0.5311+
result['pstage_3']*1.134+result['pstage_4']*2.172+result['lvi_yes']*0.3321-0.04 rescue 'error') result['pstage_3']*1.134+result['pstage_4']*2.172+result['lvi_yes']*0.3321-0.04 rescue 'error')
result['table'] = '<p id="cancer_table_texts">此分析微針對已接受手術後病人下表為此病人分別在第1年、3及5年下根據選定的術後治療所估計的存活率</p>'
result['table'] += '<a>第</a>'
@years = ['1','3','5'] @years = ['1','3','5']
result['table'] = '<input id="current_year" type="hidden" value="'+@years[0]+'" index="0"/><p id="cancer_table_texts">此分析微針對已接受手術後病人下表為此病人分別在第1年、3及5年下根據選定的術後治療所估計的存活率</p>'
result['table'] += '<a>第</a>'
result['years'] = @years result['years'] = @years
@years.each{|year| result['table'] += ('<button class="cancer_years cancer_table_btn btn btn-default btn-sm">'+year+'</button>')} @years.each{|year| result['table'] += ('<button class="cancer_years cancer_table_btn btn btn-default btn-sm">'+year+'</button>')}
result['table'] += '<a>年</a>' result['table'] += '<a>年</a>'
@table_head = (I18n.locale.to_s == "zh_tw") ? ['治療','額外治療效益','總生存率(%)'] :['Treatment','Additional Benefit','Overall Survival(%)'] @table_head = (locale == "zh_tw") ? ['治療','額外治療效益','總生存率(%)'] :['Treatment','Additional Benefit','Overall Survival(%)']
@therapy_choices = (I18n.locale.to_s == "zh_tw") ? ['純手術'] :['Treatment'] @head_name = ['Treatment','Additional_Benefit','Overall_Survival']
@form_to_show.form_show_in_result.values.each{|choice| @therapy_choices.push choice["name"][I18n.locale.to_s]} @therapy_choices = (locale == "zh_tw") ? ['純手術'] :['Surgery only']
@therapy_names = ['Treatment'] @form_to_show.form_show_in_result.values.each{|choice| @therapy_choices.push choice["name"][locale]}
@therapy_names = ['Surgery_only']
@form_to_show.form_show_in_result.values.each{|choice| @therapy_names.push choice["variable"]} @form_to_show.form_show_in_result.values.each{|choice| @therapy_names.push choice["variable"]}
result['treatmeny_method'] = @therapy_names
result['table'] += '<table><thead><tr>' result['table'] += '<table><thead><tr>'
@table_head.each_with_index{|head,index| result['table'] += ('<th class="cancer_th">' + head + '</th>')} @table_head.each_with_index{|head,index| result['table'] += ('<th class="cancer_th '+@head_name[index]+'">' + head + '</th>')}
result['table'] += '</tr></thead><tbody>' result['table'] += '</tr></thead><tbody>'
@therapy_choices.each_with_index do |choice,i| @therapy_choices.each_with_index do |choice,i|
result['table'] += '<tr>' result['table'] += '<tr class="'+@therapy_names[i].to_s+'">'
@table_head.each_with_index do |head,index| @table_head.each_with_index do |head,index|
if index == 0 result['table'] += ('<td class="cancer_td '+ @head_name[index]+'">' + ((index == 0) ? choice : '-') + '</td>')
result['table'] += ('<td class="cancer_td '+@therapy_names[i].to_s+'">' + choice + '</td>')
else
result['table'] += ('<td class="cancer_td">' + '-' + '</td>')
end
end end
result['table'] += '</tr>' result['table'] += '</tr>'
end end
result['texts'] = '<a>此研究分析來自已接受根除性手術後之婦女所得之結果,根據您所輸入的資訊以及治療方式,</a>'+'<div style="clear:both;"></div>'+'<a>在術後第</a>' result['texts'] = '<a>此研究分析來自已接受根除性手術後之婦女所得之結果,根據您所輸入的資訊以及治療方式,</a>'+'<div style="clear:both;"></div>'+'<a>在術後第</a>'
@years.each{|year| result['texts'] += ('<button class="cancer_years cancer_table_btn btn btn-default btn-sm">'+year+'</button>')} @years.each{|year| result['texts'] += ('<button class="cancer_years cancer_table_btn btn btn-default btn-sm">'+year+'</button>')}
result['texts'] += '<a>年</a>' result['texts'] += '<a>年</a>'
@servive_ratio = Math.exp(-0.001476145)**(Math.exp((result['lpv']))) @servive_ratio = (Math.exp(-0.001476145)**(result['lpv']))*100
result['texts'] += ('<a>100 位只接受根除性手術的婦女中,有 '+ '<a class="survive_person">'+@servive_ratio.round.to_s+'</a>'+'<a> 位婦女,術後 </a>'+'<a class="surgery_year">'+@years[0].to_s+'</a>'+'<a>年仍為存活</a>') result['texts'] += ('<a>100 位只接受根除性手術的婦女中,有 '+ '<a class="'+@therapy_names[0]+' Overall_Survival">'+@servive_ratio.round.to_s+'</a>'+'<a> 位婦女,術後 </a>'+'<a class="surgery_year">'+@years[0].to_s+'</a>'+'<a>年仍為存活</a>')
result['texts'] += '<div class="extra-text" style="display:none;"><a>'+',此外'+'<a></div>' result['texts'] += '<div class="extra-text" style="display:none;"><a>'+',此外</a>'
#@therapy_names[1...@therapy_names.length].each{|name| result['texts'] += '<p>'+'100 位在術後有接受''的婦女中,有 '+'</p>'}
result['texts'] += '</div>'
result['servive_ratio'] = @servive_ratio
result = result.merge(params) result = result.merge(params)
render :json=> result render :json=> result
end end
@ -119,17 +122,17 @@ class CancerpredictsController < ApplicationController
@table_str_left += '</label>' @table_str_left += '</label>'
if @field_property["comment_text"] != "" if @field_property["comment_text"] != ""
@table_str_left += '<button tabindex="0" class="cancer_help_btn" data-target="#show_help_modal" style="float:left;cursor: pointer;padding: 0em 0.475em;font-size: 1.25em;border-radius: 15px;background-color: rgb(210, 106, 2);border-color: rgb(210, 106, 2);color: white;"></button>' @table_str_left += '<button tabindex="0" class="cancer_help_btn" data-target="#show_help_modal" style="float:left;cursor: pointer;padding: 0em 0.475em;font-size: 1.25em;border-radius: 15px;background-color: rgb(210, 106, 2);border-color: rgb(210, 106, 2);color: white;"></button>'
@table_str_left += '<input class="help_texts" type="hidden" value="'+@field_property["comment_text"]+'" name='+@field_property["variable"]+'></input>' @table_str_left += '<input class="help_texts" type="hidden" value="'+@field_property["comment_text"]+'" name='+@field_property["variable"]+'/>'
else else
@table_str_left += '<div style="margin-right: 2.125em;"></div>' @table_str_left += '<div style="margin-right: 2.125em;"></div>'
end end
if @field_property["is_num"] == 1 if @field_property["is_num"] == 1
@table_str_left += '<input class="num_only cancer_form_field" id="'+@field_property["variable"]+'" style="float:left;clear:right;" data-range="'+@field_property["range"].to_s+'" onkeyup="value=value.replace(/[^\d]/g,\'\') "onbeforepaste="clipboardData.setData(\'text\',clipboardData.getData(\'text\').replace(/[^\d]/g,\'\'))"></input><button class="btn-sub"></button><button class="btn-add"></button>' @table_str_left += '<input class="num_only cancer_form_field" id="'+@field_property["variable"]+'" style="float:left;clear:right;" data-range="'+@field_property["range"].to_s+'" onkeyup="value=value.replace(/[^\d]/g,\'\') "onbeforepaste="clipboardData.setData(\'text\',clipboardData.getData(\'text\').replace(/[^\d]/g,\'\'))"/><button class="btn-sub"></button><button class="btn-add"></button>'
else else
@table_str_left += '<div class= "cancer-btn-group cancer_form_field" id="'+@field_property["variable"]+'" style="float:left;clear:right;">' @table_str_left += '<div class= "cancer-btn-group cancer_form_field" id="'+@field_property["variable"]+'" style="float:left;clear:right;">'
@field_property["choice_fields"].each do |create_choice| @field_property["choice_fields"].each do |create_choice|
@table_str_left += '<button class="cancer_table_btn btn btn-default btn-sm">'+create_choice+'</button>' @table_str_left += '<button class="cancer_table_btn btn btn-default btn-sm">'+create_choice+'</button>'
@table_str_left += '<input type="hidden" value="0" name="'+create_choice+'"></input>' @table_str_left += '<input type="hidden" value="0" name="'+create_choice+'"/>'
end end
@table_str_left += '</div>' @table_str_left += '</div>'
end end
@ -145,17 +148,17 @@ class CancerpredictsController < ApplicationController
@table_str_right += '</label>' @table_str_right += '</label>'
if @field_property["comment_text"] != "" if @field_property["comment_text"] != ""
@table_str_right += '<button tabindex="0" class="cancer_help_btn" data-target="#show_help_modal" style="float:left;cursor: pointer;padding: 0em 0.475em;font-size: 1.25em;border-radius: 15px;background-color: rgb(210, 106, 2);border-color: rgb(210, 106, 2);color: white;"></button>' @table_str_right += '<button tabindex="0" class="cancer_help_btn" data-target="#show_help_modal" style="float:left;cursor: pointer;padding: 0em 0.475em;font-size: 1.25em;border-radius: 15px;background-color: rgb(210, 106, 2);border-color: rgb(210, 106, 2);color: white;"></button>'
@table_str_right += '<input class="help_texts" type="hidden" value="'+@field_property["comment_text"]+'" name='+@field_property["variable"]+'></input>' @table_str_right += '<input class="help_texts" type="hidden" value="'+@field_property["comment_text"]+'" name='+@field_property["variable"]+'/>'
else else
@table_str_right += '<div style="margin-right: 2.125em;"></div>' @table_str_right += '<div style="margin-right: 2.125em;"></div>'
end end
if @field_property["is_num"] == 1 if @field_property["is_num"] == 1
@table_str_right += '<input class="num_only cancer_form_field" id="'+@field_property["variable"]+'" style="float:left;clear:right;" data-range="'+@field_property["range"].to_s+'" onkeyup="value=value.replace(/[^\d]/g,\'\') "onbeforepaste="clipboardData.setData(\'text\',clipboardData.getData(\'text\').replace(/[^\d]/g,\'\'))"></input><button class="btn-sub"></button><button class="btn-add"></button>' @table_str_right += '<input class="num_only cancer_form_field" id="'+@field_property["variable"]+'" style="float:left;clear:right;" data-range="'+@field_property["range"].to_s+'" onkeyup="value=value.replace(/[^\d]/g,\'\') "onbeforepaste="clipboardData.setData(\'text\',clipboardData.getData(\'text\').replace(/[^\d]/g,\'\'))"/><button class="btn-sub"></button><button class="btn-add"></button>'
else else
@table_str_right += '<div class= "cancer-btn-group cancer_form_field" id="'+@field_property["variable"]+'" style="float:left;clear:right;">' @table_str_right += '<div class= "cancer-btn-group cancer_form_field" id="'+@field_property["variable"]+'" style="float:left;clear:right;">'
@field_property["choice_fields"].each do |create_choice| @field_property["choice_fields"].each do |create_choice|
@table_str_right += '<button class="cancer_table_btn btn btn-default btn-sm">'+create_choice+'</button>' @table_str_right += '<button class="cancer_table_btn btn btn-default btn-sm">'+create_choice+'</button>'
@table_str_right += '<input type="hidden" value="0" name="'+create_choice+'"></input>' @table_str_right += '<input type="hidden" value="0" name="'+create_choice+'"/>'
end end
@table_str_right += '</div>' @table_str_right += '</div>'
end end

View File

@ -82,9 +82,19 @@
top: -0.3em; top: -0.3em;
padding: 0; padding: 0;
} }
.cancer_table_btn:focus{
color: #5d7ca2 !important;
background-color: #9dc3e6 !important;
border-color: #8c8c8c !important;
}
.cancer_table_btn:hover{
color: #5d7ca2 !important;
background-color: #9dc3e6 !important;
border-color: #8c8c8c !important;
}
.cancer_table_btn.active{ .cancer_table_btn.active{
color: #333; color: #5d7ca2;
background-color: #e6e6e6; background-color: #9dc3e6;
border-color: #8c8c8c; border-color: #8c8c8c;
} }
.cancertable_empty{ .cancertable_empty{
@ -204,6 +214,8 @@
#result_table_content table{ #result_table_content table{
clear: both; clear: both;
width:100%; width:100%;
table-layout: fixed;
overflow-wrap: break-word;
} }
.cancer_th{ .cancer_th{
color: white; color: white;