db->trans_begin(); $sql = "SELECT So_ResultEntryFisikUmumDetails FROM one_etl.mcu_order JOIN so_resultentry ON So_ResultEntryT_OrderHeaderID = Mcu_OrderT_OrderHeaderID AND So_ResultEntrySo_TemplateID IN (6, 8, 9 , 10, 60) JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryFisikUmumType = 'fisik' WHERE Mcu_OrderMgm_McuID = '{$mgmMcuID}'"; $query = $this->db->query($sql); if (!$query) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $last_qry ); $this->sys_error_db($error, $this->db); exit; } if ($query) { $rows = $query->result_array(); //echo $this->db->last_query(); $result = array(); $arr_bb_temp = []; $arr_tb_temp = []; $arr_lp_temp = []; $arr_bmi_temp = []; if ($rows) { foreach ($rows as $k => $v) { $data_json = json_decode($v['So_ResultEntryFisikUmumDetails']); $data_json = $this->objToArray($data_json); //print_r($data_json); foreach ($data_json as $x => $y) { if ($y['title'] == 'STATUS GIZI') { foreach ($y['details'] as $detail) { if ($detail['label'] === 'Berat badan' && $detail['value'] !== '-' && $detail['value'] != 0) { $arr_bb_temp[] = $detail['value']; //break; } if ($detail['label'] === 'Tinggi badan' && $detail['value'] !== '-' && $detail['value'] != 0) { $arr_tb_temp[] = $detail['value']; // break; } if ($detail['label'] === 'Lingkar perut' && $detail['value'] !== '-' && $detail['value'] != 0) { $arr_lp_temp[] = $detail['value']; // break; } if ($detail['label'] === 'BMI' && $detail['value'] !== '-' && !is_nan($detail['value']) && $detail['value'] != 0) { $arr_bmi_temp[] = $detail['value']; // break; } } } } // echo " bb " . $r; // echo " tb " . $t; // echo " lp " . $l; // echo " bmi " . $bmi; } $explode_bb = $arr_bb_temp; $explode_tb = $arr_tb_temp; $explode_lp = $arr_lp_temp; $explode_bmi = $arr_bmi_temp; // print_r($explode_bb); // print_r($explode_tb); // print_r($explode_lp); // print_r($explode_bmi); if ($debug != "") { echo "
TB:\n";
print_r($explode_tb);
}
// BB
// Calculate minimum value
$min_bb = min($explode_bb);
// Calculate maximum value
$max_bb = max($explode_bb);
// Calculate average (mean)
$average_bb = array_sum($explode_bb) / count($explode_bb);
if ($debug != "") {
echo "BB:\n";
print_r($explode_bb);
}
// Calculate median
sort($explode_bb);
$count_bb = count($explode_bb);
$middle_bb = floor($count_bb / 2);
if ($count_bb % 2) {
// Odd number of elements
$median_bb = $explode_bb[$middle_bb];
} else {
// Even number of elements
$median_bb = ($explode_bb[$middle_bb - 1] + $explode_bb[$middle_bb]) / 2;
}
//Output the results
/*echo "Minimum value BB: " . $min_bb . "\n";
echo "Maximum value BB: " . $max_bb . "\n";
echo "Average (mean) value BB: " . $average_bb . "\n";
echo "Median value BB: " . $median_bb . "\n";
*/
// tb
// Calculate minimum value
$min_tb = min($explode_tb);
// Calculate maximum value
$max_tb = max($explode_tb);
// Calculate average (mean)
$average_tb = array_sum($explode_tb) / count($explode_tb);
// Calculate median
sort($explode_tb);
$count_tb = count($explode_tb);
$middle_tb = floor($count_tb / 2);
if ($count_tb % 2) {
// Odd number of elements
$median_tb = $explode_tb[$middle_tb];
} else {
// Even number of elements
$median_tb = ($explode_tb[$middle_tb - 1] + $explode_tb[$middle_tb]) / 2;
}
// Output the results
/*echo "Minimum value tb: " . $min_tb . "\n";
echo "Maximum value tb: " . $max_tb . "\n";
echo "Average (mean) value tb: " . $average_tb . "\n";
echo "Median value tb: " . $median_tb . "\n";
*/
// lp
// Calculate minimum value
$min_lp = min($explode_lp);
// Calculate maximum value
$max_lp = max($explode_lp);
// Calculate average (mean)
$average_lp = array_sum($explode_lp) / count($explode_lp);
// Calculate median
sort($explode_lp);
$count_lp = count($explode_lp);
$middle_lp = floor($count_lp / 2);
if ($count_lp % 2) {
// Odd number of elements
$median_lp = $explode_lp[$middle_lp];
} else {
// Even number of elements
$median_lp = ($explode_lp[$middle_lp - 1] + $explode_lp[$middle_lp]) / 2;
}
// Output the results
/*echo "Minimum value lp: " . $min_lp . "\n";
echo "Maximum value lp: " . $max_lp . "\n";
echo "Average (mean) value lp: " . $average_lp . "\n";
echo "Median value lp: " . $median_lp . "\n";
*/
// bmi
// Calculate minimum value
$min_bmi = min($explode_bmi);
// Calculate maximum value
$max_bmi = max($explode_bmi);
// Calculate average (mean)
$average_bmi = array_sum($explode_bmi) / count($explode_bmi);
// Calculate median
sort($explode_bmi);
$count_bmi = count($explode_bmi);
$middle_bmi = floor($count_bmi / 2);
if ($count_bmi % 2) {
// Odd number of elements
$median_bmi = $explode_bmi[$middle_bmi];
} else {
// Even number of elements
$median_bmi = ($explode_bmi[$middle_bmi - 1] + $explode_bmi[$middle_bmi]) / 2;
}
if ($debug != "") {
echo "BMI:\n";
echo "Minimum value bmi: " . $min_bmi . "\n";
echo "Maximum value bmi: " . $max_bmi . "\n";
echo "Average (mean) value bmi: " . $average_bmi . "\n";
echo "Median value bmi: " . $median_bmi . "\n";
print_r($explode_bmi);
}
// Output the results
$sql = "DELETE FROM one_etl.antropometri WHERE AntropometriMgm_McuID = {$mgmMcuID}";
$qry = $this->db->query($sql);
if (!$qry) {
$this->db->trans_rollback();
$error = array(
"message" => $this->db->error()["message"],
"sql" => $last_qry
);
$this->sys_error_db($error, $this->db);
exit;
}
$this->insert_antropometri($mgmMcuID, $min_tb, $min_bb, $min_lp, $min_bmi, 'MIN');
$this->insert_antropometri($mgmMcuID, $max_tb, $max_bb, $max_lp, $max_bmi, 'MAX');
$this->insert_antropometri($mgmMcuID, $average_tb, $average_bb, $average_lp, $average_bmi, 'AVG');
$this->insert_antropometri($mgmMcuID, $median_tb, $median_bb, $median_lp, $median_bmi, 'MED');
}
}
$this->db->trans_commit();
$this->reply(["status" => "OK", 'message' => 'Proses generate antopometri berhasil']);
}
function reply($resp)
{
echo json_encode($resp);
}
function objToArray($obj)
{
// Not an object or array
if (!is_object($obj) && !is_array($obj)) {
return $obj;
}
// Parse array
foreach ($obj as $key => $value) {
$arr[$key] = $this->objToArray($value);
}
// Return parsed array
return $arr;
}
function insert_antropometri($mgmMcuID, $tb, $bb, $lp, $bmi, $type)
{
$sql = "INSERT INTO one_etl.antropometri(
AntropometriMgm_McuID,
AntropometriTB,
AntropometriBB,
AntropometriLP,
AntropometriBMI,
AntropometriType) VALUES(?,?,?,?,?,?)";
$qry = $this->db->query($sql, array(
$mgmMcuID,
$tb,
$bb,
$lp,
$bmi,
$type
));
$last_qry = $this->db->last_query();
if (!$qry) {
$this->db->trans_rollback();
$error = array(
"message" => $this->db->error()["message"],
"sql" => $last_qry
);
$this->sys_error_db($error, $this->db);
exit;
}
}
}