ohctech_p8/rule_equation_graph.php
Dushant Mali 42b921afe2 Updated Volvo Code
Updated Volvo Code
2024-11-02 11:02:15 +05:30

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();