/**
* This object will handle all the EpisodeDetail Total Cost Breakdown Chart Functionalities
*
* @class lexisnexis.component.epiosdeDetailbyTCB
*/
jQuery.namespace('lexisnexis.component');
lexisnexis.component.EpisodeDetailByTCB = lexisnexis.component.Table
.extend({
data : {
chartId: '#ln_ED_tcb_graph_container',
xAxisId: '#episodeDetailbyTCB-xaxis',
empty_string: "",
error_message:'<span style="color:red">Error: Data is currently unavailable.</span>',
overallEfficiencyHigh:"",
overallEfficiencyLow:"",
efficiencyIndex:""
},
/**
* initialize the table and register for functionality
*
* @method ready
*/
ready : function() {
var cs = this;
cs.getClientParameters(cs);
cs.getEpisodeDetailByTCB(cs);
// cs.registerViewby();
LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK, cs, cs.getEpisodeDetailByTCB);
},
/* registerViewby: function() {
var cs = this;
$( "input[name*='providerRoleViewBy']" ).change(function(){
cs.data.providerRole = $('input[name="providerRoleViewBy"]:checked').val();
cs.getEfficiencyByMPC(cs);
});
},*/
clearData: function(cs){
$(cs.data.chartId).html(cs.data.empty_string);
$(cs.data.xAxisId).html(cs.data.empty_string);
},
noDataError: function(cs){
$(cs.data.chartId).html(cs.data.error_message);
},
getEpisodeDetailByTCB: function(cs){
$('#ln_episodedetail_by_tcb_graph .ln-chartbody').removeClass('collapse');
$.ajax({
url: LN.getContextPath()+'/getTotalCostBreakdownSummary',
method: 'POST',
async: true,
cache:true,
dataType : "json",
beforeSend: function(){
cs.clearData(cs);
LN.showAjaxIndicator(cs.data.chartId);
},'data': {},
success: function(response){
cs.clearData(cs);
//for Drill Downs
//cs.drawGaugeChart(cs,response);
//cs.getClientParameters(cs,response);
response.fromScreen = "OE" ;
response.toScreen = "ETG" ;
response.groupBy = "MPC" ;
response.overallEfficiencyLow = cs.data.overallEfficiencyLow*100;
response.overallEfficiencyHigh = cs.data.overallEfficiencyHigh*100;
if(response.episodeDetailCostComparisionPercentagesDTOList && response.episodeDetailCostComparisionPercentagesDTOList.length>0){
var episodeDetailObj= response.episodeDetailCostComparisionPercentagesDTOList[0];
cs.getTotalCostSummaryData(cs,episodeDetailObj, response );
var template = $("#ln_epsiodedetail_graph_template").html();
var html = Mustache.to_html(template,response);
$("#ln_ED_tcb_graph_container").html(html);
$('[data-toggle="tooltip"]').tooltip();
}else{
$('#ln_episodedetail_by_tcb_graph .ln-chartbody').addClass('collapse');
}
},
error: function(){
cs.clearData(cs);
cs.noDataError(cs);
},
complete: function(){
LN.hideAjaxIndicator(cs.data.chartId);
}
});
},
getTotalCostSummaryData: function(cs, episodeDetailObj,response) {
episodeDetailObj.totalCost= parseInt(episodeDetailObj.totalCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.totalCost)) : null ;
episodeDetailObj.facCost= parseInt(episodeDetailObj.facCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.facCost)) : null;
episodeDetailObj.ancCost= parseInt(episodeDetailObj.ancCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.ancCost)): null;
episodeDetailObj.surgCost= parseInt(episodeDetailObj.surgCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.surgCost)): null;
episodeDetailObj.rxCost= parseInt(episodeDetailObj.rxCost) > 0? formatUtil.formatNumber(parseInt(episodeDetailObj.rxCost)): null;
episodeDetailObj.mgmtCost= parseInt(episodeDetailObj.mgmtCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.mgmtCost)):null;
episodeDetailObj.benchmarkCost= parseInt(episodeDetailObj.benchmarkCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkCost)) : null ;
episodeDetailObj.benchmarkFac= parseInt(episodeDetailObj.benchmarkFac) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkFac)) : null;
episodeDetailObj.benchmarkAnc= parseInt(episodeDetailObj.benchmarkAnc) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkAnc)): null;
episodeDetailObj.benchmarkSurg= parseInt(episodeDetailObj.benchmarkSurg) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkSurg)): null;
episodeDetailObj.benchmarkRx= parseInt(episodeDetailObj.benchmarkRx) > 0? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkRx)): null;
episodeDetailObj.benchmarkMgmt= parseInt(episodeDetailObj.benchmarkMgmt) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkMgmt)):null;
episodeDetailObj.totEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totEfficiencyIndex);
episodeDetailObj.totMgmtEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totMgmtEfficiencyIndex);
episodeDetailObj.totSurgEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totSurgEfficiencyIndex);
episodeDetailObj.totFacEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totFacEfficiencyIndex);
episodeDetailObj.totRxEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totRxEfficiencyIndex);
episodeDetailObj.totAncEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totAncEfficiencyIndex);
episodeDetailObj.totEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totEfficiencyIndex);
episodeDetailObj.totMgmtEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totMgmtEfficiencyIndex);
episodeDetailObj.totSurgEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totSurgEfficiencyIndex);
episodeDetailObj.totFacEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totFacEfficiencyIndex);
episodeDetailObj.totRxEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totRxEfficiencyIndex);
episodeDetailObj.totAncEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totAncEfficiencyIndex);
episodeDetailObj.totEfficiencyIndex=(episodeDetailObj.totEfficiencyIndex*100).toFixed(0);
episodeDetailObj.totMgmtEfficiencyIndex=(episodeDetailObj.totMgmtEfficiencyIndex*100).toFixed(0);
episodeDetailObj.totSurgEfficiencyIndex=(episodeDetailObj.totSurgEfficiencyIndex*100).toFixed(0);
episodeDetailObj.totFacEfficiencyIndex=(episodeDetailObj.totFacEfficiencyIndex*100).toFixed(0);
episodeDetailObj.totRxEfficiencyIndex=(episodeDetailObj.totRxEfficiencyIndex*100).toFixed(0);
episodeDetailObj.totAncEfficiencyIndex=(episodeDetailObj.totAncEfficiencyIndex*100).toFixed(0);
if(episodeDetailObj.totMgmtEfficiencyIndexCss=='progress-bar-warning'){
episodeDetailObj.totMgmtUnderUtlizdCss=episodeDetailObj.totMgmtEfficiencyIndexWidth;
}
if(episodeDetailObj.totEfficiencyIndexCss=='progress-bar-warning'){
episodeDetailObj.totEffUnderUtlizdCss=episodeDetailObj.totEfficiencyIndexWidth;
}
if(episodeDetailObj.totSurgEfficiencyIndexCss=='progress-bar-warning'){
episodeDetailObj.totSurgUnderUtlizdCss=episodeDetailObj.totSurgEfficiencyIndexWidth;
}
if(episodeDetailObj.totFacEfficiencyIndexCss=='progress-bar-warning'){
episodeDetailObj.totFacUnderUtlizdCss=episodeDetailObj.totFacEfficiencyIndexWidth;
}
if(episodeDetailObj.totRxEfficiencyIndexCss=='progress-bar-warning'){
episodeDetailObj.totRxUnderUtlizdCss=episodeDetailObj.totRxEfficiencyIndexWidth;
}
if(episodeDetailObj.totAncEfficiencyIndexCss=='progress-bar-warning'){
episodeDetailObj.totAncUnderUtlizdCss=episodeDetailObj.totAncEfficiencyIndexWidth;
}
response.episodeDetailObj=episodeDetailObj;
},
getProgressCssClass: function(cs, effIndex){
if(parseFloat(effIndex) <= 0 ){
return "progress-bar-warning";
}
else if(parseFloat(effIndex) > 0 && parseFloat(effIndex) < parseFloat(cs.data.overallEfficiencyLow)){
return "progress-bar-warning";
}else if(parseFloat(effIndex) > parseFloat(cs.data.overallEfficiencyHigh)){
return "progress-bar-danger";
}else if(parseFloat(effIndex) >= parseFloat(cs.data.overallEfficiencyLow)
&& (parseFloat(effIndex) <= parseFloat(cs.data.overallEfficiencyHigh))){
return "progress-bar-success";
}
},
getProgressWidth: function(cs, effIndex){
if(parseFloat(effIndex) <= 0 ){
return "0%";
}
else if(parseFloat(effIndex) > 0 && parseFloat(effIndex) < parseFloat(cs.data.overallEfficiencyLow)){
var width= (42.5 * parseFloat(effIndex))/parseFloat(cs.data.overallEfficiencyLow);
return Math.round(width)+"%";
}else if(parseFloat(effIndex) > parseFloat(cs.data.overallEfficiencyHigh)){
var width= (100 * parseFloat(effIndex))/2;
if(parseFloat(width)> 100.00){
width=100.00;
}
return Math.round(width)+"%";
}else if(parseFloat(effIndex) >= parseFloat(cs.data.overallEfficiencyLow)
&& (parseFloat(effIndex) <= parseFloat(cs.data.overallEfficiencyHigh))){
var width= (67.5 * parseFloat(effIndex))/parseFloat(cs.data.overallEfficiencyHigh);
return Math.round(width)+"%";
}
},
getClientParameters: function(cs){
$.ajax({
url: LN.getContextPath()+'/getOverallefficiencyParameters',
method: 'POST',
async: true,
cache:true,
dataType : "json",
success: function(response){
//cs.clearData(cs);
if(response){
_.each(response, function(resp) {
if(resp.name==='PPM_OVERALL_EFFICIENCY_HIGH'){
cs.data.overallEfficiencyHigh=resp.value;
}else if(resp.name==='PPM_OVERALL_EFFICIENCY_LOW'){
cs.data.overallEfficiencyLow=resp.value;
}
cs.data.efficiencyIndex="0.0";
});
}
},
error: function(data){
cs.clearData(cs);
cs.handleError(cs);
},
complete: function(){
// cs.stopLoader();
}
});
}
/*drawGaugeChart : function(cs,response) {
var formattedValue=[];
var highValue;
var overallEfficiencyLow = cs.data.overallEfficiencyLow;
var overallEfficiencyHigh = cs.data.overallEfficiencyHigh;
var efficiencyIndex = cs.data.efficiencyIndex;
if ((parseFloat(overallEfficiencyHigh) + parseFloat(overallEfficiencyLow)) <= parseFloat(efficiencyIndex)) {
highValue = parseInt(efficiencyIndex) + 1;
} else {
if (overallEfficiencyHigh.toString().indexOf('.') != -1 || overallEfficiencyLow.toString().indexOf('.') != -1) {
highValue = parseFloat(overallEfficiencyHigh) + parseFloat(overallEfficiencyLow);
} else {
highValue = parseInt(overallEfficiencyHigh) + parseInt(overallEfficiencyLow);
}
}
var highValueForDisplay;
if (highValue >= 8) {
highValueForDisplay = 8;
} else {
highValueForDisplay = highValue;
}
response.underUtilizedPercentage = (overallEfficiencyLow/highValueForDisplay) * 100;
response.expectedUtilizedPercentage = ((overallEfficiencyHigh-overallEfficiencyLow)/highValueForDisplay) * 100;
response.overUtilizedPercentage = 100 - (response.underUtilizedPercentage + response.expectedUtilizedPercentage);
// 0.5 has been added to make the pointer exactly point to the right percentage
response.efficiencyIndexPercentage = (efficiencyIndex/highValue)* 100 + 0.5;
response.calculatedHighValue = highValue;
response.underLine = response.underUtilizedPercentage ;
response.expectedLine = response.expectedUtilizedPercentage - 5;
response.overLine = response.overUtilizedPercentage;
response.overallEfficiencyLow = cs.data.overallEfficiencyLow*100;
response.overallEfficiencyHigh = cs.data.overallEfficiencyHigh*100;
}*/
});