You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4425 lines
247 KiB
4425 lines
247 KiB
<?php |
|
|
|
/** |
|
* forms/eye_mag/js/eye_base.php |
|
* |
|
* JS Functions for eye_mag form(s), built with php features for run-time options and translations |
|
* |
|
* @package OpenEMR |
|
* @link https://www.open-emr.org |
|
* @author Ray Magauran <rmagauran@gmail.com> |
|
* @copyright Copyright (c) 2016- Raymond Magauran <rmagauran@gmail.com> |
|
* @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3 |
|
*/ |
|
|
|
require_once("../../../globals.php"); |
|
require_once("$srcdir/api.inc"); |
|
require_once("$srcdir/forms.inc"); |
|
require_once("$srcdir/patient.inc"); |
|
|
|
$providerID = $_REQUEST['providerID']; |
|
|
|
?> |
|
var prior_field; |
|
var prior_text; |
|
var response = []; |
|
var update_chart; |
|
var obj= []; |
|
var IMP_order = []; |
|
var CODING_items=[]; |
|
var CPT_92060=''; |
|
var IMP_target ="0"; |
|
var detail_reached_exam ='0'; |
|
var detail_reached_HPI ='0'; |
|
var chronic_reached_HPI ='0'; |
|
//Coding Engine Defaults |
|
var Code_group="Eyes";//options are Eyes - anything else and Coding Engine prefers E&M Codes |
|
var digit_2="2"; //Eye Code |
|
var digit_4="1"; //Established |
|
var digit_5="4"; //Level 4 |
|
var visit_code; |
|
var config_byday; |
|
var $root = $('html, body'); |
|
var scroll=''; |
|
var visit_modifier=[]; |
|
var visit_justifier=[]; |
|
if (typeof Code_new_est === 'undefined') { |
|
var Code_new_est = 'New'; |
|
} |
|
var TESTS_built=''; |
|
var doc=[]; |
|
/* |
|
* Functions to add a quick pick selection to the correct fields on the form. |
|
*/ |
|
function fill_QP_2fields(PEZONE, ODOSOU, LOCATION_text, selection, fill_action, Code_to_process) { |
|
var prefix = document.getElementById(PEZONE+'_prefix').value; |
|
if (prefix > '' && prefix !='off') {prefix = prefix + " ";} |
|
if ((prefix =='off')||(LOCATION_text =='')) { prefix=''; } |
|
var saved_prefix = prefix; |
|
if (ODOSOU =="OU") { |
|
fill_QP_field(PEZONE, "OD", LOCATION_text, selection, fill_action, Code_to_process); |
|
fill_QP_field(PEZONE, "OS", LOCATION_text, selection, fill_action, Code_to_process,saved_prefix); |
|
} else if (ODOSOU =="B") { |
|
fill_QP_field(PEZONE, "R", LOCATION_text, selection, fill_action, Code_to_process); |
|
fill_QP_field(PEZONE, "L", LOCATION_text, selection, fill_action, Code_to_process,saved_prefix); |
|
} |
|
} |
|
function fill_QP_field(PEZONE, ODOSOU, LOCATION_text, selection, fill_action, Code_to_process,saved_prefix) { |
|
if (ODOSOU > '') { |
|
var FIELDID = ODOSOU + LOCATION_text; |
|
} else { |
|
var FIELDID = document.getElementById(PEZONE+'_'+ODOSOU).value + LOCATION_text; |
|
} |
|
var bgcolor = $("#" +FIELDID).css("background-color"); |
|
|
|
if (saved_prefix) { |
|
var prefix = saved_prefix; |
|
} else { |
|
var prefix = document.getElementById(PEZONE+'_prefix').value; |
|
} |
|
|
|
var Fvalue = document.getElementById(FIELDID).value; |
|
if (prefix > '' && prefix !='off') {prefix = prefix + " ";} |
|
if (prefix =='off') { prefix=''; } |
|
if (fill_action =="REPLACE") { |
|
$("#" +FIELDID).val(prefix +selection); |
|
$("#" +FIELDID).css("background-color","#F0F8FF"); |
|
} else if (fill_action =="APPEND") { |
|
$("#" +FIELDID).val(Fvalue+selection).css("background-color","#F0F8FF"); |
|
} else { |
|
if (($("#" +FIELDID).css("background-color")=="rgb(245, 245, 220)") || (Fvalue =='')) { |
|
//rgb(245, 245, 220) is beige - the field is untouched |
|
$("#" +FIELDID).val(prefix+selection).css("background-color","#F0F8FF"); |
|
} else if (Fvalue.match(/x$/)) { |
|
$("#" +FIELDID).val(Fvalue+selection).css("background-color","#F0F8FF"); |
|
} else { |
|
if (Fvalue >'') prefix = ", "+prefix; |
|
$("#" +FIELDID).val(Fvalue + prefix +selection).css("background-color","#F0F8FF"); |
|
} |
|
} |
|
submit_form(FIELDID); |
|
$('#'+PEZONE+'_prefix').val('off').trigger('change'); |
|
} |
|
|
|
/* |
|
* This is the core function of the form. |
|
* It submits the data in the background via ajax. |
|
* It is the reason we don't use a submit button. |
|
* It is called often, perhaps too often for some installs because it uses bandwidth. |
|
* It needs to be keenly looked at by developers as it will affect scalability. |
|
* It returns either "Code 400" or positive hits from the clinical data passed through the Coding engine. |
|
* It ensures ownership of the form or provides background updates to READ-ONLY instances of the form. |
|
* It doesn't unlock a form to change ownership/provide write privileges. This is done via the unlock() function. |
|
*/ |
|
function submit_form(action) { |
|
var url = "../../forms/eye_mag/save.php?sub=1&mode=update&id=" + $("#form_id").val(); |
|
if ($("#COPY_SECTION").value == "READONLY") return; |
|
formData = $("form#eye_mag").serialize(); |
|
if (formData =='') return; |
|
$("#menustate").val('0'); |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData //, dataType: "json" |
|
}).done(function(result) { |
|
if (result == 'Code 400') { |
|
code_400(); //Not the owner: read-only mode or take ownership |
|
} else { |
|
// ACTIVE chart. |
|
// Coding engine returns any positive Clinical findings. |
|
//List these findings in the IMP_PLAN Builder |
|
if (action !='1') {populate_form(result);} |
|
} |
|
}); |
|
}; |
|
|
|
/* |
|
* This function alerts the user that they have lost write privileges to another user. |
|
* The form is locked (fields disabled) and they enter the READ-ONLY mode. |
|
* In READ-ONLY mode the form is refreshed every 15 seconds showing changes made by the user with write privileges. |
|
*/ |
|
function code_400() { |
|
//User lost ownership. Just watching now... |
|
//now we should get every variable and update the form, every 15 seconds... |
|
$("#active_flag").html(" READ-ONLY "); |
|
toggle_active_flags("off"); |
|
alert("Another user has taken control of this form.\rEntering READ-ONLY mode."); |
|
update_READONLY(); |
|
this_form_id = $("#form_id").val(); |
|
$("#COPY_SECTION").val("READONLY"); |
|
update_chart = setInterval(function() { |
|
if ($("#chart_status").value == "on") { clearInterval(update_chart); } |
|
update_READONLY(); |
|
}, 15000); |
|
} |
|
|
|
/** |
|
* Convert the DB datetime values into date objects in JS |
|
* |
|
* "You should parse them to get a Date object, for that format I always use the following function: |
|
* http://stackoverflow.com/questions/2627650/why-javascript-gettime-is-not-a-function" |
|
* |
|
*/ |
|
function parseDate(input) { |
|
var parts = input.match(/(\d+)/g); |
|
// new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]]) |
|
return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based |
|
} |
|
/* |
|
* Function to check locked state |
|
*/ |
|
function check_lock(modify) { |
|
var locked = $("#LOCKED").val(); |
|
var locked_by = $("#LOCKEDBY").val(); |
|
if ($("#LOCKEDDATE").val() > '') { |
|
var locked_date = parseDate($("#LOCKEDDATE").val()); |
|
} else{ |
|
var locked_date= new Date('2000-01-01'); |
|
} |
|
var uniqueID = $('#uniqueID').val(); |
|
|
|
var url = "../../forms/eye_mag/save.php?mode=update&id=" + $("#form_id").val(); |
|
clearInterval(update_chart); |
|
//if the form was locked > 1 hour ago, tag we are it - we should auto-get ownership |
|
//if not we have to physically take it. |
|
var now =new Date(); |
|
now_time = now.getTime(); |
|
var interval = locked_date.setTime(locked_date.getTime() + (60*60*1000));//locked timestamp + 1 hour |
|
if (modify=='1') { |
|
if ($("#chart_status").val() == "on") { |
|
unlock(); |
|
toggle_active_flags("off"); |
|
update_chart = setInterval(function() { |
|
if ($("#chart_status").val() == "on") { clearInterval(update_chart);} |
|
update_READONLY(); |
|
}, 15000); |
|
if ($("#chart_status").value == "on") { clearInterval(update_chart); } |
|
} else { |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : { |
|
'acquire_lock' : '1', |
|
'uniqueID' : uniqueID, |
|
'form_id' : $("#form_id").val(), |
|
'locked_by' : $("#LOCKEDBY").val() |
|
} |
|
}).done(function(d) { |
|
$("#LOCKEDBY").val(uniqueID); |
|
toggle_active_flags("on"); |
|
clearInterval(update_chart); |
|
}); |
|
} |
|
} else if (locked =='1' && (interval < now_time)) { //it was locked more than an hour ago, take ownership quietly |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : { |
|
'acquire_lock' : '1', |
|
'uniqueID' : uniqueID, //this user is becoming the new owner |
|
'locked_by' : locked_by, //this is the old owner |
|
'form_id' : $("#form_id").val() |
|
} |
|
}).done(function(d) { |
|
$("#LOCKEDBY").val(uniqueID); |
|
$("#LOCKEDDATE").val(d); |
|
toggle_active_flags("on"); |
|
} |
|
); |
|
} else if (locked =='1' && locked_by >'' && (uniqueID != locked_by)) { |
|
//form is locked by someone else, less than an hour ago... |
|
$("#active_flag").html(" READ-ONLY "); |
|
if (confirm('\tLOCKED by another user:\t\n\tSelect OK to take ownership or\t\n\tCANCEL to enter READ-ONLY mode.\t')) { |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : { |
|
'acquire_lock' : '1', |
|
'uniqueID' : uniqueID, //this user is becoming the new owner |
|
'locked_by' : locked_by, //this is the old owner |
|
'form_id' : $("#form_id").val() |
|
} |
|
}).done(function(d) { |
|
$("#LOCKEDBY").val(uniqueID); |
|
toggle_active_flags("on"); |
|
} |
|
); |
|
} else { |
|
//User selected "Cancel" -- ie. doesn't want ownership. Just watching... |
|
toggle_active_flags("off"); |
|
update_chart = setInterval(function() { |
|
$("#COPY_SECTION").trigger('change'); |
|
if ($("#chart_status").val() == "on") { clearInterval(update_chart);} |
|
update_READONLY(); |
|
}, 15000); |
|
if ($("#chart_status").value == "on") { clearInterval(update_chart); } |
|
|
|
} |
|
} |
|
} |
|
/* |
|
* Function to save a canvas by zone |
|
*/ |
|
function submit_canvas(zone) { |
|
var id_here = document.getElementById('myCanvas_'+zone); |
|
var dataURL = id_here.toDataURL('image/jpeg'); |
|
top.restoreSession(); |
|
$.ajax({ |
|
type: "POST", |
|
url: "../../forms/eye_mag/save.php?canvas="+zone+"&id="+$("#form_id").val(), |
|
data: { |
|
imgBase64 : dataURL, //this contains the canvas + new strokes, the sketch.js foreground |
|
'zone' : zone, |
|
'visit_date' : $("#visit_date").val(), |
|
'encounter' : $("#encounter").val(), |
|
'pid' : $("#pid").val() |
|
} |
|
|
|
}).done(function(o) { |
|
}); |
|
} |
|
/* |
|
* Function to update the user's preferences |
|
*/ |
|
function update_PREFS() { |
|
var checker = $('#PREFS_TOOLTIPS').val(); |
|
if (checker > '') { |
|
var url = "../../forms/eye_mag/save.php"; |
|
var formData = { |
|
'AJAX_PREFS' : "1", |
|
'PREFS_VA' : $('#PREFS_VA').val(), |
|
'PREFS_W' : $('#PREFS_W').val(), |
|
'PREFS_MR' : $('#PREFS_MR').val(), |
|
'PREFS_W_width' : $('#PREFS_W_width').val(), |
|
'PREFS_MR_width' : $('#PREFS_MR_width').val(), |
|
'PREFS_CR' : $('#PREFS_CR').val(), |
|
'PREFS_CTL' : $('#PREFS_CTL').val(), |
|
'PREFS_ADDITIONAL' : $('#PREFS_ADDITIONAL').val(), |
|
'PREFS_VAX' : $('#PREFS_VAX').val(), |
|
'PREFS_RXHX' : $('#PREFS_RXHX').val(), |
|
'PREFS_IOP' : $('#PREFS_IOP').val(), |
|
'PREFS_CLINICAL' : $('#PREFS_CLINICAL').val(), |
|
'PREFS_EXAM' : $('#PREFS_EXAM').val(), |
|
'PREFS_CYL' : $('#PREFS_CYL').val(), |
|
'PREFS_EXT_VIEW' : $('#PREFS_EXT_VIEW').val(), |
|
'PREFS_ANTSEG_VIEW' : $('#PREFS_ANTSEG_VIEW').val(), |
|
'PREFS_RETINA_VIEW' : $('#PREFS_RETINA_VIEW').val(), |
|
'PREFS_NEURO_VIEW' : $('#PREFS_NEURO_VIEW').val(), |
|
'PREFS_ACT_VIEW' : $('#PREFS_ACT_VIEW').val(), |
|
'PREFS_ACT_SHOW' : $('#PREFS_ACT_SHOW').val(), |
|
'PREFS_HPI_RIGHT' : $('#PREFS_HPI_RIGHT').val(), |
|
'PREFS_PMH_RIGHT' : $('#PREFS_PMH_RIGHT').val(), |
|
'PREFS_EXT_RIGHT' : $('#PREFS_EXT_RIGHT').val(), |
|
'PREFS_ANTSEG_RIGHT' : $('#PREFS_ANTSEG_RIGHT').val(), |
|
'PREFS_RETINA_RIGHT' : $('#PREFS_RETINA_RIGHT').val(), |
|
'PREFS_NEURO_RIGHT' : $('#PREFS_NEURO_RIGHT').val(), |
|
'PREFS_PANEL_RIGHT' : $('#PREFS_PANEL_RIGHT').val(), |
|
'PREFS_IMPPLAN_RIGHT' : $('#PREFS_IMPPLAN_DRAW').val(), |
|
'PREFS_KB' : $('#PREFS_KB').val(), |
|
'PREFS_TOOLTIPS' : $('#PREFS_TOOLTIPS').val(), |
|
'setting_tabs_left' : $('#setting_tabs_left').val(), |
|
'setting_HPI' : $('#setting_HPI').val(), |
|
'setting_PMH' : $('#setting_PMH').val(), |
|
'setting_EXT' : $('#setting_EXT').val(), |
|
'setting_ANTSEG' : $('#setting_ANTSEG').val(), |
|
'setting_POSTSEG' : $('#setting_POSTSEG').val(), |
|
'setting_NEURO' : $('#setting_NEURO').val(), |
|
'setting_IMPPLAN' : $('#setting_IMPPLAN').val(), |
|
}; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData |
|
}); |
|
} |
|
} |
|
/* |
|
* Function to unlock the form - remove temporary lock at DB level. |
|
*/ |
|
function unlock() { |
|
var url = "../../forms/eye_mag/save.php?mode=update&id=" + $("#form_id").val(); |
|
var formData = { |
|
'action' : "unlock", |
|
'unlock' : "1", |
|
'encounter' : $('#encounter').val(), |
|
'pid' : $('#pid').val(), |
|
'LOCKEDBY' : $('#LOCKEDBY').val(), |
|
'form_id' : $("#form_id").val() |
|
}; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData }).done(function(o) { |
|
$("#warning").removeClass("nodisplay"); |
|
$('#LOCKEDBY').val(''); |
|
$('#chart_status').val('off'); |
|
}); |
|
} |
|
/* |
|
* Function to fax this visit report to someone. |
|
*/ |
|
function create_task(to_id,task,to_type) { |
|
$(this).addClass('fa-spin'); |
|
var url = "../../forms/eye_mag/taskman.php"; |
|
var formData = { |
|
'action' : "make_task", |
|
'from_id' : <?php echo js_escape($providerID); ?>, |
|
'to_id' : to_id, |
|
'pid' : $('#pid').val(), |
|
'doc_type' : task, |
|
'enc' : $('#encounter').val(), |
|
'form_id' : $('#form_id').val() |
|
}; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData |
|
}).done(function(result) { |
|
//OPTIONS to consider: we could return a status code from the server. |
|
//maybe 1 = no doc, 2= doc made and queued, 3= sent |
|
//maybe this is a checkbox. Check to create the task, uncheck to delete it. |
|
//if the task is completed, checkbox is checked and disabled? |
|
//return doc_id and display it in html for id='status_'+task+'_'+to_type |
|
obj = JSON.parse(result); |
|
if (obj.DOC_link) { |
|
$('#status_'+task+'_'+to_type).html(obj.DOC_link); |
|
} |
|
if (obj.comments) alert(obj.comments); |
|
//maybe change an icon to sent? Think. |
|
}); |
|
} |
|
|
|
|
|
/* |
|
* START OF PMSFH FUNCTIONS |
|
*/ |
|
function alter_issue2(issue_number,issue_type,index) { |
|
if (!obj.PMSFH) { refresh_page(); } |
|
if (typeof obj.PMSFH == "undefined") { submit_form(); } |
|
var here = obj.PMSFH[issue_type][index]; |
|
window.frames[0].frameElement.contentWindow.newtype(issue_type); |
|
if (issue_type !='SOCH' && issue_type !='FH' && issue_type !='ROS') { |
|
$('iframe').contents().find('#delete_button').removeClass('nodisplay'); |
|
} else { |
|
$('iframe').contents().find('#delete_button').addClass('nodisplay'); |
|
} |
|
$('iframe').contents().find('#issue').val(issue_number); |
|
if (typeof here !== "undefined") { |
|
$('iframe').contents().find('#form_title' ).val(here.title); |
|
$('iframe').contents().find('#form_diagnosis' ).val(here.diagnosis); |
|
$('iframe').contents().find('#form_begin' ).val(here.begdate); |
|
$('iframe').contents().find('#form_end' ).val(here.enddate); |
|
$('iframe').contents().find('#form_reaction' ).val(here.reaction); |
|
$('iframe').contents().find('#form_referredby' ).val(here.referredby); |
|
$('iframe').contents().find('#form_classification' ).val(here.classification); |
|
$('iframe').contents().find('#form_occur' ).val(here.occurrence); |
|
$('iframe').contents().find('#form_comments' ).val(here.comments); |
|
$('iframe').contents().find('#form_outcome' ).val(here.outcome); |
|
$('iframe').contents().find('#form_destination' ).val(here.destination); |
|
if (here.row_subtype =='eye') { |
|
$('iframe').contents().find('#form_eye_subtype' ).prop("checked","checked"); |
|
} else { |
|
$('iframe').contents().find('#form_eye_subtype' ).prop("checked",false); |
|
} |
|
if (here.enddate > '') { |
|
$('iframe').contents().find('#form_active' ).prop("checked",true); |
|
$('iframe').contents().find('#delete_button').addClass("nodisplay"); |
|
} else { |
|
$('iframe').contents().find('#form_active' ).prop("checked",false); |
|
} |
|
} |
|
var location = $("#PMH_left").offset().top -55; |
|
$root.animate({scrollTop: location }, "slow"); |
|
} |
|
function showArray(arr) { |
|
var tS = new String(); |
|
for (var iI in arr) { |
|
tS += "Index "+iI+", Type "+(typeof arr[iI])+", Value "+arr[iI]+"\n"; |
|
} |
|
return tS; |
|
} |
|
|
|
/* |
|
* Function to delete an issue from server via ajax |
|
* Ajax returns json obj.PMSFH |
|
* Refresh displays (right_panel and QP_PMH panel) |
|
*/ |
|
function delete_issue2(issue_number,PMSFH_type) { |
|
$('#form#theform issue').val(issue_number); |
|
$('iframe').contents().find('#issue').val(issue_number); |
|
$('form#theform form_type'); |
|
|
|
var url = '../../forms/eye_mag/a_issue.php'; |
|
var formData = { |
|
'a_issue' : issue_number, |
|
'deletion' : '1', |
|
'PMSFH' : '1' |
|
}; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData, |
|
success:(function(result) { |
|
populate_PMSFH(result); |
|
}) |
|
}); |
|
show_QP(); |
|
return false; |
|
} |
|
|
|
/* |
|
* Function to save the PMSFH array to the server. |
|
* This can be removed in the future - save for now |
|
*/ |
|
function submit_PMSFH() { |
|
var url = "../../forms/eye_mag/save.php?PMSFH_save=1&mode=update"; |
|
formData = $("[id^=f]").serialize(); |
|
var f = document.forms[0]; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData |
|
}).done(function(result){ |
|
f.form_title.value = ''; |
|
f.form_diagnosis.value = ''; |
|
f.form_begin.value =''; |
|
f.form_end.value =''; |
|
f.form_referredby.value =''; |
|
f.form_reaction.value =''; |
|
f.form_classification.value =''; |
|
f.form_occur.value=''; |
|
f.form_comments.value =''; |
|
f.form_outcome.value =''; |
|
f.form_destination.value =''; |
|
f.issue.value =''; |
|
populate_form(result); |
|
});} |
|
|
|
/* |
|
* END OF PMSFH FUNCTIONS |
|
*/ |
|
|
|
/* |
|
* Function to refresh the issues, the panels and the Impression/coding areas. |
|
*/ |
|
function refresh_page() { |
|
var url = '../../forms/eye_mag/view.php?display=PMSFH'; |
|
var formData = { |
|
'action' : "refresh", |
|
'id' : $('#form_id').val(), |
|
'encounter' : $('#encounter').val(), |
|
'pid' : $('#pid').val(), |
|
'refresh' : 'page' |
|
}; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData, |
|
success:(function(result) { |
|
populate_form(result); |
|
}) |
|
}); |
|
//Make the height of the panels equal if they grow really large |
|
if ($('#PMH_right').height() > $('#PMH_left').height()) { |
|
$('#PMH_left').height($('#PMH_right').height()); |
|
} else { $('#PMH_left').height($('#PMH_right').height()); } |
|
return false; |
|
} |
|
|
|
/* |
|
* Function to refresh the Glaucoma Flow Sheet. |
|
*/ |
|
function refresh_GFS() { |
|
if (typeof config_byday == "undefined") { return; } |
|
|
|
var indexToUpdate = '0'; |
|
$.each(config_byday.data.labels, function(key,value) { |
|
if (value == visit_date) { |
|
indexToUpdate = key; |
|
} |
|
}); |
|
|
|
//var indexToUpdate = config_byday.data.labels.length-1; |
|
var ODIOP=0; |
|
var OSIOP=0; |
|
if ( $('#ODIOPAP').val()) { |
|
ODIOP = $('#ODIOPAP').val(); |
|
} else if ( $('#ODIOPTPN').val()) { |
|
ODIOP = $('#ODIOPTPN').val(); |
|
} |
|
|
|
if ( $('#OSIOPAP').val() >'0') { |
|
OSIOP = $('#OSIOPAP').val(); |
|
} else if ( $('#OSIOPTPN').val() > '0') { |
|
OSIOP = $('#OSIOPTPN').val(); |
|
} |
|
|
|
config_byday.data.datasets[0].data[indexToUpdate] = $('#ODIOPTARGET').val(); |
|
config_byday.data.datasets[1].data[indexToUpdate] = ODIOP; |
|
config_byday.data.datasets[2].data[indexToUpdate] = OSIOP; |
|
myLine.update(); |
|
|
|
var time = $('#IOPTIME').val(); |
|
times = time.match(/^(\d{1,2}):(\d{2})/); |
|
if (times[1] < 10) times[1] = "0"+''+times[1]; |
|
time = times[1]+':'+times[2]; |
|
var indexToUpdate2 = '0'; |
|
$.each(config_byhour.data.labels, function(key,value) { |
|
if (value == time) { |
|
indexToUpdate2 = key; |
|
} |
|
}); |
|
config_byhour.data.datasets[0].data[indexToUpdate2] = ODIOP; |
|
config_byhour.data.datasets[1].data[indexToUpdate2] = OSIOP; |
|
myLine2.update(); |
|
// Update one of the points in the second dataset |
|
// myLine.data.datasets[1].data[indexToUpdate].val($('#ODIOPAP').val()); |
|
//alert(config_byday.data.datasets[1].data[indexToUpdate].val()+' is ending _bydat val'); |
|
//myLine.update(); |
|
//ctx2.update(); |
|
return; |
|
/* |
|
this should refresh locally and not go back to the server |
|
the only things that would trigger a refresh are |
|
a change in IOP |
|
change in IOPTARGET |
|
change in Eye Meds |
|
change in GONIO fields |
|
additional tests (VF/OCT) would not affect this in its live format |
|
|
|
*/ |
|
} |
|
|
|
function populate_GFS(result) { |
|
$("#LayerVision_IOP").html(result); |
|
} |
|
|
|
/* |
|
* Server returns a json encoding object: obj to update the page |
|
* Here we refresh the PMSFH display panels, |
|
* Rebuild the Impression/Plan Builder DX lists, |
|
* the Impression Plan area |
|
* and the CHRONIC fields. |
|
*/ |
|
function populate_form(result) { |
|
obj = JSON.parse(result); |
|
$("#QP_PMH").html(obj.PMH_panel); |
|
if ($('#PMH_right').height() > $('#PMH_left').height()) { |
|
$('#PMH_left').height($('#PMH_right').height()); |
|
} else { $('#PMH_left').height($('#PMH_right').height()); } |
|
$("#right_panel_refresh").html(obj.right_panel); |
|
build_IMPPLAN(obj.IMPPLAN_items); |
|
build_Chronics(obj); |
|
build_DX_list(obj); //build the list of DXs to show in the Impression/Plan Builder |
|
} |
|
/* |
|
* Function to auto-fill CHRONIC fields |
|
* To reach a detailed E&M level of documentation the chart |
|
* may comment on the status of 3 or more CHRONIC/Inactive problems. |
|
* The user can type them into the CHRONIC fields manually, or |
|
* we can do it programatically if the user does the following: |
|
* 1. documenting a PMH diagnosis in the PMSFH area |
|
* 2. listing it as "Chronic" |
|
* 3. making a comment about it |
|
* With these three steps completed, this build_CHRONIC function displays the changes |
|
* in the CHRONIC1-3 textareas, if not already filled in, for today's visit. |
|
* On subsequent visits, the CHRONIC1-3 fields are blank, unless the above steps |
|
* were performed previously, then they are filled in automatically on loading of the new form. |
|
*/ |
|
function build_Chronics(obj) { |
|
if (typeof obj.PMSFH === "undefined") return; |
|
var CHRONICS = obj.PMSFH['CHRONIC']; |
|
var chronic_value; |
|
var local_comment; |
|
var here_already; |
|
$.each(CHRONICS, function(key, value) { |
|
local_comment = CHRONICS[key].title+" "+CHRONICS[key].diagnosis+"\n"+CHRONICS[key].comments; |
|
here_already ='0'; |
|
for (i=1; i < 4; i++) { |
|
chronic_value = $('#CHRONIC'+i).val(); |
|
if (chronic_value == local_comment) { |
|
here_already='1'; //this is here, move to next CHRONICS |
|
break; |
|
} |
|
} |
|
if (here_already !='1') { |
|
for (i=1; i < 4; i++) { |
|
chronic_value = $('#CHRONIC'+i).val(); |
|
if (chronic_value == '') { //if the CHRONIC1-3 field is empty, fill it. |
|
$('textarea#CHRONIC'+i).val(local_comment); |
|
break; |
|
} |
|
} |
|
} |
|
}); |
|
return false; |
|
} |
|
/* |
|
* Function to autocreate a PDF of this form as a document linked to this encounter. |
|
* Each time it is runs it updates by replacing the encounter's PDF. |
|
* This used to be fired often, but it is a server resource beast. |
|
* Use it sparingly, and intentionally only. |
|
* Currently only invoked via the bootstrap menu: Menu->File->Print/Store PDF |
|
*/ |
|
function store_PDF() { |
|
var url = "../../forms/eye_mag/save.php?mode=update"; |
|
var formData = { |
|
'action' : 'store_PDF', |
|
'patient_id' : $('#pid').val(), |
|
'pdf' : '1', |
|
'printable' : '1', |
|
'form_folder' : $('#form_folder').val(), |
|
'form_id' : $('#form_id').val(), |
|
'encounter' : $('#encounter').val(), |
|
'uniqueID' : $('#uniqueID').val() |
|
}; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData |
|
}); |
|
} |
|
|
|
/* START Functions related to form VIEW */ |
|
/* |
|
* Function to blow out the form and display the right side of every section. |
|
*/ |
|
function show_right() { |
|
$("#HPI_1").removeClass("size50").addClass("size100"); |
|
$("#PMH_1").removeClass("size50").addClass("size100"); |
|
$("#EXT_1").removeClass("size50").addClass("size100"); |
|
$("#ANTSEG_1").removeClass("size50").addClass("size100"); |
|
$("#NEURO_1").removeClass("size50").addClass("size100"); |
|
$("#POSTSEG_1").removeClass("size50").addClass("size100"); |
|
$("#IMPPLAN_1").removeClass("size50").addClass("size100"); |
|
$("#HPI_right").removeClass('nodisplay'); |
|
$("#PMH_right").removeClass('nodisplay'); |
|
$("#EXT_right").removeClass('nodisplay'); |
|
$("#ANTSEG_right").removeClass('nodisplay'); |
|
$("#NEURO_right").removeClass('nodisplay'); |
|
$("#RETINA_right").removeClass('nodisplay'); |
|
$("#IMPPLAN_right").removeClass('nodisplay'); |
|
$("#PMH_1").addClass("clear_both"); |
|
$("#ANTSEG_1").addClass("clear_both"); |
|
$("#POSTSEG_1").addClass("clear_both"); |
|
$("#NEURO_1").addClass("clear_both"); |
|
$("#IMPPLAN_1").addClass("clear_both"); |
|
hide_PRIORS(); |
|
} |
|
/* |
|
* Function to implode the form and hide the right side of every section. |
|
*/ |
|
function hide_right() { |
|
$("#HPI_1").removeClass("size100").addClass("size50"); |
|
$("#PMH_1").removeClass("size100").addClass("size50"); |
|
$("#EXT_1").removeClass("size100").addClass("size50"); |
|
$("#ANTSEG_1").removeClass("size100").addClass("size50"); |
|
$("#NEURO_1").removeClass("size100").addClass("size50"); |
|
$("#RETINA_1").removeClass("size100").addClass("size50"); |
|
$("#IMPPLAN_1").removeClass("size100").addClass("size50"); |
|
$("#HPI_right").addClass('nodisplay'); |
|
$("#PMH_right").addClass('nodisplay'); |
|
$("#EXT_right").addClass('nodisplay'); |
|
$("#ANTSEG_right").addClass('nodisplay'); |
|
$("#NEURO_right").addClass('nodisplay'); |
|
$("#RETINA_right").addClass('nodisplay'); |
|
$("#PMH_1").removeClass("clear_both"); |
|
$("#ANTSEG_1").removeClass("clear_both"); |
|
$("#POSTSEG_1").removeClass("clear_both"); |
|
$("#NEURO_1").removeClass("clear_both"); |
|
update_PREFS(); |
|
} |
|
/* |
|
* Function to explode the form and show the left side of every section. |
|
*/ |
|
function show_left() { |
|
$("#HPI_1").removeClass("size100").addClass("size50"); |
|
$("#PMH_1").removeClass("size100").addClass("size50"); |
|
$("#EXT_1").removeClass("size100").addClass("size50"); |
|
$("#ANTSEG_1").removeClass("size100").addClass("size50"); |
|
$("#NEURO_1").removeClass("size100").addClass("size50"); |
|
$("#POSTSEG_1").removeClass("size100").addClass("size50"); |
|
$("#IMPPLAN_1").removeClass("size100").addClass("size50"); |
|
$("#HPI_left").removeClass('nodisplay'); |
|
$("#PMH_left").removeClass('nodisplay'); |
|
$("#EXT_left").removeClass('nodisplay'); |
|
$("#ANTSEG_left").removeClass('nodisplay'); |
|
$("#RETINA_left").removeClass('nodisplay'); |
|
$("#NEURO_left").removeClass('nodisplay'); |
|
$("#IMPPLAN_left").removeClass('nodisplay'); |
|
$("[name$='_left']").removeClass('nodisplay'); |
|
} |
|
/* |
|
* Function to implode the form and hide the left side of every section. |
|
*/ |
|
function hide_left() { |
|
$("#HPI_1").removeClass("size100").addClass("size50"); |
|
$("#PMH_1").removeClass("size100").addClass("size50"); |
|
$("#EXT_1").removeClass("size100").addClass("size50"); |
|
$("#ANTSEG_1").removeClass("size100").addClass("size50"); |
|
$("#NEURO_1").removeClass("size100").addClass("size50"); |
|
$("#POSTSEG_1").removeClass("size100").addClass("size50"); |
|
$("#IMPPLAN_1").removeClass("size100").addClass("size50"); |
|
$("#HPI_left").addClass('nodisplay'); |
|
$("#PMH_left").addClass('nodisplay'); |
|
$("#EXT_left").addClass('nodisplay'); |
|
$("#ANTSEG_left").addClass('nodisplay'); |
|
$("#RETINA_left").addClass('nodisplay'); |
|
$("#NEURO_left").addClass('nodisplay'); |
|
$("#IMPPLAN_left").addClass('nodisplay'); |
|
$("[name $='_left']").addClass('nodisplay'); |
|
} |
|
/* |
|
* Function to display only the DRAW panels of every section. |
|
* The technical section, between HPI and Clinical section is still visible. |
|
*/ |
|
function show_DRAW() { |
|
hide_QP(); |
|
hide_TEXT(); |
|
hide_PRIORS(); |
|
hide_left(); |
|
hide_KB(); |
|
show_right(); |
|
|
|
$("#HPI_right").addClass('canvas'); |
|
$("#PMH_right").addClass('canvas'); |
|
$("#EXT_right").addClass('canvas'); |
|
$("#ANTSEG_right").addClass('canvas'); |
|
$("#RETINA_right").addClass('canvas'); |
|
$("#NEURO_right").addClass('canvas'); |
|
$("#IMPPLAN_right").addClass('canvas'); |
|
$(".Draw_class").removeClass('nodisplay'); |
|
if ($("#PREFS_CLINICAL").val() !='1') { |
|
$("#PREFS_CLINICAL").val('1'); |
|
$("#PREFS_EXAM").val('DRAW'); |
|
} |
|
update_PREFS(); |
|
} |
|
/* |
|
* Function to display only the TEXT panels in every section. |
|
*/ |
|
function show_TEXT() { |
|
$(".TEXT_class").removeClass('nodisplay'); |
|
show_left(); |
|
hide_right(); //this hides the right half |
|
hide_QP(); |
|
hide_DRAW(); |
|
hide_PRIORS(); |
|
if ($("#PREFS_CLINICAL").val() !='1') { |
|
// we want to show text_only which are found on left half |
|
$("#PREFS_CLINICAL").val('1'); |
|
} |
|
$("#PREFS_EXAM").val('TEXT'); |
|
$("#IMPPLAN_right").addClass('canvas').removeClass('nodisplay'); |
|
$("#QP_IMPPLAN").removeClass('nodisplay'); |
|
$("#DRAW_"+zone).addClass('nodisplay'); |
|
$("#IMPPLAN_left").removeClass('nodisplay'); |
|
$("#PREFS_IMPPLAN_RIGHT").val('QP'); |
|
update_PREFS(); |
|
} |
|
/* |
|
* Function to display the PRIORS panels in every right section. |
|
*/ |
|
function show_PRIORS() { |
|
$("#NEURO_sections").removeClass('nodisplay'); |
|
hide_DRAW(); |
|
$("#EXT_right").addClass("PRIORS_color"); |
|
show_TEXT(); |
|
show_right(); |
|
hide_QP(); |
|
$("#QP_HPI").removeClass('nodisplay'); |
|
$("#QP_PMH").removeClass('nodisplay'); |
|
$("#HPI_right").addClass('canvas'); |
|
$("#PMH_right").addClass('canvas'); |
|
$("#IMPPLAN_right").addClass('canvas'); |
|
$("#EXT_right").addClass('canvas'); |
|
$("#ANTSEG_right").addClass('canvas'); |
|
$("#RETINA_right").addClass('canvas'); |
|
$("#NEURO_right").addClass('canvas'); |
|
$(".PRIORS_class").removeClass('nodisplay'); |
|
if ($("#PREFS_CLINICAL").val() !='1') { |
|
// we want to show text_only which are found on left half now that PRIORS are visible. |
|
$("#PREFS_CLINICAL").val('1'); |
|
} |
|
$("#PREFS_EXAM").val('PRIORS'); |
|
update_PREFS(); |
|
} |
|
/* |
|
* Function to show the Quick Picks panel on the right side of every section. |
|
*/ |
|
function show_QP() { |
|
hide_DRAW(); |
|
hide_PRIORS(); |
|
hide_KB(); |
|
show_TEXT(); |
|
show_right(); |
|
show_left(); |
|
$("#HPI_right").addClass('canvas'); |
|
$("#PMH_right").addClass('canvas'); |
|
$("#EXT_right").addClass('canvas'); |
|
$("#ANTSEG_right").addClass('canvas'); |
|
$("#RETINA_right").addClass('canvas'); |
|
$("#NEURO_right").addClass('canvas'); |
|
$("#IMPPLAN_right").addClass('canvas'); |
|
$(".QP_class").removeClass('nodisplay'); |
|
$(".QP_class2").removeClass('nodisplay'); |
|
$("#PREFS_EXAM").val('QP'); |
|
update_PREFS(); |
|
} |
|
/* |
|
* Function to display only one DRAW panel of one section. |
|
*/ |
|
function show_DRAW_section(zone) { |
|
$("#QP_"+zone).addClass('nodisplay'); |
|
$("#"+zone+"_left").removeClass('nodisplay'); |
|
$("#"+zone+"_right").addClass('canvas').removeClass('nodisplay'); |
|
$("#Draw_"+zone).addClass('canvas'); |
|
$("#Draw_"+zone).removeClass('nodisplay'); |
|
$("#PREFS_"+zone+"_DRAW").val(1); |
|
update_PREFS(); |
|
} |
|
/* |
|
* Function to display only one PRIORS panel of one section. |
|
*/ |
|
function show_PRIORS_section(section,newValue) { |
|
var url = "../../forms/eye_mag/save.php?mode=retrieve"; |
|
|
|
var formData = { |
|
'PRIORS_query' : "1", |
|
'zone' : section, |
|
'id_to_show' : newValue, |
|
'pid' : $('#pid').val(), |
|
'orig_id' : $('#form_id').val() |
|
} |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : formData, |
|
success : function(result) { |
|
$("#PRIORS_" + section + "_left_text").html(result); |
|
} |
|
}); |
|
} |
|
/** |
|
* Function to display a canvas/drawing from a prior visit. |
|
*/ |
|
|
|
function show_PRIOR_CANVAS_section(section, newValue) { |
|
var pid = $('#pid').val(); |
|
var zone = section; |
|
var result = base+'/controller.php?document&retrieve&patient_id='+pid+'&document_id='+newValue+'&as_file=false'; |
|
var cp_forward = '<button onclick="replace_CANVAS(\''+zone+'\',\''+result+'\'); return false;" id="Replace_Canvas_ANTSEG" class="ui-button ui-corner-all ui-widget"><?php echo xlt('Use this image'); ?></button>'; |
|
var filler = "<div class='tools text-info'><?php echo xlt('Previous Encounter Drawings'); ?>: "+cp_forward+"</div><div class='borderShadow'><img src='"+result+"' alt='<?php echo xla("Loading prior image");?>...'></div>"; |
|
|
|
$("#"+zone+"_canvas").addClass('nodisplay'); |
|
$("#"+zone+"_olddrawing").html(filler); |
|
$("#"+zone+"_olddrawing").removeClass('nodisplay'); |
|
} |
|
|
|
function replace_CANVAS(zone, url) { |
|
$("#url_"+zone).val(url); |
|
cReplace(zone); |
|
$("#SELECT_CANVAS_"+zone).val('current'); |
|
$("#"+zone+"_canvas").removeClass('nodisplay'); |
|
$("#"+zone+"_olddrawing").addClass('nodisplay'); |
|
} |
|
/** |
|
* Function to show one of the Quick Picks section on the right side of its section. |
|
*/ |
|
function show_QP_section(zone,scroll) { |
|
$("#"+zone+"_right").addClass('canvas').removeClass('nodisplay'); |
|
$("#QP_"+zone).removeClass('nodisplay'); |
|
$("#DRAW_"+zone).addClass('nodisplay'); |
|
$("#"+zone+"_left").removeClass('nodisplay'); |
|
$("#PREFS_"+zone+"_RIGHT").val('QP'); |
|
if (!scroll) { |
|
scroll = zone; |
|
scrollTo(zone+"_left"); |
|
} |
|
} |
|
/* |
|
* Function to hide all the DRAW panels of every section. |
|
*/ |
|
function hide_DRAW() { |
|
$(".Draw_class").addClass('nodisplay'); |
|
hide_right(); |
|
$("#LayerTechnical_sections").removeClass('nodisplay'); |
|
$("#REFRACTION_sections").removeClass('nodisplay'); |
|
$("#PMH_sections").removeClass('nodisplay'); |
|
$("#HPI_right").addClass('nodisplay'); |
|
$("#HPI_right").removeClass('canvas'); |
|
$("#EXT_right").removeClass('canvas'); |
|
$("#RETINA_right").removeClass('canvas'); |
|
$("#ANTSEG_right").removeClass('canvas'); |
|
} |
|
/* |
|
* Function to hide all the Quick Pick panels of every section. |
|
*/ |
|
function hide_QP() { |
|
$(".QP_class").addClass('nodisplay'); |
|
$(".QP_class2").addClass('nodisplay'); |
|
$("[name$='_right']").removeClass('canvas'); |
|
} |
|
/* |
|
* Function to hide all the TEXT panels of every section. |
|
*/ |
|
function hide_TEXT() { |
|
$(".TEXT_class").addClass('nodisplay'); |
|
} |
|
/* |
|
* Function to hide all the PIORS panels of every section. |
|
*/ |
|
function hide_PRIORS() { |
|
$("#EXT_right").removeClass("PRIORS_color"); |
|
$("#PRIORS_EXT_left_text").addClass('nodisplay'); |
|
$("#PRIORS_ANTSEG_left_text").addClass('nodisplay'); |
|
$("#PRIORS_RETINA_left_text").addClass('nodisplay'); |
|
$("#PRIORS_NEURO_left_text").addClass('nodisplay'); |
|
$(".PRIORS_class").addClass('nodisplay'); |
|
} |
|
/* |
|
* Function to hide Shorthand/Keyboard Entry panel. |
|
*/ |
|
function hide_KB() { |
|
$('.kb').addClass('nodisplay'); |
|
$('.kb_off').removeClass('nodisplay'); |
|
if ($("#PREFS_KB").val() > 0) { |
|
$("#PREFS_KB").val('0'); |
|
} |
|
} |
|
/* |
|
* Function to show the Shorthand/Keyboard panel. |
|
*/ |
|
function show_KB() { |
|
$('.kb').toggleClass('nodisplay'); |
|
$('.kb_off').toggleClass('nodisplay'); |
|
$('.copier').toggleClass('nodisplay'); |
|
if ($('#PREFS_EXAM').val() == 'DRAW') { |
|
show_TEXT(); |
|
} |
|
|
|
if ($("#PREFS_KB").val() > 0) { |
|
$("#PREFS_KB").val('0'); |
|
} else { |
|
$("#PREFS_KB").val('1'); |
|
} |
|
update_PREFS(); |
|
} |
|
|
|
function editScripts(url) { |
|
var pid = $('#pid').val(); |
|
var AddScript = function () { |
|
var iam = top.frames.editScripts; |
|
iam.location.href = base + "/controller.php?prescription&edit&id=&pid="+encodeURIComponent(pid) |
|
}; |
|
var ListScripts = function () { |
|
var iam = top.frames.editScripts; |
|
iam.location.href = base + "/controller.php?prescription&list&id="+encodeURIComponent(pid) |
|
}; |
|
|
|
let title = 'Prescriptions'; |
|
let w = 810; |
|
w = 910; |
|
|
|
dlgopen(url, 'editScripts', w, 300, '', '', { |
|
buttons: [ |
|
{text: 'Add', close: false, style: 'primary btn-sm', click: AddScript}, |
|
{text: 'List', close: false, style: 'primary btn-sm', click: ListScripts}, |
|
{text: 'Done', close: true, style: 'default btn-sm'} |
|
], |
|
onClosed: 'refreshme', |
|
allowResize: true, |
|
allowDrag: true, |
|
dialogId: 'editscripts', |
|
type: 'iframe' |
|
}); |
|
} |
|
|
|
/* END Functions related to form VIEW */ |
|
|
|
/* |
|
* Function contains menu commands specific to this form. |
|
*/ |
|
function menu_select(zone) { |
|
$("#menu_"+zone).addClass('active'); |
|
if (zone =='PREFERENCES') { |
|
window.parent.RTop.document.location.href = base+"interface/super/edit_globals.php"; |
|
var url = base+"/interface/super/edit_globals.php"; |
|
var formData = { |
|
'id' : $('#id').val(), |
|
'encounter' : $('#encounter').val(), |
|
'pid' : $('#pid').val(), |
|
}; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'GET', |
|
url : url, |
|
data : formData, |
|
success : function(result) { |
|
window.parent.RTop.document.result; |
|
} |
|
}); |
|
} |
|
if (zone =='Left_Panel') $("#left-panel-link").trigger('click'); |
|
if (zone =='Right_Panel') $("#right-panel-link").trigger('click'); |
|
if (zone =='PRIORS') $("#PRIORS_ALL_minus_one").trigger("click"); |
|
if (zone =='QP') show_QP(); |
|
if (zone =='KB') show_KB(); |
|
if (zone =='DRAW') show_DRAW(); |
|
if (zone =='TEXT') show_TEXT(); |
|
if (zone =='IOP_graph') $("#LayerVision_IOP_lightswitch").trigger('click'); |
|
if (zone == "HPI") scrollTo("HPI_left"); |
|
if (zone == "PMH") scrollTo("PMH_left"); |
|
if (zone == "EXT") scrollTo("EXT_left"); |
|
if (zone == "ANTSEG") scrollTo("ANTSEG_left"); |
|
if (zone == "POSTSEG") scrollTo("RETINA_left"); |
|
if (zone == "NEURO") scrollTo("NEURO_left"); |
|
if (zone == "IMPPLAN") scrollTo("IMPPLAN_left"); |
|
} |
|
|
|
|
|
/* |
|
* Function to test blowing up any section to fullscren - towards tablet functionality? |
|
* Currently not used. |
|
*/ |
|
function show_Section(section) { |
|
//hide everything, show the section. For fullscreen perhaps Tablet view per section |
|
show_right(); |
|
$("div[name='_sections']").style.display= "none"; // |
|
$('#'+section+'_sections').style.display= "block"; |
|
//.show().appendTo('form_container'); |
|
} |
|
/* |
|
* Function to display Chief Complaint 1-3 |
|
*/ |
|
function show_CC(CC_X) { |
|
$("[name^='CC_']").addClass('nodisplay'); |
|
$("#CC_"+CC_X).removeClass('nodisplay'); |
|
$("#CC_"+CC_X).index; |
|
} |
|
|
|
/* START Functions related to CODING */ |
|
|
|
/* |
|
* Function to determine if add on NeuroSensory(92060) code can be billed. |
|
*/ |
|
function check_CPT_92060() { |
|
var neuro1=''; |
|
var neuro2 =''; |
|
if ($("#STEREOPSIS").val() > '') (neuro1="1"); |
|
$(".neurosens2").each(function(index) { |
|
if ($( this ).val() > '') { |
|
neuro2="1"; |
|
} |
|
}); |
|
if (neuro1 && neuro2){ |
|
$("#neurosens_code").removeClass('nodisplay'); |
|
CPT_92060 = 'here'; |
|
} else { |
|
$("#neurosens_code").addClass('nodisplay'); |
|
CPT_92060 = ''; |
|
} |
|
} |
|
/* |
|
* Function to check documentation level for coding purposes |
|
* And make suggestions to end user. |
|
*/ |
|
function check_exam_detail() { |
|
detail_reached_HPI='0'; |
|
chronic_reached_HPI='0'; |
|
$(".count_HPI").each(function(index) { |
|
if ($( this ).val() > '') detail_reached_HPI++; |
|
}); |
|
if (detail_reached_HPI > '3') { |
|
$(".detail_4_elements").css("color","red"); |
|
$(".CODE_LOW").addClass("nodisplay"); |
|
$(".CODE_HIGH").removeClass("nodisplay"); |
|
$(".detailed_HPI").css("color","red"); |
|
} else { |
|
$(".detail_4_elements").css("color","#876F6F"); |
|
} |
|
$(".chronic_HPI").each(function(index) { |
|
if ($( this ).val() > '') chronic_reached_HPI++; |
|
}); |
|
if (chronic_reached_HPI > '2') { |
|
$(".chronic_3_elements").css("color","red"); |
|
$(".CODE_LOW").addClass("nodisplay"); |
|
$(".CODE_HIGH").removeClass("nodisplay"); |
|
$(".detailed_HPI").css("color","red"); |
|
} else { |
|
$(".chronic_3_elements").css("color","#876F6F"); |
|
} |
|
if ((chronic_reached_HPI > '2')||(detail_reached_HPI > '3')) { |
|
$(".CODE_LOW").addClass("nodisplay"); |
|
$(".CODE_HIGH").removeClass("nodisplay"); |
|
$(".detailed_HPI").css("color","red"); |
|
detail_reached_HPI = '1'; |
|
} else { |
|
$(".CODE_LOW").removeClass("nodisplay"); |
|
$(".CODE_HIGH").addClass("nodisplay"); |
|
$(".detailed_HPI").css("color","#876F6F"); |
|
detail_reached_HPI = '0'; |
|
} |
|
if ((($("#DIL_RISKS").is(':checked')) || ($(".dil_drug").is(':checked'))) && (($('#ODPERIPH').val() >'') || ($('#OSPERIPH').val() >''))) { |
|
$(".EXAM_LOW").addClass("nodisplay"); |
|
$(".DIL_RISKS").removeClass("nodisplay"); |
|
$("#DIL_RISKS").prop("checked","checked"); |
|
detail_reached_exam = '1'; |
|
} else { |
|
$(".EXAM_LOW").removeClass("nodisplay"); |
|
$(".DIL_RISKS").addClass("nodisplay"); |
|
detail_reached_exam = '0'; |
|
} |
|
Suggest_visit_code(); |
|
} |
|
|
|
/* END Functions related to CODING */ |
|
|
|
/* START Functions related to IMPPLAN Builder */ |
|
/* |
|
* Function to update the list of Dxs available for Impression/Plan and Coding(?). |
|
* Will use actual list from obj.IMPPLAN_items for coding. |
|
* After a new DX is added via PMSFH (or other ways), it updates the sortable and draggable list of DXs |
|
* available to build the Impression/Plan from. |
|
*/ |
|
function build_DX_list(obj) { |
|
var out = ""; |
|
var diagnosis; |
|
$( "#build_DX_list" ).empty(); |
|
//add in inc_FIELDCODES culled from the datafields |
|
if (typeof obj.PMSFH === "undefined") return; |
|
if (typeof obj.Clinical === "undefined") submit_form('obj.clinical is undefined'); |
|
if (!obj.PMSFH['POH'] && !obj.PMSFH['PMH'] && !obj.Clinical) { |
|
out = '<br /><span class="bold">The Past Ocular History (POH) and Past Medical History (PMH) are negative and no diagnosis was auto-generated from the clinical findings.</span><br /><br />Update the chart to activate the Builder.<br />'; |
|
$( "#build_DX_list" ).html(out); |
|
return; |
|
} |
|
build_IMPPLAN(obj.IMPPLAN_items); |
|
if ($('#inc_PE').is(':checked') && obj.Clinical) { |
|
$.each(obj.Clinical, function(key, value) { |
|
diagnosis=''; |
|
if (obj.Clinical[key][0].diagnosis > '') { //so we are just showing this first item of each Dx (Eg bilateral, x4 pterygium, only first shows up) |
|
diagnosis = "<code class='float-right ICD_CODE'>"+obj.Clinical[key][0].code+"</code>"; |
|
} |
|
out += "<li class='ui-widget-content'><span name='DX_Clinical_"+key+"' id='DX_Clinical_"+key+"'>"+obj.Clinical[key][0].title+"</span> "+diagnosis+"</li> "; |
|
}); |
|
} |
|
|
|
if ($('#inc_POH').is(':checked') && (obj.PMSFH['POH']||obj.PMSFH['POS'])) { |
|
$.each(obj.PMSFH['POH'], function(key, value) { |
|
diagnosis=''; |
|
if (obj.PMSFH['POH'][key].diagnosis > '' ) { |
|
diagnosis = "<code class='float-right ICD_CODE'>"+obj.PMSFH['POH'][key].code+"</code>"; |
|
} |
|
out += "<li class='ui-widget-content'><span name='DX_POH_"+key+"' id='DX_POH_"+key+"'>"+obj.PMSFH['POH'][key].title+"</span> "+diagnosis+"</li>"; |
|
}); |
|
$.each(obj.PMSFH['POS'], function(key, value) { |
|
diagnosis=''; |
|
if (obj.PMSFH['POS'][key].diagnosis > '' ) { |
|
diagnosis = "<code class='float-right ICD_CODE'>"+obj.PMSFH['POS'][key].code+"</code>"; |
|
} |
|
out += "<li class='ui-widget-content'><span name='DX_POS_"+key+"' id='DX_POS_"+key+"'>"+obj.PMSFH['POS'][key].title+"</span> "+diagnosis+"</li>"; |
|
}); |
|
} |
|
if ($('#inc_PMH').is(':checked') && obj.PMSFH['PMH']) { |
|
$.each(obj.PMSFH['PMH'], function(key, value) { |
|
diagnosis=''; |
|
if (obj.PMSFH['PMH'][key].diagnosis > '') { |
|
diagnosis = "<code class='float-right ICD_CODE'>"+obj.PMSFH['PMH'][key].code+"</code>"; |
|
} |
|
out += "<li class='ui-widget-content'><span name='DX_PMH_"+key+"' id='DX_PMH_"+key+"'>"+obj.PMSFH['PMH'][key].title+"</span>"+diagnosis+"</li> "; |
|
}); |
|
} |
|
//add in inc_FIELDCODES culled from the datafields |
|
if (out !="") { |
|
rebuild_IMP($( "#build_DX_list" )); |
|
$( "#build_DX_list" ) |
|
.html(out).sortable({ handle: ".handle",stop: function(event, ui){ rebuild_IMP($( "#build_DX_list" )) } }) |
|
.selectable({ filter: "li", cancel: ".handle",stop: function(event, ui){ rebuild_IMP($( "#build_DX_list" )) } }) |
|
.find( "li" ) |
|
.addClass( "ui-corner-all ui-selected" ) |
|
.dblclick(function(){ |
|
rebuild_IMP($( "#build_DX_list" )); |
|
$('#make_new_IMP').trigger('click'); //any items selected are sent to IMPPLAN directly. |
|
}) |
|
//this places the handle for the user to drag the item around. |
|
.prepend( "<div class='handle '><i class='fas fa-arrows-alt fa-1'></i></div>" ); |
|
} else { |
|
out = '<br /><span class="bold"><?php echo xlt("Build Your Plan") . "."; ?></span><br /><br />'; |
|
out += '<?php echo xlt('Suggestions for the Imp/Plan are built from the Exam, the Past Ocular History (POH and POS) and the Past Medical History (PMH)') . "."; ?><br />'; |
|
out += '<?php echo xlt('Update the chart to build this list') . "."; ?><br />'; |
|
$( "#build_DX_list" ).html(out); |
|
} |
|
} |
|
/** |
|
* Function: After the Builder DX list is built from all the available options, |
|
* the end user can select to use only certain Dxs and change their sort order of importance. |
|
* This function builds the list of DXs selected and in the order as the user sorted them, |
|
* so we know what to use to build the Impression/Plan area and in what order to display them. |
|
*/ |
|
function rebuild_IMP(obj2) { |
|
var surface; |
|
IMP_order=[]; |
|
k='0'; |
|
$( ".ui-selected", obj2 ).each(function() { |
|
var index = $( "#build_DX_list li" ).index( this ); |
|
if ($('#build_DX_list li span')[index].id.match(/DX_POH_(.*)/)) { |
|
surface = 'POH_' + $( "#build_DX_list li span" )[index].id.match(/DX_POH_(.*)/)[1]; |
|
IMP_order[k] = surface; |
|
}else if ($('#build_DX_list li span')[index].id.match(/DX_POS_(.*)/)) { |
|
surface = 'POS_' + $( "#build_DX_list li span" )[index].id.match(/DX_POS_(.*)/)[1]; |
|
IMP_order[k] = surface; |
|
} else if ($('#build_DX_list li span')[index].id.match(/DX_PMH_(.*)/)) { |
|
surface = 'PMH_' + $( "#build_DX_list li span" )[index].id.match(/DX_PMH_(.*)/)[1]; |
|
IMP_order[k] = surface; |
|
} else if ($('#build_DX_list li span')[index].id.match(/DX_Clinical_(.*)/)) { |
|
surface = 'CLINICAL_' + $( "#build_DX_list li span" )[index].id.match(/DX_Clinical_(.*)/)[1]; |
|
IMP_order[k] = surface; |
|
} |
|
k++; |
|
}); |
|
} |
|
/* |
|
* This function builds the Impression/Plan area using the object supplied: items |
|
* It appends "items" into the Impression Plan area, complete with: |
|
* contenteditable Titles (the Impression), |
|
* its code (if part of the item object), |
|
* Plan textareas (autofilled with the item/object's "comment") |
|
* for each member of "items". |
|
* Duplicates are removed by server. |
|
*/ |
|
function build_IMPPLAN(items,nodisplay) { |
|
var contents_here; |
|
if (typeof nodisplay == "undefined") { |
|
$('#IMPPLAN_zone').html(""); |
|
} |
|
$('#Coding_DX_Codes').html(""); |
|
$('#visit_justification').html(""); |
|
|
|
if ((items == null) || ( (typeof items == "undefined") || (items.length =='0') ) ) { |
|
items = []; |
|
$('#IMPPLAN_text').removeClass('nodisplay'); //Display Builder instructions for starting out |
|
$('#IMPPLAN_zone').addClass('nodisplay'); |
|
} else { |
|
//ok we have at least one item, display them in order; hide the Builder instructions |
|
$('#IMPPLAN_text').addClass('nodisplay'); |
|
$('#IMPPLAN_zone').removeClass('nodisplay'); |
|
count_dx=0; |
|
visit_justifier =[]; |
|
$.each(items, function( index, value ) { |
|
if (!value.codetext) value.codetext=""; |
|
if (!value.code) value.code=""; |
|
if ((value.code==="") || (value.code.match(/Code/) || (value.code==null))) { |
|
value.code="<i class='fa fa-search-plus'></i> Code"; |
|
} else { |
|
count_dx++; |
|
|
|
if (value.code.match(/\,/g)) { |
|
// If there is a comma in there, there is more than one code present for this item. Split them out. |
|
// If code is manually changed or copied from a prior visit - item will not have a PMSFH_link |
|
// PMSFH_link is only present when the Builder was used to make the entry. |
|
|
|
// So if there is no PMSFH_link and it is not generated from a clinical field: |
|
if ( ((typeof value.PMSFH_link !== "undefined") || (value.PMSFH_link !== null)) && (!value.PMSFH_link.match(/Clinical_(.*)/)) ) { |
|
//The Title should have the description. |
|
var CodeArr = value.code.split(","); |
|
var TitleArr = value.codedesc.split("\r");//I don't see a second codedesc being adding in for this yet... |
|
for (i=0;i < CodeArr.length;i++) { |
|
if (CodeArr.length == (TitleArr.length-1)) { //there is a trailing \r but second codedesc should have "\r" also |
|
$('#Coding_DX_Codes').append(count_dx +'. '+CodeArr[i]+': '+TitleArr[i]+'<br />'); |
|
|
|
justify_btn = '<span class="modifier status_on" name="visit_justifier" id="visit_just_'+count_dx+'" value="" data-justcode="'+value.codetype+'|'+value.code+'" title="'+value.codedesc+'">'+count_dx+'</span>'; |
|
$('#visit_justification').append(justify_btn); |
|
visit_justifier.push(value.codetype+'|'+value.code[i]); |
|
} else { |
|
//just look it up via ajax or tell them to code it manually on the feesheet ;). |
|
$('#Coding_DX_Codes').append(CodeArr[i]+': <?php echo xlt('Manually retrieve description on Fee Sheet'); ?> <br />'); |
|
|
|
var justify_btn = '<span class="modifier status_on" id="visit_just_'+count_dx+'" name="visit_justifier" value="" data-justcode="'+value.codetype+'|'+value.code+'" title="'+value.codedesc+'">'+count_dx+'</span>'; |
|
|
|
$('#visit_justification').append(justify_btn); |
|
visit_justifier.push(value.codetype+'|'+value.code); |
|
} |
|
count_dx++; |
|
} |
|
} else { |
|
// So there IS a PMSFH_link or it was generated from a clinical field: |
|
|
|
//this works for Clinical-derived terms with more than one Dx Code (found in more than one location/field) |
|
if (value.PMSFH_link.match(/Clinical_(.*)/)) { |
|
if (typeof obj.Clinical !== "undefined") { |
|
var location = value.PMSFH_link.match(/Clinical_(.*)/)[1]; |
|
if (obj.Clinical[location]!=null ) { |
|
for (i=0; i < obj.Clinical[location].length; i++) { |
|
$('#Coding_DX_Codes').append(count_dx +'. '+obj.Clinical[location][i].code+': '+obj.Clinical[location][i].codedesc+'<br />'); |
|
justify_btn = '<span class="modifier status_on" id="visit_just_'+count_dx+'" name="visit_justifier" value="" data-justcode="'+obj.Clinical[location][i].codetype+'|'+obj.Clinical[location][i].code+'" title="'+obj.Clinical[location][i].codedesc+'">'+count_dx+'</span>'; |
|
count_dx++; |
|
$('#visit_justification').append(justify_btn); |
|
|
|
visit_justifier.push(obj.Clinical[location][i].codetype+'|'+obj.Clinical[location][i].code); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} else { //all is good, one code only |
|
$('#Coding_DX_Codes').append(count_dx +'. '+value.code+': '+value.codedesc+'<br />'); |
|
|
|
justify_btn = ' <span class="modifier status_on" id="visit_just_'+count_dx+'" name="visit_justifier" data-justcode="'+value.codetype+'|'+value.code+'" title="'+value.codedesc+'">'+count_dx+'</span> '; |
|
$('#visit_justification').append(justify_btn); |
|
//we assume the visit code will use this as a justification in billing so activate that link now. |
|
visit_justifier.push(value.codetype+'|'+value.code); |
|
} |
|
} |
|
|
|
if (typeof nodisplay !== "undefined") { |
|
return; |
|
} |
|
var title2 = value.title.replace(/(\')/g, ''); |
|
contents_here = "<span class='bold' contenteditable title='<?php echo xla('Click to edit'); ?>' id='IMPRESSION_"+index+"'>" + |
|
value.title +"</span>"+ |
|
" <span contenteditable class='float-right' onclick='sel_diagnosis("+index+",\""+title2+"\");' title='"+value.codetext+"' id='CODE_"+index+"'>"+ |
|
value.code + "</span>"+ |
|
"<br /><textarea id='PLAN_"+index+"' name='PLAN_"+index+ |
|
"' style='width:100%;max-width:100%;height:auto;min-height:3em;overflow-y: hidden;padding-top: 1.1em; '>"+ |
|
value.plan +"</textarea><br /></li>"; |
|
$('#IMPPLAN_zone').append('<div id="IMPPLAN_zone_'+index+'" class="IMPPLAN_class">'+ |
|
'<i class="float-right fa fa-times" id="BUTTON_IMPPLAN_'+index+'"></i>'+ |
|
contents_here+'</div>'); |
|
$('#BUTTON_IMPPLAN_'+index).on('click', function() {//delete/close icon |
|
var item = this.id.match(/BUTTON_IMPPLAN_(.*)/)[1]; |
|
obj.IMPPLAN_items.splice(item,1); |
|
build_IMPPLAN(obj.IMPPLAN_items); |
|
store_IMPPLAN(obj.IMPPLAN_items,'1'); |
|
}); |
|
$('#PLAN_'+index).css("background-color","#F0F8FF"); |
|
}); |
|
//end each |
|
//now attach visit_justifier(s) to each TEST |
|
//If the TEST_justifiers were ever touched AND |
|
$.each($(".TESTS_justify"), function( index, value) { |
|
$( this ).html(''); |
|
var herenow = $("#TEST_"+index+"_justify"); |
|
|
|
for (var i = 0, length = visit_justifier.length; i < length; i++) { |
|
item2 = visit_justifier[i]; |
|
status =''; |
|
for (var j=0;j< CODING_items.length; j++) { |
|
if (CODING_items[j].justify == item2) { |
|
status="status_on"; |
|
} |
|
} |
|
//if item2 is in CODING_items, it will have class=status_on and we need modifier 25, maybe 59 if there are two or more? |
|
justify_btn = ' <span class="modifier '+status+'" id="TEST_'+index+'_just_'+i+'" name="TEST_'+index+'_justifiers" value="" data-justcode="'+item2+'" title="'+item2+'">'+(i+1)+'</span>'; |
|
herenow.append(justify_btn); |
|
} |
|
}); |
|
|
|
// The IMPRESSION DXs are "contenteditable" spans. |
|
// If the user changes the words in an IMPRESSION Diagnosis area, store it. |
|
$('[id^=IMPRESSION_]').on('blur', function(e) { |
|
e.preventDefault(); |
|
var item = this.id.match(/IMPRESSION_(.*)/)[1]; |
|
var content = this.innerText || this.innerHTML; |
|
|
|
if (pmsfh_here = obj.IMPPLAN_items[item].PMSFH_link.match(/(.*)\_(.*)/)) { |
|
//we are going to change how this appears in PMH too. |
|
var pmsfh_zone = pmsfh_here[1]; |
|
var pmsfh_item = pmsfh_here[2]; |
|
obj.PMSFH[pmsfh_zone][pmsfh_item].title = content; |
|
alter_issue2(obj.PMSFH[pmsfh_zone][pmsfh_item].issue,pmsfh_zone,pmsfh_item); |
|
} |
|
|
|
obj.IMPPLAN_items[item].title = content; |
|
store_IMPPLAN(obj.IMPPLAN_items,'1'); |
|
//$(this).css('background-color','#F0F8FF'); |
|
return false; |
|
}); |
|
$('[id^=CODE_]').on('blur', function() { |
|
var item = this.id.match(/CODE_(.*)/)[1]; |
|
var new_code = this.innerText || this.innerHTML; |
|
obj.IMPPLAN_items[item].code = new_code; |
|
//obj.IMPPLAN_items[item].codetext = ''; |
|
//obj.IMPPLAN_items[item].codedesc = ''; |
|
$(this).css('background-color','#F0F8FF'); |
|
store_IMPPLAN(obj.IMPPLAN_items); |
|
}); |
|
|
|
$('[id^=PLAN_]').on('change', function() { |
|
var item = this.id.match(/PLAN_(.*)/)[1]; |
|
obj.IMPPLAN_items[item].plan = $(this).val(); |
|
store_IMPPLAN(obj.IMPPLAN_items,'1'); |
|
$(this).css('background-color','#F0F8FF'); |
|
}); |
|
|
|
$('#IMPPLAN_zone').on( 'keyup', 'textarea', function (e){ |
|
//$(this).css('height', 'auto' ); |
|
// $(this).height( this.scrollHeight ); |
|
}); |
|
$('#IMPPLAN_zone').find( 'textarea' ).keyup(); |
|
obj.IMPPLAN_items = items; |
|
} |
|
} |
|
|
|
|
|
/* |
|
* This functions updates a PMSFH item's code on the server via its issue number |
|
*/ |
|
function update_PMSFH_code(the_issue,new_code){ |
|
var url = "../../forms/eye_mag/save.php?mode=update"; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : { |
|
action : 'code_PMSFH', |
|
pid : $('#pid').val(), |
|
form_id : $('#form_id').val(), |
|
encounter : $('#encounter').val(), |
|
uniqueID : $('#uniqueID').val(), |
|
issue : the_issue, |
|
code : new_code |
|
} |
|
}).done(function(result) { |
|
if (result == 'Code 400') { |
|
code_400(); //the user does not have write privileges! |
|
return; |
|
} |
|
}); |
|
} |
|
|
|
|
|
/* |
|
* This function sends the obj.IMPPLAN_items to the server for storage |
|
*/ |
|
function store_IMPPLAN(storage,nodisplay) { |
|
if (typeof storage !== "undefined") { |
|
var url = "../../forms/eye_mag/save.php?mode=update&store_IMPPLAN"; |
|
var formData = JSON.stringify(storage); |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
dataType : 'json', |
|
data : { |
|
parameter : formData, |
|
action : 'store_IMPPLAN', |
|
pid : $('#pid').val(), |
|
form_id : $('#form_id').val(), |
|
encounter : $('#encounter').val(), |
|
uniqueID : $('#uniqueID').val() |
|
} |
|
}).done(function(result) { |
|
if (result == "Code 400") { |
|
code_400(); //the user does not have write privileges! |
|
return; |
|
} |
|
obj.IMPPLAN_items = result; |
|
// if (typeof nodisplay === "undefined") { |
|
build_IMPPLAN(obj.IMPPLAN_items,nodisplay); |
|
// } |
|
}); |
|
} |
|
} |
|
|
|
|
|
/* |
|
* This submits any codes we have in the obj.IMPPLAN_items variable, ie. what is in the Impression Plan currently, to the coding engine. |
|
* |
|
*/ |
|
function CODING_to_feesheet(CODING_items) { |
|
if (typeof CODING_items !== "undefined") { |
|
var url = "../../forms/eye_mag/save.php?mode=update&track=ThingOne"; |
|
var formData = JSON.stringify(CODING_items); |
|
top.restoreSession(); |
|
$.ajax({ |
|
'type' : 'POST', |
|
'url' : url, |
|
'data' : { |
|
'parameter' : formData, |
|
'action' : 'code_visit', |
|
'pid' : $('#pid').val(), |
|
'form_id' : $('#form_id').val(), |
|
'encounter' : $('#encounter').val(), |
|
'uniqueID' : $('#uniqueID').val() |
|
} |
|
}).done(function(result) { |
|
if (result == "Code 400") { |
|
code_400(); //the user does not have write privileges! |
|
return; |
|
} else { |
|
//$("#goto_fee_sheet").prop('disabled', false); |
|
$("#goto_fee_sheet").removeClass('nodisplay'); |
|
} |
|
}); |
|
} |
|
|
|
} |
|
|
|
/* |
|
* This function allows the user to drag a DX from the Impression/Plan Builder list directly onto the Impression Plan list. |
|
* This item is appended to the $('#IMPPLAN_zone'). |
|
*/ |
|
function dragto_IMPPLAN_zone(event, ui) { |
|
var findme = ui.draggable.find("span").attr("id"); |
|
var group = findme.match(/DX_(.*)_(.*)/)[1]; |
|
var location = findme.match(/DX_(.*)_(.*)/)[2]; |
|
var the_code =''; |
|
var the_codedesc =''; |
|
var the_codetext =''; |
|
var the_plan =''; |
|
if (obj.IMPPLAN_items ==null) obj.IMPPLAN_items = []; |
|
if (group =="Clinical") { |
|
//more than one field can contain this DX. |
|
//Group them into one IMPPLAN. |
|
for (i=0;i < obj.Clinical[location].length; i++) { |
|
the_code += obj.Clinical[location][i]['code']+','; |
|
the_codedesc = obj.Clinical[location][i]['codedesc']; |
|
the_codetext = obj.Clinical[location][i]['codetext']; |
|
the_plan += obj.Clinical[location][i]['codedesc'] + "\r"; |
|
} |
|
if (i > 0) the_code = the_code.slice(0, -1); |
|
obj.IMPPLAN_items.push({ |
|
code: the_code, |
|
codedesc: the_codedesc, |
|
codetext: the_codetext, |
|
codetype: obj.Clinical[location][0]['codetype'], |
|
plan: the_plan, |
|
PMSFH_link: obj.Clinical[location][0]['PMSFH_link'], |
|
title: obj.Clinical[location][0]['title'] |
|
}); |
|
|
|
} else { |
|
obj.IMPPLAN_items.push({ |
|
code: obj.PMSFH[group][location]['code'], |
|
codedesc: obj.PMSFH[group][location]['codedesc'], |
|
codetext: obj.PMSFH[group][location]['codetext'], |
|
codetype: obj.PMSFH[group][location]['codetype'], |
|
plan: obj.PMSFH[group][location]['comments'], |
|
PMSFH_link: obj.PMSFH[group][location]['PMSFH_link'], |
|
title: obj.PMSFH[group][location]['title'] |
|
|
|
}); |
|
} |
|
store_IMPPLAN(obj.IMPPLAN_items); //redisplay the items |
|
} |
|
/* |
|
* This function allows the user to drag a DX from the IMPRESSION list directly into the New Dx field (#IMP) <-- New Dx textarea |
|
* The data is appended to the end of the text. |
|
* It doesn't know what is already there (yet) so numbering if desired must be done manually. |
|
*/ |
|
function dragto_IMPPLAN(event, ui) { |
|
var findme = ui.draggable.find("span").attr("id"); |
|
var group = findme.match(/DX_(.*)_(.*)/)[1]; |
|
var location = findme.match(/DX_(.*)_(.*)/)[2]; |
|
var draggable2 = ui.draggable; |
|
if (group =="Clinical") { |
|
$('#IMP').val(ui.draggable[0].textContent+"\n"); |
|
} else { |
|
$('#IMP').val(ui.draggable[0].textContent+"\n"+obj.PMSFH[group][location]['comments']); |
|
} |
|
} |
|
/* END Functions related to IMPPLAN Builder */ |
|
|
|
function Suggest_visit_code() { |
|
//assume Eyes and established patient |
|
(Code_group != 'Eyes') ? (digit_2 = '9') : digit_2 = '2'; //920XX or 990XX |
|
(Code_new_est == 'New') ? (digit_4 = '0') : digit_4 = '1'; //9X01X or 9X00X |
|
if (detail_reached_exam =='1' && (detail_reached_HPI =='1')) { |
|
(Code_group =='Eyes') ? (digit_5 = '4') : (digit_5='3'); //920X4 or 990X3 |
|
detailed = "comprehensive"; |
|
} else { |
|
digit_5 = '2'; //920X2 |
|
detailed = "intermediate"; |
|
} |
|
visit_desc = Code_new_est +" "+ detailed +" "+digit_5; |
|
visit_code = "9"+digit_2+"0"+digit_4+digit_5; |
|
$('#visit_codes').val("CPT4|"+visit_code+"|").change(); |
|
} |
|
/* |
|
* This function builds the codes and populates the billing table for this encounter. |
|
*/ |
|
function build_CODING_list() { |
|
CODING_items =[]; |
|
/* the following things get billed: |
|
1. Visit code(s) including neurosensory if performed |
|
2. Tests performed |
|
3. Diagnostic codes |
|
*/ |
|
//3. Diagnostic Codes |
|
$.each(obj.IMPPLAN_items, function( index, value ) { |
|
if (value['codetype']) { |
|
if (value['code'].match(/\,/g)) { |
|
// physical finding found in more than one location, more than one code... |
|
// if there is a comma in there, there is more than one code present. Split them out. |
|
// And all those in one group have the same link out (PMSFH_link) value |
|
var location = value.PMSFH_link.match(/Clinical_(.*)/)[1]; |
|
for (i=0; i< obj.Clinical[location].length; i++) { |
|
CODING_items.push({ |
|
code: obj.Clinical[location][i]['code'], |
|
codedesc: obj.Clinical[location][i]['codedesc'], |
|
codetext: obj.Clinical[location][i]['codetext'], |
|
codetype: obj.Clinical[location][i]['codetype'], |
|
title: obj.Clinical[location][i]['title'] |
|
}); |
|
} |
|
} else if (value['code'].match(/Code/)){ |
|
//ignore |
|
} else { |
|
CODING_items.push({ |
|
code: value['code'], |
|
codedesc: value['codedesc'], |
|
codetext: value['codetext'], |
|
codetype: value['codetype'], |
|
title: value['title'] |
|
}); |
|
|
|
} |
|
} |
|
}); |
|
//1. Visit Codes. These can have a modifier (22,24,25,57 hard coded so far) |
|
var visit_justify = visit_justifier.join(":"); |
|
if (typeof visit_modifier != "object") { |
|
visit_modifiers = []; |
|
} else { |
|
visit_modifiers = visit_modifier.join(":");// |
|
} |
|
CODING_items.push({ |
|
code: visit_code, |
|
codedesc: visit_desc, |
|
codetext: '', |
|
codetype: 'CPT4', |
|
title: 'Visit Code', |
|
modifier: visit_modifiers, |
|
justify: visit_justify |
|
}); |
|
//neurosensory |
|
if (CPT_92060 == 'here') { |
|
CODING_items.push({ |
|
code: '92060', |
|
codedesc: 'Sensorimotor exam', |
|
codetext: 'Sensorimotor exam (CPT4:92060)', |
|
codetype: 'CPT4', |
|
title: 'Neuro/Sensorimotor Code', |
|
justify: visit_justify |
|
}); |
|
} |
|
//2. Tests/procedures performed to bill |
|
$('.TESTS').each(function(i, obj) { |
|
if ($(this).is(':checked')) { |
|
var codetype = obj.value.match(/(.*):(.*)/)[1]; |
|
var code = obj.value.match(/(.*):(.*)/)[2]; |
|
var modifier = $('#'+obj.id+'_modifier').val(); |
|
var justify = ''; |
|
$('[name="TEST_'+i+'_justifiers"]').each(function(j,obj2) { |
|
if ($('#TEST_'+i+'_just_'+j).hasClass('status_on') ) { |
|
var h = $(this).data(); |
|
justify = h.justcode; |
|
} |
|
}); |
|
var d = $(this).data(); |
|
CODING_items.push({ |
|
'code' : code, |
|
'codedesc' : d.title, |
|
'codetext' : d.codetext, |
|
'codetype' : codetype, |
|
'title' : d.title, |
|
'modifier' : modifier, |
|
'justify' : justify |
|
}); |
|
} |
|
}); |
|
} |
|
|
|
/* |
|
* Function to make the form fields inactive or active depending on the form's state (Active vs. READ-ONLY) |
|
*/ |
|
function toggle_active_flags(new_state) { |
|
if (($("#chart_status").val() == "off") || (new_state == "on")) { |
|
// we are read-only and we want to go active. |
|
$("#chart_status").val("on"); |
|
$("#active_flag").html(" Active Chart "); |
|
$("#active_icon").html("<i class='fa fa-toggle-on'></i>"); |
|
$("#warning").addClass("nodisplay"); |
|
$('input, select, textarea, a').removeAttr('disabled'); |
|
$('input, textarea').removeAttr('readonly'); |
|
} else { |
|
//else clicking this means we want to go from active to read-only |
|
$("#chart_status").val("off"); |
|
$("#active_flag").html(" READ-ONLY "); |
|
$("#active_icon").html("<i class='fa fa-toggle-off'></i>"); |
|
$("#warning").removeClass("nodisplay"); |
|
//we should tell the form fields to be disabled. should already be... |
|
$('input, select, textarea, a').attr('disabled', 'disabled'); |
|
$('input, textarea').attr('readonly', 'readonly'); |
|
//need to also disable Ductions and Versions, PRIORS, Quicks Picks and Drawing!!! AND IMPPLAN area. |
|
//Either way a save in READ-ONLY mode fails - just returns this pop_up again, without saving... |
|
this_form_id = $("#form_id").val(); |
|
$("#COPY_SECTION").val("READONLY-"+this_form_id); |
|
} |
|
} |
|
/* |
|
* Function to update a form in READ-ONLY mode with any data added by the Active version of this form_id/encounter form |
|
*/ |
|
function update_READONLY() { |
|
var data = { |
|
'action' : 'retrieve', |
|
'copy' : 'READONLY', |
|
'zone' : 'READONLY', |
|
'copy_to' : $("#form_id").val(), |
|
'copy_from' : $("#form_id").val(), |
|
'pid' : $("#pid").val() |
|
}; |
|
//we are going to update the whole form |
|
//Imagine you are watching on your browser while the tech adds stuff in another room on another computer. |
|
//We are not ready to actively chart, just looking to see how far along our staff is... |
|
//or maybe just looking ahead to see the who's being worked up in the next room? |
|
//Either way, we are looking at a record that at present will be disabled/we cannot change... |
|
// yet it is updating every 10-15 seconds if another user is making changes. |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
dataType : 'json', |
|
url : "../../forms/eye_mag/save.php?copy=READONLY", |
|
data : data, |
|
success : function(result) { |
|
$.map(result, function(valhere, keyhere) { |
|
if ($("#"+keyhere).val() != valhere) { |
|
$("#"+keyhere).val(valhere).css("background-color","#CCF"); |
|
} |
|
if (keyhere.match(/MOTILITY_/)) { |
|
// Copy forward ductions and versions visually |
|
// Make each blank, and rebuild them |
|
$("[name='"+keyhere+"_1']").html(''); |
|
$("[name='"+keyhere+"_2']").html(''); |
|
$("[name='"+keyhere+"_3']").html(''); |
|
$("[name='"+keyhere+"_4']").html(''); |
|
if (keyhere.match(/(_RS|_LS|_RI|_LI|_RRSO|_RRIO|_RLSO|_RLIO|_LRSO|_LRIO|_LLSO|_LLIO)/)) { |
|
// Show a horizontal (minus) tag. |
|
hash_tag = '<i class="fa fa-minus"></i>'; |
|
} else { //show vertical tag |
|
hash_tag = '<i class="fa fa-minus rotate-left"></i>'; |
|
} |
|
for (index =1; index <= valhere; ++index) { |
|
$("#"+keyhere+"_"+index).html(hash_tag); |
|
} |
|
} else if (keyhere.match(/^(ODVF|OSVF)\d$/)) { |
|
if (valhere =='1') { |
|
$("#FieldsNormal").prop('checked', false); |
|
$("#"+keyhere).prop('checked', true); |
|
$("#"+keyhere).val('1'); |
|
} else { |
|
$("#"+keyhere).val('0'); |
|
$("#"+keyhere).prop('checked', false); |
|
} |
|
} else if (keyhere.match(/AMSLERO(.)/)) { |
|
var sidehere = keyhere.match(/AMSLERO(.)/); |
|
if (valhere < '1') valhere ='0'; |
|
$("#"+keyhere).val(valhere); |
|
var srcvalue="AmslerO"+sidehere[1]; |
|
document.getElementById(srcvalue).src = document.getElementById(srcvalue).src.replace(/\_\d/g,"_"+valhere); |
|
$("#AmslerO"+sidehere[1]+"value").text(valhere); |
|
} else if (keyhere.match(/VA$/)) { |
|
$("#"+keyhere+"_copy").val(valhere).css("background-color","#F0F8FF");; |
|
$("#"+keyhere+"_copy_brd").val(valhere).css("background-color","#F0F8FF");; |
|
} else if (keyhere.match(/^O.VA_/)) { |
|
var side=keyhere.match(/(O.)VA_(.)/)[1]; |
|
var rx_number=keyhere.match(/(O.)VA_(.)/)[2]; |
|
if (rx_number == '1') { //update VA_1_copy and VA_1_copy_brd (first wearing RX only) |
|
$('#'+side+'VA_1_copy').val(valhere).css("background-color","#F0F8FF");; |
|
$('#'+side+'VA_1_copy_brd').val(valhere).css("background-color","#F0F8FF");; |
|
} |
|
} else if (keyhere.match(/^RX_TYPE_\d$/)) { |
|
if (typeof $('input:radio[name='+keyhere+']')[valhere] !== "undefined") { |
|
$('input:radio[name='+keyhere+']')[valhere].checked = true; |
|
} |
|
} else if (keyhere.match(/(alert|oriented|confused|PUPIL_NORMAL)/)) { |
|
if (valhere =='1') { |
|
$('#'+keyhere).val(valhere).prop('checked', true); |
|
} else { |
|
$('#'+keyhere).val(valhere).prop('checked', false); |
|
} |
|
} |
|
}); |
|
}}); |
|
} |
|
function dopopup(url) { |
|
window.open(url, 'clinical', 'width=fullscreen,height=fullscreen,resizable=1,scrollbars=1,directories=0,titlebar=0,toolbar=0,location=0,status=0,menubar=0'); |
|
} |
|
function goto_url(url) { |
|
R = url; |
|
top.restoreSession(); |
|
location.href = R; |
|
} |
|
//is this used anywhere? Looks like it should be deleted... |
|
function openImage() { |
|
dlgopen(base+'/controller.php?document&retrieve&patient_id=3&document_id=10&as_file=false', '_blank', 600, 475); |
|
} |
|
|
|
// Called to open a document in another tab for this encounter. |
|
function openDocumentNewTab(doc_id) { |
|
var url = '../../interface/patient_file/encounter/view_form.php?formname=' + formdir + '&id=' + formid; |
|
if (formdir == 'newpatient' || !parent.twAddFrameTab) { |
|
top.restoreSession(); |
|
location.href = url; |
|
} else { |
|
parent.twAddFrameTab('enctabs', formname, url); |
|
} |
|
return false; |
|
} |
|
|
|
function HPI_sync_heights() { |
|
if ( ($('#PMSFH_block_1').height() > $('#PMH_left').height() ) || |
|
($('#PMSFH_block_2').height() > $('#PMH_left').height()) ) |
|
{ |
|
if ($('#PMSFH_block_1').height() > $('#PMSFH_block_2').height()) { |
|
heights = $('#PMSFH_block_1').height(); |
|
} else { |
|
heights = $('#PMSFH_block_2').height(); |
|
} |
|
$('#PMH_left').height(heights); |
|
$('#PMH_right').height(heights) |
|
$('#PMH_1').height(heights+20); |
|
} else if ( $("#PMH_2").hasClass('nodisplay') ) { |
|
$('#PMH_1').height($('#HPI_1').height()); |
|
} else { |
|
$('#PMH_1').height($('#PMH_2').height()); |
|
} |
|
} |
|
/** |
|
* Keyboard shortcut commands. |
|
*/ |
|
|
|
shortcut.add("Control+T",function() { |
|
show_TEXT(); |
|
}); |
|
shortcut.add("Meta+T",function() { |
|
show_TEXT(); |
|
}); |
|
shortcut.add("Control+D",function() { |
|
show_DRAW(); |
|
}); |
|
shortcut.add("Meta+D",function() { |
|
show_DRAW(); |
|
}); |
|
shortcut.add("Control+P",function() { |
|
$("#PRIOR_ALL").val($('#form_id').val()).trigger("change"); |
|
}); |
|
shortcut.add("Meta+P",function() { |
|
show_PRIORS(); |
|
$("#PRIOR_ALL").val($('#form_id').val()).trigger("change"); |
|
}); |
|
shortcut.add("Control+B",function() { |
|
show_QP(); |
|
}); |
|
shortcut.add("Meta+B",function() { |
|
show_QP(); |
|
}); |
|
shortcut.add("Control+K",function() { |
|
show_KB(); |
|
}); |
|
shortcut.add("Meta+K",function() { |
|
show_KB(); |
|
}); |
|
$(function () { |
|
/* |
|
* this swallows backspace keys on the "rx" elements. |
|
* stops backspace -> back a page in the browser, a very annoying thing indeed. |
|
*/ |
|
var rx = /INPUT|SELECT|TEXTAREA|SPAN|DIV/i; |
|
|
|
$(document).bind("keydown keypress", function(e){ |
|
if( e.which == 8 ){ // 8 == backspace |
|
if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){ |
|
e.preventDefault(); |
|
} |
|
} |
|
}); |
|
}); |
|
|
|
/** |
|
* Function to update the PCP and referring person |
|
* |
|
*/ |
|
function update_DOCS() { |
|
var url = "../../forms/eye_mag/save.php?mode=update"; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : { |
|
action : 'docs', |
|
pid : $('#pid').val(), |
|
pcp : $('#form_PCP').val(), |
|
rDOC : $('#form_rDOC').val(), |
|
form_id : $('#form_id').val(), |
|
encounter : $('#encounter').val(), |
|
uniqueID : $('#uniqueID').val() |
|
} |
|
}).done(function(result) { |
|
if (result == "Code 400") { |
|
code_400(); //the user does not have write privileges! |
|
return; |
|
} |
|
obj = JSON.parse(result); |
|
build_DOCS(obj); |
|
}); |
|
} |
|
|
|
/** |
|
* Function to update the PCP and Referring Doctors data. |
|
* Initial use: update data returned from an ajax call. |
|
*/ |
|
function build_DOCS(DOCS) { |
|
if (DOCS['pcp']) { |
|
$("#pcp_name").html(DOCS['pcp']['name']); |
|
$("#pcp_address").html(DOCS['pcp']['address']); |
|
$("#pcp_phone").html(DOCS['pcp']['phone']); |
|
$("#pcp_phonew2").html(DOCS['pcp']['phone2']); |
|
$("#pcp_fax").html(DOCS['pcp']['fax']); |
|
$("#pcp_fax_info").html(DOCS['pcp']['fax_info']); |
|
} else { |
|
$("#pcp_name").html(''); |
|
$("#pcp_address").html(''); |
|
$("#pcp_phone").html(''); |
|
$("#pcp_phonew2").html(''); |
|
$("#pcp_fax").html(''); |
|
$("#pcp_fax_info").html(''); |
|
} |
|
if (DOCS['ref']) { |
|
$("#ref_name").html(DOCS['ref']['name']); |
|
$("#ref_address").html(DOCS['ref']['address']); |
|
$("#ref_phone").html(DOCS['ref']['phone']); |
|
$("#ref_phonew2").html(DOCS['ref']['phonew2']); |
|
$("#ref_fax").html(DOCS['ref']['fax']); |
|
$("#ref_fax_info").html(DOCS['ref']['fax_info']); |
|
} else { |
|
$("#ref_name").html(''); |
|
$("#ref_address").html(''); |
|
$("#ref_phone").html(''); |
|
$("#ref_phonew2").html(''); |
|
$("#ref_fax").html(''); |
|
$("#ref_fax_info").html(''); |
|
} |
|
} |
|
|
|
/** |
|
* Function to update the patient's current pharmacy |
|
*/ |
|
|
|
function update_Pharma() { |
|
//$(#form_pharmacy_id) has changed value, update the patient_data field pharmacy_id |
|
var pharm = $("#form_pharmacy_id").val(); |
|
var url = "../../forms/eye_mag/save.php?mode=update"; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : { |
|
action : 'new_pharmacy', |
|
pid : $('#pid').val(), |
|
form_id : $('#form_id').val(), |
|
encounter : $('#encounter').val(), |
|
uniqueID : $('#uniqueID').val(), |
|
pc_eid : $("#pc_eid").val(), |
|
visit_date : $("#visit_date").val(), |
|
new_pharmacy : pharm |
|
} |
|
}).done(function(result) { |
|
if (result == "Code 400") { |
|
code_400(); //the user does not have write privileges! |
|
return; |
|
} |
|
}); |
|
} |
|
|
|
|
|
/** |
|
* Function to convert ophthalmic prescriptions between plus cylinder and minus cylinder |
|
* |
|
*/ |
|
function reverse_cylinder(target) { |
|
//target can be revW1-5,AR,MR,CR,CTL, |
|
var prefix; |
|
var suffix; |
|
if (target.match(/^(AR|MR|CR|CTL)$/)) { |
|
prefix = target; |
|
suffix = ''; |
|
} |
|
if (target.match(/^revW[1-5]{1}$/)) { //matches on digit only, here 1-5 |
|
target = target.replace("revW",""); |
|
prefix = ''; |
|
suffix = '_'+target; |
|
} |
|
var Rsph = $('#'+prefix+'ODSPH'+suffix).val(); |
|
var Rcyl = $('#'+prefix+'ODCYL'+suffix).val(); |
|
var Raxis = $('#'+prefix+'ODAXIS'+suffix).val(); |
|
var Lsph = $('#'+prefix+'OSSPH'+suffix).val(); |
|
var Lcyl = $('#'+prefix+'OSCYL'+suffix).val(); |
|
var Laxis = $('#'+prefix+'OSAXIS'+suffix).val(); |
|
if (Rsph=='' && Rcyl =='' && Lsph=='' && lcyl =='') return; |
|
if ((!Rcyl.match(/SPH/i)) && (Rcyl >'')) { |
|
if (Rsph.match(/plano/i)) Rsph ='0'; |
|
Rsph = Number(Rsph); |
|
Rcyl = Number(Rcyl); |
|
Rnewsph = Rsph + Rcyl; |
|
if (Rnewsph ==0) Rnewsph ="PLANO"; |
|
Rnewcyl = Rcyl * -1; |
|
if (Rnewcyl > 0) Rnewcyl = "+"+Rnewcyl; |
|
if (parseInt(Raxis) < 90) { |
|
Rnewaxis = parseInt(Raxis) + 90; |
|
} else { |
|
Rnewaxis = parseInt(Raxis) - 90; |
|
} |
|
if (Rnewcyl=='0') Rnewcyl = "SPH"; |
|
if (Rnewsph =='0') { |
|
Rnewsph ="PLANO"; |
|
if (Rnewcyl =="SPH") Rnewcyl = ''; |
|
} |
|
$('#'+prefix+'ODSPH'+suffix).val(Rnewsph); |
|
$('#'+prefix+'ODCYL'+suffix).val(Rnewcyl); |
|
$('#'+prefix+'ODAXIS'+suffix).val(Rnewaxis); |
|
$('#'+prefix+'ODAXIS'+suffix).trigger('blur'); |
|
$('#'+prefix+'ODSPH'+suffix).trigger('blur'); |
|
$('#'+prefix+'ODCYL'+suffix).trigger('blur'); |
|
} |
|
if ((!Lcyl.match(/SPH/i)) && (Lcyl >'')) { |
|
if (!Lsph.match(/\d/)) Lsph ='0'; |
|
Lsph = Number(Lsph); |
|
Lcyl = Number(Lcyl); |
|
Lnewsph = Lsph + Lcyl; |
|
Lnewcyl = Lcyl * -1; |
|
if (Lnewcyl > 0) Lnewcyl = "+"+ Lnewcyl; |
|
if (parseInt(Laxis) < 90) { |
|
Lnewaxis = parseInt(Laxis) + 90; |
|
} else { |
|
Lnewaxis = parseInt(Laxis) - 90; |
|
} |
|
|
|
if (Lnewcyl=='0') Lnewcyl = "SPH"; |
|
if (Lnewsph =='0') { |
|
Lnewsph ="PLANO"; |
|
if (Lnewcyl =="SPH") Lnewcyl = ''; |
|
} |
|
|
|
$('#'+prefix+'OSSPH'+suffix).val(Lnewsph); |
|
$('#'+prefix+'OSCYL'+suffix).val(Lnewcyl); |
|
$('#'+prefix+'OSAXIS'+suffix).val(Lnewaxis); |
|
$('#'+prefix+'OSAXIS'+suffix).trigger('blur'); |
|
$('#'+prefix+'OSSPH'+suffix).trigger('blur'); |
|
$('#'+prefix+'OSCYL'+suffix).trigger('blur'); |
|
} |
|
} |
|
function scrollTo(target) { |
|
var offset; |
|
var scrollSpeed = 500; |
|
var wheight = $(window).height(); |
|
offset = $("#"+target).offset().top - (wheight / 2)+200; |
|
if (offset > (window.pageYOffset +150)||offset < (window.pageYOffset -150)) { |
|
$('html, body').animate({scrollTop:offset}, scrollSpeed); |
|
} |
|
} |
|
|
|
function update_appt_status(new_status) { |
|
var url = "../../forms/eye_mag/save.php?mode=update"; |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
url : url, |
|
data : { |
|
action : 'new_appt_status', |
|
pid : $('#pid').val(), |
|
form_id : $('#form_id').val(), |
|
encounter : $('#encounter').val(), |
|
uniqueID : $('#uniqueID').val(), |
|
pc_eid : $("#pc_eid").val(), |
|
visit_date : $("#visit_date").val(), |
|
new_status : new_status |
|
} |
|
}).done(function(result) { |
|
if (result == "Code 400") { |
|
code_400(); //the user does not have write privileges! |
|
return; |
|
} |
|
}); |
|
} |
|
function color_IOP(IOP){ |
|
if (!$.isNumeric(IOP.value)) return; |
|
if (IOP.value > '21') { |
|
$(IOP).css("background-color","rgb(255, 153, 153)"); |
|
} |
|
} |
|
function showpnotes(docid) { |
|
let btnClose = 'Done'; |
|
let url = base+'/interface/patient_file/summary/pnotes.php?docid=' + encodeURIComponent(docid); |
|
dlgopen(url, 'pno1', 'modal-xl', 500, '', '', { |
|
buttons: [ |
|
{text: btnClose, close: true, style: 'default btn-sm'} |
|
], |
|
sizeHeight: 'auto', |
|
allowResize: true, |
|
allowDrag: true, |
|
dialogId: '', |
|
type: 'iframe' |
|
}); |
|
return false; |
|
} |
|
function getTimeStamp() { |
|
var now = new Date(); |
|
var AMPM = now.getHours() >= 12 ? 'PM' : 'AM'; |
|
return now.getHours() + ':' + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + AMPM; |
|
} |
|
|
|
/** |
|
* This function is only run onload to hide sections per user preference. |
|
* Any changes during the encounter to display or hide a section are stored |
|
* as a previous setting and the next eye form opened will appear the same way. |
|
*/ |
|
function show_by_setting() { |
|
var tabs_left = $("#setting_tabs_left").val(); |
|
if (typeof tabs_left ==undefined) exit; |
|
var arrSet = ["HPI","PMH","EXT","ANTSEG","POSTSEG","NEURO","IMPPLAN"]; |
|
sLen = arrSet.length; |
|
for (i = 0; i < sLen; i++) { |
|
var value = $("#setting_"+arrSet[i]).val(); |
|
if (typeof value !== undefined && value !='1') { |
|
$('#tabs-left-'+arrSet[i]).addClass('ui-state-default'); |
|
$("#setting_"+arrSet[i]).val('0'); |
|
$("#"+arrSet[i]+'_1').addClass('nodisplay'); |
|
$("#setting_"+arrSet[i]).val('0'); |
|
} else { |
|
$("#setting_"+arrSet[i]).val('1'); |
|
} |
|
} |
|
if (tabs_left == '0') { |
|
$("#tabs_left").addClass('nodisplay'); |
|
} else { |
|
$("#tabs_left").removeClass('nodisplay'); |
|
} |
|
show_left(); |
|
return true; |
|
} |
|
|
|
$(function () { |
|
check_lock(); |
|
|
|
var allPanels = $('.building_blocks > dd').hide(); |
|
var allPanels2 = $('.building_blocks2 > dd').hide(); |
|
refresh_page(); |
|
|
|
// AUTO- CODING FEATURES |
|
check_CPT_92060(); |
|
check_exam_detail(); |
|
hide_DRAW(); |
|
hide_right(); |
|
//alert('Suggest a Code'); |
|
Suggest_visit_code(); |
|
show_QP_section('IMPPLAN','1'); |
|
|
|
|
|
//on checking TESTS, show modifiers and justifier fields |
|
$(".TESTS").on("click", function() { |
|
var test_id = this.id; |
|
if ($(this).is(':checked')) { |
|
$("#"+test_id+"_justmods").removeClass('nodisplay'); |
|
$("#"+test_id+"_modifier").val('59'); |
|
//make vist_modifier 25 light up too... |
|
$(this).parent().removeClass('lights_off').addClass('lights_on'); |
|
} else { |
|
$("#"+test_id+"_justmods").addClass('nodisplay'); |
|
$(this).parent().removeClass('lights_on').addClass('lights_off'); |
|
} |
|
|
|
}); |
|
$('[title]').tooltip(); |
|
$('#form_PCP,#form_rDOC').on('change', function() { |
|
update_DOCS(); |
|
}); |
|
|
|
$("#form_pharmacy_id").change(function() { |
|
update_Pharma(); |
|
}); |
|
|
|
$('#tooltips_status').html($('#PREFS_TOOLTIPS').val()); |
|
if ($("#PREFS_TOOLTIPS").val() == "<?php echo xla('Off'); ?>") { |
|
$('[title]').each(function() { |
|
var $this = $(this); |
|
$this.data('title',$this.attr('title')); |
|
$this.attr('title', ''); |
|
}); |
|
} |
|
$('#tooltips_toggle,#tooltips_status').on('click', function() { |
|
if ($("#PREFS_TOOLTIPS").val() == "<?php echo xla('On'); ?>") { |
|
$('#PREFS_TOOLTIPS').val('<?php echo xla('Off'); ?>'); |
|
$("#tooltips_status").html('<?php echo xla('are off'); ?>'); |
|
$('[title]').each(function() { |
|
var $this = $(this); |
|
$this.data('title',$this.attr('title')); |
|
$this.attr('title', ''); |
|
}); |
|
} else { |
|
$('#PREFS_TOOLTIPS').val('<?php echo xla('On'); ?>'); |
|
$('#tooltips_status').html('<?php echo xla('are on'); ?>'); |
|
$('[title]').each(function() { |
|
var $this = $(this); |
|
$this.attr('title', $this.data('title')); |
|
}); |
|
} |
|
update_PREFS(); |
|
}); |
|
$('#toggle_drugs').on('click', function(){ |
|
$('.hideme_drugs').toggleClass('nodisplay'); |
|
$(this).find('i').toggleClass('fa-toggle-down fa-toggle-up') |
|
return false; |
|
}); |
|
$('#toggle_VFs').on('click', function(){ |
|
$('.hideme_VFs').toggleClass('nodisplay'); |
|
$(this).find('i').toggleClass('fa-toggle-down fa-toggle-up') |
|
return false; |
|
}); |
|
$('#toggle_OCTs').on('click', function(){ |
|
$('.hideme_OCTs').toggleClass('nodisplay'); |
|
$(this).find('i').toggleClass('fa-toggle-down fa-toggle-up') |
|
return false; |
|
}); |
|
$('#toggle_cups').on('click', function(){ |
|
$('.hideme_cups').toggleClass('nodisplay'); |
|
$(this).find('i').toggleClass('fa-toggle-down fa-toggle-up') |
|
return false; |
|
}); |
|
$('#toggle_gonios').on('click', function(){ |
|
$('.hideme_gonios').toggleClass('nodisplay'); |
|
$(this).find('i').toggleClass('fa-toggle-down fa-toggle-up') |
|
return false; |
|
}); |
|
$('.close').on('click', function(){ |
|
$('#GFS_accordion .hide').slideUp(); |
|
}); |
|
$('#ODIOPTARGET').on('change', function() { |
|
$('#OSIOPTARGET').val($('#ODIOPTARGET').val()); |
|
refresh_GFS(); |
|
}); |
|
$('#ODIOPAP,#OSIOPAP,#ODIOPTARGET,#ODIOPTPN,#OSIOPTPN,#OSIOPTARGET').on('change', function() { |
|
//this is failing if there is no config_by_day variable. |
|
refresh_GFS(); |
|
}); |
|
if ($("#PREFS_KB").val() =='1') { |
|
$(".kb").removeClass('nodisplay'); |
|
$(".kb_off").addClass('nodisplay'); |
|
} else { |
|
$(".kb").addClass('nodisplay'); |
|
$(".kb_off").removeClass('nodisplay'); |
|
} |
|
|
|
$("[name$='_kb']").on('click', function() { |
|
$('.kb').toggleClass('nodisplay'); |
|
$('.kb_off').toggleClass('nodisplay'); |
|
$('.copier').toggleClass('nodisplay'); |
|
if ($('#PREFS_EXAM').val() == 'DRAW') { |
|
show_TEXT(); |
|
} |
|
|
|
if ($("#PREFS_KB").val() > 0) { |
|
$("#PREFS_KB").val('0'); |
|
} else { |
|
$("#PREFS_KB").val('1'); |
|
} |
|
update_PREFS(); |
|
}); |
|
$('.ke').on('mouseover', function() { |
|
$(this).toggleClass('yellow'); |
|
}); |
|
$('.ke').on('mouseout', function() { |
|
$(this).toggleClass('yellow'); |
|
}); |
|
$("[id$='_keyboard'],[id$='_keyboard_left']").on('keydown', function(e) { |
|
//this is the Shorthand engine's ignition |
|
if (e.which == 13|| e.keyCode == 13||e.which == 9|| e.keyCode == 9) { |
|
e.preventDefault(); |
|
var data_all = $(this).val(); |
|
var data_seg = data_all.match(/([^;]*)/gm); |
|
var field2 =''; |
|
var appendix =".a"; |
|
var zone; |
|
for (index=0; index < data_seg.length; ++index) { |
|
if (data_seg[index] =='') continue; |
|
data_seg[index] = data_seg[index].replace(/^[\n\v\f\r\x85\u2028\u2029\W]*/,''); |
|
data_seg[index] = data_seg[index].replace(/^[\s]*/,''); |
|
if (data_seg[index].match(/^D($|;)/i)) { |
|
$("#EXT_defaults").trigger("click"); |
|
$("#ANTSEG_defaults").trigger("click"); |
|
$("#RETINA_defaults").trigger("click"); |
|
$("#NEURO_defaults").trigger("click"); |
|
continue; |
|
} |
|
if (data_seg[index].match(/^DEXT($|;)/i)) { |
|
$("#EXT_defaults").trigger("click"); |
|
continue; |
|
} |
|
if (data_seg[index].match(/^DANTSEG($|;)/i)) { |
|
$("#ANTSEG_defaults").trigger("click"); |
|
continue; |
|
} |
|
if (data_seg[index].match(/^DAS($|;)/i)) { |
|
$("#ANTSEG_defaults").trigger("click"); |
|
continue; |
|
} |
|
if (data_seg[index].match(/^DRETINA($|;)/i)) { |
|
$("#RETINA_defaults").trigger("click"); |
|
continue; |
|
} |
|
if (data_seg[index].match(/^DRET($|;)/i)) { |
|
$("#RETINA_defaults").trigger("click"); |
|
continue; |
|
} |
|
if (data_seg[index].match(/^DNEURO($|;)/i)) { |
|
$("#NEURO_defaults").trigger("click"); |
|
continue; |
|
} |
|
if ((data_seg[index].match(/^CLEAREXT($|;)/i))|| |
|
(data_seg[index].match(/^CEXT($|;)/i))) { |
|
$(".EXT").val(''); |
|
continue; |
|
} |
|
if ((data_seg[index].match(/^CLEARAS($|;)/i))|| |
|
(data_seg[index].match(/^CLEARANTSEG($|;)/i))|| |
|
(data_seg[index].match(/^CANTSEG($|;)/i))|| |
|
(data_seg[index].match(/^CANT($|;)/i))|| |
|
(data_seg[index].match(/^CAS($|;)/i))) { |
|
$(".ANTSEG").val(''); |
|
continue; |
|
} |
|
if ((data_seg[index].match(/^CLEARRET($|;)/i))|| |
|
(data_seg[index].match(/^CRET($|;)/i)) || |
|
(data_seg[index].match(/^CLEARRETINA($|;)/i))|| |
|
(data_seg[index].match(/^CRETINA($|;)/i))) { |
|
$(".RETINA").val(''); |
|
continue; |
|
} |
|
|
|
appendix=".a"; |
|
var data = data_seg[index].match(/^(\w*)\:?(.*)/); |
|
(data[2].match(/\.a$/))?(data[2] = data[2].replace(/\.a$/,'')):(appendix = "nope"); |
|
var field = data[1].toUpperCase(); |
|
var text = data[2]; |
|
text = expand_vocab(text); |
|
priors = process_kb(field,text,appendix,prior_field,prior_text); |
|
prior_field = priors['field']; |
|
prior_text = priors['prior_text']; |
|
|
|
} |
|
submit_form('2'); |
|
$(this).val(''); |
|
|
|
} |
|
}); |
|
$("[id^='sketch_tools_']").click(function() { |
|
var zone = this.id.match(/sketch_tools_(.*)_/)[1]; |
|
$("[id^='sketch_tools_"+zone+"']").css("height","30px"); |
|
$(this).css("height","50px"); |
|
$("#sketch_tool_"+zone+"_color").css("background-image","").css("background-color",$("#selColor_"+zone).val()); |
|
}); |
|
$("[id^='sketch_sizes_']").click(function() { |
|
var zone = this.id.match(/sketch_sizes_(.*)_/)[1]; |
|
$("[id^='sketch_sizes_"+zone+"']").css("background","").css("border-bottom",""); |
|
$(this).css("border-bottom","2pt solid black"); |
|
}); |
|
|
|
|
|
// Here we get CC1 to show |
|
$(".tab_content").addClass('nodisplay'); |
|
$("#tab1_CC_text").removeClass('nodisplay'); |
|
$("#tab1_HPI_text").removeClass('nodisplay'); |
|
$("[id$='_CC'],[id$='_HPI_tab']").on('click', function() { |
|
// First remove class "active" from currently active tabs |
|
$("[id$='_CC']").removeClass('active'); |
|
$("[id$='_HPI_tab']").removeClass('active'); |
|
// Hide all tab content |
|
$(".tab_content").addClass('nodisplay'); |
|
// Here we get the href value of the selected tab |
|
var selected_tab = $(this).find("a").attr("href"); |
|
// Now add class "active" to the selected/clicked tab and content |
|
$(selected_tab+"_CC").addClass('active'); |
|
$(selected_tab+"_CC_text").removeClass('nodisplay'); |
|
$(selected_tab+"_HPI_tab").addClass('active'); |
|
$(selected_tab+"_HPI_text").removeClass('nodisplay'); |
|
// At the end, we add return false so that the click on the link is not executed |
|
return false; |
|
}); |
|
$("input,textarea,text").css("background-color","#FFF8DC"); |
|
$("[id*=ODIOP],[id*=OSIOP]").each(function() { color_IOP(this); }); |
|
$("#IOPTIME").css("background-color","#FFFFFF"); |
|
$("#refraction_width").css("width","8.5in"); |
|
$(".Draw_class").addClass('nodisplay'); |
|
$(".PRIORS_class").addClass('nodisplay'); |
|
$(window).on("resize", function() { |
|
if (window.innerWidth >'900') { |
|
$("#refraction_width").css("width","900px"); |
|
$("#LayerVision2").css("padding","4px"); |
|
} |
|
if (window.innerWidth >'1300') { |
|
$("#refraction_width").css("width","1300px"); |
|
//$("#first").css("width","1300px"); |
|
} |
|
if (window.innerWidth >'1900') { |
|
$("#refraction_width").css("width","1600px"); |
|
} |
|
|
|
}); |
|
$(window).resize(); |
|
|
|
var hash_tag = '<i class="fa fa-minus"></i>'; |
|
var index; |
|
// display any stored MOTILITY values |
|
$("#MOTILITY_RS").value = parseInt($("#MOTILITY_RS").val()); |
|
if ($("#MOTILITY_RS").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_RS").val()); ++index) { |
|
$("#MOTILITY_RS_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_RI").value = parseInt($("#MOTILITY_RI").val()); |
|
if ($("#MOTILITY_RI").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_RI").val()); ++index) { |
|
$("#MOTILITY_RI_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_LS").value = parseInt($("#MOTILITY_LS").val()); |
|
if ($("#MOTILITY_LS").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_LS").val()); ++index) { |
|
$("#MOTILITY_LS_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_LI").value = parseInt($("#MOTILITY_LI").val()); |
|
if ($("#MOTILITY_LI").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_LI").val()); ++index) { |
|
$("#MOTILITY_LI_"+index).html(hash_tag); |
|
} |
|
} |
|
|
|
$("#MOTILITY_RRSO").value = parseInt($("#MOTILITY_RRSO").val()); |
|
if ($("#MOTILITY_RRSO").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_RRSO").val()); ++index) { |
|
$("#MOTILITY_RRSO_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_RRIO").value = parseInt($("#MOTILITY_RRIO").val()); |
|
if ($("#MOTILITY_RRIO").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_RRIO").val()); ++index) { |
|
$("#MOTILITY_RRIO_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_RLIO").value = parseInt($("#MOTILITY_RLIO").val()); |
|
if ($("#MOTILITY_RLIO").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_RLIO").val()); ++index) { |
|
$("#MOTILITY_RLIO_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_RLSO").value = parseInt($("#MOTILITY_RLSO").val()); |
|
if ($("#MOTILITY_RLSO").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_RLSO").val()); ++index) { |
|
$("#MOTILITY_RLSO_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_LRSO").value = parseInt($("#MOTILITY_LRSO").val()); |
|
if ($("#MOTILITY_LRSO").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_LRSO").val()); ++index) { |
|
$("#MOTILITY_LRSO_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_LRIO").value = parseInt($("#MOTILITY_LRIO").val()); |
|
if ($("#MOTILITY_LRIO").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_LRIO").val()); ++index) { |
|
$("#MOTILITY_LRIO_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_LLSO").value = parseInt($("#MOTILITY_LLSO").val()); |
|
if ($("#MOTILITY_LLSO").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_LLSO").val()); ++index) { |
|
$("#MOTILITY_LLSO_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_LLIO").value = parseInt($("#MOTILITY_LLIO").val()); |
|
if ($("#MOTILITY_LLIO").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_LLIO").val()); ++index) { |
|
$("#MOTILITY_LLIO_"+index).html(hash_tag); |
|
} |
|
} |
|
|
|
var hash_tag = '<i class="fa fa-minus rotate-left"></i>'; |
|
$("#MOTILITY_LR").value = parseInt($("#MOTILITY_LR").val()); |
|
if ($("#MOTILITY_LR").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_LR").val()); ++index) { |
|
$("#MOTILITY_LR_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_LL").value = parseInt($("#MOTILITY_LL").val()); |
|
if ($("#MOTILITY_LL").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_LL").val()); ++index) { |
|
$("#MOTILITY_LL_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_RR").value = parseInt($("#MOTILITY_RR").val()); |
|
if ($("#MOTILITY_RR").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_RR").val()); ++index) { |
|
$("#MOTILITY_RR_"+index).html(hash_tag); |
|
} |
|
} |
|
$("#MOTILITY_RL").value = parseInt($("#MOTILITY_RL").val()); |
|
if ($("#MOTILITY_RL").val() > '0') { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
for (index =1; index <= ($("#MOTILITY_RL").val()); ++index) { |
|
$("#MOTILITY_RL_"+index).html(hash_tag); |
|
} |
|
} |
|
|
|
$(".chronic_HPI,.count_HPI").on("blur", function() { |
|
check_exam_detail(); |
|
}); |
|
// Dilation status |
|
$("#DIL_RISKS").on('change', function(o) { |
|
($(this).is(':checked')) ? ($(".DIL_RISKS").removeClass("nodisplay")) : ($(".DIL_RISKS").addClass("nodisplay")); |
|
check_exam_detail(); |
|
}); |
|
$(".dil_drug").on('change', function(o) { |
|
if ($(this).is(':checked')) { |
|
$("#DIL_RISKS").prop("checked","checked"); |
|
check_exam_detail(); |
|
var timestamp = getTimeStamp(); |
|
$("#DIL_MEDS").val(timestamp); |
|
}}); |
|
|
|
//neurosens exam = stereopsis + strab||NPC||NPA||etc |
|
$(".neurosens,.neurosens2").on("blur", function() { |
|
check_CPT_92060(); |
|
}); |
|
|
|
// functions to improve flow of refraction input |
|
$("input[name$='PRISM'],input[class^='prism']").on("blur", function() { |
|
//make it all caps |
|
var str = $(this).val(); |
|
str = str.toUpperCase(); |
|
$(this).val(str); |
|
}); |
|
$('input[class^="sphere"],input[name$="SPH"]').on("blur", function() { |
|
var mid = $(this).val(); |
|
if (mid.match(/PLANO/i)) { |
|
$(this).val('PLANO'); |
|
return; |
|
} |
|
if (mid.match(/^[\+\-]?\d{1}$/)) { |
|
mid = mid+".00"; |
|
} |
|
if (mid.match(/\.[27]$/)) { |
|
mid = mid + '5'; |
|
} |
|
if (mid.match(/\.\d$/)) { |
|
mid = mid + '0'; |
|
} |
|
//if near is +2. make it +2.00 |
|
if (mid.match(/\.$/)) { |
|
mid= mid + '00'; |
|
} |
|
if ((!mid.match(/\./))&&(mid.match(00|25|50|75))) { |
|
var front = mid.match(/(\d{0,2})(00|25|50|75)/)[1]; |
|
var back = mid.match(/(\d{0,2})(00|25|50|75)/)[2]; |
|
if (front =='') front ='0'; |
|
mid = front + "." + back; |
|
} |
|
if (!mid.match(/\./)) { |
|
var front = mid.match(/([\+\-]?\d{0,2})(\d{2})/)[1]; |
|
var back = mid.match(/(\d{0,2})(\d{2})/)[2]; |
|
if (front =='') front ='0'; |
|
if (front =='-') front ='-0'; |
|
mid = front + "." + back; |
|
} |
|
if (!mid.match(/^(\+|\-){1}/)) { |
|
mid = "+" + mid; |
|
} |
|
$(this).val(mid); |
|
}); |
|
|
|
$("input[class^='presbyopia'],input[name$='ADD'],#ODADD_1,#ODADD_2,#OSADD_1,#OSADD_2").on("blur", function() { |
|
var add = $(this).val(); |
|
add = add.replace(/=/g,"+"); |
|
//if add is one digit, eg. 2, make it +2.00 |
|
if (add.match(/^\d{1}$/)) { |
|
add = "+"+add+".00"; |
|
} |
|
//if add is '+'one digit, eg. +2, make it +2.00 |
|
if (add.match(/^\+\d{1}$/)) { |
|
add = add+".00"; |
|
} |
|
//if add is 2.5 or 2.0 make it 2.50 or 2.00 |
|
if (add.match(/\.[05]$/)) { |
|
add = add + '0'; |
|
} |
|
//if add is 2.2 or 2.7 make it 2.25 or 2.75 |
|
if (add.match(/\.[27]$/)) { |
|
add = add + '5'; |
|
} |
|
//if add is +2. make it +2.00 |
|
if (add.match(/\.$/)) { |
|
add = add + '00'; |
|
} |
|
if ((!add.match(/\./))&&(add.match(/(0|25|50|75)$/))) { |
|
var front = add.match(/([\+]?\d{0,1})(00|25|50|75)/)[1]; |
|
var back = add.match(/([\+]?\d{0,1})(00|25|50|75)/)[2]; |
|
if (front =='') front ='0'; |
|
add = front + "." + back; |
|
} |
|
if (!add.match(/^(\+)/) && (add.length > 0)) { |
|
add= "+" + add; |
|
} |
|
$(this).val(add); |
|
if (this.id=="ODADD_1") $('#OSADD_1').val(add); |
|
if (this.id=="ODMIDADD_1") $('#OSMIDADD_1').val(add); |
|
if (this.id=="ODADD_2") $('#OSADD_2').val(add); |
|
if (this.id=="ODMIDADD_2") $('#OSMIDADD_2').val(add); |
|
if (this.id=="ODADD_3") $('#OSADD_3').val(add); |
|
if (this.id=="ODMIDADD_3") $('#OSMIDADD_3').val(add); |
|
if (this.id=="ODADD_4") $('#OSADD_4').val(add); |
|
if (this.id=="ODMIDADD_4") $('#OSMIDADD_4').val(add); |
|
if (this.id=="ODADD_5") $('#OSADD_5').val(add); |
|
if (this.id=="ODMIDADD_5") $('#OSMIDADD_5').val(add); |
|
if (this.id=="MRODADD") $('#MROSADD').val(add); |
|
if (this.id=="ARODADD") $('#AROSADD').val(add); |
|
if (this.id=="CTLODADD") $('#CTLOSADD').val(add); |
|
}); |
|
|
|
$("input[class^='axis'],input[name$='AXIS']").on("blur", function() { |
|
// Make this a 3 digit leading zeros number. |
|
// we are not translating text to numbers, just numbers to |
|
// a 3 digit format with leading zeroes as needed. |
|
// assume the end user KNOWS there are only numbers presented and |
|
// more than 3 digits is a mistake... |
|
// (although this may change with topography) |
|
var axis = $(this).val(); |
|
if (this.name.match(/K2AXIS/)) { |
|
var group = this.name.replace("AXIS", ""); |
|
} else { |
|
var group = this.name.replace("AXIS", "CYL"); |
|
} |
|
var cyl = $("#"+group).val(); |
|
if ( (cyl > '') && (cyl != 'SPH') ) { |
|
if (!axis.match(/\d\d\d/)) { |
|
if (!axis.match(/\d\d/)) { |
|
if (!axis.match(/\d/)) { |
|
axis = '0'; |
|
} |
|
axis = '0' + axis; |
|
} |
|
axis = '0' + axis; |
|
} |
|
} else { |
|
axis = ''; |
|
} |
|
//we can utilize a phoropter dial feature, we can start them at their age appropriate with/against the rule value. |
|
//requires touch screen. requires complete touch interface development. Exists in refraction lanes. Would |
|
//be nice to tie them all together. Would require manufacturers to publish their APIs to communicate with |
|
//the devices. |
|
$(this).val(axis); |
|
}); |
|
$("input[class^='cylinder'],input[name$='CYL']").on("blur", function() { |
|
var mid = $(this).val(); |
|
var group = this.name.replace("CYL", "SPH");; |
|
var sphere = $("#"+group).val(); |
|
if (((mid.length == 0) && (sphere.length > 0))||(mid.match(/sph/i))) { |
|
$(this).val('SPH'); |
|
if (sphere.match(/plano/i)) $(this).val(''); |
|
var axis = this.name.replace("CYL", "AXIS"); |
|
$("#"+axis).val(''); |
|
submit_form($(this)); |
|
return; |
|
} else if (sphere.length > 0) { |
|
if (mid.match(/^[\+\-]?\d{1}$/)) { |
|
mid = mid+".00"; |
|
} |
|
if (mid.match(/^(\d)(\d)$/)) { |
|
mid = mid[0] + '.' +mid[1]; |
|
} |
|
|
|
//if mid is 2.5 or 2.0 make it 2.50 or 2.00 |
|
if (mid.match(/\.[05]$/)) { |
|
mid = mid + '0'; |
|
} |
|
//if mid is 2.2 or 2.7 make it 2.25 or 2.75 |
|
if (mid.match(/\.[27]$/)) { |
|
mid = mid + '5'; |
|
} |
|
//if mid is +2. make it +2.00 |
|
if (mid.match(/\.$/)) { |
|
mid = mid + '00'; |
|
} |
|
if (mid.match(/([\+\-]?\d{0,2})\.?(00|25|50|75)/)) { |
|
var front = mid.match(/([\+\-]?\d{0,2})\.?(00|25|50|75)/)[1]; |
|
var back = mid.match(/([\+\-]?\d{0,2})\.?(00|25|50|75)/)[2]; |
|
if (front =='') front ='0'; |
|
mid = front + "." + back; |
|
} |
|
if (!$('#PREFS_CYL').val()) { |
|
$('#PREFS_CYL').val('+'); |
|
update_PREFS(); |
|
} |
|
if (!mid.match(/^(\+|\-){1}/) && (sphere.length > 0)) { |
|
//no +/- sign at the start of the field. |
|
//ok so there is a preference set |
|
//Since it doesn't start with + or - then give it the preference value |
|
mid = $('#PREFS_CYL').val() + mid; |
|
} else if (mid.match(/^(\+|\-){1}/)) { |
|
pref = mid.match(/^(\+|\-){1}/)[0]; |
|
//so they used a value + or - at the start of the field. |
|
//The only reason to work on this is to change to cylinder preference |
|
if ($('#PREFS_CYL').val() != pref){ |
|
//and that is what they are doing here |
|
$('#PREFS_CYL').val(pref); |
|
update_PREFS(); |
|
} |
|
} |
|
$(this).val(mid); |
|
} |
|
}); |
|
//bootstrap menu functions |
|
$("[class='dropdown-toggle']").hover(function(){ |
|
$("[class='dropdown-toggle']").parent().removeClass('open'); |
|
var menuitem = this.id.match(/(.*)/)[1]; |
|
//if the menu is active through a prior click, show it |
|
// Have to override Bootstrap then |
|
if ($("#menustate").val() !="1") { //menu not active -> ignore |
|
$("#"+menuitem).css("background-color", "#C9DBF2"); |
|
$("#"+menuitem).css("color","#000"); /*#262626;*/ |
|
} else { //menu is active -> respond |
|
$("#"+menuitem).css("background-color", "#1C5ECF"); |
|
$("#"+menuitem).css("color","#fff"); /*#262626;*/ |
|
$("#"+menuitem).css("text-decoration","none"); |
|
$("#"+menuitem).parent().addClass('open'); |
|
} |
|
},function() { |
|
var menuitem = this.id.match(/(.*)/)[1]; |
|
$("#"+menuitem).css("color","#000"); /*#262626;*/ |
|
$("#"+menuitem).css("background-color", "#C9DBF2"); |
|
} |
|
); |
|
$("[class='dropdown-toggle']").on('click', function() { |
|
$("#menustate").val('1'); |
|
var menuitem = this.id.match(/(.*)/)[1]; |
|
$("#"+menuitem).css("background-color", "#1C5ECF"); |
|
$("#"+menuitem).css("color","#fff"); /*#262626;*/ |
|
$("#"+menuitem).css("text-decoration","none"); |
|
}); |
|
$("#right-panel-link, #close-panel-bt,#right-panel-link_2").on('click', function() { |
|
if ($("#PREFS_PANEL_RIGHT").val() =='1') { |
|
$("#PREFS_PANEL_RIGHT").val('0'); |
|
} else { |
|
$("#PREFS_PANEL_RIGHT").val('1'); |
|
} |
|
update_PREFS(); |
|
}); |
|
$("[name^='menu_']").on('click', function() { |
|
$("[name^='menu_']").removeClass('active'); |
|
var menuitem = this.id.match(/menu_(.*)/)[1]; |
|
$(this).addClass('active'); |
|
$("#menustate").val('1'); |
|
if (menuitem =='left_tabs') { |
|
var tabs_left = $("#setting_tabs_left").val(); |
|
if (tabs_left == '1') { |
|
$("#tabs_left").addClass('nodisplay'); |
|
$("#setting_tabs_left").val('0'); |
|
} else { |
|
$("#tabs_left").removeClass('nodisplay'); |
|
$("#setting_tabs_left").val('1'); |
|
} |
|
update_PREFS(); |
|
} else { |
|
$("#BUTTON_TAB_"+menuitem).trigger('click'); |
|
$("#tabs-left-"+menuitem).trigger('click'); |
|
menu_select(menuitem); |
|
} |
|
}); |
|
|
|
// set display functions for Draw panel appearance |
|
// for each DRAW area, if the value AREA_DRAW = 1, show it. |
|
var zones = ["PMH","HPI","EXT","ANTSEG","POSTSEG","NEURO","IMPPLAN"]; |
|
for (index = '0'; index < zones.length; ++index) { |
|
if ($("#PREFS_"+zones[index]+"_RIGHT").val() =='DRAW') { |
|
show_DRAW_section(zones[index]); |
|
} else if ($("#PREFS_"+zones[index]+"_RIGHT").val() =='QP') { |
|
show_QP_section(zones[index],'1'); |
|
} |
|
} |
|
$("body").on("click","[name$='_text_view']" , function() { |
|
var header = this.id.match(/(.*)_text_view$/)[1]; |
|
$("#"+header+"_text_list").toggleClass('wide_textarea'); |
|
$("#"+header+"_text_list").toggleClass('narrow_textarea'); |
|
$(this).toggleClass('fa-plus-square-o'); |
|
$(this).toggleClass('fa-minus-square-o'); |
|
if (header != /PRIOR/) { |
|
var imagine = $("#PREFS_"+header+"_VIEW").val(); |
|
imagine ^= true; |
|
$("#PREFS_"+header+"_VIEW").val(imagine); |
|
update_PREFS(); |
|
} |
|
return false; |
|
}); |
|
$("body").on("change", "select", function(e){ |
|
if (this.name.match(/PRIOR_(.*)/)) { |
|
var new_section = this.name.match(/PRIOR_(.*)/); |
|
var newValue = this.value; |
|
if (new_section[1] =='') return; |
|
if (new_section[1].match(/_canvas/)) { |
|
goto_section = new_section[1].match(/_canvas/)[1]; |
|
show_PRIOR_CANVAS_section(goto_section,newValue); |
|
return; |
|
} |
|
|
|
if (new_section[1] == /\_/){ |
|
return; |
|
} |
|
var newValue = this.value; |
|
if (newValue == $("#form_id").val()) { |
|
if (new_section[1] =="ALL") { |
|
//click updates prefs too |
|
$('#EXAM_QP').trigger("click"); |
|
|
|
} else { |
|
$('#BUTTON_QP_'+new_section[1]).trigger("click").trigger("click");//double click intended RM |
|
} |
|
$("#LayerTechnical_sections_1").css("clear","both"); |
|
return; |
|
} |
|
//now go get the prior page via ajax |
|
$("#PRIORS_"+ new_section[1] +"_left_text").removeClass('nodisplay'); |
|
$("#DRAWS_" + new_section[1] + "_right").addClass('nodisplay'); |
|
$("#QP_" + new_section[1]).addClass('nodisplay'); |
|
|
|
if (new_section[1] =="ALL") { |
|
show_PRIORS(); |
|
show_PRIORS_section("ALL",newValue); |
|
show_PRIORS_section("EXT",newValue); |
|
show_PRIORS_section("ANTSEG",newValue); |
|
show_PRIORS_section("RETINA",newValue); |
|
show_PRIORS_section("NEURO",newValue); |
|
show_PRIORS_section("IMPPLAN",newValue); |
|
scrollTo("EXT_left"); |
|
} else { |
|
show_PRIORS_section(new_section[1],newValue); |
|
} |
|
} |
|
}); |
|
|
|
|
|
$("body").on("click","[name^='old_canvas']", function() { |
|
//get zone |
|
//het h.step from SELECT_CANVAS_" . attr($zone) . " |
|
var h = $(this).data(); |
|
var target = h.target; |
|
var direction = h.direction; |
|
var select = document.getElementById(target); |
|
var len = select.getElementsByTagName('option').length-1; |
|
var t = $("#"+target).data(); |
|
var index=t.step; |
|
if (direction=="oldest") { |
|
index=len; |
|
next = select.getElementsByTagName('option')[index]; |
|
if(typeof next !== undefined) { |
|
select.options[index].selected = 'selected'; |
|
} |
|
} else if (direction=="older") { |
|
index++; |
|
next = select.getElementsByTagName('option')[index]; |
|
if(typeof next !== undefined && index <= len) { |
|
select.options[index].selected = 'selected'; |
|
} else { |
|
index=len; |
|
} |
|
} else if (direction=="newer") { |
|
index--; |
|
next = select.getElementsByTagName('option')[index]; |
|
if (typeof next !== undefined && index >= 0) { |
|
select.options[index].selected = 'selected'; |
|
} else { |
|
index = 0; |
|
select.options[index].selected = 'selected'; |
|
} |
|
} else if (direction=="newest") { |
|
index='0'; |
|
next = select.getElementsByTagName('option')[index]; |
|
if(typeof next !== undefined) { |
|
select.options[index].selected = 'selected'; |
|
} |
|
} |
|
t.step=index; |
|
$("#"+target).trigger('change'); |
|
}); |
|
|
|
|
|
$("body").on("click","[id^='Close_PRIORS_']", function() { |
|
var new_section = this.id.match(/Close_PRIORS_(.*)$/)[1]; |
|
$("#PRIORS_"+ new_section +"_left_text").addClass('nodisplay'); |
|
$("#QP_" + new_section).removeClass('nodisplay'); |
|
}); |
|
$("#pupils,#vision_tab,[name='CTL'],[name^='more_'],#ACTTRIGGER").on("mouseover", function() { |
|
$(this).toggleClass('buttonRefraction_selected').toggleClass('underline').css( 'cursor', 'pointer' ); |
|
}); |
|
$("#pupils,#vision_tab,[name='CTL']").on("mouseout", function() { |
|
$(this).toggleClass('buttonRefraction_selected').toggleClass('underline'); |
|
}); |
|
$("#pupils").on("click", function(){ |
|
if ($("#dim_pupils_panel").hasClass("nodisplay")) { |
|
$("#dim_pupils_panel").removeClass('nodisplay'); |
|
} else { |
|
$("#dim_pupils_panel").fadeToggle(); |
|
} |
|
}); |
|
$("#vision_tab").on("click", function(){ |
|
$("#REFRACTION_sections").toggleClass('nodisplay'); |
|
($("#PREFS_VA").val() =='1') ? ($("#PREFS_VA").val('0')) : $("#PREFS_VA").val('1'); |
|
}); |
|
//set wearing to single vision or bifocal? Bifocal |
|
$(".WNEAR").removeClass('nodisplay'); |
|
$("#WNEARODAXIS").addClass('nodisplay'); |
|
$("#WNEARODCYL").addClass('nodisplay'); |
|
$("#WNEARODPRISM").addClass('nodisplay'); |
|
$("#WNEAROSAXIS").addClass('nodisplay'); |
|
$("#WNEAROSCYL").addClass('nodisplay'); |
|
$("#WNEAROSPRISM").addClass('nodisplay'); |
|
$("#Single").on("click", function(){ |
|
$("#WNEARODAXIS").addClass('nodisplay'); |
|
$("#WNEARODCYL").addClass('nodisplay'); |
|
$("#WNEARODPRISM").addClass('nodisplay'); |
|
$("#WODADD2").addClass('nodisplay'); |
|
$("#WOSADD2").addClass('nodisplay'); |
|
$("#WNEAROSAXIS").addClass('nodisplay'); |
|
$("#WNEAROSCYL").addClass('nodisplay'); |
|
$("#WNEAROSPRISM").addClass('nodisplay'); |
|
$(".WSPACER").removeClass('nodisplay'); |
|
}); |
|
$("#Bifocal").on("click", function(){ |
|
$(".WSPACER").addClass('nodisplay'); |
|
$(".WNEAR").removeClass('nodisplay'); |
|
$(".WMid").addClass('nodisplay'); |
|
$(".WHIDECYL").removeClass('nodisplay'); |
|
$("[name=RX]").val(["1"]); |
|
$("#WNEARODAXIS").addClass('nodisplay'); |
|
$("#WNEARODCYL").addClass('nodisplay'); |
|
$("#WNEARODPRISM").addClass('nodisplay'); |
|
$("#WNEAROSAXIS").addClass('nodisplay'); |
|
$("#WNEAROSCYL").addClass('nodisplay'); |
|
$("#WNEAROSPRISM").addClass('nodisplay'); |
|
$("#WODADD2").removeClass('nodisplay'); |
|
$("#WOSADD2").removeClass('nodisplay'); |
|
}); |
|
$("#Trifocal").on("click", function(){ |
|
$(".WSPACER").addClass('nodisplay'); |
|
$(".WNEAR").removeClass('nodisplay'); |
|
$(".WMid").removeClass('nodisplay'); |
|
$(".WHIDECYL").addClass('nodisplay'); |
|
$("[name=RX]").val(["2"]); |
|
$("#WNEARODAXIS").addClass('nodisplay'); |
|
$("#WNEARODCYL").addClass('nodisplay'); |
|
$("#WNEARODPRISM").addClass('nodisplay'); |
|
$("#WNEAROSAXIS").addClass('nodisplay'); |
|
$("#WNEAROSCYL").addClass('nodisplay'); |
|
$("#WNEAROSPRISM").addClass('nodisplay'); |
|
$("#WODADD2").removeClass('nodisplay'); |
|
$("#WOSADD2").removeClass('nodisplay'); |
|
}); |
|
$("#Progressive").on("click", function(){ |
|
$(".WSPACER").addClass('nodisplay'); |
|
$(".WNEAR").removeClass('nodisplay'); |
|
$(".WMid").addClass('nodisplay'); |
|
$(".WHIDECYL").removeClass('nodisplay'); |
|
$("[name=RX]").val(["3"]); |
|
$("#WNEARODAXIS").addClass('nodisplay'); |
|
$("#WNEARODCYL").addClass('nodisplay'); |
|
$("#WNEARODPRISM").addClass('nodisplay'); |
|
$("#WNEAROSAXIS").addClass('nodisplay'); |
|
$("#WNEAROSCYL").addClass('nodisplay'); |
|
$("#WNEAROSPRISM").addClass('nodisplay'); |
|
$("#WODADD2").removeClass('nodisplay'); |
|
$("#WOSADD2").removeClass('nodisplay'); |
|
}); |
|
$("[name=W_width_display]").on("click", function() { |
|
if ($("#PREFS_W_width").val() !="1") { |
|
$("#PREFS_W_width").val('1'); |
|
//make each display W wide |
|
$("[name=currentRX]").addClass('refraction_wide'); |
|
$("[name=W_wide]").removeClass('nodisplay'); |
|
$("[name=W_wide2]").removeClass('nodisplay'); |
|
} else { |
|
$("#PREFS_W_width").val('0'); |
|
//make each display W narrow |
|
$("[name=currentRX]").removeClass('refraction_wide'); |
|
$("[name=W_wide]").addClass('nodisplay'); |
|
$("[name=W_wide2]").addClass('nodisplay'); |
|
} |
|
update_PREFS(); |
|
|
|
}); |
|
if ($("#PREFS_W_width").val() == '1') { |
|
$("[name=W_wide]").removeClass('nodisplay'); |
|
$("[name=W_wide2]").removeClass('nodisplay') |
|
} else { |
|
$("[name=W_wide]").addClass('nodisplay'); |
|
$("[name=W_wide2]").addClass('nodisplay'); |
|
} |
|
$("#Amsler-Normal").on("change", function() { |
|
if ($(this).is(':checked')) { |
|
var number1 = document.getElementById("AmslerOD").src.match(/(Amsler_\d)/)[1]; |
|
document.getElementById("AmslerOD").src = document.getElementById("AmslerOD").src.replace(number1,"Amsler_0"); |
|
var number2 = document.getElementById("AmslerOS").src.match(/(Amsler_\d)/)[1]; |
|
document.getElementById("AmslerOS").src = document.getElementById("AmslerOS").src.replace(number2,"Amsler_0"); |
|
$("#AMSLEROD").val("0"); |
|
$("#AMSLEROS").val("0"); |
|
$("#AmslerODvalue").text("0"); |
|
$("#AmslerOSvalue").text("0"); |
|
submit_form("eye_mag"); |
|
return; |
|
} |
|
}); |
|
$("#PUPIL_NORMAL").on("change", function() { |
|
if ($(this).is(':checked')) { |
|
$("#ODPUPILSIZE1").val('3.0'); |
|
$("#OSPUPILSIZE1").val('3.0'); |
|
$("#ODPUPILSIZE2").val('2.0'); |
|
$("#OSPUPILSIZE2").val('2.0'); |
|
$("#ODPUPILREACTIVITY").val('+2'); |
|
$("#OSPUPILREACTIVITY").val('+2'); |
|
$("#ODAPD").val('0'); |
|
$("#OSAPD").val('0'); |
|
submit_form("eye_mag"); |
|
return; |
|
} |
|
}); |
|
$("[name$='PUPILREACTIVITY']").on("change", function() { |
|
var react = $(this).val(); |
|
if (react.match(/^\d{1}$/)) { |
|
react = "+"+react; |
|
} |
|
$(this).val(react); |
|
}); |
|
|
|
$("[name^='EXAM']").on("mouseover", function(){ |
|
$(this).toggleClass("borderShadow2").css( 'cursor', 'pointer' ); |
|
}); |
|
$("[name^='EXAM']").on("mouseout", function(){ |
|
$(this).toggleClass("borderShadow2"); |
|
}); |
|
$("#AmslerOD, #AmslerOS").on("click", function() { |
|
if ($('#chart_status').val() !="on") return; |
|
var number1 = this.src.match(/Amsler_(\d)/)[1]; |
|
var number2 = +number1 +1; |
|
this.src = this.src.replace('Amsler_'+number1,'Amsler_'+number2); |
|
this.src = this.src.replace('Amsler_6','Amsler_0'); |
|
$("#Amsler-Normal").removeAttr('checked'); |
|
var number3 = this.src.match(/Amsler_(\d)/)[1]; |
|
this.html = number3; |
|
if (number3 =="6") { |
|
number3 = "0"; |
|
} |
|
if ($(this).attr("id")=="AmslerOD") { |
|
$("#AmslerODvalue").text(number3); |
|
$('#AMSLEROD').val(number3); |
|
} else { |
|
$('#AMSLEROS').val(number3); |
|
$("#AmslerOSvalue").text(number3); |
|
} |
|
var title = "#"+$(this).attr("id")+"_tag"; |
|
}); |
|
|
|
$("#AmslerOD, #AmslerOS").on("mouseout", function() { |
|
submit_form("eye_mag"); |
|
}); |
|
$("[name^='ODVF'],[name^='OSVF']").on("click", function() { |
|
if ($(this).is(':checked') == true) { |
|
$("#FieldsNormal").prop('checked', false); |
|
$(this).val('1'); |
|
}else{ |
|
$(this).val('0'); |
|
$(this).prop('checked', false); |
|
} |
|
submit_form("eye_mag"); |
|
}); |
|
$("#FieldsNormal").on("click", function() { |
|
if ($(this).is(':checked')) { |
|
$("#ODVF1").removeAttr('checked'); |
|
$("#ODVF2").removeAttr('checked'); |
|
$("#ODVF3").removeAttr('checked'); |
|
$("#ODVF4").removeAttr('checked'); |
|
$("#OSVF1").removeAttr('checked'); |
|
$("#OSVF2").removeAttr('checked'); |
|
$("#OSVF3").removeAttr('checked'); |
|
$("#OSVF4").removeAttr('checked'); |
|
} |
|
}); |
|
$("[id^='EXT_prefix']").on("change", function() { |
|
var newValue =$('#EXT_prefix').val(); |
|
newValue = newValue.replace('+', ''); |
|
if (newValue =="off") {$(this).val('');} |
|
if (newValue =="clear") { |
|
if (confirm('\tSelect OK to clear all the External Exam values\t\n\t or CANCEL to continue.\t')) { |
|
$(this).val(''); |
|
$(".EXT").val(''); |
|
} |
|
} else { |
|
$("[name^='EXT_prefix_']").removeClass('eye_button_selected'); |
|
$("#EXT_prefix_"+ newValue).addClass("eye_button_selected"); |
|
} |
|
}); |
|
$("#ANTSEG_prefix").on("change", function() { |
|
var newValue = $(this).val().replace('+', ''); |
|
if ($(this).value =="off") {$(this).val('');} |
|
if (newValue =="clear") { |
|
if (confirm('\tSelect OK to clear all the Anterior Segment Exam values\t\n\t or CANCEL to continue.\t')) { |
|
$(this).val(''); |
|
$(".ANTSEG").val(''); |
|
} |
|
} else { |
|
$("[name^='ANTSEG_prefix_']").removeClass('eye_button_selected'); |
|
$("#ANTSEG_prefix_"+ newValue).addClass("eye_button_selected"); |
|
} |
|
}); |
|
$("#RETINA_prefix").on("change", function() { |
|
var newValue = $("#RETINA_prefix").val().replace('+', ''); |
|
if ($(this).value =="off") {$(this).val('');} |
|
if (newValue =="clear") { |
|
if (confirm('\tSelect OK to clear all the Retina Exam values\t\n\t or CANCEL to continue.\t')) { |
|
$(this).val(''); |
|
$(".RETINA").val(''); |
|
} |
|
} else { |
|
$("[name^='RETINA_prefix_']").removeClass('eye_button_selected'); |
|
$("#RETINA_prefix_"+ newValue).addClass("eye_button_selected"); |
|
} |
|
}); |
|
$("#NEURO_ACT_zone").on("change", function() { |
|
var newValue = $(this).val(); |
|
$("[name^='NEURO_ACT_zone']").removeClass('eye_button_selected'); |
|
$("#NEURO_ACT_zone_"+ newValue).addClass("eye_button_selected"); |
|
$("#PREFS_ACT_SHOW").val(newValue); |
|
update_PREFS; |
|
$("#ACT_tab_"+newValue).trigger('click'); |
|
}); |
|
$("#NEURO_side").on("change", function() { |
|
var newValue = $(this).val(); |
|
$("[name^='NEURO_side']").removeClass('eye_button_selected'); |
|
$("#NEURO_side_"+ newValue).addClass("eye_button_selected"); |
|
}); |
|
$('.ACT').on('focus', function() { |
|
var id = this.id.match(/ACT(\d*)/); |
|
$('#NEURO_field').val(''+id[1]).trigger('change'); |
|
}); |
|
$("#NEURO_field").on("change", function() { |
|
var newValue = $(this).val(); |
|
$("[name^='NEURO_field']").removeClass('eye_button_selected'); |
|
$("#NEURO_field_"+ newValue).addClass("eye_button_selected"); |
|
$('.ACT').each(function(i){ |
|
var color = $(this).css('background-color'); |
|
if ((color == 'rgb(255, 255, 153)')) {// =='blue' <- IE hack |
|
$(this).css("background-color","red"); |
|
} |
|
}); |
|
//change to highlight field in zone entry is for |
|
var zone = $("#NEURO_ACT_zone").val(); |
|
$("#ACT"+newValue+zone).css("background-color","yellow"); |
|
}); |
|
$("[name^='NEURO_ACT_strab']").on("click", function() { |
|
var newValue = $(this).val(); |
|
$("[name^='NEURO_ACT_strab']").removeClass('eye_button_selected'); |
|
$(this).addClass("eye_button_selected"); |
|
}); |
|
$("#NEURO_value").on("change", function() { |
|
var newValue = $(this).val(); |
|
$("[name^='NEURO_value']").removeClass('eye_button_selected'); |
|
$("#NEURO_value_"+ newValue).addClass("eye_button_selected"); |
|
if (newValue == "ortho") { |
|
$("#NEURO_ACT_strab").val(''); |
|
$("[name^='NEURO_ACT_strab']").removeClass('eye_button_selected'); |
|
$("#NEURO_side").val(''); |
|
$("[name^='NEURO_side']").removeClass('eye_button_selected'); |
|
} |
|
}); |
|
$("#NEURO_RECORD").on("mouseover", function() { |
|
$("#NEURO_RECORD").addClass('borderShadow2').css( 'cursor', 'pointer' ); |
|
}); |
|
$("#NEURO_RECORD").on("mouseout", function() { |
|
$("#NEURO_RECORD").removeClass('borderShadow2'); |
|
}); |
|
$("#NEURO_RECORD").on("mousedown", function() { |
|
$("#NEURO_RECORD").removeClass('borderShadow2'); |
|
$(this).toggleClass('button_over'); |
|
}); |
|
$("#NEURO_RECORD").on("mouseup", function() { |
|
$("#NEURO_RECORD").removeClass('borderShadow2'); |
|
$(this).toggleClass('button_over'); |
|
}); |
|
$("#NEURO_RECORD").on("click", function() { |
|
//find out the field we are updating |
|
var number = $("#NEURO_field").val(); |
|
var zone = $("#NEURO_ACT_zone").val(); |
|
var strab = $("#NEURO_value").val() + ' '+ $("#NEURO_side").val() + $("#NEURO_ACT_strab").val(); |
|
|
|
$("#ACT"+number+zone).val(strab).css("background-color","#F0F8FF"); |
|
|
|
|
|
}); |
|
|
|
$("#LayerMood,#LayerVision, #LayerTension, #LayerMotility, #LayerAmsler, #LayerFields, #LayerPupils,#dim_pupils_panel,#PRIORS_ALL_left_text").on("mouseover", function(){ |
|
$(this).addClass("borderShadow2"); |
|
}); |
|
$("#LayerMood,#LayerVision, #LayerTension, #LayerMotility, #LayerAmsler, #LayerFields, #LayerPupils,#dim_pupils_panel,#PRIORS_ALL_left_text").on("mouseout", function(){ |
|
$(this).removeClass("borderShadow2"); |
|
}); |
|
$("[id$='_lightswitch']").on("click", function() { |
|
var section = "#"+this.id.match(/(.*)_lightswitch$/)[1]; |
|
var section2 = this.id.match(/(.*)_(.*)_lightswitch$/)[2]; |
|
var elem = document.getElementById("PREFS_"+section2); |
|
$("#PREFS_VA").val('0'); |
|
if (section2 != "IOP")$("#REFRACTION_sections").removeClass('nodisplay'); |
|
if (elem.value == "0" || elem.value =='') { |
|
elem.value='1'; |
|
if (section2 =="ADDITIONAL") { |
|
$("#LayerVision_ADDITIONAL").removeClass('nodisplay'); |
|
} |
|
if (section2 =="IOP") { |
|
$("#LayerVision_IOP").removeClass('nodisplay'); |
|
//plot_IOPs(); |
|
} |
|
$(section).removeClass('nodisplay'); |
|
$(this).addClass("buttonRefraction_selected"); |
|
} else { |
|
elem.value='0'; |
|
$(section).addClass('nodisplay'); |
|
if (section2 =="VAX") { |
|
$("#LayerVision_ADDITIONAL_VISION").addClass('nodisplay'); |
|
} |
|
if (section2 =="IOP") { |
|
$("#LayerVision_IOP").addClass('nodisplay'); |
|
} |
|
$(this).removeClass("buttonRefraction_selected"); |
|
} |
|
$(this).css( 'cursor', 'pointer' ); |
|
update_PREFS(); |
|
}); |
|
|
|
$('[id$=_lightswitch]').on("mouseover", function() { |
|
$(this).addClass('buttonRefraction_selected').css( 'cursor', 'pointer' ); |
|
|
|
var section = this.id.match(/(.*)_(.*)_lightswitch$/)[2]; |
|
if (section == 'IOP') { |
|
$("#LayerTension").addClass("borderShadow2"); |
|
} else { |
|
$("#LayerVision").addClass("borderShadow2"); |
|
} |
|
}); |
|
$('[id$=_lightswitch]').on('mouseout', function() { |
|
var section2 = this.id.match(/(.*)_(.*)_lightswitch$/)[2]; |
|
var elem = document.getElementById("PREFS_"+section2); |
|
|
|
if (elem.value != "1") { |
|
$(this).removeClass('buttonRefraction_selected'); |
|
} else { |
|
$(this).addClass('buttonRefraction_selected'); |
|
} }); |
|
|
|
// let users enter "=" sign for "+" to cut down on keyboard movements (keyCode 61) |
|
// "+" == "shift" + "=" ==> now "=" == "+", "j" ==> "J" for Jaeger acuity (keyCode 74) |
|
// "-" is still == "-" |
|
$("input[class^='jaeger'],input[name$='VA'],input[name$='VA_copy'],input[name$='VA_copy_brd'],input[name$='SPH'],input[name$='CYL'],input[name$='REACTIVITY'],input[name$='APD']").on('keyup', function(e) { |
|
if (e.keyCode=='61' || e.keyCode=='74') { |
|
now = $(this).val(); |
|
now = now.replace(/=/g,"+").replace(/^j/g,"J"); |
|
$(this).val(now); |
|
} |
|
}); |
|
//useful to make all VA fields stay in sync |
|
$("input[name$='VA']").on('change',function() { |
|
var hereValue = $(this).val(); |
|
var newValue = $(this).attr('name').replace('VA', 'VA_copy'); |
|
$("#" + newValue).val(hereValue).css("background-color","#F0F8FF");; |
|
$("#" + newValue + "_brd").val(hereValue).css("background-color","#F0F8FF");; |
|
}); |
|
$("input[class^='jaeger'],input[name$='VA_1']").on('change',function() { |
|
var hereValue = $(this).val(); |
|
hereValue = hereValue.replace(/=$/g,"+").replace(/^j/g,"J"); |
|
$(this).val(hereValue); |
|
if (this.name.match(/_1$/)) { |
|
var newValue = $(this).attr('name').replace('VA_1', 'VA_1_copy'); |
|
$("#" + newValue).val(hereValue).css("background-color","#F0F8FF");; |
|
$("#" + newValue + "_brd").val(hereValue).css("background-color","#F0F8FF"); |
|
} |
|
}); |
|
|
|
$("input[name$='_copy']").on("blur", function() { |
|
var hereValue = $(this).val(); |
|
var newValue = $(this).attr('name').replace('_copy', ''); |
|
$("#" + newValue).val(hereValue).css("background-color","#F0F8FF");; |
|
$("#" + newValue + "_copy_brd").val(hereValue).css("background-color","#F0F8FF");; |
|
}); |
|
$("input[name$='_copy_brd']").on("change", function() { |
|
var hereValue = $(this).val(); |
|
var newValue = $(this).attr('name').replace('_copy_brd', ''); |
|
$("#" + newValue).val(hereValue).css("background-color","#F0F8FF");; |
|
$("#" + newValue + "_copy").val(hereValue).css("background-color","#F0F8FF");; |
|
}); |
|
$("[name^='more_']").on("mouseout", function() { |
|
$(this).toggleClass('buttonRefraction_selected').toggleClass('underline'); |
|
}); |
|
$("[name^='more_']").on("click", function() { |
|
$("#Visions_A").toggleClass('nodisplay'); |
|
$("#Visions_B").toggleClass('nodisplay'); |
|
}); |
|
$("#EXAM_defaults").on("click", function() { |
|
if (!confirm('<?php echo xla("Replace all exam findings with Default values? Are you sure?"); ?>')) { |
|
return; |
|
} |
|
<?php |
|
// This query is specific to the provider. |
|
$query = "select seq from list_options where option_id=?"; |
|
$result = sqlStatement($query, array("Eye_defaults_$providerID")); |
|
|
|
$list = sqlFetchArray($result); |
|
$SEQ = $list['seq']; |
|
if (!$SEQ) { |
|
// If there is no list for this provider, we create it here. |
|
// This list is part of the idea to create a way to add Eye_Defaults_$providerID specific to the |
|
// subspecialty of the doctor. ie. Eye_defaults_for_GENERAL (the only one that exists today) |
|
// or Eye_defaults_for_CORNEA, RETINA, NEURO, PLASTICS, REFRACTIVE, PEDS, UVEITIS |
|
// Let's see if the public likes the form itself before developing these subspecialty lists... |
|
|
|
//Copy the Eye_Defaults_for_GENERAL to Eye_defaults_$providerID |
|
$sql = "SELECT * from list_options where list_id = 'Eye_Defaults_for_GENERAL'"; |
|
$start = sqlStatement($sql); |
|
$add_fields = array(); |
|
while ($val = sqlFetchArray($start)) { |
|
$parameters .= "(?, ?, ?, ?, ?, ?),"; |
|
array_push($add_fields, "Eye_defaults_" . $providerID, $val['option_id'], $val['title'], $val['notes'], '1', $val['seq']); |
|
} |
|
$parameters = rtrim($parameters, ","); |
|
$query = "SELECT max(seq) as maxseq FROM list_options WHERE list_id= 'lists'"; |
|
$pres = sqlStatement($query); |
|
$maxseq = sqlFetchArray($pres); |
|
|
|
$seq = $maxseq['maxseq']; |
|
$query = "INSERT INTO `list_options` |
|
(`list_id`, `option_id`, `title`, `seq`, `is_default`, `option_value`, `mapping`, `notes`, `codes`) VALUES |
|
('lists', ?, ?, ?, '1', '0', '', '', '')"; |
|
$providerNAME = getProviderName($providerID); |
|
|
|
sqlStatement($query, array("Eye_defaults_$providerID","Eye Exam Defaults $providerNAME ",$seq)); |
|
$query = "INSERT INTO `list_options` (`list_id`, `option_id`, `title`,`notes`,`activity`,`seq`) VALUES " . $parameters; |
|
sqlStatement($query, $add_fields); |
|
} |
|
|
|
$query = "select * from list_options where list_id =? and activity='1' order by seq"; |
|
|
|
$DEFAULT_data = sqlStatement($query, array("Eye_defaults_$providerID")); |
|
while ($row = sqlFetchArray($DEFAULT_data)) { |
|
//$row['notes'] is the clinical zone (EXT,ANTSEG,RETINA,NEURO) |
|
//$row['option_id'] is the field name |
|
//$row['title'] is the default value to use for this provider |
|
${$row['notes']}[$row['option_id']] = $row['title']; //This builds each clinical section into its own array (used below) |
|
echo '$("#' . $row['option_id'] . '").val("' . $row['title'] . '").css("background-color","beige"); |
|
'; |
|
} |
|
function startsWith($str, $needle) |
|
{ |
|
return substr($str, 0, strlen($needle)) === $needle; |
|
} |
|
?> |
|
submit_form("eye_mag"); |
|
}); |
|
$("#EXT_defaults_R").on("click", function() { |
|
<?php |
|
foreach ($EXT as $item => $value) { |
|
if (startsWith($item, "R")) { |
|
echo '$("#' . $item . '").val("' . $value . '").css("background-color","beige"); |
|
'; |
|
} |
|
} |
|
?> |
|
submit_form("eye_mag"); |
|
|
|
}); |
|
$("#EXT_defaults_L").on("click", function() { |
|
<?php |
|
foreach ($EXT as $item => $value) { |
|
if (startsWith($item, "L")) { |
|
echo '$("#' . $item . '").val("' . $value . '").css("background-color","beige"); |
|
'; |
|
} |
|
} |
|
?> |
|
submit_form("eye_mag"); |
|
}); |
|
$("#EXT_defaults").on("click", function() { |
|
$("#EXT_defaults_L").trigger('click'); |
|
$("#EXT_defaults_R").trigger('click'); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#EXT_R_L").on('click', function () { |
|
$("#LBROW").val($("#RBROW").val()); |
|
$("#LUL").val($("#RUL").val()); |
|
$("#LLL").val($("#RLL").val()); |
|
$("#LMCT").val($("#RMCT").val()); |
|
$("#LADNEXA").val($("#RADNEXA").val()); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#EXT_L_R").on('click', function () { |
|
$("#RBROW").val($("#LBROW").val()); |
|
$("#RUL").val($("#LUL").val()); |
|
$("#RLL").val($("#LLL").val()); |
|
$("#RMCT").val($("#LMCT").val()); |
|
$("#RADNEXA").val($("#LADNEXA").val()); |
|
submit_form("eye_mag"); |
|
}); |
|
$("#ANTSEG_defaults_OD").on("click", function() { |
|
<?php |
|
foreach ($ANTSEG as $item => $value) { |
|
if (startsWith($item, "OD")) { |
|
echo '$("#' . $item . '").val("' . $value . '").css("background-color","beige"); |
|
'; |
|
} |
|
} |
|
?> |
|
submit_form("eye_mag"); |
|
|
|
}); |
|
$("#ANTSEG_defaults_OS").on("click", function() { |
|
<?php |
|
foreach ($ANTSEG as $item => $value) { |
|
if (startsWith($item, "OS")) { |
|
echo '$("#' . $item . '").val("' . $value . '").css("background-color","beige"); |
|
'; |
|
} |
|
} |
|
?> |
|
submit_form("eye_mag"); |
|
}); |
|
$("#ANTSEG_defaults").on("click", function() { |
|
$("#ANTSEG_defaults_OD").trigger('click'); |
|
$("#ANTSEG_defaults_OS").trigger('click'); |
|
submit_form("eye_mag"); |
|
}); |
|
$("#ANTSEG_OD_OS").on('click', function () { |
|
$("#OSCONJ").val($("#ODCONJ").val()); |
|
$("#OSCORNEA").val($("#ODCORNEA").val()); |
|
$("#OSAC").val($("#ODAC").val()); |
|
$("#OSLENS").val($("#ODLENS").val()); |
|
$("#OSIRIS").val($("#ODIRIS").val()); |
|
submit_form("eye_mag"); |
|
}); |
|
$("#ANTSEG_OS_OD").on('click', function () { |
|
$("#ODCONJ").val($("#OSCONJ").val()); |
|
$("#ODCORNEA").val($("#OSCORNEA").val()); |
|
$("#ODAC").val($("#OSAC").val()); |
|
$("#ODLENS").val($("#OSLENS").val()); |
|
$("#ODIRIS").val($("#OSIRIS").val()); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#RETINA_OD_OS").on('click', function () { |
|
$("#OSDISC").val($("#ODDISC").val()); |
|
$("#OSCUP").val($("#ODCUP").val()); |
|
$("#OSMACULA").val($("#ODMACULA").val()); |
|
$("#OSVESSELS").val($("#ODVESSELS").val()); |
|
$("#OSVITREOUS").val($("#ODVITREOUS").val()); |
|
$("#OSPERIPH").val($("#ODPERIPH").val()); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#RETINA_OS_OD").on('click', function () { |
|
$("#ODDISC").val($("#OSDISC").val()); |
|
$("#ODCUP").val($("#OSCUP").val()); |
|
$("#ODMACULA").val($("#OSMACULA").val()); |
|
$("#ODVESSELS").val($("#OSVESSELS").val()); |
|
$("#ODVITREOUS").val($("#OSVITREOUS").val()); |
|
$("#ODPERIPH").val($("#OSPERIPH").val()); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#clear_EXT_L").on('click', function () { |
|
$("#LBROW").val(''); |
|
$("#LUL").val(''); |
|
$("#LLL").val(''); |
|
$("#LMCT").val(''); |
|
$("#LADNEXA").val(''); |
|
$("#LLF").val(''); |
|
$("#LMRD").val(''); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#clear_EXT_R").on('click', function () { |
|
$("#RBROW").val(''); |
|
$("#RUL").val(''); |
|
$("#RLL").val(''); |
|
$("#RMCT").val(''); |
|
$("#RADNEXA").val(''); |
|
$("#RLF").val(''); |
|
$("#RMRD").val(''); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#RETINA_defaults_OD").on("click", function() { |
|
<?php |
|
foreach ($RETINA as $item => $value) { |
|
if (startsWith($item, "OD")) { |
|
echo '$("#' . $item . '").val("' . $value . '").css("background-color","beige"); |
|
'; |
|
} |
|
} |
|
?> |
|
submit_form("eye_mag"); |
|
|
|
}); |
|
$("#RETINA_defaults_OS").on("click", function() { |
|
<?php |
|
foreach ($RETINA as $item => $value) { |
|
if (startsWith($item, "OS")) { |
|
echo '$("#' . $item . '").val("' . $value . '").css("background-color","beige"); |
|
'; |
|
} |
|
} |
|
?> |
|
submit_form("eye_mag"); |
|
}); |
|
$("#RETINA_defaults").on("click", function() { |
|
$("#RETINA_defaults_OD").trigger('click'); |
|
$("#RETINA_defaults_OS").trigger('click'); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
|
|
$("#NEURO_defaults").on("click", function() { |
|
<?php |
|
foreach ($NEURO as $item => $value) { |
|
echo '$("#' . $item . '").val("' . $value . '").css("background-color","beige"); |
|
'; |
|
} |
|
?> |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#clear_EXT_R").on('click', function() { |
|
$('.right.EXT').val(''); |
|
submit_form("eye_mag"); |
|
}); |
|
$("#clear_EXT_L").on('click', function() { |
|
$('.left.EXT').val(''); |
|
submit_form("eye_mag"); |
|
}); |
|
$("#clear_ANTSEG_OD").on('click', function() { |
|
$('.right.ANTSEG').val(''); |
|
submit_form("eye_mag");}); |
|
$("#clear_ANTSEG_OS").on('click', function() { |
|
$('.left.ANTSEG').val(''); |
|
submit_form("eye_mag"); |
|
}); |
|
$("#clear_RETINA_OD").on('click', function() { |
|
$('.right.RETINA').val(''); |
|
submit_form("eye_mag"); |
|
}); |
|
$("#clear_RETINA_OS").on('click', function() { |
|
$('.left.RETINA').val(''); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("[id^='cpf_']").on('click', function() { |
|
var to_field = this.id.match(/cpf_(.*)_(.*)/)[1]; |
|
var from_field = this.id.match(/cpf_(.*)_(.*)/)[2]; |
|
$("#"+to_field).val($("#"+from_field).val()); |
|
submit_form("eye_mag"); |
|
}); |
|
$("#MOTILITYNORMAL").on("click", function() { |
|
$("#MOTILITY_RS").val('0'); |
|
$("#MOTILITY_RI").val('0'); |
|
$("#MOTILITY_RR").val('0'); |
|
$("#MOTILITY_RL").val('0'); |
|
$("#MOTILITY_LS").val('0'); |
|
$("#MOTILITY_LI").val('0'); |
|
$("#MOTILITY_LR").val('0'); |
|
$("#MOTILITY_LL").val('0'); |
|
|
|
$("#MOTILITY_RRSO").val('0'); |
|
$("#MOTILITY_RRIO").val('0'); |
|
$("#MOTILITY_RLSO").val('0'); |
|
$("#MOTILITY_RLIO").val('0'); |
|
$("#MOTILITY_LRSO").val('0'); |
|
$("#MOTILITY_LRIO").val('0'); |
|
$("#MOTILITY_LLSO").val('0'); |
|
$("#MOTILITY_LLIO").val('0'); |
|
|
|
for (index = '0'; index < 5; ++index) { |
|
$("#MOTILITY_RS_"+index).html(''); |
|
$("#MOTILITY_RI_"+index).html(''); |
|
$("#MOTILITY_RR_"+index).html(''); |
|
$("#MOTILITY_RL_"+index).html(''); |
|
$("#MOTILITY_LS_"+index).html(''); |
|
$("#MOTILITY_LI_"+index).html(''); |
|
$("#MOTILITY_LR_"+index).html(''); |
|
$("#MOTILITY_LL_"+index).html(''); |
|
|
|
$("#MOTILITY_RRSO_"+index).html(''); |
|
$("#MOTILITY_RRIO_"+index).html(''); |
|
$("#MOTILITY_RLSO_"+index).html(''); |
|
$("#MOTILITY_RLIO_"+index).html(''); |
|
$("#MOTILITY_LRSO_"+index).html(''); |
|
$("#MOTILITY_LRIO_"+index).html(''); |
|
$("#MOTILITY_LLSO_"+index).html(''); |
|
$("#MOTILITY_LLIO_"+index).html(''); |
|
} |
|
submit_form('eye_mag'); |
|
}); |
|
|
|
$("[name^='MOTILITY_']").on("click", function() { |
|
$("#MOTILITYNORMAL").removeAttr('checked'); |
|
|
|
if (this.id.match(/(MOTILITY_([A-Z]{4}))_(.)/)) { |
|
var zone = this.id.match(/(MOTILITY_([A-Z]{4}))_(.)/); |
|
var index = '0'; |
|
var valued = isNaN($("#"+zone[1]).val()); |
|
if ((zone[2] =='RLSO')||(zone[2] =='LLSO')||(zone[2] =='RRIO')||(zone[2] =='LRIO')) { |
|
//find or make a hash tage for "\" |
|
var hash_tag = '<i class="fa fa-minus"></i>'; |
|
} else { |
|
//find or make a hash tage for "/" |
|
var hash_tag = '<i class="fa fa-minus"></i>'; |
|
} |
|
} else { |
|
var zone = this.id.match(/(MOTILITY_..)_(.)/); |
|
var section = this.id.match(/MOTILITY_(.)(.)_/); |
|
var section2 = section[2]; |
|
var Eye = section[1]; |
|
var SupInf = section2.search(/S|I/); |
|
var RorLside = section2.search(/R|L/); |
|
|
|
|
|
if (RorLside =='0') { |
|
var hash_tag = '<i class="fa fa-minus rotate-left"></i>'; |
|
} else { |
|
var hash_tag = '<i class="fa fa-minus"></i>'; |
|
} |
|
} |
|
if (valued != true && $("#"+zone[1]).val() <'4') { |
|
valued=$("#"+zone[1]).val(); |
|
valued++; |
|
} else { |
|
valued = '0'; |
|
$("#"+zone[1]).val('0'); |
|
} |
|
|
|
$("#"+zone[1]).val(valued); |
|
|
|
for (index = '0'; index < 5; ++index) { |
|
$("#"+zone[1]+"_"+index).html(''); |
|
} |
|
if (valued > '0') { |
|
for (index =1; index < (valued+1); ++index) { |
|
$("#"+zone[1]+"_"+index).html(hash_tag); |
|
} |
|
} |
|
|
|
submit_form('3'); |
|
}); |
|
|
|
$("[name^='Close_']").on("click", function() { |
|
var section = this.id.match(/Close_(.*)$/)[1]; |
|
if (this.id.match(/Close_W_(.*)$/) != null) { |
|
var W_section = this.id.match(/Close_W_(.*)$/)[1]; |
|
if (W_section > '1') { |
|
$('#LayerVision_W_'+W_section).addClass('nodisplay'); |
|
$('[name$=SPH_'+W_section+']').val(''); |
|
$('[name$=CYL_'+W_section+']').val(''); |
|
$('[name$=AXIS_'+W_section+']').val(''); |
|
$('[name$=ADD_'+W_section+']').val(''); |
|
$('[name$=PRISM_'+W_section+']').val(''); |
|
$('[name$=VA_'+W_section+']').val(''); |
|
$('#RX_TYPE_'+W_section).val(''); |
|
$('#Add_Glasses').removeClass('nodisplay'); |
|
$('#W_'+W_section).val(''); |
|
submit_form('4'); |
|
} else { |
|
$("#LayerVision_W_lightswitch").click(); |
|
} |
|
} else if (section =="ACTMAIN") { |
|
$("#ACTTRIGGER").trigger( "click" ); |
|
} else { |
|
$("#LayerVision_"+section+"_lightswitch").click(); |
|
} |
|
}); |
|
|
|
|
|
$("#EXAM_DRAW, #BUTTON_DRAW_menu, #PANEL_DRAW").on("click", function() { |
|
if ($("#PREFS_CLINICAL").value !='0') { |
|
show_right(); |
|
$("#PREFS_CLINICAL").val('0'); |
|
update_PREFS(); |
|
} |
|
if ($("#PREFS_EXAM").val() != 'DRAW') { |
|
$("#PREFS_EXAM").val('DRAW'); |
|
$("#EXAM_QP").removeClass('button_selected'); |
|
$("#EXAM_DRAW").addClass('button_selected'); |
|
$("#EXAM_TEXT").removeClass('button_selected'); |
|
update_PREFS(); |
|
} |
|
show_DRAW(); |
|
}); |
|
$("#EXAM_QP,#PANEL_QP").on("click", function() { |
|
if ($("#PREFS_CLINICAL").value !='0') { |
|
$("#PREFS_CLINICAL").val('0'); |
|
update_PREFS(); |
|
} |
|
if ($("#PREFS_EXAM").value != 'QP') { |
|
$("#PREFS_EXAM").val('QP'); |
|
$("#EXAM_QP").addClass('button_selected'); |
|
$("#EXAM_DRAW").removeClass('button_selected'); |
|
$("#EXAM_TEXT").removeClass('button_selected'); |
|
update_PREFS(); |
|
} |
|
HPI_sync_heights(); |
|
show_QP(); |
|
scrollTo("EXT_left"); |
|
}); |
|
|
|
$("#EXAM_TEXT,#PANEL_TEXT").on("click", function() { |
|
|
|
// also hide QP, DRAWs, and PRIORS |
|
|
|
hide_DRAW(); |
|
hide_QP(); |
|
hide_PRIORS(); |
|
hide_right(); |
|
show_TEXT(); |
|
for (index = '0'; index < zones.length; ++index) { |
|
$("#PREFS_"+zones[index]+"_RIGHT").val(0); |
|
} |
|
update_PREFS(); |
|
|
|
$("#EXAM_DRAW").removeClass('button_selected'); |
|
$("#EXAM_QP").removeClass('button_selected'); |
|
$("#EXAM_TEXT").addClass('button_selected'); |
|
scrollTo("EXT_left"); |
|
}); |
|
$("[id^='BUTTON_TEXT_']").on("click", function() { |
|
var zone = this.id.match(/BUTTON_TEXT_(.*)/)[1]; |
|
if (zone != "menu") { |
|
$("#"+zone+"_right").addClass('nodisplay'); |
|
$("#"+zone+"_left").removeClass('display'); |
|
$("#"+zone+"_left_text").removeClass('display'); |
|
$("#PREFS_"+zone+"_RIGHT").val(0); |
|
} |
|
show_TEXT(); |
|
scrollTo("EXT_left"); |
|
}); |
|
$("[id^='BUTTON_TEXTD_']").on("click", function() { |
|
var zone = this.id.match(/BUTTON_TEXTD_(.*)/)[1]; |
|
if (zone != "menu") { |
|
if ((zone =="PMH") || (zone == "HPI")) { |
|
$("#PMH_right").addClass('nodisplay'); |
|
$("#PREFS_PMH_RIGHT").val(1); |
|
$("#HPI_right").addClass('nodisplay'); |
|
$("#PREFS_HPI_RIGHT").val(1); |
|
var reset = $("#HPI_1").height(); |
|
$("#PMH_1").css("min-height",'0'); |
|
$("#PMH_left").height(reset-40); |
|
|
|
$("#LayerTechnical_sections_1").css("clear","both"); |
|
} else { |
|
$("#"+zone+"_right").addClass('nodisplay'); |
|
$("#PREFS_"+zone+"_RIGHT").val(1); |
|
} |
|
scrollTo(zone+"_left"); |
|
update_PREFS(); |
|
} |
|
}); |
|
|
|
$("#EXAM_TEXT").addClass('button_selected'); |
|
if (($("#PREFS_CLINICAL").val() !='1')) { |
|
var actionQ = "#EXAM_"+$("#PREFS_EXAM").val(); |
|
$(actionQ).trigger('click'); |
|
} else { |
|
$("#EXAM_TEXT").addClass('button_selected'); |
|
} |
|
if ($("#ANTSEG_prefix").val() > '') { |
|
$("#ANTSEG_prefix_"+$("#ANTSEG_prefix").val()).addClass('button_selected'); |
|
} else { |
|
$("#ANTSEG_prefix").val('off').trigger('change'); |
|
} |
|
$("[name^='ACT_tab_']").on("mouseover", function() { |
|
$(this).toggleClass('underline').css( 'cursor', 'pointer' ); |
|
}); |
|
$("[name^='ACT_tab_']").on("mouseout", function() { |
|
$(this).toggleClass('underline'); |
|
}); |
|
|
|
$("[name^='ACT_tab_']").on("click", function() { |
|
var section = this.id.match(/ACT_tab_(.*)/)[1]; |
|
$("[name^='ACT_']").addClass('nodisplay'); |
|
$("[name^='ACT_tab_']").removeClass('nodisplay').removeClass('ACT_selected').addClass('ACT_deselected'); |
|
$("#ACT_tab_" + section).addClass('ACT_selected').removeClass('ACT_deselected'); |
|
$("#ACT_" + section).removeClass('nodisplay'); |
|
$("#PREFS_ACT_SHOW").val(section); |
|
//selection correct QP zone |
|
$("[name^='NEURO_ACT_zone']").removeClass('eye_button_selected'); |
|
$("#NEURO_ACT_zone_"+ section).addClass("eye_button_selected"); |
|
$("#NEURO_ACT_zone").val(section); |
|
update_PREFS(); |
|
}); |
|
$("#ACTTRIGGER").on("mouseout", function() { |
|
$("#ACTTRIGGER").toggleClass('buttonRefraction_selected').toggleClass('underline'); |
|
}); |
|
if ($("#PREFS_ACT_VIEW").val() == '1') { |
|
$("#ACTMAIN").toggleClass('nodisplay'); |
|
$("#NPCNPA").toggleClass('nodisplay'); |
|
$("#ACTNORMAL_CHECK").toggleClass('nodisplay'); |
|
$("#ACTTRIGGER").toggleClass('underline'); |
|
var show = $("#PREFS_ACT_SHOW").val(); |
|
$("#ACT_tab_"+show).trigger('click'); |
|
} |
|
$("#ACTTRIGGER").on("click", function() { |
|
$("#ACTMAIN").toggleClass('nodisplay').toggleClass('ACT_TEXT'); |
|
$("#NPCNPA").toggleClass('nodisplay'); |
|
$("#ACTNORMAL_CHECK").toggleClass('nodisplay'); |
|
$("#ACTTRIGGER").toggleClass('underline'); |
|
if ($("#PREFS_ACT_VIEW").val()=='1') { |
|
$("#PREFS_ACT_VIEW").val('0'); |
|
} else { |
|
$("#PREFS_ACT_VIEW").val('1'); |
|
} |
|
var show = $("#PREFS_ACT_SHOW").val(); |
|
$("#ACT_tab_"+show).trigger('click'); |
|
update_PREFS(); |
|
}); |
|
$("#NEURO_COLOR").on("click", function() { |
|
$("#ODCOLOR").val("11/11"); |
|
$("#OSCOLOR").val("11/11"); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#NEURO_COINS").on("click", function() { |
|
$("#ODCOINS").val("1.00"); |
|
//leave currency symbol out unless it is an openEMR defined option |
|
$("#OSCOINS").val("1.00"); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("#NEURO_REDDESAT").on("click", function() { |
|
$("#ODREDDESAT").val("100"); |
|
$("#OSREDDESAT").val("100"); |
|
submit_form("eye_mag"); |
|
}); |
|
|
|
$("[id^='myCanvas_']").on("mouseout", function() { |
|
var zone = this.id.match(/myCanvas_(.*)/)[1]; |
|
submit_canvas(zone); |
|
}); |
|
$("[id^='Undo_']").on("click", function() { |
|
var zone = this.id.match(/Undo_Canvas_(.*)/)[1]; |
|
submit_canvas(zone); |
|
}); |
|
$("[id^='Redo_']").on("click", function() { |
|
var zone = this.id.match(/Redo_Canvas_(.*)/)[1]; |
|
submit_canvas(zone); |
|
}); |
|
$("[id^='Clear_']").on("click", function() { |
|
var zone = this.id.match(/Clear_Canvas_(.*)/)[1]; |
|
submit_canvas(zone); |
|
}); |
|
$("[id^='Blank_']").on("click", function() { |
|
|
|
var zone = this.id.match(/Blank_Canvas_(.*)/)[1]; |
|
$("#url_"+zone).val("../../forms/eye_mag/images/BLANK_BASE.png"); |
|
//canvas.renderAll(); |
|
drawImage(zone); |
|
}); |
|
|
|
$("#COPY_SECTION").on("change", function() { |
|
var start = $("#COPY_SECTION").val(); |
|
if (start =='') return; |
|
var value = start.match(/(\w*)-(\w*)/); |
|
var zone = value[1]; |
|
var copy_from = value[2]; |
|
if (zone =="READONLY") copy_from = $("#form_id").val(); |
|
var count_changes='0'; |
|
|
|
var data = { |
|
action : 'copy', |
|
copy : zone, |
|
zone : zone, |
|
copy_to : $("#form_id").val(), |
|
copy_from : copy_from, |
|
pid : $("#pid").val() |
|
}; |
|
if (zone =="READONLY") { |
|
//we are going to update the whole form |
|
//Imagine you are watching on your browser while the tech adds stuff in another room on another computer. |
|
//We are not ready to actively chart, just looking to see how far along our staff is... |
|
//or maybe just looking ahead to see who's next in the next room? |
|
//Either way, we are looking at a record that at present will be disabled/we cannot change... |
|
// yet it is updating every 10 seconds if another user is making changes. |
|
|
|
// READONLY does not show IMPPLAN changes!!!! |
|
} else { |
|
//here we are retrieving an old record to copy forward to today's active chart. |
|
data = $("#"+zone+"_left_text").serialize() + "&" + $.param(data); |
|
} |
|
top.restoreSession(); |
|
$.ajax({ |
|
type : 'POST', |
|
dataType : 'json', |
|
url : "../../forms/eye_mag/save.php", |
|
data : data, |
|
success : function(result) { |
|
//we have to process impplan differently |
|
if (zone =='IMPPLAN') { |
|
//we get a json result.IMPPLAN back from the prior visit |
|
//we need to add that to the current list? Replace for now. |
|
build_IMPPLAN(result.IMPPLAN); |
|
store_IMPPLAN(result.IMPPLAN); |
|
// need to make the Plan areas purple? |
|
} else { |
|
$.map(result, function(valhere, keyhere) { |
|
if ($("#"+keyhere).val() != valhere) { |
|
$("#"+keyhere).val(valhere).css("background-color","#CCF"); |
|
} else if (keyhere.match(/MOTILITY_/)) { |
|
// Copy forward ductions and versions visually |
|
// Make each blank, and rebuild them |
|
$("[name='"+keyhere+"_1']").html(''); |
|
$("[name='"+keyhere+"_2']").html(''); |
|
$("[name='"+keyhere+"_3']").html(''); |
|
$("[name='"+keyhere+"_4']").html(''); |
|
if (keyhere.match(/(_RS|_LS|_RI|_LI|_RRSO|_RRIO|_RLSO|_RLIO|_LRSO|_LRIO|_LLSO|_LLIO)/)) { |
|
// Show a horizontal (minus) tag. When "/" and "\" fa-icons are available will need to change. |
|
// Maybe just use small font "/" and "\" directly. |
|
hash_tag = '<i class="fa fa-minus"></i>'; |
|
} else { //show vertical tag |
|
hash_tag = '<i class="fa fa-minus rotate-left"></i>'; |
|
} |
|
for (index =1; index <= valhere; ++index) { |
|
$("#"+keyhere+"_"+index).html(hash_tag); |
|
} |
|
} else if (keyhere.match(/^(ODVF|OSVF)\d$/)) { |
|
if (valhere =='1') { |
|
$("#FieldsNormal").prop('checked', false); |
|
$("#"+keyhere).prop('checked', true); |
|
$("#"+keyhere).val('1'); |
|
} else { |
|
$("#"+keyhere).val('0'); |
|
$("#"+keyhere).prop('checked', false); |
|
} |
|
} else if (keyhere.match(/AMSLERO(.)/)) { |
|
var sidehere = keyhere.match(/AMSLERO(.)/); |
|
if (valhere < '1') valhere ='0'; |
|
$("#"+keyhere).val(valhere); |
|
var srcvalue="AmslerO"+sidehere[1]; |
|
document.getElementById(srcvalue).src = document.getElementById(srcvalue).src.replace(/\_\d/g,"_"+valhere); |
|
$("#AmslerO"+sidehere[1]+"value").text(valhere); |
|
} else if (keyhere.match(/VA$/)) { |
|
$("#"+keyhere+"_copy").val(valhere).css("background-color","#F0F8FF");; |
|
$("#"+keyhere+"_copy_brd").val(valhere).css("background-color","#F0F8FF");; |
|
} |
|
}); |
|
if (zone != "READONLY") { submit_form("eye_mag"); } |
|
} |
|
}}); |
|
}); |
|
$("[id^='BUTTON_DRAW_']").on("click", function() { |
|
var zone =this.id.match(/BUTTON_DRAW_(.*)$/)[1]; |
|
if (zone =="ALL") { |
|
} else { |
|
if ($('#PREFS_'+zone+'_RIGHT').val() =="DRAW") { |
|
$('#BUTTON_TEXTD_'+zone).trigger("click");//closes draw |
|
//maybe this should revert to last right panel state (qp,text) |
|
return; |
|
} |
|
$("#"+zone+"_1").removeClass('nodisplay'); |
|
$("#"+zone+"_right").addClass('canvas').removeClass('nodisplay'); |
|
$("#QP_"+zone).addClass('nodisplay'); |
|
$("#PRIORS_"+zone+"_left_text").addClass('nodisplay'); |
|
$("#Draw_"+zone).removeClass('nodisplay'); |
|
$("#PREFS_"+zone+"_RIGHT").val('DRAW'); |
|
scrollTo(zone+"_left"); |
|
update_PREFS(); |
|
} |
|
}); |
|
$("[id^='BUTTON_QP_']").on("click", function() { |
|
var zone = this.id.match(/BUTTON_QP_(.*)$/)[1].replace(/_\d*/,''); |
|
if (zone =='IMPPLAN2') { |
|
$('#IMP_start_acc').slideDown(); |
|
zone='IMPPLAN'; |
|
} |
|
if (($("#PREFS_"+zone+"_RIGHT").val() =='QP')&&(zone !='IMPPLAN')) { |
|
$('#BUTTON_TEXTD_'+zone).trigger("click"); |
|
return; |
|
} |
|
$("#PRIORS_"+zone+"_left_text").addClass('nodisplay'); |
|
$("#Draw_"+zone).addClass('nodisplay'); |
|
show_QP_section(zone, '1'); |
|
$("#PREFS_"+zone+"_RIGHT").val('QP'); |
|
|
|
if ((zone == 'PMH')||(zone == 'HPI')) { |
|
if ($('#HPI_right').css('display') == 'none') { |
|
$("#Draw_HPI").addClass('nodisplay'); |
|
show_QP_section('HPI', '1'); |
|
$("#PREFS_HPI_RIGHT").val('QP'); |
|
} |
|
} |
|
|
|
HPI_sync_heights(); |
|
if (zone == 'HPI') { |
|
if ($('#PMH_right').css('display') == 'none') { |
|
$("#PRIORS_PMH_left_text").addClass('nodisplay'); |
|
$("#Draw_PMH").addClass('nodisplay'); |
|
show_QP_section('PMH','1'); |
|
$("#PREFS_PMH_RIGHT").val('QP'); |
|
} |
|
if ($('#PMH_right').height() > $('#PMH_left').height()) { |
|
$('#PMH_left').height($('#PMH_right').height()); |
|
} else { |
|
$('#PMH_1').height($('#HPI_1').height()); |
|
} |
|
} else if (zone == 'menu') { |
|
show_QP(); |
|
} else if (zone == 'IMPPLAN') { |
|
show_QP_section('IMPPLAN','1'); |
|
|
|
} |
|
update_PREFS(); |
|
}); |
|
|
|
// set default to ccDist. Change as desired. |
|
$('#NEURO_ACT_zone').val('CCDIST').trigger('change'); |
|
if ($("#RXStart").val() =="2") { |
|
$("#Trifocal").trigger('click'); |
|
} |
|
$("[id$='_loading']").addClass('nodisplay'); |
|
$("[id$='_sections']").removeClass('nodisplay'); |
|
|
|
$('#left-panel').css("right","0px"); |
|
$('#EXAM_KB').css({position: 'fixed', top: '29px'}); |
|
$('#EXAM_KB').css('display', 'block'); |
|
$('#EXAM_KB').draggable(); |
|
$('#IMP').droppable({ drop: dragto_IMPPLAN } ); |
|
$('#IMPPLAN_zone').droppable({ drop: dragto_IMPPLAN_zone } ); |
|
$('#IMPPLAN_text').droppable({ drop: dragto_IMPPLAN_zone } ); |
|
|
|
$('[id^="PLANS"]').draggable( { cursor: 'move', revert: true }); |
|
$('[id^="PLAN_"]').height( $(this).scrollHeight ); |
|
|
|
/* Sorting of diagnoses in IMP/PLAN right panel builds IMP_order[] array. |
|
Foreach index => value in IMP_order[order,PMSFH[type][i]]: |
|
retrieve PMSFH[type][value] and build the IMPRESSION/PLAN area |
|
openEMR ICD-10 seems to have newlines in codetext? strip them with replace. |
|
All the ISSUE_TYPES and their fields are available in obj.PMSFH: |
|
'title' => $disptitle, |
|
'status' => $statusCompute, |
|
'enddate' => $row['enddate'], |
|
'reaction' => $row['reaction'], |
|
'referredby' => $row['referredby'], |
|
'extrainfo' => $row['extrainfo'], |
|
'diagnosis' => $row['diagnosis'], |
|
'code' => $code, |
|
'codedesc' => $codedesc, |
|
'codetext' => $codetext, |
|
'codetype' => $codetype, |
|
'comments' => $row['comments'], |
|
'rowid' => $row['id'], |
|
'row_type' => $row['type'] |
|
eg. obj.IMPPLAN_items[index] = code: obj.PMSFH['POH'][value]['code'], |
|
codedesc: obj.PMSFH['POH'][value]['codedesc'], |
|
codetype: obj.PMSFH['POH'][value]['codetype'] |
|
*/ |
|
|
|
$('#make_new_IMP').on("click", function() { |
|
var issue=''; |
|
if (IMP_order.length ==0) rebuild_IMP($( "#build_DX_list" )); |
|
if (obj.IMPPLAN_items ==null) obj.IMPPLAN_items = []; |
|
$.each(IMP_order, function( index, value ) { |
|
issue= value.match(/(.*)_(.*)/); |
|
if (issue[1] == "CLINICAL") { |
|
if (!$('#inc_PE').is(':checked')) { return; } |
|
|
|
var the_code=''; |
|
var the_codedesc=''; |
|
var the_codetext=''; |
|
var the_plan=''; |
|
for (i=0;i < obj.Clinical[issue[2]].length; i++) { |
|
if (i == 0) { |
|
the_code = obj.Clinical[issue[2]][i]['code']; |
|
} else if (i < obj.Clinical[issue[2]].length) { |
|
the_code += ', '+ obj.Clinical[issue[2]][i]['code']; |
|
} |
|
the_codedesc += obj.Clinical[issue[2]][i]['codedesc'] + "\r"; |
|
the_codetext += obj.Clinical[issue[2]][i]['codetext'] + "\r"; |
|
the_plan += obj.Clinical[issue[2]][i]['codedesc'] + "\r"; |
|
} |
|
obj.IMPPLAN_items.push({ |
|
title:obj.Clinical[issue[2]][0]['title'], |
|
code: the_code, |
|
codetype: obj.Clinical[issue[2]][0]['codetype'], |
|
codedesc: the_codedesc, |
|
codetext: the_codetext, |
|
plan: the_plan, |
|
PMSFH_link: obj.Clinical[issue[2]][0]['PMSFH_link'] |
|
}); |
|
} else { |
|
if (issue[1] == "PMH") { |
|
if (!$('#inc_PMH').is(':checked')) { return; } |
|
} else if (issue[1] == "POH"){ |
|
if (!$('#inc_POH').is(':checked')) { return; } |
|
} else if (issue[1] == "POS"){ |
|
if (!$('#inc_POH').is(':checked')) { return; } |
|
} |
|
obj.IMPPLAN_items.push({ |
|
title: obj.PMSFH[issue[1]][issue[2]]['title'], |
|
code: obj.PMSFH[issue[1]][issue[2]]['code'], |
|
codetype: obj.PMSFH[issue[1]][issue[2]]['codetype'], |
|
codedesc: obj.PMSFH[issue[1]][issue[2]]['codedesc'], |
|
codetext: obj.PMSFH[issue[1]][issue[2]]['codetext'].replace(/(\r\n|\n|\r)/gm,""), |
|
plan: obj.PMSFH[issue[1]][issue[2]]['comments'], |
|
PMSFH_link: obj.PMSFH[issue[1]][issue[2]]['PMSFH_link'] |
|
}); |
|
} |
|
}); |
|
build_IMPPLAN(obj.IMPPLAN_items); |
|
store_IMPPLAN(obj.IMPPLAN_items,'1'); |
|
}); |
|
|
|
|
|
$('.building_blocks > dt ').on('click', function() { |
|
if ( $(this).next().css('display') !== 'block' ) { |
|
allPanels.slideUp(); |
|
$(this).next().slideDown(); |
|
} else { |
|
allPanels.slideUp(); |
|
} |
|
}); |
|
$('#IMP_start_acc').slideDown(); |
|
$('[id^=inc_]').on('click', function() { |
|
build_DX_list(obj); |
|
}); |
|
|
|
$('#active_flag').on('click', function() { check_lock('1'); }); |
|
$('#active_icon').on('click', function() { check_lock('1'); }); |
|
|
|
$("input,textarea,text,checkbox").on("change", function(){ |
|
$(this).css("background-color","#F0F8FF"); |
|
if (this.name.match(/IOP/)) { color_IOP(this); } |
|
if ( ($(this).id != 'IMP') && |
|
(!this.name.match(/^inc_/)) && |
|
(!this.name.match(/_modifier$/)) |
|
) { |
|
submit_form(); |
|
} else { |
|
$("#IMP_start_acc").slideDown(); |
|
} |
|
}); |
|
$("[name='CANVAS_selector']").on("change", function(){ |
|
//we are going to display an old image from a previous encounter |
|
zone = this.id.match(/CANVAS_(.*)/)[1]; |
|
if (this.value != 'current') { |
|
$("#"+zone+"_canvas").addClass('nodisplay'); |
|
$("#"+zone+"_olddrawing").removeClass('nodisplay'); |
|
show_PRIOR_CANVAS_section(zone, this.value); |
|
} else { |
|
$("#"+zone+"_canvas").removeClass('nodisplay'); |
|
|
|
$("#"+zone+"_olddrawing").addClass('nodisplay'); |
|
} |
|
}); |
|
|
|
|
|
$('#IMP').on("blur", function() { |
|
//add this DX to the obj.IMPPLAN_items array |
|
//take the first line as the impression and the rest as the plan |
|
var total_imp = $('#IMP').val(); |
|
$('#IMP').val('');//clear the box |
|
var local_plan = ''; |
|
var local_code= ''; |
|
if (total_imp.length < '2') return; //reject text under two letters? |
|
var re = /\r\n|[\n\v\f\r\x85\u2028\u2029]/; //official list of line delimiters for a regex |
|
//local_impression is first line only[1] |
|
var local_imp = total_imp.match(/^(.*)(?:\r\n|[\n\v\f\r\x85\u2028\u2029])(.*)/); |
|
if (local_imp == null || local_imp[1] == null) { |
|
local_imp = total_imp; |
|
} else { |
|
// If the first line was dropped in from the Builder via a draggable DX_list |
|
// it will include the IMPRESSION + CODE. |
|
// Consider stripping out the CODE |
|
var local_imp_code = local_imp[1].match(/(.*)(ICD.*)$/); |
|
if (local_imp_code) { |
|
local_imp = local_imp_code[1]; |
|
local_code = local_imp_code[2]; |
|
local_plan = total_imp.replace(local_imp_code[0],''); //plan is line 2+ if present, strip off first line |
|
local_plan = local_plan.replace(/^\r\n|[\n\v\f\r\x85\u2028\u2029]/,''); |
|
} else { |
|
local_imp = local_imp[1]; |
|
local_code = ''; |
|
local_plan = total_imp.replace(local_imp,''); //plan is line 2+ if present, strip off first line |
|
local_plan = local_plan.replace(/^\r\n|[\n\v\f\r\x85\u2028\u2029]/,''); |
|
} |
|
} |
|
if (obj.IMPPLAN_items ==null) obj.IMPPLAN_items = [];//can't push if array does not exist |
|
obj.IMPPLAN_items.push({ |
|
form_id: $('#form_id').val(), |
|
pid: $('#pid').val(), |
|
title: local_imp, |
|
plan: local_plan, |
|
code: local_code, |
|
codetext:'', |
|
codetype:'', |
|
codedesc:'', |
|
PMSFH_link: '' |
|
}); |
|
build_IMPPLAN(obj.IMPPLAN_items,'1'); |
|
store_IMPPLAN(obj.IMPPLAN_items); |
|
}); |
|
$('#Add_Glasses').on('click', function() { |
|
for (i=2; i <6; i++) { //come on, 5 current rx glasses should be enough... |
|
if ($('#W_'+i).val() != '1') { |
|
$('#W_'+i).val('1'); |
|
$('#LayerVision_W_'+i).removeClass('nodisplay'); |
|
if (i==5) { $('#Add_Glasses').addClass('nodisplay'); } |
|
break; |
|
} |
|
} |
|
}); |
|
$("[name='reverseme']").on('click', function() { |
|
var target = this.id; |
|
reverse_cylinder(target); |
|
}); |
|
|
|
$('#code_me_now').on('click', function(event) { |
|
event.preventDefault(); |
|
build_CODING_list(); |
|
CODING_to_feesheet(CODING_items); |
|
}); |
|
$( ".widget a" ).button(); |
|
|
|
$( "button" ).button().on('click', function( event ) { |
|
event.preventDefault(); |
|
}); |
|
$('#visit_codes').on('change', function() { |
|
var data_all = $(this).val(); |
|
var data = data_all.match(/^(.*)\|(.*)\|/); |
|
visit_code = data[2]; |
|
visit_type = data[1]; |
|
}); |
|
$('[name="visit_modifier"]').on('click', function () { |
|
var item = this.id.match(/visit_mod_(.*)/)[1]; |
|
if ($(this).hasClass('status_on')) { |
|
$(this).css("background-color","navy"); |
|
$(this).removeClass('status_on'); |
|
visit_modifier = visit_modifier.filter(function(e) { return e !== item }); |
|
} else { |
|
$(this).css("background-color","red"); |
|
$(this).addClass('status_on'); |
|
visit_modifier.push(item); |
|
} |
|
build_CODING_list(); |
|
}); |
|
|
|
$('[id^="tabs-left-"]').on('click', function () { |
|
var item = this.id.match(/tabs-left-(.*)/)[1]; |
|
var value = $("#setting_"+item).val(); |
|
if (value !='1') { |
|
$("#setting_"+item).val('1'); |
|
$(this).removeClass('ui-state-default'); |
|
$('#'+ item +'_1').removeClass('nodisplay'); |
|
menu_select(item); |
|
} else { |
|
$("#setting_"+item).val('0'); |
|
$(this).addClass('ui-state-default'); |
|
$('#'+ item +'_1').addClass('nodisplay'); |
|
} |
|
update_PREFS(); |
|
}); |
|
|
|
$(document).on('change','[name="visit_status"]', function (event) { |
|
var item = $( "input[type=radio][name=visit_status]:checked" ).val(); |
|
update_appt_status(item); |
|
}); |
|
|
|
$(document).on("click", "[name='visit_justifier']", function () { |
|
var d = $(this).data(); |
|
var item = d.justcode; |
|
if ($(this).hasClass('status_on')) { |
|
$(this).css("background-color","navy"); |
|
$(this).removeClass('status_on'); |
|
visit_justifier = visit_justifier.filter(function(e) { return e !== item }); |
|
} else { |
|
$(this).css("background-color","red"); |
|
$(this).addClass('status_on'); |
|
visit_justifier.push(item); |
|
} |
|
build_CODING_list(); |
|
}); |
|
$(document).on("click", "span[name$='_justifiers']", function () { |
|
var item = parseInt( this.id.match(/_just_(.*)/)[1] ) + 1; |
|
if ($(this).hasClass('status_on')) { |
|
$(this).css("background-color","navy"); |
|
$(this).removeClass('status_on'); |
|
} else { |
|
if ( $('#visit_just_'+item).hasClass('status_on') ) { |
|
$('#visit_just_'+item).trigger('click'); |
|
} |
|
$(this).css("background-color","red"); |
|
$(this).addClass('status_on'); |
|
if (!$('#visit_mod_25').hasClass("status_on")) { |
|
$('#visit_mod_25').trigger('click'); |
|
} |
|
} |
|
build_CODING_list(); |
|
}); |
|
|
|
build_IMPPLAN(obj.IMPPLAN_items); |
|
|
|
$('[id^="BUTTON_TAB_"]').on('click', function () { |
|
var item = this.id.match(/BUTTON_TAB_(.*)/)[1]; |
|
|
|
$('#tabs-left-'+item).addClass('ui-state-default'); |
|
$("#setting_"+item).val('0'); |
|
$("#"+item+'_1').addClass('nodisplay'); |
|
$("#tabs_left").removeClass('nodisplay'); |
|
update_PREFS(); |
|
}); |
|
show_by_setting(); |
|
$("input,textarea,text").on("focus", function(){ |
|
$(this).css("background-color","#ffff99"); |
|
}); |
|
//This listener no longer works in tabs because of the new tab wrapper. |
|
$(window).bind('onbeforeunload', function(){ |
|
alert('Closing time'); |
|
if ($('#chart_status').val()=="on") { |
|
unlock(); |
|
} |
|
}); |
|
});
|
|
|