<?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 JOIN checkup_parameter cp ON cfkv.checkup_form_key = cp.column_name WHERE ctype.checkup_type_name = 'Annual Medical Examination' AND cp.key_health_map_name = ( SELECT key_param_id FROM key_health_reportable_parameter_master WHERE key_param_name = '$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%'; "; error_log('rule:' . $rulesQuery); $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('ParseError in rule evaluation: ' . $e->getMessage()); } if ($isValid) { error_log('Is valid: true'); $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; } else { error_log('Is valid: false'); } } 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 [ 'abnormality_counts' => $filteredCounts ]; } $ppbsResults = processData($conn, 'ppbs', '397', 'ppbs'); $response = [ 'PPBS' => $ppbsResults, ]; echo json_encode($response); $conn->close();