gerd
11/8/2016 - 1:45 PM

patientlist.js

/**
 * This object will handle all the Patient List template functionalities
 * @class lexisnexis.component.PatientList
 * @file 
 */

jQuery.namespace('lexisnexis.component');
lexisnexis.component.PatientList = lexisnexis.component.Table
        .extend({
            data : {
            	defaultStartingRow: -1,
            	gridSearchCount: 0,
            	isValidChar : false,
            	exclusionArray: [],
            	searchFieldId : '#ln_patient_grid_search',
            	previousVal: '',
            	summaryTableId : '#ln_summary_patient_list',
                saveId : '#patientlistTable_save',
		        resetId : '#patientlistTable_reset',
                firstTime: true,
                summaryViewName: "Summary View",
                detailsViewName: " View",
                summaryContainer: "#ln_summary_patient_list_container",
                patientTotalsUrl: "getPatientListTotals",
                baseSummaryUrl: "getPatientListSummary",
                baseUrl: "#",                
                classhideColumn:'ln-hide-column',
                summaryGridColumnId: '#ln_patient_grid',
                
                defaultSortColumn_summary : "Total Variance",
                defaultSortColumn_summary_second : "Patient Name",
                
				GET_EXCLUSION_COUNT_METHOD : "getPatientListExclusionCount",
				SEND_EXCLUDED_PATIENTS_METHOD : "excludePatientsFromPatientList",
	            GET_PROVIDER_COUNT_METHOD: "getProviderCountForGroup",
				sessionExclusionsCount : 0,
                delay : (function(){
	    			  var timer = 0;
	    			  return function(callback, ms){
	    				  clearTimeout (timer);
	    				  timer = setTimeout(callback, ms);
	    			  };
	    			})()
                
            },
            /**
			 * @method ready
			 * @description on page load initializer.
			 */
            ready : function() {
                var cs = this;
                //validateSearch(cs, cs.data.searchFieldId);
                cs.data.isProviderProfile = $("#ln_isProfileScreenFlag").val() ;
                
                cs.registerSearch();
                cs.registerButtonActions();
                cs.getExclusionCount();
                cs.getPatientProfileDetails();
				cs.initializeSummaryTable();
				cs.registerSummaryView();
				cs.registerDetailView();
				cs.displayHelpDialog();
				cs.populateTotalsGrid(cs);					
//                cs.fixColumns();
				LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK,
						cs, cs.populateTotalsGrid);
                LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK,
                        cs, cs.reloadGrid);
			    	//$("#ln_patient_grid_search").placeholder();
				$(cs.data.saveId).click(function(e) {
					//cs.saveColumnOrdering();
				});
				
				//cs.getPatientProfileDetails();
				//var patientArray[[]];
				
                if ( cs.data.isProviderProfile === "true" ) {
    	        	LN.getPage().checkPCPProviderProfile();
                	$(".fa-eye").hide();
                	$(".ln-export-icon").hide();                	
                }
				
            },
            
    	    /**
    	     * @method getPatientProfileDetails
    	     * @description Used on patient profile page to get patient details.
    	     */
            getPatientProfileDetails : function(){ 
            	$('.patientProfileDetails').on('click', function(e){
                    if($(this).attr('patientName')){
    	            	 var patientProfileName = $(this).attr('patientName');
    	            	 var patientId = $(this).attr('patientId');
    	            }
    	            e.preventDefault();

    	            var fromScreen = "PL";
    	            
                    if ( $("#ln_isProfileScreenFlag").val() === "true" ) 
                    {
                    	fromScreen = "PPPL";
                    }
    	            
    	            $.ajax({
    					url : LN.getContextPath()+'/updatePatientProfileDetails',
    					data : {
    						"patientName" : patientProfileName,
    						"fromScreen" : fromScreen,
    						"patientId" : patientId  
    					},
    					type : "POST",
    					success : function(data) {
    						location.href = LN.getContextPath()+'/patientprofile';
    					}
    				  });
    	    	});
    	    },
    	    /**
    	     * @method createPatientArrayValue
    	     * @description Creates a patient array value from the arguments passed in.
    	     * @param name {string}
    	     * @param primaryDiagnosis {string}
    	     * @param id {integer}
    	     * @param patientRisk {float}
    	     * @param efficiency {float}
    	     * @param caseMix {float}
    	     * @param patientDisplayID {string}
    	     * @returns key/value pairs
    	     */   
            createPatientArrayValue: function (name, primaryDiagnosis, id, patientRisk, efficiency, caseMix, patientDisplayID)
            {
            	return {name: name, primaryDiagnosis : primaryDiagnosis, id: id, patientRisk : patientRisk, efficiency : efficiency, caseMix : caseMix, patientDisplayID : patientDisplayID};
            },
            
            /**
    	     * @method pushPatientToArray
    	     * @description Adds a patient the the exclusionArray.
    	     * @param cs {object}
    	     * @param name {string}
    	     * @param primaryDiagnosis {string}
    	     * @param id {integer)
    	     * @param patientRisk {float}
    	     * @param efficiency {float}
    	     * @param caseMix {float}
    	     * @param patientDisplayID {string}
            */
            pushPatientToArray: function (cs, name, primaryDiagnosis, id, patientRisk, efficiency, caseMix, patientDisplayID)
            {
                if (!(cs.isPatientInArray(cs,  name, primaryDiagnosis, id, patientRisk, efficiency, caseMix, patientDisplayID)))
            	{
                	cs.data.exclusionArray.push(cs.createPatientArrayValue(name, primaryDiagnosis, id, patientRisk, efficiency, caseMix, patientDisplayID));
            	}

            },
            /**
             * @method removePatientFromArray
             * @description Removes a patient from the exclusion array.
             * @param cs {object}
             * @param name {string}
             * @param primaryDiagnosis {string}
             * @param id {integer}
             * @param patientRisk {float}
    	     * @param patientRisk {float}
    	     * @param efficiency {float}
    	     * @param caseMix {float}
    	     * @param patientDisplayID {string}
             */
            removePatientFromArray: function (cs, name, primaryDiagnosis, id, patientRisk, efficiency, caseMix, patientDisplayID)
            {
        		var arrayLocation = -1;
        		
        		for (var i=0; i < cs.data.exclusionArray.length; i++)
    			{
        			if (	(cs.data.exclusionArray[i].name == name) &&
        					(cs.data.exclusionArray[i].primaryDiagnosis == primaryDiagnosis) &&
        					(cs.data.exclusionArray[i].id == id) &&
        					(cs.data.exclusionArray[i].patientRisk == patientRisk) &&
        					(cs.data.exclusionArray[i].efficiency == efficiency) &&
        					(cs.data.exclusionArray[i].caseMix == caseMix) &&
        					(cs.data.exclusionArray[i].patientDisplayID == patientDisplayID))
    				{
        				arrayLocation = i;
        				break;
    				}
    			}
        		
            	if (arrayLocation >= 0)
        		{
                	cs.data.exclusionArray.splice(arrayLocation, 1);        		
        		}
            },
            /**
             * @method isPatientInArray
             * @description Checks if patient is in exclusion array
             */
            isPatientInArray: function(cs, name, primaryDiagnosis, id, patientRisk, efficiency, caseMix, patientDisplayID)
            {
        		var arrayLocation = -1;
        		
        		for (var i=0; i < cs.data.exclusionArray.length; i++)
    			{
        			if (	(cs.data.exclusionArray[i].name == name) &&
        					(cs.data.exclusionArray[i].primaryDiagnosis == primaryDiagnosis) &&
        					(cs.data.exclusionArray[i].id == id) &&
        					(cs.data.exclusionArray[i].patientRisk == patientRisk) &&
        					(cs.data.exclusionArray[i].efficiency == efficiency) &&
        					(cs.data.exclusionArray[i].caseMix == caseMix) &&
        					(cs.data.exclusionArray[i].patientDisplayID == patientDisplayID))
    				{
        				arrayLocation = i;
        				break;
    				}
    			}
        		
            	if (arrayLocation >= 0)
        		{
                	return true;        		
        		}
            	
            	return false;            	
            },
            /**
             * @method checkedPatient
             * @description Check if patient checkbox is selected or unselected and add or remove them from exclusion array
             */
            checkedPatient: function(cs, cbID, cbChecked, tableID)
            {
            	var rowID = cbID.replace('checkBox_', '');
            	var rowNode = $(tableID).find('tbody tr:eq(' + rowID +')').get(0);
            	
            	var checkBoxName = '#' + cbID;
       			var filter_val = $(checkBoxName).attr('filter_val_1');
       			var filter_array = filter_val.split('|');

                var patientName = "";
                var patientID = "";
                var patientPrimaryDiagnosis = "";
                var patientRisk = "";
                var patientEfficiency = "";
                var patientCaseMix = "";
                var patientMemberKey = "";
            	
                patientName = filter_array[0];
                patientID = filter_array[1];
                patientPrimaryDiagnosis = filter_array[2];
                patientRisk = filter_array[3];
                patientEfficiency = filter_array[4];
                patientCaseMix = filter_array[5];
                patientMemberKey = filter_array[6];

//                patientName = $(rowNode).find(".td_1").html();
//                patientID = $(rowNode).find(".td_2").html();
//                patientPrimaryDiagnosis = $(rowNode).find(".td_5").html();
//                patientRisk = $(rowNode).find(".td_9").text();
//                patientEfficiency = $(rowNode).find(".td_10").text();
//                patientCaseMix = $(rowNode).find(".td_11").text();
//                patientMemberKey = $(rowNode).find(".td_memberKey").text();
                
                if (cbChecked)
            	{
                    //LN.debug("Adding Excluded Data - " +  patientName + " : " + patientID + " : " + patientPrimaryDiagnosis + " : " + patientRisk + " : " + patientEfficiency + " : " + patientCaseMix + " : " + patientMemberKey);
                    cs.pushPatientToArray(cs, patientName, patientPrimaryDiagnosis, patientMemberKey, patientRisk, patientEfficiency, patientCaseMix, patientID);
            	}
                else
            	{
                    //LN.debug("Removing Excluded Data - " + patientName + " : " + patientID + " : " + patientPrimaryDiagnosis + " : " + patientRisk + " : " + patientEfficiency + " : " + patientCaseMix);
                    cs.removePatientFromArray(cs, patientName, patientPrimaryDiagnosis, patientMemberKey, patientRisk, patientEfficiency, patientCaseMix, patientID);            
            	}
                
         		if (cs.data.exclusionArray.length <= 0)
         		{
 					$('#ln_patient_clear_sel').attr('disabled','disabled');            							            		
 					$('#ln_patient_exclude_sel').attr('disabled','disabled');            							            		
         		}
         		else
         		{
         			$('#ln_patient_clear_sel').removeAttr('disabled');
         			$('#ln_patient_exclude_sel').removeAttr('disabled');
         		}                
                
            },
            /**
             * @method setCheckBoxes
             * 
             * 
             */
            setCheckBoxes: function(cs, tableID)
            {
            	var table = $(tableID).DataTable();

                var patientName = "";
                var patientID = "";
                var patientPrimaryDiagnosis = "";
                var patientRisk = "";
                var patientEfficiency = "";
                var patientCaseMix = "";
            	var patientMemberKey = "";
            	
            	var numRows = table.rows(function (idx, data, node) 
            			{
            				var rowIndex = idx;
                			var rowNode = $(tableID).find('tbody tr:eq(' + rowIndex +')').get(0);
                            patientName = $(rowNode).find(".td_1").text();
                            patientID = $(rowNode).find(".td_2").text();
                            patientPrimaryDiagnosis = $(rowNode).find(".td_5").text();
                            patientRisk = $(rowNode).find(".td_9").text();
                            patientEfficiency = $(rowNode).find(".td_10").text();
                            patientCaseMix = $(rowNode).find(".td_11").text();
                            patientMemberKey = $(rowNode).find(".td_memberKey").text();
                			//LN.debug(cs.isPatientInArray(cs, patientName, patientPrimaryDiagnosis, patientID, patientRisk, patientEfficiency, patientCaseMix));
                            
                            if (cs.isPatientInArray(cs, patientName, patientPrimaryDiagnosis, patientMemberKey, patientRisk, patientEfficiency, patientCaseMix, patientID))
                        	{
                            	var checkboxName = '#checkBox_' + idx;
                            	//LN.debug('ID Found: Setting Checkbox for: ' + checkboxName);
                            	$(tableID).find('tbody tr:eq(' + rowIndex +')').find('input[type="checkbox"]').prop('checked',true);
                            	$(checkboxName).prop('checked',true);
                        	}
            			});

            },            
            fixColumns: function() {
            	var cs=this;
            	  var fc=new $.fn.dataTable.FixedColumns( cs.data.table, {
            	        leftColumns: 2
            	    } );
            	  fc.fnUpdate();
            	  
            },
            reloadGrid: function(cs){
            	LN.debug('ReloadGrid called');
          		var currentView=$('#ln_patient_viewBydesc').text();                        	
              	cs.data.tableSummary.fnReloadAjax(cs.data.baseSummaryUrl);
            },

           	displayHelpDialog:function(){
           		$(document).on("click", "#ln_patient_totals_help", function () {
           	        var msg = 'Help Text needs to be added..';
           	        var title = "Patient List Summary (Totals)";  // pass in your title
                    var placement = "left"; // options: left, right, top, bottom
                    contextHelp.popOver("#ln_patient_totals_help",title,msg,placement);
           	        });
           		$(document).on("click", "#ln_patient_summary_help", function () {
           	        var msg = 'Help Text needs to be added..';
           	        var title = "Patient List";  // pass in your title
                    var placement = "left"; // options: left, right, top, bottom
                    contextHelp.popOver("#ln_patient_summary_help",title,msg,placement);
           	        });
           	},

           	displayErrorDialog:function(cs){
       	        var msg = 'You have exceeded the maximum number of patients to be excluded. <br><br> Already excluded: ' + cs.data.sessionExclusionsCount + '<br> Currently selected: ' + cs.data.exclusionArray.length;
       	        var titleText = "Exceeded Exclude Limit (max 250)";  // pass in your title
           		$.growl({title : "",message : msg});           		
           	},

           	displaySuccessDialog:function(cs, numberExcluded){
       	        var msg = '';
       	        msg = numberExcluded + ' patient(s) have been excluded.';
       	        var titleText = "Patients Excluded";  // pass in your title
           		$.growl({title : "",message : msg});           		
           	},
           	
            populateTotalsGrid: function(cs){            	
            	$.ajax({
            		beforeSend: function(){
            			LN.showAjaxIndicator("#ln_patient_summary_table .table");
            		},
                	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")},
                	method: 'POST',
                	dataType: 'json',
                	success: function(data){
                		cs.colorCodeTotalsTable(cs,data);
                		data.savings=formatUtil.formatNumber(parseInt(data.savings));                		                		
                		data.totalCost=formatUtil.formatNumber(parseInt(data.totalCost));
                		data.providerCount = numeral(data.providerCount).format('0,0');
          			    data.specialtyCount = numeral(data.specialtyCount).format('0,0');
          			    data.memberCount = numeral(data.memberCount).format('0,0');
          			    data.episodeCount = numeral(data.episodeCount).format('0,0');
                		var template = $('#ln_patient_summary_table_template').html();
              		    var html = Mustache.to_html(template, data);
              		    $("#ln_patient_summary_table").html(html);
              		    $('#ln_patient_totals_totalCost').html(data.totalCost);
              		    $('#ln_patient_totals_savings').html(data.savings);
                	},
                	complete: function(data){
                		LN.hideAjaxIndicator("#ln_patient_summary_table .table");
                	}
                });
            },
			
            reloadTableDetails: function(cs, viewName){   
            	cs.data.tableSummary.fnReloadAjax(cs.data.baseSummaryUrl);
            },
			
            registerSummaryView: function(){
            	var cs=this;
	        	$("#ln_patient_summary_view").on("click",function(){
            		//JON - Hide/show columns
	        		$("#ln_summary_patient_list_container").show();
	        		$("#ln_patient_viewBydesc").text("Summary View");
	        		$('#ln_patient_grid_col_8').css("display","none");
	        		$('#ln_patient_grid_col_9').css("display","none");
	        		$('#ln_patient_grid_col_10').css("display","none");

	        		$('#ln_patient_grid_col_12').css("display","");
	        		$('#ln_patient_grid_col_13').css("display","");
	        		$('#ln_patient_grid_col_14').css("display","");

                    $('.td_detail_view_only').css("display","none");
                    $('.td_summary_view_only').css("display","");
                	cs.data.tableSummary.fnAdjustColumnSizing(false);
	        		
                	//cs.reloadTableDetails(cs, cs.data.summaryViewName);					
	            });
            },            
            registerDetailView: function(){
            	var cs=this;
            	$("#ln_patient_detail_view").on("click",function(){
            		//JON - Hide/show columns
	        		$("#ln_patient_viewBydesc").text("Detail View");
	        		$('#ln_patient_grid_col_8').css("display","");
	        		$('#ln_patient_grid_col_9').css("display","");
	        		$('#ln_patient_grid_col_10').css("display","");

	        		$('#ln_patient_grid_col_12').css("display","none");
	        		$('#ln_patient_grid_col_13').css("display","none");
	        		$('#ln_patient_grid_col_14').css("display","none");

                    $('.td_detail_view_only').css("display","");
                    $('.td_summary_view_only').css("display","none");
                	cs.data.tableSummary.fnAdjustColumnSizing(false);
	        		//cs.reloadTableDetails(cs, cs.data.summaryViewName);					
            	});
            },

            registerButtonActions: function() {
            	var cs = this;
            	
            	$('#ln_patient_exclude_sel').on('click',function(e){
            		if ((cs.data.exclusionArray.length + cs.data.sessionExclusionsCount) <= 250)
            		{
                		cs.sendExcludedPatients();            			
            		}
            		else
        			{
            			cs.displayErrorDialog(cs);
        			}
            	});
            	
            	$('#ln_patient_clear_sel').on('click',function(e){
            		$("input.activeChkBox:checkbox").attr('checked',false);
					$('#ln_patient_clear_sel').attr('disabled','disabled');            							            		
					$('#ln_patient_exclude_sel').attr('disabled','disabled');
					cs.data.exclusionArray.length = 0;
            	});
            	
                $( "#ln_rightNav_viewBy_menu .dropdown-toggle, #ln_patient_viewBydesc" ).click(function(e){                	
                	e.preventDefault();
                	
                	var viewByGridHidden=$("#ln_patient_viewBydesc").text();

                	if (viewByGridHidden.indexOf('Summary') >= 0)
            		{
						$("#ln_patient_summary_view a").addClass('viewActive');
						$("#ln_patient_detail_view a").removeClass('viewActive');
            		}
                	else
            		{
						$("#ln_patient_detail_view a").addClass('viewActive');
						$("#ln_patient_summary_view a").removeClass('viewActive');            		
            		}
            	});                
            	
            },
            
            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 && cs.data.gridSearchCount==0){
	       		 		if(isValidTextLength(cs,$(cs.data.searchFieldId).val(),2)){	
	       		 			cs.data.gridSearchCount++;
	                     	$(cs.data.summaryTableId).DataTable().ajax.reload(function(data){
	                     		cs.noDataCleanup(data.iTotalDisplayRecords);
	                     	});
	                  	}
	       		 		}
	      			 }, 1000 );
	            });   
            },
            
            colorCodeTableDetails: function(cs,data){
            	var efficiencyLow=parseFloat(cs.data.overallEfficiencyLow);
           		var efficiencyHigh=parseFloat(cs.data.overallEfficiencyHigh);                 	        	 
    	        var dataVal=parseFloat(data);    	        
    	        if(isNaN(dataVal)){
    	        	dataVal=parseFloat("0");
    	        }					
				if(dataVal<efficiencyLow){                        			
           			return '<div class="ln-underutilization_color ln-insetShadowYellow ln-shadowEfficiency ln-goto-patientList ln-grid-color-code" ><span class="fa fa-level-down ln-faRight"></span>'
               	        	 +data+'</div>';
           			
           		}else if(dataVal>efficiencyHigh){                        			
           			return '<div class="ln-overutilized_color ln-insetShadowRed ln-shadowEfficiency ln-goto-patientList ln-grid-color-code" ><span class="fa fa-level-up ln-faRight  td_patientRisk"></span>'
               	        	 +data+'</div>';
           			
           		}else if(dataVal<=efficiencyHigh && dataVal>=efficiencyLow){                        			
           			return '<div class="ln-expected_color ln-insetShadowGreen ln-shadowEfficiency ln-goto-patientList ln-grid-color-code" ><span class="fa fa-check ln-faRight  td_patientRisk"></span>'
               	        	 +data+'</div>';                        			
           		}
            },

            colorCodeTableDetailsNoLink: function(cs,data){
            	var efficiencyLow=parseFloat(cs.data.overallEfficiencyLow);
           		var efficiencyHigh=parseFloat(cs.data.overallEfficiencyHigh);                 	        	 
    	        var dataVal=parseFloat(data);    	        
    	        if(isNaN(dataVal)){
    	        	dataVal=parseFloat("0");
    	        }					
				if(dataVal<efficiencyLow){                        			
           			return '<div class="ln-underutilization_color ln-insetShadowYellow ln-shadowEfficiency ln-grid-color-code" ><span class="fa fa-level-down ln-faRight"></span>'
               	        	 +data+'</div>';
           			
           		}else if(dataVal>efficiencyHigh){                        			
           			return '<div class="ln-overutilized_color ln-insetShadowRed ln-shadowEfficiency ln-grid-color-code" ><span class="fa fa-level-up ln-faRight  td_patientRisk"></span>'
               	        	 +data+'</div>';
           			
           		}else if(dataVal<=efficiencyHigh && dataVal>=efficiencyLow){                        			
           			return '<div class="ln-expected_color ln-insetShadowGreen ln-shadowEfficiency ln-grid-color-code" ><span class="fa fa-check ln-faRight  td_patientRisk"></span>'
               	        	 +data+'</div>';                        			
           		}
            },
            
            getExclusionCount : function() {
				var cs = this;

				$
						.ajax({
							cache : false,
							'url' : LN.getContextPath() + "/" + cs.data.GET_EXCLUSION_COUNT_METHOD,
							'dataType' : 'json',
							'method' : 'post',
							'data' : {},
							'success' : function(data, textStatus, jqXHR) {
								try {
									//LN.debug('Returned Exclusion Count=' + data);
									cs.data.sessionExclusionsCount = data;
									
								} catch (err) {
									// growl the error
									LN.debug("Error in getting patient exclusion count: "
											+ err);
								}
							},
							'beforeSend' : function(xhr) {
								xhr.setRequestHeader('X-TransactionID', LN
										.getPage().getTransactionID());
								cs.data.isInAjaxCall = true;
							},
							'complete' : function() {
								LN.hideOpaqueAjaxIndicator($('.ln-viewpane'));
							},
							'error' : function(jqXHR, textStatus, errorThrown) {
								cs.data.isInAjaxCall = false;
							}
						});
				// End Dynamic update
			},

            sendExcludedPatients : function() {
				var cs = this;
				var jsonString = JSON.stringify(cs.data.exclusionArray);
				//LN.debug("Json String:" + jsonString);
				$
						.ajax({
							cache : false,
							'url' : LN.getContextPath() + "/" + cs.data.SEND_EXCLUDED_PATIENTS_METHOD,
							'dataType' : 'json',
							'method' : 'post',
							'data' : {"jsonData": jsonString},
							'success' : function(data, textStatus, jqXHR) {
								try {
									//LN.debug("Success on exluded patient");
					                cs.getExclusionCount();
								} catch (err) {
									// growl the error
									LN.debug("Error in sending exlcuded patients: "
											+ err);
								}
							},
							'beforeSend' : function(xhr) {
								xhr.setRequestHeader('X-TransactionID', LN
										.getPage().getTransactionID());
								cs.data.isInAjaxCall = true;
							},
							'complete' : function() {
								//LN.debug('Complete Called');
								LN.hideOpaqueAjaxIndicator($('.ln-viewpane'));
								
								var numberExcluded = cs.data.exclusionArray.length;
								//LN.debug('Length=' +numberExcluded);
								
								cs.displaySuccessDialog(cs, numberExcluded);
								//createTemplateJs.updatePatientCountAjax(cs.data.GET_PROVIDER_COUNT_METHOD);
								cs.data.exclusionArray.length = 0;
								LN.getPage().updateProviderCounts(true);
								//cs.populateTotalsGrid(cs);								
			                	//cs.reloadGrid(cs);
							},
							'error' : function(jqXHR, textStatus, errorThrown) {
								//LN.debug('Error Called');
								cs.data.isInAjaxCall = false;
							}
						});
				// End Dynamic update
			},
			/**
			 * @description I initialize the summary dataTable
			 * @method initializeSummaryTable
			 */
            initializeSummaryTable : function() {
                var cs = this;
                LN.debug("initializeSummaryTable called ");
                
                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: "300px",
                            scrollX: "true",
                            scrollCollapse: true,
                            "bFilter" : false,
                            "iTotalRecords" : "dataTableModel.iTotalRecords",
                            "iDisplayLength" : 100,
                            "processing" : false,
                            "serverSide" : true,
                            "searching": 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
                                    	 
                                    } ); },
                                'beforeSend': function(xhr) {
                                    LN.debug("beforeSend");
                                    cs.data.prevPatientName = cs.data.patientName;
					                cs.data.defaultStartingRow = -1;                                    
                                    //LN.debug("id="+ cs.data.defaultStartingRow);
                                	$('.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");
 			                    	if(cs.data.gridSearchCount>0){
 			                    		cs.data.gridSearchCount--;
 			                    		 LN.debug("complete cs.data.gridSearchCount--->"+cs.data.gridSearchCount);
 			                        } 
                                    cs.handleAfterAjaxLoad(cs.data.summaryTableId);
                                    $('.DTFC_LeftHeadWrapper').css('display','block');
                                	$('.DTFC_LeftBodyWrapper').css('display','block');
                                	cs.removeDblScrollbar();

                                	var patientGridDesc=$('#ln_patient_viewBydesc').text();
                                	if (patientGridDesc.indexOf("Detail") >= 0)
                               		{
                                        $('#ln_patient_grid_col_8').css("display","");
                                        $('.td_detail_view_only').css("display","");
                    	        		$('#ln_patient_grid_col_9').css("display","");
                    	        		$('#ln_patient_grid_col_10').css("display","");

                                        $('.td_summary_view_only').css("display","none");
                    	        		$('#ln_patient_grid_col_12').css("display","none");
                    	        		$('#ln_patient_grid_col_13').css("display","none");
                    	        		$('#ln_patient_grid_col_14').css("display","none");                            		
                               		}                                  
                                	else
                            		{
                                        $('#ln_patient_grid_col_8').css("display","none");
                                        $('.td_detail_view_only').css("display","none");
                    	        		$('#ln_patient_grid_col_9').css("display","none");
                    	        		$('#ln_patient_grid_col_10').css("display","none");

                                        $('.td_summary_view_only').css("display","");
                    	        		$('#ln_patient_grid_col_12').css("display","");
                    	        		$('#ln_patient_grid_col_13').css("display","");
                    	        		$('#ln_patient_grid_col_14').css("display","");                            		
                            		}
                                    cs.data.tableSummary.fnAdjustColumnSizing(false);

                                	if (cs.data.exclusionArray.length > 0)
                                	{
				            			$('#ln_patient_clear_sel').removeAttr('disabled');
				            			$('#ln_patient_exclude_sel').removeAttr('disabled');
                                	}
                                    else
                                	{
    									$('#ln_patient_clear_sel').attr('disabled','disabled');
    									$('#ln_patient_exclude_sel').attr('disabled','disabled');                                	
                                	}
					            	$("input.activeChkBox:checkbox").click(function()
			                    	{
					            		if (!$("input.activeChkBox:checkbox").is(":checked"))
					            		{
				        					$('#ln_patient_clear_sel').attr('disabled','disabled');            							            		
				        					$('#ln_patient_exclude_sel').attr('disabled','disabled');            							            		
					            		}
					            		else
					            		{
					            			$('#ln_patient_clear_sel').removeAttr('disabled');
					            			$('#ln_patient_exclude_sel').removeAttr('disabled');
					            		}
										cs.checkedPatient(cs, this.id, this.checked, cs.data.summaryTableId);
			                    	});
					                cs.data.defaultStartingRow = -1;
                                    LN.debug("beforeSend prevPatientName---->" + cs.data.prevPatientName);
                                    LN.debug("beforeSend PatientName---->" + cs.data.patientName);
 			                    	if(cs.data.gridSearchCount==0 && cs.data.prevPatientName!=cs.data.patientName){
 			                    		LN.debug("calling keyup function");
 			                    		$(cs.data.searchFieldId).trigger('keyup');
 			                    	}
                                },
                                "dataFilter" : function(json,type){
                                	var obj = jQuery.parseJSON(json);
                                	cs.enableExport(obj);
                                	return json;
                                }
                            },
                            "order" : [
                                       [ cs.getPreferencesIndex(cs.data.defaultTablePreferences  ,cs.data.defaultSortColumn_summary),"desc" ],
                                       [ cs.getPreferencesIndex(cs.data.defaultTablePreferences  ,cs.data.defaultSortColumn_summary_second),"asc" ]
                                      ],                            
                              "columnDefs": [
                                             {
                                            	 "width":"1%",
                                            	 "targets":[0],                                            	 
                                            	 "render" : function(data,type,row) {
                                                     cs.data.defaultStartingRow++;
                                            		 var newRowInfo = row[1] + "|" 
                             		 				+ row[26] + "|" 
                             		 				+ row[25] + "|" 
                             		 				+ row[2] + "|" 
                             		 				+ row[3] + "|" 
                             		 				+ row[4] + "|" 
                             		 				+ row[27];
                                                     
                                              		 return '<input type="checkbox" class="activeChkBox"' + 'id=checkBox_' + cs.data.defaultStartingRow +' value=' + data + ' filter_val_1="' + newRowInfo + '">';
                                            	 },
                                            	  "sortable":false
                                             },
                                             { 
                                                    "sClass":"ln-text-align-left td_1",
                                                    "render" : function(data,type,row) {
                                                    	
                                                    	return '<a href="javascript:void(0);" class="patientProfileDetails" patientName="'+ row[1] +'" patientId="'+ row[26] +'-'+ row[28] +'" >'+ data + '</a>';
                                                    	  
                                                 	   },
                                                    "width": "1%",
                                                    "targets": [1],
                                                    "sortable":true
                                             },
                                             {
                                                "sClass":"td_9",
  	       										"render" : function(data, type, row) {
  	       											return cs.colorCodeTableDetailsNoLink(cs,data);
  	       										},
  	       										"width": "1%",
  	       										"targets" : [ 2 ]
  	       									},	       									
                                            {
                                                "sClass":"td_10",
  	       										"render" : function(data, type, row) {
  	       											return cs.colorCodeTableDetailsNoLink(cs,data);
  	       										},
  	       										"width": "1%",
  	       										"targets" : [ 3 ]
  	       									},	       									
  	       									{
  	       										"render" : function(data, type, row) {       											
  	       											return cs.colorCodeTableDetailsNoLink(cs,data);       											
  	       										},
  	       										"sClass":"ln-etg-caseMix td_11",
  	       										"width": "1%",
  	       										"targets" : [ 4 ]
  	       									},
  	       									{
  	       										"width": "1%",
  	       										"targets" : [ 5,6,7 ]
  	       									},
	      
	       									{
  	       										"sClass":"td_detail_view_only",
  	       									    "width": "1%",
	       										"targets" : [ 8,9,10 ]	       										
	       									},
	       									{
	       										"render" : function(data, type, row) {       											
	       											return formatUtil.formatNumber(parseInt(data));      											
	       										},
	       										"width": "1%",
	       										"targets" : [ 11 ]	       										
	       									},
	       									{
	       										"render" : function(data, type, row) {       											
	       											return formatUtil.formatNumber(parseInt(data));      											
	       										},
  	       										"sClass":"td_summary_view_only",
  	       									    "width": "1%",
	       										"targets" : [ 12,13 ]	       										
	       									},
	    									{
	    										"render" : function(data) {       											
	    											return formatUtil.formatDecimal(parseFloat(data));      											
	    										},
  	       										"sClass":"td_summary_view_only",
  	       										"width": "1%",
	    										"targets" : 14
	    									},
	       									{
	       										"render" : function(data, type, row) {       											
	       											return formatUtil.formatNumber(parseInt(data));      											
	       										},
	       										"width": "1%",
	       										"targets" : [ 15 ]	       										
	       									},
	       									{
	       										"render" : function(data) {       											
	       											return cs.colorCodeTableDetailsNoLink(cs,data);   											
	       										},
  	       										"sClass":"td_detail_view_only",
  	       										"width": "1%",
	       										"targets" : [ 16, 17, 18, 19, 20 ]	       										
	       									},
                                            { 
	       									    "sClass":"ln-text-align-left",
	       									    "width": "1%",
                                                "targets": [21],
                                                "sortable":true,
                                                "render" : function(data,type,row) {
                                                			if ( cs.data.isProviderProfile === "true")
                                                			{
                                                				return data;                                                				
                                                			}
                                                			else
                                                			{
                                                				return '<a class="ln-PL_PP_PR drilldown" href="javascript:void(0);" filter_val="' + row[29] + '">' + data + '</a>';
                                                			}
//                                                			var fromScreen = "PL";
//        							            			return '<a href="javascript:void(0);" class="providerProfileDetails" fromScreen="'
//        													+ fromScreen
//        													+ '" subClientId="'
//        													+ row[28]
//        													+ '" providerName="' + data
//        													+ '" providerId="'
//        													+ row[22] + '" >' + data
//        													+ '</a>';
                                         	    }
                                            },
                                            { 
                                                "sClass":"ln-text-align-left",
                                                "width": "1%",
                                                "targets": [22],
                                                "sortable":true
                                            }, 
                                            {
                                            	"width": "1%",
                                            	"targets": [23, 24]
                                            	
                                            },
                                            { 
                                              "sClass":"td_5 ln-text-align-left td_primaryDiag",
                                              "width": "1%",
                                              "targets": [25]
                                            },
                                            { 
                                                "sClass":"ln-text-align-left td_2",
                                                "width": "1%",
                                                "targets": [26],
                                                "sortable":true
                                            },
                                            { 
	                                            "sClass": "ln-hide-column td_memberKey",
	                                            "width": "1%",
	                                             "targets": 27   
	                                        },
	                                        { 
	                                            "sClass": "ln-hide-column td_subClientID ln-display-none",
	                                            "width": "1%",
	                                             "targets": [28]   
	                                        },
	                                        { 
	                                            "sClass": "ln-hide-column td_subClientID ln-display-none",
	                                            "width": "1%",
	                                             "targets": [29]   
	                                        }
  	       								],
										"fnDrawCallback" : function(oSettings) {
											cs.addGotoPageComponentPPM("ln_summary_patient_list","patientTable_gotobtn","patientTable_gototxt","patientTable_gotoerror");
											var tableId = cs.data.summaryTableId;
											if (oSettings.aaSorting.length == 1) {
												tableId = 'table.DTFC_Cloned';
											}
					                    	cs.removeSecondarySortingHeaderColor(oSettings,tableId,1);
		                                    cs.setCheckBoxes(cs, cs.data.summaryTableId);
		                                    cs.removeDblScrollbar();
		                                    cs.getPatientProfileDetails();
										},
										"fnInitComplete": function(oSettings, json) {
											cs.noDataCleanup(json.iTotalDisplayRecords);
											setTimeout(function(){
												$('.ln-tableheadertextextended a').on('click',function(e){
												e.preventDefault();
												return false;
											});        	         	    		
										},0);
                            }
                        }    	
                    );
					new $.fn.dataTable.FixedColumns( cs.data.tableSummary ,{
						leftColumns:2
					} );
            }			            
        });