154 lines
4.9 KiB
PHP
154 lines
4.9 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
|
|
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);
|
|
|
|
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');
|
|
$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');
|
|
}
|
|
}
|
|
}
|
|
|
|
$filteredCounts = [
|
|
'NORMAL' => $abnormalityCounts['NORMAL'] ?? 0,
|
|
'PREHYPERTENSION' => $abnormalityCounts['PREHYPERTENSION'] ?? 0,
|
|
'STAGE1 HYPERTENSION' => $abnormalityCounts['STAGE1 HYPERTENSION'] ?? 0,
|
|
'STAGE2 HYPERTENSION' => $abnormalityCounts['STAGE2 HYPERTENSION'] ?? 0,
|
|
'UNDERWEIGHT' => $abnormalityCounts['UNDERWEIGHT'] ?? 0,
|
|
'OVERWEIGHT' => $abnormalityCounts['OVERWEIGHT'] ?? 0,
|
|
'OBESE' => $abnormalityCounts['OBESE'] ?? 0,
|
|
'Mild' => $abnormalityCounts['Mild'] ?? 0,
|
|
'Moderate' => $abnormalityCounts['Moderate'] ?? 0,
|
|
'Severe' => $abnormalityCounts['Severe'] ?? 0,
|
|
|
|
|
|
];
|
|
|
|
return [
|
|
'abnormality_counts' => $filteredCounts
|
|
];
|
|
}
|
|
|
|
|
|
|
|
$sbpResults =
|
|
processData($conn, 'sbp', '1098', 'sbp');
|
|
$dbpResults =
|
|
processData($conn, 'dbp', '1099', 'dbp');
|
|
$bmiResults =
|
|
processData($conn, 'bmi', '582', 'bmi');
|
|
$hbgResults =
|
|
processData($conn, 'haemoglobin', '1038', 'haemoglobin');
|
|
|
|
|
|
$response = [
|
|
'SBP' => $sbpResults,
|
|
'DBP' => $dbpResults,
|
|
'BMI' => $bmiResults,
|
|
'HBG' => $hbgResults,
|
|
|
|
];
|
|
|
|
echo json_encode($response);
|
|
|
|
$conn->close();
|