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.

323 lines
16 KiB

<?php
// +-----------------------------------------------------------------------------+
// Copyright (C) 2011 Z&H Consultancy Services Private Limited <sam@zhservices.com>
//
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
//
// A copy of the GNU General Public License is included along with this program:
// openemr/interface/login/GnuGPL.html
// For more information write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// Author: Eldho Chacko <eldho@zhservices.com>
// Jacob T Paul <jacob@zhservices.com>
// Jerry Padgett <sjpadgett@gmail.com> 2019-2021
//
// +------------------------------------------------------------------------------+
require_once("../../interface/globals.php");
require_once("$srcdir/lists.inc");
require_once("$srcdir/user.inc");
use OpenEMR\Core\Header;
use OpenEMR\Common\Csrf\CsrfUtils;
// mdsupport : li code
function listitemCode($strDisp, $strInsert, $ref = '')
{
if ($strInsert) {
if (!empty($ref)) {
$id = text($ref);
$ref = " {|$id|}";
}
echo '<li><a href="#" onclick="top.restoreSession();CKEDITOR.instances.textarea1.insertText(' .
"'" . text($strInsert) . $ref . "'" . ');">' . text($strDisp) . '</a></li>';
}
}
$allowTemplateWarning = checkUserSetting('disable_template_warning', '1') === true ? 0 : 1;
$contextName = !empty($_GET['contextName']) ? $_GET['contextName'] : '';
$type = $_GET['type'] ?? '';
$cc_flag = $_GET['ccFlag'] ?? '';
$isNN = empty($cc_flag) ? 1 : 0;
if (empty($isNN)) {
$contextName = empty($contextName) ? "Encounters" : $contextName;
}
// either NN context from layout or text template default.
$rowContext = sqlQuery("SELECT * FROM customlists WHERE cl_list_type = 2 AND cl_list_item_long = ?", array($contextName));
if (empty($isNN) && empty($rowContext)) {
$contextName .= " <small><em>(" . xlt("Add Missing Context Template.") . ")</em></small>";
}
?>
<html>
<head>
<style>
.draggable {
cursor: pointer !important;
}
.is-dragging {
cursor: move !important;
}
</style>
<?php Header::setupHeader(['common', 'opener', 'select2', 'ckeditor']); ?>
<script src="<?php echo $GLOBALS['webroot'] ?>/library/js/ajax_functions_writer.js"></script>
<script>
let allowTemplateWarning = <?php echo $allowTemplateWarning; ?>;
<?php if (!$isNN) { ?>
$(function () {
$('#contextSearch').select2({
placeholder: <?php echo xlj('Select Template Context'); ?>,
width: 'resolve',
theme: 'bootstrap4',
ajax: {
url: top.webroot_url + '/library/ajax/template_context_search.php',
data: function (params) {
let query = {
search: params.term,
csrf_token_form: <?php echo js_escape(CsrfUtils::collectCsrfToken()); ?>
};
return query;
},
dataType: 'json',
},
<?php require($GLOBALS['srcdir'] . '/js/xl/select2.js.php'); ?>
});
$('#contextSearch').on('select2:select', function (e) {
let data = e.params.data;
top.restoreSession();
$("#contextName").val(data.text);
$("#mainForm").submit();
});
});
<?php } ?>
function refreshme() {
top.restoreSession();
document.location.reload();
}
CKEDITOR.config.customConfig = top.webroot_url + '/library/js/nncustom_config.js';
$(function () {
tabbify();
$(".iframe_small").on('click', function (e) {
e.preventDefault();
e.stopPropagation();
dlgopen('', '', 330, 120, '', '', {
buttons: [
{text: '<?php echo xla('Close'); ?>', close: true, style: 'secondary btn-sm'}
],
onClosed: 'refreshme',
type: 'iframe',
url: $(this).attr('href')
});
});
$(".iframe_medium").on('click', function (e) {
e.preventDefault();
e.stopPropagation();
dlgopen('', '', 725, 500, '', '', {
buttons: [
{text: '<?php echo xla('Close'); ?>', close: true, style: 'secondary btn-sm'}
],
onClosed: 'refreshme',
type: 'iframe',
url: $(this).attr('href')
});
});
$(".iframe_abvmedium").on('click', function (e) {
e.preventDefault();
e.stopPropagation();
dlgopen('', '', 700, 500, '', '', {
buttons: [
{text: '<?php echo xla('Close'); ?>', close: true, style: 'secondary btn-sm'}
],
onClosed: 'refreshme',
type: 'iframe',
url: $(this).attr('href')
});
});
$("#menu5 > li > a.expanded + ul").slideToggle("medium");
$("#menu5 > li > a").click(function () {
$("#menu5 > li > a.expanded").not(this).toggleClass("expanded").toggleClass("collapsed").parent().find('> ul').slideToggle("medium");
$(this).toggleClass("expanded").toggleClass("collapsed").parent().find('> ul').slideToggle("medium");
});
});
</script>
<script>
$(function () {
function sortableCallback(elem){
let clorder = [];
for (let i=0; i< elem.length; i++) {
let ele = elem[i];
if(ele.tagName == "DIV"){
clorder.push("clorder[]="+ele.firstElementChild.id.split("_")[1]);
}
}
$.post("updateDB.php", clorder.join('&')+"&action=updateRecordsListings");
}
oeSortable(sortableCallback);
});
<?php require($GLOBALS['srcdir'] . "/restoreSession.php"); ?>
</script>
</head>
<body class="body_top">
<div class="container-fluid">
<input type="hidden" name="list_id" id="list_id" value="<?php echo $rowContext['cl_list_id'] ?? ''; ?>" />
<?php if (($rowContext['cl_list_item_long'] ?? null) || !$isNN) { ?>
<!-- don't escape $contextName it's html -->
<h3 class="text-center"><?php echo (text($rowContext['cl_list_item_long'] ?? '')) ?: $contextName; ?></h3>
<div id="tab1" class="tabset_content tabset_content_active">
<form id="mainForm">
<input type="hidden" name="type" id="type" value="<?php echo attr($type); ?>" />
<input type="hidden" name="ccFlag" id="type" value="<?php echo attr($cc_flag); ?>" />
<input type="hidden" name="contextName" id="contextName" value="<?php echo attr($contextName); ?>" />
<div class="row">
<div class="col-md-12">
<?php if (!$isNN) { ?>
<div id="searchCriteria">
<div class="select-box form-inline mb-1">
<label for="contextId"><?php echo xlt('Context') . ':'; ?></label>
<select id="contextSearch" name="contextId" class="form-control form-control-sm w-50">
<option value=""></option>
</select>
</div>
</div>
<?php } ?>
</div>
<div class="col-md-4 text mb-2" id="templateDD">
<select class="form-control form-control-sm" name="template" id="template" onchange="TemplateSentence(this.value)">
<option value=""><?php echo htmlspecialchars(xl('Select category'), ENT_QUOTES); ?></option>
<?php
$resTemplates = sqlStatement("SELECT * FROM template_users AS tu LEFT OUTER JOIN customlists AS c ON tu.tu_template_id=c.cl_list_slno WHERE tu.tu_user_id=? AND c.cl_list_type=3 AND cl_list_id=? AND cl_deleted=0 ORDER BY c.cl_list_item_long", array($_SESSION['authUserID'], ($rowContext['cl_list_id'] ?? null)));
while ($rowTemplates = sqlFetchArray($resTemplates)) {
echo "<option value='" . htmlspecialchars($rowTemplates['cl_list_slno'], ENT_QUOTES) . "'>" . htmlspecialchars(xl($rowTemplates['cl_list_item_long']), ENT_QUOTES) . "</option>";
}
?>
</select>
</div>
<div class="col-md-8 text mb-1">
<div id="share" style="display:none"></div>
<!-- Enter Key !-->
<a href="#" id="enter" onclick="top.restoreSession();ascii_write('13','textarea1');" title="<?php echo htmlspecialchars(xl('Enter Key'), ENT_QUOTES); ?>"><i class="fas fa-sign-in-alt"></i></a>&nbsp;
<!-- Question Mark !-->
<a href="#" id="quest" onclick="top.restoreSession();CKEDITOR.instances.textarea1.insertText('? ');" title="<?php echo htmlspecialchars(xl('Question Mark'), ENT_QUOTES); ?>"><i class="fas fa-question-circle"></i></a>&nbsp;
<!-- Paragraph !-->
<a href="#" id="para" onclick="top.restoreSession();ascii_write('para','textarea1');" title="<?php echo htmlspecialchars(xl('New Paragraph'), ENT_QUOTES); ?>"><i class="fas fa-paragraph"></i></a>&nbsp;
<!-- Space !-->
<a href="#" id="space" onclick="top.restoreSession();ascii_write('32','textarea1');" class="btn btn-primary btn-sm" title="<?php echo htmlspecialchars(xl('Space'), ENT_QUOTES); ?>"><?php echo htmlspecialchars(xl('Space'), ENT_QUOTES); ?></a>
<?php
$res = sqlStatement("SELECT * FROM template_users AS tu LEFT OUTER JOIN customlists AS cl ON cl.cl_list_slno = tu.tu_template_id WHERE tu.tu_user_id = ? AND cl.cl_list_type = 6 AND cl.cl_deleted = 0 ORDER BY cl.cl_order", array($_SESSION['authUserID']));
while ($row = sqlFetchArray($res)) { ?>
<a href="#" onclick="top.restoreSession();CKEDITOR.instances.textarea1.insertText('<?php echo $row['cl_list_item_short']; ?>');" class="btn btn-primary" title="<?php echo htmlspecialchars(xl($row['cl_list_item_long']), ENT_QUOTES); ?>"><?php echo ucfirst(htmlspecialchars(xl($row['cl_list_item_long']), ENT_QUOTES)); ?></a>
<?php } ?>
<a class="btn btn-primary btn-sm btn-transmit float-right" href="#" onclick="return SelectToSave(<?php echo attr_js($type); ?>, <?php echo attr_js($cc_flag); ?>)"><?php echo xlt('Insert in Form'); ?></a>
</div>
<div class="col-md-4">
<div class="bg-light">
<div style="overflow-y: scroll; overflow-x: hidden; height: 400px">
<ul id="menu5" class="example_menu w-100">
<li>
<a class="expanded"><?php echo htmlspecialchars(xl('Components'), ENT_QUOTES); ?></a>
<ul>
<div id="template_sentence"></div>
</ul>
</li>
<?php
if ($pid != '') {
$row = sqlQuery("SELECT p.*, IF(ISNULL(p.providerID), NULL, CONCAT(u.lname,',',u.fname)) pcp " .
"FROM patient_data p LEFT OUTER JOIN users u " .
"ON u.id=p.providerID WHERE pid=?", array($pid));
?>
<li>
<a class="collapsed"><?php echo htmlspecialchars(xl('Patient Details'), ENT_QUOTES); ?></a>
<ul>
<?php
listitemCode(xl('First name'), $row['fname']);
listitemCode(xl('Last name'), $row['lname']);
listitemCode(xl('Phone'), $row['phone_home']);
listitemCode(xl('SSN'), $row['ss']);
listitemCode(xl('Date Of Birth'), $row['DOB']);
listitemCode(xl('PCP'), $row['pcp']);
?>
</ul>
</li>
<?php
foreach ($ISSUE_TYPES as $issType => $issTypeDesc) {
$res = sqlStatement('SELECT title, id, IF(diagnosis="","",CONCAT(" [",diagnosis,"]")) codes FROM lists WHERE pid=? AND type=? AND enddate IS NULL ORDER BY title', array($pid, $issType));
if (sqlNumRows($res)) { ?>
<li>
<a class="collapsed"><?php echo htmlspecialchars(xl($issTypeDesc[0]), ENT_QUOTES); ?></a>
<ul>
<?php
while ($row = sqlFetchArray($res)) {
if (!empty($isNN)) {
$row['id'] = "";
}
listitemCode((strlen($row['title']) > 20) ? (substr($row['title'], 0, 18) . '..') : $row['title'], ($row['title'] . $row['codes']), $row['id']);
}
?>
</ul>
</li>
<?php }
}
} ?>
</ul>
</div>
</div>
<a href="personalize.php?list_id=<?php echo $rowContext['cl_list_id'] ?? ''; ?>" id="personalize_link" class="iframe_medium btn btn-primary btn-sm"><?php echo htmlspecialchars(xl('Personalize'), ENT_QUOTES); ?></a>
<a href="add_custombutton.php" id="custombutton" class="iframe_medium btn btn-primary btn-sm" title="<?php echo htmlspecialchars(xl('Add Buttons for Special Chars,Texts to be Displayed on Top of the Editor for inclusion to the text on a Click'), ENT_QUOTES); ?>"><?php echo htmlspecialchars(xl('Add Buttons'), ENT_QUOTES); ?></a>
</div>
<div class="col-md-8">
<textarea class="ckeditor" cols="100" rows="180" id="textarea1" name="textarea1"></textarea>
<span class="float-right my-1"><a href="#" onclick="return SelectToSave(<?php echo attr_js($type); ?>, <?php echo attr_js($cc_flag); ?>)" class="btn btn-primary btn-sm btn-save float-right"><?php echo xlt('Insert in Form'); ?></a></span>
</div>
</div>
</form>
</div>
<?php
} else {
echo htmlspecialchars(xl('NO SUCH CONTEXT NAME') . $contextName, ENT_QUOTES);
exit();
}
?>
<table>
<script>
<?php if (!$isNN) { ?>
CKEDITOR.on('instanceReady', function(){$("#cke_1_toolbar_collapser").click();});
<?php } ?>
$(function () {
edit(<?php echo js_escape($type); ?>, <?php echo js_escape($cc_flag); ?>);
});
<?php if ($allowTemplateWarning && !$isNN) { ?>
// teeheehee
let msg = xl("These templates are text only and will not render any other formatting other than pure text.") + " ";
msg += xl("You may still use formatting if template is also used in Nation Notes however, pure text will still render here.") +
"<br /><br />";
msg += xl("Click Got it icon to dismiss this alert forever.");
alertMsg(msg, 10000, 'danger', 'lg', 'disable_template_warning');
<?php } ?>
</script>
</table>
</div>
</body>
</html>