您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Productivity enhancements to Healthland Centriq EHR
- // ==UserScript==
- // @name DrM Heallthland
- // @namespace jewelmirror.com
- // @include http://hlapp/Healthlandweb/*
- // @include https://pmp.doj.ca.gov/pdmp/*
- // @version 1.1
- // @description Productivity enhancements to Healthland Centriq EHR
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_setClipboard
- // @grant GM_xmlhttpRequest
- // @require https://code.jquery.com/jquery-2.0.3.min.js
- // @require https://code.jquery.com/ui/1.8.2/jquery-ui.js
- // @requre http://hlapp/Healthlandweb/Scripts/telerik/Input/DateInput/RadDateInputScript.js
- // ==/UserScript==
- /*
- * $Source: /Users/cvsroot/DrM_Heallthland/DrM_Heallthland.user.js,v $
- * $Author: marcin $
- * $Revision: 1.11 $
- *
- * History
- * Version 1.0
- * Original release. Support for keyboard shortcuts, calculator for Mini Mental and ED Outpatient Level of
- * service, CURES
- * Version 1.1
- * CURES
- * DrM Logo in cures
- * New shortcuts
- * p - problem list
- * m - home medications
- * Calculators
- * Warfarin dosing calculator
- *---------------------------------------------------------------------------
- @licstart The following is the entire license notice for the
- JavaScript code in this page.
- Copyright (C) 2025 Marcin Matuszkiewicz - marcin@jewelmirror.com
- The JavaScript code in this page is free software: you can
- redistribute it and/or modify it under the terms of the GNU
- General Public License (GNU GPL) as published by the Free Software
- Foundation, either version 3 of the License, or (at your option)
- any later version. The code is distributed WITHOUT ANY WARRANTY;
- without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
- As additional permission under GNU GPL version 3 section 7, you
- may distribute non-source (e.g., minimized or compacted) forms of
- that code without the copy of the GNU GPL normally required by
- section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
- @licend The above is the entire license notice
- for the JavaScript code in this page
- */
- /********************************************************************
- * CURES Specific functions and data
- ********************************************************************/
- var CURESpages = {
- index : 'index.do',
- search_input : 'list.do',
- search_results : 'search.do',
- report: 'listPatients.do'
- };
- function CURESSelectAllOnChange() {
- cb = document.getElementById('checkall_id');
- if (cb.checked) {
- CURESSelectAll();
- } else {
- CURESDeselectAll();
- }
- }
- function CURESSelectAll() {
- ids = document.getElementsByName('ids');
- for ( i = 0; i < ids.length; i++) {
- ids[i].checked = true;
- }
- }
- function CURESDeselectAll() {
- ids = document.getElementsByName('ids');
- for ( i = 0; i < ids.length; i++) {
- ids[i].checked = false;
- }
- }
- function CURESIndex() {
- // You prefill your USERNAME
- document.getElementById('j_username').value = '';
- var pass = document.getElementById('j_password');
- pass.focus();
- // You can set pass.value to fill you PASSWROD
- pass.value = '';
- // Auto login
- // $('input:submit').click();
- // var inputs = document.getElementsByTagName('input');
- // for (var i in inputs) {
- // if (i.getAttribute('type') == 'submit') {
- // i.click();
- // }
- // }
- }
- function CURESSearchInput() {
- var patientId = GM_getValue('patientId');
- var visitId = GM_getValue('visitId');
- if (patientId && visitId) {
- // var btn = $('#middleColumn').prepend('<input id="loadDemo" type="button" value="Load from HL">');
- $('[name="search"]').before('<input id="loadDemo" type="button" value="Load from HL">');
- $('#loadDemo').bind('click', loadDemographics);
- $('#loadDemo').before('<div id="loadingDemo">Loading</div>');
- $('#loadingDemo').css('background', 'yellow');
- // Load demographics by default
- loadDemographics();
- }
- var period_sel = document.getElementById('period');
- period_sel.value = '12';
- var disclaimer_cb = document.getElementsByName('disclaimer');
- disclaimer_cb[0].setAttribute('checked', true);
- }
- function CURESSearchResults(){
- var tab = document.getElementById('resultsTable');
- var thead = tab.getElementsByTagName('thead');
- var r = thead[0].insertRow(-1);
- var cell0 = r.insertCell(0);
- var cell1 = r.insertCell(1);
- //cell0.setAttribute('colspan', '2');
- var checkall_cb = document.createElement('input');
- checkall_cb.setAttribute('type', 'checkbox');
- checkall_cb.id = "checkall_id";
- checkall_cb.checked = true;
- checkall_cb.value = "SELECTALL";
- cell0.appendChild(checkall_cb);
- cell1.innerHTML = 'Select All';
- checkall_cb.addEventListener("click", CURESSelectAllOnChange, true);
- CURESSelectAll();
- }
- /********************************************************************
- * Healthland specifiction fuctions
- ********************************************************************/
- function loadDemographics() {
- console.log('DrM: loading demographics');
- $('#loadDemo').hide();
- $('#loadingDemo').show();
- var href = 'http://hlapp/Healthlandweb/Demographics/FillDemographics?area=Demographics&patientId=';
- href += GM_getValue('patientId');
- href += '&visitId=';
- href += GM_getValue('visitId');
- console.log(href);
- GM_xmlhttpRequest({
- method: "GET",
- url: href,
- onload: processDemographics
- });
- }
- function processDemographics(response) {
- console.log('processing Demographics');
- var demoDOM = new DOMParser().parseFromString(response.responseText, 'text/html');
- var dob = demoDOM.getElementById('Actual-DOB').value;
- var labels = demoDOM.getElementsByTagName('label');
- var lastName = labels[1].nextSibling.nextSibling.innerHTML.trim();
- var firstName = labels[2].nextSibling.nextSibling.innerHTML.trim();
- $('#lastName').val(lastName);
- $('#firstName').val(firstName);
- $('#dob').val(dob);
- $('#loadDemo').show();
- $('#loadingDemo').hide();
- console.log(lastName);
- console.log(firstName);
- console.log(dob);
- }
- function addCURES() {
- var ptChartMenu = document.getElementsByClassName('lineBlock')[1];
- if (!ptChartMenu) {
- return;
- }
- var wr = document.createElement('div');
- wr.setAttribute('class', 'main-button-wrapper');
- var el = document.createElement('input');
- el.setAttribute('type', 'button');
- el.setAttribute('id', 'CURES');
- // el.setAttribute('class', 'mainButtons');
- el.setAttribute('title', 'CURES');
- el.setAttribute('value', 'CURES');
- wr.appendChild(el);
- ptChartMenu.appendChild(wr);
- el.addEventListener('click', function() {
- var patientId = $('#current-patient-id').text().trim();
- var visitId = $('#current-visit-id').text().trim();
- if (!patientId.length || !visitId) {
- console.log('Select a ptient');
- return;
- }
- GM_setValue('patientId', patientId);
- GM_setValue('visitId', visitId);
- win = window.open('https://pmp.doj.ca.gov/pdmp/index.do');
- win.focus();
- });
- }
- /********************************************************************
- * ASSESSMENT FUNCTIONS
- ********************************************************************/
- function addAssessMiniMentalButton() {
- $('#N_AFControl_18').after('<input id="idCalcScore" type="button" value="Calculate Score">');
- $('#idCalcScore').bind('click', calcAssessMiniMentalScore);
- console.log(btn);
- }
- function calcAssessMiniMentalScore() {
- console.log('Calculating Minimental');
- var miniMentalTotal = 0;
- var orientationCheckboxes = $('input[groupid="286"]:checkbox');
- var orientationTotalInput = $('input[groupid="286"]:text');
- var miniMentalTotalInput = $('#N_AFControl_18');
- var tmpTotal = 0;
- for (var i=0; i < orientationCheckboxes.length; i++) {
- if (orientationCheckboxes[i].checked) {
- miniMentalTotal++;
- tmpTotal++;
- }
- }
- orientationTotalInput.val(tmpTotal);
- var sel = $('#N_AFControl_4 option:selected').text();
- if (sel.indexOf('-select-') >= 0) {
- tmpTotal = 0;
- } else {
- tmpTotal = parseInt(sel.split('=')[0]);
- }
- miniMentalTotal += tmpTotal;
- // Update Registration total input
- $('#N_AFControl_5').val(tmpTotal);
- var sel = $('#N_AFControl_6 option:selected').text();
- if (sel.indexOf('-select-') >= 0) {
- tmpTotal = 0;
- } else {
- tmpTotal = parseInt(sel.split('=')[0]);
- }
- miniMentalTotal += tmpTotal;
- // Update Attention total input
- $('#N_AFControl_7').val(tmpTotal);
- var sel = $('#N_AFControl_8 option:selected').text();
- if (sel.indexOf('-select-') >= 0) {
- tmpTotal = 0;
- } else {
- tmpTotal = parseInt(sel.split('=')[0]);
- }
- miniMentalTotal += tmpTotal;
- // Update Attention total input
- $('#N_AFControl_10').val(tmpTotal);
- tmpTotal = 0;
- for (var i = 11; i < 17; i++) {
- var sel = $('#N_AFControl_'+i+' option:selected').text();
- console.log(sel);
- if (sel.indexOf('-select-') >= 0) {
- tmpTotal += 0;
- } else {
- tmpTotal += parseInt(sel.split('=')[0]);
- }
- }
- miniMentalTotal += tmpTotal;
- // Update Attention total input
- $('#N_AFControl_17').val(tmpTotal);
- miniMentalTotalInput.val(miniMentalTotal);
- }
- function addEDOutpatientLevelButton() {
- $('#N_AFControl_73').after('<input id="idCalcScore" type="button" value="Calculate Score">');
- $('#idCalcScore').bind('click', calcEDOutpatientLevel);
- }
- function calcEDOutpatientLevel() {
- var total = 0;
- for (var i = 1; i < 73; i++) {
- var sel = $('#N_AFControl_'+i+' option:selected').text();
- console.log(i+': '+sel);
- if (sel.indexOf('-select-') >= 0) {
- total += 0;
- } else {
- total += parseInt(sel);
- }
- }
- $('#N_AFControl_73').val(total);
- }
- function addDMVAudiometryButton() {
- $('#N_AFControl_1').after('<input id="idCalcScore" type="button" value="Calculate Score">');
- $('#idCalcScore').bind('click', calcDMVAudiometry);
- }
- function calcDMVAudiometry() {
- var avgRt = 0, avgLt = 0;
- for (var i = 2; i < 5; i++) {
- var sel = $('#N_AFControl_'+i+' option:selected').text();
- if (sel.indexOf('-select-') >= 0) {
- avgRt += 0;
- } else {
- avgRt += parseInt(sel);
- }
- }
- avgRt = Math.round(avgRt/3);
- console.log(avgLt);
- for (var i = 6; i < 9; i++) {
- var sel = $('#N_AFControl_'+i+' option:selected').text();
- if (sel.indexOf('-select-') >= 0) {
- avgLt += 0;
- } else {
- avgLt += parseInt(sel);
- }
- }
- console.log(avgLt);
- avgLt = Math.round(avgLt/3);
- $('#N_AFControl_5').val(avgRt);
- $('#N_AFControl_9').val(avgLt);
- var yes = $('#N_AFControl_1 option:nth-child(2)').val();
- var no = $('#N_AFControl_1 option:nth-child(3)').val();
- if (avgRt <= 40 || avgLt <= 40) {
- $('#N_AFControl_1').val(yes); // Select YES
- } else {
- $('#N_AFControl_1').val(no); // Select NO
- }
- }
- function KeyboardShortcuts(event) {
- console.log('DrM: Processing Shortcuts');
- if ($('INPUT:focus, SELECT:focus, TEXTAREA:focus').length) // disable hotkeys if focused on a form control
- return;
- var patientId = $('#current-patient-id').text().trim();
- var visitId = $('#current-visit-id').text().trim();
- var loc = '';
- var ch = String.fromCharCode(event.which).toLowerCase();
- console.log(ch);
- if (ch == 'v') {
- // key - 'v'
- loc = 'http://hlapp/Healthlandweb/PatientChart/Chart/VitalSigns?patientId='+patientId;
- loc += '&visitId='+visitId;
- } else if (ch == 'a') {
- // key - 'a'
- loc = 'http://hlapp/Healthlandweb/PatientChart/Chart/Assessments?patientId='+patientId;
- loc += '&visitId='+visitId;
- } else if (ch == 'n') {
- // key - 'n'
- loc = 'http://hlapp/Healthlandweb/PatientChart/Chart/ChartNotes?patientId='+patientId;
- loc += '&visitId='+visitId;
- } else if (ch == 'l') {
- // key - 'l'
- loc = 'http://hlapp/Healthlandweb/PatientChart/Chart/LabResults?patientId='+patientId;
- loc += '&visitId='+visitId;
- } else if (ch == 'd') {
- // key - 'd'
- loc = 'http://hlapp/Healthlandweb/PatientChart/Chart/Documents?patientId='+patientId;
- loc += '&visitId='+visitId;
- } else if (ch == 'o') {
- // key - 'o'
- loc = 'http://hlapp/Healthlandweb/CPOE/WHOrders/Orders?patientId='+patientId;
- loc += '&visitId='+visitId;
- } else if (ch == 'p') {
- // key = - 'p'
- loc = 'http://hlapp/Healthlandweb/History/MedicalHistory?patientId='+patientId;
- loc += '&initialTab=Problem';
- } else if (ch == 'm') {
- // key = - 'm'
- loc = 'http://hlapp/Healthlandweb/History/MedicalHistory?patientId='+patientId;
- loc += '&initialTab=HomeMedication';
- } else if (ch == 's') {
- // key = 's'
- console.log('Launching summary');
- // $('#current-patient-bar-quick-view').click();
- $('.quick-view').click();
- return;
- } else if (ch == 'c') {
- // key = 'c';
- // Will try to assessment calculator
- var assessTitleCtrl = $('label.header:first');
- console.log(assessTitleCtrl);
- if (!assessTitleCtrl.length) {
- console.log('DrM: No assesement found');
- return;
- }
- var assessTitle = assessTitleCtrl.text().trim();
- console.log('"'+assessTitle+'"');
- console.log(assessTitle == 'Warfarin Flowsheet - INR 2.0 - 3.0');
- if (assessTitle == 'Mini Mental Status Exam') {
- console.log('DrM: Detected Mini Mental Status Exam');
- addAssessMiniMentalButton();
- } else if (assessTitle == 'ED Outpatient Level Of Acuity Assignment') {
- console.log('DrM: Dected ED Outpatient Level Of Acuity Assignment');
- addEDOutpatientLevelButton();
- } else if (assessTitle == 'DMV Audiometry') {
- console.log('DrM: Detected DMV Audiometry Assessment');
- addDMVAudiometryButton();
- } else if (assessTitle == 'Warfarin Flowsheet - INR 2.0 - 3.0') {
- console.log('DrM: Detected Warfarin Flowsheet - INR 2.0 - 3.0');
- Warfarin.UI.initINRCalc1();
- }
- return;
- } else {
- return;
- }
- window.location.href = loc;
- }
- function createHelp() {
- $('body').append('<div id="msg"></div>');
- $('#msg').hide();
- $('#msg').append('<table id="tblHelp"></table>');
- var tb = $('#tblHelp');
- tb.append('<tr><td colspan="2" class="helpheader">Shortcuts</td><td></td></tr>');
- tb.append('<tr><td class="helpshortcut">a</td><td>Assesments</td></tr>');
- tb.append('<tr><td class="helpshortcut">c</td><td>Add Assement Calculator</td></tr>');
- tb.append('<tr><td class="helpshortcut">d</td><td>Documents</td></tr>');
- tb.append('<tr><td class="helpshortcut">l</td><td>Lab Results</td></tr>');
- tb.append('<tr><td class="helpshortcut">n</td><td>Lab Results</td></tr>');
- tb.append('<tr><td class="helpshortcut">o</td><td>CPOE</td></tr>');
- tb.append('<tr><td class="helpshortcut">p</td><td>Problem List</td></tr>');
- tb.append('<tr><td class="helpshortcut">m</td><td>Home Medications (good place to lauch ePrescribe)</td></tr>');
- tb.append('<tr><td class="helpshortcut">s</td><td>Patietn Summary</td></tr>');
- tb.append('<tr><td colspan="2" class="helpheader">Assessments Calculators</td><td></td></tr>');
- tb.append('<tr><td colspan="2">ED Outpatient Level Of Acuity Assignment</td><td></td></tr>');
- tb.append('<tr><td colspan="2">Mini Mental Status Exam</td><td></td></tr>');
- $('.helpheader').css('font-weight', 'bold');
- $('.helpshortcut').css('color', 'blue');
- $('.helpshortcut').css('font-weight', 'bold');
- }
- /********************************************************************
- * MAIN script
- ********************************************************************/
- console.log('DrM: Loading');
- // Add DrM to pages so users know functionality is avaiable
- $('body').append('<div id="logoDrM">DrM</div>');
- var style = {position:'absolute',
- top: '1px',
- left: '1px',
- border:'1px solid black',
- padding:'10px',
- background: 'lightblue',
- 'z-index': '3000'
- };
- $('#logoDrM').css(style);
- $('#logoDrM').on('click', function() {
- $('#msg').dialog({title: "DrM Enhancements v1.1", draggable: true});
- });
- createHelp();
- var loc = window.location.href;
- if (loc.indexOf('doj.ca.gov') >= 0) { // we are handling CURES
- if (loc.indexOf(CURESpages['index']) >= 0) {
- CURESIndex();
- } else if (loc.indexOf(CURESpages['search_input']) >= 0) {
- CURESSearchInput();
- } else if (loc.indexOf(CURESpages['search_results']) >= 0) {
- CURESSearchResults();
- } else if (loc.indexOf(CURESpages['report']) >= 0) {
- var th = document.getElementById('ReportDate');
- var tbody = th.parentNode.parentNode;
- var row_header = tbody.children[0];
- var row_pt = tbody.children[1];
- console.log(tbody);
- var row = tbody.insertRow(-1);
- cell0 = row.insertCell(0);
- cell1 = row.insertCell(1);
- cell1.setAttribute('colspan', '3');
- cell0.innerHTML = "PDF Name";
- var LastName = row_pt.children[1].innerHTML.trimLeft().trimRight();
- var FirstName = row_pt.children[2].innerHTML.trimLeft().trimRight();
- var DOB = row_pt.children[3].innerHTML.trimLeft().trimRight();
- var ReportDate = row_pt.children[0].innerHTML.trimLeft().trimRight().split(" ")[0];
- var PDFName = LastName+" "+FirstName+" "+DOB+" "+ReportDate;
- cell1.innerHTML = PDFName;
- GM_setClipboard(PDFName);
- }
- } else { // we are handling Healthland
- console.log('DrM: about to add cures');
- addCURES();
- var counter = GM_getValue('counter');
- console.log(counter);
- GM_setValue('counter', ++counter);
- // Keyboard shortcuts
- console.log('DrM: Binding keyboard shortcuts');
- document.addEventListener('keypress', KeyboardShortcuts);
- }
- /***************************************************************************
- * WARFARIN
- */
- /*
- * Module: warfarin.js
- * Version: 1.0
- *
- * Description: This modules calculates warfarin dose based on INR results and INR target
- *
- * Reference: http://www.aafp.org/fpm/2005/0500/p77.html
- *
- * History: Original revision
- *
- * API functions
- * Warfarin.UI.initCalc1() - INR target of 2.0 - 3.0
- *
- */
- var Warfarin;
- if (!Warfarin) {
- Warfarin = {};
- } else {
- throw new Error('Warfarin already exists');
- }
- if (!Warfarin.UI) {
- Warfarin.UI = {};
- } else {
- throw new Error('Warfarin.UI already exists');
- }
- Warfarin.dosingSchedule = {
- // "2.5": ["0.5","0","0","0","0","0","0"],
- // "5.0": ["0.5","0","0","0","0.5","0","0"],
- // "7.5": ["0.5","0","0.5","0","0.5","0","0"],
- "10.0": ["0.5","0","0.5","0","0.5","0","0.5"],
- "12.5": ["0.5","0","0.5","0","0.5","0.5","0.5"],
- "15.0": ["0.5","0","0.5","0.5","0.5","0.5","0.5"],
- "17.5": ["0.5","0.5","0.5","0.5","0.5","0.5","0.5"],
- "20.0": ["1","0.5","0.5","0.5","0.5","0.5","0.5"],
- "22.5": ["1","0.5","0.5","0.5","1","0.5","0.5"],
- "25.0": ["1","0.5","1","0.5","1","0.5","0.5"],
- "27.5": ["0.5","1","0.5","1","0.5","1","1"],
- "30.0": ["0.5","1","1","1","0.5","1","1"],
- "32.5": ["0.5","1","1","1","1","1","1"],
- "35.0": ["1","1","1","1","1","1","1"],
- "37.5": ["1.5","1","1","1","1","1","1"],
- "40.0": ["1.5","1","1","1","1.5","1","1"],
- "42.5": ["1.5","1","1.5","1","1.5","1","1"],
- "45.0": ["1","1.5","1","1.5","1","1.5","1.5"],
- "47.5": ["1","1.5","1.5","1.5","1","1.5","1.5"],
- "50.0": ["1","1.5","1.5","1.5","1.5","1.5","1.5"],
- "52.5": ["1.5","1.5","1.5","1.5","1.5","1.5","1.5"],
- "55.0": ["2","1.5","1.5","1.5","1.5","1.5","1.5"],
- "57.5": ["2","1.5","1.5","1.5","2","1.5","1.5"],
- "60.0": ["2","1.5","2","1.5","2","1.5","1.5"],
- "62.5": ["1.5","2","1.5","2","1.5","2","2"],
- "65.0": ["1.5","2","2","2.0","1.5","2","2"],
- "67.5": ["1.5","2","2","2","2","2","2"],
- "70.0": ["2","2","2","2","2","2","2"],
- "72.5": ["2.5","2","2","2","2","2","2"],
- "75.0": ["2.5","2","2","2","2.5","2","2"],
- "77.5": ["2.5","2","2.5","2","2.5","2","2"],
- "80.0": ["2","2.5","2","2.5","2","2.5","2.5"]
- };
- /*
- * getDoseString
- *
- * Returns string with daily warfarin dosing based on a weekly dose
- */
- Warfarin.getDoseString = function(dose) {
- var weeklySchedule, str;
- if (typeof dose == 'number') {
- dose = dose.toFixed(1);
- }
- if (!(dose in Warfarin.dosingSchedule)) {
- throw "getDoseString: Invalid dose: "+dose;
- }
- weeklySchedule = Warfarin.dosingSchedule[dose];
- str = 'Mon: '+weeklySchedule[0]+', ';
- str += 'Tue: '+weeklySchedule[1]+', ';
- str += 'Wed: '+weeklySchedule[2]+', ';
- str += 'Thr: '+weeklySchedule[3]+', ';
- str += 'Fri: '+weeklySchedule[4]+', ';
- str += 'Sat: '+weeklySchedule[5]+', ';
- str += 'Sun: '+weeklySchedule[6];
- return str;
- };
- /*
- * calcNewDose1
- *
- * This function will calculate a new weekly warfarin dose and determine schedule
- * for next INR check INR goal of 2.0 - 3.0
- * Reference: http://www.aafp.org/fpm/2005/0500/p77.html
- *
- * Reteruns
- * {
- * dose: - new weekly warfarin dose
- * nextInr - num of days in which next INR should be drawn
- * instructions - special instructiosn
- * }
- *
- */
- Warfarin.calcNewDose1 = function(inrRange, dose) {
- var newDose = {dose: null, instructions: null, nextInr: null};
- var min, max;
- if (typeof dose == 'number') {
- dose = dose.toFixed(1);
- }
- if (!(dose in Warfarin.dosingSchedule)) {
- throw "getDoseString: Invalid dose: "+dose;
- }
- if (inrRange == '< 1.5') {
- // Increase dose by 10-20%;
- min = dose*1.10;
- max = dose*1.20;
- var a = Math.round(min/2.5)*2.5;
- var b = Math.round(max/2.5)*2.5;
- console.log(min+' '+max);
- console.log(a+' '+b);
- if (a > min) {
- newDose.dose = a;
- } else {
- newDose.dose = b;
- }
- newDose.nextInr = 7;
- } else if (inrRange == '1.5 - 1.9') {
- // Increase dose by 5-10%;
- min = dose*1.05;
- max = dose*1.10;
- var a = Math.round(min/2.5)*2.5;
- var b = Math.round(max/2.5)*2.5;
- console.log(min+' '+max);
- console.log(a+' '+b);
- if (a > min) {
- newDose.dose = a;
- } else {
- newDose.dose = b;
- }
- newDose.nextInr = 14;
- } else if (inrRange == '2.0 - 3.0') {
- newDose.dose = dose;
- newDose.nextInr = 28;
- } else if (inrRange == '3.1 - 3.9') {
- // Decrease dose by 5-10%;
- min = dose*0.9;
- max = dose*0.95;
- var a = Math.round(min/2.5)*2.5;
- var b = Math.round(max/2.5)*2.5;
- console.log(min+' '+max);
- console.log(a+' '+b);
- if (b < max) {
- newDose.dose = b;
- } else {
- newDose.dose = a;
- }
- newDose.nextInr = 14;
- } else if (inrRange == '4.0 - 4.9') {
- // Decrease dose by 10%;
- min = dose*0.9;
- newDose.dose = Math.round(min/2.5)*2.5;
- newDose.instructions = "Hold 1 dose";
- newDose.nextInr = 7;
- } else if (inrRange == '>= 5.0') {
- newDose.instructions = "Please check the protocol. Patient may need Vitamin K and/or ER evaluation";
- }
- return newDose;
- };
- /*****************
- * UI FUNCTION
- *****************/
- Warfarin.UI.id = {
- dosing5mg: 'N_AFControl_4',
- currentWeeklyDose5mg: 'N_AFControl_5',
- currentWeeklyDoseText: 'N_AFControl_6',
- inrResult: 'N_AFControl_7',
- inrDate: 'N_AFControl_8_Date_dateInput',
- inrTime: 'N_AFControl_8_Time_dateInput',
- doseAdjustment: 'N_AFControl_9',
- newWeeklyDose5mg: 'N_AFControl_10',
- newWeeklyDoseText: 'N_AFControl_11',
- nextINRDate: 'N_AFControl_12_Date_dateInput',
- nextINRTime: 'N_AFControl_12_Time_dateInput',
- nextINRComment: 'N_AFControl_13',
- calcScore: 'calcScore',
- ref: 'ref',
- today: 'today',
- inrMsg: 'inrMsg'
- };
- Warfarin.UI.refURI = 'http://www.aafp.org/fpm/2005/0500/p77.html';
- // Use with Healthand centriq and Use Telerik for time and date controls
- Warfarin.UI.hl = true;
- Warfarin.UI.isDosing5mg = function() {
- if ($('#'+Warfarin.UI.id.dosing5mg+' option:selected').text() == 'Yes') {
- return true;
- }
- return false;
- };
- /*
- * status - true or false
- */
- Warfarin.UI.setDosing5mg = function(status) {
- var yes = $('#'+Warfarin.UI.id.dosing5mg+' option:eq(1)').val();
- var no = $('#'+Warfarin.UI.id.dosing5mg+' option:eq(2)').val();
- if (status) {
- $('#'+Warfarin.UI.id.dosing5mg).val(yes);
- } else {
- $('#'+Warfarin.UI.id.dosing5mg).val(no);
- }
- };
- /*
- * Returns current weekly dose base on 5 mg pills in string format
- */
- Warfarin.UI.getCurrentWeeklyDose5mg = function() {
- var dose = $('#'+Warfarin.UI.id.currentWeeklyDose5mg+' option:selected').text();
- if (dose == '-select-') {
- return;
- } else {
- return dose.split(' ')[0];
- }
- };
- Warfarin.UI.setCurrentWeeklyDose5mg = function(dose) {
- var val, txt;
- dose = parseFloat(dose);
- for (var i = 0; i < $('#'+Warfarin.UI.id.currentWeeklyDose5mg+' option').length; i++) {
- txt = $('#'+Warfarin.UI.id.currentWeeklyDose5mg+' option:eq('+i+')').text();
- if (parseFloat(txt) == dose) {
- val = $('#'+Warfarin.UI.id.currentWeeklyDose5mg+' option:eq('+i+')').val();
- $('#'+Warfarin.UI.id.currentWeeklyDose5mg).val(val);
- break;
- }
- }
- };
- Warfarin.UI.setCurrentWeeklyDose = function(dose) {
- $('#'+Warfarin.UI.id.currentWeeklyDoseText).val(dose);
- };
- Warfarin.UI.onCurrentWeeklyDose5mgChange = function() {
- if (!Warfarin.UI.isDosing5mg()) {
- return;
- }
- dose = Warfarin.UI.getCurrentWeeklyDose5mg();
- console.log(dose);
- if (dose) {
- Warfarin.UI.setCurrentWeeklyDose(Warfarin.getDoseString(dose));
- }
- };
- /*
- * Returns current weekly dose base on 5 mg pills in string format
- */
- Warfarin.UI.getNewWeeklyDose5mg = function() {
- var dose = $('#'+Warfarin.UI.id.newWeeklyDose5mg+' option:selected').text();
- if (dose == '-select-') {
- return;
- } else {
- return dose.split(' ')[0];
- }
- };
- Warfarin.UI.setNewWeeklyDose5mg = function(dose) {
- var val, txt;
- dose = parseFloat(dose);
- for (var i = 0; i < $('#'+Warfarin.UI.id.newWeeklyDose5mg+' option').length; i++) {
- txt = $('#'+Warfarin.UI.id.newWeeklyDose5mg+' option:eq('+i+')').text();
- if (parseFloat(txt) == dose) {
- val = $('#'+Warfarin.UI.id.newWeeklyDose5mg+' option:eq('+i+')').val();
- $('#'+Warfarin.UI.id.newWeeklyDose5mg).val(val);
- break;
- }
- }
- };
- Warfarin.UI.onNewWeeklyDose5mgChange = function () {
- if (!Warfarin.UI.isDosing5mg()) {
- return;
- }
- dose = Warfarin.UI.getNewWeeklyDose5mg();
- console.log(dose);
- if (dose) {
- Warfarin.UI.setNewWeeklyDose(Warfarin.getDoseString(dose));
- }
- };
- Warfarin.UI.setNewWeeklyDose = function(dose) {
- $('#'+Warfarin.UI.id.newWeeklyDoseText).val(dose);
- };
- Warfarin.UI.getINRResult = function() {
- return $('#'+Warfarin.UI.id.inrResult+' option:selected').text();
- };
- Warfarin.UI.setINRResult = function(index) {
- var tmp = $('#'+Warfarin.UI.id.inrResult+' option:eq('+index+')').val();
- $('#'+Warfarin.UI.id.inrResult).val(tmp);
- };
- Warfarin.UI.getINRDate = function() {
- var dateTxt, date;
- dateTxt = $('#'+Warfarin.UI.id.inrDate).val();
- return new Date(dateTxt);
- };
- Warfarin.UI.setINRDate = function(date) {
- console.log(date);
- if (Warfarin.UI.hl) {
- if (!(date instanceof Date)) {
- date = new Date(date);
- }
- var dCtl = $find(Warfarin.UI.id.inrDate);
- var tCtl = $find(Warfarin.UI.id.inrTime);
- dCtl.set_selectedDate(date);
- tCtl.set_selectedDate(date);
- } else {
- if (date instanceof Date) {
- $('#'+Warfarin.UI.id.inrDate).val(date.toLocaleDateString()).change();
- } else {
- $('#'+Warfarin.UI.id.inrDate).val(date).change();
- }
- }
- };
- Warfarin.UI.getDoseAdjustment = function() {
- var yes = $('#'+Warfarin.UI.id.doseAdjustment+' option:eq(1)').val();
- return ($('#'+Warfarin.UI.id.doseAdjustment+' option:selected').val() == yes);
- };
- Warfarin.UI.setDoseAdjustment = function(status) {
- var yes = $('#'+Warfarin.UI.id.doseAdjustment+' option:eq(1)').val();
- var no = $('#'+Warfarin.UI.id.doseAdjustment+' option:eq(2)').val();
- $('#'+Warfarin.UI.id.doseAdjustment).val(status ? yes : no);
- };
- Warfarin.UI.getNextINRDate = function() {
- var dateTxt, date;
- dateTxt = $('#'+Warfarin.UI.id.nextINRDate).val();
- return new Date(dateTxt);
- };
- Warfarin.UI.setNextINRDate = function(date) {
- console.log(date);
- if (Warfarin.UI.hl) {
- if (!(date instanceof Date)) {
- date = new Date(date);
- }
- var dCtl = $find(Warfarin.UI.id.nextINRDate);
- var tCtl = $find(Warfarin.UI.id.nextINRTime);
- dCtl.set_selectedDate(date);
- tCtl.set_selectedDate(date);
- } else {
- if (date instanceof Date) {
- $('#'+Warfarin.UI.id.nextINRDate).val(date.toLocaleDateString()).change();
- } else {
- $('#'+Warfarin.UI.id.nextINRDate).val(date).change();
- }
- }
- };
- Warfarin.UI.getNextINRDateComment = function() {
- return $('#'+Warfarin.UI.id.nextINRComment).val();
- };
- Warfarin.UI.setNextINRDateComment = function(text) {
- $('#'+Warfarin.UI.id.nextINRComment).val(text);
- };
- Warfarin.UI.clearNewWekklyDose = function() {
- var val = $('#'+Warfarin.UI.id.newWeeklyDose5mg+' option:eq(0)').val();
- $('#'+Warfarin.UI.id.newWeeklyDose5mg).val(val);
- Warfarin.UI.setNewWeeklyDose('');
- Warfarin.UI.setDoseAdjustment(true);
- Warfarin.UI.setNextINRDate('');
- Warfarin.UI.setNextINRDateComment('');
- };
- Warfarin.UI.addINRButton1 = function() {
- $('#'+Warfarin.UI.id.newWeeklyDose5mg).after('<input id="'+Warfarin.UI.id.calcScore+'" type="button" value="Calculate Score">');
- $('#'+Warfarin.UI.id.calcScore).bind('click', Warfarin.UI.calcINR1);
- };
- Warfarin.UI.addRefButton = function() {
- $('#'+Warfarin.UI.id.calcScore).after('<input id="'+Warfarin.UI.id.ref+'" type="button" value="Reference">');
- $('#'+Warfarin.UI.id.ref).bind('click', Warfarin.UI.onRef);
- };
- Warfarin.UI.addTodayButton = function() {
- // $('#'+Warfarin.UI.id.inrDate).before('<input id="'+Warfarin.UI.id.today+'" type="button" value="Today">');
- $('#N_AFControl_8_Time_wrapper').after('<input id="'+Warfarin.UI.id.today+'" type="button" value="Today">');
- $('#'+Warfarin.UI.id.today).bind('click', Warfarin.UI.onToday);
- };
- Warfarin.UI.calcINR1 = function() {
- var dose, doseText, inrRange, newDose, inrDate;
- if (!Warfarin.UI.isDosing5mg()) {
- Warfarin.UI.msgInr('To use dosing calculator you must use 5 mg dosing schedule.');
- return;
- }
- dose = Warfarin.UI.getCurrentWeeklyDose5mg();
- if (dose == '-select-') {
- Warfarin.UI.msgInr('You must select current dose.');
- return;
- }
- inrRange = Warfarin.UI.getINRResult();
- if (inrRange == '-select-') {
- Warfarin.UI.msgInr('You must select INR result.');
- return;
- }
- newDose = Warfarin.calcNewDose1(inrRange, dose);
- if (newDose.dose) {
- Warfarin.UI.setNewWeeklyDose5mg(newDose.dose);
- if (newDose.instructions) {
- doseText = newDose.instructions+' then\n';
- doseText += Warfarin.getDoseString(newDose.dose);
- } else {
- doseText = Warfarin.getDoseString(newDose.dose);
- }
- if (newDose.dose-dose > 0) {
- doseText += '\nIncrease: ';
- doseText += ((newDose.dose-dose)/dose*100).toFixed(1)+'%';
- } else if(newDose.dose-dose < 0) {
- doseText += '\nDecrease: ';
- doseText += ((dose-newDose.dose)/dose*100).toFixed(1)+'%';
- }
- Warfarin.UI.setNewWeeklyDose(doseText);
- Warfarin.UI.setDoseAdjustment(dose != newDose.dose);
- if (newDose.nextInr) {
- Warfarin.UI.setNextINRDateComment('Check INR in '+newDose.nextInr+' days');
- inrDate = Warfarin.UI.getINRDate();
- if (inrDate.valueOf() !== NaN) {
- inrDate.setDate(inrDate.getDate()+newDose.nextInr);
- Warfarin.UI.setNextINRDate(inrDate);
- }
- }
- } else {
- Warfarin.UI.clearNewWekklyDose();
- Warfarin.UI.msgInr(newDose.instructions);
- return;
- }
- };
- Warfarin.UI.onRef = function() {
- var win = window.open(Warfarin.UI.refURI);
- win.focus();
- };
- Warfarin.UI.onToday = function() {
- Warfarin.UI.setINRDate(new Date());
- };
- Warfarin.UI.msgInr = function(txt) {
- $('#'+Warfarin.UI.id.inrMsg).dialog('option', 'title', 'INR Message');
- if (typeof txt == 'string') {
- $('#'+Warfarin.UI.id.inrMsg).text(txt);
- }
- $('#'+Warfarin.UI.id.inrMsg).dialog('open');
- };
- Warfarin.UI.initINRCalc1 = function() {
- Warfarin.UI.addINRButton1();
- Warfarin.UI.addRefButton();
- Warfarin.UI.addTodayButton();
- $('#'+Warfarin.UI.id.currentWeeklyDose5mg).bind('change', Warfarin.UI.onCurrentWeeklyDose5mgChange);
- $('#'+Warfarin.UI.id.newWeeklyDose5mg).bind('change', Warfarin.UI.onNewWeeklyDose5mgChange);
- $('<div id="inrMsg"></div>').appendTo('body').dialog({autoOpen: false});
- /*
- * Testing initalization
- */
- Warfarin.UI.setDosing5mg(true);
- Warfarin.UI.setCurrentWeeklyDose5mg(30);
- Warfarin.UI.setCurrentWeeklyDose(Warfarin.getDoseString(30));
- Warfarin.UI.setINRResult(3);
- Warfarin.UI.setINRDate(new Date());
- };