170 lines
5.4 KiB
PHP
170 lines
5.4 KiB
PHP
<?php
|
|
|
|
include('includes/config/config.php');
|
|
include('includes/functions.php');
|
|
include('log_entry.php');
|
|
|
|
header('Content-Type: application/json');
|
|
$ohc_type = $_SESSION['current_ohcttype'];
|
|
|
|
function processData($conn, $checkupFormKey, $ruleResult, $ruleEquationLike)
|
|
{
|
|
$dataQuery = "
|
|
SELECT
|
|
cfkv.id,
|
|
cfkv.checkup_form_id,
|
|
cfkv.checkup_form_key,
|
|
cfkv.checkup_form_value,
|
|
ct.checkup_date,
|
|
ct.checkup_type_id,
|
|
ctype.checkup_type_name,
|
|
pm.dept_id,
|
|
d.dept_name
|
|
FROM
|
|
checkup_form_key_value cfkv
|
|
JOIN
|
|
checkup_form ct ON cfkv.checkup_form_id = ct.checkup_id
|
|
JOIN
|
|
checkup_type ctype ON ct.checkup_type_id = ctype.checkup_type_id
|
|
JOIN
|
|
patient_master pm ON ct.emp_id = pm.id
|
|
JOIN
|
|
department d ON pm.dept_id = d.dept_id
|
|
WHERE
|
|
ctype.checkup_type_name = 'Annual Medical Examination'
|
|
AND cfkv.checkup_form_key = '$checkupFormKey'";
|
|
|
|
error_log('sql:' . $dataQuery);
|
|
$dataResult = $conn->query($dataQuery);
|
|
|
|
if (!$dataResult) {
|
|
error_log('Data Query Error: ' . $conn->error);
|
|
return ['error' => 'Data query failed.'];
|
|
}
|
|
|
|
$data = $dataResult->fetch_all(MYSQLI_ASSOC);
|
|
|
|
$rulesQuery = "
|
|
SELECT * FROM rule_equation
|
|
WHERE result IN ('$ruleResult')
|
|
AND rule_equation LIKE '%$ruleEquationLike%';
|
|
";
|
|
$rulesResult = $conn->query($rulesQuery);
|
|
$rules = $rulesResult->fetch_all(MYSQLI_ASSOC);
|
|
|
|
$abnormalityQuery = "SELECT abnormality_id, abnormality_name FROM abnormality";
|
|
$abnormalityResult = $conn->query($abnormalityQuery);
|
|
|
|
$abnormalityTypes = [];
|
|
while ($row = $abnormalityResult->fetch_assoc()) {
|
|
$abnormalityTypes[$row['abnormality_id']] = $row['abnormality_name'];
|
|
}
|
|
|
|
$abnormalityCounts = array_fill_keys(array_values($abnormalityTypes), 0);
|
|
$results = [];
|
|
|
|
foreach ($data as $row) {
|
|
$checkup_value = $row['checkup_form_value'];
|
|
error_log('Processing value: ' . $checkup_value);
|
|
|
|
$matched = false;
|
|
|
|
foreach ($rules as $rule) {
|
|
$rule_equation = str_replace($checkupFormKey, $checkup_value, $rule['rule_equation']);
|
|
error_log('Evaluating rule equation: ' . $rule_equation);
|
|
$isValid = false;
|
|
try {
|
|
$isValid = eval('return ' . $rule_equation . ';');
|
|
} catch (ParseError $e) {
|
|
}
|
|
error_log('Is valid: ' . ($isValid ? 'true' : 'false'));
|
|
if ($isValid) {
|
|
$matched = true;
|
|
$abnormality_id = $rule['abnormality'];
|
|
$abnormalityName = $abnormalityTypes[$abnormality_id] ?? 'Unknown';
|
|
|
|
if (isset($abnormalityCounts[$abnormalityName])) {
|
|
$abnormalityCounts[$abnormalityName]++;
|
|
}
|
|
|
|
$results[] = [
|
|
'checkup_form_id' => $row['checkup_form_id'],
|
|
'checkup_form_key' => $row['checkup_form_key'],
|
|
'checkup_form_value' => $row['checkup_form_value'],
|
|
'checkup_date' => $row['checkup_date'],
|
|
'abnormality_name' => $abnormalityName,
|
|
'dept_name' => $row['dept_name']
|
|
];
|
|
|
|
break;
|
|
}
|
|
}
|
|
if (!$matched) {
|
|
$abnormalityCounts['Normal']++;
|
|
$results[] = [
|
|
'checkup_form_id' => $row['checkup_form_id'],
|
|
'checkup_form_key' => $row['checkup_form_key'],
|
|
'checkup_form_value' => $row['checkup_form_value'],
|
|
'checkup_date' => $row['checkup_date'],
|
|
'abnormality_name' => 'Normal',
|
|
'dept_name' => $row['dept_name']
|
|
];
|
|
}
|
|
}
|
|
|
|
$filteredCounts = [
|
|
'Mild' => $abnormalityCounts['Mild'] ?? 0,
|
|
'Moderate' => $abnormalityCounts['Moderate'] ?? 0,
|
|
'Severe' => $abnormalityCounts['Severe'] ?? 0,
|
|
'Normal' => $abnormalityCounts['Normal'] ?? 0
|
|
];
|
|
|
|
return [
|
|
'data' => $results,
|
|
'abnormality_counts' => $filteredCounts
|
|
];
|
|
}
|
|
|
|
$fvcResults = processData($conn, 'fvc_forced_vital_capacity', '1409', 'fvc_forced_vital_capacity');
|
|
$fve1Results = processData($conn, 'fev_1', '1410', 'fev_1');
|
|
|
|
|
|
$departmentWiseCounts = [];
|
|
|
|
foreach ([$fvcResults, $fve1Results] as $result) {
|
|
foreach ($result['data'] as $row) {
|
|
$deptName = $row['dept_name'];
|
|
$abnormalityName = $row['abnormality_name'];
|
|
|
|
if (!isset($departmentWiseCounts[$deptName])) {
|
|
$departmentWiseCounts[$deptName] = [
|
|
'Mild' => 0,
|
|
'Moderate' => 0,
|
|
'Severe' => 0,
|
|
'Normal' => 0
|
|
];
|
|
}
|
|
|
|
if (isset($departmentWiseCounts[$deptName][$abnormalityName])) {
|
|
$departmentWiseCounts[$deptName][$abnormalityName]++;
|
|
}
|
|
}
|
|
}
|
|
|
|
$ppbsAbnormalityCounts = [
|
|
'Mild' => $ppbsResults['abnormality_counts']['Mild'],
|
|
'Moderate' => $ppbsResults['abnormality_counts']['Moderate'],
|
|
'Severe' => $ppbsResults['abnormality_counts']['Severe']
|
|
];
|
|
|
|
$response = [
|
|
'FVC' => $fvcResults,
|
|
'FEV1' => $fve1Results,
|
|
'PPBS' => $ppbsAbnormalityCounts,
|
|
'department_wise_counts' => $departmentWiseCounts
|
|
];
|
|
|
|
echo json_encode($response);
|
|
|
|
$conn->close();
|