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/>.
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');
28 $recid = $this->recid
;
29 $docid = $this->docid
;
33 $docid = 'Hipaa_Document';
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>";
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" />
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()
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(){
86 $
('#openSignModal').on('show.bs.modal', function(e
) {
87 $
('.sigPad').signaturePad({
92 setTimeout(function(){ // second chance init ie of course....
93 if (!page
.isInitialized
) page
.init();
96 function printaDoc(divName
){divName
='templatediv'
98 var printContents
= document
.getElementById(divName
).innerHTML
;
99 var originalContents
= document
.body
.innerHTML
;
100 document
.body
.innerHTML
= printContents
;
102 document
.body
.innerHTML
= originalContents
;
103 $
('.sigPad').signaturePad({
108 function templateText(el
){
109 $
(el
).data('textvalue',$
(el
).val());
110 $
(el
).attr("data-textvalue",$
(el
).val())
113 function templateCheckMark(el
){
114 if( $
(el
).data('value') == 'Yes' ){
115 $
(el
).data('value','No');
116 $
(el
).attr('data-value','No');
119 $
(el
).data('value','Yes');
120 $
(el
).attr('data-value','Yes');
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)
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');
150 $
(this
).replaceWith(v
)
152 $
(this
).replaceWith('No')
155 function restoreTextInputs(){
156 $
('.templateInput').each( function(){
157 var rv
= $
(this
).data('textvalue');
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)
176 $
('#'+ckid
).prop('checked',false)
179 function flattenDocument(){
181 replaceRadioValues();
185 function restoreDocumentEdits(){
187 restoreRadioValues();
194 #templatecontent { width: 1220px }
200 border
-top
: 2px solid
#eee;
202 .h4
, .h5
, .h6
, h4
, h5
, h6
{
209 @media
( min
-width
: 979px
) {
225 padding
: 0 !important
;
226 margin
: 0 !important
;
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
>
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
>
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">
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;">
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
>
282 <script type
="text/template" id
="onsiteDocumentCollectionTemplate">
283 <body
class="skin-blue">
284 <div
class="container">
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
>
293 <div id
="collectionAlert"></div
>
295 <table
class="collection table table-hover">
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
>
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
>
321 <%
= view
.getPaginationHtml(page
) %
>
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">×
;</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
> -->
337 <!-- <h4
class="modal-title">Sign
</h4
> -->
339 <div
class="modal-body">
340 <form name
="signit" id
="signit" class="sigPad">
341 <input type
="hidden" name
="name" id
="name" class="name">
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
>
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
>
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">
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
>
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" />
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
>
373 <div
class="modal-body">
374 <div id
="modelAlert"></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
>
384 <div id
="onsiteDocumentModelContainer" class="modelContainer"></div
>
385 <div id
="onsiteDocumentCollectionContainer" class="collectionContainer"></div
>
388 </div
> <!-- /container
-->
391 $this->display('_Footer.tpl.php');