/*
* 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;
}
} );
}
});