Additional mods to previous commit (still discussing UTF8 enforcing)
[openemr.git] / patients / summary_pat_portal.php
blob8c6cb46314efe0e1ac47a6b8917ce3e2704ca0ef
1 <?php
3 // Copyright (C) 2011 by following authors:
4 // - Cassian LUP <cassi.lup@gmail.com>
5 //
6 // This program is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU General Public License
8 // as published by the Free Software Foundation; either version 2
9 // of the License, or (at your option) any later version.
11 //SANITIZE ALL ESCAPES
12 // (note this is already completed by the script that includes this
13 // get_patient_info.php )
15 //STOP FAKE REGISTER GLOBALS
16 // (note this is already completed by the script that includes this
17 // get_patient_info.php )
19 //continue session
20 session_start();
22 //landing page definition -- where to go if something goes wrong
23 $landingpage = "index.php?site=".$_SESSION['site_id'];
26 // kick out if patient not authenticated
27 if ( isset($_SESSION['pid']) && isset($_SESSION['patient_portal_onsite']) ) {
28 $pid = $_SESSION['pid'];
30 else {
31 session_destroy();
32 header('Location: '.$landingpage.'&w');
33 exit;
37 $ignoreAuth = true;
38 global $ignoreAuth;
40 require_once("../interface/globals.php");
41 require_once("$srcdir/patient.inc");
42 require_once("$srcdir/acl.inc");
43 require_once("$srcdir/classes/Address.class.php");
44 require_once("$srcdir/classes/InsuranceCompany.class.php");
45 require_once("$srcdir/classes/Document.class.php");
46 require_once("$srcdir/options.inc.php");
47 require_once("../interface/patient_file/history/history.inc.php");
48 require_once("$srcdir/formatting.inc.php");
49 require_once("$srcdir/edi.inc");
50 include_once("$srcdir/lists.inc");
53 <html>
55 <head>
56 <?php html_header_show(); ?>
57 <link rel="stylesheet" href="<?php echo $css_header;?>" type="text/css">
58 <link rel="stylesheet" type="text/css" href="<?php echo $web_root; ?>/library/js/fancybox/jquery.fancybox-1.2.6.css" media="screen" />
59 <link rel="stylesheet" type="text/css" href="<?php echo $web_root; ?>/library/dynarch_calendar.css">
60 <script type="text/javascript" src="<?php echo $web_root; ?>/library/textformat.js"></script>
61 <script type="text/javascript" src="<?php echo $web_root; ?>/library/dynarch_calendar.js"></script>
62 <?php include_once("{$GLOBALS['srcdir']}/dynarch_calendar_en.inc.php"); ?>
63 <script type="text/javascript" src="<?php echo $web_root; ?>/library/dynarch_calendar_setup.js"></script>
64 <script type="text/javascript" src="<?php echo $web_root; ?>/library/dialog.js"></script>
65 <script type="text/javascript" src="<?php echo $web_root; ?>/library/js/jquery.1.3.2.js"></script>
66 <script type="text/javascript" src="<?php echo $web_root; ?>/library/js/common.js"></script>
67 <script type="text/javascript" src="<?php echo $web_root; ?>/library/js/fancybox/jquery.fancybox-1.2.6.js"></script>
68 <link rel="stylesheet" href="css/base.css" type="text/css"/>
69 <link rel="stylesheet" href="css/tables.css" type="text/css"/>
70 <script type="text/javascript" language="JavaScript">
72 function refreshme() {
73 location.reload();
76 function toggleIndicator(target,div) {
78 $mode = $(target).find(".indicator").text();
79 if ( $mode == "<?php echo htmlspecialchars(xl('collapse'),ENT_QUOTES); ?>" ) {
80 $(target).find(".indicator").text( "<?php echo htmlspecialchars(xl('expand'),ENT_QUOTES); ?>" );
81 $("#"+div).hide();
82 } else {
83 $(target).find(".indicator").text( "<?php echo htmlspecialchars(xl('collapse'),ENT_QUOTES); ?>" );
84 $("#"+div).show();
88 function refreshAppointments() {
89 $("#appointments_ps_expand").load("get_appointments.php", { 'embeddedScreen' : true }, function() {
90 $(".edit_event").fancybox({
91 'overlayOpacity' : 0.0,
92 'showCloseButton' : true,
93 'centerOnScroll' : false,
94 'autoscale' : true,
95 'hihdeOnContentClick' : false,
96 'callbackOnClose' : function() {
97 refreshAppointments();
99 });
103 function show_date_fun(){
104 if(document.getElementById('show_date').checked == true){
105 document.getElementById('date_div').style.display = '';
106 }else{
107 document.getElementById('date_div').style.display = 'none';
109 return;
112 $(document).ready(function(){
114 // load divs
115 $("#labtestresults_ps_expand").load("get_lab_results.php", { 'embeddedScreen' : true }, function() {
116 // (note need to place javascript code here also to get the dynamic link to work)
117 $(".medium_modal").fancybox( {
118 'overlayOpacity' : 0.0,
119 'showCloseButton' : true,
120 'frameHeight' : 500,
121 'frameWidth' : 800,
122 'centerOnScroll' : false,
123 'callbackOnClose' : function() {
124 refreshme();
128 $("#problemlist_ps_expand").load("get_problems.php", { 'embeddedScreen' : true }, function() {
129 // (note need to place javascript code here also to get the dynamic link to work)
130 $(".medium_modal").fancybox( {
131 'overlayOpacity' : 0.0,
132 'showCloseButton' : true,
133 'frameHeight' : 500,
134 'frameWidth' : 800,
135 'centerOnScroll' : false,
136 'callbackOnClose' : function() {
137 refreshme();
141 $("#medicationlist_ps_expand").load("get_medications.php", { 'embeddedScreen' : true }, function() {
142 // (note need to place javascript code here also to get the dynamic link to work)
143 $(".medium_modal").fancybox( {
144 'overlayOpacity' : 0.0,
145 'showCloseButton' : true,
146 'frameHeight' : 500,
147 'frameWidth' : 800,
148 'centerOnScroll' : false,
149 'callbackOnClose' : function() {
150 refreshme();
154 $("#medicationallergylist_ps_expand").load("get_allergies.php", { 'embeddedScreen' : true }, function() {
155 // (note need to place javascript code here also to get the dynamic link to work)
156 $(".medium_modal").fancybox( {
157 'overlayOpacity' : 0.0,
158 'showCloseButton' : true,
159 'frameHeight' : 500,
160 'frameWidth' : 800,
161 'centerOnScroll' : false,
162 'callbackOnClose' : function() {
163 refreshme();
168 refreshAppointments();
170 // fancy box
171 enable_modals();
173 // modal for dialog boxes
174 $(".large_modal").fancybox( {
175 'overlayOpacity' : 0.0,
176 'showCloseButton' : true,
177 'frameHeight' : 600,
178 'frameWidth' : 1000,
179 'centerOnScroll' : false
182 // modal for image viewer
183 $(".image_modal").fancybox( {
184 'overlayOpacity' : 0.0,
185 'showCloseButton' : true,
186 'centerOnScroll' : false,
187 'autoscale' : true
190 $(".add_event").fancybox( {
191 'overlayOpacity' : 0.0,
192 'showCloseButton' : true,
193 'centerOnScroll' : false,
194 'autoscale' : true,
195 'hideOnContentClick' : false,
196 'onClose' : function() {
197 refreshme();
201 $(".generateCCR").click(
202 function() {
203 if(document.getElementById('show_date').checked == true){
204 if(document.getElementById('Start').value == '' || document.getElementById('End').value == ''){
205 alert('<?php echo addslashes( xl('Please select a start date and end date')) ?>');
206 return false;
209 var ccrAction = document.getElementsByName('ccrAction');
210 ccrAction[0].value = 'generate';
211 var raw = document.getElementsByName('raw');
212 raw[0].value = 'no';
213 ccr_form.setAttribute("target", "_blank");
214 $("#ccr_form").submit();
215 ccr_form.setAttribute("target", "");
217 $(".generateCCR_raw").click(
218 function() {
219 var ccrAction = document.getElementsByName('ccrAction');
220 ccrAction[0].value = 'generate';
221 var raw = document.getElementsByName('raw');
222 raw[0].value = 'yes';
223 ccr_form.setAttribute("target", "_blank");
224 $("#ccr_form").submit();
225 ccr_form.setAttribute("target", "");
227 $(".generateCCR_download_h").click(
228 function() {
229 var ccrAction = document.getElementsByName('ccrAction');
230 ccrAction[0].value = 'generate';
231 var raw = document.getElementsByName('raw');
232 raw[0].value = 'hybrid';
233 $("#ccr_form").submit();
235 $(".generateCCR_download_p").click(
236 function() {
237 if(document.getElementById('show_date').checked == true){
238 if(document.getElementById('Start').value == '' || document.getElementById('End').value == ''){
239 alert('<?php echo addslashes( xl('Please select a start date and end date')) ?>');
240 return false;
243 var ccrAction = document.getElementsByName('ccrAction');
244 ccrAction[0].value = 'generate';
245 var raw = document.getElementsByName('raw');
246 raw[0].value = 'pure';
247 $("#ccr_form").submit();
249 $(".viewCCD").click(
250 function() {
251 var ccrAction = document.getElementsByName('ccrAction');
252 ccrAction[0].value = 'viewccd';
253 var raw = document.getElementsByName('raw');
254 raw[0].value = 'no';
255 ccr_form.setAttribute("target", "_blank");
256 $("#ccr_form").submit();
257 ccr_form.setAttribute("target", "");
259 $(".viewCCD_raw").click(
260 function() {
261 var ccrAction = document.getElementsByName('ccrAction');
262 ccrAction[0].value = 'viewccd';
263 var raw = document.getElementsByName('raw');
264 raw[0].value = 'yes';
265 ccr_form.setAttribute("target", "_blank");
266 $("#ccr_form").submit();
267 ccr_form.setAttribute("target", "");
269 $(".viewCCD_download").click(
270 function() {
271 var ccrAction = document.getElementsByName('ccrAction');
272 ccrAction[0].value = 'viewccd';
273 var raw = document.getElementsByName('raw');
274 raw[0].value = 'pure';
275 $("#ccr_form").submit();
277 <?php if ($GLOBALS['phimail_enable']==true) { ?>
278 $(".viewCCD_send_dialog").click(
279 function() {
280 $("#ccd_send_dialog").toggle();
282 $(".viewCCD_transmit").click(
283 function() {
284 var ccrAction = document.getElementsByName('ccrAction');
285 ccrAction[0].value = 'viewccd';
286 var ccdRecipient = $("#ccd_send_to").val();
287 var raw = document.getElementsByName('raw');
288 raw[0].value = 'send '+ccdRecipient;
289 if(ccdRecipient=="") {
290 $("#ccd_send_message").html("<?php
291 echo htmlspecialchars(xl('Please enter a valid Direct Address above.'), ENT_QUOTES);?>");
292 $("#ccd_send_result").show();
293 } else {
294 $(".viewCCD_transmit").attr('disabled','disabled');
295 $("#ccd_send_message").html("<?php
296 echo htmlspecialchars(xl('Working... this may take a minute.'), ENT_QUOTES);?>");
297 $("#ccd_send_result").show();
298 var action=$("#ccr_form").attr('action');
299 $.post(action, {ccrAction:'viewccd',raw:'send '+ccdRecipient,requested_by:'patient'},
300 function(data) {
301 if(data=="SUCCESS") {
302 $("#ccd_send_message").html("<?php
303 echo htmlspecialchars(xl('Your message was submitted for delivery to'), ENT_QUOTES);
304 ?> "+ccdRecipient);
305 $("#ccd_send_to").val("");
306 } else {
307 $("#ccd_send_message").html(data);
309 $(".viewCCD_transmit").removeAttr('disabled');
313 <?php } ?>
317 </script>
319 </head>
321 <body class="body_top">
323 <div id="wrapper" class="lefttop" style="width: 700px;">
324 <h2 class="heading"><?php echo htmlspecialchars( xl('Patient Portal'), ENT_NOQUOTES); ?></h2>
326 <?php
327 $result = getPatientData($pid);
329 <?php echo htmlspecialchars( xl('Welcome'), ENT_NOQUOTES); ?> <b><?php echo htmlspecialchars($result['fname']." ".$result['lname'],ENT_NOQUOTES); ?></b>
331 <div style='margin-top:10px'> <!-- start main content div -->
332 <table border="0" cellspacing="0" cellpadding="0" width="100%">
333 <tr>
334 <td align="left" valign="top">
335 <!-- start left column div -->
336 <div style='float:left; margin-right:20px'>
337 <table cellspacing=0 cellpadding=0>
338 <?php if ( $GLOBALS['activate_ccr_ccd_report'] ) { // show CCR/CCD reporting options ?>
339 <tr>
340 <td width='650px'>
341 <?php
342 // Reports widget
343 $widgetTitle = xl("Reports");
344 $widgetLabel = "reports";
345 $widgetButtonLabel = xl("");
346 $widgetButtonClass = "hidden";
347 $linkMethod = "html";
348 $bodyClass = "notab";
349 $widgetAuth = false;
350 $fixedWidth = true;
351 expand_collapse_widget($widgetTitle, $widgetLabel, $widgetButtonLabel,
352 $widgetButtonLink, $widgetButtonClass, $linkMethod, $bodyClass,
353 $widgetAuth, $fixedWidth);
355 <br/>
356 <div style='margin-left:3em; margin-right:3em; padding:1em; border:1px solid blue;' class='text'>
357 <div id="ccr_report">
358 <form name='ccr_form' id='ccr_form' method='post' action='../ccr/createCCR.php?portal_auth=1'>
359 <span class='text'><b><?php echo htmlspecialchars( xl('Continuity of Care Record (CCR)'), ENT_NOQUOTES); ?></b></span>&nbsp;&nbsp;
360 <br/>
361 <span class='text'>(<?php echo htmlspecialchars( xl('Pop ups need to be enabled to see these reports'), ENT_NOQUOTES); ?>)</span>
362 <br/>
363 <br/>
364 <input type='hidden' name='ccrAction'>
365 <input type='hidden' name='raw'>
366 <input type="checkbox" name="show_date" id="show_date" onchange="show_date_fun();" ><span class='text'><?php echo htmlspecialchars( xl('Use Date Range'), ENT_NOQUOTES); ?>
367 <br>
368 <div id="date_div" style="display:none" >
369 <br>
370 <table border="0" cellpadding="0" cellspacing="0" >
371 <tr>
372 <td>
373 <span class='bold'><?php echo htmlspecialchars( xl('Start Date'), ENT_NOQUOTES);?>: </span>
374 </td>
375 <td>
376 <input type='text' size='10' name='Start' id='Start'
377 onkeyup='datekeyup(this,mypcc)' onblur='dateblur(this,mypcc)'
378 title='<?php echo htmlspecialchars( xl('yyyy-mm-dd'), ENT_QUOTES); ?>' />
379 <img src='../interface/pic/show_calendar.gif' align='absbottom' width='24' height='22'
380 id='img_start' border='0' alt='[?]' style='cursor:pointer'
381 title='<?php echo htmlspecialchars( xl('Click here to choose a date'), ENT_QUOTES); ?>' >
382 <script LANGUAGE="JavaScript">
383 Calendar.setup({inputField:"Start", ifFormat:"%Y-%m-%d", button:"img_start"});
384 </script>
385 </td>
386 <td>
387 &nbsp;
388 <span class='bold'><?php echo htmlspecialchars( xl('End Date'), ENT_NOQUOTES);?>: </span>
389 </td>
390 <td>
391 <input type='text' size='10' name='End' id='End'
392 onkeyup='datekeyup(this,mypcc)' onblur='dateblur(this,mypcc)'
393 title='<?php echo htmlspecialchars( xl('yyyy-mm-dd'), ENT_QUOTES); ?>' />
394 <img src='../interface/pic/show_calendar.gif' align='absbottom' width='24' height='22'
395 id='img_end' border='0' alt='[?]' style='cursor:pointer'
396 title='<?php echo htmlspecialchars( xl('Click here to choose a date'), ENT_QUOTES); ?>' >
397 <script LANGUAGE="JavaScript">
398 Calendar.setup({inputField:"End", ifFormat:"%Y-%m-%d", button:"img_end"});
399 </script>
400 </td>
401 </tr>
402 </table>
403 </div>
404 <br>
405 <input type="button" class="generateCCR" value="<?php echo htmlspecialchars( xl('View/Print'), ENT_QUOTES); ?>" />
406 <!-- <input type="button" class="generateCCR_download_h" value="<?php echo htmlspecialchars( xl('Download'), ENT_QUOTES); ?>" /> -->
407 <input type="button" class="generateCCR_download_p" value="<?php echo htmlspecialchars( xl('Download'), ENT_QUOTES); ?>" />
408 <!-- <input type="button" class="generateCCR_raw" value="<?php echo htmlspecialchars( xl('Raw Report'), ENT_QUOTES); ?>" /> -->
409 <hr/>
410 <span class='text'><b><?php echo htmlspecialchars( xl('Continuity of Care Document (CCD)'), ENT_NOQUOTES); ?></b></span>&nbsp;&nbsp;
411 <br/>
412 <span class='text'>(<?php echo htmlspecialchars( xl('Pop ups need to be enabled to see these reports'), ENT_NOQUOTES); ?>)</span>
413 <br/>
414 <br/>
415 <input type="button" class="viewCCD" value="<?php echo htmlspecialchars( xl('View/Print', ENT_QUOTES)); ?>" />
416 <input type="button" class="viewCCD_download" value="<?php echo htmlspecialchars( xl('Download', ENT_QUOTES)); ?>" />
417 <!-- <input type="button" class="viewCCD_raw" value="<?php echo htmlspecialchars( xl('Raw Report', ENT_QUOTES)); ?>" /> -->
418 <?php if ($GLOBALS['phimail_enable']==true) { ?>
419 <input type="button" class="viewCCD_send_dialog" value="<?php echo htmlspecialchars( xl('Transmit', ENT_QUOTES)); ?>" />
420 <br>
421 <div id="ccd_send_dialog" style="display:none" >
422 <br>
423 <table border="0" cellpadding="0" cellspacing="0" >
424 <tr>
425 <td>
426 <span class='bold'><?php echo htmlspecialchars( xl('Enter Recipient\'s Direct Address'), ENT_NOQUOTES);?>: </span>
427 <input type="text" size="64" name="ccd_send_to" id="ccd_send_to" value="">
428 <input type="button" class="viewCCD_transmit" value="<?php echo htmlspecialchars( xl('Send', ENT_QUOTES)); ?>" />
429 <div id="ccd_send_result" style="display:none" >
430 <span class="text" id="ccd_send_message"></span>
431 </div>
432 </td>
433 </tr>
434 </table>
435 </div>
436 <?php } ?>
437 </form>
438 </div>
439 </div>
440 <br/>
441 </div>
442 </td>
443 </tr>
444 <?php } // end CCR/CCD reporting options ?>
446 <?php echo "<tr><td width='650px'>";
447 // Lab tests results expand collapse widget
448 $widgetTitle = xl("Lab Test Results");
449 $widgetLabel = "labtestresults";
450 $widgetButtonLabel = xl("");
451 $widgetButtonClass = "hidden";
452 $linkMethod = "html";
453 $bodyClass = "notab";
454 $widgetAuth = false;
455 $fixedWidth = true;
456 expand_collapse_widget($widgetTitle, $widgetLabel, $widgetButtonLabel,
457 $widgetButtonLink, $widgetButtonClass, $linkMethod, $bodyClass,
458 $widgetAuth, $fixedWidth);
461 <br/>
462 <div style='margin-left:10px' class='text'><img src='images/ajax-loader.gif'/></div><br/>
463 </div>
464 </td>
465 </tr>
466 <?php echo "<tr><td width='650px'>";
467 // problem list collapse widget
468 $widgetTitle = xl("Problem List");
469 $widgetLabel = "problemlist";
470 $widgetButtonLabel = xl("");
471 $widgetButtonClass = "hidden";
472 $linkMethod = "html";
473 $bodyClass = "notab";
474 $widgetAuth = false;
475 $fixedWidth = true;
476 expand_collapse_widget($widgetTitle, $widgetLabel, $widgetButtonLabel , $widgetButtonLink, $widgetButtonClass, $linkMethod, $bodyClass, $widgetAuth, $fixedWidth); ?>
478 </div>
479 </td>
480 </tr>
482 <tr>
483 <td width='650px'>
484 <?php
485 // medication list expand collapse widget
486 $widgetTitle = xl("Medication List");
487 $widgetLabel = "medicationlist";
488 $widgetButtonLabel = xl("");
489 $widgetButtonClass = "hidden";
490 $linkMethod = "html";
491 $bodyClass = "notab";
492 $widgetAuth = false;
493 $fixedWidth = true;
494 expand_collapse_widget($widgetTitle, $widgetLabel, $widgetButtonLabel,
495 $widgetButtonLink, $widgetButtonClass, $linkMethod, $bodyClass,
496 $widgetAuth, $fixedWidth);
498 <br/>
499 <div style='margin-left:10px' class='text'><img src='images/ajax-loader.gif'/></div><br/>
500 </div>
501 </td>
502 </tr>
504 <tr>
505 <td width='650px'>
506 <?php // medication allergy expand collapse widget
507 $widgetTitle = xl("Medication Allergy List");
508 $widgetLabel = "medicationallergylist";
509 $widgetButtonLabel = xl("");
510 $widgetButtonClass = "";
511 $linkMethod = "html";
512 $bodyClass = "notab";
513 $widgetAuth = false;
514 $fixedWidth = true;
515 expand_collapse_widget($widgetTitle, $widgetLabel, $widgetButtonLabel,
516 $widgetButtonLink, $widgetButtonClass, $linkMethod, $bodyClass,
517 $widgetAuth, $fixedWidth);
519 <br/>
520 <div style='margin-left:10px' class='text'><img src='images/ajax-loader.gif'/></div><br/>
521 </div>
522 </td>
523 </tr>
524 <tr>
525 <td>
527 <?php
528 // Show current and upcoming appointments.
529 $query = "SELECT e.pc_eid, e.pc_aid, e.pc_title, e.pc_eventDate, " .
530 "e.pc_startTime, e.pc_hometext, u.fname, u.lname, u.mname, " .
531 "c.pc_catname " .
532 "FROM openemr_postcalendar_events AS e, users AS u, " .
533 "openemr_postcalendar_categories AS c WHERE " .
534 "e.pc_pid = ? AND e.pc_eventDate >= CURRENT_DATE AND " .
535 "u.id = e.pc_aid AND e.pc_catid = c.pc_catid " .
536 "ORDER BY e.pc_eventDate, e.pc_startTime";
537 //echo $query;
538 $res = sqlStatement($query, array($pid) );
540 // appointments expand collapse widget
541 $widgetTitle = xl("Appointments");
542 $widgetLabel = "appointments";
543 $widgetButtonLabel = xl("Add");
544 $widgetButtonLink = "add_edit_event_user.php?pid=".htmlspecialchars($pid, ENT_QUOTES);
545 $widgetButtonClass = "edit_event iframe";
546 $linkMethod = "";
547 $bodyClass = "summary_item small";
548 if ($GLOBALS['portal_onsite_appt_modify']) {
549 $widgetAuth = true;
551 else {
552 $widgetAuth = false;
554 $fixedWidth = false;
556 expand_collapse_widget($widgetTitle, $widgetLabel, $widgetButtonLabel , $widgetButtonLink, $widgetButtonClass, $linkMethod, $bodyClass, $widgetAuth, $fixedWidth);
558 $count = 0;
561 <div id='stats_div' style="display:none">
562 <div style='margin-left:10px' class='text'><img src='images/ajax-loader.gif'/></div>
563 </div>
565 </td>
566 </tr>
567 </table>
569 </div>
571 </td>
573 </tr>
574 </table>
576 </div> <!-- end main content div -->
578 <input type="button" style="text-align: right;" value="<?php echo xl('Log Out'); ?>" onclick="window.location = 'logout.php'">
580 </wrapper>
582 </body>
583 </html>