Files
2026-04-27 10:26:26 +07:00

1137 lines
39 KiB
PHP

<?php
/*
API untuk menyediakan label untuk form Layanan Klinik::Dokumentasi Hasil
*/
class Xform extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "Resultentry API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
$this->load->helper(array('form', 'url'));
$this->load->library('Nonlabtemplate');
$this->load->library('Kesimpulanfisik');
$this->load->library("Soresultlog");
}
public function getformtemplate()
{
try {
// Retrieve Template Form Body
$prm = $this->sys_input;
$formCode = $prm['formCode'];
$sql = "SELECT * FROM x_form_template_fisik_umum
WHERE X_Form_Fisik_FormCode = '{$formCode}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception(json_encode($message));
}
$result = $query->result_array();
$formBody = json_decode($result[0]['X_Form_Fisik_Body']);
$resp = [
"status" => "OK",
"data" => $formBody
];
header('Content-Type: application/json');
echo json_encode($resp, JSON_PRETTY_PRINT);
} catch (\Throwable $th) {
$errorDetails = json_decode($th->getMessage(), true);
if (!$errorDetails) {
// If decoding fails, fallback to generic error
$errorDetails = ['message' => $th->getMessage()];
}
$this->sys_error($errorDetails);
}
}
public function getpatientinfo()
{
try {
// Get Patient Info by NoReg. Hit by form
$prm = $this->sys_input;
$no_reg = $prm['noreg'];
$mcu_num = $prm['mcu_num'];
$sql = "SELECT M_PatientID as PatientID, M_PatientName as PatientName, M_PatientDOB as PatientDoB, M_PatientHp as PatientHp, M_PatientNoReg as PatientNoReg
FROM m_patient
WHERE M_PatientNoReg = '{$no_reg}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception(json_encode($message));
}
$pat = $query->row_array();
// Get MCU Label by MCUNum
$sql = "SELECT Mgm_McuLabel as McuLabel, Mgm_McuID as McuID, Mgm_McuNumber as McuNum
FROM mgm_mcu
WHERE Mgm_McuNumber = '{$mcu_num}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception(json_encode($message));
}
$mcu = $query->row_array();
$pat = $pat ?? [];
$mcu = $mcu ?? [
"McuLabel" => ""
];
// ! Beware : Kalau salah satu array NULL, array_merge akan menghasilkan NULL
$result = array_merge($pat, $mcu);
$this->sys_ok($result);
} catch (\Throwable $th) {
$errorDetails = json_decode($th->getMessage(), true);
if (!$errorDetails) {
$errorDetails = ['message' => $th->getMessage()];
}
$this->sys_error($errorDetails);
}
}
public function hasfilledform()
{
try {
$no_reg = $this->sys_input['noreg'];
$mcu_num = $this->sys_input['mcu_num'];
$sql = "SELECT count(*) as xcount
FROM x_form_resultentry_fisik_umum
WHERE
X_FormRE_Fisik_MPatientNoReg = '{$no_reg}' OR
X_FormRE_Fisik_MgmMcuNumber = '{$mcu_num}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception(json_encode($message));
}
$xcount = $query->row()->xcount;
if ($xcount > 0) {
$this->sys_ok(True);
} else {
$this->sys_ok(False);
}
} catch (\Throwable $th) {
$this->sys_error($th->getMessage());
}
}
public function saveform()
{
try {
$pload = $this->sys_input;
$patientID = $pload['form_meta']['PatientID'];
$patientName = $pload['form_meta']['PatientName'];
$patientNoReg = $pload['form_meta']['PatientNoReg'];
$mcuID = $pload['form_meta']['McuID'];
$mcuNumber = $pload['form_meta']['McuNum'];
$formData = $pload['form_data'];
// Validation
if (empty($patientID) || empty($patientName) || empty($patientNoReg) || empty($mcuID) || empty($mcuNumber)) {
$message = "Patient ID, Name, NoReg, MCU ID, and MCU Number cannot be empty";
$this->sys_error($message);
exit;
}
// Cek sudah atau belum. Kalau sudah tolak
$sql = "SELECT count(*) as xcount
FROM x_form_resultentry_fisik_umum
WHERE
X_FormRE_Fisik_MPatientNoReg = '{$patientNoReg}' AND
X_FormRE_Fisik_MgmMcuNumber = '{$mcuNumber}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception(json_encode($message));
}
$xcount = $query->row()->xcount;
if ($xcount > 0) {
$this->sys_error("Data sudah ada");
exit;
}
// Encode the $formData array into a JSON string
$formDataJson = json_encode($formData);
// Escape the JSON string for safe insertion into the SQL query
$escapedFormDataJson = $this->db_onedev->escape($formDataJson);
$sql = "INSERT INTO x_form_resultentry_fisik_umum
(
X_FormRE_Fisik_MPatientID,
X_FormRE_Fisik_MPatientName,
X_FormRE_Fisik_MPatientNoReg,
X_FormRE_Fisik_MgmMcuID,
X_FormRE_Fisik_MgmMcuNumber,
X_FormRE_Fisik_Data,
X_FormRE_Fisik_CreatedAt
)
VALUES
(
'{$patientID}',
'{$patientName}',
'{$patientNoReg}',
'{$mcuID}',
'{$mcuNumber}',
{$escapedFormDataJson},
NOW()
)";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception(json_encode($message));
}
$resp = [
"msg" => "Data saved successfully",
"patientID" => $patientID,
"patientName" => $patientName,
"patientNoReg" => $patientNoReg,
"mcuID" => $mcuID
];
$this->sys_ok($resp);
} catch (\Throwable $th) {
$this->sys_error($th->getMessage());
exit;
}
}
public function getmcubynoreg($no_reg)
{
try {
// Get PatientID by noreg
$sql = "SELECT M_PatientID as pid
FROM m_patient
WHERE M_PatientNoReg = '{$no_reg}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception("Error fetching patient ID: " . $message);
}
$pid = $query->row()->pid;
// Get MCU_ID byt patientID in t_orderheader
$sql = "SELECT T_OrderHeaderMgm_McuID as mcu_id
FROM t_orderheader
WHERE T_OrderHeaderM_PatientID = '{$pid}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception("Error fetching mcu ID: " . $message);
}
$mcu_id = $query->row()->mcu_id;
// Get MCU Number by MCU_ID in mgm_mcu
$sql = "SELECT Mgm_McuNumber as mcu_number
FROM mgm_mcu
WHERE Mgm_McuID = '{$mcu_id}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception("Error fetching mcu number: " . $message);
}
$mcu_number = $query->row()->mcu_number;
$result = [
"M_PatientNoReg" => $no_reg,
"M_PatientID" => $pid,
"Mgm_McuID" => $mcu_id,
"Mgm_McuNumber" => $mcu_number
];
$resp = [
"status" => "OK",
"data" => $result
];
// Define the return content type to be application/json
header('Content-Type: application/json');
echo json_encode($resp, JSON_PRETTY_PRINT);
} catch (\Throwable $th) {
$this->sys_error($th->getMessage());
exit;
}
}
public function getunlistedidcode()
{
try {
$formCode = $this->sys_input['formCode'];
$sql = "SELECT X_Form_Fisik_Unlisted FROM x_form_template_fisik_umum
WHERE X_Form_Fisik_FormCode = '{$formCode}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception(json_encode($message));
}
// Fetch the data from the database
$unlistedString = $query->row()->X_Form_Fisik_Unlisted;
// Decode the JSON-like string into a PHP array
$unlistedArray = json_decode($unlistedString, true);
// Check if json_decode was successful
if (json_last_error() !== JSON_ERROR_NONE) {
throw new Exception('Failed to decode JSON: ' . json_last_error_msg());
}
// Return the array
$this->sys_ok($unlistedArray);
} catch (\Throwable $th) {
$errorDetails = json_decode($th->getMessage(), true);
if (!$errorDetails) {
$errorDetails = ['message' => $th->getMessage()];
}
$this->sys_error($errorDetails);
}
}
public function getfilledbydoctor()
{
try {
// Retrieve Template Form Body
$prm = $this->sys_input;
$formCode = $prm['formCode'];
$sql = "SELECT * FROM x_form_template_fisik_umum
WHERE X_Form_Fisik_FormCode = '{$formCode}'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
throw new Exception(json_encode($message));
}
$unlisted = [];
$result = $query->result_array();
$formBody = json_decode($result[0]['X_Form_Fisik_Body'], true);
foreach ($formBody as $key => $value) {
foreach ($value as $item) {
if ($item['type_form'] == 'XVS') {
foreach ($item['details'] as $detail) {
foreach ($detail['details'] as $subdetail) {
if (isset($subdetail['color']) && $subdetail['color'] == 'red') {
$unlisted[] = $subdetail['id_code'];
}
}
}
} else if ($item['type_form'] == 'XV') {
foreach ($item['details'] as $detail) {
if (isset($detail['color']) && $detail['color'] == 'red') {
$unlisted[] = $detail['id_code'];
}
}
} else {
continue;
}
}
}
$resp = [
"status" => "OK",
"data" => $unlisted
];
header('Content-Type: application/json');
echo json_encode($resp, JSON_PRETTY_PRINT);
} catch (\Throwable $th) {
$errorDetails = json_decode($th->getMessage(), true);
if (!$errorDetails) {
// If decoding fails, fallback to generic error
$errorDetails = ['message' => $th->getMessage()];
}
$this->sys_error($errorDetails);
}
}
public function getformtemplate_old()
{
try {
// Getdetails dengan param re_id dan T_SamplingSoID
// untuk dapat template_name, orderid
// $re_id = 867;
// $T_SamplingSOID = 1947;
$prm = $this->sys_input;
$re_id = $prm['re_id'];
$T_SamplingSOID = $prm['T_SamplingSOID'];
$prm_dtl = [
're_id' => $re_id,
'T_SamplingSOID' => $T_SamplingSOID
];
$getdetail[] = $this->get_details($prm_dtl);
// Get Umum untuk dapat template form based on pasien
// Atau tidak usah jika body template dari tabel
$template_name = $getdetail['template_name'];
$order_id = $getdetail['orderid'];
$prm_umum = [
're_id' => $re_id,
'template_name' => $template_name,
'orderid' => $order_id
];
$getumum = $this->getumumlocal($prm_umum);
// echo json_encode($getumum);
// exit;
$this->sys_ok($getumum);
// Dari template_name query ke tabel template_form
// Dapat bentuk form
} catch (\Throwable $th) {
// throw $th;
$this->sys_error($th->getMessage());
}
}
function getumumlocal($prm)
{
$rst = array();
$rst['riwayats'] = array();
$rst['fisiks'] = array();
$rst['umum_saran'] = '';
$rst['k3s'] = array();
$rst['konsul'] = array();
$rows = array();
//$prm = $this->sys_input;
$sql = "SELECT count(*) as xcount
FROM so_resultentry_fisik_umum
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['re_id']} AND
So_ResultEntryFisikUmumIsActive = 'Y'
ORDER BY So_ResultEntryFisikUmumID ASC ";
$x_exist = $this->db_onedev->query($sql)->row()->xcount;
if ($x_exist == 0) {
if ($prm['template_name'] == 'Fisik Umum' || $prm['template_name'] == 'Fisik Umum K3') {
$sql = "INSERT INTO so_resultentry_fisik_umum (
So_ResultEntryFisikUmumSo_ResultEntryID,
So_ResultEntryFisikUmumFisikTemplateID,
So_ResultEntryFisikUmumDetails,
So_ResultEntryFisikUmumCreated,
So_ResultEntryFisikUmumCreatedUserID
)
SELECT {$prm['re_id']},
FisikTemplateID,
FisikTemplateJSON,
NOW(),
{$userid}
FROM fisik_template
JOIN t_orderheader ON T_OrderHeaderID = {$prm['orderid']}
JOIN mgm_mcutemplate ON Mgm_McuTemplateMgm_McuID = T_OrderHeaderMgm_McuID
JOIN fisik_template_mapping ON Mgm_McuTemplateFisikTemplateMappingID = FisikTemplateMappingID
JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID AND
FisikTemplateMappingDetailFisikTemplateID = FisikTemplateID AND
FisikTemplateMappingDetailIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y'
GROUP BY FisikTemplateID
ORDER BY FisikTemplateCode ASC";
$this->db_onedev->query($sql);
}
}
$riwayats = [];
$fisiks = [];
$k3s = [];
$sql = "SELECT *
FROM so_resultentry_fisik_umum
JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y'
ORDER BY FisikTemplateCode ASC";
$rows_data = $this->db_onedev->query($sql)->result_array();
if ($rows_data) {
foreach ($rows_data as $key => $value) {
if ($value['FisikTemplateType'] == 'Riwayat')
$riwayats[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE);
if ($value['FisikTemplateType'] == 'Fisik')
$fisiks[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE);
if ($value['FisikTemplateType'] == 'K3')
$k3s[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE);
}
}
$rst['riwayats'] = $riwayats;
$rst['fisiks'] = $fisiks;
$rst['k3s'] = $k3s;
$sql = "SELECT *
FROM translate_word
WHERE
Translate_WordIsActive = 'Y'";
$translate_word = $this->db_onedev->query($sql)->result_array();
$status = 1;
$sql = "SELECT COUNT(*) as xcount, So_ResultEntryFisikUmumAdditionalValue as xvalue
FROM so_resultentry_fisik_umum_additional
WHERE
So_ResultEntryFisikUmumAdditionalSo_ResultEntryID = {$prm['re_id']} AND
So_ResultEntryFisikUmumAdditionalType = 'saran' AND
So_ResultEntryFisikUmumAdditionalIsActive = 'Y'";
$row_saran = $this->db_onedev->query($sql)->row_array();
if ($row_saran['xcount'] > 0)
$rst['umum_saran'] = $row_saran['xvalue'];
return $rst;
}
function getumum()
{
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$rst = array();
$rst['riwayats'] = array();
$rst['fisiks'] = array();
$rst['umum_saran'] = '';
$rst['k3s'] = array();
$rst['konsul'] = array();
$rows = array();
//$prm = $this->sys_input;
$sql = "SELECT count(*) as xcount
FROM so_resultentry_fisik_umum
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['re_id']} AND
So_ResultEntryFisikUmumIsActive = 'Y'
ORDER BY So_ResultEntryFisikUmumID ASC ";
$x_exist = $this->db_onedev->query($sql)->row()->xcount;
if ($x_exist == 0) {
if ($prm['template_name'] == 'Fisik Umum' || $prm['template_name'] == 'Fisik Umum K3') {
$sql = "INSERT INTO so_resultentry_fisik_umum (
So_ResultEntryFisikUmumSo_ResultEntryID,
So_ResultEntryFisikUmumFisikTemplateID,
So_ResultEntryFisikUmumDetails,
So_ResultEntryFisikUmumCreated,
So_ResultEntryFisikUmumCreatedUserID
)
SELECT {$prm['re_id']},
FisikTemplateID,
FisikTemplateJSON,
NOW(),
{$userid}
FROM fisik_template
JOIN t_orderheader ON T_OrderHeaderID = {$prm['orderid']}
JOIN mgm_mcutemplate ON Mgm_McuTemplateMgm_McuID = T_OrderHeaderMgm_McuID
JOIN fisik_template_mapping ON Mgm_McuTemplateFisikTemplateMappingID = FisikTemplateMappingID
JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID AND
FisikTemplateMappingDetailFisikTemplateID = FisikTemplateID AND
FisikTemplateMappingDetailIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y'
GROUP BY FisikTemplateID
ORDER BY FisikTemplateCode ASC";
$this->db_onedev->query($sql);
}
}
$riwayats = [];
$fisiks = [];
$k3s = [];
$sql = "SELECT *
FROM so_resultentry_fisik_umum
JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y'
ORDER BY FisikTemplateCode ASC";
$rows_data = $this->db_onedev->query($sql)->result_array();
if ($rows_data) {
foreach ($rows_data as $key => $value) {
if ($value['FisikTemplateType'] == 'Riwayat')
$riwayats[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE);
if ($value['FisikTemplateType'] == 'Fisik')
$fisiks[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE);
if ($value['FisikTemplateType'] == 'K3')
$k3s[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE);
}
}
$rst['riwayats'] = $riwayats;
$rst['fisiks'] = $fisiks;
$rst['k3s'] = $k3s;
$sql = "SELECT *
FROM translate_word
WHERE
Translate_WordIsActive = 'Y'";
$translate_word = $this->db_onedev->query($sql)->result_array();
$status = 1;
$sql = "SELECT COUNT(*) as xcount, So_ResultEntryFisikUmumAdditionalValue as xvalue
FROM so_resultentry_fisik_umum_additional
WHERE
So_ResultEntryFisikUmumAdditionalSo_ResultEntryID = {$prm['re_id']} AND
So_ResultEntryFisikUmumAdditionalType = 'saran' AND
So_ResultEntryFisikUmumAdditionalIsActive = 'Y'";
$row_saran = $this->db_onedev->query($sql)->row_array();
if ($row_saran['xcount'] > 0)
$rst['umum_saran'] = $row_saran['xvalue'];
$result = array(
"total" => $status,
"records" => $rst,
"translate" => $translate_word
);
$this->sys_ok($result);
exit;
}
function savefisik()
{
$prm = $this->sys_input;
// $this->sys_ok($prm);
// exit;
$userid = $this->sys_user["M_UserID"];
$rst = array();
if ($prm['action'] === 'unval1') {
$sql = "SELECT IFNULL(Mcu_ResumeValidation, 'N') as status, COUNT(Mcu_ResumeID)
FROM mcu_resume
WHERE Mcu_ResumeT_OrderHeaderID = {$prm['trx']['orderid']}
AND Mcu_ResumeIsActive = 'Y'";
$qry = $this->db_onedev->query($sql);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error("Error cek resume individu");
exit;
}
$cek = $qry->row_array();
if ($cek['status'] == 'Y') {
$this->sys_error("Resume individu sudah di validasi, unvalidasi resume individu terlebih dahulu ....");
exit;
}
}
if ($prm['action'] != 'unval1') {
$data_json = [];
if ($prm['act'] == 'Fisik Umum' || $prm['act'] == 'Fisik Umum K3' || $prm['act'] == 'Fisik Umum Konsul') {
if ($prm["riwayats"] && count($prm["riwayats"]) > 0) {
foreach ($prm["riwayats"] as $v_riwayat) {
$data_riwayat = json_encode($v_riwayat);
$sql = "UPDATE so_resultentry_fisik_umum
JOIN fisik_template ON FisikTemplateTitle = '{$v_riwayat['title']}' AND FisikTemplateIsActive = 'Y' AND
FisikTemplateType = 'Riwayat'
SET
So_ResultEntryFisikUmumDetails = '{$data_riwayat}',
So_ResultEntryFisikUmumLastUpdated = NOW(),
So_ResultEntryFisikUmumLastUpdatedUserID = {$userid}
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['trx']['re_id']} AND
So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
";
$rst = $this->db_onedev->query($sql);
//if($v_riwayat['title'] == 'KELUHAN')
//echo $sql;
}
$data_json['riwayat'] = $prm["riwayats"];
}
if ($prm["fisiks"] && count($prm["fisiks"]) > 0) {
foreach ($prm["fisiks"] as $v_fisik) {
$data_fisik = json_encode($v_fisik);
$sql = "UPDATE so_resultentry_fisik_umum
JOIN fisik_template ON FisikTemplateTitle = '{$v_fisik['title']}' AND FisikTemplateIsActive = 'Y' AND
FisikTemplateType = 'Fisik'
SET
So_ResultEntryFisikUmumDetails = '{$data_fisik}',
So_ResultEntryFisikUmumLastUpdated = NOW(),
So_ResultEntryFisikUmumLastUpdatedUserID = {$userid}
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['trx']['re_id']} AND
So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
";
$rst = $this->db_onedev->query($sql);
}
$data_json['fisik'] = $prm["fisiks"];
}
//echo $sql;
$umum_saran = $prm['umum_saran'];
if ($umum_saran && $umum_saran != '') {
$sql = "SELECT COUNT(*) as xcount, So_ResultEntryFisikUmumAdditionalID as id
FROM so_resultentry_fisik_umum_additional
WHERE
So_ResultEntryFisikUmumAdditionalSo_ResultEntryID = {$prm['trx']['re_id']} AND
So_ResultEntryFisikUmumAdditionalType = 'saran' AND
So_ResultEntryFisikUmumAdditionalIsActive = 'Y'";
$rst_exist_saran = $this->db_onedev->query($sql)->row_array();
if ($rst_exist_saran['xcount'] == 0) {
$sql = "INSERT INTO so_resultentry_fisik_umum_additional (
So_ResultEntryFisikUmumAdditionalSo_ResultEntryID,
So_ResultEntryFisikUmumAdditionalType,
So_ResultEntryFisikUmumAdditionalValue,
So_ResultEntryFisikUmumAdditionalCreatedUserID,
So_ResultEntryFisikUmumAdditionalCreated
)
VALUES(
{$prm['trx']['re_id']},
'saran',
'{$umum_saran}',
{ },
NOW()
) ";
//echo $sql;
$rst = $this->db_onedev->query($sql);
} else {
$sql = "UPDATE so_resultentry_fisik_umum_additional SET
So_ResultEntryFisikUmumAdditionalValue = '{$umum_saran}',
So_ResultEntryFisikUmumAdditionalLastUpdated = NOW(),
So_ResultEntryFisikUmumAdditionalLastUpdatedUserID = {$userid}
WHERE
So_ResultEntryFisikUmumAdditionalID = {$rst_exist_saran['id']}";
$this->db_onedev->query($sql);
}
}
}
if ($prm['act'] == 'Fisik Umum K3') {
if ($prm["k3s"] && count($prm["k3s"]) > 0) {
foreach ($prm["k3s"] as $v_k3) {
$data_k3s = json_encode($v_k3);
$sql = "UPDATE so_resultentry_fisik_umum
JOIN fisik_template ON FisikTemplateTitle = '{$v_k3['title']}' AND FisikTemplateIsActive = 'Y' AND
FisikTemplateType = 'K3'
SET
So_ResultEntryFisikUmumDetails = '{$data_k3s}',
So_ResultEntryFisikUmumLastUpdated = NOW(),
So_ResultEntryFisikUmumLastUpdatedUserID = {$userid}
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['trx']['re_id']} AND
So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
";
$rst = $this->db_onedev->query($sql);
}
$data_json['k3s'] = $prm["k3s"];
}
}
//print_r($data_json);
if ($data_json && count($data_json) > 0) {
$this->soresultlog->log_result(json_encode($data_json), $prm['trx']['re_id'], $userid);
}
}
if ($prm['action'] === 'val1') {
$sql = "UPDATE so_resultentry SET
So_ResultEntryValidation1 = 'Y',
So_ResultEntryStatus = 'VAL1',
So_ResultEntryLastUpdated = NOW(),
So_ResultEntryLastUpdatedUserID = {$userid}
WHERE
So_ResultEntryID = {$prm['trx']['re_id']}";
$this->db_onedev->query($sql);
}
if ($prm['action'] === 'unval1') {
$sql = "UPDATE so_resultentry SET
So_ResultEntryValidation1 = 'N',
So_ResultEntryStatus = 'NEW',
So_ResultEntryLastUpdated = NOW(),
So_ResultEntryLastUpdatedUserID = {$userid}
WHERE
So_ResultEntryID = {$prm['trx']['re_id']}";
$this->db_onedev->query($sql);
}
$act = "UPDATE_ACT";
if ($prm['action'] === 'unval1')
$act = "UNVALIDATION";
if ($prm['action'] === 'val1')
$act = "VALIDATION";
$this->soresultlog->step_action($act, $prm['trx']['re_id'], $userid);
$result = array(
"total" => 1,
"records" => $rst
);
$this->sys_ok($result);
exit;
}
function get_details($prm)
{
try {
$userid = $this->sys_user["M_UserID"];
$group_results = array();
$sql = " SELECT *
FROM group_result_entry
WHERE
GroupResultEntryCode = '04' AND GroupResultEntryIsActive = 'Y'";
$xgresult = $this->db_onedev->query($sql)->result_array();
if ($xgresult) {
foreach ($xgresult as $kgr => $vgr) {
array_push($group_results, $vgr['GroupResultEntryGroup_ResultID']);
}
}
$group_results = join(",", $group_results);
$v = $prm;
$arr_status = array();
//echo $v['re_id'] ;
if (intval($v['re_id']) == 0) {
//echo 'IN';
$insert_so = $this->nonlabtemplate->generate($v['T_SamplingSOID']);
//print_r($insert_so);
if ($insert_so) {
$sql = "SELECT IFNULL(M_DoctorID,0) as M_DoctorID
FROM m_staff
JOIN m_user ON M_UserM_StaffID = M_StaffID AND M_UserID = {$userid}
LEFT JOIN m_doctor ON M_StaffM_DoctorID = M_DoctorID
WHERE
M_StaffIsActive = 'Y'
LIMIT 1";
$row_doctor_staff = $this->db_onedev->query($sql)->row_array();
if (intval($row_doctor_staff['M_DoctorID']) > 0) {
$sql = "UPDATE so_resultentry SET So_ResultEntryM_DoctorID = {$row_doctor_staff['M_DoctorID']}
WHERE So_ResultEntryID = {$v['re_id']}
";
$this->db_onedev->query($sql);
}
$v['re_id'] = $insert_so['So_ResultEntryID'];
//$v['re_id'] = $v['re_id'];
$v['status_name'] = 'BARU';
//$rows[$k]['status_name'] = $v['status_name'];
}
}
$sql = "SELECT
IFNULL(So_ResultEntryID,0) as trx_id,
IFNULL(So_ResultEntryID,0) as re_id,
T_SamplingSoT_OrderHeaderID as orderid,
T_TestT_SampleTypeID as sampletypeid,
T_SamplingSoID,
UPPER(T_TestName) as test_name,
Group_ResultName as group_name,
Group_ResultResumeMcu as group_resume_mcu,
T_TestID as test_id,
T_TestNat_TestID as nat_testid,
0 as language_id,
So_ResultEntryNonlab_TemplateID as template_id,
So_ResultEntryNonlab_TemplateName as template_name,
NonlabTemplateFlagOther as template_flag_other,
'' as status_result,
'' as status_result_arr,
CASE
WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU'
WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI 1'
WHEN So_ResultEntryStatus = 'VAL2' THEN 'VALIDASI 2'
WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE'
END as status_name,
'' as note,
So_ResultEntryStatus as status,
'Bahasa Indonesia' as language_name,
'' as doctors,
IFNULL(M_DoctorID,0) as doctor_id,
IF(ISNULL(M_DoctorID),'-',CONCAT(M_DoctorPrefix,M_DoctorPrefix2,' ',M_DoctorName,M_DoctorSuffix,M_DoctorSuffix)) as doctor_fullname,
'' as details,
'' as langs,
'' as photos
FROM t_samplingso
JOIN t_test ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoID = {$v['T_SamplingSOID']} AND T_SamplingSoIsActive = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID IN ({$group_results})
LEFT JOIN so_resultentry ON T_SamplingSoT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND So_ResultEntryID = {$v['re_id']}
LEFT JOIN nonlab_template ON So_ResultEntryNonlab_TemplateID = NonlabTemplateID AND NonlabTemplateIsActive = 'Y'
LEFT JOIN m_doctor ON So_ResultEntryM_DoctorID = M_DoctorID
GROUP BY orderid, test_id";
//echo $sql;
//print_r($v);
$rst_details = $this->db_onedev->query($sql)->result_array();
foreach ($rst_details as $ki => $vi) {
array_push($arr_status, $vi['status_header']);
$xstatus_result = array();
$sql = "SELECT NonlabConclusionDetailID as id, NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal
FROM so_resultentry_category_result
JOIN nonlab_conclusion_detail ON So_ResultEntryCategoryNonlabConclusionDetailID = NonlabConclusionDetailID AND
NonlabConclusionDetailIsActive = 'Y'
WHERE
So_ResultEntryCategoryResultSo_ResultEntryID = {$vi['trx_id']} AND
So_ResultEntryCategoryResultIsActive = 'Y'
";
$get_status_result = $this->db_onedev->query($sql)->result_array();
if ($get_status_result) {
$xstatus_result = $get_status_result;
}
$rst_details[$ki]['status_result'] = $xstatus_result;
$sql = "SELECT NonlabConclusionDetailID AS id, NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal
FROM nonlab_conclusion_detail d1
JOIN (SELECT * FROM nonlab_conclusion WHERE NonlabConclusionIsActive = 'Y' LIMIT 1) d2
ON d1.NonlabConclusionDetailNonlabConclusionID = d2.NonlabConclusionID";
$data_status_result_array = $this->db_onedev->query($sql)->result_array();
$sql = "SELECT NonlabConclusionDetailID AS id , NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal
FROM nonlab_conclusion_mapping
JOIN nonlab_conclusion_detail ON NonlabConclusionMappingNonlabConclusionID = NonlabConclusionDetailNonlabConclusionID AND NonlabConclusionDetailIsActive ='Y'
JOIN nonlab_conclusion ON NonlabConclusionMappingNonlabConclusionID = NonlabConclusionID AND NonlabConclusionIsActive = 'Y'
WHERE NonlabConclusionMappingNat_TestID = {$vi['nat_testid']}";
$data_status_result_array_other = $this->db_onedev->query($sql)->result_array();
if ($data_status_result_array_other) {
$data_status_result_array = $data_status_result_array_other;
}
$rst_details[$ki]['status_result_arr'] = $data_status_result_array;
$rst_details[$ki]['status_result'] = $xstatus_result;
$sql = "SELECT
So_ResultEntryDetailID as trx_id,
So_ResultEntryDetailNonlab_TemplateDetailID as template_detail_id,
So_ResultEntryDetailNonlab_TemplateDetailName as result_label,
So_ResultEntryDetailResult as result_value,
'N' as flag_print,
So_ResultEntryDetailResult as result_value_before
FROM so_resultentrydetail
WHERE
So_ResultEntryDetailSo_ResultEntryID = {$vi['trx_id']} AND So_ResultEntryDetailisActive = 'Y'";
$rst_details[$ki]['details'] = $this->db_onedev->query($sql)->result_array();
$rst_details[$ki]['photos'] = $this->getphotos($vi['orderid'], $vi['sampletypeid']);
}
return $rst_details;
// $result = array("records" => $rst_details);
// $this->sys_ok($result);
// return $result;
} catch (\Throwable $th) {
throw $th;
}
}
function get_details_api()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$group_results = array();
$sql = " SELECT *
FROM group_result_entry
WHERE
GroupResultEntryCode = '04' AND GroupResultEntryIsActive = 'Y'";
$xgresult = $this->db_onedev->query($sql)->result_array();
if ($xgresult) {
foreach ($xgresult as $kgr => $vgr) {
array_push($group_results, $vgr['GroupResultEntryGroup_ResultID']);
}
}
$group_results = join(",", $group_results);
$v = $prm;
$arr_status = array();
//echo $v['re_id'] ;
if (intval($v['re_id']) == 0) {
//echo 'IN';
$insert_so = $this->nonlabtemplate->generate($v['T_SamplingSOID']);
//print_r($insert_so);
if ($insert_so) {
$sql = "SELECT IFNULL(M_DoctorID,0) as M_DoctorID
FROM m_staff
JOIN m_user ON M_UserM_StaffID = M_StaffID AND M_UserID = {$userid}
LEFT JOIN m_doctor ON M_StaffM_DoctorID = M_DoctorID
WHERE
M_StaffIsActive = 'Y'
LIMIT 1";
$row_doctor_staff = $this->db_onedev->query($sql)->row_array();
if (intval($row_doctor_staff['M_DoctorID']) > 0) {
$sql = "UPDATE so_resultentry SET So_ResultEntryM_DoctorID = {$row_doctor_staff['M_DoctorID']}
WHERE So_ResultEntryID = {$v['re_id']}
";
$this->db_onedev->query($sql);
}
$v['re_id'] = $insert_so['So_ResultEntryID'];
//$v['re_id'] = $v['re_id'];
$v['status_name'] = 'BARU';
//$rows[$k]['status_name'] = $v['status_name'];
}
}
//if ($v['image_signature'] != '') {
// $rows[$k]['image_signature'] = $v['image_signature'] . "?=" . date("YmdHis");
//}
$sql = "SELECT
IFNULL(So_ResultEntryID,0) as trx_id,
IFNULL(So_ResultEntryID,0) as re_id,
T_SamplingSoT_OrderHeaderID as orderid,
T_TestT_SampleTypeID as sampletypeid,
T_SamplingSoID,
UPPER(T_TestName) as test_name,
Group_ResultName as group_name,
Group_ResultResumeMcu as group_resume_mcu,
T_TestID as test_id,
T_TestNat_TestID as nat_testid,
0 as language_id,
So_ResultEntryNonlab_TemplateID as template_id,
So_ResultEntryNonlab_TemplateName as template_name,
NonlabTemplateFlagOther as template_flag_other,
'' as status_result,
'' as status_result_arr,
CASE
WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU'
WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI 1'
WHEN So_ResultEntryStatus = 'VAL2' THEN 'VALIDASI 2'
WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE'
END as status_name,
'' as note,
So_ResultEntryStatus as status,
'Bahasa Indonesia' as language_name,
'' as doctors,
IFNULL(M_DoctorID,0) as doctor_id,
IF(ISNULL(M_DoctorID),'-',CONCAT(M_DoctorPrefix,M_DoctorPrefix2,' ',M_DoctorName,M_DoctorSuffix,M_DoctorSuffix)) as doctor_fullname,
'' as details,
'' as langs,
'' as photos
FROM t_samplingso
JOIN t_test ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoID = {$v['T_SamplingSOID']} AND T_SamplingSoIsActive = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID IN ({$group_results})
LEFT JOIN so_resultentry ON T_SamplingSoT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND So_ResultEntryID = {$v['re_id']}
LEFT JOIN nonlab_template ON So_ResultEntryNonlab_TemplateID = NonlabTemplateID AND NonlabTemplateIsActive = 'Y'
LEFT JOIN m_doctor ON So_ResultEntryM_DoctorID = M_DoctorID
GROUP BY orderid, test_id";
//echo $sql;
//print_r($v);
$rst_details = $this->db_onedev->query($sql)->result_array();
foreach ($rst_details as $ki => $vi) {
array_push($arr_status, $vi['status_header']);
$xstatus_result = array();
$sql = "SELECT NonlabConclusionDetailID as id, NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal
FROM so_resultentry_category_result
JOIN nonlab_conclusion_detail ON So_ResultEntryCategoryNonlabConclusionDetailID = NonlabConclusionDetailID AND
NonlabConclusionDetailIsActive = 'Y'
WHERE
So_ResultEntryCategoryResultSo_ResultEntryID = {$vi['trx_id']} AND
So_ResultEntryCategoryResultIsActive = 'Y'
";
$get_status_result = $this->db_onedev->query($sql)->result_array();
if ($get_status_result) {
$xstatus_result = $get_status_result;
}
$rst_details[$ki]['status_result'] = $xstatus_result;
$sql = "SELECT NonlabConclusionDetailID AS id, NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal
FROM nonlab_conclusion_detail d1
JOIN (SELECT * FROM nonlab_conclusion WHERE NonlabConclusionIsActive = 'Y' LIMIT 1) d2
ON d1.NonlabConclusionDetailNonlabConclusionID = d2.NonlabConclusionID";
$data_status_result_array = $this->db_onedev->query($sql)->result_array();
$sql = "SELECT NonlabConclusionDetailID AS id , NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal
FROM nonlab_conclusion_mapping
JOIN nonlab_conclusion_detail ON NonlabConclusionMappingNonlabConclusionID = NonlabConclusionDetailNonlabConclusionID AND NonlabConclusionDetailIsActive ='Y'
JOIN nonlab_conclusion ON NonlabConclusionMappingNonlabConclusionID = NonlabConclusionID AND NonlabConclusionIsActive = 'Y'
WHERE NonlabConclusionMappingNat_TestID = {$vi['nat_testid']}";
$data_status_result_array_other = $this->db_onedev->query($sql)->result_array();
if ($data_status_result_array_other) {
$data_status_result_array = $data_status_result_array_other;
}
$rst_details[$ki]['status_result_arr'] = $data_status_result_array;
$rst_details[$ki]['status_result'] = $xstatus_result;
$sql = "SELECT
So_ResultEntryDetailID as trx_id,
So_ResultEntryDetailNonlab_TemplateDetailID as template_detail_id,
So_ResultEntryDetailNonlab_TemplateDetailName as result_label,
So_ResultEntryDetailResult as result_value,
'N' as flag_print,
So_ResultEntryDetailResult as result_value_before
FROM so_resultentrydetail
WHERE
So_ResultEntryDetailSo_ResultEntryID = {$vi['trx_id']} AND So_ResultEntryDetailisActive = 'Y'";
//echo $sql;
$rst_details[$ki]['details'] = $this->db_onedev->query($sql)->result_array();
//$rst_details[$ki]['langs'] = $this->getlangs($vi['orderid']);
$rst_details[$ki]['photos'] = $this->getphotos($vi['orderid'], $vi['sampletypeid']);
//$rst_details[$ki]['doctors'] = $this->getdoctors($vi['sampletypeid']);
}
//$rows[$k]['details'] = $rst_details;
//$rows[$k]['deliveries'] = $this->getdeliveries($v['trx_id'],$v['re_id']);
$result = array("records" => $rst_details);
$this->sys_ok($result);
exit;
}
function getphotos($orderid, $sampletypeid)
{
$rows = [];
//print_r($_SERVER);
$urlbase = 'http://' . $_SERVER['SERVER_NAME'] . "/one-media/one-image-nonlab/";
$sql = "SELECT So_ImageUploadID as id,
So_ImageUploadOldName as oldname,
CONCAT('{$urlbase}',So_ImageUploadNewName) as newname
FROM so_imageupload
WHERE
So_ImageUploadT_OrderHeaderID = {$orderid} AND So_ImageUploadT_SampleTypeID = {$sampletypeid} AND So_ImageUploadIsActive = 'Y'";
//echo $sql;
$rows = $this->db_onedev->query($sql)->result_array();
return $rows;
}
}