Enhancements for New Document and improvements in patient report and patient portal...
[openemr.git] / portal / patient / templates / OnsiteDocumentListView.tpl.php
blobf7600408a3b04f90b3c8e15f7e90ca275fc60eae
1 <?php
2 /**
4 * Copyright (C) 2016-2017 Jerry Padgett <sjpadgett@gmail.com>
6 * LICENSE: This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, either version 3 of the
9 * License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
16 * You should have received a copy of the GNU Affero General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 * @package OpenEMR
20 * @author Jerry Padgett <sjpadgett@gmail.com>
21 * @link http://www.open-emr.org
24 $this->assign('title', xlt("Patient Portal") . " | " . xlt("Patient Documents"));
25 $this->assign('nav','onsitedocuments');
27 $pid = $this->cpid;
28 $recid = $this->recid;
29 $docid = $this->docid;
30 $encounter= '';
32 if( !$docid )
33 $docid = 'Hipaa_Document';
35 $isnew = false;
36 $ptName = isset ($_SESSION['ptName']) ? $_SESSION['ptName'] : $pid;
37 $cuser = isset ( $_SESSION ['sessionUser'] ) ? $_SESSION ['sessionUser'] : $_SESSION ['authUserID'];
38 echo "<script>var cpid='" . attr($pid) . "';var cuser='" . attr($cuser) . "';var ptName='" . attr($ptName) . "';</script>";
39 echo "<script>var recid='" . attr($recid) . "';var docid='" . attr($docid) . "';var webRoot='" . $GLOBALS['web_root'] . "';var isNewDoc='" . attr($isnew) . "';</script>";
40 echo "<script>var alertMsg1='" . xlt("Saved to Documents->Onsite Portal->Reviewed - Open there to move or rename.") . "';</script>";
41 echo "<script>var msgSuccess='" . xlt("Save Successful") . "';</script>";
42 echo "<script>var msgDelete='" . xlt("Delete Successful") . "';</script>";
44 <!DOCTYPE html>
45 <html>
46 <head>
47 <meta charset="UTF-8">
48 <title><?php echo xlt('OpenEMR Portal'); ?> | <?php echo xlt('Documents'); ?></title>
49 <meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
50 <meta name="description" content="Developed By sjpadgett@gmail.com">
52 <link href="<?php echo $GLOBALS['assets_static_relative']; ?>/bootstrap-3-3-4/dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
53 <?php if ($_SESSION['language_direction'] == 'rtl') { ?>
54 <link href="<?php echo $GLOBALS['assets_static_relative']; ?>/bootstrap-rtl-3-3-4/dist/css/bootstrap-rtl.min.css" rel="stylesheet" type="text/css" />
55 <?php } ?>
57 <link href="<?php echo $GLOBALS['web_root']; ?>/portal/assets/css/style.css?v=<?php echo $GLOBALS['v_js_includes']; ?>" rel="stylesheet" />
58 <link href="<?php echo $GLOBALS['assets_static_relative']; ?>/font-awesome-4-6-3/css/font-awesome.min.css" rel="stylesheet" />
59 <link href="<?php echo $GLOBALS['web_root']; ?>/portal/sign/css/signer.css?v=<?php echo $GLOBALS['v_js_includes']; ?>" rel="stylesheet" type="text/css" />
60 <link href="<?php echo $GLOBALS['web_root']; ?>/portal/sign/assets/signpad.css?v=<?php echo $GLOBALS['v_js_includes']; ?>" rel="stylesheet">
62 <script type="text/javascript" src="<?php echo $GLOBALS['web_root']; ?>/portal/patient/scripts/libs/LAB.min.js"></script>
63 <script type="text/javascript">
64 $LAB.setGlobalDefaults({BasePath: "<?php $this->eprint($this->ROOT_URL); ?>"});
65 $LAB.script("<?php echo $GLOBALS['assets_static_relative']; ?>/jquery-min-1-11-3/index.js")
66 .script("<?php echo $GLOBALS['web_root']; ?>/portal/sign/assets/signpad.js?v=<?php echo $GLOBALS['v_js_includes']; ?>").wait()
67 .script("<?php echo $GLOBALS['web_root']; ?>/portal/sign/assets/signer.js?v=<?php echo $GLOBALS['v_js_includes']; ?>").wait()
68 .script("<?php echo $GLOBALS['assets_static_relative']; ?>/bootstrap-3-3-4/dist/js/bootstrap.min.js")
69 .script("<?php echo $GLOBALS['assets_static_relative']; ?>/underscore-1-8-3/underscore-min.js")
70 .script("<?php echo $GLOBALS['assets_static_relative']; ?>/moment-2-13-0/moment.js")
71 .script("<?php echo $GLOBALS['assets_static_relative']; ?>/backbone-1-3-3/backbone-min.js")
72 .script("<?php echo $GLOBALS['assets_static_relative']; ?>/emodal-1-2-65/dist/eModal.js")
73 .script("<?php echo $GLOBALS['web_root']; ?>/portal/patient/scripts/app.js?v=<?php echo $GLOBALS['v_js_includes']; ?>")
74 .script("<?php echo $GLOBALS['web_root']; ?>/portal/patient/scripts/model.js?v=<?php echo $GLOBALS['v_js_includes']; ?>").wait()
75 .script("<?php echo $GLOBALS['web_root']; ?>/portal/patient/scripts/view.js?v=<?php echo $GLOBALS['v_js_includes']; ?>").wait()
77 </script>
78 </head>
80 <script type="text/javascript">
81 $LAB.script("<?php echo $GLOBALS['web_root']; ?>/portal/patient/scripts/app/onsitedocuments.js?v=<?php echo $GLOBALS['v_js_includes']; ?>").wait()
82 .script("<?php echo $GLOBALS['web_root']; ?>/portal/patient/scripts/app/onsiteportalactivities.js?v=<?php echo $GLOBALS['v_js_includes']; ?>").wait(function(){
83 $(document).ready(function(){
84 page.init();
85 pageAudit.init();
86 $('#openSignModal').on('show.bs.modal', function(e) {
87 $('.sigPad').signaturePad({
88 drawOnly: true
89 });
90 });
91 });
92 setTimeout(function(){ // second chance init ie of course....
93 if (!page.isInitialized) page.init();
94 },1000);
95 });
96 function printaDoc(divName){divName='templatediv'
97 flattenDocument();
98 var printContents = document.getElementById(divName).innerHTML;
99 var originalContents = document.body.innerHTML;
100 document.body.innerHTML = printContents;
101 window.print();
102 document.body.innerHTML = originalContents;
103 $('.sigPad').signaturePad({
104 drawOnly: true
106 location.reload();
108 function templateText(el){
109 $(el).data('textvalue',$(el).val());
110 $(el).attr("data-textvalue",$(el).val())
111 return false;
113 function templateCheckMark(el){
114 if( $(el).data('value') == 'Yes' ){
115 $(el).data('value','No');
116 $(el).attr('data-value','No');
118 else{
119 $(el).data('value','Yes');
120 $(el).attr('data-value','Yes');
122 return false;
124 function templateRadio(el){
125 var rid = $(el).data('id')
126 $('#rgrp'+rid).data( 'value', $(el).val() )
127 $('#rgrp'+rid).attr( 'data-value', $(el).val() )
128 $(el).prop('checked',true)
129 return false;
131 function replaceTextInputs(){
132 $('.templateInput').each( function(){
133 var rv = $(this).data('textvalue');
134 $(this).replaceWith(rv)
137 function replaceRadioValues(){
138 $('.ynuGroup').each( function(){
139 var gid = $(this).data('id');
140 var grpid = $(this).prop('id');
141 var rv = $('input:radio[name="ynradio'+gid+'"]:checked').val();
142 $(this).replaceWith(rv)
145 function replaceCheckMarks(){
146 $('.checkMark').each( function(){
147 var ckid = $(this).data('id');
148 var v = $('#'+ckid).data('value');
149 if(v)
150 $(this).replaceWith(v)
151 else
152 $(this).replaceWith('No')
155 function restoreTextInputs(){
156 $('.templateInput').each( function(){
157 var rv = $(this).data('textvalue');
158 $(this).val(rv)
161 function restoreRadioValues(){
162 $('.ynuGroup').each( function(){
163 var gid = $(this).data('id');
164 var grpid = $(this).prop('id');
165 var value = $(this).data('value');
166 $("input[name=ynradio"+gid+"][value='"+value+"']").prop('checked', true);
169 function restoreCheckMarks(){
170 $('.checkMark').each( function(){
171 var ckid = $(this).data('id');
172 //var v = $('#'+ckid).data('value');
173 if( $('#'+ckid).data('value') == 'Yes' )
174 $('#'+ckid).prop('checked',true)
175 else
176 $('#'+ckid).prop('checked',false)
179 function flattenDocument(){
180 replaceCheckMarks();
181 replaceRadioValues();
182 replaceTextInputs();
185 function restoreDocumentEdits(){
186 restoreCheckMarks();
187 restoreRadioValues();
188 restoreTextInputs();
191 </script>
192 <style>
193 @media print {
194 #templatecontent { width: 1220px }
196 hr {
197 margin-top: 2px;
198 margin-bottom: 2px;
199 border: 0;
200 border-top: 2px solid #eee;
202 .h4, .h5, .h6, h4, h5, h6 {
203 margin-top: 0px;
204 margin-bottom: 0px;
205 } /* */
206 body {
207 margin-top: 70px;
209 @media ( min-width : 979px) {
210 #sidebar.affix-top {
211 position: static;
212 margin-top: 10px;
213 width: 150px;
215 #sidebar.affix {
216 position: fixed;
217 top: 70px;
218 width: 150px;
221 .affix, affix-top {
222 position: static;
224 .nopadding {
225 padding: 0 !important;
226 margin: 0 !important;
228 </style>
229 <script type="text/template" id="onsiteDocumentModelTemplate">
230 <aside class="col-sm-2 col-xs-3" id="sidebar-pills">
231 <ul class="nav nav-pills nav-stacked" id="sidebar">
232 <li data-toggle="pill" class="bg-info"><a id="signTemplate" href="#openSignModal"
233 data-toggle="modal" data-backdrop="true" data-target="#openSignModal"><span><?php echo xlt('Signature');?></span></a></li>
234 <li data-toggle="pill" class="bg-info"><a id="saveTemplate" href="#"><span"><?php echo xlt('Save');?></span></a></li>
235 <li data-toggle="pill" class="bg-info"><a id="printTemplate" href="javascript:;" onclick="printaDoc('templatecontent');"><span"><?php echo xlt('Print');?></span></a></li>
236 <li data-toggle="pill" class="bg-info"><a id="submitTemplate" href="#"><span"><?php echo xlt('Download');?></span></a></li>
237 <li data-toggle="pill" class="bg-info"><a id="sendTemplate" href="#"><span"><?php echo xlt('Send for Review');?></span></a></li>
238 <li data-toggle="pill" class="bg-info"><a id="chartTemplate" href="#"><span"><?php echo xlt('Save to Chart');?></span></a></li>
239 <li data-toggle="pill" class="bg-info"><a id="downloadTemplate" href="#"><span"><?php echo xlt('Download');?></span></a></li>
240 <li data-toggle="pill" class="bg-danger"><a id="homeTemplate" href="#" onclick='window.location.replace("./../home.php")'><?php echo xlt('Return Home');?></a></li>
241 </ul>
242 </aside>
243 <div class="col-md-8 col-sm-8 col-xs-8 nopadding">
244 <span id="modelLoader" class="loader progress progress-striped active"><span class="bar"></span></span>
245 <div class="panel panel-primary" id="docpanel">
246 <header class="panel-heading" id='docPanelHeader'><?php echo xlt('Patient Document');?></header>
247 <div id="loader" style="display:none;"></div>
248 <form id='template' name='template' role="form" action="./../lib/doc_lib.php" method="POST" >
249 <div id="loader" style="display:none;"></div>
250 <div id="templatediv" class="container panel-body" style="margin:0 auto; background:white">
251 <div id="templatecontent" class="template-body" style="margin:0 auto; background:white;padding:0 20px 0 20px"></div>
252 </div>
253 <input type="hidden" name="content" id="content" value="">
254 <input type="hidden" name="docid" id="docid" value="">
255 <input type="hidden" name="handler" id="handler" value="download">
256 <input type="hidden" name="status" id="status" value="Open">
257 </form>
258 <!-- <button type="button" id="submitTemplatepdf" class="btn btn-primary ">Pdf<i class="fa fa-arrow-circle-right fa-lg"></i></button> -->
259 <div class="panel-footer">
260 <!-- delete button is is a separate form to prevent enter key from triggering a delete-->
261 <form id="deleteOnsiteDocumentButtonContainer" class="form-inline" onsubmit="return false;">
262 <fieldset>
263 <div class="form-group">
264 <label class="control-label"></label>
265 <div class="controls">
266 <button id="deleteOnsiteDocumentButton" class="btn btn-mini btn-danger"><i class="icon-trash icon-white"></i><?php echo xlt('Delete Document');?></button>
267 <span id="confirmDeleteOnsiteDocumentContainer">
268 <button id="cancelDeleteOnsiteDocumentButton" class="btn btn-mini"><?php echo xlt('Cancel');?></button>
269 <button id="confirmDeleteOnsiteDocumentButton" class="btn btn-mini btn-danger"><?php echo xlt('Confirm');?></button>
270 </span>
271 </div>
272 </div>
273 </fieldset>
274 </form>
275 </div>
276 </div>
277 </div>
278 </div>
279 </div>
280 </script>
281 <!-- </div> -->
282 <script type="text/template" id="onsiteDocumentCollectionTemplate">
283 <body class="skin-blue">
284 <div class="container">
285 <div class="row">
286 <div class="nav navbar-fixed-top" id="topnav">
287 <!--<img class='pull-left' style='width:14%;height:auto;margin-right:10px;' class='logo' src='<?php echo $GLOBALS['images_static_relative']; ?>/logo-full-con.png'/>-->
288 <ul class="nav nav-pills" style='margin-top:5px'>
289 <li class="page-header" style='margin-left:10px;'><h4><a href="javascript:location.reload(true);"><?php echo xla('Attention: Pending Documents') . '>'?></a></h4></li>
290 <?php require_once(dirname( __FILE__ ) . '/../../lib/template_menu.php');?>
291 <li class="bg-danger"><a href="#" onclick='window.location.replace("./../home.php")'><?php echo xlt('Return Home');?></a></li>
292 </ul>
293 <div id="collectionAlert"></div>
294 </div>
295 <table class="collection table table-hover">
296 <thead>
297 <tr class='bg-primary' style='cursor:pointer'>
298 <th id="header_Id"><?php echo xlt('Doc Id');?><% if (page.orderBy == 'Id') { %> <i class='icon-arrow-<%= page.orderDesc ? 'up' : 'down' %>' /><% } %></th>
299 <th id="header_DocType"><?php echo xlt('Document');?><% if (page.orderBy == 'DocType') { %> <i class='icon-arrow-<%= page.orderDesc ? 'up' : 'down' %>' /><% } %></th>
300 <th id="header_CreateDate"><?php echo xlt('Create Date');?><% if (page.orderBy == 'CreateDate') { %> <i class='icon-arrow-<%= page.orderDesc ? 'up' : 'down' %>' /><% } %></th>
301 <th id="header_ReviewDate"><?php echo xlt('Reviewed Date');?><% if (page.orderBy == 'ReviewDate') { %> <i class='icon-arrow-<%= page.orderDesc ? 'up' : 'down' %>' /><% } %></th>
302 <th id="header_DenialReason"><?php echo xlt('Review Status');?><% if (page.orderBy == 'DenialReason') { %> <i class='icon-arrow-<%= page.orderDesc ? 'up' : 'down' %>' /><% } %></th>
303 <th id="header_PatientSignedStatus"><?php echo xlt('Patient Signed');?><% if (page.orderBy == 'PatientSignedStatus') { %> <i class='icon-arrow-<%= page.orderDesc ? 'up' : 'down' %>' /><% } %></th>
304 <th id="header_PatientSignedTime"><?php echo xlt('Patient Signed Date');?><% if (page.orderBy == 'PatientSignedTime') { %> <i class='icon-arrow-<%= page.orderDesc ? 'up' : 'down' %>' /><% } %></th>
305 </tr>
306 </thead>
307 <tbody>
308 <% items.each(function(item) { %>
309 <tr style='background:white' id="<%= _.escape(item.get('id')) %>">
310 <td><%= _.escape(item.get('id') || '') %></td>
311 <td><button class='btn btn-primary btn-sm'><%= _.escape(item.get('docType').slice(0, -4).replace(/_/g, ' ') || '') %></button></td>
312 <td><%if (item.get('createDate')) { %><%= item.get('createDate') %><% } else { %>NULL<% } %></td>
313 <td><%if (item.get('reviewDate')) { %><%= item.get('reviewDate') %><% } else { %>NULL<% } %></td>
314 <td><%= _.escape(item.get('denialReason') || 'Pending') %></td>
315 <td><%if (item.get('patientSignedStatus')=='1') { %><%= 'Yes' %><% } else { %>No<% } %></td>
316 <td><%if (item.get('patientSignedTime')) { %><%= item.get('patientSignedTime') %><% } else { %>NULL<% } %></td>
317 </tr>
318 <% }); %>
319 </tbody>
320 </table>
321 <%= view.getPaginationHtml(page) %>
322 </script>
323 <!-- Signature Modal -->
324 <div id="openSignModal" class="modal fade" role="dialog">
325 <div class="modal-dialog modal-lg">
326 <div class="modal-content">
327 <div class="modal-header">
328 <button type="button" class="close" data-dismiss="modal">&times;</button>
329 <div class="input-group">
330 <span class="input-group-addon"
331 onclick="getSignature(document.getElementById('patientSignaturemodal'))"><em><?php echo xlt('Show Current Signature On File');?><br>
332 <?php echo xlt('As will appear on documents.');?></em>
333 </span> <img class="signature form-control" type="patient-signature" id="patientSignaturemodal"
334 onclick="getSignature(this)" alt="<?php echo xla('Signature On File'); ?>" src="">
335 <!-- <span class="input-group-addon" onclick="clearSig(this)"><i class="glyphicon glyphicon-trash"></i></span> -->
336 </div>
337 <!-- <h4 class="modal-title">Sign</h4> -->
338 </div>
339 <div class="modal-body">
340 <form name="signit" id="signit" class="sigPad">
341 <input type="hidden" name="name" id="name" class="name">
342 <ul class="sigNav">
343 <li style='display: none;'><input style="display: none"
344 type="checkbox" id="isAdmin" name="isAdmin" /><?php echo xlt('Is Authorizing Signature');?></li>
345 <li class="clearButton"><a href="#clear"><button><?php echo xlt('Clear Pad');?></button></a></li>
346 </ul>
347 <div class="sig sigWrapper">
348 <div class="typed"></div>
349 <canvas class="spad" id="drawpad" width="765" height="325"
350 style="border: 1px solid #000000; left: 0px;"></canvas>
351 <img id="loading"
352 style="display: none; position: absolute; TOP: 150px; LEFT: 315px; WIDTH: 100px; HEIGHT: 100px"
353 src="<?php echo $GLOBALS['web_root']; ?>/portal/sign/assets/loading.gif" /> <input type="hidden" id="output" name="output" class="output">
354 </div>
355 <input type="hidden" name="type" id="type" value="patient-signature">
356 <button type="button" onclick="signDoc(this)"><?php echo xlt('Acknowledge as my Electronic Signature.');?></button>
357 </form>
358 </div>
359 </div>
360 </div>
361 </div>
362 <img id="waitend" style="display: none; position: absolute; top: 100px; left: 250px; width: 100px; height: 100px" src="<?php echo $GLOBALS['web_root']; ?>/portal/sign/assets/loading.gif" />
363 <!-- Modal -->
364 <!-- modal edit dialog -->
365 <div class="modal fade" id="onsiteDocumentDetailDialog">
366 <div class="modal-dialog modal-xl">
367 <div class="modal-content">
368 <div class="modal-header"><a class="close" data-dismiss="modal">×</a>
369 <h3><i class="icon-edit"></i> <?php echo xlt('Edit Document');?>
370 <span id="modelLoader" class="loader progress progress-striped active"><span class="bar"></span></span>
371 </h3>
372 </div>
373 <div class="modal-body">
374 <div id="modelAlert"></div>
375 </div>
376 <div class="modal-footer">
377 <button class="btn" data-dismiss="modal"><?php echo xlt('Cancel'); ?></button>
378 <button id="saveOnsiteDocumentButton" class="btn btn-primary"><?php echo xlt('Save Changes');?></button>
379 </div>
380 </div>
381 </div>
382 </div>
384 <div id="onsiteDocumentModelContainer" class="modelContainer"></div>
385 <div id="onsiteDocumentCollectionContainer" class="collectionContainer"></div>
387 </body>
388 </div> <!-- /container -->
390 <?php
391 $this->display('_Footer.tpl.php');
393 </html>