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