You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.7 KiB
122 lines
3.7 KiB
2 years ago
|
<?php
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* QRDA Ajax Download
|
||
|
*
|
||
|
* @package OpenEMR
|
||
|
* @link https://www.open-emr.org
|
||
|
* @author Ensoftek
|
||
|
* @author Stephen Waite <stephen.waite@cmsvt.com
|
||
|
* @copyright Copyright (c) 2015 Ensoftek, Inc
|
||
|
* @copyright Copyright (c) 2019 Stephen Waite <stephen.waite@cmsvt.com>
|
||
|
* @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
|
||
|
*/
|
||
|
|
||
|
require_once("../interface/globals.php");
|
||
|
require_once("$srcdir/report_database.inc");
|
||
|
require_once("../ccr/uuid.php");
|
||
|
require_once("qrda_category1_functions.php");
|
||
|
require_once("qrda_category1.inc");
|
||
|
require_once("qrda_functions.php");
|
||
|
|
||
|
use OpenEMR\Common\Csrf\CsrfUtils;
|
||
|
|
||
|
if (!CsrfUtils::verifyCsrfToken($_REQUEST["csrf_token_form"])) {
|
||
|
CsrfUtils::csrfNotVerified();
|
||
|
}
|
||
|
|
||
|
$reportID = $_POST['reportID'];
|
||
|
$ruleID = $_POST['ruleID'];
|
||
|
$counter = $_POST['counter'];
|
||
|
$fileName = $_GET['fileName'] ?? "";
|
||
|
$provider_id = $_POST['provider_id'];
|
||
|
|
||
|
if ($fileName) {
|
||
|
$fileList = explode(",", $fileName);
|
||
|
//if ( strpos($fileName,",") !== FALSE ) {
|
||
|
if (count($fileList) > 1) {
|
||
|
// Multiple files, zip them together
|
||
|
$zip = new ZipArchive();
|
||
|
$currentTime = date("Y-m-d-H-i-s");
|
||
|
global $qrda_file_path;
|
||
|
$finalZip = $qrda_file_path . "QRDA_2014_1_" . $currentTime . ".zip";
|
||
|
if ($zip->open($finalZip, ZipArchive::CREATE) != true) {
|
||
|
echo xlt("FAILURE: Couldn't create the zip");
|
||
|
}
|
||
|
|
||
|
foreach ($fileList as $eachFile) {
|
||
|
check_file_dir_name($eachFile);
|
||
|
$zip->addFile($qrda_file_path . $eachFile, $eachFile);
|
||
|
}
|
||
|
|
||
|
$zip->close();
|
||
|
foreach ($fileList as $eachFile) {
|
||
|
unlink($qrda_file_path . $eachFile);
|
||
|
}
|
||
|
} else {
|
||
|
check_file_dir_name($fileList[0]);
|
||
|
$finalZip = $qrda_file_path . $fileList[0];
|
||
|
}
|
||
|
|
||
|
header("Pragma: public");
|
||
|
header("Expires: 0");
|
||
|
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
|
||
|
header("Content-Type: application/force-download");
|
||
|
header("Content-Length: " . filesize($finalZip));
|
||
|
header("Content-Disposition: attachment; filename=" . basename($finalZip) . ";");
|
||
|
header("Content-Description: File Transfer");
|
||
|
readfile($finalZip);
|
||
|
unlink($finalZip);
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
$report_view = collectReportDatabase($reportID);
|
||
|
$dataSheet = json_decode($report_view['data'], true);
|
||
|
$target_date = $report_view['date_target'];
|
||
|
|
||
|
$criteriaPatients = getCombinePatients($dataSheet, $reportID);
|
||
|
$patients = $criteriaPatients[$ruleID];
|
||
|
|
||
|
//var_dump($dataSheet);
|
||
|
|
||
|
$from_date = date('Y', strtotime($target_date)) . "-01-01";
|
||
|
$to_date = date('Y', strtotime($target_date)) . "-12-31";
|
||
|
|
||
|
if (count($patients)) {
|
||
|
$zip = new ZipArchive();
|
||
|
global $qrda_file_path;
|
||
|
$currentTime = date("Y-m-d-H-i-s");
|
||
|
$zipFile = $reportID . "_NQF_" . $ruleID . "_" . $currentTime . ".zip";
|
||
|
$zipFileFullPath = $qrda_file_path . $zipFile;
|
||
|
if (file_exists($zipFileFullPath)) {
|
||
|
unlink($zipFileFullPath);
|
||
|
}
|
||
|
|
||
|
foreach ($patients as $patient) {
|
||
|
$xml = new QRDAXml($ruleID);
|
||
|
$fileName = mainQrdaCatOneGenerate($xml, $patient, $ruleID, $provider_id);
|
||
|
$files[] = $fileName;
|
||
|
}
|
||
|
|
||
|
if ($zip->open($zipFileFullPath, ZipArchive::CREATE) != true) {
|
||
|
echo xlt("FAILURE: Couldn't create the zip");
|
||
|
}
|
||
|
|
||
|
foreach ($files as $eachFile) {
|
||
|
$filePath = $qrda_file_path . $eachFile;
|
||
|
$zip->addFile($filePath, $eachFile);
|
||
|
}
|
||
|
|
||
|
$zip->close();
|
||
|
//Deleting the files after closing the zip
|
||
|
foreach ($files as $eachFile) {
|
||
|
$filePath = $qrda_file_path . $eachFile;
|
||
|
unlink($filePath);
|
||
|
}
|
||
|
|
||
|
echo $zipFile;
|
||
|
} else {
|
||
|
echo xlt("FAILURE: No patients for measure") . " " . text($ruleID);
|
||
|
}
|