quick minor path updates (#1968)
[openemr.git] / interface / orders / pending_orders.php
blobd9ba98699c9f6af74b85ce4bb49bd86fa7cc62c0
1 <?php
2 /**
3 * Pending orders.
5 * @package OpenEMR
6 * @link http://www.open-emr.org
7 * @author Rod Roark <rod@sunsetsystems.com>
8 * @author Brady Miller <brady.g.miller@gmail.com>
9 * @copyright Copyright (c) 2010-2013 Rod Roark <rod@sunsetsystems.com>
10 * @copyright Copyright (c) 2017 Brady Miller <brady.g.miller@gmail.com>
11 * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
15 require_once("../globals.php");
16 require_once("$srcdir/patient.inc");
17 require_once("$srcdir/acl.inc");
18 require_once "$srcdir/options.inc.php";
20 use OpenEMR\Core\Header;
22 function thisLineItem($row)
24 $provname = $row['provider_lname'];
25 if (!empty($row['provider_fname'])) {
26 $provname .= ', ' . $row['provider_fname'];
27 if (!empty($row['provider_mname'])) {
28 $provname .= ' ' . $row['provider_mname'];
32 if ($_POST['form_csvexport']) {
33 echo '"' . addslashes($row['patient_name' ]) . '",';
34 echo '"' . addslashes($row['pubpid' ]) . '",';
35 echo '"' . addslashes(oeFormatShortDate($row['date_ordered' ])) . '",';
36 echo '"' . addslashes($row['organization' ]) . '",';
37 echo '"' . addslashes($provname) . '",';
38 echo '"' . addslashes($row['priority_name' ]) . '",';
39 echo '"' . addslashes($row['status_name' ]) . '"' . "\n";
40 } else {
42 <tr>
43 <td class="detail"><?php echo text($row['patient_name' ]); ?></td>
44 <td class="detail"><?php echo text($row['pubpid' ]); ?></td>
45 <td class="detail"><?php echo text(oeFormatShortDate($row['date_ordered' ])); ?></td>
46 <td class="detail"><?php echo text($row['organization' ]); ?></td>
47 <td class="detail"><?php echo text($provname); ?></td>
48 <td class="detail"><?php echo text($row['priority_name' ]); ?></td>
49 <td class="detail"><?php echo text($row['status_name' ]); ?></td>
50 </tr>
51 <?php
52 } // End not csv export
55 if (! acl_check('acct', 'rep')) {
56 die(xlt("Unauthorized access."));
59 $form_from_date = isset($_POST['form_from_date']) ? DateToYYYYMMDD($_POST['form_from_date']) : date('Y-m-d');
60 $form_to_date = isset($_POST['form_to_date']) ? DateToYYYYMMDD($_POST['form_to_date']) : date('Y-m-d');
61 $form_facility = $_POST['form_facility'];
63 if ($_POST['form_csvexport']) {
64 if (!verifyCsrfToken($_POST["csrf_token_form"])) {
65 csrfNotVerified();
68 header("Pragma: public");
69 header("Expires: 0");
70 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
71 header("Content-Type: application/force-download");
72 header("Content-Disposition: attachment; filename=pending_orders.csv");
73 header("Content-Description: File Transfer");
74 // CSV headers:
75 echo '"' . xl('Patient') . '",';
76 echo '"' . xl('ID') . '",';
77 echo '"' . xl('Ordered') . '",';
78 echo '"' . xl('From') . '",';
79 echo '"' . xl('Procedure') . '",';
80 echo '"' . xl('Provider') . '",';
81 echo '"' . xl('Priority') . '",';
82 echo '"' . xl('Status') . '"' . "\n";
83 } else { // not export
85 <html>
86 <head>
87 <title><?php echo xlt('Pending Orders') ?></title>
89 <?php Header::setupHeader('datetime-picker'); ?>
91 <script language="JavaScript">
93 $(document).ready(function() {
94 var win = top.printLogSetup ? top : opener.top;
95 win.printLogSetup(document.getElementById('printbutton'));
97 $('.datepicker').datetimepicker({
98 <?php $datetimepicker_timepicker = false; ?>
99 <?php $datetimepicker_showseconds = false; ?>
100 <?php $datetimepicker_formatInput = true; ?>
101 <?php require($GLOBALS['srcdir'] . '/js/xl/jquery-datetimepicker-2-5-4.js.php'); ?>
102 <?php // can add any additional javascript settings to datetimepicker here; need to prepend first setting with a comma ?>
105 </script>
106 </head>
108 <body leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'>
109 <center>
111 <h2><?php echo xlt('Pending Orders')?></h2>
113 <form method='post' action='pending_orders.php' onsubmit='return top.restoreSession()'>
114 <input type="hidden" name="csrf_token_form" value="<?php echo attr(collectCsrfToken()); ?>" />
116 <table border='0' cellpadding='3'>
118 <tr>
119 <td>
120 <?php dropdown_facility($form_facility, 'form_facility', false); ?>
121 </td>
122 <td class='control-label'>
123 &nbsp;<?php echo xlt('From')?>:
124 </td>
125 <td>
126 <input type='text' class='datepicker form-control' name='form_from_date' id="form_from_date" size='10' value='<?php echo attr(oeFormatShortDate($form_from_date)); ?>'>
127 </td>
128 <td class='control-label'>
129 &nbsp;<?php echo xlt('To')?>:
130 </td>
131 <td>
132 <input type='text' class='datepicker form-control' name='form_to_date' id="form_to_date" size='10' value='<?php echo attr(oeFormatShortDate($form_to_date)); ?>'>
133 </td>
134 </tr>
135 <tr>
136 <td>
137 <div class="btn-group" role="group">
138 <button type='submit' class='btn btn-default btn-refresh' name='form_refresh'><?php echo xlt('Refresh'); ?></button>
139 <button type='submit' class='btn btn-default btn-transmit' name='form_csvexport'><?php echo xlt('Export to CSV'); ?></button>
140 <button type='button' class='btn btn-default btn-print' id='printbutton'><?php echo xlt('Print'); ?></button>
141 </div>
142 </td>
143 </tr>
145 <tr>
146 <td height="1">
147 </td>
148 </tr>
150 </table>
152 <table border='0' cellpadding='1' cellspacing='2' width='98%'>
153 <tr bgcolor="#dddddd">
154 <td class="dehead"><?php echo xlt('Patient'); ?></td>
155 <td class="dehead"><?php echo xlt('ID'); ?></td>
156 <td class="dehead"><?php echo xlt('Ordered'); ?></td>
157 <td class="dehead"><?php echo xlt('From'); ?></td>
158 <td class="dehead"><?php echo xlt('Provider'); ?></td>
159 <td class="dehead"><?php echo xlt('Priority'); ?></td>
160 <td class="dehead"><?php echo xlt('Status'); ?></td>
161 </tr>
162 <?php
163 } // end not export
165 // If generating a report.
167 if ($_POST['form_refresh'] || $_POST['form_csvexport']) {
168 if (!verifyCsrfToken($_POST["csrf_token_form"])) {
169 csrfNotVerified();
172 $sqlBindArray = array();
173 $query = "SELECT po.patient_id, po.date_ordered, " .
174 "pd.pubpid, " .
175 "CONCAT(pd.lname, ', ', pd.fname, ' ', pd.mname) AS patient_name, " .
176 "u1.lname AS provider_lname, u1.fname AS provider_fname, u1.mname AS provider_mname, " .
177 "pp.name AS organization, " .
178 "lop.title AS priority_name, " .
179 "los.title AS status_name, " .
180 "pr.procedure_report_id, pr.date_report, pr.report_status " .
181 "FROM procedure_order AS po " .
182 "JOIN form_encounter AS fe ON fe.pid = po.patient_id AND fe.encounter = po.encounter_id " .
183 "JOIN patient_data AS pd ON pd.pid = po.patient_id " .
184 "LEFT JOIN users AS u1 ON u1.id = po.provider_id " .
185 "LEFT JOIN procedure_providers AS pp ON pp.ppid = po.lab_id " .
186 "LEFT JOIN list_options AS lop ON lop.list_id = 'ord_priority' AND lop.option_id = po.order_priority AND lop.activity = 1 " .
187 "LEFT JOIN list_options AS los ON los.list_id = 'ord_status' AND los.option_id = po.order_status AND los.activity = 1 " .
188 "LEFT JOIN procedure_report AS pr ON pr.procedure_order_id = po.procedure_order_id " .
189 "WHERE " .
190 "po.date_ordered >= ? AND po.date_ordered <= ? AND " .
191 "( pr.report_status IS NULL OR pr.report_status = 'prelim' )";
192 array_push($sqlBindArray, $form_from_date, $form_to_date);
194 // TBD: What if preliminary and final reports for the same order?
196 if ($form_facility) {
197 $query .= " AND fe.facility_id = ?";
198 array_push($sqlBindArray, $form_facility);
201 $query .= " ORDER BY pd.lname, pd.fname, pd.mname, po.patient_id, " .
202 "po.date_ordered, po.procedure_order_id";
204 $res = sqlStatement($query, $sqlBindArray);
205 while ($row = sqlFetchArray($res)) {
206 thisLineItem($row);
208 } // end report generation
210 if (! $_POST['form_csvexport']) {
213 </table>
214 </form>
215 </center>
216 </body>
218 </html>
219 <?php
220 } // End not csv export