Files
BE_CPONE/application/controllers/mockup/result-translate-fisik/Resulttranslate.php
2026-04-27 10:31:17 +07:00

2000 lines
82 KiB
PHP

<?php
class Resulttranslate extends MY_Controller
{
var $db_onedev;
var $load;
var $kesimpulanfisik;
public function index()
{
echo "CPONE RESUME INDIVIDU API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
// $this->load->library("SsPriceMou");
}
public function getsetup()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$user = $this->sys_user;
$branchID = $user['M_BranchID'];
$sql = "SELECT * FROM mgm_mcu WHERE Mgm_McuIsActive = 'Y' AND Mgm_McuM_BranchID IN ({$branchID}, 100)";
$qry = $this->db_onedev->query($sql, []);
if (!$qry) {
$message = $this->db_onedev->error();
$last_qry = $this->db_onedev->last_query();
$message['last_qry'] = $last_qry;
$this->sys_error($message);
exit;
}
$data = $qry->result_array();
$result = [
"records" => $data,
];
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function search()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$user = $this->sys_user;
$branchID = $user['M_BranchID'];
$search = '%' . $prm['search'] . '%';
$page = $prm["page"];
$startDate = $prm["startDate"];
$endDate = $prm["endDate"];
$setupID = $prm["setupID"];
$ROW_PER_PAGE = 20;
$start_offset = 0;
// print_r($prm);
if (isset($prm["page"])) {
if (
is_numeric($prm["page"]) && $prm["page"] > 0
) {
$start_offset = ($page - 1) * $ROW_PER_PAGE;
}
}
$sql = "SELECT
COUNT(T_OrderHeaderID) AS total
FROM t_orderheader
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
AND T_OrderHeaderM_BranchID = {$branchID}
JOIN corporate
ON T_OrderHeaderCorporateID = CorporateID
JOIN m_branch ON T_OrderHeaderM_BranchID = M_BranchID
LEFT JOIN m_title
ON M_PatientM_TitleID = M_TitleID
WHERE (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?)
AND (M_PatientName LIKE ? OR T_OrderHeaderLabNumber LIKE ?)
AND T_OrderHeaderMgm_McuID = ?
AND T_OrderHeaderIsActive = 'Y'
ORDER BY T_OrderHeaderLabNumber
";
$query = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $setupID]);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
$totalPage = $query->row_array()['total'];
$sql = "SELECT
T_OrderHeaderID AS orderID,
IFNULL(Mcu_ResumeStatus, 'NEW') as status,
T_OrderHeaderM_BranchID AS branchID,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS orderDate,
T_OrderHeaderLabNumber AS labNumber,
T_OrderHeaderM_PatientID AS patientID,
T_OrderHeaderCorporateID AS corporateID,
T_OrderHeaderMgm_McuID AS setupID,
UPPER(T_OrderHeaderM_PatientAge) AS patientAge,
M_PatientNoReg AS patientReg,
M_PatientName AS patientName,
UPPER(CONCAT(IF(ISNULL(M_TitleName),'',CONCAT(M_TitleName,'.')),
' ',
IFNULL(M_PatientPrefix,''),
' ',
M_PatientName,
' ',
IFNULL(M_PatientSuffix,''))) AS patientFullname,
CASE
WHEN LOWER(M_PatientGender) = 'male' THEN 'LAKI-LAKI'
WHEN LOWER(M_PatientGender) = 'female' THEN 'PEREMPUAN'
END patientGender,
M_PatientPhoto AS patientFoto,
M_PatientPhotoThumb AS patientFotoThumb,
CorporateCode AS corporateCode,
UPPER(CorporateName) AS corporateName,
M_BranchCode AS branchID,
M_BranchName AS branchName
FROM t_orderheader
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
AND T_OrderHeaderM_BranchID = {$branchID}
JOIN corporate
ON T_OrderHeaderCorporateID = CorporateID
JOIN m_branch ON T_OrderHeaderM_BranchID = M_BranchID
LEFT JOIN m_title
ON M_PatientM_TitleID = M_TitleID
LEFT JOIN mcu_resume
ON T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
AND Mcu_ResumeIsActive = 'Y'
WHERE (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?)
AND (M_PatientName LIKE ? OR T_OrderHeaderLabNumber LIKE ?)
AND T_OrderHeaderMgm_McuID = ?
AND T_OrderHeaderIsActive = 'Y'
ORDER BY T_OrderHeaderLabNumber
LIMIT ? OFFSET ? ";
$query = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $setupID, $ROW_PER_PAGE, $start_offset]);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
// echo $this->db_onedev->last_query();
$result = [
"total" => ceil($totalPage / $ROW_PER_PAGE),
"records" => $query->result_array()
];
$this->sys_ok($result);
}
public function getDetail()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$lang = $prm['lang'];
// GET NONLAB & FISIK
$sql = "SELECT
T_OrderDetailT_OrderHeaderID AS orderID,
T_OrderDetailID AS orderDetailID,
T_OrderDetailT_TestID AS testID,
T_OrderDetailT_TestCode AS testCode,
T_OrderDetailT_TestSasCode AS testSasCode,
Group_ResultResumeMcu ,
T_OrderDetailT_TestName AS testName,
T_TestNat_TestID AS natTestID,
So_ResultEntryID as resultEntryID,
So_ResultEntryStatus as resultEntryStatus,
So_ResultEntryNonlab_TemplateID as templateID,
So_ResultEntryNonlab_TemplateName as templateName,
T_OrderHeaderM_PatientID as patientID,
M_PatientOldPID as patientOldID
FROM t_orderdetail
JOIN group_resultdetail
ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID
AND Group_ResultDetailIsActive ='Y'
AND T_OrderDetailT_OrderHeaderID = ?
AND T_OrderDetailIsActive = 'Y'
AND T_OrderDetailT_TestIsResult = 'Y'
JOIN group_result
ON Group_ResultID = Group_ResultDetailGroup_ResultID
AND Group_ResultResumeMcu = 'FISIK'
JOIN t_test
ON T_OrderDetailT_TestID = T_TestID
JOIN so_resultentry
ON T_OrderDetailT_OrderHeaderID = So_ResultEntryT_OrderHeaderID
AND T_OrderDetailID =So_ResultEntryT_OrderDetailID
-- AND So_ResultEntryStatus = 'VAL1'
AND So_ResultEntryIsActive = 'Y'
JOIN t_orderheader
ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
JOIN m_patient
on T_OrderHeaderM_PatientID = M_PatientID
GROUP BY T_TestID;";
$query = $this->db_onedev->query($sql, [$orderid]);
if (!$query) {
echo $this->db_onedev->last_query();
$this->sys_error_db("Error get detail nonlab");
exit;
}
$rstNonlab = $query->result_array();
//pecah nonlab dan fisik
$fisik = array();
for ($i = 0; $i < count($rstNonlab); $i++) {
$data = $rstNonlab[$i];
if (
$data['templateName'] == "Fisik Umum" ||
$data['templateName'] == "Fisik Umum K3" ||
$data['templateName'] == "Fisik Umum Konsul"
) {
$rst = $this->getFisikUmum($data['resultEntryID'], 'N', $lang);
$data['detail'] = $rst['finalResult'];
array_push($fisik, $data);
}
}
//Data Pasien OLD
$sql = "SELECT
REG_NO,
PATIENT_ID,
PATIENT_NAME
FROM t_orderheader
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
AND T_OrderHeaderID = ?
JOIN x_adm_rekap_patient
ON M_PatientOldPID = PATIENT_ID
";
$query = $this->db_onedev->query($sql, [$orderid]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error get detail fisik old organ");
exit;
}
$dataPatientOld = $query->row_array();
//FISIK ORGAN
$sql = "SELECT
T_OrderHeaderID,
M_PatientID,
M_PatientOldPID ,
M_PatientName,
a.REG_NO,
b.REG_NO,
b.telinga,
b.hidung,
b.tenggorokan,
b.rongga_mulut_gigi,
b.jantung,
b.paru,
b.abdomen,
b.ginjal,
b.hernia,
b.kulit,
b.anogenital,
b.extremitas,
b.tulang_belakang,
b.refleks_fisiologis,
b.refleks_patologis,
b.suhu,
b.stage,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Telinga
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Telinga, $lang), '')
ELSE 'xels'
END AS telinga_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Hidung
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Hidung, $lang), '')
ELSE 'xels'
END AS hidung_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Tenggorokan
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Tenggorokan, $lang), '')
ELSE 'xels'
END AS tenggorokan_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Rongga_Mulut_Gigi
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Rongga_Mulut_Gigi, $lang), '')
ELSE 'xels'
END AS rongga_mulut_gigi_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Jantung
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Jantung, $lang), '')
ELSE 'xels'
END AS jantung_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Paru
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Paru, $lang), '')
ELSE 'xels'
END AS paru_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Abdomen
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Abdomen, $lang), '')
ELSE 'xels'
END AS abdomen_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Ginjal
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Ginjal, $lang), '')
ELSE 'xels'
END AS ginjal_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Hernia
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Hernia, $lang), '')
ELSE 'xels'
END AS hernia_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Kulit
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Kulit, $lang), '')
ELSE 'xels'
END AS kulit_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Anogenital
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Anogenital, $lang), '')
ELSE 'xels'
END AS anogenital_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Extremitas
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Extremitas, $lang), '')
ELSE 'xels'
END AS extremitas_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Tulang_belakang
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Tulang_belakang, $lang), '')
ELSE 'xels'
END AS tulang_belakang_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Refleks_Fisiologis
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Refleks_Fisiologis, $lang), '')
ELSE 'xels'
END AS refleks_fisiologis_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Refleks_Patologis
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Refleks_Patologis, $lang), '')
ELSE 'xels'
END AS refleks_patologis_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Suhu
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Suhu, $lang), '')
ELSE 'xels'
END AS suhu_eng
FROM t_orderheader
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
AND T_OrderHeaderID = ?
JOIN x_adm_rekap_patient a
ON M_PatientOldPID = PATIENT_ID
JOIN x_adm_rekap_fisik_organ b
ON a.REG_NO = b.REG_NO
LEFT JOIN x_adm_rekap_fisik_organ_translate c
ON a.REG_NO = c.REG_NO ";
$query = $this->db_onedev->query($sql, [$orderid]);
if (!$query) {
$this->sys_error_db("Error get detail fisik old organ");
exit;
}
// echo $this->db_onedev->last_query();
$rstFisikOrgan = $query->row_array();
// Initialize result array
$resultFisikOrgan = [];
// List of base field names (without _eng suffix)
$baseFields = [
'telinga',
'hidung',
'tenggorokan',
'rongga_mulut_gigi',
'jantung',
'paru',
'abdomen',
'ginjal',
'hernia',
'kulit',
'anogenital',
'extremitas',
'tulang_belakang',
'refleks_fisiologis',
'refleks_patologis',
'suhu',
];
// Create paired arrays
foreach ($baseFields as $field) {
$engField = $field . '_eng';
if (isset($rstFisikOrgan[$field]) || isset($rstFisikOrgan[$engField])) {
$resultFisikOrgan[] = [
"name" => ucfirst(str_replace('_', ' ', $field)), // Menghilangkan underscore di name
"field" => $field,
'result' => $rstFisikOrgan[$field] ?? '',
'resultEng' => $rstFisikOrgan[$engField] ?? ''
];
}
}
$sql = "SELECT
T_OrderHeaderID,
M_PatientID,
M_PatientOldPID ,
M_PatientName,
a.REG_NO,
b.REG_NO,
b.`Hepar (USG ABDOMEN)` as hepar,
b.`V. Fellea ( USG ABDOMEN)` as fellea,
b.`Pancreas (USG ABDOMEN)` as pancreas,
b.`Lien (USG ABDOMEN)` as lien,
b.`Right Kidney (USG ABDOMEN)` as right_Kidney,
b.`Left Kidney (USG ABDOMEN)` as left_Kidney,
b.`Buli-Buli (USG ABDOMEN)` as builiBuli,
b.`Prostat (USG ABDOMEN)` as prostat,
b.`Uterus dan Adnexa (USG ABDOMEN)` as uterus,
b.`Kesan (USG ABDOMEN)` as kesan,
b.`SARAN (USG ABDOMEN)` as saran,
b.`Appendix (USG ABDOMEN)` as appendix,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Hepar (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma( b.`Hepar (USG ABDOMEN)`, $lang), '')
ELSE 'xels'
END hepar_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`V. Fellea ( USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`V. Fellea ( USG ABDOMEN)`, $lang), '')
END as fellea_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Pancreas (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Pancreas (USG ABDOMEN)`, $lang), '')
END as pancreas_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Lien (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Lien (USG ABDOMEN)`, $lang), '')
END as lien_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Right Kidney (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Right Kidney (USG ABDOMEN)`, $lang), '')
END as right_Kidney_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Left Kidney (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Left Kidney (USG ABDOMEN)`, $lang), '')
END as left_Kidney_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Buli-Buli (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Buli-Buli (USG ABDOMEN)`, $lang), '')
END as builiBuli_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Prostat (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Prostat (USG ABDOMEN)`, $lang), '')
END as prostat_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Uterus dan Adnexa (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Uterus dan Adnexa (USG ABDOMEN)`, $lang), '')
END as uterus_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Kesan (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Kesan (USG ABDOMEN)`, $lang), '')
END as kesan_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`SARAN (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`SARAN (USG ABDOMEN)`, $lang), '')
END as saran_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.`Appendix (USG ABDOMEN)`
WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Appendix (USG ABDOMEN)`, $lang), '')
END as appendix_eng
FROM t_orderheader
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
AND T_OrderHeaderID = ?
JOIN x_adm_rekap_patient a
ON M_PatientOldPID = PATIENT_ID
JOIN x_adm_rekap_fisik_usg b
ON a.REG_NO = b.REG_NO
LEFT JOIN x_adm_rekap_fisik_usg_translate c
ON a.REG_NO = c.REG_NO";
$query = $this->db_onedev->query($sql, [$orderid]);
if (!$query) {
echo $this->db_onedev->last_query();
$this->sys_error_db("Error get detail fisik old usg");
exit;
}
$rstFisikUsg = $query->row_array();
// List of base field names (without _eng suffix)
$baseFieldsUsg = [
"hepar",
"fellea",
"pancreas",
"lien",
"right_Kidney",
"left_Kidney",
"builiBuli",
"prostat",
"uterus",
"kesan",
"saran",
"appendix",
];
$resultFisikUsg = [];
foreach ($baseFieldsUsg as $field) {
$engField = $field . '_eng';
if (isset($rstFisikUsg[$field]) || isset($rstFisikUsg[$engField])) {
$resultFisikUsg[] = [
"name" => ucfirst(str_replace('_', ' ', $field)), // Menghilangkan underscore di name
"field" => $field,
'result' => $rstFisikUsg[$field] ?? '',
'resultEng' => $rstFisikUsg[$engField] ?? ''
];
}
}
$sql = "SELECT
T_OrderHeaderID,
M_PatientID,
M_PatientOldPID ,
M_PatientName,
a.REG_NO,
b.REG_NO,
b.tb,
b.bb,
b.bmi,
b.sistolik,
b.diastolik,
b.nadi,
b.frekuensi,
b.visus_kanan,
b.visus_kiri,
b.kenal_warna,
b.lapang_pandang,
b.konjuktiva_sklera,
b.suhu,
b.stage,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.TB
WHEN c.REG_NO IS NULL THEN b.TB
ELSE 'xels'
END tb_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.BB
WHEN c.REG_NO IS NULL THEN b.BB
ELSE 'xels'
END AS bb_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.BMI
WHEN c.REG_NO IS NULL THEN b.BMI
ELSE 'xels'
END AS bmi_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Sistolik
WHEN c.REG_NO IS NULL THEN b.Sistolik
ELSE 'xels'
END AS sistolik_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Diastolik
WHEN c.REG_NO IS NULL THEN b.Diastolik
ELSE 'xels'
END AS diastolik_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Nadi
WHEN c.REG_NO IS NULL THEN b.Nadi
ELSE 'xels'
END AS nadi_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Frekuensi
WHEN c.REG_NO IS NULL THEN b.Frekuensi
ELSE 'xels'
END AS frekuensi_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Visus_Kanan
WHEN c.REG_NO IS NULL THEN b.Visus_Kanan
ELSE 'xels'
END AS visus_kanan_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Visus_Kiri
WHEN c.REG_NO IS NULL THEN b.Visus_Kiri
ELSE 'xels'
END AS visus_kiri_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Kenal_Warna
WHEN c.REG_NO IS NULL THEN b.Kenal_Warna
ELSE 'xels'
END AS kenal_warna_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Lapang_Pandang
WHEN c.REG_NO IS NULL THEN b.Lapang_Pandang
ELSE 'xels'
END AS lapang_pandang_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Konjuktiva_Sklera
WHEN c.REG_NO IS NULL THEN b.Konjuktiva_Sklera
ELSE 'xels'
END AS konjuktiva_sklera_eng,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.Suhu
WHEN c.REG_NO IS NULL THEN b.Suhu
ELSE 'xels'
END AS suhu_eng
FROM t_orderheader
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
AND T_OrderHeaderID = ?
JOIN x_adm_rekap_patient a
ON M_PatientOldPID = PATIENT_ID
JOIN x_adm_rekap_fisik_vital b
ON a.REG_NO = b.REG_NO
LEFT JOIN x_adm_rekap_fisik_vital_translate c
ON a.REG_NO = c.REG_NO";
$query = $this->db_onedev->query($sql, [$orderid]);
if (!$query) {
echo $this->db_onedev->last_query();
$this->sys_error_db("Error get detail fisik old usg");
exit;
}
$rstFisikVital = $query->row_array();
// List of base field names (without _eng suffix)
$baseFieldsVital = [
"tb",
"bb",
"bmi",
"sistolik",
"diastolik",
"nadi",
"frekuensi",
"visus_kanan",
"visus_kiri",
"kenal_warna",
"lapang_pandang",
"konjuktiva_sklera",
"suhu",
];
$resultFisikVital = [];
foreach ($baseFieldsVital as $field) {
$engField = $field . '_eng';
if (isset($rstFisikVital[$field]) || isset($rstFisikVital[$engField])) {
$resultFisikVital[] = [
"name" => ucfirst(str_replace('_', ' ', $field)), // Menghilangkan underscore di name
"field" => $field,
'result' => $rstFisikVital[$field] ?? '',
'resultEng' => $rstFisikVital[$engField] ?? ''
];
}
}
$saran = array();
$sql = "SELECT
T_OrderHeaderID,
M_PatientID,
M_PatientOldPID ,
M_PatientName,
a.REG_NO,
b.REG_NO,
b.saran,
CASE
WHEN c.REG_NO IS NOT NULL THEN c.saran
WHEN c.REG_NO IS NULL THEN ''
ELSE ''
END saran_eng
FROM t_orderheader
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
AND T_OrderHeaderID = ?
JOIN x_adm_rekap_patient a
ON M_PatientOldPID = PATIENT_ID
JOIN x_adm_rekap_fisik_saran b
ON a.REG_NO = b.REG_NO
LEFT JOIN x_adm_rekap_fisik_saran_translate c
ON a.REG_NO = c.REG_NO";
$query = $this->db_onedev->query($sql, [$orderid]);
if (!$query) {
echo $this->db_onedev->last_query();
$this->sys_error_db("Error get detail fisik old saran");
exit;
}
$saran = $query->row_array();
$result = array(
'lab' => [],
'nonlab' => [],
'fisik' => $fisik,
'rstNonlab' => $rstNonlab,
'fisikOrgan' => $resultFisikOrgan,
'fisikUsg' => $resultFisikUsg,
'fisikVital' => $resultFisikVital,
'fisikSaran' => $saran,
'dataPatientOld' => $dataPatientOld,
);
$this->sys_ok($result);
}
function getFisikUmum($reID, $debug = 'N', $lang = '1')
{
$rst = [];
$riwayats = [];
$fisiks = [];
$k3s = [];
$sql = "SELECT *
FROM so_resultentry_fisik_umum
JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = {$reID} AND So_ResultEntryFisikUmumIsActive = 'Y'
ORDER BY FisikTemplateCode ASC";
$rows_data = $this->db_onedev->query($sql)->result_array();
// print_r($rows_data);
// echo $sql;
if ($rows_data) {
foreach ($rows_data as $key => $value) {
$data = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE);
$data['reFisikUmumID'] = $value['So_ResultEntryFisikUmumID'];
if ($value['FisikTemplateType'] == 'Riwayat')
$riwayats[] = $data;
if ($value['FisikTemplateType'] == 'Fisik')
$fisiks[] = $data;
if ($value['FisikTemplateType'] == 'K3')
$k3s[] = $data;
}
}
// $reFisikUmumID = $rows_data['So_ResultEntryFisikUmumID'];
$finalResult = [];
foreach ($riwayats as $key => $data) {
if ($data['type_form'] == 'XV') {
foreach ($data['details'] as $key1 => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XO') {
foreach ($data['details'] as $key2 => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XVS') {
foreach ($data['details'] as $key3 => $detail) {
foreach ($detail['details'] as $key4 => $detailData) {
if ($detailData['value'] != '') {
$detailData['reFisikUmumID'] = $data['reFisikUmumID'];
$detailData['title'] = $data['title'];
$finalResult[] = $detailData;
}
}
}
}
if ($data['type_form'] == 'XD') {
foreach ($data['details'] as $key5 => $detail) {
foreach ($detail['details'] as $key6 => $detailData) {
if ($detailData['value'] != '') {
$detailData['reFisikUmumID'] = $data['reFisikUmumID'];
$detailData['title'] = $data['title'];
$finalResult[] = $detailData;
}
}
}
}
}
foreach ($fisiks as $key => $data) {
if ($data['type_form'] == 'VXX+') {
foreach ($data['details'] as $key => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XXV') {
foreach ($data['details'] as $key => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XV') {
foreach ($data['details'] as $key => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XXVWL') {
foreach ($data['details'] as $key => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XVS') {
foreach ($data['details'] as $key => $detail) {
foreach ($detail['details'] as $key => $detailData) {
if ($detailData['value'] != '') {
$detailData['reFisikUmumID'] = $data['reFisikUmumID'];
$detailData['title'] = $data['title'];
$finalResult[] = $detailData;
}
}
}
}
if ($data['type_form'] == 'XVS3R') {
foreach ($data['details'] as $key => $detail) {
foreach ($detail['details'] as $key => $detailData) {
if ($detailData['value'] != '') {
$detailData['reFisikUmumID'] = $data['reFisikUmumID'];
$detailData['title'] = $data['title'];
$finalResult[] = $detailData;
}
}
}
}
}
foreach ($k3s as $key => $data) {
if ($data['type_form'] == 'XVV') {
foreach ($data['details'] as $key => $detail) {
if ($detail['value_sumber'] != '' || $detail['value_sumber'] != '') {
$dtl = $detail;
$dtl['reFisikUmumID'] = $data['reFisikUmumID'];
$dtl['value'] = $detail['value_sumber'] . '|' . $detail['value_sumber'];
$dtl['title'] = $data['title'];
$finalResult[] = $dtl;
}
}
}
if ($data['type_form'] == 'XXV') {
foreach ($data['details'] as $key => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XV') {
foreach ($data['details'] as $key => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XXVWL') {
foreach ($data['details'] as $key => $detail) {
if ($detail['value'] != '') {
$detail['reFisikUmumID'] = $data['reFisikUmumID'];
$detail['title'] = $data['title'];
$finalResult[] = $detail;
}
}
}
if ($data['type_form'] == 'XVS') {
foreach ($data['details'] as $key => $detail) {
foreach ($detail['details'] as $key => $detailData) {
if ($detailData['value'] != '') {
$detailData['reFisikUmumID'] = $data['reFisikUmumID'];
$detailData['title'] = $data['title'];
$finalResult[] = $detailData;
}
}
}
}
if ($data['type_form'] == 'XVS3R') {
foreach ($data['details'] as $key => $detail) {
foreach ($detail['details'] as $key => $detailData) {
if ($detailData['value'] != '') {
$detailData['reFisikUmumID'] = $data['reFisikUmumID'];
$detailData['title'] = $data['title'];
$finalResult[] = $detailData;
}
}
}
}
}
foreach ($finalResult as $key => $value) {
if (property_exists($value, 'segment_name')) {
$sql = "SELECT
So_ResultEntryFisikUmumAiID AS aiTranslateID,
So_ResultEntryFisikUmumAiTranslate AS aiResult,
So_ResultEntryFisikUmumAiConfidence AS aiConfidence
FROM so_resultentry_fisik_umum_ai
WHERE So_ResultEntryFisikUmumAiSo_ResultEntryFisikUmumID = ?
AND So_ResultEntryFisikUmumAiLangID = ?
AND So_ResultEntryFisikUmumAiTableName = ?
AND So_ResultEntryFisikUmumAiSegment = ?
AND So_ResultEntryFisikUmumAiCode = ?
AND So_ResultEntryFisikUmumAiIsActive = 'Y'";
$query = $this->db_onedev->query($sql, [
$value['reFisikUmumID'],
$lang,
$value['table_name'],
$value['segment_name'],
$value['id_code'],
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error get ai fisik umum");
exit;
}
$aiTranslationID = "";
$aiResult = "";
$aiConfidence = "";
$rst = $query->result_array();
if (count($rst) != 0) {
$aiTranslationID = $rst[0]['aiTranslateID'];
$aiResult = $rst[0]['aiResult'];
$aiConfidence = $rst[0]['aiConfidence'];
}
$sql = "SELECT
So_ResultEntryFisikUmumOtherID AS resultTranslateID,
So_ResultEntryFisikUmumOtherTranslate AS displayResult
FROM so_resultentry_fisik_umum_other
WHERE So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID = ?
AND So_ResultEntryFisikUmumOtherLangID = ?
AND So_ResultEntryFisikUmumOtherTableName = ?
AND So_ResultEntryFisikUmumOtherSegment = ?
AND So_ResultEntryFisikUmumOtherCode = ?
AND So_ResultEntryFisikUmumOtherIsActive = 'Y'";
$query = $this->db_onedev->query($sql, [
$value['reFisikUmumID'],
$lang,
$value['table_name'],
$value['segment_name'],
$value['id_code'],
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error get ai fisik umum");
exit;
}
$resultTranslationID = "";
$displayResult = "";
$status = 'Y';
$rst = $query->result_array();
if (count($rst) != 0) {
$resultTranslationID = $rst[0]['resultTranslateID'];
$displayResult = $rst[0]['displayResult'];
}
if ($displayResult == '') {
$displayResult = $aiResult;
$status = 'N';
}
$finalResult[$key]['resultTranslateID'] = $resultTranslationID;
$finalResult[$key]['displayResult'] = $displayResult;
$finalResult[$key]['aiTranslateID'] = $aiTranslationID;
$finalResult[$key]['aiResult'] = $aiResult;
$finalResult[$key]['aiConfidence'] = $aiConfidence;
$finalResult[$key]['status'] = $status;
} else {
$sql = "SELECT
So_ResultEntryFisikUmumAiID AS aiTranslateID,
So_ResultEntryFisikUmumAiTranslate AS aiResult,
So_ResultEntryFisikUmumAiConfidence AS aiConfidence
FROM so_resultentry_fisik_umum_ai
WHERE So_ResultEntryFisikUmumAiSo_ResultEntryFisikUmumID = ?
AND So_ResultEntryFisikUmumAiLangID = ?
AND So_ResultEntryFisikUmumAiTableName = ?
AND So_ResultEntryFisikUmumAiCode = ?
AND So_ResultEntryFisikUmumAiIsActive = 'Y'";
$query = $this->db_onedev->query($sql, [
$value['reFisikUmumID'],
$lang,
$value['table_name'],
$value['id_code'],
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error get translate resuly fisik umum");
exit;
}
$aiTranslationID = "";
$aiResult = "";
$aiConfidence = "";
$rst = $query->result_array();
if (count($rst) != 0) {
$aiTranslationID = $rst[0]['aiTranslateID'];
$aiResult = $rst[0]['aiResult'];
$aiConfidence = $rst[0]['aiConfidence'];
}
$sql = "SELECT
So_ResultEntryFisikUmumOtherID AS resultTranslateID,
So_ResultEntryFisikUmumOtherTranslate AS displayResult
FROM so_resultentry_fisik_umum_other
WHERE So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID = ?
AND So_ResultEntryFisikUmumOtherLangID = ?
AND So_ResultEntryFisikUmumOtherTableName = ?
AND So_ResultEntryFisikUmumOtherCode = ?
AND So_ResultEntryFisikUmumOtherIsActive = 'Y'";
$query = $this->db_onedev->query($sql, [
$value['reFisikUmumID'],
$lang,
$value['table_name'],
$value['id_code'],
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error get ai fisik umum");
exit;
}
$resultTranslationID = "";
$displayResult = "";
$status = 'Y';
$rst = $query->result_array();
if (count($rst) != 0) {
$resultTranslationID = $rst[0]['resultTranslateID'];
$displayResult = $rst[0]['displayResult'];
}
if ($displayResult == '') {
$displayResult = $aiResult;
$status = 'N';
}
$finalResult[$key]['resultTranslateID'] = $resultTranslationID;
$finalResult[$key]['displayResult'] = $displayResult;
$finalResult[$key]['aiTranslateID'] = $aiTranslationID;
$finalResult[$key]['aiResult'] = $aiResult;
$finalResult[$key]['aiConfidence'] = $aiConfidence;
$finalResult[$key]['status'] = $status;
}
}
$rst['riwayats'] = $riwayats;
$rst['fisiks'] = $fisiks;
$rst['k3s'] = $k3s;
$rst['finalResult'] = $finalResult;
if ($debug == 'Y') {
$this->sys_ok($rst);
} else {
return $rst;
}
}
public function save()
{
$userid = $this->sys_user["M_UserID"];
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$userid = $this->sys_user["M_UserID"];
$lang = $prm['lang'];
$lab = $prm['lab'];
$sql = "SELECT *
FROM `m_lang`
WHERE `M_LangID` = ?
LIMIT 1";
$query = $this->db_onedev->query($sql, [$lang]);
if (!$query) {
$this->sys_error_db("Error get language");
exit;
}
$language = $query->result_array();
if (count($language) == 0) {
$this->sys_error_db("Bahasa tidak ditemukan");
exit;
}
$dataLang = $language[0];
$logType = "";
$jsonBefore = "";
$sql = "SELECT * FROM t_orderdetaillang WHERE T_OrderDetailLangT_OrderHeaderID = ? AND T_OrderDetailLangNat_LangID = ?";
$query = $this->db_onedev->query($sql, [$orderid, $lang]);
if (!$query) {
$this->sys_error_db("Error log data before");
exit;
}
$rstJsonBefore = $query->result_array();
if (count($rstJsonBefore) == 0) {
$logType = "ADD";
} else {
$logType = "UPDATE";
}
$jsonBefore = json_encode($rstJsonBefore);
for ($i = 0; $i < count($lab); $i++) {
$data = $lab[$i];
$newNormalValue = '';
if ($data['normalValueLangNote'] != '' || $data['normalValueLangNote'] != null) {
$newNormalValue = $data['normalValueLangNote'];
} else if (($data['normalValueNote'] != '' || $data['normalValueLangNote'] != null)) {
$newNormalValue = $data['normalValueNote'];
} else {
$newNormalValue = NULL;
}
$sql = "SELECT *
FROM `nat_testlang`
WHERE `Nat_TestLangNat_TestID` = ?
AND `Nat_testLangIsActive` = 'Y'
AND Nat_TestLangLangID = ?
LIMIT 1";
$query = $this->db_onedev->query($sql, [$data['natTestID'], $lang]);
if (!$query) {
$this->sys_error_db("Error get language");
exit;
}
$natTestLang = $query->row_array();
$sql = "SELECT *
FROM `nat_unitlang`
WHERE `Nat_UnitLangNat_UnitID` = ?
AND `Nat_UnitLangIsActive` = 'Y'
AND `Nat_UnitLangNat_LangID` = ?
LIMIT 1";
$query = $this->db_onedev->query($sql, [$data['natUnitID'], $lang]);
if (!$query) {
$this->sys_error_db("Error get lang unit");
exit;
}
$natUnitLang = $query->row_array();
$unitID = '';
$unitName = '';
if ($data['natUnitID'] != '' && $data['natUnitID'] != null) {
$unitID = $natUnitLang['Nat_UnitLangID'];
$unitName = $natUnitLang['Nat_UnitLangName'];
}
// $sql = "SELECT *
// FROM `nat_unitlang`
// WHERE `Nat_UnitLangNat_UnitID` = ?
// AND `Nat_UnitLangIsActive` = 'Y'
// AND `Nat_UnitLangNat_LangID` = ?
// LIMIT 1";
// $query = $this->db_onedev->query($sql, [$data['natUnitID'], $lang]);
// if (!$query) {
// $this->sys_error_db("Error get lang unit");
// exit;
// }
// $natUnitLang = $query->row_array();
// $unitID = '';
// $unitName = '';
// if ($data['natUnitID'] != '' && $data['natUnitID'] != null) {
// $unitID = $natUnitLang['Nat_UnitLangID'];
// $unitName = $natUnitLang['Nat_UnitLangName'];
// }
$isEdited = 'N';
if (trim($data['displayResult']) != trim($data['aiResult'])) {
$isEdited = 'Y';
}
$sqlCek = "SELECT *
FROM t_orderdetaillang
WHERE T_OrderDetailLangT_OrderDetailID = ?
AND T_OrderDetailLangT_OrderHeaderID = ?
AND T_OrderDetailLangNat_LangID = ?
AND T_OrderDetailLangIsActive = 'Y';";
$queryCek = $this->db_onedev->query($sqlCek, [$data['orderDetailID'], $data['orderID'], $lang]);
if (!$queryCek) {
$this->sys_error_db("Error cek data");
exit;
}
$dataCek = $queryCek->result_array();
// print_r($data);
if (count($dataCek) == 1) {
//UPDATE
$sql = "UPDATE t_orderdetaillang
SET
T_OrderDetailLangIsSI = 'N',
T_OrderDetailLangNat_TestLangID = ?,
T_OrderDetailLangNat_TestLangName = ?,
T_OrderDetailLangNat_UnitLangID = ?,
T_OrderDetailLangNat_UnitLangName = ?,
T_OrderDetailLangResult = ?,
T_OrderDetailLangIsEdited = ?,
T_OrderDetailLangNote = ?,
T_OrderDetailLangFlag = ?,
T_OrderDetailLangNat_NormalValueLangID = ?,
T_OrderDetailLangNat_NormalValueLangNote = ?,
T_OrderDetailLangLastUpdated = CURRENT_TIMESTAMP,
T_OrderDetailLangUserID = ?,
T_OrderDetailLangResultBefore = ?,
T_OrderDetailLangNormalValueDescription = ?
WHERE T_OrderDetailLangT_OrderDetailID = ?
AND T_OrderDetailLangT_OrderHeaderID = ?
AND T_OrderDetailLangNat_LangID = ?;";
$query = $this->db_onedev->query($sql, [
$natTestLang['Nat_TestLangID'],
$natTestLang['Nat_TestLangName'],
$unitID,
$unitName,
$data['displayResult'],
$isEdited,
$data['resultNote'],
$data['resultFlag'],
$data['natNormalvalueID'],
$newNormalValue, // $data['normalValueNote'] || $data['normalValueLangNote'],
$userid,
$data['resultBefore'],
$data['valDesc'],
$data['orderDetailID'],
$data['orderID'],
$lang,
]);
if (!$query) {
$this->sys_error_db("Error update data");
exit;
}
} else {
$sql = "INSERT INTO t_orderdetaillang (
T_OrderDetailLangT_OrderHeaderID,
T_OrderDetailLangT_OrderDetailID,
T_OrderDetailLangNat_LangID,
T_OrderDetailLangIsSI,
T_OrderDetailLangNat_TestLangID,
T_OrderDetailLangNat_TestLangName,
T_OrderDetailLangNat_UnitLangID,
T_OrderDetailLangNat_UnitLangName,
T_OrderDetailLangResult,
T_OrderDetailLangIsEdited,
T_OrderDetailLangNote,
T_OrderDetailLangNat_NormalValueLangID,
T_OrderDetailLangNat_NormalValueLangNote,
T_OrderDetailLangFlag,
T_OrderDetailLangUserID,
T_OrderDetailLangResultBefore,
T_OrderDetailLangNormalValueDescription
) VALUES (
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
)";
$query = $this->db_onedev->query($sql, [
$data['orderID'],
$data['orderDetailID'],
$lang,
'N',
$natTestLang['Nat_TestLangID'],
$natTestLang['Nat_TestLangName'],
$unitID,
$unitName,
$data['displayResult'],
$isEdited,
$data['resultNote'],
$data['natNormalvalueID'],
$newNormalValue, // $data['normalValueNote'] || $data['normalValueLangNote'],
$data['resultFlag'],
$userid,
$data['resultBefore'],
$data['valDesc'],
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error insert data");
exit;
}
}
}
$jsonAfter = "";
$sql = "SELECT * FROM t_orderdetaillang WHERE T_OrderDetailLangT_OrderHeaderID = ? AND T_OrderDetailLangNat_LangID = ?";
$query = $this->db_onedev->query($sql, [$orderid, $lang]);
if (!$query) {
$this->sys_error_db("Error log data After");
exit;
}
$rstJsonAfter = $query->result_array();
$jsonAfter = json_encode($rstJsonAfter);
$sql = "INSERT INTO cpone_log.log_t_orderdetaillang (
Log_T_OrderDetailLangType,
Log_T_OrderDetailLangT_OrderHeaderID,
Log_T_OrderDetailLangLangID,
Log_T_OrderDetailLangPrm,
Log_T_OrderDetailLangJsonBefore,
Log_T_OrderDetailLangJsonAfter,
Log_T_OrderDetailLangUserID,
Log_T_OrderDetailLangCreated
) VALUES (
?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP
);";
$query = $this->db_onedev->query($sql, [
$logType,
$orderid,
$lang,
json_encode($prm),
$jsonBefore,
$jsonAfter,
$userid
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error insert log ");
exit;
}
$this->sys_ok("Success");
}
public function saveNonlab()
{
$userid = $this->sys_user["M_UserID"];
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$userid = $this->sys_user["M_UserID"];
$lang = $prm['lang'];
$nonlab = $prm['nonlab'];
$sql = "SELECT *
FROM `m_lang`
WHERE `M_LangID` = ?
LIMIT 1";
$query = $this->db_onedev->query($sql, [$lang]);
if (!$query) {
$this->sys_error_db("Error get language");
exit;
}
$language = $query->result_array();
if (count($language) == 0) {
$this->sys_error_db("Bahasa tidak ditemukan");
exit;
}
// for ($i = 0; $i < count($nonlab); $i++) {
// $data = $nonlab[$i];
// # code...
// }
$jsonBefore = '';
$sql = "SELECT *
FROM `so_resultentrydetail_other`
WHERE `So_ResultEntryDetailOtherSo_ResultEntryID` = ? AND `So_ResultEntryDetailOtherM_LangID` = ?
";
$query = $this->db_onedev->query($sql, [$nonlab['resultEntryID'], $lang]);
if (!$query) {
$this->sys_error_db("Error log data before");
exit;
}
$rstJsonBefore = $query->result_array();
if (count($rstJsonBefore) == 0) {
$logType = "ADD";
} else {
$logType = "UPDATE";
}
$jsonBefore = json_encode($rstJsonBefore);
for ($i = 0; $i < count($nonlab['detail']); $i++) {
$detail = $nonlab['detail'][$i];
$isEdited = 'N';
if (trim($detail['displayResult']) != trim($detail['aiResult'])) {
$isEdited = 'Y';
}
$sqlCek = "SELECT *
FROM so_resultentrydetail_other
WHERE So_ResultEntryDetailOtherSo_ResultEntryID = ?
AND So_ResultEntryDetailOtherSo_TemplateDetailID = ?
AND So_ResultEntryDetailOtherM_LangID = ?
AND So_ResultEntryDetailOtherIsActive = 'Y';";
$queryCek = $this->db_onedev->query($sqlCek, [$detail['resultEntryID'], $detail['templateDetailLangID'], $lang]);
if (!$queryCek) {
$this->sys_error_db("Error cek data");
exit;
}
$dataCek = $queryCek->result_array();
if (count($dataCek) == 0) {
$sql = "INSERT INTO so_resultentrydetail_other(
So_ResultEntryDetailOtherM_LangID,
So_ResultEntryDetailOtherSo_ResultEntryID,
So_ResultEntryDetailOtherSo_TemplateDetailID,
So_ResultEntryDetailOtherSo_TemplateDetailName,
So_ResultEntryDetailOtherSo_TemplateDetailCode,
So_ResultEntryDetailOtherIsEdited,
So_ResultEntryDetailOtherResult,
So_ResultEntryDetailOtherResultBefore,
So_ResultEntryDetailOtherUserID,
So_ResultEntryDetailOtherCreated)
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())";
$query = $this->db_onedev->query($sql, [
$lang,
$detail['resultEntryID'],
$detail['templateDetailLangID'],
$detail['templateDetailLangName'],
$detail['templateDetailCode'],
$isEdited,
$detail['displayResult'],
$detail['resultBeforeTranslate'],
$userid
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error insert data ");
exit;
}
} else {
$sql = "UPDATE so_resultentrydetail_other
SET So_ResultEntryDetailOtherResult = ?,
So_ResultEntryDetailOtherResultBefore = ?,
So_ResultEntryDetailOtherIsEdited = ?,
So_ResultEntryDetailOtherLastUpdated = NOW(),
So_ResultEntryDetailOtherUserID = ?
WHERE So_ResultEntryDetailOtherSo_ResultEntryID = ?
AND So_ResultEntryDetailOtherSo_TemplateDetailID = ?
AND So_ResultEntryDetailOtherM_LangID = ?";
$query = $this->db_onedev->query($sql, [
$detail['displayResult'],
$detail['resultBeforeTranslate'],
$isEdited,
$userid,
$detail['resultEntryID'],
$detail['templateDetailLangID'],
$lang
]);
if (!$query) {
echo $this->db_onedev->last_query();
$this->sys_error_db("Error update data ");
exit;
}
}
}
$jsonAfter = '';
$sql = "SELECT *
FROM `so_resultentrydetail_other`
WHERE `So_ResultEntryDetailOtherSo_ResultEntryID` = ? AND `So_ResultEntryDetailOtherM_LangID` = ?
";
$query = $this->db_onedev->query($sql, [$nonlab['resultEntryID'], $lang]);
if (!$query) {
$this->sys_error_db("Error log data After");
exit;
}
$rstJsonAfter = $query->result_array();
$jsonAfter = json_encode($rstJsonAfter);
$sql = "INSERT INTO cpone_log.log_resultentrylang (
Log_ResultEntryLangSo_ResultEntryID,
Log_ResultEntryLangType,
Log_ResultEntryLangLangID,
Log_ResultEntryLangPrm,
Log_ResultEntryLangJsonBefore,
Log_ResultEntryLangJsonAfter,
Log_ResultEntryLangUserID,
Log_ResultEntryLangCreated
) VALUES (
?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP
);";
$query = $this->db_onedev->query($sql, [
$nonlab['resultEntryID'],
$logType,
$lang,
json_encode($prm),
$jsonBefore,
$jsonAfter,
$userid
]);
if (!$query) {
$this->sys_error_db("Error insert log data");
exit;
}
$this->sys_ok('Success');
}
public function saveFisikUmum()
{
$userid = $this->sys_user["M_UserID"];
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = $prm['orderid'];
$userid = $this->sys_user["M_UserID"];
$lang = $prm['lang'];
$fisik = $prm['fisik'];
$fisikOrgan = $prm['fisikOrgan'];
$fisikVital = $prm['fisikVital'];
$fisikUsg = $prm['fisikUsg'];
$fisikSaran = $prm['fisikSaran'];
$dataPatientOld = $prm['dataPatientOld'];
$sql = "SELECT *
FROM `m_lang`
WHERE `M_LangID` = ?
LIMIT 1";
$query = $this->db_onedev->query($sql, [$lang]);
if (!$query) {
$this->sys_error_db("Error get language");
exit;
}
$language = $query->result_array();
$sql = "SELECT
So_ResultEntryFisikUmumID,
so_resultentry_fisik_umum_other.*
FROM so_resultentry_fisik_umum
JOIN so_resultentry_fisik_umum_other
ON So_ResultEntryFisikUmumID = So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID
AND So_ResultEntryFisikUmumOtherIsActive = 'Y'
WHERE So_ResultEntryFisikUmumSo_ResultEntryID = ?
AND So_ResultEntryFisikUmumOtherLangID = ?";
$query = $this->db_onedev->query($sql, [
$fisik['resultEntryID'],
$lang
]);
if (!$query) {
$this->sys_error_db("Error get data log before");
exit;
}
$jsonBefore = $query->result_array();
if (count($jsonBefore) == 0) {
$logType = "ADD";
} else {
$logType = "UPDATE";
}
foreach ($fisik['detail'] as $key => $value) {
$segmentName = $value['segment_name'] ?? '';
// echo $value['segment_name'];
// if (property_exists($value, 'segment_name')) {
// $segmentName = $value['segment_name'];
// }
$sql = "SELECT
*
FROM so_resultentry_fisik_umum_other
WHERE So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID = ?
AND So_ResultEntryFisikUmumOtherLangID = ?
AND So_ResultEntryFisikUmumOtherTableName = ?
AND So_ResultEntryFisikUmumOtherSegment = ?
AND So_ResultEntryFisikUmumOtherCode = ?
AND So_ResultEntryFisikUmumOtherIsActive = 'Y'";
$query = $this->db_onedev->query($sql, [
$value['reFisikUmumID'],
$lang,
$value['table_name'],
$segmentName,
$value['id_code'],
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error cek result translate");
exit;
}
$cek = $query->result_array();
if (count($cek) > 0) {
$sql = "UPDATE so_resultentry_fisik_umum_other
SET
So_ResultEntryFisikUmumOtherTranslate = ?, -- Update teks terjemahan
So_ResultEntryFisikUmumOtherLastUpdated = NOW(), -- Update waktu terakhir diperbarui
So_ResultEntryFisikUmumOtherLastUpdatedUserID = $userid -- Update ID pengguna yang terakhir memperbarui
WHERE
So_ResultEntryFisikUmumOtherID = ?; ";
$query = $this->db_onedev->query($sql, [
$value['displayResult'],
$cek[0]['So_ResultEntryFisikUmumOtherID']
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error update translate fisik");
exit;
}
} else {
$sql = "INSERT INTO so_resultentry_fisik_umum_other (
So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID,
So_ResultEntryFisikUmumOtherLangID,
So_ResultEntryFisikUmumOtherTableName,
So_ResultEntryFisikUmumOtherSegment,
So_ResultEntryFisikUmumOtherLabel,
So_ResultEntryFisikUmumOtherCode,
So_ResultEntryFisikUmumOtherTranslate,
So_ResultEntryFisikUmumOtherCreated,
So_ResultEntryFisikUmumOtherCreatedUserID
)
VALUES (
?, -- So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID
?, -- So_ResultEntryFisikUmumOtherLangID
?, -- So_ResultEntryFisikUmumOtherTableName
?, -- So_ResultEntryFisikUmumOtherSegment
?, -- So_ResultEntryFisikUmumOtherLabel
?, -- So_ResultEntryFisikUmumOtherCode
?, -- So_ResultEntryFisikUmumOtherTranslate
NOW(),
$userid
);";
$query = $this->db_onedev->query($sql, [
$value['reFisikUmumID'],
$lang,
$value['table_name'],
$segmentName,
$value['label'],
$value['id_code'],
$value['displayResult'],
]);
if (!$query) {
// echo $this->db_onedev->last_query();
$this->sys_error_db("Error insert translate fisik");
exit;
}
}
}
if (count($fisikOrgan) > 0) {
$this->saveFisikOrgan($fisikOrgan, $dataPatientOld['REG_NO'], $userid, $lang);
}
if (count($fisikUsg) > 0) {
$this->saveFisikUsg($fisikUsg, $dataPatientOld['REG_NO'], $userid, $lang);
}
if (count($fisikVital) > 0) {
$this->saveFisikVital($fisikVital, $dataPatientOld['REG_NO'], $userid, $lang);
}
if (!empty($fisikSaran)) {
$this->saveFisikSaran($fisikSaran, $dataPatientOld['REG_NO'], $userid, $lang);
}
$sql = "SELECT
So_ResultEntryFisikUmumID,
so_resultentry_fisik_umum_other.*
FROM so_resultentry_fisik_umum
JOIN so_resultentry_fisik_umum_other
ON So_ResultEntryFisikUmumID = So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID
AND So_ResultEntryFisikUmumOtherIsActive = 'Y'
WHERE So_ResultEntryFisikUmumSo_ResultEntryID = ?
AND So_ResultEntryFisikUmumOtherLangID = ?";
$query = $this->db_onedev->query($sql, [
$fisik['resultEntryID'],
$lang
]);
if (!$query) {
$this->sys_error_db("Error get data log after");
exit;
}
$jsonAfter = $query->result_array();
$sql = "INSERT INTO cpone_log.log_resultentrylang (
Log_ResultEntryLangSo_ResultEntryID,
Log_ResultEntryLangType,
Log_ResultEntryLangLangID,
Log_ResultEntryLangPrm,
Log_ResultEntryLangJsonBefore,
Log_ResultEntryLangJsonAfter,
Log_ResultEntryLangUserID,
Log_ResultEntryLangCreated
) VALUES (
?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP
);";
$query = $this->db_onedev->query($sql, [
$fisik['resultEntryID'],
$logType,
$lang,
json_encode($prm),
json_encode($jsonBefore),
json_encode($jsonAfter),
$userid
]);
if (!$query) {
$this->sys_error_db("Error insert log data");
exit;
}
$this->sys_ok("OK");
}
function saveFisikOrgan($data, $regNo, $userID, $lang)
{
// if (count($data) > 0) {
// return;
// }
// Initialize result array
// $prm = $this->sys_input;
// $data = $prm['data'];
// $regNo = $prm['reg_no'];
// $userID = $prm['userID'];
// $lang = 2;
// echo json_encode($prm);
// exit;
$dataArray = [];
// Transform data
foreach ($data as $item) {
$dataArray[$item['field']] = $item['resultEng'];
}
$dataArray['langID'] = $lang;
$dataArray['REG_NO'] = $regNo;
$dataArray['userID'] = $userID;
$dataArray['updated'] = date('Y-m-d H:i:s');
$sql = "SELECT * FROM x_adm_rekap_fisik_organ_translate
WHERE REG_NO = ?
AND langID = ?";
$query = $this->db_onedev->query($sql, [
$regNo,
$lang
]);
if (!$query) {
$this->sys_error_db("Error insert log data");
exit;
}
$dataCek = $query->result_array();
// echo (json_encode($dataArray));
// exit;
if (count($dataCek) == 0) {
$dataArray['created'] = date('Y-m-d H:i:s');
# code...
$qry = $this->db_onedev->insert('x_adm_rekap_fisik_organ_translate', $dataArray);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
} else {
$this->db_onedev->where('REG_NO', $regNo);
$qry = $this->db_onedev->update('x_adm_rekap_fisik_organ_translate', $dataArray);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
}
// echo ($this->db_onedev->last_query());
// exit;
// // Print result (for demonstration)
// echo (json_encode($dataArray));
}
function saveFisikUsg($data, $regNo, $userID, $lang)
{
// if (count($data) > 0) {
// return;
// }
// Initialize result array
// $prm = $this->sys_input;
// $data = $prm['data'];
// $regNo = $prm['reg_no'];
// $userID = $prm['userID'];
// $lang = 2;
// echo json_encode($prm);
// exit;
$dataArray = [];
// Transform data
foreach ($data as $item) {
// `Hepar (USG ABDOMEN)` as hepar,
// `V. Fellea ( USG ABDOMEN)` as fellea,
// `Pancreas (USG ABDOMEN)` as pancreas,
// `Lien (USG ABDOMEN)` as lien,
// `Right Kidney (USG ABDOMEN)` as right_Kidney,
// `Left Kidney (USG ABDOMEN)` as left_Kidney,
// `Buli-Buli (USG ABDOMEN)` as builiBuli,
// `Prostat (USG ABDOMEN)` as prostat,
// `Uterus dan Adnexa (USG ABDOMEN)` as uterus,
// `Kesan (USG ABDOMEN)` as kesan,
// `SARAN (USG ABDOMEN)` as saran,
// `Appendix (USG ABDOMEN)` as appendix,
if ($item['field'] == "hepar") {
$dataArray['`Hepar (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "fellea") {
$dataArray['`V. Fellea ( USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "pancreas") {
$dataArray['`Pancreas (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "lien") {
$dataArray['`Lien (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "right_Kidney") {
$dataArray['`Right Kidney (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "left_Kidney") {
$dataArray['`Left Kidney (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "builiBuli") {
$dataArray['`Buli-Buli (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "prostat") {
$dataArray['`Prostat (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "uterus") {
$dataArray['`Uterus dan Adnexa (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "kesan") {
$dataArray['`Kesan (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "saran") {
$dataArray['`SARAN (USG ABDOMEN)`'] = $item['resultEng'];
}
if ($item['field'] == "appendix") {
$dataArray['`Appendix (USG ABDOMEN)`'] = $item['resultEng'];
}
}
$dataArray['langID'] = $lang;
$dataArray['REG_NO'] = $regNo;
$dataArray['userID'] = $userID;
// echo json_encode($dataArray);
// exit;
$dataArray['updated'] = date('Y-m-d H:i:s');
$sql = "SELECT * FROM x_adm_rekap_fisik_usg_translate
WHERE REG_NO = ?
AND langID = ?";
$query = $this->db_onedev->query($sql, [
$regNo,
$lang
]);
if (!$query) {
$this->sys_error_db("Error insert log data");
exit;
}
$dataCek = $query->result_array();
if (count($dataCek) == 0) {
$dataArray['created'] = date('Y-m-d H:i:s');
# code...
$qry = $this->db_onedev->insert('x_adm_rekap_fisik_usg_translate', $dataArray);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
} else {
$this->db_onedev->where('REG_NO', $regNo);
$qry = $this->db_onedev->update('x_adm_rekap_fisik_usg_translate', $dataArray);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
}
// // Print result (for demonstration)
// echo (json_encode($dataArray));
}
function saveFisikVital($data, $regNo, $userID, $lang)
{
// if (count($data) > 0) {
// return;
// }
// Initialize result array
// $prm = $this->sys_input;
// $data = $prm['data'];
// $regNo = $prm['reg_no'];
// $userID = $prm['userID'];
// $lang = 2;
// echo json_encode($prm);
// exit;
$dataArray = [];
// Transform data
foreach ($data as $item) {
$dataArray[$item['field']] = $item['resultEng'];
}
$dataArray['langID'] = $lang;
$dataArray['REG_NO'] = $regNo;
$dataArray['userID'] = $userID;
$dataArray['updated'] = date('Y-m-d H:i:s');
$sql = "SELECT * FROM x_adm_rekap_fisik_vital_translate
WHERE REG_NO = ?
AND langID = ?";
$query = $this->db_onedev->query($sql, [
$regNo,
$lang
]);
if (!$query) {
$this->sys_error_db("Error insert log data");
exit;
}
$dataCek = $query->result_array();
if (count($dataCek) == 0) {
$dataArray['created'] = date('Y-m-d H:i:s');
# code...
$qry = $this->db_onedev->insert('x_adm_rekap_fisik_vital_translate', $dataArray);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
} else {
$this->db_onedev->where('REG_NO', $regNo);
$qry = $this->db_onedev->update('x_adm_rekap_fisik_vital_translate', $dataArray);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
}
// // Print result (for demonstration)
// echo (json_encode($dataArray));
}
function saveFisikSaran($data, $regNo, $userID, $lang)
{
// if (count($data) > 0) {
// return;
// }
// Initialize result array
// $prm = $this->sys_input;
// $data = $prm['data'];
// $regNo = $prm['reg_no'];
// $userID = $prm['userID'];
// $lang = 2;
// echo json_encode($prm);
// exit;
// REG_NO varchar(50)
// langID int
// Saran text
// userID int [0]
// created datetime
// updated datetime
$dataInsert = array(
"REG_NO" => $regNo,
"langID" => $lang,
"Saran" => $data['saran_eng'],
"userID" => $userID,
"updated" => date('Y-m-d H:i:s'),
);
$sql = "SELECT * FROM x_adm_rekap_fisik_saran_translate
WHERE REG_NO = ?
AND langID = ?";
$query = $this->db_onedev->query($sql, [
$regNo,
$lang
]);
if (!$query) {
$this->sys_error_db("Error insert log data");
exit;
}
$dataCek = $query->result_array();
if (count($dataCek) == 0) {
$dataInsert['created'] = date('Y-m-d H:i:s');
# code...
$qry = $this->db_onedev->insert('x_adm_rekap_fisik_saran_translate', $dataInsert);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
} else {
$this->db_onedev->where('REG_NO', $regNo);
$qry = $this->db_onedev->update('x_adm_rekap_fisik_saran_translate', $dataInsert);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
}
// // Print result (for demonstration)
// echo (json_encode($dataArray));
}
}