From 80918652f68f5f10efc7226ca31c888079525f89 Mon Sep 17 00:00:00 2001 From: stephen waite Date: Sat, 15 May 2021 15:56:15 -0400 Subject: [PATCH] Reports->Clients->Message List (#4386) --- interface/main/tabs/menu/menus/standard.json | 12 ++ interface/reports/message_list.php | 310 +++++++++++++++++++++++++++ interface/reports/patient_list.php | 13 +- 3 files changed, 325 insertions(+), 10 deletions(-) create mode 100644 interface/reports/message_list.php diff --git a/interface/main/tabs/menu/menus/standard.json b/interface/main/tabs/menu/menus/standard.json index 1e7f7f682..99d84aeb7 100644 --- a/interface/main/tabs/menu/menus/standard.json +++ b/interface/main/tabs/menu/menus/standard.json @@ -1377,6 +1377,18 @@ ] }, { + "label": "Message List", + "menu_id": "rep0", + "target": "rep", + "url": "/interface/reports/message_list.php", + "children": [], + "requirement": 0, + "acl_req": [ + "patients", + "med" + ] + }, + { "label": "Clinical", "menu_id": "rep0", "target": "rep", diff --git a/interface/reports/message_list.php b/interface/reports/message_list.php new file mode 100644 index 000000000..a60d30025 --- /dev/null +++ b/interface/reports/message_list.php @@ -0,0 +1,310 @@ + + * @author Brady Miller + * @author Stephen Waite + * @copyright Copyright (c) 2005-2016 Rod Roark + * @copyright Copyright (c) 2017-2018 Brady Miller + * @copyright Copyright (c) 2021 Stephen Waite + * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3 + */ + +require_once("../globals.php"); +require_once("$srcdir/patient.inc"); +require_once("$srcdir/options.inc.php"); +require_once("../drugs/drugs.inc.php"); + +use OpenEMR\Common\Csrf\CsrfUtils; +use OpenEMR\Core\Header; +use OpenEMR\Services\UserService; + +if (!empty($_POST)) { + if (!CsrfUtils::verifyCsrfToken($_POST["csrf_token_form"])) { + CsrfUtils::csrfNotVerified(); + } +} + +$userService = new UserService(); + +$form_from_date = (!empty($_POST['form_from_date'])) ? DateToYYYYMMDD($_POST['form_from_date']) : date('Y-01-01'); +$form_to_date = (!empty($_POST['form_to_date'])) ? DateToYYYYMMDD($_POST['form_to_date']) : date('Y-m-d'); + +// In the case of CSV export only, a download will be forced. +if (!empty($_POST['form_csvexport'])) { + header("Pragma: public"); + header("Expires: 0"); + header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + header("Content-Type: application/force-download"); + header("Content-Disposition: attachment; filename=message_list.csv"); + header("Content-Description: File Transfer"); +} else { + ?> + + + +<?php echo xlt('Message List'); ?> + + + + + + + + + + + + + + - + +
+ +
+ +
+ + +
+ + + + + + + + +
+
+ + + + + + + + +
+ : + + + + : + + +
+ +
+ +
+ + + + +
+
+
+ + + + + + + + + + + +
+
+
+
+
+ +
+ + + + + + + + + + + + + + = ? AND pn.date <= ?"; + array_push($sqlBindArray, $form_from_date . " 00:00:00", $form_to_date . " 23:59:59"); + + if ($form_patient_id) { + $where .= " AND p.pubpid = ?"; + array_push($sqlBindArray, $form_patient_id); + } + + $query = "SELECT pn.id, pn.date, pn.body, pn.pid, pn.user, pn.groupname, " . + "pn.activity, pn.authorized, pn.title, pn.assigned_to, pn.deleted, pn.message_status, " . + "pn.portal_relation, pn.is_msg_encrypted, pn.update_by, pn.update_date, " . + "p.pubpid, p.fname, p.lname, p.mname, p.dob, " . + "u.username " . + "FROM pnotes AS pn " . + "LEFT OUTER JOIN patient_data AS p ON p.pid = pn.pid " . + "LEFT OUTER JOIN users AS u ON u.id = pn.user " . + "WHERE $where " . + "ORDER BY p.lname, p.fname, p.pubpid"; + + $res = sqlStatement($query, $sqlBindArray); + + while ($row = sqlFetchArray($res)) { + $msg_date = $row['date']; + $user = $row['user']; + $patient_name = $row['lname'] . ', ' . $row['fname'] . ' ' . $row['mname']; + $patient_id = $row['pubpid']; + $patient_dob = $row['dob']; + $msg_type = $row['title']; + $msg_status = $row['message_status']; + $username = $userService->getUser($row['update_by']); + $update_by = $username['username']; + $update_date = $row['update_date']; + if ($_POST['form_csvexport']) { + echo csvEscape(oeFormatShortDate(substr($msg_date, 0, 10))) . ','; + echo csvEscape($user) . ','; + echo csvEscape($row['lname']) . ','; + echo csvEscape($row['fname']) . ','; + echo csvEscape($patient_id) . ','; + echo csvEscape($patient_dob) . ','; + echo csvEscape(xl($msg_type)) . ','; + echo csvEscape(xl($msg_status)) . ','; + echo csvEscape($update_by) . ','; + echo csvEscape(oeFormatShortDate(substr($update_date, 0, 10))) . "\n"; + } else { + ?> + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ + + + + diff --git a/interface/reports/patient_list.php b/interface/reports/patient_list.php index db62952ca..b13d3cb3b 100644 --- a/interface/reports/patient_list.php +++ b/interface/reports/patient_list.php @@ -26,15 +26,8 @@ if (!empty($_POST)) { } } -$from_date = DateToYYYYMMDD($_POST['form_from_date'] ?? ''); -$to_date = DateToYYYYMMDD($_POST['form_to_date'] ?? ''); -if (empty($to_date) && !empty($from_date)) { - $to_date = date('Y-12-31'); -} - -if (empty($from_date) && !empty($to_date)) { - $from_date = date('Y-01-01'); -} +$from_date = (!empty($_POST['form_from_date'])) ? DateToYYYYMMDD($_POST['form_from_date']) : date('Y-01-01'); +$to_date = (!empty($_POST['form_to_date'])) ? DateToYYYYMMDD($_POST['form_to_date']) : date('Y-m-d'); $form_provider = empty($_POST['form_provider']) ? 0 : intval($_POST['form_provider']); @@ -168,10 +161,10 @@ $(function () { + - -- 2.11.4.GIT