Files
BE_IBL/application/libraries/Genkelainan.php
2026-04-15 15:16:12 +07:00

3250 lines
144 KiB
PHP

<?php
defined("BASEPATH") or exit("No direct script access allowed");
class Genkelainan
{
function __construct()
{
$CI = & get_instance();
$this->db_smartone = $CI->load->database("default", true);
$this->db_smartone = $CI->load->database("default", true);
}
function clean_mysqli_connection($dbc)
{
while (mysqli_more_results($dbc)) {
if (mysqli_next_result($dbc)) {
$result = mysqli_use_result($dbc);
if (get_class($result) == 'mysqli_stmt') {
mysqli_stmt_free_result($result);
}
else {
unset($result);
}
}
}
}
function dynamic_comparison($varleft, $op, $varright)
{
switch ($op) {
case "=":
return $varleft == $varright;
case "!=":
return $varleft != $varright;
case ">=":
return $varleft >= $varright;
case "<=":
return $varleft <= $varright;
case ">":
return $varleft > $varright;
case "<":
return $varleft < $varright;
default:
return true;
}
}
function generate_kelainan_lab($orderid = 0, $orderdetailID = 0, $userID = 0)
{
$errors = [];
if ($orderid != 0) {
$filterOrderID = " AND T_OrderHeaderID = {$orderid}";
}
else {
$filterOrderID = "";
}
if ($orderdetailID != 0) {
$filterDetailID = " AND T_OrderDetailID = {$orderdetailID}";
}
else {
$filterDetailID = "";
}
$sql = "SELECT
T_OrderHeaderID,T_OrderHeaderLabNumber,
T_TestName, T_OrderDetailID, T_OrderDetailResult, T_OrderDetailNat_MethodeID,
T_OrderDetailNat_MethodeID, T_OrderDetailNat_MethodeName,
T_OrderDetailMinValue, T_OrderDetailMaxValue, T_OrderDetailMinValueInclusive,
T_OrderDetailMaxValueInclusive,
Mcu_SummaryLabID,
Mcu_SummaryLabValue,
Mcu_SummaryLabNat_MethodeID,
Mcu_SummaryLabWithMethode,
Mcu_SummaryLabType,
Mcu_SummaryLabIsNormalValue,
Mcu_SummaryLabIsRange,
Mcu_SummaryLabMinInclusive,
Mcu_SummaryLabMinValue,
Mcu_SummaryLabMaxInclusive,
Mcu_SummaryLabMaxValue,
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanClasification,
Nat_TestID,
Nat_TestCode,
mcu_kelainangroup.*
from t_orderdetail
join t_orderheader on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID {$filterOrderID} {$filterDetailID}
and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
and T_OrderDetailIsActive = 'Y'
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
JOIN m_sex ON M_PatientM_SexID = M_SexID
join t_test
on T_OrderDetailT_TestID = T_TestID
join nat_test ON T_TestNat_TestID = Nat_TestID
join mcu_summarylab on T_TestNat_TestID = Mcu_SummaryLabNat_TestID AND Mcu_SummaryLabIsActive = 'Y'
AND (Mcu_SummaryLabGender = 'A' OR (Mcu_SummaryLabGender <> 'A' AND Mcu_SummaryLabGender = CASE
WHEN LOWER(M_SexNameLang) = 'male' THEN 'M'
WHEN LOWER(M_SexNameLang) = 'female' THEN 'F'
else ''
END))
join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID";
//echo $sql;
$qry = $this->db_smartone->query($sql);
if (!$qry) {
$prm_log = ['SELECT_T_ORDERDETAIL_KELAINAN_LAB_1', 'kelainanlab/generate_kelainan_lab'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode($errors));
$errors[] = "SELECT_T_ORDERDETAIL_KELAINAN_LAB_1";
}
$rows = $qry->result_array();
$results = [];
foreach ($rows as $r) {
$result_value = $r['T_OrderDetailResult'];
$value_comparison = 0;
//echo $r['Mcu_SummaryLabIsNormalValue'];
$kelainan = [];
$notavailable = [];
if (trim($result_value) == 'NA') {
$notavailable = $r;
}
elseif ($r['Mcu_SummaryLabIsNormalValue'] == 'Y') {
if ($r['Mcu_SummaryLabType'] == '<' || $r['Mcu_SummaryLabType'] == '<=') {
$value_comparison = $r['T_OrderDetailMinValue'];
}
if ($r['Mcu_SummaryLabType'] == '>' || $r['Mcu_SummaryLabType'] == '>=') {
$value_comparison = $r['T_OrderDetailMaxValue'];
}
//echo "Y";
if ($r['Mcu_SummaryLabWithMethode'] == 'N' && $this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
$kelainan = $r;
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']);
}
}
else if ($r['Mcu_SummaryLabIsRange'] == 'Y') {
// Mcu_SummaryLabIsNormalValue,
// Mcu_SummaryLabIsRange,
// Mcu_SummaryLabMinInclusive,
// Mcu_SummaryLabMinValue,
// Mcu_SummaryLabMaxInclusive,
// Mcu_SummaryLabMaxValue,
$isWithinMin = $r['Mcu_SummaryLabMinInclusive'] === 'Y' ? floatval($result_value) >= floatval($r['Mcu_SummaryLabMinValue']) : floatval($result_value) > floatval($r['Mcu_SummaryLabMinValue']);
$isWithinMax = $r['Mcu_SummaryLabMaxInclusive'] === 'Y' ? floatval($result_value) <= floatval($r['Mcu_SummaryLabMaxValue']) : floatval($result_value) < floatval($r['Mcu_SummaryLabMaxValue']);
if ($isWithinMax && $isWithinMin) {
$kelainan = $r;
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']);
}
}
else {
$value_comparison = $r['Mcu_SummaryLabValue'];
if ($r['Mcu_SummaryLabType'] == '!=' || $r['Mcu_SummaryLabType'] == '==') {
if ($this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
$kelainan = $r;
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']);
}
}
else {
if (is_numeric($result_value) && $this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
$kelainan = $r;
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']);
}
}
}
if (count($results) > 0) {
$sql_update_kel = "";
if ($orderdetailID != 0) {
$sql_update_kel = "UPDATE t_kelainan_lab
SET T_KelainanLabIsActive = 'N'
WHERE
T_KelainanLabT_OrderDetailID = {$orderdetailID}";
}
else {
$sql_update_kel = "UPDATE t_kelainan_lab
SET T_KelainanLabIsActive = 'N'
WHERE
T_KelainanLabT_OrderHeaderID = {$orderid}";
}
$qry_update_kel = $this->db_smartone->query($sql_update_kel);
if (!$qry_update_kel) {
$prm_log = ['UPDATE_T_KELAINAN_LAB_N', 'kelainanlab/generate_kelainan_lab'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderid' => $orderid, 'orderdetailID' => $orderdetailID]));
$errors[] = "UPDATE_T_KELAINAN_LAB_N";
}
foreach ($results as $v_result) {
$sql_kel_lab = "SELECT *
FROM t_kelainan_lab
WHERE T_KelainanLabT_OrderDetailID = ?
GROUP BY T_KelainanLabT_OrderDetailID";
$qry_kel_lab = $this->db_smartone->query($sql_kel_lab, array($v_result['orderdetailID']));
if ($qry_kel_lab) {
$rows_kel = $qry_kel_lab->result_array();
}
else {
$prm_log = ['SELECT_T_KELAINAN_LAB', 'kelainanlab/generate_kelainan_lab'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode($v_result));
$errors[] = "SELECT_T_KELAINAN_LAB";
}
if (count($rows_kel) > 0) {
// print_r($v_result['orderdetailID']);
// exit;
$sql_update_kel = "UPDATE t_kelainan_lab
SET T_KelainanLabT_OrderDetailID = {$v_result['orderdetailID']},
T_KelainanLabT_OrderHeaderID = {$v_result['orderheaderID']},
T_KelainanLabNat_TestID = {$v_result['nat_testID']},
T_KelainanLabMcu_SummaryLabID = {$v_result['mcu_summarylabID']},
T_KelainanLabCreatedUserID = {$userID},
T_KelainanLabIsActive = 'Y',
T_KelainanLabCreated = NOW()
WHERE T_KelainanLabID = {$rows_kel[0]['T_KelainanLabID']}";
$qry_update_kel = $this->db_smartone->query($sql_update_kel);
if (!$qry_update_kel) {
$prm_log = ['UPDATE_T_KELAINAN_LAB', 'kelainanlab/generate_kelainan_lab'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode($v_result));
$errors[] = "UPDATE_T_KELAINAN_LAB";
}
}
else {
// print_r('insert');
// exit;
$sql_insert_lab = "INSERT INTO t_kelainan_lab(
T_KelainanLabT_OrderDetailID,
T_KelainanLabT_OrderHeaderID,
T_KelainanLabNat_TestID,
T_KelainanLabMcu_SummaryLabID,
T_KelainanLabCreatedUserID,
T_KelainanLabCreated)
VALUES(
'{$v_result['orderdetailID']}',
'{$v_result['orderheaderID']}',
'{$v_result['nat_testID']}',
'{$v_result['mcu_summarylabID']}',
{$userID},
NOW())";
$qry_insert_lab = $this->db_smartone->query($sql_insert_lab);
if (!$qry_insert_lab) {
$prm_log = ['INSERT_T_KELAINAN_LAB', 'kelainanlab/generate_kelainan_lab'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode($v_result));
$errors[] = "INSERT_T_KELAINAN_LAB";
}
}
}
}
}
return $errors;
}
function generate_kelainan_nonlab($orderID = 0, $so_resultentryID = 0, $userID = 0)
{
$errors = [];
if ($orderID != 0) {
$filterOrderID = " AND T_OrderHeaderID = {$orderID}";
}
else {
$filterOrderID = "";
}
if ($so_resultentryID != 0) {
$filterSoResultEntryID = " AND So_ResultEntryID = {$so_resultentryID}";
}
else {
$filterSoResultEntryID = "";
}
$sql = "SELECT So_ResultEntryID, T_OrderHeaderID, T_TestNat_TestID, Mcu_SummaryNonlabID, Mcu_SummaryNonlabMcu_KelainanID, Mcu_SummaryNonlabID
FROM so_resultentry_category_result
JOIN so_resultentry ON So_ResultEntryCategoryResultSo_ResultEntryID = So_ResultEntryID AND
So_ResultEntryStatus <> 'NEW' AND So_ResultEntryIsActive = 'Y' {$filterSoResultEntryID}
JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y'
{$filterOrderID}
JOIN t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN mcu_summarynonlab ON Mcu_SummaryNonlabNat_TestID = T_TestNat_TestID AND
Mcu_SummaryNonlabIsActive = 'Y' AND So_ResultEntryCategoryNonlabConclusionDetailID IN (Mcu_SummaryNonlabConclusionDetailIDs)
WHERE
So_ResultEntryCategoryResultIsActive = 'Y'";
$qry = $this->db_smartone->query($sql, array($orderID));
if (!$qry) {
$prm_log = ['SELECT_T_KELAINAN_NONLAB_1', 'genkelainan/generate_kelainan_nonlab'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID, 'so_resultentryID' => $so_resultentryID]));
$errors[] = "SELECT_T_KELAINAN_NONLAB_1";
}
$rows = $qry->result_array();
if ($orderID != 0) {
$sql = "UPDATE t_kelainan_nonlab SET
T_KelainanNonLabIsActive = 'N'
WHERE
T_KelainanNonLabT_OrderHeaderID = {$orderID} AND
T_KelainanNonLabIsActive = 'Y'
";
}
else {
$sql = "UPDATE t_kelainan_nonlab SET
T_KelainanNonLabIsActive = 'N'
WHERE
T_KelainanNonLabSo_ResultEntryID = {$so_resultentryID} AND
T_KelainanNonLabIsActive = 'Y'
";
}
$qry = $this->db_smartone->query($sql);
if (!$qry) {
$prm_log = ['UPDATE_T_KELAINAN_NONLAB_N', 'genkelainan/generate_kelainan_nonlab'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID, 'so_resultentryID' => $so_resultentryID]));
$errors[] = "UPDATE_T_KELAINAN_NONLAB_N";
}
foreach ($rows as $key => $value) {
$sql = "INSERT INTO t_kelainan_nonlab (
T_KelainanNonLabSo_ResultEntryID,
T_KelainanNonLabT_OrderHeaderID,
T_KelainanNonLabNat_TestID,
T_KelainanNonLabMcu_SummaryNonlabID,
T_KelainanNonLabCreatedUserID,
T_KelainanLabNonCreated
) VALUES(?,?,?,?,?,NOW())";
$qry = $this->db_smartone->query($sql, [
$value['So_ResultEntryID'],
$value['T_OrderHeaderID'],
$value['T_TestNat_TestID'],
$value['Mcu_SummaryNonlabID'],
$userID
]);
if (!$qry) {
$prm_log = ['INSERT_T_KELAINAN_NONLAB', 'genkelainan/generate_kelainan_nonlab'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode($value));
$errors[] = "INSERT_T_KELAINAN_NONLAB";
}
}
return $errors;
}
function generate_all_fisik($orderID, $userid)
{
$errors = [];
$errors = array_merge($errors, $this->status_gizi($orderID, $userid));
$errors = array_merge($errors, $this->persepsi_warna($orderID, $userid));
$errors = array_merge($errors, $this->visus($orderID, $userid));
$errors = array_merge($errors, $this->keluhan($orderID, $userid));
$errors = array_merge($errors, $this->riwayat_penyakit($orderID, $userid));
$errors = array_merge($errors, $this->penyakit_keluarga($orderID, $userid));
$errors = array_merge($errors, $this->kebiasaan_hidup($orderID, $userid));
$errors = array_merge($errors, $this->fisik_konsumsiobatteratur($orderID, $userid));
$errors = array_merge($errors, $this->imunasi($orderID, $userid));
$errors = array_merge($errors, $this->vital_sign($orderID, $userid));
$errors = array_merge($errors, $this->keadaan_umum($orderID, $userid));
$errors = array_merge($errors, $this->kepala_wajah($orderID, $userid));
$errors = array_merge($errors, $this->mata($orderID, $userid));
$errors = array_merge($errors, $this->lapang_pandang($orderID, $userid));
$errors = array_merge($errors, $this->telinga($orderID, $userid));
$errors = array_merge($errors, $this->hidung($orderID, $userid));
$errors = array_merge($errors, $this->gigi($orderID, $userid));
$errors = array_merge($errors, $this->mulut($orderID, $userid));
$errors = array_merge($errors, $this->leher($orderID, $userid));
$errors = array_merge($errors, $this->thorax($orderID, $userid));
$errors = array_merge($errors, $this->paru($orderID, $userid));
$errors = array_merge($errors, $this->jantung($orderID, $userid));
$errors = array_merge($errors, $this->perut($orderID, $userid));
$errors = array_merge($errors, $this->sistem_integumen($orderID, $userid));
$errors = array_merge($errors, $this->genitourinaria($orderID, $userid));
$errors = array_merge($errors, $this->anggota_gerak($orderID, $userid));
$errors = array_merge($errors, $this->sistem_persyarafan($orderID, $userid));
$errors = array_merge($errors, $this->smell_test($orderID, $userid));
$errors = array_merge($errors, $this->low_back_pain_screening_test($orderID, $userid));
$errors = array_merge($errors, $this->loop_k3($orderID, $userid));
$this->generate_summaries($orderID, $userid);
return $errors;
}
function status_gizi($id, $userid)
{
$errors = [];
$sql = "SELECT *
FROM t_samplingso_additional_fisik_bbtb
WHERE
T_SamplingAdditionalFisikBBTBT_OrderHeaderID = ? AND
T_SamplingAdditionalFisikBBTBIsActive = 'Y'
LIMIT 1";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_BBTB', 'genkelainan/status_gizi'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_BBTB";
}
//echo $this->db_smartone->last_query();
$row_results = $qry->result_array();
//print_r($row_result);
if (count($row_results) > 0) {
$row_result = $row_results[0];
$status_gizi = array();
$bb = $row_result["T_SamplingAdditionalFisikBBTBValueBB"];
$tb = $row_result["T_SamplingAdditionalFisikBBTBValueTB"];
$standart_bmi = $row_result["T_SamplingAdditionalFisikBBTBStandart"];
$get_bmi = $this->hitung_bmi($bb, $tb, $standart_bmi);
$bmi = $get_bmi['bmi'];
$classification = $get_bmi['class'];
//echo $classification;
$data_insert_tb = array(
'code' => 'tb',
'label' => $tb,
'note' => $tb,
'segment' => 'status_gizi',
'category' => '',
'order_id' => $id
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert_tb, $userid));
//$this->insert_code('tb',$tb);
$data_insert_bb = array(
'code' => 'bb',
'label' => $bb,
'note' => $bb,
'segment' => 'status_gizi',
'category' => '',
'order_id' => $id
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert_bb, $userid));
//$this->insert_code('bb',$bb);
$data_insert_bmi = array(
'code' => 'bmi',
'label' => $bmi,
'note' => $bmi,
'segment' => 'status_gizi',
'category' => $standart_bmi,
'order_id' => $id
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert_bmi, $userid));
//$this->insert_code('bmi',$bmi);
$data_insert_bmi_class = array(
'code' => 'bmi_classification_' . $standart_bmi,
'label' => $classification,
'note' => $classification,
'segment' => 'status_gizi',
'category' => $standart_bmi,
'order_id' => $id
);
//print_r($data_insert_bmi_class);
$errors = array_merge($errors, $this->insert_data_etl($data_insert_bmi_class, $userid));
//$this->insert_code('bmi_classification_'.$standart_bmi,$classification);
}
return $errors;
}
function persepsi_warna($id, $userid)
{
$errors = [];
$sql = "SELECT IFNULL(T_SamplingAdditionalFisikBWPWValue,'Z') as result,
IFNULL(T_SamplingAdditionalFisikBWPWVAngka,'') as angka
FROM t_samplingso_additional_fisik_bw
WHERE
T_SamplingAdditionalFisikBWT_OrderHeaderID = ?
LIMIT 1";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_BWPW', 'genkelainan/persepsi_warna'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_BWPW";
}
$row_results = $qry->result_array();
if (count($row_results) > 0) {
$row_result = $row_results[0];
$hasil = 'Bahan belum';
if ($row_result['result'] == 'BW') {
$hasil = 'Red Green Deficiency';
}
if ($row_result['result'] == 'N') {
$hasil = 'Normal';
}
if ($row_result['result'] == 'X') {
$hasil = 'Tidak dilakukan';
}
$data_insert_bw = array(
'code' => 'bw',
'label' => $row_result['result'],
'note' => $hasil,
'segment' => 'mata',
'category' => '',
'order_id' => $id
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert_bw, $userid));
//$this->insert_code('bw',$row_result['result']);
$data_insert_bwv = array(
'code' => 'bw_value',
'label' => $row_result['angka'],
'note' => $row_result['angka'],
'segment' => 'mata',
'category' => '',
'order_id' => $id
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert_bwv, $userid));
//$this->insert_code('bw_value',$row_result['angka']);
}
return $errors;
}
function hitung_bmi($bb, $tb, $standart_bmi)
{
$tb = $tb / 100;
$bmi = '';
$classs = "";
$bmi_valuex = 0;
if (intval($bb) != 0 && intval($tb) != 0) {
$bmi = $bb / ($tb * $tb);
$bmi_valuex = number_format($bmi, 2);
if ($standart_bmi === 'asia_pacific') {
if ($bmi_valuex < 18.5)
$classs = 'Underweight';
if ($bmi_valuex >= 18.5 && $bmi_valuex < 23)
$classs = 'Normal';
if ($bmi_valuex >= 23 && $bmi_valuex < 25)
$classs = 'Overweight';
if ($bmi_valuex >= 25 && $bmi_valuex < 30)
$classs = 'Obese I';
if ($bmi_valuex >= 30)
$classs = 'Obese II';
}
if ($standart_bmi === 'who') {
if ($bmi_valuex < 18.5)
$classs = 'Underweight';
if ($bmi_valuex >= 18.5 && $bmi_valuex < 25) {
$classs = 'Normal';
}
if ($bmi_valuex >= 25 && $bmi_valuex < 30) {
$classs = 'Overweight';
}
if ($bmi_valuex >= 30)
$classs = 'Obese';
}
if ($standart_bmi === 'kemenkes') {
if ($bmi_valuex < 18.5)
$classs = 'Underweight';
if ($bmi_valuex >= 18.5 && $bmi_valuex < 25.1)
$classs = 'Normal';
if ($bmi_valuex >= 25.1 && $bmi_valuex < 27)
$classs = 'Overweight';
if ($bmi_valuex >= 27)
$classs = 'Obese';
}
}
return array(
'bmi' => $bmi_valuex,
'class' => $classs
);
}
function visus($orderID, $userid)
{
$errors = [];
$ret_array = [];
$sql = " SELECT * , T_SamplingAdditionalFisikVisusID as visus_id
FROM t_samplingso_additional_fisik_visus
WHERE
T_SamplingAdditionalFisikVisusT_OrderHeaderID = ? LIMIT 1";
$qry = $this->db_smartone->query($sql, array($orderID));
if (!$qry) {
$prm_log = ['SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_VISUS', 'genkelainan/visus'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_VISUS";
}
$row_result = $qry->row_array();
//echo $this->db_smartone->last_query();
if ($row_result && intval($row_result['visus_id']) > 0) {
$visus = array();
$visus_kiri = "";
$visus_kanan = "";
$visus_kesimpulan = "";
$normal = array("20/20", "20/25", "6/6", "6/7.5", "6/7,5");
$miopia_od = false;
$miopia_os = false;
$miopia_od_value = '';
$miopia_os_value = '';
$astigmatismus_od = false;
$astigmatismus_os = false;
$astigmatismus_od_value = '';
$astigmatismus_os_value = '';
$presbiopia_ods = false;
$presbiopia_ods_value = '';
$x_od = false;
$x_os = false;
$x_od_value = "";
$x_os_value = "";
$od_visus = "20/20";
$os_visus = "20/20";
if ($row_result['T_SamplingAdditionalFisikVisusTKODV'] == '6/7,5' || $row_result['T_SamplingAdditionalFisikVisusTKODV'] == '6/6' || $row_result['T_SamplingAdditionalFisikVisusTKODV'] == '6/7.5')
$od_visus = $row_result['T_SamplingAdditionalFisikVisusTKODV'];
if ($row_result['T_SamplingAdditionalFisikVisusTKOSV'] == '6/7,5' || $row_result['T_SamplingAdditionalFisikVisusTKOSV'] == '6/6' || $row_result['T_SamplingAdditionalFisikVisusTKOSV'] == '6/7.5')
$os_visus = $row_result['T_SamplingAdditionalFisikVisusTKOSV'];
if ((strtolower($row_result['T_SamplingAdditionalFisikVisusTKODV']) != "normal" && $row_result['T_SamplingAdditionalFisikVisusTKODV'] != "" && $row_result['T_SamplingAdditionalFisikVisusTKODV'] != "-") && ($row_result['T_SamplingAdditionalFisikVisusTKOSV'] != "" && $row_result['T_SamplingAdditionalFisikVisusTKOSV'] != "-" && strtolower($row_result['T_SamplingAdditionalFisikVisusTKODV']) != "normal" && strtolower($row_result['T_SamplingAdditionalFisikVisusTKOSV']) != "normal")) {
$visus[] = array(
"xx1" => "Tanpa Kacamata",
"xx2" => "OD : ",
"xx3" => $row_result['T_SamplingAdditionalFisikVisusTKODV']
);
$visus[] = array(
"xx1" => "Tanpa Kacamata",
"xx2" => "OS",
"xx3" => $row_result['T_SamplingAdditionalFisikVisusTKOSV']
);
$rst['kelainan'] = "Kelainan refraksi (tanpa kacamata)";
if (!in_array($row_result['T_SamplingAdditionalFisikVisusTKODV'], $normal)) {
$value_koreksi_od = "";
$od_sph = $row_result['T_SamplingAdditionalFisikVisusODSPH'];
if ($od_sph != "" && $od_sph != "-" && $od_sph != "--" && $od_sph != "/-" && $od_sph != "/" && $od_sph != "-/" && strtolower(trim($od_sph)) != 'plano') {
if ($visus_kanan != "")
$visus_kanan .= ", ";
$visus_kanan .= $od_sph . " (Miopia)";
$miopia_od = true;
$miopia_od_value = $od_sph;
}
$od_cyl = $row_result['T_SamplingAdditionalFisikVisusODCYL'];
//$od_cyl = $row_result['T_SamplingAdditionalFisikVisusODCYL'];
if ($od_cyl != "" && $od_cyl != "-" && $od_cyl != "--" && $od_cyl != "/-" && $od_cyl != "/" && $od_cyl != "-/") {
if ($visus_kanan != "")
$visus_kanan .= ", ";
$visus_kanan .= "Cyl " . $od_cyl;
$astigmatismus_od = true;
$astigmatismus_od_value = $od_cyl;
}
$od_x = $row_result['T_SamplingAdditionalFisikVisusODX'];
//echo $od_x;
if ($od_x != "" && $od_x != "-" && $od_x != "--" && $od_x != "/-" && $od_x != "/" && $od_x != "-/") {
$visus_kanan .= " axis " . $od_x . " (Astigmatismus)";
$x_od = true;
$x_od = $od_x;
}
else {
if ($od_cyl != "" && $od_cyl != "-" && $od_cyl != "--" && $od_cyl != "/-" && $od_cyl != "/" && $od_cyl != "-/")
$visus_kanan .= " (Astigmatismus)";
}
//$value_koreksi_od .= "X (".$od_x.") ";
}
if (!in_array($row_result['T_SamplingAdditionalFisikVisusTKOSV'], $normal)) {
$value_koreksi_os = "";
$os_sph = $row_result['T_SamplingAdditionalFisikVisusOSSPH'];
if (strtolower(trim($os_sph)) != "tidak terkoreksi" && strtolower(trim($os_sph)) != "tidak dapat dinilai" && $os_sph != "" && $os_sph != "-" && $os_sph != "--" && $os_sph != "/-" && $os_sph != "/" && $os_sph != "-/" && strtolower(trim($os_sph)) != 'plano') {
if ($visus_kiri != "")
$visus_kiri .= ", ";
$visus_kiri .= $os_sph . " (Miopia)";
$miopia_os = true;
$miopia_os_value = $os_sph;
}
$os_cyl = $row_result['T_SamplingAdditionalFisikVisusOSCYL'];
if (strtolower(trim($os_cyl)) != "tidak terkoreksi" && strtolower(trim($os_cyl)) != "tidak dapat dinilai" && $os_cyl != "" && $os_cyl != "-" && $os_cyl != "--" && $os_cyl != "/-" && $os_cyl != "/" && $os_cyl != "-/") {
if ($visus_kiri != "")
$visus_kiri .= ", ";
$visus_kiri .= "Cyl " . $os_cyl;
$astigmatismus_os = true;
$astigmatismus_os_value = $os_cyl;
}
$os_x = $row_result['T_SamplingAdditionalFisikVisusOSX'];
if (strtolower(trim($os_x)) != "tidak terkoreksi" && strtolower(trim($os_x)) != "tidak dapat dinilai" && $os_x != "" && $os_x != "-" && $os_x != "--" && $os_x != "/-" && $os_x != "/" && $os_x != "-/") {
//if ($visus_kiri != "") $visus_kiri .= ", ";
$visus_kiri .= " axis " . $os_x . " (Astigmatismus)";
$x_os = true;
$x_os = $os_x;
}
else {
if ($os_cyl != "" && $os_cyl != "-")
$visus_kiri .= " (Astigmatismus)";
}
}
}
if ((strtolower($row_result['T_SamplingAdditionalFisikVisusDKODV']) != "normal" && $row_result['T_SamplingAdditionalFisikVisusDKODV'] != "" && $row_result['T_SamplingAdditionalFisikVisusDKODV'] != "-") && ($row_result['T_SamplingAdditionalFisikVisusDKOSV'] != "" && $row_result['T_SamplingAdditionalFisikVisusDKOSV'] != "-" && strtolower($row_result['T_SamplingAdditionalFisikVisusDKODV']) != "normal" && strtolower($row_result['T_SamplingAdditionalFisikVisusDKOSV']) != "normal")) {
$visus[] = array(
"xx1" => "Dengan Kacamata",
"xx2" => "OD : ",
"xx3" => $row_result['T_SamplingAdditionalFisikVisusDKODV']
);
$visus[] = array(
"xx1" => "Dengan Kacamata",
"xx2" => "OS",
"xx3" => $row_result['T_SamplingAdditionalFisikVisusDKOSV']
);
$rst['kelainan'] = "Kelainan refraksi (dengan kacamata)";
$od_visus = $row_result['T_SamplingAdditionalFisikVisusDKODV'];
$os_visus = $row_result['T_SamplingAdditionalFisikVisusDKOSV'];
$value_koreksi_od = "";
$od_sph = $row_result['T_SamplingAdditionalFisikVisusODSPH'];
if (strtolower(trim($od_sph)) != "tidak terkoreksi" && strtolower(trim($od_sph)) != "tidak dapat dinilai" && $od_sph != "" && $od_sph != "-" && $od_sph != "--" && $od_sph != "/-" && $od_sph != "/" && $od_sph != "-/" && strtolower(trim($od_sph)) != 'plano') {
if ($visus_kanan != "")
$visus_kanan .= ", ";
$visus_kanan .= $od_sph . " (Miopia)";
$miopia_od = true;
$miopia_od_value = $od_sph;
}
$od_cyl = $row_result['T_SamplingAdditionalFisikVisusODCYL'];
if (strtolower(trim($od_cyl)) != "tidak terkoreksi" && strtolower(trim($od_cyl)) != "tidak dapat dinilai" && $od_cyl != "" && $od_cyl != "-" && $od_cyl != "--" && $od_cyl != "/-" && $od_cyl != "/" && $od_cyl != "-/") {
if ($visus_kanan != "")
$visus_kanan .= ", ";
$visus_kanan .= "Cyl " . $od_cyl;
$astigmatismus_od = true;
$astigmatismus_od_value = $od_cyl;
}
$od_x = $row_result['T_SamplingAdditionalFisikVisusODX'];
if (strtolower(trim($od_x)) != "tidak terkoreksi" && strtolower(trim($od_x)) != "tidak dapat dinilai" && $od_x != "" && $od_x != "-" && $od_x != "--" && $od_x != "/-" && $od_x != "/" && $od_x != "-/") {
//if ($visus_kanan != "") $visus_kanan .= ", ";
$visus_kanan .= " axis " . $od_x . " (Astigmatismus)";
$x_od = true;
$x_od = $od_x;
}
else {
if ($od_cyl != "" && $od_cyl != "-" && $od_cyl != "--" && $od_cyl != "/-" && $od_cyl != "/" && $od_cyl != "-/")
$visus_kanan .= " (Astigmatismus)";
}
//$value_koreksi_od .= "X (".$od_x.") ";
$value_koreksi_os = "";
$os_sph = $row_result['T_SamplingAdditionalFisikVisusOSSPH'];
if (strtolower(trim($os_sph)) != "tidak terkoreksi" && strtolower(trim($os_sph)) != "tidak dapat dinilai" && $os_sph != "" && $os_sph != "-" && $os_sph != "--" && $os_sph != "/-" && $os_sph != "/" && $os_sph != "-/" && strtolower(trim($os_sph)) != 'plano') {
if ($visus_kiri != "")
$visus_kiri .= ", ";
$visus_kiri .= $os_sph . " (Miopia)";
$miopia_os = true;
$miopia_os_value = $os_sph;
}
$os_cyl = $row_result['T_SamplingAdditionalFisikVisusOSCYL'];
if (strtolower(trim($os_cyl)) != "tidak terkoreksi" && strtolower(trim($os_cyl)) != "tidak dapat dinilai" && $os_cyl != "" && $os_cyl != "-" && $os_cyl != "--" && $os_cyl != "/-" && $os_cyl != "/" && $os_cyl != "-/") {
if ($visus_kiri != "")
$visus_kiri .= ", ";
$visus_kiri .= "Cyl " . $os_cyl;
$astigmatismus_os = true;
$astigmatismus_os_value = $os_cyl;
}
$os_x = $row_result['T_SamplingAdditionalFisikVisusOSX'];
if (strtolower(trim($os_x)) != "tidak terkoreksi" && strtolower(trim($os_x)) != "tidak dapat dinilai" && $os_x != "" && $os_x != "-" && $os_x != "--" && $os_x != "/-" && $os_x != "/" && $os_x != "-/") {
$visus_kiri .= " axis " . $os_x . " (Astigmatismus)";
$x_os = true;
$x_os = $os_x;
}
else {
if ($os_cyl != "" && $os_cyl != "-" && $os_cyl != "--" && $os_cyl != "/-" && $os_cyl != "/" && $os_cyl != "-/")
$visus_kiri .= " (Astigmatismus)";
}
//$value_koreksi_os .= "X (".$os_x.") ";
}
if (($row_result['T_SamplingAdditionalFisikVisusTKODV'] != "" && $row_result['T_SamplingAdditionalFisikVisusTKODV'] != "-") && ($row_result['T_SamplingAdditionalFisikVisusTKOSV'] != "" && $row_result['T_SamplingAdditionalFisikVisusTKOSV'] != "-")) {
if (!in_array($row_result['T_SamplingAdditionalFisikVisusTKODV'], $normal) && $visus_kanan == '') {
$visus_kanan = "Miopia";
$miopia_od = true;
$miopia_od_value = "";
}
if (!in_array($row_result['T_SamplingAdditionalFisikVisusTKOSV'], $normal) && $visus_kiri == '') {
$visus_kiri = "Miopia";
$miopia_os = true;
$miopia_os_value = "";
}
}
if (($row_result['T_SamplingAdditionalFisikVisusDKODV'] != "" && $row_result['T_SamplingAdditionalFisikVisusDKODV'] != "-") && ($row_result['T_SamplingAdditionalFisikVisusDKOSV'] != "" && $row_result['T_SamplingAdditionalFisikVisusDKOSV'] != "-")) {
if (!in_array($row_result['T_SamplingAdditionalFisikVisusDKODV'], $normal) && $visus_kanan == '') {
$visus_kanan = "Miopia";
$miopia_od = true;
$miopia_od_value = "";
}
if (!in_array($row_result['T_SamplingAdditionalFisikVisusDKOSV'], $normal) && $visus_kiri == '') {
$visus_kiri = "Miopia";
$miopia_os = true;
$miopia_os_value = "";
}
}
$od_add = $row_result['T_SamplingAdditionalFisikVisusADD'];
if ($od_add != "" && $od_add != "-" && $od_add != "--" && $od_add != "/-" && $od_add != "/" && $od_add != "-/") {
if ($visus_kanan != "")
$visus_kanan .= ", ";
$visus_kanan .= $od_add . " (Presbiopia)";
if ($visus_kiri != "")
$visus_kiri .= ", ";
$visus_kiri .= $od_add . " (Presbiopia)";
$presbiopia_ods = true;
$presbiopia_ods_value = $od_add;
}
}
$data_insert = array(
'code' => 'visus',
'label' => 'visus',
'note' => $rst['kelainan'],
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus','visus');
if ($miopia_od) {
$data_insert = array(
'code' => 'visus_miopia_od',
'label' => 'visus Miopia OD',
'note' => $miopia_od_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_miopia_od','visus Miopia OD');
}
if ($miopia_os) {
$data_insert = array(
'code' => 'visus_miopia_os',
'label' => 'visus Miopia OS',
'note' => $miopia_os_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_miopia_os','visus Miopia OS');
}
if ($miopia_od) {
$in_value = ["20/30", "20/40"];
$exp_value_od = explode("/", $od_visus);
if (isset($exp_value_od[1]) && intval($exp_value_od[1]) < 50) {
$data_insert = array(
'code' => 'visus_miopia_od_30_40',
'label' => 'visus Miopia OD 20/30 20/40',
'note' => $miopia_od_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_miopia_od_30_40','visus Miopia OD 20/30 20/40');
}
if (isset($exp_value_od[1]) && intval($exp_value_od[1]) > 50) {
$data_insert = array(
'code' => 'visus_miopia_od_over_50',
'label' => 'visus Miopia OD > 20/50',
'note' => $miopia_od_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_miopia_ods_over_50','visus Miopia ODS > 20/50');
}
}
if ($miopia_os) {
$in_value = ["20/30", "20/40"];
$exp_value_os = explode("/", $os_visus);
//print_r($exp_value_os);
if (isset($exp_value_os[1]) && intval($exp_value_os[1]) < 50) {
$data_insert = array(
'code' => 'visus_miopia_os_30_40',
'label' => 'visus Miopia OS 20/30 20/40',
'note' => $miopia_os_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_miopia_od_30_40','visus Miopia OD 20/30 20/40');
}
if (isset($exp_value_os[1]) && intval($exp_value_os[1]) > 50) {
$data_insert = array(
'code' => 'visus_miopia_os_over_50',
'label' => 'visus Miopia OS > 20/50',
'note' => $miopia_os_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_miopia_ods_over_50','visus Miopia ODS > 20/50');
}
}
if ($astigmatismus_od) {
$data_insert = array(
'code' => 'visus_astigmatismus_od',
'label' => 'visus Astigmatismus OD',
'note' => $astigmatismus_od_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_astigmatismus_od','visus Astigmatismus OD');
}
if ($astigmatismus_os) {
$data_insert = array(
'code' => 'visus_astigmatismus_os',
'label' => 'visus Astigmatismus OS',
'note' => $astigmatismus_os_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_astigmatismus_os','visus Astigmatismus OS');
}
if ($astigmatismus_od && $astigmatismus_os) {
$data_insert = array(
'code' => 'visus_astigmatismus_ods',
'label' => 'visus Astigmatismus ODS',
'note' => $astigmatismus_os_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_astigmatismus_ods','visus Astigmatismus ODS');
}
if ($x_od) {
$data_insert = array(
'code' => 'visus_x_od',
'label' => 'visus X OD',
'note' => $x_od_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_x_od','visus X OD');
}
if ($x_os) {
$data_insert = array(
'code' => 'visus_x_os',
'label' => 'visus X OS',
'note' => $x_od_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_x_os','visus X OS');
}
if ($presbiopia_ods) {
$data_insert = array(
'code' => 'visus_presbiopia_ods',
'label' => 'visus Presbiopia ODS',
'note' => $presbiopia_ods_value,
'segment' => 'visus',
'category' => 'mata',
'order_id' => $orderID
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('visus_presbiopia_ods','visus Presbiopia ODS');
}
return $errors;
}
function keluhan($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'fisik_keluhan'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/keluhan'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'fisik_keluhan',
'category' => ''
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']);
}
}
return $errors;
}
function riwayat_penyakit($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'fisik_penyakit'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/riwayat_penyakit'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $value['segment_name'],
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$value['segment_name']);
}
}
}
return $errors;
}
function penyakit_keluarga($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'fisik_penyakitkeluarga'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/penyakit_keluarga'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
$results = [];
$options = $value['options'];
foreach ($options as $ko => $vo) {
if ($vo['selected'] == '1')
$results[] = $vo['label'];
}
if (count($results) > 0) {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => join(", ", $results),
'segment' => $value['table_name'],
'category' => $value['table_name'],
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']);
}
}
return $errors;
}
function kebiasaan_hidup($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'fisik_kebiasaanhidup'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $value['segment_name'],
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$value['segment_name']);
}
}
}
return $errors;
}
function fisik_konsumsiobatteratur($id, $userid)
{
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'fisik_konsumsiobatteratur'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/fisik_konsumsiobatteratur'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $value['table_name'],
'category' => $value['table_name']
);
$this->insert_data_etl($data_insert, $userid);
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']);
}
}
return $errors;
}
function imunasi($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'fisik_riwayatimunisasi'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/imunasi'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $value['segment_name'],
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$value['segment_name']);
}
}
}
return $errors;
}
function vital_sign($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'tanda_vital'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/vital_sign'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
//return $datas;
//exit;
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['id_code'] == 'tanda_vital_5') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'] . '_1',
'label' => $value['label_x'],
'note' => $value['value_x'],
'segment' => 'tekanan_darah',
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code($value['id_code'].'_1',$value['label_x']);
$rst[] = $data_insert;
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'] . '_2',
'label' => $value['label_y'],
'note' => $value['value_y'],
'segment' => 'tekanan_darah',
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code($value['id_code'].'_2',$value['label_y']);
$rst[] = $data_insert;
$data_insert = array(
'order_id' => $order_header_id,
'code' => 'tekanan_darah_conclusion',
'label' => $value['standart'],
'note' => $value['value'],
'segment' => 'tekanan_darah',
'category' => $value['table_name']
);
//echo 'tekanan_darah_conclusion: '.$value['value'];
//exit;
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code('tekanan_darah_conclusion',$value['label_y']);
$rst[] = $data_insert;
}
if ($value['id_code'] == 'tanda_vital_6') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['chx_y'] == '1' ? $value['label_y'] : $value['label_x'],
'note' => $value['value'],
'segment' => 'suhu',
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code($value['id_code'],'Suhu');
$rst[] = $data_insert;
}
if ($value['id_code'] == 'tanda_vital_1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'denyut_nadi',
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code($value['id_code'],$value['label']);
$rst[] = $data_insert;
}
if ($value['id_code'] == 'tanda_vital_2') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['chx_y'] == '1' ? $value['label_y'] : $value['label_x'],
'note' => $value['value'],
'segment' => 'ritme_denyut_nadi',
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code($value['id_code'],'Denyut Nadi');
$rst[] = $data_insert;
}
if ($value['id_code'] == 'tanda_vital_3') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'laju_pernafasan',
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code($value['id_code'],$value['label']);
$rst[] = $data_insert;
}
if ($value['id_code'] == 'tanda_vital_4') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['chx_y'] == '1' ? $value['label_y'] : $value['label_x'],
'note' => $value['value'],
'segment' => 'pola_nafas',
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
//$this->insert_code($value['id_code'],'Pola Nafas');
$rst[] = $data_insert;
}
}
}
//echo json_encode($rst);
//exit;
return $errors;
}
function keadaan_umum($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'keadaan_umum'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/keadaan_umum'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx_x'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'] + '_x',
'label' => $value['label_x'],
'note' => $value['value'],
'segment' => $value['table_name'],
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
}
if ($value['chx_y'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'] . '_y',
'label' => $value['label_y'],
'note' => $value['value'],
'segment' => $value['table_name'],
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
}
////$this->insert_code($value['id_code'],'Keadaan Umum');
$rst[] = $data_insert;
}
}
return $errors;
}
function kepala_wajah($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'kepala_wajah'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/kepala_wajah'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1' && $value['is_normal'] == 'N') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $value['table_name'],
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | '.$value['table_name']);
}
}
return $errors;
}
function mata($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'mata'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/mata'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'mata',
'category' => 'mata'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | Mata");
}
}
return $errors;
}
function lapang_pandang($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'lapang_pandang'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/lapang_pandang'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
$value_data = $details[0];
if ($value_data['chx_x'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => 'lapang_pandang_x',
'label' => $value_data['label_x'],
'note' => $value_data['value'],
'segment' => 'lapang_pandang',
'category' => 'lapang_pandang'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
if ($value_data['chx_y'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => 'lapang_pandang_y',
'label' => $value_data['label_y'],
'note' => $value_data['value'],
'segment' => 'lapang_pandang',
'category' => 'lapang_pandang'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code('lapang_pandang_x','Lapang Pandang Tidak Normal');
//$this->insert_code('lapang_pandang_y','Lapang Pandang Normal');
}
return $errors;
}
function telinga($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'telinga'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/telinga'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'telinga',
'category' => 'telinga'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | Telinga');
}
}
return $errors;
}
function hidung($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'hidung'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/hidung'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'hidung',
'category' => 'hidung'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | Hidung');
}
}
return $errors;
}
function gigi($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'gigi'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/gigi'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'gigi',
'category' => 'gigi'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | Gigi');
}
}
return $errors;
}
function mulut($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'mukosa_rongga_mulut'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/mulut'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
//echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
//print_r($header_details);
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
$segment = strtolower(str_replace(" ", "_", $value['segment_name']));
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$segment);
}
}
}
return $errors;
}
function leher($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'leher'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/leher'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'leher',
'category' => 'leher'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | Leher');
}
}
return $errors;
}
function thorax($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'thorax'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/thorax'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'thorax',
'category' => 'thorax'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | Thorax');
}
}
return $errors;
}
function paru($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'paru'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/paru'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'paru',
'category' => 'paru'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | Paru');
}
}
return $errors;
}
function jantung($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'jantung'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/jantung'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
//echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
//print_r($header_details);
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
$segment = strtolower(str_replace(" ", "_", str_replace("/", "", $value['segment_name'])));
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$segment);
}
}
}
return $errors;
}
function perut($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'perut'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/perut'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
//echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
//print_r($header_details);
foreach ($header_details as $k => $v) {
if ($v['name'] != 'Hernia' && $v['name'] != 'Pengukuran') {
$details = $v['details'];
foreach ($details as $key => $value) {
$segment = strtolower(str_replace(" ", "_", $v['name']));
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$segment);
}
}
if ($v['name'] == 'Hernia') {
$details = $v['details'];
foreach ($details as $key => $value) {
if ($value['id_code'] == 'perut_13') {
if ($value['chx'] == '1') {
$segment = strtolower(str_replace(" ", "_", $v['name']));
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | Hernia '.$segment);
}
if ($value['id_code'] == 'perut_14') {
$segment = strtolower(str_replace(" ", "_", $v['name']));
if ($value['chx'] == '1') {
$child_details = $value['details'];
foreach ($child_details as $kx => $vx) {
if ($vx['id_code'] == 'perut_14_1') {
if ($vx['chx_value'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $vx['id_code'],
'label' => $vx['label'],
'note' => '',
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | Hernia '.$segment);
}
if ($vx['id_code'] != 'perut_14_1') {
if ($vx['chx_a_value'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $vx['id_code'] . '_' . $vx['chx_a_label'],
'label' => $vx['label'],
'note' => $vx['chx_a_label'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
if ($vx['chx_b_value'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $vx['id_code'] . '_' . $vx['chx_b_label'],
'label' => $vx['label'],
'note' => $vx['chx_b_label'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($vx['id_code'].'_'.$vx['chx_a_label'],$value['label'].' | Hernia '.$segment);
//$this->insert_code($vx['id_code'].'_'.$vx['chx_b_label'],$value['label'].' | Hernia '.$segment);
}
}
}
//$this->insert_code($value['id_code'],$value['label']);
}
}
}
if ($v['name'] == 'Hernia') {
$details = $v['details'];
}
}
}
return $errors;
}
function sistem_integumen($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'sistem_integumen'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/sistem_integumen'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
//echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
//print_r($header_details);
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
$segment = strtolower(str_replace(" ", "_", $value['segment_name']));
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$segment);
}
}
}
return $errors;
}
function genitourinaria($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'genitourinaria'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/genitourinaria'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => 'genitourinaria',
'category' => 'genitourinaria'
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' Genitourinaria');
}
}
return $errors;
}
function anggota_gerak($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'anggota_gerak'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/anggota_gerak'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
//echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
//print_r($header_details);
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$segment = strtolower(str_replace(" ", "_", str_replace("/", "", $value['segment_name'])));
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$segment);
}
}
}
return $errors;
}
function sistem_persyarafan($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'sistem_persyarafan'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/sistem_persyarafan'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
//echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
//print_r($header_details);
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$segment = strtolower(str_replace(" ", "_", str_replace("&", "", $value['segment_name'])));
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$segment);
}
}
}
return $errors;
}
function smell_test($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'smell_test'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/smell_test'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
//echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
//print_r($header_details);
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$segment = strtolower(str_replace(" ", "_", $value['segment_name']));
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$segment);
}
}
}
return $errors;
}
function low_back_pain_screening_test($id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
FisikTemplateTableName = 'low_back_pain_screening_test'
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/low_back_pain_screening_test'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
//echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$header_details = $valdata['details'];
//print_r($header_details);
foreach ($header_details as $k => $v) {
$details = $v['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$segment = strtolower(str_replace(" ", "_", $value['segment_name']));
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => $value['value'],
'segment' => $segment,
'category' => $value['table_name']
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label']." | ".$segment);
}
}
}
return $errors;
}
function k3($type, $id, $userid)
{
$errors = [];
$rst = [];
$sql = "SELECT *
FROM fisik_template
JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND
`FisikTemplateType` = 'k3' AND
FisikTemplateTableName = ?
ORDER BY FisikTemplateCode ASC
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($id, $type));
if (!$qry) {
$prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/k3'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id]));
$errors[] = "SELECT_FISIK_TEMPLATE";
}
// echo $this->db_smartone->last_query();
$datas = $qry->result_array();
if ($datas && count($datas) > 0) {
$order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID'];
$valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true);
$details = $valdata['details'];
foreach ($details as $key => $value) {
if ($value['chx'] == '1') {
$data_insert = array(
'order_id' => $order_header_id,
'code' => $value['id_code'],
'label' => $value['label'],
'note' => '',
'segment' => $type,
'category' => $type
);
$errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid));
$rst[] = $data_insert;
}
//$this->insert_code($value['id_code'],$value['label'].' | '.$type);
}
}
return $errors;
}
function loop_k3($id, $userid)
{
$errors = [];
$rspn = [];
$arr = ['faktor_fisik', 'faktor_kimia', 'faktor_biologi', 'faktor_ergonomi', 'faktor_psikologi'];
foreach ($arr as $key => $value) {
$rtn = $this->k3($value, $id, $userid);
if (count($rtn) > 0)
$errors = array_merge($errors, $rtn);
}
return $errors;
}
function generate_summaries($orderID, $userID, $debugID = 0)
{
$errors = [];
$sql = "UPDATE t_kelainan_fisik SET
T_KelainanFiskIsActive = 'N',
T_KelainanFiskDeletedUserID = ? ,
T_KelainanFiskDeleted = NOW()
WHERE
T_KelainanFiskT_OrderHeaderID = ? AND
T_KelainanFiskIsActive = 'Y'";
$query = $this->db_smartone->query($sql, [
$userID,
$orderID
]);
if (!$query) {
$prm_log = ['UPDATE_T_KELAINAN_FISIK', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "UPDATE_T_KELAINAN_FISIK";
}
$kelainanrst = [];
$sql = "SELECT *
FROM mcu_fisiksummary
JOIN mcu_kelainan ON Mcu_kelainanID = Mcu_FisikSummaryMcu_KelainanID
WHERE Mcu_FisikSummaryIsActive = 'Y'";
$query = $this->db_smartone->query($sql);
if (!$query) {
$prm_log = ['SELECT_MCU_FISIKSUMMARY', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_MCU_FISIKSUMMARY";
}
$rumus_summaries = $query->result_array();
foreach ($rumus_summaries as $key => $value) {
$results = [];
$sql = "SELECT *
FROM mcu_fisiksummarydetail
WHERE
Mcu_FisikSummaryDetailMcu_FisikSummaryID = ? AND
Mcu_FisikSummaryDetailIsActive = 'Y'";
$query = $this->db_smartone->query($sql, [$value['Mcu_FisikSummaryID']]);
if (!$query) {
$prm_log = ['SELECT_MCU_FISIKSUMMARYDETAIL', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_MCU_FISIKSUMMARYDETAIL";
}
$details = $query->result_array();
foreach ($details as $k => $v) {
if ($v['Mcu_FisikSummaryDetailType'] == 'VK') {
$sql = "SELECT *
FROM mcu_fisikvalue
WHERE
Mcu_FisikValueT_OrderHeaderID = ? AND
Mcu_FisikValueIsActive = 'Y' AND
Mcu_FisikValueCode = ? AND
Mcu_FisikValueNote = ?";
$query = $this->db_smartone->query($sql, [$orderID, $v['Mcu_FisikSummaryDetailCode'], $value['Mcu_KelainanName']]);
if (!$query) {
$prm_log = ['SELECT_MCU_FISIKVALUE', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_MCU_FISIKVALUE";
}
$exist_rows = $query->result_array();
$return_x = false;
if (count($exist_rows) > 0) {
$return_x = true;
}
$results[] = $return_x;
}
if ($v['Mcu_FisikSummaryDetailType'] == 'V') {
$sql = "SELECT *
FROM mcu_fisikvalue
JOIN mcu_fisiksummarydetail
ON Mcu_FisikSummaryDetailIsActive = 'Y'
AND Mcu_FisikSummaryDetailCode = Mcu_FisikValueCode
AND Mcu_FisikValueCode = ?
AND Mcu_FisikSummaryDetailType = 'V'
JOIN mcu_fisiksummary
ON Mcu_FisikSummaryDetailMcu_FisikSummaryID = Mcu_FisikSummaryID
AND Mcu_FisikSummaryMcu_KelainanID = ?
WHERE Mcu_FisikValueT_OrderHeaderID = ?
AND Mcu_FisikValueIsActive = 'Y'
AND Mcu_FisikSummaryDetailValue REGEXP CONCAT('(^|, )', TRIM(Mcu_FisikValueNote), '(,|$)')";
$query = $this->db_smartone->query($sql, [$v['Mcu_FisikSummaryDetailCode'], $value['Mcu_KelainanID'], $orderID]);
if (!$query) {
$prm_log = ['SELECT_MCU_FISIKVALUE', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_MCU_FISIKVALUE";
}
if ($value['Mcu_FisikSummaryID'] == $debugID) {
echo $this->db_smartone->last_query();
}
$exist_rows = $query->result_array();
$return_x = false;
if (count($exist_rows) > 0) {
$return_x = true;
}
$results[] = $return_x;
}
if ($v['Mcu_FisikSummaryDetailType'] == 'C') {
$sql = "SELECT *
FROM mcu_fisikvalue
WHERE
Mcu_FisikValueT_OrderHeaderID = ? AND
Mcu_FisikValueIsActive = 'Y' AND
Mcu_FisikValueCode = ?";
$query = $this->db_smartone->query($sql, [$orderID, $v['Mcu_FisikSummaryDetailCode']]);
if (!$query) {
$prm_log = ['SELECT_MCU_FISIKVALUE', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_MCU_FISIKVALUE";
}
if ($value['Mcu_FisikSummaryID'] == $debugID) {
echo $this->db_smartone->last_query();
}
$exist_rows = $query->result_array();
$return_x = false;
if (count($exist_rows) > 0) {
$return_x = true;
}
$results[] = $return_x;
}
}
$is_kelainan = false;
if ($value['Mcu_FisikSummaryType'] == "AND") {
if (!in_array(false, $results))
$is_kelainan = true;
}
if ($value['Mcu_FisikSummaryType'] == "OR") {
if (in_array(true, $results))
$is_kelainan = true;
}
if ($is_kelainan) {
$sql = "INSERT INTO t_kelainan_fisik(
T_KelainanFiskT_OrderHeaderID,
T_KelainanFiskMcu_KelainanID,
T_KelainanFiskMcu_FisikSummaryID,
T_KelainanFiskCreatedUserID,
T_KelainanFiskCreated
) VALUES(?,?,?,?,NOW())";
$query = $this->db_smartone->query($sql, [
$orderID,
$value['Mcu_FisikSummaryMcu_KelainanID'],
$value['Mcu_FisikSummaryID'],
$userID
]);
if (!$query) {
$prm_log = ['INSERT_T_KELAINAN_FISIK', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "INSERT_T_KELAINAN_FISIK";
}
$kelainanrst[] = array(
'id' => $value['Mcu_FisikSummaryMcu_KelainanID'],
'name' => $value['Mcu_KelainanName']
);
}
}
}
function generateKesimpulanSaran($id, $debug = 'N')
{
//get kelainan nonlab
$sql = "SELECT
T_KelainanNonLabID AS kelainanNonlabID,
T_KelainanNonLabT_OrderHeaderID as orderID,
Mcu_KelainanID as kelainanID,
T_KelainanNonLabMcu_SummaryNonlabID As summaryID,
Mcu_KelainanName as kelainanName,
fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng,
'NONLAB' as type
FROM
t_kelainan_nonlab
JOIN mcu_summarynonlab
ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
AND T_KelainanNonLabT_OrderHeaderID = ?
AND T_KelainanNonLabIsActive = 'Y'
JOIN mcu_kelainan
ON Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
AND Mcu_KelainanIsActive = 'Y'
GROUP BY Mcu_KelainanID
";
$query = $this->db_smartone->query($sql, [$id]);
if (!$query) {
$prm_log = ['SELECT_T_KELAINAN_NONLAB', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_T_KELAINAN_NONLAB";
}
$kelainanNonlab = $query->result_array();
//get kelainan lab
$sql = "SELECT
T_KelainanLabID as kelainanLabID,
T_KelainanLabT_OrderHeaderID as orderID,
Mcu_KelainanID as kelainanID,
Mcu_SummaryLabID as summaryID,
Mcu_KelainanName as kelainanName,
fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng,
'LAB' as type
FROM t_kelainan_lab
JOIN mcu_summarylab
ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
AND Mcu_SummaryLabIsActive = 'Y'
AND T_KelainanLabT_OrderHeaderID = ?
JOIN mcu_kelainan
ON Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
AND Mcu_KelainanIsActive = 'Y'
AND T_KelainanLabIsActive = 'Y'
GROUP BY Mcu_KelainanID
";
$query = $this->db_smartone->query($sql, [$id]);
if (!$query) {
$prm_log = ['SELECT_T_KELAINAN_LAB', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_T_KELAINAN_LAB";
}
$kelainanLab = $query->result_array();
//get kelainan fisik
$sql = "SELECT
T_KelainanFiskID as kelainanFisikID,
T_KelainanFiskT_OrderHeaderID orderID,
Mcu_FisikSummaryID summaryID,
Mcu_KelainanID as kelainanID ,
Mcu_KelainanName as kelainanName,
fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng,
'FISIK' as type
FROM t_kelainan_fisik
JOIN mcu_fisiksummary
ON T_KelainanFiskMcu_FisikSummaryID = Mcu_FisikSummaryID
AND Mcu_FisikSummaryIsActive = 'Y'
AND T_KelainanFiskT_OrderHeaderID = ?
AND T_KelainanFiskIsActive = 'Y'
JOIN mcu_kelainan
ON Mcu_FisikSummaryMcu_KelainanID = Mcu_KelainanID
AND Mcu_KelainanIsActive = 'Y'
GROUP BY Mcu_KelainanID
";
$query = $this->db_smartone->query($sql, [$id]);
if (!$query) {
$prm_log = ['SELECT_T_KELAINAN_FISIK', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_T_KELAINAN_FISIK";
}
$kelainanFisik = $query->result_array();
$arrMcuKelainanID = array();
$arrMcuKelainanIDEng = array();
$kesimpulan = "";
$counterKesimpulan = 1;
$conclusion = "";
$counterConclusion = 1;
for ($i = 0; $i < count($kelainanNonlab); $i++) {
$kesimpulan .= "- " . $kelainanNonlab[$i]['kelainanName'] . "\n";
$counterKesimpulan += 1;
array_push($arrMcuKelainanID, $kelainanNonlab[$i]['kelainanID']);
$conclusion .= "- " . $kelainanNonlab[$i]['kelainanNameEng'] . "\n";
$counterConclusion += 1;
array_push($arrMcuKelainanIDEng, $kelainanNonlab[$i]['kelainanNameEng']);
}
for ($i = 0; $i < count($kelainanLab); $i++) {
$kesimpulan .= "- " . $kelainanLab[$i]['kelainanName'] . "\n";
$counterKesimpulan += 1;
array_push($arrMcuKelainanID, $kelainanLab[$i]['kelainanID']);
$conclusion .= "- " . $kelainanLab[$i]['kelainanNameEng'] . "\n";
$counterConclusion += 1;
array_push($arrMcuKelainanIDEng, $kelainanLab[$i]['kelainanNameEng']);
}
for ($i = 0; $i < count($kelainanFisik); $i++) {
$kesimpulan .= "- " . $kelainanFisik[$i]['kelainanName'] . "\n";
$counterKesimpulan += 1;
array_push($arrMcuKelainanID, $kelainanFisik[$i]['kelainanID']);
$conclusion .= "- " . $kelainanFisik[$i]['kelainanNameEng'] . "\n";
$counterConclusion += 1;
array_push($arrMcuKelainanIDEng, $kelainanFisik[$i]['kelainanNameEng']);
}
//get kelainan saran nonlab
$sql = "SELECT
Nat_AdvicekelainanID adviceID,
Nat_AdvicekelainanMcu_KelainanID mcuKelainanID,
Nat_AdviceIna saranIna,
IF(Nat_AdviceEng = '',Nat_AdviceIna, Nat_AdviceEng) saranEng,
fn_get_translate_word_separator_comma(Nat_AdviceIna,2) as translate_eng
FROM nat_advice_kelainan
JOIN nat_advice
ON Nat_AdvicekelainanNat_AdviceID = Nat_AdviceID
AND Nat_AdvicekelainanMcu_KelainanID IN ?
AND Nat_AdviceIsActive = 'Y'
AND Nat_AdvicekelainanIsActive = 'Y'
group by Nat_AdviceIna
";
$query = $this->db_smartone->query($sql, [$arrMcuKelainanID]);
//echo $this->db_smartone->last_query();
if (!$query) {
$prm_log = ['SELECT_NAT_ADVICE_KELAINAN', 'genkelainan/generate_summaries'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID]));
$errors[] = "SELECT_NAT_ADVICE_KELAINAN";
}
$arrSaran = $query->result_array();
if (count($arrSaran) > 0) {
foreach ($arrSaran as $key => $value) {
$adv = $value['saranEng'];
if (trim($adv) == '' || $adv == $value['saranIna']) {
$adv = $value['translate_eng'];
}
$arrSaran[$key]['saranEng'] = $adv;
}
}
$saran = "";
$counterSaran = 1;
$advice = "";
$counterAdvice = 1;
for ($i = 0; $i < count($arrSaran); $i++) {
$saran .= "- " . $arrSaran[$i]['saranIna'] . "\n";
$counterSaran += 1;
$advice .= "- " . $arrSaran[$i]['saranEng'] . "\n";
$counterAdvice += 1;
}
if ($debug == 'Y') {
$this->sys_ok(array(
"kesimpulan" => $kesimpulan,
"saran" => $saran,
"advice" => $advice,
"conclusion" => $conclusion,
));
}
else {
return array(
"kesimpulan" => $kesimpulan,
"saran" => $saran,
"advice" => $advice,
"conclusion" => $conclusion,
);
}
}
function generate_fitness_category($orderID)
{
$sql = " SELECT 'lab' as type,
T_KelainanLabID,
Mcu_KelainanName,
fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as Mcu_KelainanNameEng,
Mcu_FitnessCategoryID,
Mcu_FitnessCategoryName,
Mcu_FitnessCategoryEng,
Mcu_FitnessCategoryLevel,
Nat_TestName
FROM t_kelainan_lab
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
JOIN mcu_kelainan ON Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
JOIN mcu_fitness_category ON Mcu_SummaryLabMcu_FitnessCategoryID = Mcu_FitnessCategoryID
JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID
WHERE
T_KelainanLabT_OrderHeaderID = ? AND
T_KelainanLabIsActive= 'Y'
UNION
SELECT 'nonlab' as type,
T_KelainanNonLabID,
Mcu_KelainanName,
fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as Mcu_KelainanNameEng,
Mcu_FitnessCategoryID,
Mcu_FitnessCategoryName,
Mcu_FitnessCategoryEng,
Mcu_FitnessCategoryLevel,
Nat_TestName
FROM t_kelainan_nonlab
JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID
JOIN mcu_kelainan ON Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
JOIN mcu_fitness_category ON Mcu_SummaryNonlabMcu_FitnessCategoryID = Mcu_FitnessCategoryID
JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID
WHERE
T_KelainanNonLabT_OrderHeaderID = ? AND
T_KelainanNonLabIsActive= 'Y'
UNION
SELECT 'fisik' as type,
T_KelainanFiskID,
Mcu_KelainanName,
fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as Mcu_KelainanNameEng,
Mcu_FitnessCategoryID,
Mcu_FitnessCategoryName,
Mcu_FitnessCategoryEng,
Mcu_FitnessCategoryLevel,
GROUP_CONCAT(CONCAT(Mcu_FisikValueLabel,'|',Mcu_FisikValueSegment,'|',Mcu_FisikValueCategory)) as Nat_TestName
FROM t_kelainan_fisik
JOIN mcu_fisiksummary ON T_KelainanFiskMcu_FisikSummaryID = Mcu_FisikSummaryID
JOIN mcu_kelainan ON Mcu_FisikSummaryMcu_KelainanID = Mcu_KelainanID
JOIN mcu_fitness_category ON Mcu_FisikSummaryMcu_FitnessCategoryID = Mcu_FitnessCategoryID
JOIN mcu_fisiksummarydetail ON Mcu_FisikSummaryDetailMcu_FisikSummaryID = Mcu_FisikSummaryID AND
Mcu_FisikSummaryDetailIsActive = 'Y'
JOIN mcu_fisikvalue ON Mcu_FisikValueT_OrderHeaderID = T_KelainanFiskT_OrderHeaderID AND
Mcu_FisikSummaryDetailCode = Mcu_FisikValueCode AND Mcu_FisikValueIsActive = 'Y'
WHERE
T_KelainanFiskT_OrderHeaderID = ? AND
T_KelainanFiskIsActive = 'Y'
GROUP BY T_KelainanFiskID";
$query = $this->db_smartone->query($sql, array($orderID, $orderID, $orderID));
//echo $this->db_smartone->last_query();
$rtn = $query->result_array();
$status = array("id" => "1", "name" => "BAIK", "name_eng" => "FIT FOR WORK", "level" => "1");
if (count($rtn) > 0) {
$max = 0;
foreach ($rtn as $key => $value) {
if (intval($value['Mcu_FitnessCategoryLevel']) > $max) {
$max = intval($value['Mcu_FitnessCategoryLevel']);
$status = array("id" => $value['Mcu_FitnessCategoryID'], "name" => $value['Mcu_FitnessCategoryName'], "name_eng" => $value['Mcu_FitnessCategoryEng'], "level" => $value['Mcu_FitnessCategoryLevel']);
}
}
}
return array("status" => $status, "data" => $rtn);
}
function translate_word($word, $langid = 1)
{
if ($langid == 1) {
return $word;
}
else {
$sql = "SELECT * FROM translate_word WHERE Translate_WordIsActive = 'Y' AND Translate_WordFrom = '{$word}'";
//echo $sql;
$qry = $this->db_smartone->query($sql);
if (!$qry) {
return $word;
}
$rows = $qry->result_array();
if (count($rows) > 0) {
return $rows[0]["Translate_WordTo"];
}
else {
return $word;
}
}
}
function translate_multiline_text($text, $langid = 1)
{
// Split the text into lines
$lines = explode("\n", $text);
// Translate each line
$translated_lines = array_map(function ($line) use ($langid) {
// Remove the leading "- " and translate the rest
$trimmed_line = ltrim($line, "- ");
return "- " . $this->translate_sentence($trimmed_line, $langid);
}, $lines);
// Join the translated lines back into a multiline string
return implode("\n", $translated_lines);
}
function translate_sentence($sentence, $langid = 1)
{
// Split the sentence into words
$words = preg_split('/[\s-]+/', $sentence);
// Translate each word
$translated_words = array_map(function ($word) use ($langid) {
return $this->translate_word($word, $langid);
}, $words);
// Join the translated words back into a sentence
return implode(' ', $translated_words);
}
function insert_data_etl($data, $userid)
{
$errors = [];
if ($data) {
/*$sql = "UPDATE mcu_fisikvalue SET
Mcu_FisikValueIsActive = 'N',
Mcu_FisikValueLastUpdated = NOW() ,
Mcu_FisikValueLastUpdatedUserID = ?
WHERE
Mcu_FisikValueT_OrderHeaderID = ? AND
Mcu_FisikValueCode = ? AND
Mcu_FisikValueIsActive = 'Y'";
$qry = $this->db_smartone->query($sql,array($userid,$data['order_id'],$data['code']));
if (! $qry) {
return false;
}*/
$sql = "SELECT COUNT(*) as xcount, Mcu_FisikValueID as id
FROM mcu_fisikvalue
WHERE
Mcu_FisikValueT_OrderHeaderID = ? AND
Mcu_FisikValueCode = ?
LIMIT 1
";
$qry = $this->db_smartone->query($sql, array($data['order_id'], $data['code']));
if (!$qry) {
$prm_log = ['SELECT_MCU_FISIKVALUE', 'genkelainan/insert_data_etl'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode($data));
$errors[] = "SELECT_MCU_FISIKVALUE";
}
//echo $this->db_smartone->last_query();
//print_r($data);
//echo $data['code'];
/*if($data['code'] == 'bmi_classification_asia_pacific'){
echo $this->db_smartone->last_query();
}*/
$exist_dt = $qry->row_array();
/*if($data['code'] == 'bmi_classification_asia_pacific'){
print_r($exist_dt);
}*/
if ($exist_dt['xcount'] > 0) {
$sql = "UPDATE mcu_fisikvalue SET
Mcu_FisikValueIsActive = 'Y',
Mcu_FisikValueLastUpdated = NOW() ,
Mcu_FisikValueLastUpdatedUserID = ?,
Mcu_FisikValueLabel = ?,
Mcu_FisikValueNote = ?,
Mcu_FisikValueSegment = ?,
Mcu_FisikValueCategory = ?
WHERE
Mcu_FisikValueID = ?
";
$qry = $this->db_smartone->query($sql, array($userid, $data['label'], $data['note'], $data['segment'], $data['category'], $exist_dt['id']));
if (!$qry) {
$prm_log = ['UPDATE_MCU_FISIKVALUE', 'genkelainan/insert_data_etl'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode($data));
$errors[] = "UPDATE_MCU_FISIKVALUE";
}
}
else {
$sql = "INSERT INTO mcu_fisikvalue (
`Mcu_FisikValueT_OrderHeaderID`,
`Mcu_FisikValueCode`,
`Mcu_FisikValueLabel`,
`Mcu_FisikValueNote`,
`Mcu_FisikValueSegment`,
`Mcu_FisikValueCategory`,
`Mcu_FisikValueCreated`,
`Mcu_FisikValueCreatedUserID`
) VALUES(?,?,?,?,?,?,NOW(),?)";
$qry = $this->db_smartone->query($sql, array(
$data['order_id'],
$data['code'],
$data['label'],
$data['note'],
$data['segment'],
$data['category'],
$userid
));
if (!$qry) {
$prm_log = ['INSERT_MCU_FISIKVALUE', 'genkelainan/insert_data_etl'];
$xsql = $this->db_smartone->last_query();
$log_error = $this->insert_log_error($xsql, $prm_log, json_encode($data));
$errors[] = "INSERT_MCU_FISIKVALUE";
}
}
}
return $errors;
}
function insert_log_error($log_sql, $params, $data = '')
{
// Membersihkan SQL dari \r\n dan whitespace berlebih
//$clean_log_sql = trim(str_replace(["\r\n", "\r", "\n"], ' ', $log_sql));
$sql = "INSERT INTO one_lab_log.error_log(
ErrorLogCode,
ErrorLogName,
ErrorLogDescription,
ErrorLogData,
ErrorLogOrderCreated
)
VALUES(
?,?,?,?,NOW()
)";
$query = $this->db_smartone->query($sql, [$params[0], $params[1], $log_sql, json_encode($data)]);
// echo $this->db_log->last_query();
if (!$query) {
return false;
}
return true;
}
}