New Fixes (#7770)
[openemr.git] / portal / report / portal_patient_report.php
blobcdce53bec57ceeca8261e1ef9c7a5b27fa3b7ad1
1 <?php
3 /**
4 * portal_patient_report.php
6 * @package OpenEMR
7 * @link https://www.open-emr.org
8 * @author Jerry Padgett <sjpadgett@gmail.com>
9 * @author Brady Miller <brady@sparmy.com>
10 * @author Stephen Nielson <snielson@discoverandchange.com>
11 * @copyright Copyright (c) 2016-2020 Jerry Padgett <sjpadgett@gmail.com>
12 * @copyright Copyright (c) 2019 Brady Miller <brady.g.miller@gmail.com>
13 * @copyright Copyright (C) 2024 Open Plan IT Ltd. <support@openplanit.com>
14 * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
17 // Will start the (patient) portal OpenEMR session/cookie.
18 require_once(dirname(__FILE__) . "/../../src/Common/Session/SessionUtil.php");
19 OpenEMR\Common\Session\SessionUtil::portalSessionStart();
21 //landing page definition -- where to go if something goes wrong
22 $landingpage = "../index.php?site=" . urlencode($_SESSION['site_id']);
25 // kick out if patient not authenticated
26 if (isset($_SESSION['pid']) && isset($_SESSION['patient_portal_onsite_two'])) {
27 $pid = $_SESSION['pid'];
28 $user = $_SESSION['sessionUser'];
29 } else {
30 OpenEMR\Common\Session\SessionUtil::portalSessionCookieDestroy();
31 header('Location: ' . $landingpage . '&w');
32 exit;
35 $ignoreAuth_onsite_portal = true;
36 global $ignoreAuth_onsite_portal;
38 require_once('../../interface/globals.php');
39 require_once("$srcdir/lists.inc.php");
40 require_once("$srcdir/forms.inc.php");
41 require_once("$srcdir/patient.inc.php");
43 use OpenEMR\Core\Header;
44 use OpenEMR\Common\Logging\SystemLogger;
45 use OpenEMR\Common\Twig\TwigContainer;
46 use OpenEMR\Controllers\Portal\PortalPatientReportController;
47 use OpenEMR\Events\PatientReport\PatientReportFilterEvent;
48 use Twig\Error\SyntaxError;
50 // get various authorization levels
51 $auth_notes_a = true; //AclMain::aclCheckCore('encounters', 'notes_a');
52 $auth_notes = true; //AclMain::aclCheckCore('encounters', 'notes');
53 $auth_coding_a = true; //AclMain::aclCheckCore('encounters', 'coding_a');
54 $auth_coding = true; //AclMain::aclCheckCore('encounters', 'coding');
55 $auth_relaxed = true; //AclMain::aclCheckCore('encounters', 'relaxed');
56 $auth_med = true; //AclMain::aclCheckCore('patients' , 'med');
57 $auth_demo = true; //AclMain::aclCheckCore('patients' , 'demo');
59 $ignoreAuth_onsite_portal = true;
61 $portalPatientReportController = new PortalPatientReportController();
62 $twig = (new TwigContainer(null, $GLOBALS['kernel']))->getTwig();
64 $issues = [];
65 $data = [];
66 try {
67 $data['phone_country_code'] = $GLOBALS['phone_country_code'] ?? '';
68 $data['returnurl'] = (!empty($returnurl)) ? "$rootdir/patient_file/encounter/$returnurl" : '';
69 $data['issues'] = $portalPatientReportController->getIssues($ISSUE_TYPES, $pid);
70 $data['encounters'] = $portalPatientReportController->getEncounters($pid);
71 $data['procedureOrders'] = $portalPatientReportController->getProcedureOrders($pid);
72 $data['documents'] = $portalPatientReportController->getDocuments($pid);
73 $data['phimail_enable'] = $GLOBALS['phimail_enable'] ?? false;
74 $data['phimail_ccr_enable'] = $GLOBALS['phimail_ccr_enable'] ?? false;
75 $data['phimail_ccd_enable'] = $GLOBALS['phimail_ccd_enable'] ?? false;
76 $data['sections'] = [
77 'demographics' => [
78 'selected' => true
79 ,'label' => xl('Demographics')
81 ,'history' => [
82 'selected' => false
83 ,'label' => xl('History')
85 ,'insurance' => [
86 'selected' => false
87 ,'label' => xl('Insurance')
89 ,'billing' => [
90 'selected' => $GLOBALS['simplified_demographics'] ? false : true
91 ,'label' => xl('Billing')
93 ,'allergies' => [
94 'selected' => false
95 ,'label' => xl('Allergies')
97 ,'medications' => [
98 'selected' => false
99 ,'label' => xl('Medications')
101 ,'immunizations' => [
102 'selected' => false
103 ,'label' => xl('Immunizations')
105 ,'medical_problems' => [
106 'selected' => false
107 ,'label' => xl('Medical Problems')
109 ,'notes' => [
110 'selected' => false
111 ,'label' => xl('Patient Notes')
113 ,'transactions' => [
114 'selected' => false
115 ,'label' => xl('Transactions')
117 ,'batchcom' => [
118 'selected' => false
119 ,'label' => xl('Communications')
122 // what sections display can be controlled by the following two arrays
123 $data['section_one'] = [
124 'demographics', 'history', 'insurance', 'billing'
126 $data['section_two'] = [
127 'allergies', 'medications', 'immunizations', 'medical_problems', 'notes', 'transactions', 'batchcom'
129 $event = new PatientReportFilterEvent();
130 $event->populateData($data);
131 $updatedEvent = $GLOBALS['kernel']->getEventDispatcher()->dispatch($event, PatientReportFilterEvent::FILTER_PORTAL_TWIG_DATA);
132 $updatedData = $event->getDataAsArray();
133 echo $twig->render("portal/portal_patient_report.html.twig", $updatedData);
134 } catch (SyntaxError $exception) {
135 (new SystemLogger())->error($exception->getMessage(), ['trace' => $exception->getTraceAsString(), 'file' => $exception->getFile()]);
136 echo $twig->render("error/general_http_error.html.twig", []);
137 } catch (\Exception $exception) {
138 (new SystemLogger())->error($exception->getMessage(), ['trace' => $exception->getTraceAsString()]);
139 echo $twig->render("error/general_http_error.html.twig", []);
141 die();