gerd
11/7/2016 - 6:15 PM

createtemplatecondition_procedureCodes.js

/*
* This js file would contain the logic of creating data tables for
* the Procedure Codes panel in Create Template Condition tab.
* Author : sankpa01
* 
 */
jQuery.namespace('lexisnexis.component');
lexisnexis.component.procedureCodes = lexisnexis.component.tableNodes_v3.extend({
	/**
	 * On load initializing
	 */
	ready : function () {
		var cs = this;
		cs.data.initialize = true;
		/**
		 * Create Table for the selected and available Conditions
		 */
		cs.createTables();
		/**
		 * Registers Episode Description - Code and Code Range click events
		 */
		cs.registerProcedureCodesClickEvents();
		/**
		 * Register Data Set Change
		 */
		LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK, cs, cs.onDataSetChange);
		/**
		 * Setting the threshold exceed message
		 */
		cs.data.thresholdExceedMsg = "You have exceeded the maximum number of procedure codes (" + LN.THRESHOLD_LIMIT + ") that you may add to the Selected procedure codes list. Please uncheck {0} name(s) from the Available procedure codes List";
	},
	
	registerProcedureCodesClickEvents: function(cs) {
		$('#code_desc_link_id').on('click', function(e) {
			if ($('#code_desc_div').is(":visible")) {
				return;
			}
			$('#procedureCodeClassDefault').html($(this).text());
			$('#code_range_div').hide();
			$('#code_desc_div').show();
			$('#procedureCodeFrom').val("");
			$('#procedureCodeTo').val("");
			$('#procedureCodeFrom').val("").trigger('keyup');
			e.preventDefault();
		});
		
		$('#code_range_link_id').on('click',function(e) {
			if ($('#code_range_div').is(":visible")) {
				return;
			}
			$('#procedureCodeClassDefault').html($(this).text());
			$('#code_desc_div').hide();
			$('#code_range_div').show();
			$('#searchByProcedureCodes').val("").trigger('keyup');
			e.preventDefault();
		});
	},
	
	/**
	 * Refresh left and right panels
	 */
	onDataSetChange : function(cs){
		var params = JSON.stringify({
			'selDataSet' : $('#ln_topmenu_dataset').attr("dataSetkey")
		});
		
		cs.data.initialize = true;
		$('#availableProcedureCodes').DataTable().draw();
		cs.getProvidersCountForSelProcedureCodes();
	},
	
	/**
	 * Fetches the table response from the service
	 */
	fetchResponse : function ( tableObj ) {
		var response = [];
		var sObj = [];
		var cs = this;
			var ajaxObj = {
			'ajax' : function ( data, callback, settings ) {
				var inputData = data;
				var startIndex = inputData.start ? inputData.start : 0;
				var searchJSON = cs.searchTermsJSON();
				
				var inputString = JSON.stringify(
						{
							"startIndex" : startIndex,
							"searchTerms" : searchJSON,
							"selectedProcedureCodes" : cs.getSelectedProcedureCodesData(),
							"triggerEvent" : cs.getTriggeringEvent()
						});
				$.ajax( {
					'url' : LN.getContextPath() + "/getProcedureCodes/" + $('#ln_topmenu_dataset').attr("dataSetkey"),
					'contentType' : 'application/json',
					'method' : 'POST',
					"dataType" : "json",
					"data" : inputString,
					
					'beforeSend' : function () {
						LN.showAjaxIndicator($( '#availableProcedureCodes' ).parent() );
					},
					'complete' : function () {
						LN.hideAjaxIndicator( $( '#availableProcedureCodes' ).parent() );
					},
					'success' : function ( data ) {
					  cs.data.totalRecordCount = data.totalRecords;
						if ( cs.data.initialize ) {
							// Rendering selected conditions list in the right
							var selectedProcedureCodesTable = $( '#selectedProcedureCodes' ).DataTable();
							selectedProcedureCodesTable.clear().draw();
							selectedProcedureCodesTable.rows.add(data.aaDataRight ).draw();
						}
						callback( {
							draw : inputData.draw,
							data : data.aaDataLeft,
							recordsTotal : data.totalRecords,
							recordsFiltered : data.totalRecords
						} );
						cs.performActionOnSelectallCheckBoxes(data);
					}
				} );
			}
		};
		return ajaxObj;
	},
	
	getSelectedProcedureCodesData: function() {
		var cs = this;
		var selectedProcedureCodes = $( '#selectedProcedureCodes' ).DataTable().data().toArray();
		var tableData1 = SQLike.q( {
			Unpack : selectedProcedureCodes,
			Columns : ['procCode', 'procCode', 'procDescShort', 'grayed']
		} );
		return tableData1.length>0 ? JSON.stringify(tableData1) : "";
	},
	
	getTriggeringEvent:function() {
		var cs = this;
		if(cs.data.moveComplete){
			return "moveEvent";
		}else{
			return "initial";
		}
	},
	
	//Method to update the Provider Count
	getProvidersCountForSelProcedureCodes:function() {
		var cs = this;
		var inputString = JSON.stringify(
				{
					"startIndex" : "0",
					"searchTerms" : "",
					"selectedProcedureCodes" : cs.getSelectedProcedureCodesData(),
					"triggerEvent" : cs.getTriggeringEvent()
				});
		$.ajax( {
			'url' : LN.getContextPath() + "/updateSelectedProcedureCodes",
			'contentType' : 'application/json',
			'method' : 'POST',
			"dataType" : "json",
			"data" : inputString,
			'beforeSend' : function () {
				LN.showAjaxIndicator($( '#availableProcedureCodes' ).parent() );
			},
			'complete' : function () {
				LN.hideAjaxIndicator( $( '#availableProcedureCodes' ).parent() );
			},
			'success' : function ( data ) {
				createTemplateJs.updatePatientCountAjax("/getProvidersCountForProcedureCodes");
				cs.data.moveComplete = false;
			}
		} );
	}
});