/**
* This object will handle all the PatientCompliance functionalities
*
* @class lexisnexis.component.PatientCompliance
*/
jQuery.namespace('lexisnexis.component');
lexisnexis.component.PatientCompliance = lexisnexis.component.TableColumnDefs.extend({
data : {
searchFieldId : '#ln_patient_compliance_grid_search',
summaryTableId : '#ln_summary_patient_compliance',
previousVal: '',
saveId : '#patientlistTable_save',
resetId : '#patientlistTable_reset',
firstTime: true,
summaryContainer: "#ln_summary_patient_compliance_container",
patientTotalsUrl: "getPatientComplianceTotals",
baseSummaryUrl: "getPatientComplianceSummary",
baseUrl: "#",
summaryGridColumnId: '#ln_patient_compliance_grid',
zeroProviderCountMsgDivID : '#zeroProviderCountMsgDiv',
defaultSortColumn_summary : "Measure Category",
defaultSortColumn_summary_second : "Measure Detail",
measureCategory : '#measuredropdown',
measureGroup : '#measuregroupdropdown',
measureBy : '#measurebydropdown',
measureCompliant : '#ln_tableheader_viewby_desc',
classhideColumn:'ln-hide-column',
delay : (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})()
},
/**
*
* @method ready
*/
ready : function() {
var cs = this;
cs.registerSearch();
cs.registerViewBy();
cs.loadMeasureCategories(true);
cs.registerDropDownListener();
cs.containerHelpListener();
cs.getPatientProfileDetailsListener();
LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK,cs, cs.registerApplyButtonChange);
},
getPatientProfileDetailsListener: function(){
$(document).on('click', ".patientProfileDetails", function(e){
e.preventDefault();
if($(this).attr('patientName')){
cs.goToPatientProfileDetails($(this).attr('patientName'),$(this).attr('patientId'));
}
});
},
containerHelpListener: function() {
//default base path for all help
var defaultBasePath = "/help/ln/Default.htm";
$("#ln_measure_patient_compliance_count").on("click", "a", function(e){
e.preventDefault();
// save default page level help path
var defaultHelp = LN.getHelpPath().split("#")[1];
//set for help path for this container
LN.setHelpPath( defaultBasePath, '#Measure Data Definition/GGoverview.htm' );
// show/pop help
LN.loadContainerHelp();
// reset to default page level help
LN.setHelpPath(defaultBasePath, "#" + defaultHelp);
});
},
registerApplyButtonChange : function(cs) {
cs.populateTotalsGrid(cs);
cs.initPatientComplianceTable(cs);
},
reloadGrid: function(cs){
//LN.debug('ReloadGrid called');
cs.data.tableSummary.fnReloadAjax(cs.data.baseSummaryUrl);
},
registerSearch: function() {
var cs = this;
$(cs.data.searchFieldId).on('keyup', function (e) {
var isValidSearch=true;
if (!isValidateSearch(e,cs.data.searchFieldId, false)) {
isValidSearch= false;
cs.data.previousVal = $(cs.data.searchFieldId).val();
}
cs.data.patientName=this.value.toUpperCase();
LN.debug("Inside Search Keyup Function isValidSearch -->" + isValidSearch);
cs.data.delay(function(){
if(isValidSearch){
if(isValidTextLength(cs,$(cs.data.searchFieldId).val(),2)){
$(cs.data.summaryTableId).DataTable().ajax.reload(function(data){
cs.noDataCleanup(data.iTotalDisplayRecords);
});
}
}
}, 1000 );
});
},
registerViewBy: function() {
var cs = this;
$("#ln_patient_summary_view_all").on("click",function(){
$("#groupbysummarytotalid").html("All Compliance Summary (Totals)");
$(cs.data.measureCompliant).val("");
$('#ln_tableheader_viewby_desc').text("All");
$("#ln_patient_summary_view_all a").addClass('active');
$("#ln_patient_summary_view_nonCompliant a").removeClass('active');
$("#ln_patient_summary_view_compliant a").removeClass('active');
cs.populateTotalsGrid(cs);
$(cs.data.summaryTableId).DataTable().ajax.reload(function(data){
cs.noDataCleanup(data.iTotalDisplayRecords);
});
});
$("#ln_patient_summary_view_compliant").on("click",function(){
$("#groupbysummarytotalid").html("Compliant Summary (Totals)");
$(cs.data.measureCompliant).val("Y");
$('#ln_tableheader_viewby_desc').text("Compliant");
$("#ln_patient_summary_view_all a").removeClass('active');
$("#ln_patient_summary_view_nonCompliant a").removeClass('active');
$("#ln_patient_summary_view_compliant a").addClass('active');
cs.populateTotalsGrid(cs);
$(cs.data.summaryTableId).DataTable().ajax.reload(function(data){
cs.noDataCleanup(data.iTotalDisplayRecords);
});
});
$("#ln_patient_summary_view_nonCompliant").on("click",function(){
$("#groupbysummarytotalid").html("Non-Compliant Summary (Totals)");
$(cs.data.measureCompliant).val("N");
$('#ln_tableheader_viewby_desc').text("Non-Compliant");
$("#ln_patient_summary_view_all a").removeClass('active');
$("#ln_patient_summary_view_nonCompliant a").addClass('active');
$("#ln_patient_summary_view_compliant a").removeClass('active');
cs.populateTotalsGrid(cs);
$(cs.data.summaryTableId).DataTable().ajax.reload(function(data){
cs.noDataCleanup(data.iTotalDisplayRecords);
});
});
},
enableDisableDetailsDropDown : function(cs){
if((!$(cs.data.measureCategory).val() || $(cs.data.measureCategory).val()=='All')
/*&& $(cs.data.measureGroup).val()=='All'*/){
$(cs.data.measureBy).attr('disabled','disabled');
}else{
$(cs.data.measureBy).removeAttr('disabled');
}
},
loadMeasureCategories : function (isPageRefresh){
var cs = this;
//cs.enableDisableDetailsDropDown(cs);
if(isPageRefresh){
//Update DrillDown filter Values
if($("#ln_selMeasureGroup").val() != ""){
$(cs.data.measureGroup).val($("#ln_selMeasureGroup").val()).attr("selected", "selected");
}
if($("#ln_selMeasureCompliant").val() != ""){
$(cs.data.measureCompliant).val($("#ln_selMeasureCompliant").val()).attr("selected", "selected");
$("#ln_patient_summary_view_nonCompliant a").removeClass('active');
$("#ln_patient_summary_view_compliant a").removeClass('active');
$("#ln_patient_summary_view_all a").addClass('active');
if( $("#ln_selMeasureCompliant").val() === 'Y') {
$(cs.data.measureCompliant).text('Compliant');
$("#groupbysummarytotalid").html("Compliant Summary (Totals)");
$("#ln_patient_summary_view_all a").removeClass('active');
$("#ln_patient_summary_view_compliant a").addClass('active');
}else if ($("#ln_selMeasureCompliant").val() === 'N') {
$(cs.data.measureCompliant).text('Non-Compliant');
$("#groupbysummarytotalid").html("Non-Compliant Summary (Totals)");
$("#ln_patient_summary_view_all a").removeClass('active');
$("#ln_patient_summary_view_nonCompliant a").addClass('active');
}
else
{
$("#groupbysummarytotalid").html("All Compliance Summary (Totals)");
}
}
else
{
$("#groupbysummarytotalid").html("All Compliance Summary (Totals)");
}
}
$.ajax({
url: "getPatientComplianceCategories",
data: {'measureGroup' : $(cs.data.measureGroup).val()
},
method: 'POST',
dataType: 'json',
success: function(data) {
$(cs.data.measureCategory).empty();
$(cs.data.measureCategory).append(new Option("All", "All"));
$.each(data, function(index, resultObj) {
$(cs.data.measureCategory).append(new Option(resultObj.measureCategoryName, resultObj.measureCategoryID));
});
cs.enableDisableDetailsDropDown(cs);
if(isPageRefresh){
//Update DrillDown filter Values
if($("#ln_selMeasureCategory").val() != ""){
$(cs.data.measureCategory).val($("#ln_selMeasureCategory").val()).attr("selected", "selected");
}
cs.loadMeasureCategoriesDetails(true);
}else{
cs.updateSelectedCategory();
}
}
});
},
updateSelectedCategory: function(measureCategory) {
var cs = this;
var samePageRedirect = true;
var drillDownFilter = "PC_PC_CH";
var measureGroupCode = $(cs.data.measureGroup).val();
var measureGroupDesc = $(cs.data.measureGroup + " option:selected").text();
var measureCategoryCode = $(cs.data.measureCategory).val();
var measureCategoryDesc = $(cs.data.measureCategory + " option:selected").text();
var measureByCode = $(cs.data.measureBy).val();
var measureByDesc = $(cs.data.measureBy + " option:selected").text();
var measureCompliant = $(cs.data.measureCompliant).val();
var drillDownFilterValue = measureGroupCode + ":" + measureGroupDesc + ":" + measureCategoryCode + ":" + measureCategoryDesc + ":" + measureByCode + ":" + measureByDesc + ":" + measureCompliant;
var activeFilterSummary = "";
drillDownFilters.updateDrillDownCriteriaRedirectUrl(drillDownFilter, drillDownFilterValue, activeFilterSummary, drillDownFilters, samePageRedirect);
},
loadMeasureCategoriesDetails : function (isPageRefresh, preventGridReloadFlag){
var cs = this;
$.ajax({
url: "getPatientComplianceCategoriesDetails",
data: {'measureGroup' : $(cs.data.measureCategory).val()
},
method: 'POST',
dataType: 'json',
success: function(data) {
$(cs.data.measureBy).empty();
$(cs.data.measureBy).append(new Option("All", "All"));
$.each(data, function(index, resultObj) {
$(cs.data.measureBy).append(new Option(resultObj.measureCategoryName, resultObj.measureCategoryID));
});
if(isPageRefresh){
//Update DrillDown filter Values
var checkMeasureBy = $("#ln_selMeasureBy").val();
if($("#ln_selMeasureBy").val() != ""){
$('#ln_patient_compliance_measureBy').css('display','');
$(cs.data.measureBy).val($("#ln_selMeasureBy").val()).attr("selected", "selected");
}
}
cs.enableDisableDetailsDropDown(cs);
//false
if(isPageRefresh && !preventGridReloadFlag){
cs.populateTotalsGrid(cs);
cs.initPatientComplianceTable();
}
}
});
},
registerDropDownListener : function(){
var cs = this;
$(cs.data.measureGroup).on("change", function(){
cs.loadMeasureCategories(false);
});
$(cs.data.measureCategory).on("change", function() {
var measureCategory = $(cs.data.measureCategory).val();
$(cs.data.measureBy).val('All');
$("#ln_selMeasureBy").val('All');
cs.enableDisableDetailsDropDown(cs);
if(measureCategory != 'All'){
$('#ln_patient_compliance_measureBy').css('display','');
cs.loadMeasureCategoriesDetails(true, true);
}
cs.updateSelectedCategory(measureCategory);
});
$(cs.data.measureBy).on("change", function () {
var measureBy = $(cs.data.measureBy).val();
cs.data.detailName=measureBy;
cs.populateTotalsGrid(cs);
cs.initPatientComplianceTable();
});
},
reloadActiveFilterStatement: function(cs) {
$.ajax({
'url' : LN.getContextPath() + '/getTemporaryFilterValues ',
'contentType' : 'application/json',
'dataType' : 'html',
'method' : 'post',
'success' : function(data) {
$("#drilldown-container").html("<label class='ln-colorRed'>Drill Down Criteria: </label>" + data);
}
});
},
populateTotalsGrid: function(cs){
var cs = this;
$.ajax({
url: cs.data.patientTotalsUrl,
data: {'dataSetId':$('#ln_topmenu_dataset').attr("datasetkey"),
'selDataSetRangeRiskColumnName': $('#ln_topmenu_dataset_range_id').attr("riskColumnName"),
'selDataSetRangeBegin': $('#ln_topmenu_dataset_range_id').attr("beginDateKey"),
'selDataSetRangeEnd': $('#ln_topmenu_dataset_range_id').attr("endDateKey"),
'selBenchMark' : $('#ln_benchid').attr("data-key"),
'searchDetailName':$(cs.data.measureBy).val(),
'searchDetailDesc': $(cs.data.measureBy + " option:selected").text(),
'searchCompliant': $(cs.data.measureCompliant).val(),
'selMeasureGroup' : $(cs.data.measureGroup).val(),
'selMeasureCategory' : $(cs.data.measureCategory).val(),
'selMeasureCategoryDesc' : $(cs.data.measureCategory + " option:selected").text()
},
method: 'POST',
dataType: 'json',
beforeSend: function(xhr) {
LN.showAjaxIndicator("#patientcompliance_table_totals");
},
success: function(data){
data.providerCount = numeral(data.providerCount).format('0,0');
data.measureCount = numeral(data.categoriesCount).format('0,0');
data.compliantCount = numeral(data.compliantCount).format('0,0');
data.nonCompliantCount = numeral(data.nonCompliantCount).format('0,0');
data.compliantRate = numeral(data.compliantRate).format('0,0');
data.nonCompliantRate = numeral(data.nonCompliantRate).format('0,0');
$("#ln_patientCompliance_totals_providers").html(data.providerCount);
$('#ln_patientCompliance_totals_measuerCategories').html(data.measureCount);
$('#ln_patientCompliance_totals_numberCompliant').html(data.compliantCount);
$('#ln_patientCompliance_totals_numberNonCompliant').html(data.nonCompliantCount);
$('#ln_patientCompliance_top_compliant').html(data.compliantCount);
$('#ln_patientCompliance_top_nonCompliant').html(data.nonCompliantCount);
$('#ln_patientCompliance_top_total').html(numeral(numeral(data.compliantCount) + numeral(data.nonCompliantCount)).format('0,0'));
$('#ln_patientCompliance_totals_percentCompliant').html(data.compliantRate);
$('#ln_patientCompliance_totals_precentNonCompliant').html(data.nonCompliantRate);
cs.reloadActiveFilterStatement(cs);
var dynamicViewingCountHtml = '<span id="filteredProviderCount" style="color: #ff0000;" class="h6-custom-ph">' + numeral(data.providerCount).format(0, 0) + "</span>";
if ($("#filteredProviderCount") != undefined) {
$("#filteredProviderCount").html(dynamicViewingCountHtml);
}
if(data.providerCount == 0){
$(cs.data.zeroProviderCountMsgDivID).modal();
}
},
complete: function(data){
LN.hideAjaxIndicator("#patientcompliance_table_totals");
}
});
},
initPatientComplianceTable:function () {
var cs = this;
var tableid = "patientcompliance_table";
var prevColumnNamesArray=cs.getCurrentSummaryColumnNamesArray(cs.data.summaryTableId);
//$(cs.data.summaryContainer).show();
$(cs.data.summaryTableId).dataTable().fnDestroy();
cs.data.tableSummary = $(cs.data.summaryTableId)
.dataTable(
{
"dom": 'R<"top"f>rt<"bottom"ilp><"clear">',
scrollY: "318px", // adjust my height as needed
scrollX: "true",
scrollCollapse: true,
"bFilter" : false,
//"bAutoWidth": false,
"autoWidth": false,
"iTotalRecords" : "dataTableModel.iTotalRecords",
"iDisplayLength" : 100,
"processing" : false,
"serverSide" : true,
"bLengthChange" : true,
"bResponsive" :false,
"ordering" : true,
"paging": true,
"pagingType": "simple_numbers",
"colReorder": {
//Exclude first two columns from colreorder
"iFixedColumns": 2,
realtime: true
},
"bDeferRender" : true,
"ajax" : {
"cache": false,
"url" : cs.data.baseSummaryUrl,
"type" : "POST",
"dataType" : "json",
"data" : function ( d ) {
LN.debug("data called");
var columnNamesArray=cs.getCurrentSummaryColumnNamesArray(cs.data.summaryTableId);
return $.extend( {}, d, {
"columnNames":columnNamesArray.length>0?columnNamesArray:prevColumnNamesArray,
"dataSetId":$('#ln_topmenu_dataset').attr('datasetkey'),
'selDataSetRangeRiskColumnName': $('#ln_topmenu_dataset_range_id').attr("riskColumnName"),
'selDataSetRangeBegin': $('#ln_topmenu_dataset_range_id').attr("beginDateKey"),
'selDataSetRangeEnd': $('#ln_topmenu_dataset_range_id').attr("endDateKey"),
'selBenchMark' : $('#ln_benchid').attr("data-key"),
'searchPatientName':cs.data.patientName,
'searchCompliant':$(cs.data.measureCompliant).val(),
'searchDetailName':$(cs.data.measureBy).val(),
'selMeasureGroup' : $(cs.data.measureGroup).val(),
'selMeasureCategory' : $(cs.data.measureCategory).val(),
'showNonSpecificView' : cs.showNonSpecificMeasureDetails(cs)
} );
},
'beforeSend': function(xhr) {
LN.debug("beforeSend");
cs.data.prevPatientName = cs.data.patientName;
$('.DTFC_LeftHeadWrapper').css('display','none');
$('.DTFC_LeftBodyWrapper').css('display','none');
xhr.setRequestHeader('X-TransactionID', LN.TRANSACTION_ID);
cs.handleBeforeAjaxLoad(cs.data.summaryTableId);
},
'complete' : function() {
LN.debug("complete");
cs.handleAfterAjaxLoad(cs.data.summaryTableId);
},
"dataFilter" : function(json,type){
var obj = jQuery.parseJSON(json);
cs.enableExport(obj);
return json;
}
},
"order" : cs.getOrderedColumns(cs),
"columnDefs": [
{
"render" : function(data,type,row) {
return '<a href="javascript:void(0);" class="patientProfileDetails" patientName="'+ row[0] +'" patientId="'+ row[14] +'-'+ row[15] +'">'+ data + '</a>';
},
//"width": "10%",
"targets": [0],
"sClass":"ln-text-align-left",
"sortable":true
},
{
//"width": "1%",
"targets": [1,9,14],
"sClass":"ln-text-align-left",
"sortable":true
},
{
//"width": "1%",
"targets" : [11,12,13],
"sortable":true
},
{
"targets" : [10],
"sClass":"ln-text-align-left",
"sortable":true
},
{
"targets" : [2,3,4,5],
"sClass":" ln-non-specific-measure-detail",
"sortable":true
},
{
//"width": "1%",
"targets" : [6,7],
"sClass":"ln-text-align-left ln-specific-measure-detail",
"sortable":true
},
{
//"width": "1%",
//"sClass":"text-left ln-wrap",
"targets" : [8],
"sClass":" ln-specific-measure-detail",
"sortable":true
},
{
"sClass": "ln-hide-column td_subClientID ln-display-none",
"width": "1%",
"targets": [15]
}
],
"fnDrawCallback" : function(oSettings) {
cs.addGotoPageComponentPPM("ln_summary_patient_compliance", "complianceTable_gotobtn","complianceTable_gototxt","complianceTable_gotoerror");
cs.removeSecondarySortingHeaderColor(oSettings,cs.data.summaryTableId,7);
cs.adjustTableBodyHeight(cs.data.summaryTableId);
cs.showHideColumn(cs);
},
"fnInitComplete": function(oSettings, json) {
cs.noDataCleanup(json.iTotalDisplayRecords);
setTimeout(function(){
$('.ln-tableheadertextextended a').on('click',function(e){
e.preventDefault();
return false;
});
},0);
}
}
);
},
showHideColumn : function(cs){
//if($(cs.data.measureBy).prop('disabled') || $(cs.data.measureBy).val()=='All'){
if(cs.showNonSpecificMeasureDetails(cs)){
$('.ln-specific-measure-detail').addClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_6').addClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_7').addClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_8').addClass(cs.data.classhideColumn);
$('.ln-non-specific-measure-detail').removeClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_2').removeClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_3').removeClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_4').removeClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_5').removeClass(cs.data.classhideColumn);
}else{
$('.ln-specific-measure-detail').removeClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_6').removeClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_7').removeClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_8').removeClass(cs.data.classhideColumn);
$('.ln-non-specific-measure-detail').addClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_2').addClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_3').addClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_4').addClass(cs.data.classhideColumn);
$('#ln_patient_grid_col_5').addClass(cs.data.classhideColumn);
}
setTimeout(function(){
cs.data.tableSummary.fnAdjustColumnSizing(false);
cs.handleAfterAjaxLoad(cs.data.summaryTableId);
},0);
},
getOrderedColumns: function(cs){
/*if(!cs.showNonSpecificMeasureDetails(cs)){
return [
[ cs.getPreferencesIndex(cs.data.defaultTablePreferences ,cs.data.defaultSortColumn_summary),"desc" ],
[ cs.getPreferencesIndex(cs.data.defaultTablePreferences ,cs.data.defaultSortColumn_summary_second),"asc" ]
]
}*/
},
showNonSpecificMeasureDetails : function(cs){
return $(cs.data.measureBy).prop('disabled') || $(cs.data.measureBy).val()=='All';
}
});