Files
BE_IBL/application/controllers/mockup/resultentrysoothers-cpone-v9/Resultentry.php
2026-05-21 11:56:47 +07:00

6193 lines
282 KiB
PHP

<?php
class Resultentry 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->db_log = $this->load->database("one_lab_log", true);
$this->load->helper(array('form', 'url'));
$this->load->library('Nonlabtemplate');
$this->load->library('Kesimpulanfisik');
$this->load->library("Soresultlog");
$this->load->library('genkelainan');
$this->load->library('genresultfisik');
// Inject koneksi DB onedev ke genreportfisik (data so_* ada di onedev, bukan "default")
$this->genresultfisik->db_smartone = $this->db_onedev;
}
function searchcompany()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$max_rst = 12;
$tot_count = 0;
$q = [
'search' => '%'
];
if ($prm['search'] == '') {
$rows = array(array('id' => 0, 'name' => 'Semua'));
$result = array("total" => 1, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
$q['search'] = "%{$prm['search']}%";
$sql = "
SELECT CorporateID as id, CorporateName as name
FROM corporate
WHERE
CorporateName like ?
AND CorporateIsActive = 'Y'
ORDER BY CorporateName DESC
";
$query = $this->db_onedev->query($sql, array($q['search']));
if ($query) {
$rows = $query->result_array();
array_push($rows, array('id' => 0, 'name' => 'Semua'));
//echo $this->db_onedev->last_query();
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
$this->sys_error_db("corporate rows", $this->db_onedev);
exit;
}
}
}
function getdetails($id)
{
$rows = [];
$sql = "SELECT so_walklettercourierdetail.*, M_SexName,
CONCAT(M_TitleName,' ',M_PatientName) as patient_fullname,
T_SampleTypeName as samplename,
T_OrderHeaderLabNumber as labnumber,
'Y' as active,
So_WalkLetterCourierDetailFlagImage as flag_image,
So_WalkLetterCourierDetailFlagReceiveImage as flag_image_receive,
So_WalkLetterCourierDetailFlagReceiveResult as flag_result_receive,
So_WalkLetterCourierDetailID as idx,
T_OrderHeaderID as orderid,
T_SampleTypeID as sampleid
FROM so_walklettercourierdetail
JOIN t_orderheader ON So_WalkLetterCourierDetailT_OrderHeaderID = T_OrderHeaderID
JOIN t_sampletype ON So_WalkLetterCourierDetailT_SampleTypeID = T_SampleTypeID
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN m_title ON M_PatientM_TitleID = M_TitleID
JOIN m_sex ON M_PatientM_SexID = M_SexID
WHERE
So_WalkLetterCourierDetailSo_WalkLetterCourierID = {$id} AND So_WalkLetterCourierDetailIsActive = 'Y'";
//echo $sql;
$rows = $this->db_onedev->query($sql)->result_array();
return $rows;
}
function getdeliveries($orderid, $re_id)
{
$query = " SELECT T_OrderDeliveryID as id,
IFNULL(Fo_VerificationDeliveryID,0) as xid,
M_DeliveryTypeCode as code,
IF(ISNULL(Fo_VerificationDeliveryID),'N',Fo_VerificationDeliveryIsOK) as chex,
M_DeliveryID as deliveryid,
M_DeliveryTypeID as typedeliveryid,
T_OrderDeliveryM_KelurahanID as vilageid,
IF(ISNULL(Fo_VerificationDeliveryID),'',Fo_VerificationDeliveryReason) as note,
'reguler' as type,
CASE
WHEN T_OrderDeliveryM_DeliveryID = 1 THEN M_DeliveryName
WHEN T_OrderDeliveryM_DeliveryID = 4 THEN CONCAT(M_DeliveryName)
WHEN T_OrderDeliveryM_DeliveryID = 2 THEN CONCAT(M_DeliveryName)
WHEN ( T_OrderDeliveryM_DeliveryID = 7 OR T_OrderDeliveryM_DeliveryID = 9 ) THEN CONCAT(M_DeliveryName)
WHEN ( T_OrderDeliveryM_DeliveryID = 6 OR T_OrderDeliveryM_DeliveryID = 8 ) THEN CONCAT(M_DeliveryName)
ELSE
CONCAT(M_DeliveryName)
END as label,
CASE
WHEN T_OrderDeliveryM_DeliveryID = 1 THEN ''
WHEN T_OrderDeliveryM_DeliveryID = 4 THEN M_DoctorAddressDescription
WHEN T_OrderDeliveryM_DeliveryID = 2 THEN M_PatientAddressDescription
WHEN ( T_OrderDeliveryM_DeliveryID = 7 OR T_OrderDeliveryM_DeliveryID = 9 ) THEN M_DoctorHP
WHEN ( T_OrderDeliveryM_DeliveryID = 6 OR T_OrderDeliveryM_DeliveryID = 8 ) THEN M_PatientHP
ELSE
T_OrderDeliveryDestination
END as destination,
CASE
WHEN T_OrderDeliveryM_DeliveryID = 4 THEN M_DoctorAddressID
WHEN T_OrderDeliveryM_DeliveryID = 2 THEN M_PatientAddressID
ELSE
0
END as addressid,
'brown' as color,
'' as status_payment,
'' as url
FROM t_orderdelivery
JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN m_doctoraddress ON T_OrderDeliveryAddressID = M_DoctorAddressID AND T_OrderDeliveryM_DeliveryID = 4
LEFT JOIN m_patientaddress ON T_OrderDeliveryAddressID = M_PatientAddressID AND T_OrderDeliveryM_DeliveryID = 2
LEFT JOIN fo_verification_delivery ON Fo_VerificationDeliveryT_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID AND Fo_VerificationDeliveryIsActive = 'Y'
LEFT JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID AND ( T_OrderDeliveryM_DeliveryID = 7 OR T_OrderDeliveryM_DeliveryID = 9 )
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND ( T_OrderDeliveryM_DeliveryID = 6 OR T_OrderDeliveryM_DeliveryID = 8 )
WHERE
T_OrderDeliveryT_OrderHeaderID = {$orderid} AND T_OrderDeliveryIsActive = 'Y'
GROUP BY T_OrderDeliveryID
UNION
SELECT 0 as id,
IFNULL(Fo_VerificationDeliveryAddID,0) as xid,
M_DeliveryTypeCode as code,
IF(ISNULL(Fo_VerificationDeliveryAddID),'N',Fo_VerificationDeliveryAddOK) as chex,
Fo_VerificationDeliveryAddM_DeliveryID as deliveryid,
Fo_VerificationDeliveryAddM_DeliveryTypeID as typedeliveryid,
Fo_VerificationDeliveryAddM_KelurahanID as vilageid,
IF(ISNULL(Fo_VerificationDeliveryAddID),'',Fo_VerificationDeliveryAddReason) as note,
'reguler' as type,
CASE
WHEN Fo_VerificationDeliveryAddM_DeliveryID = 1 THEN 'Ambil Sendiri'
WHEN Fo_VerificationDeliveryAddM_DeliveryID = 4 THEN CONCAT(M_DeliveryName)
WHEN Fo_VerificationDeliveryAddM_DeliveryID = 2 THEN CONCAT(M_DeliveryName)
WHEN ( Fo_VerificationDeliveryAddM_DeliveryID = 7 OR Fo_VerificationDeliveryAddM_DeliveryID = 9 ) THEN CONCAT(M_DeliveryName)
WHEN ( Fo_VerificationDeliveryAddM_DeliveryID = 6 OR Fo_VerificationDeliveryAddM_DeliveryID = 8 ) THEN CONCAT(M_DeliveryName)
ELSE
CONCAT(M_DeliveryName)
END as label,
CASE
WHEN Fo_VerificationDeliveryAddM_DeliveryID = 1 THEN ''
WHEN Fo_VerificationDeliveryAddM_DeliveryID = 4 THEN M_DoctorAddressDescription
WHEN Fo_VerificationDeliveryAddM_DeliveryID = 2 THEN M_PatientAddressDescription
WHEN ( Fo_VerificationDeliveryAddM_DeliveryID = 7 OR Fo_VerificationDeliveryAddM_DeliveryID = 9 ) THEN M_DoctorHP
WHEN ( Fo_VerificationDeliveryAddM_DeliveryID = 6 OR Fo_VerificationDeliveryAddM_DeliveryID = 8 ) THEN M_PatientHP
ELSE
Fo_VerificationDeliveryAddDestination
END as destination,
CASE
WHEN Fo_VerificationDeliveryAddM_DeliveryID = 4 THEN M_DoctorAddressID
WHEN Fo_VerificationDeliveryAddM_DeliveryID = 2 THEN M_PatientAddressID
ELSE
0
END as addressid,
'brown' as color,
'' as status_payment,
'' as url
FROM fo_verification_delivery_add
JOIN t_orderheader ON Fo_VerificationDeliveryAddT_OrderHeaderID = T_OrderHeaderID
JOIN m_delivery ON Fo_VerificationDeliveryAddM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON Fo_VerificationDeliveryAddM_DeliveryTypeID = M_DeliveryTypeID
LEFT JOIN m_doctoraddress ON Fo_VerificationDeliveryAddAddressID = M_DoctorAddressID AND Fo_VerificationDeliveryAddM_DeliveryID = 4
LEFT JOIN m_patientaddress ON Fo_VerificationDeliveryAddAddressID = M_PatientAddressID AND Fo_VerificationDeliveryAddM_DeliveryID = 2
LEFT JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID AND ( Fo_VerificationDeliveryAddM_DeliveryID = 7 OR Fo_VerificationDeliveryAddM_DeliveryID = 9 )
LEFT JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND ( Fo_VerificationDeliveryAddM_DeliveryID = 6 OR Fo_VerificationDeliveryAddM_DeliveryID = 8 )
WHERE
Fo_VerificationDeliveryAddT_OrderHeaderID = {$orderid} AND Fo_VerificationDeliveryAddIsActive = 'Y'
";
//echo $query ;
$rows = $this->db_onedev->query($query)->result_array();
//echo $this->db_onedev->last_query();
$rst = '';
foreach ($rows as $k => $v) {
if ($rst != '') {
$rst = $rst . ' , ' . $v['label'];
}
$rows[$k]['url'] = array();
if ($v['typedeliveryid'] == '3' || $v['typedeliveryid'] == '4' || $v['typedeliveryid'] == '5') {
$sql = "SELECT IF(M_MouIsBill = 'Y','Y',Last_StatusPaymentIsLunas) as xpayment
FROM last_statuspayment
join t_orderheader ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
WHERE
Last_StatusPaymentT_OrderHeaderID = {$orderid}";
//echo $sql;
$status_payment = $this->db_onedev->query($sql)->row()->xpayment;
$rows[$k]['status_payment'] = $status_payment;
if ($status_payment == 'Y') {
$sql = "SELECT *
FROM t_email_nonlab
JOIN so_resultentry ON T_EmailNonLabResultEntryID = So_ResultEntryID
WHERE
T_EmailNonLabT_OrderHeaderID = {$orderid} AND T_EmailNonLabResultEntryID = {$re_id}";
$row_format = $this->db_onedev->query($sql)->row_array();
if ($row_format) {
$format = array();
$url = array();
$rows[$k]['color'] = 'teal lighten-2';
$rows[$k]['label'] = $v["label"] . " : " . $row_format['T_EmailNonLabFormat'];
$url = array(array('test' => '', 'url' => $row_format['T_EmailNonLabUrl']));
array_push($format, $row_format['T_EmailNonLabFormat']);
if ($row_format['So_ResultEntrySo_TemplateOther'] == 'UMUM' || $row_format['So_ResultEntrySo_TemplateOther'] == 'UMUM_KONSUL') {
$url = array();
$ex_url = explode('|^|', $row_format['T_EmailNonLabUrl']);
//print_r($ex_url);
foreach ($ex_url as $k_url => $v_url) {
if ($k_url == 0)
$testname = 'Riwayat';
else
$testname = 'Fisik';
$xurl = array('test' => $testname, 'url' => $v_url);
array_push($url, $xurl);
}
}
if ($row_format['So_ResultEntrySo_TemplateOther'] == 'UMUM_K3') {
$url = array();
$ex_url = explode('|^|', $row_format['T_EmailNonLabUrl']);
//print_r($ex_url);
foreach ($ex_url as $k_url => $v_url) {
if ($k_url == 0)
$testname = 'Riwayat';
else if ($k_url == 1)
$testname = 'Fisik';
else
$testname = 'Pajanan';
$xurl = array('test' => $testname, 'url' => $v_url);
array_push($url, $xurl);
}
}
$join_format = join(",", $format);
$rows[$k]['url'] = $url;
$rows[$k]['label'] = $v["label"] . " : " . $join_format;
}
else {
$rows[$k]['label'] = $v["label"] . " : Belum Pilih Format";
}
}
else {
$rows[$k]['color'] = 'orange lighten-2';
$rows[$k]['url'] = '';
}
}
$rst .= $v['label'];
}
return $rows;
}
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;
}
function getdoctors($sampletypeid)
{
$rows = [];
$sql = "SELECT M_DoctorID as doctor_id,
CONCAT(M_DoctorPrefix,M_DoctorPrefix2,' ',M_DoctorName,'...') as doctor_fullname
FROM m_doctor
JOIN m_doctor ON M_DoctorSOM_DoctorID = M_DoctorID
WHERE
M_DoctorSOIsActive = 'Y'
GROUP BY M_DoctorSOID";
//echo $sql;
$rows = $this->db_onedev->query($sql)->result_array();
return $rows;
}
function search_old_lama()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$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);
$search = $prm["search"];
$status = $prm["stationid"];
$startdate = $prm["startdate"];
$enddate = $prm["enddate"];
$groupid = $prm["groupid"];
$subgroupid = $prm["subgroupid"];
$companyid = $prm['companyid'];
$filter_company = '';
$filter_company_exclude = "";
if ($companyid) {
if (($companyid != 0 || $companyid != '0') && $prm["switch_exclude"])
$filter_company_exclude = "WHERE company_id <> {$companyid}";
if (($companyid != 0 || $companyid != '0') && !$prm["switch_exclude"]) {
$filter_company = " AND T_OrderHeaderCorporateID = {$companyid}";
}
}
$join_group = '';
if ($groupid != 0) {
$join_group = "JOIN nat_group ON T_TestNat_GroupID = Nat_GroupID AND Nat_GroupID = {$groupid}";
}
$join_subgroup = '';
if ($subgroupid != 0) {
$join_group = "JOIN nat_subgroup ON T_TestNat_SubgroupID = Nat_SubgroupID AND Nat_SubgroupID = {$subgroupid}";
}
if (!isset($prm['current_page']))
$prm['current_page'] = 1;
$sql_where = "WHERE ( ( T_SamplingSoDoneDate BETWEEN '{$startdate} 00:00:00' AND '{$enddate} 23:59:59' ) OR ( T_OrderHeaderDate BETWEEN '{$startdate} 00:00:00' AND '{$enddate} 23:59:59' ) ) AND T_SamplingSoIsActive = 'Y'";
$number_limit = 10;
$number_offset = ($prm['current_page'] - 1) * $number_limit;
//$sql_param = array();
if ($search != "") {
$sql_where .= " AND ( T_OrderHeaderLabNumber like '%$search%' OR M_PatientName like '%$search%' ) ";
// $prm['current_page'] = 1;
}
$sql = " SELECT count(*) as total
FROM (
SELECT T_SamplingSOID
FROM t_samplingso
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_SamplingSOT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID IN ({$group_results})
JOIN t_orderheader ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company
$sql_where
GROUP BY T_SamplingSOID
) x
$filter_company_exclude
";
//echo $sql;
$query = $this->db_onedev->query($sql);
$tot_count = 0;
$tot_page = 0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
$tot_page = ceil($tot_count / $number_limit);
}
else {
$this->sys_error_db("t_samplestorageout count", $this->db_onedev);
exit;
}
$sql = "SELECT * FROM (
SELECT
T_OrderHeaderID as trx_id,
IFNULL(So_ResultEntryID,0) as re_id,
T_OrderHeaderLabNumber as ordernumber,
'' as ordernumber_ext,
CONCAT(M_TitleName,' ',M_PatientName) as patient_fullname,
IF(M_PatientGender = 'male','LAKI-LAKI','PEREMPUAN') as sexname,
IF(M_PatientGender = 'male','L','P') as sexcode,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as orderdate,
DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob,
T_OrderHeaderM_PatientAge as age,
UPPER(T_OrderHeaderM_PatientAge) as umur,
'' as languange_name,
T_TestName as test_name,
Group_ResultName as group_name,
Group_ResultResumeMcu as group_resume_mcu,
'' as details,
CASE
WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU'
WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI'
WHEN So_ResultEntryStatus = 'VAL2' THEN 'VERIFIKASI'
WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE'
END as status_name,
'' as deliveries,
'N' as iscito,
'' as doctor_fullname,
IFNULL(T_OrderHeaderFoNote,'') as fo_note,
fn_getstaffname(T_OrderHeaderFoNoteM_UserID) as fo_note_user,
'' as fo_ver_note,
'' as fo_ver_note_user,
'' as sampling_note,
'' as sampling_note_user,
UPPER(CorporateName) as company_name,
CorporateID as company_id,
T_SamplingSOID,
T_OrderHeaderID,
T_TestID
FROM t_samplingso
JOIN t_orderdetail ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderDetailT_TestID = T_SamplingSoT_TestID AND T_OrderDEtailIsActive = 'Y'
JOIN t_test ON T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_SamplingSoT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID IN ({$group_results})
JOIN t_orderheader ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
$sql_where
GROUP BY T_OrderHeaderID, T_TestID
ORDER BY T_OrderHeaderID ASC
limit $number_limit offset $number_offset) x
$filter_company_exclude";
//echo $sql;
$query = $this->db_onedev->query($sql);
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
if ($rows) {
foreach ($rows as $k => $v) {
$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'];
$rows[$k]['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_DoctorSufix,M_DoctorSufix)) as doctor_fullname,
'' as details,
'' as langs,
'' as photos
FROM t_samplingso
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'
JOIN t_test ON T_SamplingSoT_TestID = T_TestID
LEFT JOIN m_doctor ON So_ResultEntryM_DoctorID = M_DoctorID
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})
WHERE
T_SamplingSoID = {$v['T_SamplingSOID']} AND T_SamplingSoIsActive = 'Y'
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']);
}
}
$sql = "
SELECT UPPER(CorporateName) as name,
CorporateID as id
FROM so_resultentry
JOIN t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID AND T_SamplingSoIsActive = 'Y'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID
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})
$sql_where
GROUP BY T_OrderHeaderCorporateID
";
//echo $sql;
$companies = $this->db_onedev->query($sql)->result_array();
//$this->_add_address($rows);
$result = array("total" => $tot_page, "companies" => $companies, "records" => $rows);
$this->sys_ok($result);
exit;
}
function search()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$userid = $this->sys_user["M_UserID"];
$number_limit = 10;
$number_offset = ($prm['current_page'] - 1) * $number_limit;
$filter_branch = '';
$sql = "SELECT *
FROM m_user
WHERE
M_UserID = ?";
$query = $this->db_onedev->query($sql, array($userid));
$data_user = $query->row_array();
$filter_branch = "";
$branch_params = array();
$sql = "SELECT *
FROM group_result_entry
WHERE
GroupResultEntryCode = '04' AND GroupResultEntryIsActive = 'Y'";
$xgresult = $this->db_onedev->query($sql)->result_array();
$group_results = array(); // Inisialisasi array kosong
if ($xgresult) {
foreach ($xgresult as $kgr => $vgr) {
array_push($group_results, $vgr['GroupResultEntryGroup_ResultID']);
}
}
$group_results = join(",", $group_results);
$search = $prm["search"];
$status = $prm["stationid"];
$startdate = $prm["startdate"];
$enddate = $prm["enddate"];
$groupid = $prm["groupid"];
$subgroupid = $prm["subgroupid"];
$companyid = $prm['companyid'];
$filter_company = '';
$filter_company_exclude = "";
$sql_where = "WHERE ( ( T_SamplingSoDoneDate BETWEEN ? AND ? ) OR
( T_OrderHeaderDate BETWEEN ? AND ? ) )
AND T_SamplingSoIsActive = 'Y'";
$where_params = array(
$startdate . ' 00:00:00',
$enddate . ' 23:59:59',
$startdate . ' 00:00:00',
$enddate . ' 23:59:59'
);
if ($search != "") {
$sql_where .= " AND ( T_OrderHeaderLabNumber LIKE ? OR M_PatientName LIKE ? ) ";
array_push($where_params, "%$search%", "%$search%");
}
if ($companyid && ($companyid != 0 || $companyid != '0')) {
if ($prm["switch_exclude"]) {
$filter_company_exclude = "WHERE company_id <> ?";
$company_exclude_params = array($companyid);
}
else {
$filter_company = " AND T_OrderHeaderCorporateID = ?";
$company_params = array($companyid);
}
}
$sql = "SELECT count(*) as total
FROM (
SELECT T_SamplingSOID
FROM t_samplingso
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_SamplingSOT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID IN ({$group_results})
JOIN t_orderheader ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID $filter_branch
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
$sql_where
GROUP BY T_SamplingSOID
) x
$filter_company_exclude";
$query_params = array_merge(
$branch_params,
isset($company_params) ? $company_params : array(),
$where_params,
isset($company_exclude_params) ? $company_exclude_params : array()
);
$query = $this->db_onedev->query($sql, $query_params);
$tot_count = 0;
$tot_page = 0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
$tot_page = ceil($tot_count / $number_limit);
}
else {
$this->sys_error_db("t_samplestorageout count", $this->db_onedev);
exit;
}
$sql = "SELECT * FROM (
SELECT
T_OrderHeaderID as trx_id,
IFNULL(So_ResultEntryID,0) as re_id,
T_OrderHeaderLabNumber as ordernumber,
'' as ordernumber_ext,
CONCAT(M_TitleName,' ',M_PatientName) as patient_fullname,
UPPER(M_SexName) as sexname,
UPPER(M_SexCode) as sexcode,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as orderdate,
DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob,
T_OrderHeaderM_PatientAge as age,
UPPER(T_OrderHeaderM_PatientAge) as umur,
'' as languange_name,
T_TestName as test_name,
Group_ResultName as group_name,
Group_ResultResumeMcu as group_resume_mcu,
'' as details,
CASE
WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU'
WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI'
WHEN So_ResultEntryStatus = 'VAL2' THEN 'VERIFIKASI'
WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE'
END as status_name,
'' as deliveries,
'N' as iscito,
'' as doctor_fullname,
IFNULL(T_OrderHeaderFoNote,'') as fo_note,
fn_getstaffname(T_OrderHeaderFoNoteM_UserID) as fo_note_user,
'' as fo_ver_note,
'' as fo_ver_note_user,
'' as sampling_note,
'' as sampling_note_user,
UPPER(M_CompanyName) as company_name,
M_CompanyID as company_id,
T_SamplingSOID,
T_OrderHeaderID,
T_TestID
FROM t_samplingso
JOIN t_orderdetail ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderDetailT_TestID = T_SamplingSoT_TestID AND T_OrderDEtailIsActive = 'Y'
JOIN t_test ON T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_SamplingSoT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID IN ({$group_results})
JOIN t_orderheader ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID $filter_branch
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN m_sex ON M_PatientM_SexID = M_SexID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
LEFT JOIN so_resultentry ON T_OrderDetailID = So_ResultEntryT_OrderDetailID AND So_ResultEntryIsActive = 'Y'
$sql_where
GROUP BY T_OrderHeaderID, T_TestID
ORDER BY T_OrderHeaderID ASC
limit ? offset ?) x
$filter_company_exclude";
$query_params = array_merge(
$branch_params,
isset($company_params) ? $company_params : array(),
$where_params,
array($number_limit, $number_offset),
isset($company_exclude_params) ? $company_exclude_params : array()
);
$query = $this->db_onedev->query($sql, $query_params);
//echo $this->db_onedev->last_query();
if (!$query) {
echo $this->db_onedev->last_query();
exit;
}
$rows = $query->result_array();
$sql = "SELECT UPPER(M_CompanyName) as name,
M_CompanyID as id
FROM so_resultentry
JOIN t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = So_ResultEntryT_OrderHeaderID
AND T_SamplingSoT_TestID = T_TestID
AND T_SamplingSoIsActive = 'Y'
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID
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 (?)
$sql_where
GROUP BY T_OrderHeaderM_CompanyID";
$company_params = array_merge(
array($group_results),
$where_params
);
$companies = $this->db_onedev->query($sql, $company_params)->result_array();
//$this->_add_address($rows);
$result = array("total" => $tot_page, "companies" => $companies, "records" => $rows);
$this->sys_ok($result);
exit;
}
function get_details()
{
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 FisikTemplateType as xtype
FROM fisik_template
JOIN t_orderheader ON T_OrderHeaderID = {$v['T_OrderHeaderID']}
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 FisikTemplateType";
//echo $sql;
//exit;
$arr_types = $this->db_onedev->query($sql)->result_array();
$arr_types = [];
$xtypes = [];
if (count($arr_types) == 0) {
$sql = "SELECT FisikTemplateType as xtype
FROM fisik_template
JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateID = FisikTemplateID
JOIN fisik_template_mapping ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID
JOIN fisik_map_test_template ON Fisik_MapTestTemplateFisikTemplateMappingID = FisikTemplateMappingID
JOIN t_samplingso ON T_SamplingSOID = {$v['T_SamplingSOID']}
JOIN t_test ON T_SamplingSoT_TestID = T_TestID AND Fisik_MapTestTemplateNat_TestID = T_TestNat_TestID
WHERE FisikTemplateIsActive = 'Y'
GROUP BY FisikTemplateType
";
//echo $sql;
$arr_types = $this->db_onedev->query($sql)->result_array();
}
foreach ($arr_types as $key => $value) {
$xtypes[] = $value['xtype'];
}
$template_name = "Fisik Umum";
if (in_array("K3", $xtypes)) {
$template_name = "Fisik Umum K3";
}
$results = [];
$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,
if(So_ResultEntryNonlab_TemplateID = 27,'{$template_name}',NonlabTemplateName) 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(IFNULL(M_DoctorPrefix,''),IFNULL(M_DoctorPrefix2,''),' ',M_DoctorName,IFNULL(CONCAT(' ',M_DoctorSufix),''),IFNULL(M_DoctorSufix2,''))) 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})
JOIN so_resultentry ON T_SamplingSoT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND So_ResultEntryID = {$v['re_id']}
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;
$arr_other = ['TBBB', 'VISUS', 'BW'];
if (in_array($vi['template_name'], $arr_other)) {
if ($vi['template_name'] == 'TBBB') {
$sql = "SELECT T_SamplingAdditionalFisikBBTBID as id,
T_SamplingAdditionalFisikBBTBT_OrderHeaderID as order_id,
T_SamplingAdditionalFisikBBTBValueBB as bb,
T_SamplingAdditionalFisikBBTBValueTB as tb,
T_SamplingAdditionalFisikBBTBBodyFat as bodyfat,
T_SamplingAdditionalFisikBBTBStandart as standart,
IF(Nat_TestID IS NULL, 'N','Y') as has_bodyfat
FROM t_samplingso_additional_fisik_bbtb
LEFT JOIN nat_test ON {$vi['nat_testid']} = Nat_TestID AND Nat_TestCode = '40110902'
WHERE T_SamplingAdditionalFisikBBTBIsActive = 'Y' AND
T_SamplingAdditionalFisikBBTBT_OrderHeaderID = ?
LIMIT 1";
$qry = $this->db_onedev->query($sql, [$vi['orderid']]);
if (!$qry) {
echo $this->db_onedev->last_query();
}
$data_tbbb = $qry->row_array();
$results = $data_tbbb;
}
if ($vi['template_name'] == 'VISUS') {
$sql = "SELECT T_SamplingAdditionalFisikVisusID as id,
T_SamplingAdditionalFisikVisusT_OrderHeaderID as order_id,
T_SamplingAdditionalFisikVisusTKODV as tkodv,
T_SamplingAdditionalFisikVisusTKOSV as tkosv,
T_SamplingAdditionalFisikVisusDKODV as dkodv,
T_SamplingAdditionalFisikVisusDKOSV as dkosv,
T_SamplingAdditionalFisikVisusODSPH as odsph,
T_SamplingAdditionalFisikVisusODCYL as odcyl,
T_SamplingAdditionalFisikVisusODX as odx,
T_SamplingAdditionalFisikVisusOSSPH as ossph,
T_SamplingAdditionalFisikVisusOSCYL as oscyl,
T_SamplingAdditionalFisikVisusOSX as osx,
T_SamplingAdditionalFisikVisusADD as visusadd
FROM t_samplingso_additional_fisik_visus
WHERE
T_SamplingAdditionalFisikVisusT_OrderHeaderID = ?
LIMIT 1";
$data_visus = $this->db_onedev->query($sql, [$vi['orderid']])->row_array();
$results = $data_visus;
}
if ($vi['template_name'] == 'BW') {
$sql = "SELECT T_SamplingAdditionalFisikBWID as id,
T_SamplingAdditionalFisikBWT_OrderHeaderID as order_id,
T_SamplingAdditionalFisikBWPWValue as value,
T_SamplingAdditionalFisikBWPWVAngka as angka,
T_SamplingAdditionalFisikBWPWKeterangan as keterangan
FROM t_samplingso_additional_fisik_bw
WHERE
T_SamplingAdditionalFisikBWT_OrderHeaderID = ?
LIMIT 1";
$data_bw = $this->db_onedev->query($sql, [$vi['orderid']])->row_array();
$results = $data_bw;
}
}
else {
$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']);
$rst_details[$ki]['deliveries'] = $this->_get_delivery_data($vi['orderid']);
}
//$rows[$k]['details'] = $rst_details;
//$rows[$k]['deliveries'] = $this->getdeliveries($v['trx_id'],$v['re_id']);
$sql = "SELECT
T_OrderHeaderID as trx_id,
IFNULL(So_ResultEntryID,0) as re_id,
T_OrderHeaderLabNumber as ordernumber,
'' as ordernumber_ext,
CONCAT(M_TitleName,' ',M_PatientName) as patient_fullname,
UPPER(M_SexName) as sexname,
UPPER(M_SexCode) as sexcode,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as orderdate,
DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob,
T_OrderHeaderM_PatientAge as age,
UPPER(T_OrderHeaderM_PatientAge) as umur,
'' as languange_name,
T_TestName as test_name,
Group_ResultName as group_name,
Group_ResultResumeMcu as group_resume_mcu,
'' as details,
CASE
WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU'
WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI'
WHEN So_ResultEntryStatus = 'VAL2' THEN 'VERIFIKASI'
WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE'
END as status_name,
'' as deliveries,
'N' as iscito,
'' as doctor_fullname,
IFNULL(T_OrderHeaderFoNote,'') as fo_note,
fn_getstaffname(T_OrderHeaderFoNoteM_UserID) as fo_note_user,
'' as fo_ver_note,
'' as fo_ver_note_user,
'' as sampling_note,
'' as sampling_note_user,
UPPER(M_CompanyName) as company_name,
M_CompanyID as company_id,
T_SamplingSOID,
T_OrderHeaderID,
T_TestID
FROM t_samplingso
JOIN t_orderdetail ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderDetailT_TestID = T_SamplingSoT_TestID AND T_OrderDetailIsActive = 'Y'
JOIN so_resultentry ON T_OrderDetailID = So_ResultEntryT_OrderDetailID AND So_ResultEntryIsActive = 'Y' AND
So_ResultEntryID = {$vi['trx_id']}
JOIN t_test ON T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_SamplingSoT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID
JOIN t_orderheader ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN m_sex ON M_PatientM_SexID = M_SexID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
";
$query = $this->db_onedev->query($sql);
if (!$query) {
echo $this->db_onedev->last_query();
}
$row_selected = $query->row_array();
$result = array("records" => $rst_details, "row_selected" => $row_selected, "results" => $results);
$this->sys_ok($result);
exit;
}
function search_bynolab()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$search = $prm["nolab"];
$type = $prm["type"];
$userid = $this->sys_user["M_UserID"];
$group_results = array();
$sql = "SELECT *
FROM group_result_entry
JOIN group_result ON GroupResultEntryGroup_ResultID = Group_ResultID AND Group_ResultResumeMcu = '{$type}'
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);
$sql = " SELECT
T_OrderHeaderID as trx_id,
IFNULL(So_ResultEntryID,0) as re_id,
T_OrderHeaderLabNumber as ordernumber,
'' as ordernumber_ext,
CONCAT(M_TitleName,' ',M_PatientName) as patient_fullname,
M_SexName as sexname,
M_SexCode as sexcode,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as orderdate,
DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob,
T_OrderHeaderM_PatientAge as age,
UPPER(T_OrderHeaderM_PatientAge) as umur,
'' as languange_name,
T_TestName as test_name,
Group_ResultName as group_name,
Group_ResultResumeMcu as group_resume_mcu,
'' as details,
CASE
WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU'
WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI'
WHEN So_ResultEntryStatus = 'VAL2' THEN 'VERIFIKASI'
WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE'
END as status_name,
'' as deliveries,
'N' as iscito,
'' as doctor_fullname,
IFNULL(T_OrderHeaderFoNote,'') as fo_note,
fn_getstaffname(T_OrderHeaderFoNoteM_UserID) as fo_note_user,
'' as fo_ver_note,
'' as fo_ver_note_user,
'' as sampling_note,
'' as sampling_note_user,
UPPER(M_CompanyName) as company_name,
M_CompanyID as company_id,
T_SamplingSOID
FROM t_samplingso
JOIN t_test ON T_SamplingSoT_TestID = T_TestID
JOIN t_orderheader ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderLabNumber = '{$search}'
JOIN t_orderdetail ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailT_TestID = T_SamplingSoT_TestID AND T_OrderDetailIsActive = 'Y'
LEFT JOIN so_resultentry ON T_OrderDetailID = So_ResultEntryT_OrderDetailID AND So_ResultEntryIsActive = 'Y'
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN m_sex ON M_PatientM_SexID = M_SexID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
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})
WHERE
T_SamplingSoIsActive = 'Y'
GROUP BY T_SamplingSOID
ORDER BY T_SamplingSOID ASC";
//echo $sql;
$query = $this->db_onedev->query($sql);
//echo $this->db_onedev->last_query();
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
if ($rows) {
foreach ($rows as $k => $v) {
//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) {
$v['re_id'] = $insert_so['So_ResultEntryID'];
$rows[$k]['re_id'] = $v['re_id'];
$v['status_name'] = 'BARU';
$rows[$k]['status_name'] = $v['status_name'];
}
}
$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();
//echo $sql;
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']} AND So_ResultEntryM_DoctorID = '0'
";
$this->db_onedev->query($sql);
//echo $sql;
}
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,
0 as language_id,
So_ResultEntryNonlab_TemplateID as template_id,
So_ResultEntryNonlab_TemplateName as template_name,
NonlabTemplateFlagOther as template_flag_other,
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_DoctorSufix,M_DoctorSufix)) as doctor_fullname,
'' as details,
'' as langs,
'' as photos
FROM t_samplingso
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'
JOIN t_test ON T_SamplingSoT_TestID = T_TestID
LEFT JOIN m_doctor ON So_ResultEntryM_DoctorID = M_DoctorID
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})
WHERE
T_SamplingSoID = {$v['T_SamplingSOID']} AND T_SamplingSoIsActive = 'Y'
GROUP BY T_SamplingSOID";
$rst_details = $this->db_onedev->query($sql)->result_array();
foreach ($rst_details as $ki => $vi) {
$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]['photos'] = $this->getphotos($vi['orderid'], $vi['sampletypeid']);
}
$rows[$k]['details'] = $rst_details;
}
}
$sql = "SELECT * FROM `s_menu` WHERE `S_MenuName` = 'Specimen Collection Mobile'";
$query = $this->db_onedev->query($sql)->row();
$row_url_sample = $query->S_MenuUrl;
$xxriwayats = [];
$sql = "SELECT FormRiwayatPasienID as riwayat_pasien_id
FROM t_orderheader
JOIN form_riwayat_pasien ON FormRiwayatPasienT_OrderHeaderID = T_OrderHeaderID AND FormRiwayatPasienIsActive = 'Y'
WHERE
T_OrderHeaderLabNumber = '{$prm['nolab']}'
";
$dt_rows = $this->db_onedev->query($sql)->result_array();
//echo $this->db_onedev->last_query();
if (count($dt_rows) > 0) {
$riwayat_pasien_id = $dt_rows[0]['riwayat_pasien_id'];
$sql = "SELECT FormRiwayatPasienTemplateDetails as json_data
FROM form_riwayat_pasien_template
WHERE
FormRiwayatPasienTemplateFormRiwayatPasienID = ? AND
FormRiwayatPasienTemplateIsActive = 'Y'";
$dt_riwayats = $this->db_onedev->query($sql, [$riwayat_pasien_id])->result_array();
//echo $this->db_onedev->last_query();
if (count($dt_riwayats) > 0) {
foreach ($dt_riwayats as $k => $v) {
$json_data = json_decode($v['json_data'], true);
$xxriwayats[] = $json_data;
}
}
}
$result = array("records" => $rows, "next_url" => $row_url_sample, "riwayats" => $xxriwayats);
$this->sys_ok($result);
exit;
}
function search_bynolab_8()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$search = $prm["nolab"];
$type = $prm["type"];
$userid = $this->sys_user["M_UserID"];
$group_results = array();
$sql = "SELECT *
FROM group_result_entry
JOIN group_result ON GroupResultEntryGroup_ResultID = Group_ResultID AND Group_ResultResumeMcu = '{$type}'
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);
$sql = " SELECT
T_OrderHeaderID as trx_id,
IFNULL(So_ResultEntryID,0) as re_id,
T_OrderHeaderLabNumber as ordernumber,
'' as ordernumber_ext,
CONCAT(M_TitleName,' ',M_PatientName) as patient_fullname,
IF(M_PatientGender = 'male','LAKI-LAKI','PEREMPUAN') as sexname,
IF(M_PatientGender = 'male','L','P') as sexcode,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as orderdate,
DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob,
T_OrderHeaderM_PatientAge as age,
UPPER(T_OrderHeaderM_PatientAge) as umur,
'' as languange_name,
T_TestName as test_name,
Group_ResultName as group_name,
Group_ResultResumeMcu as group_resume_mcu,
'' as details,
CASE
WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU'
WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI'
WHEN So_ResultEntryStatus = 'VAL2' THEN 'VERIFIKASI'
WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE'
END as status_name,
'' as deliveries,
'N' as iscito,
'' as doctor_fullname,
IFNULL(T_OrderHeaderFoNote,'') as fo_note,
fn_getstaffname(T_OrderHeaderFoNoteM_UserID) as fo_note_user,
'' as fo_ver_note,
'' as fo_ver_note_user,
'' as sampling_note,
'' as sampling_note_user,
UPPER(CorporateName) as company_name,
CorporateID as company_id,
T_SamplingSOID
FROM t_samplingso
JOIN t_test ON T_SamplingSoT_TestID = T_TestID
JOIN t_orderheader ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderLabNumber = '{$search}'
JOIN t_orderdetail ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailT_TestID = T_SamplingSoT_TestID AND T_OrderDetailIsActive = 'Y'
LEFT JOIN so_resultentry ON T_OrderDetailID = So_ResultEntryT_OrderDetailID AND So_ResultEntryIsActive = 'Y'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
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})
WHERE
T_SamplingSoIsActive = 'Y'
GROUP BY T_SamplingSOID
ORDER BY T_SamplingSOID ASC";
//echo $sql;
$query = $this->db_onedev->query($sql);
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
if ($rows) {
foreach ($rows as $k => $v) {
//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) {
$v['re_id'] = $insert_so['So_ResultEntryID'];
$rows[$k]['re_id'] = $v['re_id'];
$v['status_name'] = 'BARU';
$rows[$k]['status_name'] = $v['status_name'];
}
}
$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();
//echo $sql;
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']} AND So_ResultEntryM_DoctorID = '0'
";
$this->db_onedev->query($sql);
//echo $sql;
}
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,
0 as language_id,
So_ResultEntryNonlab_TemplateID as template_id,
So_ResultEntryNonlab_TemplateName as template_name,
NonlabTemplateFlagOther as template_flag_other,
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_DoctorSufix,M_DoctorSufix)) as doctor_fullname,
'' as details,
'' as langs,
'' as photos
FROM t_samplingso
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'
JOIN t_test ON T_SamplingSoT_TestID = T_TestID
LEFT JOIN m_doctor ON So_ResultEntryM_DoctorID = M_DoctorID
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})
WHERE
T_SamplingSoID = {$v['T_SamplingSOID']} AND T_SamplingSoIsActive = 'Y'
GROUP BY T_SamplingSOID";
$rst_details = $this->db_onedev->query($sql)->result_array();
//echo $this->db_onedev->last_query();
foreach ($rst_details as $ki => $vi) {
$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();
echo $this->db_onedev->last_query();
$rst_details[$ki]['photos'] = $this->getphotos($vi['orderid'], $vi['sampletypeid']);
}
$rows[$k]['details'] = $rst_details;
}
}
$sql = "SELECT * FROM `s_menu` WHERE `S_MenuName` = 'Specimen Collection Mobile'";
$query = $this->db_onedev->query($sql)->row();
$row_url_sample = $query->S_MenuUrl;
$riwayats = [];
$sql = "SELECT FormRiwayatPasienID as riwayat_pasien_id
FROM t_orderheader
JOIN form_riwayat_pasien ON FormRiwayatPasienT_OrderHeaderID = T_OrderHeaderID AND FormRiwayatPasienIsActive = 'Y'
WHERE
T_OrderHeaderLabNumber = '{$prm['labnumber']}'
";
$rows = $this->db_onedev->query($sql)->result_array();
if (count($rows) > 0) {
$riwayat_pasien_id = $rows[0]['riwayat_pasien_id'];
$sql = "SELECT FormRiwayatPasienTemplateDetails as json_data
FROM form_riwayat_pasien_template
WHERE
FormRiwayatPasienTemplateFormRiwayatPasienID = ? AND
FormRiwayatPasienTemplateIsActive = 'Y'";
$dt_riwayats = $this->db_onedev->query($sql, [$riwayat_pasien_id])->result_array();
if (count($dt_riwayats) > 0) {
foreach ($dt_riwayats as $k => $v) {
$json_data = json_decode($v['json_data'], true);
$riwayats[] = $json_data;
}
}
}
$result = array("records" => $rows, "next_url" => $row_url_sample, "riwayats" => $riwayats);
$this->sys_ok($result);
exit;
}
function getlangs($orderid)
{
$sql = "
SELECT M_LangID as id, M_LangCode as code, M_LangName as name, 'N' as chex
FROM t_orderheader
JOIN m_lang ON T_OrderHeaderM_LangID = M_LangID
WHERE
T_OrderHeaderID = {$orderid}
UNION
SELECT M_LangID as id, M_LangCode as code, M_LangName as name, 'N' as chex
FROM t_orderheader
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
JOIN m_lang ON T_OrderHeaderAddOnSecondM_LangID = M_LangID
WHERE
T_OrderHeaderID = {$orderid}
";
$rst = $this->db_onedev->query($sql)->result_array();
return $rst;
}
function getordersamples()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$doctorid = $prm['doctorid'];
$doctoraddressid = $prm['doctoraddressid'];
$sql = "SELECT
0 as idx,
M_SexName,
CONCAT(M_TitleName,' ',M_PatientName) as patient_fullname,
T_SampleTypeName as samplename,
T_OrderHeaderLabNumber as labnumber,
T_OrderHeaderID as orderid,
T_SampleTypeID as sampleid,
'Y' as active,
'N' as flag_image
FROM t_samplingso
JOIN t_orderheader ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID
JOIN t_sampletype ON T_SamplingSoT_SampleTypeID = T_SampleTypeID
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN m_title ON M_PatientM_TitleID = M_TitleID
JOIN m_sex ON M_PatientM_SexID = M_SexID
WHERE
T_SamplingSoM_DoctorID = {$doctorid} AND T_SamplingSoM_DoctorAddressID = {$doctoraddressid} AND T_SamplingSoVerifyFlagWL = 'N' AND T_SamplingSoIsActive = 'Y'";
//echo $sql;
$rows = $this->db_onedev->query($sql)->result_array();
$result = array(
"total" => count($rows),
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function get6mwt()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$rst = array();
$prm = $this->sys_input;
$sql = "SELECT *
FROM so_resultentry_smwt
WHERE
So_ResultentrySmwtSo_ResultentryID = {$prm['re_id']} AND So_ResultentrySmwtIsActive = 'Y'";
//echo $sql;
$rows = $this->db_onedev->query($sql)->row_array();
if ($rows) {
$sql = "SELECT So_ResultentrySmwtDetailsID as id,
So_ResultentrySmwtDetailsWaktu as waktu,
So_ResultentrySmwtDetailsSPO2 as spo2,
So_ResultentrySmwtDetailsNadi as nadi
FROM so_resultentry_smwt_details
WHERE
So_ResultentrySmwtDetailsSo_ResultentrySmwtID = {$rows['So_ResultentrySmwtID']} AND
So_ResultentrySmwtDetailsIsActive = 'Y'";
$details_6mwt = $this->db_onedev->query($sql)->result_array();
$rst = array(
'id' => $rows['So_ResultentrySmwtID'],
'bb' => $rows['So_ResultentrySmwtWeight'],
'tb' => $rows['So_ResultentrySmwtHeight'],
'bmi' => $rows['So_ResultentrySmwtBMI'],
'distance' => $rows['So_ResultentrySmwtJarakPutaran'],
'rounds' => $rows['So_ResultentrySmwtJumlahPutaran'],
'pretest' => array(
'tensi' => $rows['So_ResultentrySmwtPreTensi'],
'spo2' => $rows['So_ResultentrySmwtPreSPO2'],
'nadi' => $rows['So_ResultentrySmwtPreNadi'],
'dyspnea' => $rows['So_ResultentrySmwtPreDyspnea'],
'fatigue' => $rows['So_ResultentrySmwtPreFatigue']
),
'posttest' => array(
'tensi' => $rows['So_ResultentrySmwtPostTensi'],
'spo2' => $rows['So_ResultentrySmwtPostSPO2'],
'nadi' => $rows['So_ResultentrySmwtPostNadi'],
'dyspnea' => $rows['So_ResultentrySmwtPostDyspnea'],
'fatigue' => $rows['So_ResultentrySmwtPostFatigue']
),
'details_6mwt' => $details_6mwt
);
}
if (!$rows) {
$rst = array(
'id' => '0',
'bb' => '',
'tb' => '',
'bmi' => '',
'distance' => '',
'rounds' => '',
'pretest' => array('tensi' => '', 'spo2' => '', 'nadi' => '', 'dyspnea' => '', 'fatigue' => ''),
'posttest' => array('tensi' => '', 'spo2' => '', 'nadi' => '', 'dyspnea' => '', 'fatigue' => ''),
'details_6mwt' => array(
array(
'id' => '0',
'waktu' => 'MENIT KE 1',
'spo2' => '',
'nadi' => ''
),
array(
'id' => '0',
'waktu' => 'MENIT KE 2',
'spo2' => '',
'nadi' => ''
),
array(
'id' => '0',
'waktu' => 'MENIT KE 3',
'spo2' => '',
'nadi' => ''
),
array(
'id' => '0',
'waktu' => 'MENIT KE 4',
'spo2' => '',
'nadi' => ''
),
array(
'id' => '0',
'waktu' => 'MENIT KE 5',
'spo2' => '',
'nadi' => ''
),
array(
'id' => '0',
'waktu' => 'MENIT KE 6',
'spo2' => '',
'nadi' => ''
)
)
);
}
$result = array(
"total" => count($rst),
"records" => $rst,
);
$this->sys_ok($result);
exit;
}
function save6mwt()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$trx = $prm['trx'];
$data_6mwt = $prm['data_6mwt'];
$pretest = $data_6mwt['pretest'];
$posttest = $data_6mwt['posttest'];
$details_6mwt = $data_6mwt['details_6mwt'];
$prm['vomax'] = str_replace('VO MAX', 'VO2 MAX', $prm['vomax']);
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') {
$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;
}
}
$sql = "SELECT *
FROM so_resultentry
WHERE
So_ResultEntryID = {$trx['re_id']}
LIMIT 1";
//echo $sql;
$data_re = $this->db_onedev->query($sql)->row_array();
if (intval($data_6mwt['id']) == 0) {
$sql = "SELECT count(*) as cnt
FROM so_resultentry_smwt
WHERE
So_ResultentrySmwtSo_ResultentryID = {$trx['re_id']} AND
So_ResultentrySmwtM_LangID = {$trx['language_id']} AND
So_ResultentrySmwtIsActive = 'Y'
";
$dt = $this->db_onedev->query($sql)->row_array();
if ($dt['cnt'] == 0) {
$data_insert = array(
'So_ResultentrySmwtSo_ResultentryID' => $trx['re_id'],
'So_ResultentrySmwtM_LangID' => $trx['language_id'],
'So_ResultentrySmwtWeight' => $data_6mwt['bb'],
'So_ResultentrySmwtHeight' => $data_6mwt['tb'],
'So_ResultentrySmwtBMI' => $data_6mwt['bmi'],
'So_ResultentrySmwtJarakPutaran' => $data_6mwt['distance'],
'So_ResultentrySmwtJumlahPutaran' => $data_6mwt['rounds'],
'So_ResultentrySmwtPreTensi' => $pretest['tensi'],
'So_ResultentrySmwtPreSPO2' => $pretest['spo2'],
'So_ResultentrySmwtPreNadi' => $pretest['nadi'],
'So_ResultentrySmwtPreDyspnea' => $pretest['dyspnea'],
'So_ResultentrySmwtPreFatigue' => $pretest['fatigue'],
'So_ResultentrySmwtPostTensi' => $posttest['tensi'],
'So_ResultentrySmwtPostSPO2' => $posttest['spo2'],
'So_ResultentrySmwtPostNadi' => $posttest['nadi'],
'So_ResultentrySmwtPostDyspnea' => $posttest['dyspnea'],
'So_ResultentrySmwtPostFatigue' => $posttest['fatigue'],
'So_ResultentrySmwtVOMax' => $prm['vomax'],
'So_ResultentrySmwtKategoriKebugaran' => $prm['category'],
'So_ResultentrySmwtUserID' => $userid
);
$this->db_onedev->insert('so_resultentry_smwt', $data_insert);
$last_id = $this->db_onedev->insert_id();
}
//echo $last_id;
}
else {
$idx_other = 0;
$sql = "SELECT So_ResultentrySmwtID as idx
FROM so_resultentry_smwt
WHERE
So_ResultentrySmwtSo_ResultentryID = {$trx['re_id']} AND
So_ResultentrySmwtM_LangID = {$trx['language_id']} AND
So_ResultentrySmwtIsActive = 'Y' AND
So_ResultentrySmwtID <> {$data_6mwt['id']}
";
$data_other = $this->db_onedev->query($sql)->row_array();
if ($data_other) {
$idx_other = intval($data_other['idx']);
}
if ($idx_other > 0) {
$sql = "UPDATE so_resultentry_smwt SET So_ResultentrySmwtIsActive = 'N'
WHERE So_ResultentrySmwtID = $idx_other";
$this->db_onedev->query($sql);
}
$data_update = array(
'So_ResultentrySmwtSo_ResultentryID' => $trx['re_id'],
'So_ResultentrySmwtM_LangID' => $trx['language_id'],
'So_ResultentrySmwtWeight' => $data_6mwt['bb'],
'So_ResultentrySmwtHeight' => $data_6mwt['tb'],
'So_ResultentrySmwtBMI' => $data_6mwt['bmi'],
'So_ResultentrySmwtJarakPutaran' => $data_6mwt['distance'],
'So_ResultentrySmwtJumlahPutaran' => $data_6mwt['rounds'],
'So_ResultentrySmwtPreTensi' => $pretest['tensi'],
'So_ResultentrySmwtPreSPO2' => $pretest['spo2'],
'So_ResultentrySmwtPreNadi' => $pretest['nadi'],
'So_ResultentrySmwtPreDyspnea' => $pretest['dyspnea'],
'So_ResultentrySmwtPreFatigue' => $pretest['fatigue'],
'So_ResultentrySmwtPostTensi' => $posttest['tensi'],
'So_ResultentrySmwtPostSPO2' => $posttest['spo2'],
'So_ResultentrySmwtPostNadi' => $posttest['nadi'],
'So_ResultentrySmwtPostDyspnea' => $posttest['dyspnea'],
'So_ResultentrySmwtPostFatigue' => $posttest['fatigue'],
'So_ResultentrySmwtVOMax' => $prm['vomax'],
'So_ResultentrySmwtKategoriKebugaran' => $prm['category'],
'So_ResultentrySmwtLastUpdated' => date('Y-m-d H:i:s'),
'So_ResultentrySmwtUserID' => $userid
);
$this->db_onedev->where('So_ResultentrySmwtID', $data_6mwt['id']);
$this->db_onedev->update('so_resultentry_smwt', $data_update);
$last_id = $data_6mwt['id'];
}
if ($idx_other > 0) {
$sql = "UPDATE so_resultentry_smwt_details SET So_ResultentrySmwtDetailsIsActive = 'N'
WHERE So_ResultentrySmwtDetailsSo_ResultentrySmwtID = $idx_other";
$this->db_onedev->query($sql);
}
if ($details_6mwt) {
$sql = "UPDATE so_resultentry_smwt_details SET So_ResultentrySmwtDetailsIsActive = 'N'
WHERE So_ResultentrySmwtDetailsSo_ResultentrySmwtID = $last_id";
$this->db_onedev->query($sql);
foreach ($details_6mwt as $k => $v) {
$detail_insert = array(
'So_ResultentrySmwtDetailsSo_ResultentrySmwtID' => $last_id,
'So_ResultentrySmwtDetailsWaktu' => $v['waktu'],
'So_ResultentrySmwtDetailsSPO2' => $v['spo2'],
'So_ResultentrySmwtDetailsNadi' => $v['nadi'],
'So_ResultentrySmwtDetailsUserID' => $userid
);
$this->db_onedev->insert('so_resultentry_smwt_details', $detail_insert);
/*if(intval($v['id']) == 0){
$detail_insert = array(
'So_ResultentrySmwtDetailsSo_ResultentrySmwtID' => $last_id,
'So_ResultentrySmwtDetailsWaktu' => $v['waktu'],
'So_ResultentrySmwtDetailsSPO2' => $v['spo2'],
'So_ResultentrySmwtDetailsNadi' => $v['nadi'],
'So_ResultentrySmwtDetailsUserID' => $userid
);
$this->db_onedev->insert('so_resultentry_smwt_details', $detail_insert);
}
else{
$detail_update = array(
'So_ResultentrySmwtDetailsSo_ResultentrySmwtID' => $last_id,
'So_ResultentrySmwtDetailsWaktu' => $v['waktu'],
'So_ResultentrySmwtDetailsSPO2' => $v['spo2'],
'So_ResultentrySmwtDetailsNadi' => $v['nadi'],
'So_ResultentrySmwtDetailsLastUpdated'=> date('Y-m-d H:i:s'),
'So_ResultentrySmwtDetailsUserID' => $userid
);
$this->db_onedev->where('So_ResultentrySmwtDetailsID', $v['id']);
$this->db_onedev->update('so_resultentry_smwt_details', $detail_update);
}*/
}
}
if ($prm['action'] === 'val1' && $data_re['So_ResultEntryValidation1'] == 'N' && $data_re['So_ResultEntryValidation2'] == 'N') {
$sql = "UPDATE so_resultentry SET So_ResultEntryValidation1 = 'Y', So_ResultEntryStatus = 'VAL1', So_ResultEntryUserID = {$userid} WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$this->db_onedev->query($sql);
//echo $this->db_onedev->last_query();
}
if ($prm['action'] === 'unval1' && $data_re['So_ResultEntryValidation1'] == 'Y' && $data_re['So_ResultEntryValidation2'] == 'N') {
$sql = "UPDATE so_resultentry SET So_ResultEntryValidation1 = 'N', So_ResultEntryStatus = 'NEW', So_ResultEntryUserID = {$userid} WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$this->db_onedev->query($sql);
}
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = {$last_id} LIMIT 1";
$fresh_header = $this->db_onedev->query($sql)->row_array();
$fresh_header['status_name'] = $this->alias_resultentry_status_name(isset($fresh_header['So_ResultEntryStatus']) ? $fresh_header['So_ResultEntryStatus'] : null);
$result = array(
"total" => 1,
"records" => array('status' => 'OK'),
"header" => $fresh_header
);
$this->sys_ok($result);
exit;
}
function savetypesds()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$type = '30';
if ($prm['type'] == 'SRQ20') {
$type = '20';
}
$sql = "INSERT INTO so_resultentrysds_type (
So_ResultEntrySDSTypeSo_ResultEntryID,
So_ResultEntrySDSTypeValue,
So_ResultEntrySDSTypeCreated,
So_ResultEntrySDSTypeCreatedUserID
) VALUES ({$prm['reid']},'{$type}',NOW(),{$userid})
ON DUPLICATE KEY UPDATE
So_ResultEntrySDSTypeValue = VALUES(So_ResultEntrySDSTypeValue),
So_ResultEntrySDSTypeLastUpdated = NOW(),
So_ResultEntrySDSTypeLastUpdatedUserID = VALUES(So_ResultEntrySDSTypeCreatedUserID)
";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("error save sds type");
// echo $this->db_onedev->last_query();
exit;
}
// $sql = "UPDATE ";
$result = array(
"total" => 1,
"records" => array('status' => 'OK')
);
$this->sys_ok($result);
exit;
}
function saveSDS()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$trx = $prm['trx'];
$data_sds = $prm['data_sds'];
$identitas = $data_sds['identitas'];
$sds30 = $data_sds['sds30'];
$srq20 = $data_sds['srq20'];
$prm_type = isset($prm['type']) ? $prm['type'] : 'SDS30';
$type = '30';
if ($prm_type == 'SRQ20') {
$type = '20';
}
$sql = "INSERT INTO so_resultentrysds_type (
So_ResultEntrySDSTypeSo_ResultEntryID,
So_ResultEntrySDSTypeValue,
So_ResultEntrySDSTypeCreated,
So_ResultEntrySDSTypeCreatedUserID
) VALUES ({$trx['re_id']},'{$type}',NOW(),{$userid})
ON DUPLICATE KEY UPDATE
So_ResultEntrySDSTypeValue = VALUES(So_ResultEntrySDSTypeValue),
So_ResultEntrySDSTypeLastUpdated = NOW(),
So_ResultEntrySDSTypeLastUpdatedUserID = VALUES(So_ResultEntrySDSTypeCreatedUserID)
";
$query = $this->db_onedev->query($sql);
//cek sudah ada tipe belum
$sql = "SELECT * FROM so_resultentrysds_type
WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ?";
$qry = $this->db_onedev->query($sql, [$trx['re_id']]);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error("Error cek type");
exit;
}
$cekType = $qry->result_array();
$typeForm = $cekType[0]['So_ResultEntrySDSTypeValue'];
if ($typeForm == '30') {
$srq20 = [
"questions" => [],
"interpretation" => []
];
}
if ($typeForm == '20') {
$sds30 = [
"questions" => [],
"interpretation" => []
];
}
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;
}
}
$sql = "SELECT *
FROM so_resultentry
WHERE
So_ResultEntryID = {$trx['re_id']}
LIMIT 1";
//echo $sql;
$data_re = $this->db_onedev->query($sql)->row_array();
// print_r($data_re);
//identitas
//cek identitas
$sql = "SELECT
So_ResultEntrySDSIdentityID
FROM so_resultentrysdsidentity WHERE So_ResultEntrySDSIdentitySo_ResultEntryID = {$trx['re_id']}
AND So_ResultEntrySDSIdentityIsActive = 'Y'";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error cek identitas");
exit;
}
$cekIdentitas = $query->result_array();
$dataIdentitas = array(
"So_ResultEntrySDSIdentitySo_ResultEntryID" => $trx['re_id'],
"So_ResultEntrySDSIdentityName" => $identitas['nama'],
"So_ResultEntrySDSIdentityAge" => $identitas['usia'],
"So_ResultEntrySDSIdentityGender" => $identitas['jenis_kelamin'],
"So_ResultEntrySDSIdentityWorkingTime" => $identitas['masa_kerja'],
"So_ResultEntrySDSIdentityDepartement" => $identitas['departement'],
"So_ResultEntrySDSIdentityJobStatus" => $identitas['status_pekerja'],
"So_ResultEntrySDSIdentityJobType" => $identitas['jenis_pekerjaan'],
"So_ResultEntrySDSIdentityPosition" => $identitas['level_jabatan'],
"So_ResultEntrySDSIdentityEducation" => $identitas['pendidikan'],
"So_ResultEntrySDSIdentityMaritalStatus" => $identitas['status_perkawinan'],
"So_ResultEntrySDSIdentityCreatedUserID" => $userid,
"So_ResultEntrySDSIdentityUpdatedUserID" => 0
);
// insert identitas
if (count($cekIdentitas) == 0) {
$dataIdentitas['So_ResultEntrySDSIdentityCreated'] = date("Y-m-d h:i:sa");
$query = $this->db_onedev->insert('so_resultentrysdsidentity', $dataIdentitas);
if (!$query) {
$this->sys_error_db("error insert identitas");
exit;
}
}
else {
//Update
// Hapus elemen So_ResultEntrySDSIdentityCreatedUserID
unset($dataIdentitas['So_ResultEntrySDSIdentityCreatedUserID']);
$dataIdentitas['So_ResultEntrySDSIdentityUpdatedUserID'] = $userid;
$dataIdentitas['So_ResultEntrySDSIdentityUpdated'] = date("Y-m-d h:i:sa");
$this->db_onedev->where('So_ResultEntrySDSIdentityID', $cekIdentitas[0]['So_ResultEntrySDSIdentityID']);
$query = $this->db_onedev->update('so_resultentrysdsidentity', $dataIdentitas);
if (!$query) {
$this->sys_error_db("error update identitas");
exit;
}
}
//INSERT QUESTIONS sds30
for ($i = 0; $i < count($sds30['questions']); $i++) {
//Cek data sudah ada belum
$e = $sds30['questions'][$i];
$sql = "SELECT So_ResultEntrySDSID
FROM so_resultentrysds
WHERE So_ResultEntrySDSSo_ResultEntryID = {$trx['re_id']}
AND So_ResultEntrySDSSDS_TemplateQuestionID = {$e['id']}
AND So_ResultEntrySDSIsActive = 'Y'";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error cek result sds");
exit;
}
$cekSds = $query->result_array();
// print_r($cekSds);
// echo ("\n");
// "So_ResultEntrySDSID" => "",
$dataSds = array(
"So_ResultEntrySDSSo_ResultEntryID" => $trx['re_id'],
"So_ResultEntrySDSSDS_TemplateQuestionID" => $e['id'],
"So_ResultEntrySDSType" => "30",
"So_ResultEntrySDSSDS_TemplateOptionID" => $e['value'],
"So_ResultEntrySDSCreatedUserID" => $userid,
"So_ResultEntrySDSCreated" => $userid,
"So_ResultEntrySDSUpdated" => 0,
);
if (count($cekSds) == 0) {
$dataSds['So_ResultEntrySDSCreated'] = date("Y-m-d h:i:sa");
$query = $this->db_onedev->insert('so_resultentrysds', $dataSds);
if (!$query) {
$this->sys_error_db("error insert result sds");
exit;
}
}
else {
//Update
// Hapus elemen So_ResultEntrySDSID
// $dataSds['So_ResultEntrySDSUpdated'] = date("Y-m-d h:i:sa");
// unset($dataSds['So_ResultEntrySDSCreatedUserID']);
// $dataSds['So_ResultEntrySDSUpdatedUserID'] = $userid;
// $this->db_onedev->where('So_ResultEntrySDSID', $cekSds[0]['So_ResultEntrySDSID']);
// $query = $this->db_onedev->update('so_resultentrysds', $dataSds);
$sql = 'UPDATE so_resultentrysds
SET So_ResultEntrySDSSDS_TemplateOptionID = ?,
So_ResultEntrySDSUpdated = NOW(),
So_ResultEntrySDSUpdatedUserID = ?
WHERE So_ResultEntrySDSID = ?
';
$query = $this->db_onedev->query($sql, [$e['value'], $userid, $cekSds[0]['So_ResultEntrySDSID']]);
if (!$query) {
echo $this->db_onedev->last_query();
$this->sys_error_db("error update result sds");
exit;
}
}
}
//INSERT QUESTIONS srq20
for ($i = 0; $i < count($srq20['questions']); $i++) {
//Cek data sudah ada belum
$e = $srq20['questions'][$i];
$sql = "SELECT So_ResultEntrySDSID
FROM so_resultentrysds
WHERE So_ResultEntrySDSSo_ResultEntryID = {$trx['re_id']}
AND So_ResultEntrySDSSDS_TemplateQuestionID = {$e['id']}
AND So_ResultEntrySDSIsActive = 'Y'";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error cek result sds");
exit;
}
$cekSds = $query->result_array();
// print_r($cekSds);
// echo ("\n");
// "So_ResultEntrySDSID" => "",
$dataSds = array(
"So_ResultEntrySDSSo_ResultEntryID" => $trx['re_id'],
"So_ResultEntrySDSSDS_TemplateQuestionID" => $e['id'],
"So_ResultEntrySDSType" => "20",
"So_ResultEntrySDSSDS_TemplateOptionID" => $e['value'],
"So_ResultEntrySDSCreatedUserID" => $userid,
"So_ResultEntrySDSCreated" => "",
"So_ResultEntrySDSUpdated" => 0,
);
if (count($cekSds) == 0) {
$dataSds['So_ResultEntrySDSCreated'] = date("Y-m-d h:i:sa");
$query = $this->db_onedev->insert('so_resultentrysds', $dataSds);
if (!$query) {
$this->sys_error_db("error insert result sds");
exit;
}
}
else {
//Update
// Hapus elemen So_ResultEntrySDSID
// $dataSds['So_ResultEntrySDSUpdated'] = date("Y-m-d h:i:sa");
// unset($dataSds['So_ResultEntrySDSCreatedUserID']);
// $dataSds['So_ResultEntrySDSUpdatedUserID'] = $userid;
// $this->db_onedev->where('So_ResultEntrySDSID', $cekSds[0]['So_ResultEntrySDSID']);
// $query = $this->db_onedev->update('so_resultentrysds', $dataSds);
$sql = 'UPDATE so_resultentrysds
SET So_ResultEntrySDSSDS_TemplateOptionID = ?,
So_ResultEntrySDSUpdated = NOW(),
So_ResultEntrySDSUpdatedUserID = ?
WHERE So_ResultEntrySDSID = ?
';
$query = $this->db_onedev->query($sql, [$e['value'], $userid, $cekSds[0]['So_ResultEntrySDSID']]);
if (!$query) {
$this->sys_error_db("error update result sds");
exit;
}
}
}
//INSERT interpretation sds30
for ($i = 0; $i < count($sds30['interpretation']); $i++) {
//Cek data sudah ada belum
$e = $sds30['interpretation'][$i];
$sql = "SELECT So_ResultEntrySDSInterpretationID
FROM so_resultentrysdsinterpretation
WHERE So_ResultEntrySDSInterpretationTypeSo_ResultEntryID = {$trx['re_id']}
AND So_ResultEntrySDSInterpretationSDSInterpretationID = {$e['id']}
AND So_ResultEntrySDSInterpretationIsActive = 'Y'";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error cek interpretation sds");
exit;
}
$cekSds = $query->result_array();
// "So_ResultEntrySDSID" => "",
$dataSds = array(
"So_ResultEntrySDSInterpretationTypeSo_ResultEntryID" => $trx['re_id'],
"So_ResultEntrySDSInterpretationSDSInterpretationID" => $e['id'],
"So_ResultEntrySDSInterpretationType" => "30",
"So_ResultEntrySDSInterpretationScore" => $e['score'],
"So_ResultEntrySDSInterpretationDisplay" => $e['levelDisplay'],
"So_ResultEntrySDSInterpretationCreatedUserID" => $userid,
"So_ResultEntrySDSInterpretationUpdatedUserID" => 0,
);
if (count($cekSds) == 0) {
$dataSds['So_ResultEntrySDSInterpretationCreated'] = date("Y-m-d h:i:sa");
$query = $this->db_onedev->insert('so_resultentrysdsinterpretation', $dataSds);
if (!$query) {
$this->sys_error_db("error insert interpretation sds");
exit;
}
}
else {
//Update
// Hapus elemen So_ResultEntrySDSID
$dataSds['So_ResultEntrySDSInterpretationUpdated'] = date("Y-m-d h:i:sa");
unset($dataSds['So_ResultEntrySDSInterpretationCreatedUserID']);
$dataSds['So_ResultEntrySDSInterpretationUpdatedUserID'] = $userid;
$this->db_onedev->where('So_ResultEntrySDSInterpretationID', $cekSds[0]['So_ResultEntrySDSInterpretationID']);
$query = $this->db_onedev->update('so_resultentrysdsinterpretation', $dataSds);
if (!$query) {
$this->sys_error_db("error update interpretation sds");
exit;
}
}
}
//INSERT interpretation srq20
for ($i = 0; $i < count($srq20['interpretation']); $i++) {
//Cek data sudah ada belum
$e = $srq20['interpretation'][$i];
$sql = "SELECT So_ResultEntrySDSInterpretationID
FROM so_resultentrysdsinterpretation
WHERE So_ResultEntrySDSInterpretationTypeSo_ResultEntryID = {$trx['re_id']}
AND So_ResultEntrySDSInterpretationSDSInterpretationID = {$e['id']}
AND So_ResultEntrySDSInterpretationIsActive = 'Y'";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error cek interpretation sds");
exit;
}
$cekSds = $query->result_array();
// "So_ResultEntrySDSID" => "",
$dataSds = array(
"So_ResultEntrySDSInterpretationTypeSo_ResultEntryID" => $trx['re_id'],
"So_ResultEntrySDSInterpretationSDSInterpretationID" => $e['id'],
"So_ResultEntrySDSInterpretationType" => "20",
"So_ResultEntrySDSInterpretationScore" => $e['score'],
"So_ResultEntrySDSInterpretationDisplay" => $e['levelDisplay'],
"So_ResultEntrySDSInterpretationCreatedUserID" => $userid,
"So_ResultEntrySDSInterpretationUpdatedUserID" => 0,
);
if (count($cekSds) == 0) {
$dataSds['So_ResultEntrySDSInterpretationCreated'] = date("Y-m-d h:i:sa");
$query = $this->db_onedev->insert('so_resultentrysdsinterpretation', $dataSds);
if (!$query) {
$this->sys_error_db("error insert interpretation sds");
exit;
}
}
else {
//Update
// Hapus elemen So_ResultEntrySDSID
$dataSds['So_ResultEntrySDSInterpretationUpdated'] = date("Y-m-d h:i:sa");
unset($dataSds['So_ResultEntrySDSInterpretationCreatedUserID']);
$dataSds['So_ResultEntrySDSInterpretationUpdatedUserID'] = $userid;
$this->db_onedev->where('So_ResultEntrySDSInterpretationID', $cekSds[0]['So_ResultEntrySDSInterpretationID']);
$query = $this->db_onedev->update('so_resultentrysdsinterpretation', $dataSds);
if (!$query) {
$this->sys_error_db("error update interpretation sds");
exit;
}
}
}
if ($prm['action'] === 'val1' && $data_re['So_ResultEntryValidation1'] == 'N' && $data_re['So_ResultEntryValidation2'] == 'N') {
$sql = "UPDATE so_resultentry SET So_ResultEntryValidation1 = 'Y', So_ResultEntryStatus = 'VAL1', So_ResultEntryLastUpdatedUserID = {$userid}, So_ResultEntryLastUpdated = NOW() WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$query = $this->db_onedev->query($sql);
if (!$query) {
// $message = $this->db_onedev->error();
// $message['qry'] = $this->db_onedev->last_query();
// print_r($this->db_onedev->last_query());
// $this->sys_error("Error search" . json_encode($message));
$this->sys_error_db("error validasi");
exit;
}
//echo $this->db_onedev->last_query();
}
if ($prm['action'] === 'unval1' && $data_re['So_ResultEntryValidation1'] == 'Y' && $data_re['So_ResultEntryValidation2'] == 'N') {
$sql = "UPDATE so_resultentry SET So_ResultEntryValidation1 = 'N', So_ResultEntryStatus = 'NEW', So_ResultEntryLastUpdatedUserID = {$userid}, So_ResultEntryLastUpdated = NOW() WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
}
$act = "UPDATE_ACT";
if ($prm['action'] === 'val1')
$act = "VALIDATION";
if ($prm['action'] === 'unval1')
$act = "UNVALIDATION";
$this->soresultlog->step_action($act, $trx['re_id'], $userid);
$sql = "SELECT * FROM so_resultentry
WHERE So_ResultEntryID = {$trx['re_id']}
AND So_ResultEntryIsActive = 'Y'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
$reData = $query->row_array();
$sql = "SELECT * FROM so_resultentrysds
WHERE So_ResultEntrySDSSo_ResultEntryID = {$trx['re_id']}
AND So_ResultEntrySDSIsActive = 'Y'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
$questionsData = $query->result_array();
$sql = "SELECT * FROM so_resultentrysdsidentity
WHERE So_ResultEntrySDSIdentitySo_ResultEntryID = {$trx['re_id']}
AND So_ResultEntrySDSIdentityIsActive= 'Y';";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
$identityData = $query->result_array();
$sql = "SELECT * FROM so_resultentrysdsinterpretation
WHERE So_ResultEntrySDSInterpretationTypeSo_ResultEntryID = {$trx['re_id']}
AND So_ResultEntrySDSInterpretationIsActive= 'Y'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
$interpretationData = $query->result_array();
$data_log = json_encode(array(
'header' => $reData,
'details' => array(
"identity" => $identityData,
"question" => $questionsData,
"interpretation" => $interpretationData,
)
));
$this->soresultlog->log_result($data_log, $trx['re_id'], $userid);
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = {$last_id} LIMIT 1";
$fresh_header = $this->db_onedev->query($sql)->row_array();
$fresh_header['status_name'] = $this->alias_resultentry_status_name(isset($fresh_header['So_ResultEntryStatus']) ? $fresh_header['So_ResultEntryStatus'] : null);
$result = array(
"total" => 1,
"records" => array('status' => 'OK'),
"header" => $fresh_header,
"numbering" => $prm['trx_numbering'],
"id" => $prm['trx_id']
);
$this->sys_ok($result);
exit;
}
function savesrq()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$trx = $prm['trx'];
$data_srq = $prm['data_srq'];
$questions = $data_srq['questions'];
$conclusions = $data_srq['conclusions'];
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;
}
}
$sql = "SELECT *
FROM so_resultentry
WHERE
So_ResultEntryID = {$trx['re_id']}
LIMIT 1";
//echo $sql;
$data_re = $this->db_onedev->query($sql)->row_array();
// print_r($data_re);
// INSERT QUESTIONS srq29
for ($i = 0; $i < count($questions); $i++) {
$rst = $questions[$i];
// print_r($rst);
//Cek data sudah ada belum
$sql = "SELECT So_ResultentrySrq29QuestionID
FROM so_resultentry_srq29_question
WHERE So_ResultentrySrq29QuestionSo_ResultEntryID = ?
AND So_ResultentrySrq29QuestionM_Srq29QuestionID = ?
AND So_ResultentrySrq29QuestionIsActive = 'Y'";
$query = $this->db_onedev->query($sql, [$trx['re_id'], $rst['questionID']]);
if (!$query) {
$this->sys_error_db("error cek result srq29 question");
exit;
}
$cekSrqQuestion = $query->result_array();
$dataSrqQuestion = array(
"So_ResultentrySrq29QuestionSo_ResultEntryID" => $trx['re_id'],
"So_ResultentrySrq29QuestionM_Srq29QuestionID" => $rst['questionID'],
"So_ResultentrySrq29QuestionResult" => $rst['value'],
"So_ResultentrySrq29QuestionCreated" => "",
"So_ResultentrySrq29QuestionCreatedUserID" => $userid,
);
if (count($cekSrqQuestion) == 0) {
$dataSrqQuestion['So_ResultentrySrq29QuestionCreated'] = date("Y-m-d h:i:sa");
$query = $this->db_onedev->insert('so_resultentry_srq29_question', $dataSrqQuestion);
if (!$query) {
$this->sys_error_db("error insert result srq29 question");
exit;
}
}
else {
//Update
$sql = "UPDATE so_resultentry_srq29_question
SET So_ResultentrySrq29QuestionResult = ?,
So_ResultentrySrq29QuestionLastUpdated = NOW(),
So_ResultentrySrq29QuestionLastUpdatedUserID = ?
WHERE So_ResultentrySrq29QuestionID = ?";
$query = $this->db_onedev->query($sql, [$rst['value'], $userid, $cekSrqQuestion[0]['So_ResultentrySrq29QuestionID']]);
if (!$query) {
$this->sys_error_db("error update result srq29 question");
exit;
}
}
}
// INSERT CONCLUSIONS
for ($i = 0; $i < count($conclusions); $i++) {
$rst = $conclusions[$i];
//Cek data sudah ada belum
$sql = "SELECT So_ResultentrySrq29ConclusionID
FROM so_resultentry_srq29_conclusion
WHERE So_ResultentrySrq29ConclusionSo_ResultEntryID = ?
AND So_ResultentrySrq29ConclusionM_Srq29ConclusionID = ?
AND So_ResultentrySrq29ConclusionIsActive = 'Y'";
$query = $this->db_onedev->query($sql, [$trx['re_id'], $rst['conclusionID']]);
if (!$query) {
$this->sys_error_db("error cek result srq29 conclusion");
exit;
}
$cekSrqConclusion = $query->result_array();
$dataSrqConclusion = array(
"So_ResultentrySrq29ConclusionSo_ResultEntryID" => $trx['re_id'],
"So_ResultentrySrq29ConclusionM_Srq29ConclusionID" => $rst['conclusionID'],
"So_ResultentrySrq29ConclusionResult" => $rst['value'],
"So_ResultentrySrq29ConclusionCreated" => "",
"So_ResultentrySrq29ConclusionCreatedUserID" => $userid,
);
if (count($cekSrqConclusion) == 0) {
$dataSrqConclusion['So_ResultentrySrq29ConclusionCreated'] = date("Y-m-d h:i:sa");
$query = $this->db_onedev->insert('so_resultentry_srq29_conclusion', $dataSrqConclusion);
if (!$query) {
$this->sys_error_db("error insert result srq29 conclusion");
exit;
}
}
else {
//Update
$sql = "UPDATE so_resultentry_srq29_conclusion
SET So_ResultentrySrq29ConclusionResult = ?,
So_ResultentrySrq29ConclusionLastUpdated = NOW(),
So_ResultentrySrq29ConclusionLastUpdatedUserID = ?
WHERE So_ResultentrySrq29ConclusionID = ?";
$query = $this->db_onedev->query($sql, [$rst['value'], $userid, $cekSrqConclusion[0]['So_ResultentrySrq29ConclusionID']]);
if (!$query) {
$this->sys_error_db("error update result srq29 conclusion");
exit;
}
}
}
if ($prm['action'] === 'val1' && $data_re['So_ResultEntryValidation1'] == 'N' && $data_re['So_ResultEntryValidation2'] == 'N') {
$sql = "UPDATE so_resultentry SET So_ResultEntryValidation1 = 'Y', So_ResultEntryStatus = 'VAL1', So_ResultEntryLastUpdatedUserID = {$userid}, So_ResultEntryLastUpdated = NOW() WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("error validasi");
exit;
}
//echo $this->db_onedev->last_query();
}
if ($prm['action'] === 'unval1' && $data_re['So_ResultEntryValidation1'] == 'Y' && $data_re['So_ResultEntryValidation2'] == 'N') {
$sql = "UPDATE so_resultentry SET So_ResultEntryValidation1 = 'N', So_ResultEntryStatus = 'NEW', So_ResultEntryLastUpdatedUserID = {$userid}, So_ResultEntryLastUpdated = NOW() WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
}
$act = "UPDATE_ACT";
if ($prm['action'] === 'val1')
$act = "VALIDATION";
if ($prm['action'] === 'unval1')
$act = "UNVALIDATION";
$this->soresultlog->step_action($act, $trx['re_id'], $userid);
$sql = "SELECT * FROM so_resultentry
WHERE So_ResultEntryID = {$trx['re_id']}
AND So_ResultEntryIsActive = 'Y'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
$reData = $query->row_array();
$sql = "SELECT * FROM so_resultentry_srq29_question
WHERE So_ResultentrySrq29QuestionSo_ResultEntryID = {$trx['re_id']}
AND So_ResultentrySrq29QuestionIsActive = 'Y'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
$questionsData = $query->result_array();
$sql = "SELECT * FROM so_resultentry_srq29_conclusion
WHERE So_ResultentrySrq29ConclusionSo_ResultEntryID = {$trx['re_id']}
AND So_ResultentrySrq29ConclusionIsActive= 'Y'";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("eror unval");
exit;
}
$conclusionsData = $query->result_array();
$data_log = json_encode(array(
'header' => $reData,
'details' => array(
"question" => $questionsData,
"conclusion" => $conclusionsData,
)
));
$this->soresultlog->log_result($data_log, $trx['re_id'], $userid);
$result = array(
"total" => 1,
"records" => array('status' => 'OK')
);
$this->sys_ok($result);
exit;
}
function getSDS()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$type = 'SDS30';
$sql = "SELECT *
FROM so_resultentrysds_type
WHERE
So_ResultEntrySDSTypeSo_ResultEntryID = '{$prm['trx_id']}' AND
So_ResultEntrySDSTypeIsActive = 'Y'
";
$query = $this->db_onedev->query($sql);
if (!$query) {
$this->sys_error_db("error get sds question");
exit;
}
$rst_type = $query->result_array();
//print_r($rst_type);
if (count($rst_type) > 0) {
if (intval($rst_type[0]['So_ResultEntrySDSTypeValue']) == 20)
$type = 'SRQ20';
}
//get sds30 questions
$sql = "SELECT
IFNULL(So_ResultEntrySDSID, 0) sdsReID,
IFNULL(So_ResultEntrySDSSo_ResultEntryID, 0) reID,
SDS_TemplateQuestionID as id,
SDS_TemplateQuestionOrder AS orderNumber,
SDS_TemplateQuestionText AS display,
IFNULL(So_ResultEntrySDSSDS_TemplateOptionID,`fn_getDefaultsdsOption`('30')) as value
FROM sds_templatequestion
LEFT JOIN so_resultentrysds
ON SDS_TemplateQuestionID = So_ResultEntrySDSSDS_TemplateQuestionID
AND So_ResultEntrySDSSo_ResultEntryID = '{$prm['trx_id']}'
LEFT JOIN sds_templateoption
ON SDS_TemplateOptionID = So_ResultEntrySDSSDS_TemplateOptionID
WHERE SDS_TemplateQuestionType = 30
AND SDS_TemplateQuestionIsActive = 'Y'
ORDER BY SDS_TemplateQuestionOrder asc";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get sds question");
exit;
}
$sds30Question = $query->result_array();
$sql = "SELECT
SDS_TemplateOptionID as id,
SDS_TemplateOptionOrder as orderNumber,
SDS_TemplateOptionText as display,
SDS_TemplateOptionValue as value
FROM sds_templateoption
WHERE SDS_TemplateOptionType = 30
AND SDS_TemplateOptionIsActive = 'Y'
ORDER BY SDS_TemplateOptionOrder asc";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get sds option");
exit;
}
$sds30Option = $query->result_array();
$sql = "SELECT
IFNULL(So_ResultEntrySDSInterpretationTypeSo_ResultEntryID, 0) reID,
IFNULL(So_ResultEntrySDSInterpretationID, 0) sdsReID,
SDS_InterpretationID as id,
SDS_InterpretationOrder as orderNumber,
SDS_InterpretationText as display,
GROUP_CONCAT(SDS_InterpretationMapSDS_TemplateQuestionID) as questionID,
IFNULL(So_ResultEntrySDSInterpretationScore, 0) as score,
0 as level,
IFNULL(So_ResultEntrySDSInterpretationDisplay, 'Ringan') as levelDisplay
FROM sds_interpretation
JOIN sds_interpretationmap
ON SDS_InterpretationID = SDS_InterpretationMapSDS_InterpretationID
AND SDS_InterpretationMapIsActive = 'Y'
LEFT JOIN so_resultentrysdsinterpretation
ON SDS_InterpretationID = So_ResultEntrySDSInterpretationSDSInterpretationID
AND So_ResultEntrySDSInterpretationTypeSo_ResultEntryID = '{$prm['trx_id']}'
WHERE SDS_InterpretationIsActive = 'Y'
AND SDS_InterpretationType = '30'
GROUP BY SDS_InterpretationID
ORDER BY SDS_InterpretationOrder asc";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get sds interpretation");
exit;
}
$sds30Interpretation = $query->result_array();
$sql = "SELECT
SDS_InterpretationRuleID as id,
SDS_InterpretationRuleText as display,
SDS_InterpretationRuleMin as min,
SDS_InterpretationRuleMax as max,
SDS_InterpretationRuleValue as value,
SDS_InterpretationRuleIsFix as isFix,
SDS_InterpretationRuleIsRange as isRange,
SDS_InterpretationRuleFlag as flag
FROM sds_interpretationrule
WHERE SDS_InterpretationRuleType = 30
AND SDS_InterpretationRuleIsActive = 'Y'";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get sds interpretation rule");
exit;
}
$sds30InterpretationRule = $query->result_array();
//get srq20 questions
$sql = "SELECT
IFNULL(So_ResultEntrySDSID, 0) sdsReID,
IFNULL(So_ResultEntrySDSSo_ResultEntryID, 0) reID,
SDS_TemplateQuestionID as id,
SDS_TemplateQuestionOrder AS orderNumber,
SDS_TemplateQuestionText AS display,
IFNULL(So_ResultEntrySDSSDS_TemplateOptionID, `fn_getDefaultsdsOption`('20')) as value
FROM sds_templatequestion
LEFT JOIN so_resultentrysds
ON SDS_TemplateQuestionID = So_ResultEntrySDSSDS_TemplateQuestionID
AND So_ResultEntrySDSSo_ResultEntryID = '{$prm['trx_id']}'
LEFT JOIN sds_templateoption
ON SDS_TemplateOptionID = So_ResultEntrySDSSDS_TemplateOptionID
WHERE SDS_TemplateQuestionType = 20
AND SDS_TemplateQuestionIsActive = 'Y'
ORDER BY SDS_TemplateQuestionOrder asc";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get srq question");
exit;
}
$srq20Question = $query->result_array();
$sql = "SELECT
SDS_TemplateOptionID as id,
SDS_TemplateOptionOrder as orderNumber,
SDS_TemplateOptionText as display,
SDS_TemplateOptionValue as value
FROM sds_templateoption
WHERE SDS_TemplateOptionType = 20
AND SDS_TemplateOptionIsActive = 'Y'
ORDER BY SDS_TemplateOptionOrder asc";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get srq option");
exit;
}
$srq20Option = $query->result_array();
$sql = "SELECT
IFNULL(So_ResultEntrySDSInterpretationTypeSo_ResultEntryID, 0) reID,
IFNULL(So_ResultEntrySDSInterpretationID, 0) sdsReID,
SDS_InterpretationID as id,
SDS_InterpretationOrder as orderNumber,
SDS_InterpretationText as display,
GROUP_CONCAT(SDS_InterpretationMapSDS_TemplateQuestionID) as questionID,
IFNULL(So_ResultEntrySDSInterpretationScore, 0) as score,
0 as level,
IFNULL(So_ResultEntrySDSInterpretationDisplay, 'Tidak ada') as levelDisplay
FROM sds_interpretation
JOIN sds_interpretationmap
ON SDS_InterpretationID = SDS_InterpretationMapSDS_InterpretationID
AND SDS_InterpretationMapIsActive = 'Y'
LEFT JOIN so_resultentrysdsinterpretation
ON SDS_InterpretationID = So_ResultEntrySDSInterpretationSDSInterpretationID
AND So_ResultEntrySDSInterpretationTypeSo_ResultEntryID = '{$prm['trx_id']}'
WHERE SDS_InterpretationIsActive = 'Y'
AND SDS_InterpretationType = '20'
GROUP BY SDS_InterpretationID
ORDER BY SDS_InterpretationOrder asc";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get srq interpretation");
exit;
}
$srq20Interpretation = $query->result_array();
$sql = "SELECT
SDS_InterpretationRuleID as id,
SDS_InterpretationRuleText as display,
SDS_InterpretationRuleMin as min,
SDS_InterpretationRuleMax as max,
SDS_InterpretationRuleValue as value,
SDS_InterpretationRuleIsFix as isFix,
SDS_InterpretationRuleIsRange as isRange,
SDS_InterpretationRuleFlag as flag
FROM sds_interpretationrule
WHERE SDS_InterpretationRuleType = 20
AND SDS_InterpretationRuleIsActive = 'Y'";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get sds interpretation rule");
exit;
}
$srq20InterpretationRule = $query->result_array();
$identitas =
array(
"nama" => "",
"usia" => "",
"masa_kerja" => "",
"departement" => "",
"jenis_kelamin" => "",
"jenis_kelamin_option" => array("Pria", "Wanita"),
"status_pekerja" => "",
"status_pekerja_option" => array("Tetap", "Tidak tetap (Kontrak)"),
"jenis_pekerjaan" => "",
"jenis_pekerjaan_option" => array("Kantor", "Lapangan"),
"level_jabatan" => "",
"level_jabatan_option" => array("Manager", "Supervisor", "Staff"),
"pendidikan" => "",
"pendidikan_option" => array("SD", "SMP", "SLTA", "D3", "S1", "S2,S3"),
"status_perkawinan" => "",
"status_perkawinan_option" => array("Single", "Menikah", "Duda", "Janda"),
);
//Get Identitas
$sql = "SELECT
IFNULL(So_ResultEntrySDSIdentityAge, T_OrderHeaderM_PatientAge) as age,
IFNULL(So_ResultEntrySDSIdentityName, CONCAT(M_TitleName,' ',M_PatientName)) as name,
IFNULL ( So_ResultEntrySDSIdentityGender, CASE
WHEN M_PatientGender = 'male' THEN 'Pria'
WHEN M_PatientGender = 'female' THEN 'Wanita'
END) as gender,
IFNULL(So_ResultEntrySDSIdentityDepartement,M_PatientDepartement) as departement,
IFNULL(So_ResultEntrySDSIdentityWorkingTime, '') as workingTime,
IFNULL(So_ResultEntrySDSIdentityJobStatus, '') as jobStatus,
IFNULL(So_ResultEntrySDSIdentityJobType, '') as jobType,
IFNULL(So_ResultEntrySDSIdentityPosition, '') as position,
IFNULL(So_ResultEntrySDSIdentityEducation, '') as education,
IFNULL(So_ResultEntrySDSIdentityMaritalStatus, '') as maritalStatus
FROM t_orderheader
JOIN m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
AND T_OrderHeaderID = '{$prm['orderid']}'
LEFT JOIN m_title
ON M_PatientM_TitleID = M_TitleID
AND M_TitleIsActive = 'Y'
LEFT JOIN so_resultentry
ON T_OrderHeaderID = So_ResultEntryT_OrderHeaderID
AND So_ResultEntryID = '{$prm['trx_id']}'
AND So_ResultEntryIsActive = 'Y'
LEFT JOIN so_resultentrysdsidentity
ON So_ResultEntryID = So_ResultEntrySDSIdentitySo_ResultEntryID
AND So_ResultEntrySDSIdentityIsActive = 'Y'";
$query = $this->db_onedev->query($sql, []);
if (!$query) {
$this->sys_error_db("error get identitas");
exit;
}
$getIdentitas = $query->result_array();
if (count($getIdentitas) > 0) {
$identitas['nama'] = $getIdentitas[0]['name'];
$identitas['usia'] = $getIdentitas[0]['age'];
$identitas['jenis_kelamin'] = $getIdentitas[0]['gender'];
$identitas['departement'] = $getIdentitas[0]['departement'];
$identitas['masa_kerja'] = $getIdentitas[0]['workingTime'];
$identitas['status_pekerja'] = $getIdentitas[0]['jobStatus'];
$identitas['jenis_pekerjaan'] = $getIdentitas[0]['jobType'];
$identitas['level_jabatan'] = $getIdentitas[0]['position'];
$identitas['pendidikan'] = $getIdentitas[0]['education'];
$identitas['status_perkawinan'] = $getIdentitas[0]['maritalStatus'];
}
$result = array(
'sds30' => array(
"questions" => $sds30Question,
"options" => $sds30Option,
"interpretation" => $sds30Interpretation,
"interpretationRule" => $sds30InterpretationRule,
),
'srq20' => array(
"questions" => $srq20Question,
"options" => $srq20Option,
"interpretation" => $srq20Interpretation,
"interpretationRule" => $srq20InterpretationRule,
),
'identitas' => $identitas,
'type' => $type
);
$this->sys_ok($result);
}
function getsrq()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
// question
$sql = "SELECT
IFNULL(So_ResultentrySrq29QuestionID, 0) srqReID,
IFNULL(So_ResultentrySrq29QuestionSo_ResultEntryID, 0) reID,
IFNULL(So_ResultentrySrq29QuestionResult, '') as value,
M_Srq29QuestionID as questionID,
M_Srq29QuestionName as questioinName,
M_Srq29QuestionOrder as questionOrder
FROM m_srq29_question
LEFT JOIN so_resultentry_srq29_question ON M_Srq29QuestionID = So_ResultentrySrq29QuestionM_Srq29QuestionID
AND So_ResultentrySrq29QuestionSo_ResultEntryID = ?
WHERE M_Srq29QuestionIsActive = 'Y'
ORDER BY M_Srq29QuestionOrder ASC";
$query = $this->db_onedev->query($sql, [$prm['trx_id']]);
if (!$query) {
$this->sys_error_db("error get srq question");
exit;
}
$srq29Question = $query->result_array();
// conclusion
$sql = "SELECT IFNULL(So_ResultentrySrq29ConclusionID, 0) as conclusionReID,
IFNULL(So_ResultentrySrq29ConclusionSo_ResultEntryID, 0) as reID,
IFNULL(So_ResultentrySrq29ConclusionResult, '') as value,
M_Srq29ConclusionID as conclusionID,
M_Srq29ConclusionName as conclusionName,
M_Srq29ConclusionOrder as conclusionOrder
FROM m_srq29_conclusion
LEFT JOIN so_resultentry_srq29_conclusion ON M_Srq29ConclusionID = So_ResultentrySrq29ConclusionM_Srq29ConclusionID
AND So_ResultentrySrq29ConclusionSo_ResultEntryID = ?
WHERE M_Srq29ConclusionIsActive = 'Y'
ORDER BY M_Srq29ConclusionOrder ASC";
$query = $this->db_onedev->query($sql, [$prm['trx_id']]);
if (!$query) {
$this->sys_error_db("error get srq conclusion");
exit;
}
$srq29Conclusion = $query->result_array();
$srq29OptionQuestion = array(
array(
"id" => "1",
"display" => "Ya",
"value" => "Ya"
),
array(
"id" => "2",
"display" => "Tidak",
"value" => "Tidak"
)
);
$srq29OptionConclusion = array(
array(
"id" => "1",
"display" => "Ringan",
"value" => "Ringan"
),
array(
"id" => "2",
"display" => "Sedang",
"value" => "Sedang",
),
array(
"id" => "3",
"display" => "Berat",
"value" => "Berat"
)
);
$result = array(
"questions" => $srq29Question,
"conclusions" => $srq29Conclusion,
"optionQuestion" => $srq29OptionQuestion,
"optionConclusion" => $srq29OptionConclusion,
);
$this->sys_ok($result);
}
// function getDefaultSdsValue($interpretationID)
// {
// $sql = "SELECT
// SDS_InterpretationID,
// SDS_InterpretationText,
// SDS_InterpretationMapSDS_TemplateQuestionID,
// SDS_InterpretationType,
// MIN(SDS_TemplateOptionValue) as value
// FROM sds_interpretation
// JOIN sds_interpretationmap
// ON SDS_InterpretationID = SDS_InterpretationMapSDS_InterpretationID
// AND SDS_InterpretationMapIsActive = 'Y'
// AND SDS_InterpretationID = {$interpretationID}
// JOIN sds_templateoption
// ON SDS_InterpretationType = SDS_TemplateOptionType
// AND SDS_TemplateOptionIsActive = 'Y'
// GROUP BY SDS_InterpretationMapSDS_TemplateQuestionID";
// $query = $this->db_onedev->query($sql, []);
// if (!$query) {
// $this->sys_error_db("error get default interpretation value");
// exit;
// }
// $data = $query->result_array();
// if (count($data) == 0) {
// $this->sys_error_db("Default interpretation tidak ditemukan");
// exit;
// }
// $type = $data[0]['SDS_InterpretationType'];
// $score = 0;
// $display = '';
// for ($i = 0; $i < count($data); $i++) {
// if ($type == '30') {
// $score = $score + intval($data[$i]['value']);
// }
// }
// }
function translate_word_value($word)
{
$sql = "SELECT fn_get_translate_word_separator_comma(?,2) as rtn";
$rtn = $this->db_onedev->query($sql, [$word])->row()->rtn;
return $rtn;
}
function translate_word($word)
{
$sql = "SELECT fn_get_translate_word(?,2) as rtn";
$rtn = $this->db_onedev->query($sql, [$word])->row()->rtn;
return $rtn;
}
function retranslate_word($word)
{
$sql = "SELECT fn_get_retranslate_word(?,2) as rtn";
$rtn = $this->db_onedev->query($sql, [$word])->row()->rtn;
return $rtn;
}
function getumum()
{
$prm = $this->sys_input;
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$userid = $this->sys_user["M_UserID"];
$rst = array();
$rst['riwayats'] = array();
$rst['fisiks'] = array();
$rst['umum_saran'] = '';
$rst['k3s'] = array();
$rst['konsul'] = array();
if ($prm['lang'] == 'ID') {
$rows = array();
/*$sql = "SELECT count(*) as xcount
FROM so_resultentry_fisik_umum
WHERE
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND
So_ResultEntryFisikUmumIsActive = 'Y'
ORDER BY So_ResultEntryFisikUmumID ASC ";
$x_exist = $this->db_onedev->query($sql, [$prm['re_id']])->row()->xcount;*/
if ($prm['template_name'] == 'Fisik Umum' || $prm['template_name'] == 'Fisik Umum K3') {
$sql = "INSERT INTO so_resultentry_fisik_umum (
So_ResultEntryFisikUmumT_OrderHeaderID,
So_ResultEntryFisikUmumFisikTemplateID,
So_ResultEntryFisikUmumDetails,
So_ResultEntryFisikUmumCreated,
So_ResultEntryFisikUmumCreatedUserID
)
SELECT ?,
FisikTemplateID,
FisikTemplateJSON,
NOW(),
{$userid}
FROM fisik_template
JOIN t_orderheader ON T_OrderHeaderID = ?
JOIN so_resultentry ON SO_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND
So_ResultEntryIsActive = 'Y' AND
So_ResultEntryNonlab_TemplateID = 27
JOIN t_orderdetail ON T_OrderDetailID = So_ResultEntryT_OrderDetailID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_TestID = T_OrderDetailT_TestID
JOIN fisik_map_test_template ON Fisik_MapTestTemplateNat_TestID = T_TestNat_TestID AND Fisik_MapTestTemplateIsActive = 'Y'
JOIN fisik_template_mapping ON Fisik_MapTestTemplateFisikTemplateMappingID = FisikTemplateMappingID
JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID AND
FisikTemplateMappingDetailFisikTemplateID = FisikTemplateID AND
FisikTemplateMappingDetailIsActive = 'Y'
LEFT JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumT_OrderHeaderID = T_OrderHeaderID AND
So_ResultEntryFisikUmumIsActive = 'Y'
WHERE
FisikTemplateIsActive = 'Y' AND So_ResultEntryFisikUmumID IS NULL
GROUP BY FisikTemplateID
ORDER BY FisikTemplateCode ASC";
$query = $this->db_onedev->query($sql, [$prm['orderid'], $prm['orderid']]);
if (!$query) {
$this->sys_error_db("error insert fisik umum");
exit;
}
}
$riwayats = [];
$fisiks = [];
$k3s = [];
$sql = "SELECT *
FROM so_resultentry_fisik_umum
JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
WHERE
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
ORDER BY FisikTemplateCode ASC";
$rows_data = $this->db_onedev->query($sql, [$prm['orderid']])->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_ResultEntryFisikUmumAdditionalT_OrderHeaderID = ? AND
So_ResultEntryFisikUmumAdditionalType = 'saran' AND
So_ResultEntryFisikUmumAdditionalIsActive = 'Y'";
$row_saran = $this->db_onedev->query($sql, [$prm['orderid']])->row_array();
if ($row_saran['xcount'] > 0)
$rst['umum_saran'] = $row_saran['xvalue'];
}
else {
$sql = "SELECT COUNT(*) as xcount FROM so_resultentry_fisik_umum_eng WHERE So_ResultEntryFisikUmumSo_ResultEntryID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'";
$exist_eng = $this->db_onedev->query($sql, [$prm['re_id']])->row()->xcount;
//echo $this->db_onedev->last_query();
//echo $exist_eng;
if ($exist_eng == 0) {
$sql = "INSERT INTO so_resultentry_fisik_umum_eng (
So_ResultEntryFisikUmumSo_ResultEntryID,
So_ResultEntryFisikUmumFisikTemplateID,
So_ResultEntryFisikUmumDetails,
So_ResultEntryFisikUmumCreatedUserID,
So_ResultEntryFisikUmumCreated
)
SELECT So_ResultEntryFisikUmumSo_ResultEntryID,
So_ResultEntryFisikUmumFisikTemplateID,
So_ResultEntryFisikUmumDetails,
?,
NOW()
FROM so_resultentry_fisik_umum
JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' ";
//echo $sql;
$save = $this->db_onedev->query($sql, [$userid, $prm['re_id']]);
//echo $this->db_onedev->last_query();
$sql = "SELECT So_ResultEntryFisikUmumAdditionalID as id, So_ResultEntryFisikUmumAdditionalValue as value
FROM so_resultentry_fisik_umum_additional
WHERE
So_ResultEntryFisikUmumAdditionalSo_ResultEntryID = ? AND
So_ResultEntryFisikUmumAdditionalType = 'saran' AND
So_ResultEntryFisikUmumAdditionalIsActive = 'Y' LIMIT 1";
$rst_exist_saran = $this->db_onedev->query($sql, [$prm['re_id']])->result_array();
if (count($rst_exist_saran) == 0) {
$sql = "INSERT INTO so_resultentry_fisik_umum_additional_eng (
So_ResultEntryFisikUmumAdditionalSo_ResultEntryID,
So_ResultEntryFisikUmumAdditionalType,
So_ResultEntryFisikUmumAdditionalValue,
So_ResultEntryFisikUmumAdditionalCreatedUserID,
So_ResultEntryFisikUmumAdditionalCreated
)
VALUES(
?,
'saran',
?,
?,
NOW()
) ";
//echo $sql;
$rst = $this->db_onedev->query($sql, [$prm['re_id'], $rst_exist_saran[0]['value'], $userid]);
}
}
$riwayats = [];
$fisiks = [];
$k3s = [];
$sql = "SELECT *
FROM so_resultentry_fisik_umum_eng
JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
WHERE
So_ResultEntryFisikUmumSo_ResultEntryID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'
ORDER BY FisikTemplateCode ASC";
$rows_data = $this->db_onedev->query($sql, [$prm['re_id']])->result_array();
if ($rows_data) {
foreach ($rows_data as $key => $value) {
$string_json = $value['So_ResultEntryFisikUmumDetails'];
$arr_json = json_decode($string_json, TRUE);
if ($value['FisikTemplateType'] == 'Riwayat')
$riwayats[] = $arr_json;
if ($value['FisikTemplateType'] == 'Fisik')
$fisiks[] = $arr_json;
if ($value['FisikTemplateType'] == 'K3')
$k3s[] = $arr_json;
}
}
foreach ($riwayats as $key => $data) {
if ($data['type_form'] == 'XV') {
$riwayats[$key]['title'] = $this->translate_word($data['title']);
if ($data['subtitle']) {
$riwayats[$key]['subtitle'] = $this->translate_word($data['subtitle']);
}
if ($data['label_flag_normal']) {
$riwayats[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $key1 => $detail) {
$data['details'][$key1]['label'] = $this->translate_word($detail['label']);
$data['details'][$key1]['value'] = $this->translate_word_value($detail['value']);
}
$riwayats[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XO') {
$riwayats[$key]['title'] = $this->translate_word($data['title']);
$riwayats[$key]['subtitle'] = $this->translate_word($data['subtitle']);
if ($data['label_flag_normal']) {
$riwayats[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xo => $detail) {
$data['details'][$k_xo]['label'] = $this->translate_word($detail['label']);
foreach ($detail['options'] as $k2_xo => $option) {
$detail['options'][$k2_xo]['label'] = $this->translate_word($option['label']);
}
$data['details'][$k_xo]['options'] = $detail['options'];
}
$riwayats[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XVS') {
$riwayats[$key]['title'] = $this->translate_word($data['title']);
if ($data['label_flag_normal']) {
$riwayats[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xvs => $detail) {
$data['details'][$k_xvs]['name'] = $this->translate_word($detail['name']);
if ($detail['caption']) {
$data['details'][$k_xvs]['caption'] = $this->translate_word_value($detail['caption']);
}
foreach ($detail['details'] as $k2_xvs => $details) {
$detail['details'][$k2_xvs]['label'] = $this->translate_word($details['label']);
$detail['details'][$k2_xvs]['value'] = $this->translate_word_value($details['value']);
if ($details['suffix']) {
$detail['details'][$k2_xvs]['suffix'] = $this->translate_word_value($details['suffix']);
}
}
$data['details'][$k_xvs]['details'] = $detail['details'];
}
$riwayats[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XD') {
$riwayats[$key]['title'] = $this->translate_word($data['title']);
if ($data['label_flag_normal']) {
$riwayats[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xd => $detail) {
$data['details'][$k_xd]['label'] = $this->translate_word($detail['label']);
foreach ($detail['details'] as $k2_xd => $details) {
$detail['details'][$k2_xd]['label'] = $this->translate_word($details['label']);
$detail['details'][$k2_xd]['value'] = $this->translate_word_value($details['value']);
}
$data['details'][$k_xd]['details'] = $detail['details'];
}
$riwayats[$key]['details'] = $data['details'];
}
}
foreach ($fisiks as $key => $data) {
if ($data['type_form'] == 'VXX+') {
$fisiks[$key]['title'] = $this->translate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $K_VXXP => $detail) {
$data['details'][$K_VXXP]['label'] = $this->translate_word($detail['label']);
$data['details'][$K_VXXP]['label_x'] = $this->translate_word($detail['label_x']);
$data['details'][$K_VXXP]['label_y'] = $this->translate_word($detail['label_y']);
$data['details'][$K_VXXP]['value'] = $this->translate_word_value($detail['value']);
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XXV') {
$fisiks[$key]['title'] = $this->translate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $K_XXV => $detail) {
$data['details'][$K_XXV]['label'] = $this->translate_word($detail['label']);
$data['details'][$K_XXV]['label_x'] = $this->translate_word($detail['label_x']);
$data['details'][$K_XXV]['label_y'] = $this->translate_word($detail['label_y']);
$data['details'][$K_XXV]['unit'] = $this->translate_word($detail['unit']);
$data['details'][$K_XXV]['value'] = $this->translate_word_value($detail['value']);
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XV') {
$fisiks[$key]['title'] = $this->translate_word($data['title']);
foreach ($data['details'] as $key1 => $detail) {
$data['details'][$key1]['label'] = $this->translate_word($detail['label']);
$data['details'][$key1]['value'] = $this->translate_word($detail['value']);
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XXVWL') {
$fisiks[$key]['title'] = $this->translate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $key1 => $detail) {
$data['details'][$key1]['label_x'] = $this->translate_word($detail['label_x']);
$data['details'][$key1]['label_y'] = $this->translate_word($detail['label_y']);
$data['details'][$key1]['value'] = $this->translate_word_value($detail['value']);
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XVS') {
$fisiks[$key]['title'] = $this->translate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xvs => $detail) {
$data['details'][$k_xvs]['name'] = $this->translate_word($detail['name']);
if ($detail['caption']) {
$data['details'][$k_xvs]['caption'] = $this->translate_word_value($detail['caption']);
}
foreach ($detail['details'] as $k2_xvs => $details) {
$detail['details'][$k2_xvs]['label'] = $this->translate_word($details['label']);
$detail['details'][$k2_xvs]['value'] = $this->translate_word_value($details['value']);
if ($details['suffix']) {
$detail['details'][$k2_xvs]['suffix'] = $this->translate_word_value($details['suffix']);
}
}
$data['details'][$k_xvs]['details'] = $detail['details'];
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XVS3R') {
$fisiks[$key]['title'] = $this->translate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xvs => $detail) {
$data['details'][$k_xvs]['name'] = $this->translate_word($detail['name']);
foreach ($detail['details'] as $k2_xvs => $details) {
$detail['details'][$k2_xvs]['label'] = $this->translate_word($details['label']);
$detail['details'][$k2_xvs]['value'] = $this->translate_word_value($details['value']);
if ($details['details'] && count($details['details']) > 0) {
foreach ($details['details'] as $k3 => $v3) {
$details['details'][$k3]['label'] = $this->translate_word($v3['label']);
}
$detail['details'][$k2_xvs]['details'] = $details['details'];
}
}
$data['details'][$k_xvs]['details'] = $detail['details'];
}
$fisiks[$key]['details'] = $data['details'];
}
}
foreach ($k3s as $key => $data) {
if ($data['type_form'] == 'XVV') {
$k3s[$key]['title'] = $this->translate_word($data['title']);
$k3s[$key]['label_notexist'] = $this->translate_word($data['label_notexist']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->translate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $key1 => $detail) {
$data['details'][$key1]['label'] = $this->translate_word($detail['label']);
}
$k3s[$key]['details'] = $data['details'];
}
}
$rst['umum_saran'] = '';
$sql = "SELECT So_ResultEntryFisikUmumAdditionalID as id, So_ResultEntryFisikUmumAdditionalValue as value
FROM so_resultentry_fisik_umum_additional_eng
WHERE
So_ResultEntryFisikUmumAdditionalSo_ResultEntryID = ? AND
So_ResultEntryFisikUmumAdditionalType = 'saran' AND
So_ResultEntryFisikUmumAdditionalIsActive = 'Y' LIMIT 1";
$exist_saran = $this->db_onedev->query($sql, [$prm['re_id']])->result_array();
if (count($exist_saran) > 0) {
$rst['umum_saran'] = $exist_saran[0]['value'];
}
$rst['riwayats'] = $riwayats;
$rst['fisiks'] = $fisiks;
$rst['k3s'] = $k3s;
}
$result = array(
"total" => $status,
"records" => $rst,
"translate" => []
);
$this->sys_ok($result);
exit;
}
function hitung_bmi($bb, $tb, $standart_bmi)
{
$tb = $tb / 100;
$bmi = '';
$bmi = $bb / ($tb * $tb);
$bmi_valuex = number_format($bmi, 2);
$classs = "Undefined";
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 getgroups()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$rows = [];
$query = " SELECT Nat_GroupID as id, Nat_GroupName as title, CONCAT('GROUP : ',Nat_GroupName) as fulltitle, '' as childrens
FROM nat_group
WHERE
Nat_GroupIsActive = 'Y' AND ( Nat_GroupCode = 2 OR Nat_GroupCode = 3 )
";
//echo $query;
$rows['groups'] = $this->db_onedev->query($query)->result_array();
if ($rows['groups']) {
foreach ($rows['groups'] as $k => $v) {
$childrens = array(array('id' => 0, 'title' => 'Semua', 'fulltitle' => 'Subgroub : Semua'));
$query = " SELECT Nat_SubGroupID as id, Nat_SubGroupName as title, CONCAT('SUBGROUP : ',Nat_SubGroupName) as fulltitle
FROM nat_subgroup
WHERE
Nat_SubGroupNat_GroupID = {$v['id']} AND Nat_SubGroupIsActive = 'Y'
";
//echo $query;
$xrst = $this->db_onedev->query($query)->result_array();
if ($xrst) {
foreach ($xrst as $ki => $vi) {
array_push($childrens, $vi);
}
}
$rows['groups'][$k]['childrens'] = $childrens;
}
}
$query = " SELECT M_LangID as id, M_LangCode as name
FROM m_lang
WHERE
M_LangIsActive = 'Y'
";
//echo $query;
$rows['langs'] = $this->db_onedev->query($query)->result_array();
$result = array(
"total" => count($rows),
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function getsubgroups()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$rows = array(array('id' => 0, 'title' => 'Semua', 'fulltitle' => 'Subgroub : Semua'));
$query = " SELECT Nat_SubGroupID as id, Nat_SubGroupName as title, CONCAT('SUBGROUP : ',Nat_SubGroupName) as fulltitle
FROM nat_subgroup
WHERE
Nat_SubGroupNat_GroupID = {$prm['id']} AND Nat_SubGroupIsActive = 'Y'
";
//echo $query;
$rst = $this->db_onedev->query($query)->result_array();
if ($rst) {
foreach ($rst as $k => $v) {
array_push($rows, $v);
}
}
$result = array(
"total" => count($rows),
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function getstation()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$rows = [];
$query = " SELECT T_SampleStationID as id, T_SampleStationName as name
FROM t_samplestation
WHERE
T_SampleStationIsActive = 'Y'
";
//echo $query;
$rows['stations'] = $this->db_onedev->query($query)->result_array();
//print_r($statuses);
foreach ($statuses as $k => $v) {
array_push($rows['statuses'], $v);
}
$result = array(
"total" => count($rows),
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function getdoctoraddress()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query = " SELECT M_DoctorAddressID as id, M_DoctorAddressDescription as name
FROM m_doctoraddress
WHERE
M_DoctorAddressM_DoctorID = {$prm['id']} AND M_DoctorAddressIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
$result = array(
"total" => count($rows),
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function retranslate($riwayats, $fisiks, $ks3)
{
foreach ($riwayats as $key => $data) {
if ($data['type_form'] == 'XV') {
$riwayats[$key]['title'] = $this->retranslate_word($data['title']);
if ($data['subtitle']) {
$riwayats[$key]['subtitle'] = $this->retranslate_word($data['subtitle']);
}
if ($data['label_flag_normal']) {
$riwayats[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $key1 => $detail) {
$data['details'][$key1]['label'] = $this->retranslate_word($detail['label']);
}
$riwayats[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XO') {
$riwayats[$key]['title'] = $this->retranslate_word($data['title']);
$riwayats[$key]['subtitle'] = $this->retranslate_word($data['subtitle']);
if ($data['label_flag_normal']) {
$riwayats[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xo => $detail) {
$data['details'][$k_xo]['label'] = $this->retranslate_word($detail['label']);
foreach ($detail['options'] as $k2_xo => $option) {
$detail['options'][$k2_xo]['label'] = $this->retranslate_word($option['label']);
}
$data['details'][$k_xo]['options'] = $detail['options'];
}
$riwayats[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XVS') {
$riwayats[$key]['title'] = $this->retranslate_word($data['title']);
if ($data['label_flag_normal']) {
$riwayats[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xvs => $detail) {
$data['details'][$k_xvs]['name'] = $this->retranslate_word($detail['name']);
if ($detail['caption']) {
$data['details'][$k_xvs]['caption'] = $this->retranslate_word($detail['caption']);
}
foreach ($detail['details'] as $k2_xvs => $details) {
$detail['details'][$k2_xvs]['label'] = $this->retranslate_word($details['label']);
if ($details['suffix']) {
$detail['details'][$k2_xvs]['suffix'] = $this->retranslate_word($details['suffix']);
}
}
$data['details'][$k_xvs]['details'] = $detail['details'];
}
$riwayats[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XD') {
$riwayats[$key]['title'] = $this->retranslate_word($data['title']);
if ($data['label_flag_normal']) {
$riwayats[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xd => $detail) {
$data['details'][$k_xd]['label'] = $this->retranslate_word($detail['label']);
foreach ($detail['details'] as $k2_xd => $details) {
$detail['details'][$k2_xd]['label'] = $this->retranslate_word($details['label']);
}
$data['details'][$k_xd]['details'] = $detail['details'];
}
$riwayats[$key]['details'] = $data['details'];
}
}
foreach ($fisiks as $key => $data) {
if ($data['type_form'] == 'VXX+') {
$fisiks[$key]['title'] = $this->retranslate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $K_VXXP => $detail) {
$data['details'][$K_VXXP]['label'] = $this->retranslate_word($detail['label']);
$data['details'][$K_VXXP]['label_x'] = $this->retranslate_word($detail['label_x']);
$data['details'][$K_VXXP]['label_y'] = $this->retranslate_word($detail['label_y']);
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XXV') {
$fisiks[$key]['title'] = $this->retranslate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $K_XXV => $detail) {
$data['details'][$K_XXV]['label'] = $this->retranslate_word($detail['label']);
$data['details'][$K_XXV]['label_x'] = $this->retranslate_word($detail['label_x']);
$data['details'][$K_XXV]['label_y'] = $this->retranslate_word($detail['label_y']);
$data['details'][$K_XXV]['unit'] = $this->retranslate_word($detail['unit']);
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XV') {
$fisiks[$key]['title'] = $this->retranslate_word($data['title']);
foreach ($data['details'] as $key1 => $detail) {
$data['details'][$key1]['label'] = $this->retranslate_word($detail['label']);
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XXVWL') {
$fisiks[$key]['title'] = $this->retranslate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $key1 => $detail) {
$data['details'][$key1]['label_x'] = $this->retranslate_word($detail['label_x']);
$data['details'][$key1]['label_y'] = $this->retranslate_word($detail['label_y']);
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XVS') {
$fisiks[$key]['title'] = $this->retranslate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xvs => $detail) {
$data['details'][$k_xvs]['name'] = $this->retranslate_word($detail['name']);
if ($detail['caption']) {
$data['details'][$k_xvs]['caption'] = $this->retranslate_word($detail['caption']);
}
foreach ($detail['details'] as $k2_xvs => $details) {
$detail['details'][$k2_xvs]['label'] = $this->retranslate_word($details['label']);
if ($details['suffix']) {
$detail['details'][$k2_xvs]['suffix'] = $this->translate_word_value($details['suffix']);
}
}
$data['details'][$k_xvs]['details'] = $detail['details'];
}
$fisiks[$key]['details'] = $data['details'];
}
if ($data['type_form'] == 'XVS3R') {
$fisiks[$key]['title'] = $this->retranslate_word($data['title']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $k_xvs => $detail) {
$data['details'][$k_xvs]['name'] = $this->retranslate_word($detail['name']);
foreach ($detail['details'] as $k2_xvs => $details) {
$detail['details'][$k2_xvs]['label'] = $this->retranslate_word($details['label']);
if ($details['details'] && count($details['details']) > 0) {
foreach ($details['details'] as $k3 => $v3) {
$details['details'][$k3]['label'] = $this->retranslate_word($v3['label']);
}
$detail['details'][$k2_xvs]['details'] = $details['details'];
}
}
$data['details'][$k_xvs]['details'] = $detail['details'];
}
$fisiks[$key]['details'] = $data['details'];
}
}
foreach ($k3s as $key => $data) {
if ($data['type_form'] == 'XVV') {
$k3s[$key]['title'] = $this->retranslate_word($data['title']);
$k3s[$key]['label_notexist'] = $this->retranslate_word($data['label_notexist']);
if ($data['label_flag_normal']) {
$fisiks[$key]['label_flag_normal'] = $this->retranslate_word($data['label_flag_normal']);
}
foreach ($data['details'] as $key1 => $detail) {
$data['details'][$key1]['label'] = $this->retranslate_word($detail['label']);
}
$k3s[$key]['details'] = $data['details'];
}
}
return array('riwayats' => $riwayats, 'fisiks' => $fisiks, 'k3s' => $k3s);
}
function saveresult()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$errors = [];
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$row_resulentry = $this->db_onedev->query($sql)->row_array();
if (intval($prm['trx']['language_id']) == intval($row_resulentry['So_ResultEntryM_LangID'])) {
$sql = "UPDATE so_resultentry SET
So_ResultEntryNote = '{$prm['trx']['note']}',
So_ResultEntryUserID = {$userid}
WHERE
So_ResultEntryID = {$prm['trx']['trx_id']}";
$this->db_onedev->query($sql);
}
if ($prm['act'] === 'val1') {
$sql = "UPDATE so_resultentry SET
So_ResultEntryValidation1 = 'Y',
So_ResultEntryStatus = 'VAL1',
So_ResultEntryLastUpdated = NOW(),So_ResultEntryLastUpdatedUserID = {$userid}
WHERE
So_ResultEntryID = {$prm['trx']['trx_id']}";
$this->db_onedev->query($sql);
$this->generate_qr_nonlab_for_val1($prm['trx'], $userid);
}
if ($prm['act'] === '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($cek['status'] == 'N') {
$sql = "UPDATE so_resultentry SET
So_ResultEntryValidation1 = 'N',
So_ResultEntryStatus = 'NEW',
So_ResultEntryLastUpdated = NOW(),So_ResultEntryLastUpdatedUserID = {$userid}
WHERE
So_ResultEntryID = {$prm['trx']['trx_id']}";
$this->db_onedev->query($sql);
$errors = $this->genresultfisik->update_unvalidated($prm['trx']['orderid']);
if (!$errors['success']) {
$this->sys_error($errors['message']);
exit;
}
}
}
if ($prm['act'] === 'val2') {
$sql = "UPDATE so_resultentry SET
So_ResultEntryValidation2 = 'Y',
So_ResultEntryStatus = 'VAL2',
So_ResultEntryLastUpdated = NOW(),
So_ResultEntryLastUpdatedUserID = {$userid}
WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$this->db_onedev->query($sql);
$sql = "SELECT t_samplingso.*
FROM t_samplingso
JOIN so_resultentry ON So_ResultEntryT_OrderHeaderID = T_SamplingSoT_OrderHeaderID AND So_ResultEntryID = {$prm['trx']['trx_id']}
JOIN t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = T_SampleTypeID
WHERE T_SamplingSoIsActive = 'Y'
GROUP BY T_SamplingSoID";
$data_sampling = $this->db_onedev->query($sql)->result_array();
if ($data_sampling) {
foreach ($data_sampling as $k => $v) {
$sql = "UPDATE t_samplingso SET T_SamplingSoIsDone = 'Y' WHERE T_SamplingSoID = {$v['T_SamplingSoID']}";
$this->db_onedev->query($sql);
}
}
}
if ($prm['act'] === 'unval2') {
$sql = "UPDATE so_resultentry SET So_ResultEntryValidation2 = 'N',
So_ResultEntryStatus = 'VAL1',
So_ResultEntryLastUpdated = NOW(),
So_ResultEntryLastUpdatedUserID = {$userid}
WHERE So_ResultEntryID = {$prm['trx']['trx_id']}";
$this->db_onedev->query($sql);
$sql = "SELECT t_samplingso.*
FROM t_samplingso
JOIN so_resultentry ON So_ResultEntryT_OrderHeaderID = T_SamplingSoT_OrderHeaderID AND So_ResultEntryID = {$prm['trx']['trx_id']}
JOIN t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = T_SampleTypeID
WHERE T_SamplingSoIsActive = 'Y'
GROUP BY T_SamplingSoID";
$data_sampling = $this->db_onedev->query($sql)->result_array();
if ($data_sampling) {
foreach ($data_sampling as $k => $v) {
$sql = "UPDATE t_samplingso SET T_SamplingSoIsDone = 'N' WHERE T_SamplingSoID = {$v['T_SamplingSoID']}";
$this->db_onedev->query($sql);
}
}
}
// Template additional (TBBB/VISUS/BW) tidak memakai so_resultentrydetail.
$arr_other = ['TBBB', 'VISUS', 'BW'];
if (isset($prm['trx']['template_name']) && in_array($prm['trx']['template_name'], $arr_other)) {
$detail = $prm['trx']['details'];
if (!is_array($detail)) {
$detail = [];
}
if ($prm['trx']['template_name'] === 'TBBB') {
$chk = $this->db_onedev->query(
"SELECT COUNT(*) AS n FROM t_samplingso_additional_fisik_bbtb WHERE T_SamplingAdditionalFisikBBTBT_OrderHeaderID = ? AND T_SamplingAdditionalFisikBBTBIsActive = 'Y'",
[$prm['trx']['orderid']]
)->row_array();
if (!empty($chk['n'])) {
$sql = "UPDATE t_samplingso_additional_fisik_bbtb SET
T_SamplingAdditionalFisikBBTBValueBB = ?,
T_SamplingAdditionalFisikBBTBValueTB = ?,
T_SamplingAdditionalFisikBBTBBodyFat = ?,
T_SamplingAdditionalFisikBBTBStandart = ?
WHERE
T_SamplingAdditionalFisikBBTBT_OrderHeaderID = ? AND
T_SamplingAdditionalFisikBBTBIsActive = 'Y'
LIMIT 1";
$qry = $this->db_onedev->query($sql, [
isset($detail['bb']) ? $detail['bb'] : 0,
isset($detail['tb']) ? $detail['tb'] : 0,
isset($detail['bodyfat']) ? $detail['bodyfat'] : 0,
isset($detail['standart']) ? $detail['standart'] : '',
$prm['trx']['orderid']
]);
} else {
$sql = "INSERT INTO t_samplingso_additional_fisik_bbtb (
T_SamplingAdditionalFisikBBTBT_OrderHeaderID,
T_SamplingAdditionalFisikBBTBValueBB,
T_SamplingAdditionalFisikBBTBValueTB,
T_SamplingAdditionalFisikBBTBValueClassification,
T_SamplingAdditionalFisikBBTBBodyFat,
T_SamplingAdditionalFisikBBTBStandart,
T_SamplingAdditionalFisikBBTBCreated
) VALUES(?,?,?,?,?,?,NOW())";
$qry = $this->db_onedev->query($sql, [
$prm['trx']['orderid'],
isset($detail['bb']) ? $detail['bb'] : 0,
isset($detail['tb']) ? $detail['tb'] : 0,
'',
isset($detail['bodyfat']) ? $detail['bodyfat'] : 0,
isset($detail['standart']) ? $detail['standart'] : ''
]);
}
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
}
if ($prm['trx']['template_name'] === 'VISUS') {
$chk = $this->db_onedev->query(
"SELECT COUNT(*) AS n FROM t_samplingso_additional_fisik_visus WHERE T_SamplingAdditionalFisikVisusT_OrderHeaderID = ?",
[$prm['trx']['orderid']]
)->row_array();
if (!empty($chk['n'])) {
$sql = "UPDATE t_samplingso_additional_fisik_visus SET
T_SamplingAdditionalFisikVisusTKODV = ?,
T_SamplingAdditionalFisikVisusTKOSV = ?,
T_SamplingAdditionalFisikVisusDKODV = ?,
T_SamplingAdditionalFisikVisusDKOSV = ?,
T_SamplingAdditionalFisikVisusODSPH = ?,
T_SamplingAdditionalFisikVisusODCYL = ?,
T_SamplingAdditionalFisikVisusODX = ?,
T_SamplingAdditionalFisikVisusOSSPH = ?,
T_SamplingAdditionalFisikVisusOSCYL = ?,
T_SamplingAdditionalFisikVisusOSX = ?,
T_SamplingAdditionalFisikVisusADD = ?
WHERE
T_SamplingAdditionalFisikVisusT_OrderHeaderID = ?
LIMIT 1";
$qry = $this->db_onedev->query($sql, [
isset($detail['tkodv']) ? $detail['tkodv'] : '',
isset($detail['tkosv']) ? $detail['tkosv'] : '',
isset($detail['dkodv']) ? $detail['dkodv'] : '',
isset($detail['dkosv']) ? $detail['dkosv'] : '',
isset($detail['odsph']) ? $detail['odsph'] : '',
isset($detail['odcyl']) ? $detail['odcyl'] : '',
isset($detail['odx']) ? $detail['odx'] : '',
isset($detail['ossph']) ? $detail['ossph'] : '',
isset($detail['oscyl']) ? $detail['oscyl'] : '',
isset($detail['osx']) ? $detail['osx'] : '',
isset($detail['visusadd']) ? $detail['visusadd'] : '',
$prm['trx']['orderid']
]);
} else {
$sql = "INSERT INTO t_samplingso_additional_fisik_visus (
T_SamplingAdditionalFisikVisusT_OrderHeaderID,
T_SamplingAdditionalFisikVisusTKODV,
T_SamplingAdditionalFisikVisusTKOSV,
T_SamplingAdditionalFisikVisusDKODV,
T_SamplingAdditionalFisikVisusDKOSV,
T_SamplingAdditionalFisikVisusODSPH,
T_SamplingAdditionalFisikVisusODCYL,
T_SamplingAdditionalFisikVisusODX,
T_SamplingAdditionalFisikVisusOSSPH,
T_SamplingAdditionalFisikVisusOSCYL,
T_SamplingAdditionalFisikVisusOSX,
T_SamplingAdditionalFisikVisusADD,
T_SamplingAdditionalFisikVisusCreated
) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,NOW())";
$qry = $this->db_onedev->query($sql, [
$prm['trx']['orderid'],
isset($detail['tkodv']) ? $detail['tkodv'] : '',
isset($detail['tkosv']) ? $detail['tkosv'] : '',
isset($detail['dkodv']) ? $detail['dkodv'] : '',
isset($detail['dkosv']) ? $detail['dkosv'] : '',
isset($detail['odsph']) ? $detail['odsph'] : '',
isset($detail['odcyl']) ? $detail['odcyl'] : '',
isset($detail['odx']) ? $detail['odx'] : '',
isset($detail['ossph']) ? $detail['ossph'] : '',
isset($detail['oscyl']) ? $detail['oscyl'] : '',
isset($detail['osx']) ? $detail['osx'] : '',
isset($detail['visusadd']) ? $detail['visusadd'] : ''
]);
}
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
}
if ($prm['trx']['template_name'] === 'BW') {
$chk = $this->db_onedev->query(
"SELECT COUNT(*) AS n FROM t_samplingso_additional_fisik_bw WHERE T_SamplingAdditionalFisikBWT_OrderHeaderID = ?",
[$prm['trx']['orderid']]
)->row_array();
if (!empty($chk['n'])) {
$sql = "UPDATE t_samplingso_additional_fisik_bw SET
T_SamplingAdditionalFisikBWPWValue = ?,
T_SamplingAdditionalFisikBWPWVAngka = ?,
T_SamplingAdditionalFisikBWPWKeterangan = ?
WHERE
T_SamplingAdditionalFisikBWT_OrderHeaderID = ?
LIMIT 1";
$qry = $this->db_onedev->query($sql, [
isset($detail['value']) ? $detail['value'] : '',
isset($detail['angka']) ? $detail['angka'] : '',
isset($detail['keterangan']) ? $detail['keterangan'] : '',
$prm['trx']['orderid']
]);
} else {
$sql = "INSERT INTO t_samplingso_additional_fisik_bw (
T_SamplingAdditionalFisikBWT_OrderHeaderID,
T_SamplingAdditionalFisikBWPWValue,
T_SamplingAdditionalFisikBWPWVAngka,
T_SamplingAdditionalFisikBWPWKeterangan,
T_SamplingAdditionalFisikBWCreated
) VALUES(?,?,?,?,NOW())";
$qry = $this->db_onedev->query($sql, [
$prm['trx']['orderid'],
isset($detail['value']) ? $detail['value'] : '',
isset($detail['angka']) ? $detail['angka'] : '',
isset($detail['keterangan']) ? $detail['keterangan'] : ''
]);
}
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
}
} else {
foreach ($prm['trx']['details'] as $k => $v) {
$sql = "UPDATE so_resultentrydetail SET
So_ResultEntryDetailResult = '{$v['result_value']}',
So_ResultEntryDetailLastUpdated = NOW(),
So_ResultEntryDetailLastUpdatedUserID = {$userid}
WHERE So_ResultEntryDetailID = {$v['trx_id']}";
$this->db_onedev->query($sql);
//echo $this->db_onedev->last_query();
}
}
if ($prm['act'] === 'save' || $prm['act'] === 'val1' || $prm['act'] === 'val2') {
if ($prm['trx']['status_result'] && count($prm['trx']['status_result']) > 0) {
$sql = "UPDATE so_resultentry_category_result SET
So_ResultEntryCategoryResultIsActive = 'N',
So_ResultEntryCategoryResultLastUpdatedUserID = {$userid},
So_ResultEntryCategoryResultLastUpdated = NOW()
WHERE
So_ResultEntryCategoryResultSo_ResultEntryID = {$prm['trx']['trx_id']} AND
So_ResultEntryCategoryResultIsActive = 'Y'";
$qry = $this->db_onedev->query($sql);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
foreach ($prm['trx']['status_result'] as $key_data => $value_data) {
$sql = "INSERT INTO so_resultentry_category_result (
So_ResultEntryCategoryResultSo_ResultEntryID,
So_ResultEntryCategoryNonlabConclusionDetailID,
So_ResultEntryCategoryResultCreated,
So_ResultEntryCategoryResultCreatedUserID
)
VALUES(
{$prm['trx']['trx_id']},
'{$value_data['id']}',
NOW(),
{$userid}
)";
$qry = $this->db_onedev->query($sql);
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
}
}
}
$last_id = $prm['trx']['trx_id'];
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = {$last_id}";
$data_log_header = $this->db_onedev->query($sql)->row_array();
$sql = "SELECT * FROM so_resultentrydetail WHERE So_ResultEntryDetailSo_ResultEntryID = {$last_id}";
$data_log_details = $this->db_onedev->query($sql)->result_array();
$act = "UPDATE_ACT";
if ($prm['act'] === 'val1') {
$act = "VALIDATION";
$errors = $this->genkelainan->generate_kelainan_nonlab($prm['trx']['orderid'], $userid);
$sql = "SELECT so_resultentrydetail.*, IF(NonlabTemplateMcuID IS NULL,'N','Y') as is_kesimpulan, T_TestID, T_TestName, So_ResultEntryT_OrderHeaderID, Group_ResultID
FROM so_resultentrydetail
JOIN so_resultentry ON So_ResultEntryDetailSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryIsActive = 'Y'
JOIN t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = '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_ResultIsActive = 'Y'
LEFT JOIN nonlab_template_mcu ON NonlabTemplateMcuNat_TestID = T_TestNat_TestID AND NonlabTemplateMcuIsActive = 'Y' AND
NonlabTemplateMcuNonlabTemplateDetailID = So_ResultEntryDetailNonlab_TemplateDetailID
WHERE
So_ResultEntryDetailSo_ResultEntryID = {$last_id} AND
So_ResultEntryDetailIsActive = 'Y'";
$qry = $this->db_onedev->query($sql);
$data_result_details = $qry->result_array();
if (count($data_result_details) > 0) {
$group_result_id = $data_result_details[0]['Group_ResultID'];
$test_id = $data_result_details[0]['T_TestID'];
$test_name = $data_result_details[0]['T_TestName'];
$order_id = $data_result_details[0]['So_ResultEntryT_OrderHeaderID'];
$data_result_details = json_encode($data_result_details);
$sql = "UPDATE mcu_resume_results SET Mcu_ResumeResultsIsActive = 'N'
WHERE Mcu_ResumeResultsT_OrderHeaderID = ? AND
Mcu_ResumeResultsGroupResultID = ? AND
Mcu_ResumeResultsT_TestID = ? AND
Mcu_ResumeResultsIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, array($order_id, $group_result_id, $test_id));
if (!$qry) {
echo json_encode(
array("status" => "ERR", "message" => "Error: " . $this->db_onedev->error())
);
exit;
}
$sql = "INSERT INTO mcu_resume_results(
Mcu_ResumeResultsType,
Mcu_ResumeResultsT_OrderHeaderID,
Mcu_ResumeResultsGroupResultID,
Mcu_ResumeResultsT_TestID,
Mcu_ResumeResultsName,
Mcu_ResumeResultsJSON,
Mcu_ResumeResultsCreated,
Mcu_ResumeResultsUserID)
VALUES('KHUSUS',?,?,?,?,?,NOW(),?)";
$qry = $this->db_onedev->query($sql, array($order_id, $group_result_id, $test_id, $test_name, $data_result_details, $userid));
if (!$qry) {
echo json_encode(
array("status" => "ERR", "message" => "Error: " . $this->db_onedev->error())
);
exit;
}
}
}
if ($prm['act'] === 'unval1') {
$act = "UNVALIDATION";
// Report duatahun fisik: update status validasi jadi N (unval1)
$sql = "UPDATE x_report_duatahun_fisik_result
SET X_ReportDuaTahunFisikResultStatusVal = 'N',
X_ReportDuaTahunFisikResultUpdatedAt = CURRENT_TIMESTAMP
WHERE X_ReportDuaTahunFisikResultSo_ResultEntryID = ?";
$this->db_onedev->query($sql, array((int)$last_id));
$affected = method_exists($this->db_onedev, 'affected_rows') ? (int)$this->db_onedev->affected_rows() : null;
if (isset($this->db_log)) {
$ok_log = $this->db_log->query(
"INSERT INTO error_log (ErrorLogCode, ErrorLogName, ErrorLogDescription, ErrorLogData, ErrorLogCreated)
VALUES (?, ?, ?, ?, NOW())",
array(
'PERSIST_FISIK_INFO',
'unval1_status_update',
'so_resultentry_id=' . (int)$last_id,
json_encode(array('affected_rows' => $affected))
)
);
if (!$ok_log) {
error_log('PERSIST_FISIK_INFO insert failed: ' . json_encode($this->db_log->error()) . ' | last_query=' . $this->db_log->last_query());
}
}
}
$this->soresultlog->step_action($act, $last_id, $userid);
$data_log = json_encode(array('header' => $data_log_header, 'details' => $data_log_details));
$this->soresultlog->log_result($data_log, $last_id, $userid);
$status_verif = "N";
$last_id = $prm['trx']['re_id'];
if ($prm['act'] === 'val1' || $prm['act'] === 'unval1') {
if ($prm['action'] === 'val1')
$status_verif = "Y";
$verdate = '0000-00-00 00:00:00';
if ($status_verif == 'Y')
$verdate = 'NOW()';
$veruser = $status_verif == 'Y' ? $userid : 0;
$sql = "SELECT So_ResultEntryT_OrderDetailID
FROM so_resultentry
WHERE
So_ResultEntryID = {$last_id} LIMIT 1";
$qry = $this->db_onedev->query($sql);
$data_result_entry = $qry->result_array();
$orderdetail_id = $data_result_entry[0]['So_ResultEntryT_OrderDetailID'];
$sql = "UPDATE t_orderdetail SET T_OrderDetailVerification = '{$status_verif}',
T_OrderDetailVerDate = '{$verdate}',
T_OrderDetailVerUserID = {$veruser}
WHERE T_OrderDetailID = {$orderdetail_id}";
$qry = $this->db_onedev->query($sql);
//echo $this->db_onedev->last_query();
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
$row_dt_group = $this->get_group_result_by_orderdetail($orderdetail_id);
if ($row_dt_group === false) {
$this->sys_error_db("single verification select group result", $this->db_onedev);
exit();
}
if (count($row_dt_group) > 0) {
$ohid = $row_dt_group["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
$gid = $row_dt_group["T_OrderHeaderGroupResultGroup_ResultID"];
$this->verification_by_group($ohid, $gid);
}
else {
$this->sys_error_db("group result tidak ditemukan", $this->db_onedev);
exit();
}
}
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = {$last_id} LIMIT 1";
$fresh_header = $this->db_onedev->query($sql)->row_array();
$fresh_header['status_name'] = $this->alias_resultentry_status_name(isset($fresh_header['So_ResultEntryStatus']) ? $fresh_header['So_ResultEntryStatus'] : null);
$result = array(
"total" => 1,
"records" => array('status' => 'OK'),
"header" => $fresh_header
);
$this->sys_ok($result);
exit;
}
function deletetrx()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$query = "UPDATE so_walklettercourier SET
So_WalkLetterCourierIsActive = 'N',
So_WalkLetterCourierUserID = ?
WHERE
So_WalkLetterCourierID = ?";
//echo $query;
$saveheader = $this->db_onedev->query($query, array($userid, $prm['trx_id']));
$last_id = $prm['trx_id'];
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = ?";
$data_log_header = $this->db_onedev->query($sql, array($last_id))->result();
$sql = "SELECT * FROM so_resultentrydetail WHERE So_ResultEntryDetailSo_ResultEntryID = ?";
$data_log_details = $this->db_onedev->query($sql, array($last_id))->result();
$data_log = json_encode(array('header' => $data_log_header, 'details' => $data_log_details));
$sql = "INSERT INTO one_log.log_resultentry_so (
Log_ResultEntrySoDate,
Log_ResultEntrySoJSON,
Log_ResultEntrySoUserID
)
VALUES(
NOW(),
?,
?
)";
$this->db_onedev->query($sql, array($data_log, $userid));
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = {$last_id} LIMIT 1";
$fresh_header = $this->db_onedev->query($sql)->row_array();
$fresh_header['status_name'] = $this->alias_resultentry_status_name(isset($fresh_header['So_ResultEntryStatus']) ? $fresh_header['So_ResultEntryStatus'] : null);
$result = array(
"total" => 1,
"records" => array('status' => 'OK'),
"header" => $fresh_header,
"numbering" => $prm['trx_numbering'],
"id" => $prm['trx_id']
);
$this->sys_ok($result);
exit;
}
function savedoctor()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$rst = array();
$sql = "UPDATE so_resultentry SET So_ResultEntryM_DoctorID = {$prm['selected_doctor']['id']} WHERE So_ResultEntryID = {$prm['selected_detail']['re_id']}";
$rst = $this->db_onedev->query($sql);
$act = "CX_DOCTOR";
$this->soresultlog->step_action($act, $prm['selected_detail']['re_id'], $userid);
$result = array(
"total" => 1,
"records" => $rst
);
$this->sys_ok($result);
exit;
}
function validation_by_group($order_id, $group_id)
{
$sql = "SELECT COUNT(*) as total_all
FROM t_orderdetail
JOIN t_orderheader_group_result_details ON
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = T_OrderDetailID
JOIN t_orderheader_group_result ON
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultT_OrderHeaderID = T_OrderHeaderGroupResultDetailsT_OrderHeaderID AND
T_OrderHeaderGroupResultIsActive = 'Y' AND
T_OrderHeaderGroupResultGroup_ResultID = ?
WHERE T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, [$group_id, $order_id]);
if (!$qry) {
$this->sys_error_db("worklist count", $this->db_onedev);
exit();
}
//echo $this->db_onedev->last_query() . ';';
$total_all = $qry->result_array()[0]["total_all"];
$sql = "SELECT COUNT(*) as total_validated
FROM t_orderdetail
JOIN t_orderheader_group_result_details ON
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = T_OrderDetailID
JOIN t_orderheader_group_result ON
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultT_OrderHeaderID = T_OrderHeaderGroupResultDetailsT_OrderHeaderID AND
T_OrderHeaderGroupResultIsActive = 'Y' AND
T_OrderHeaderGroupResultGroup_ResultID = ?
WHERE T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailIsActive = 'Y' AND T_OrderDetailValidation = 'Y'";
$qry = $this->db_onedev->query($sql, [$group_id, $order_id]);
if (!$qry) {
$this->sys_error_db("worklist count", $this->db_onedev);
exit();
}
//echo $this->db_onedev->last_query() . ';';
$total_validated = $qry->result_array()[0]["total_validated"];
$status = "N";
if ($total_validated > 0 && $total_validated < $total_all) {
$status = "P";
}
else if ($total_validated > 0 && $total_validated == $total_all) {
$status = "Y";
}
//echo $total_all;
//echo $total_verified;
//echo $status;
$sql = "UPDATE t_orderheader_group_result SET
T_OrderHeaderValidation = ?
WHERE
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultGroup_ResultID = ?";
$query = $this->db_onedev->query($sql, [$status, $order_id, $group_id]);
if (!$query) {
$this->sys_error_db("worklist count", $this->db_onedev);
exit();
}
//echo $this->db_onedev->last_query();
return true;
}
function verification_by_group($order_id, $group_id)
{
$sql = "SELECT COUNT(*) as total_all
FROM t_orderdetail
JOIN t_orderheader_group_result_details ON
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = T_OrderDetailID
JOIN t_orderheader_group_result ON
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultT_OrderHeaderID = T_OrderHeaderGroupResultDetailsT_OrderHeaderID AND
T_OrderHeaderGroupResultIsActive = 'Y' AND
T_OrderHeaderGroupResultGroup_ResultID = ?
WHERE T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, [$group_id, $order_id]);
if (!$qry) {
$this->sys_error_db("worklist count", $this->db_onedev);
exit();
}
//echo $this->db_onedev->last_query() . ';';
$total_all = $qry->result_array()[0]["total_all"];
$sql = "SELECT COUNT(*) as total_verified
FROM t_orderdetail
JOIN t_orderheader_group_result_details ON
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = T_OrderDetailID
JOIN t_orderheader_group_result ON
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultT_OrderHeaderID = T_OrderHeaderGroupResultDetailsT_OrderHeaderID AND
T_OrderHeaderGroupResultIsActive = 'Y' AND
T_OrderHeaderGroupResultGroup_ResultID = ?
WHERE T_OrderDetailT_OrderHeaderID = ? AND
T_OrderDetailIsActive = 'Y' AND T_OrderDetailVerification = 'Y'";
$qry = $this->db_onedev->query($sql, [$group_id, $order_id]);
if (!$qry) {
$this->sys_error_db("worklist count", $this->db_onedev);
exit();
}
//echo $this->db_onedev->last_query() . ';';
$total_verified = $qry->result_array()[0]["total_verified"];
$status = "N";
if ($total_verified > 0 && $total_verified < $total_all) {
$status = "P";
}
else if ($total_verified > 0 && $total_verified == $total_all) {
$status = "Y";
}
//echo $total_all;
//echo $total_verified;
//echo $status;
$sql = "UPDATE t_orderheader_group_result SET
T_OrderHeaderVerification = ?
WHERE
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultGroup_ResultID = ?";
$query = $this->db_onedev->query($sql, [$status, $order_id, $group_id]);
if (!$query) {
$this->sys_error_db("worklist count", $this->db_onedev);
exit();
}
//echo $this->db_onedev->last_query();
return true;
}
function get_group_result_by_orderdetail($orderdetail_id)
{
$first_row = [];
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$row_dt_group = $query->result_array();
if (count($row_dt_group) > 0) {
$first_row = $row_dt_group[0];
}
$sql = "SELECT T_OrderDetailT_OrderHeaderID, T_OrderDetailT_TestID
FROM t_orderdetail
WHERE T_OrderDetailID = ? AND T_OrderDetailIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
if (count($rows) <= 0) {
return [];
}
$orderheader_id = $rows[0]['T_OrderDetailT_OrderHeaderID'];
$test_id = $rows[0]['T_OrderDetailT_TestID'];
$sql = "SELECT
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultFlagPerTest
FROM group_resultdetail grd
JOIN group_result gr
ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
AND gr.Group_ResultIsActive = 'Y'
WHERE
grd.Group_ResultDetailT_TestID = ? AND
grd.Group_ResultDetailIsActive = 'Y'
ORDER BY gr.Group_ResultID ASC
LIMIT 1";
$query = $this->db_onedev->query($sql, [$test_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
if (count($rows) <= 0) {
return [];
}
$target_group_result_id = $rows[0]['Group_ResultID'];
$target_group_result_name = $rows[0]['Group_ResultName'];
$target_group_flag_per_test = isset($rows[0]['Group_ResultFlagPerTest']) ? $rows[0]['Group_ResultFlagPerTest'] : 'Y';
$target_group_test_id = $target_group_flag_per_test === 'Y' ? intval($test_id) : 0;
$sql = "SELECT
T_OrderHeaderGroupResultID,
T_OrderHeaderGroupResultDetails
FROM t_orderheader_group_result
WHERE
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultGroup_ResultID = ? AND
T_OrderHeaderGroupResultT_TestID = ? AND
T_OrderHeaderGroupResultIsActive = 'Y'
ORDER BY T_OrderHeaderGroupResultID ASC
LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderheader_id, $target_group_result_id, $target_group_test_id]);
if (!$query) {
return false;
}
$rows = $query->result_array();
$group_result_id = 0;
$group_result_details = '';
if (count($rows) > 0) {
$group_result_id = $rows[0]['T_OrderHeaderGroupResultID'];
$group_result_details = trim((string)$rows[0]['T_OrderHeaderGroupResultDetails']);
}
else {
$sql = "INSERT INTO t_orderheader_group_result (
T_OrderHeaderGroupResultT_OrderHeaderID,
T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultGroup_ResultName,
T_OrderHeaderGroupResultT_TestID,
T_OrderHeaderGroupResultDetails,
T_OrderHeaderGroupResultCreated
) VALUES (?, ?, ?, ?, ?, NOW())";
$query = $this->db_onedev->query($sql, [
$orderheader_id,
$target_group_result_id,
$target_group_result_name,
$target_group_test_id,
(string)$orderdetail_id
]);
if (!$query) {
return false;
}
$group_result_id = intval($this->db_onedev->insert_id());
$group_result_details = (string)$orderdetail_id;
}
$details_list = $group_result_details === '' ? [] : explode(',', str_replace(' ', '', $group_result_details));
if (!in_array((string)$orderdetail_id, $details_list, true)) {
$details_list[] = (string)$orderdetail_id;
$new_details = implode(',', $details_list);
$sql = "UPDATE t_orderheader_group_result
SET T_OrderHeaderGroupResultDetails = ?
WHERE T_OrderHeaderGroupResultID = ?";
$query = $this->db_onedev->query($sql, [$new_details, $group_result_id]);
if (!$query) {
return false;
}
}
$sql = "INSERT INTO t_orderheader_group_result_details(
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID,
T_OrderHeaderGroupResultDetailsT_OrderDetailID,
T_OrderHeaderGroupResultDetailsIsActive,
T_OrderHeaderGroupResultDetailsCreated,
T_OrderHeaderGroupResultDetailsLastUpdated
)
SELECT ?, ?, ?, 'Y', NOW(), '0000-00-00 00:00:00'
FROM dual
WHERE NOT EXISTS(
SELECT 1
FROM t_orderheader_group_result_details
WHERE
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
)";
$query = $this->db_onedev->query($sql, [
$group_result_id,
$orderheader_id,
$orderdetail_id,
$group_result_id,
$orderheader_id,
$orderdetail_id
]);
if (!$query) {
return false;
}
$sql = "SELECT T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultDetailsT_OrderHeaderID
FROM t_orderheader_group_result_details
JOIN t_orderheader_group_result ON T_OrderHeaderGroupResultID =
T_OrderHeaderGroupResultDetailsT_OrderHeaderGroupResultID AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultDetailsT_OrderDetailID = ? AND
T_OrderHeaderGroupResultDetailsIsActive = 'Y' LIMIT 1";
$query = $this->db_onedev->query($sql, [$orderdetail_id]);
if (!$query) {
return false;
}
$row_dt_group = $query->result_array();
if (count($row_dt_group) > 0) {
return $row_dt_group[0];
}
return [];
}
function savefisik()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$errors = [];
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$rst = array();
$table_fisik = 'so_resultentry_fisik_umum';
$table_saran = 'so_resultentry_fisik_umum_additional';
$is_mobile = isset($prm['is_mobile']) ? $prm['is_mobile'] == 'Y' ? true : false : false;
$r_templates = isset($prm['r_templates']) ? $prm['r_templates'] : [];
$save_template = [];
if ($r_templates && count($r_templates) > 0) {
foreach ($r_templates as $v_r_template) {
$save_template[] = $v_r_template['title'];
}
}
if ($prm['lang'] == 'ENG') {
$table_fisik = 'so_resultentry_fisik_umum_eng';
$table_saran = 'so_resultentry_fisik_umum_additional_eng';
$riwayats = count($prm["riwayats"]) > 0 ? $prm["riwayats"] : [];
$fisiks = count($prm["fisiks"]) > 0 ? $prm["fisiks"] : [];
$k3s = count($prm["k3s"]) > 0 ? $prm["k3s"] : [];
$re_datas = $this->retranslate($riwayats, $fisiks, $ks3);
$prm["riwayats"] = $re_datas['riwayats'];
$prm["fisiks"] = $re_datas['fisiks'];
$prm["k3s"] = $re_datas['k3s'];
}
$this->db_onedev->trans_begin();
if ($prm['action'] === 'unval1' || $prm['act'] === '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 {$table_fisik}
JOIN fisik_template ON FisikTemplateTitle = ? AND FisikTemplateIsActive = 'Y' AND
FisikTemplateType = 'Riwayat'
SET
So_ResultEntryFisikUmumDetails = ?,
So_ResultEntryFisikUmumLastUpdated = NOW(),
So_ResultEntryFisikUmumLastUpdatedUserID = ?
WHERE
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND
So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
";
$rst = $this->db_onedev->query($sql, array(
$v_riwayat['title'],
$data_riwayat,
$userid,
$prm['trx']['orderid']
));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update form riwayat pasien template");
exit;
}
//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 {$table_fisik}
JOIN fisik_template ON FisikTemplateTitle = ? AND FisikTemplateIsActive = 'Y' AND
FisikTemplateType = 'Fisik'
SET
So_ResultEntryFisikUmumDetails = ?,
So_ResultEntryFisikUmumLastUpdated = NOW(),
So_ResultEntryFisikUmumLastUpdatedUserID = ?
WHERE
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND
So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
";
$rst = $this->db_onedev->query($sql, array(
$v_fisik['title'],
$data_fisik,
$userid,
$prm['trx']['orderid']
));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update form fisik umum");
exit;
}
}
$data_json['fisik'] = $prm["fisiks"];
}
//echo $sql;
$umum_saran = $prm['umum_saran'];
//echo $umum_saran;
if ($umum_saran && $umum_saran != '') {
$sql = "SELECT COUNT(*) as xcount, So_ResultEntryFisikUmumAdditionalID as id
FROM {$table_saran}
WHERE
So_ResultEntryFisikUmumAdditionalT_OrderHeaderID = ? AND
So_ResultEntryFisikUmumAdditionalType = 'saran' AND
So_ResultEntryFisikUmumAdditionalIsActive = 'Y'";
$rst_exist_saran = $this->db_onedev->query($sql, array($prm['trx']['orderid']))->row_array();
//echo $this->db_onedev->last_query();
if ($rst_exist_saran['xcount'] == 0) {
$sql = "INSERT INTO {$table_saran} (
So_ResultEntryFisikUmumAdditionalT_OrderHeaderID,
So_ResultEntryFisikUmumAdditionalType,
So_ResultEntryFisikUmumAdditionalValue,
So_ResultEntryFisikUmumAdditionalCreatedUserID,
So_ResultEntryFisikUmumAdditionalCreated
)
VALUES(?, 'saran', ?, ?, NOW())";
$rst = $this->db_onedev->query($sql, array(
$prm['trx']['orderid'],
$umum_saran,
$userid
));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error insert form saran");
exit;
}
}
else {
$sql = "UPDATE {$table_saran} SET
So_ResultEntryFisikUmumAdditionalValue = ?,
So_ResultEntryFisikUmumAdditionalLastUpdated = NOW(),
So_ResultEntryFisikUmumAdditionalLastUpdatedUserID = ?
WHERE
So_ResultEntryFisikUmumAdditionalID = ?";
$this->db_onedev->query($sql, array(
$umum_saran,
$userid,
$rst_exist_saran['id']
));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update form saran");
exit;
}
//echo $this->db_onedev->last_query();
}
}
}
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 {$table_fisik}
JOIN fisik_template ON FisikTemplateTitle = ? AND FisikTemplateIsActive = 'Y' AND
FisikTemplateType = 'K3'
SET
So_ResultEntryFisikUmumDetails = ?,
So_ResultEntryFisikUmumLastUpdated = NOW(),
So_ResultEntryFisikUmumLastUpdatedUserID = ?
WHERE
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND
So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID
";
$rst = $this->db_onedev->query($sql, array(
$v_k3['title'],
$data_k3s,
$userid,
$prm['trx']['orderid']
));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update form k3s");
exit;
}
}
$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 ((isset($prm['action']) && $prm['action'] === 'val1') || (isset($prm['act']) && $prm['act'] === 'val1')) {
$sql = "UPDATE so_resultentry SET
So_ResultEntryValidation1 = 'Y',
So_ResultEntryStatus = 'VAL1',
So_ResultEntryLastUpdated = NOW(),
So_ResultEntryLastUpdatedUserID = ?
WHERE
So_ResultEntryID = ?";
$rst = $this->db_onedev->query($sql, array($userid, $prm['trx']['re_id']));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update form validation");
exit;
}
$this->generate_qr_nonlab_for_val1($prm['trx'], $userid);
$sql = "SELECT T_OrderHeaderAddOnSecondM_LangID as langid
FROM t_orderheaderaddon
WHERE
T_OrderHeaderAddonT_OrderHeaderID = ? AND
T_OrderHeaderAddonIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, array($prm['trx']['orderid']));
if (!$qry) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error get data order header addon");
exit;
}
$dt_order_header_addon = $qry->row_array();
$langid = $dt_order_header_addon['langid'];
if ($langid == 0) {
$errors = $this->genresultfisik->save_result_fisik_umum($prm['trx']['orderid'],1);
}
else {
$errors = $this->genresultfisik->save_result_fisik_umum($prm['trx']['orderid'],$langid);
}
if (!$errors) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error persist all fisik data");
exit;
}
$sql = "SELECT
T_OrderHeaderGroupResultGroup_ResultID AS group_result_id,
T_OrderHeaderGroupResultT_TestID AS test_id,
T_OrderHeaderGroupResultGroup_ResultName AS result_name
FROM t_orderheader_group_result
JOIN group_result
ON T_OrderHeaderGroupResultGroup_ResultID = Group_ResultID
AND Group_ResultResumeMcu = 'FISIK'
AND Group_ResultIsActive = 'Y'
WHERE
T_OrderHeaderGroupResultT_OrderHeaderID = ? AND
T_OrderHeaderGroupResultIsActive = 'Y' AND
(T_OrderHeaderGroupResultT_TestID = ? OR T_OrderHeaderGroupResultT_TestID = 0)
ORDER BY IF(T_OrderHeaderGroupResultT_TestID = ?, 0, 1)
LIMIT 1";
$qry = $this->db_onedev->query($sql, array(
$prm['trx']['orderid'],
$prm['trx']['test_id'],
$prm['trx']['test_id']
));
if (!$qry) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error get group result fisik");
exit;
}
$data_resume_result = $qry->row_array();
if ($data_resume_result) {
$sql = "UPDATE mcu_resume_results
SET Mcu_ResumeResultsIsActive = 'N'
WHERE
Mcu_ResumeResultsType = ? AND
Mcu_ResumeResultsT_OrderHeaderID = ? AND
Mcu_ResumeResultsGroupResultID = ? AND
Mcu_ResumeResultsT_TestID = ? AND
Mcu_ResumeResultsIsActive = 'Y'";
$rst = $this->db_onedev->query($sql, array(
'FISIK',
$prm['trx']['orderid'],
$data_resume_result['group_result_id'],
$data_resume_result['test_id']
));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update mcu resume results fisik");
exit;
}
$resume_name = $data_resume_result['result_name'];
if (!$resume_name || trim($resume_name) === '') {
$resume_name = $prm['trx']['test_name'];
}
$sql = "INSERT INTO mcu_resume_results(
Mcu_ResumeResultsType,
Mcu_ResumeResultsT_OrderHeaderID,
Mcu_ResumeResultsGroupResultID,
Mcu_ResumeResultsName,
Mcu_ResumeResultsT_TestID,
Mcu_ResumeResultsJSON,
Mcu_ResumeResultsCreated,
Mcu_ResumeResultsUserID
)
VALUES(?, ?, ?, ?, ?, '', NOW(), ?)";
$rst = $this->db_onedev->query($sql, array(
'FISIK',
$prm['trx']['orderid'],
$data_resume_result['group_result_id'],
$resume_name,
$data_resume_result['test_id'],
$userid
));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error insert mcu resume results fisik");
exit;
}
}
$last_id = $prm['trx']['re_id'];
$errors = $this->genkelainan->generate_all_fisik($prm['trx']['orderid'], $userid);
if (count($errors) > 0) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error generate all fisik kelainan");
exit;
}
}
if ($prm['act'] === 'unval1' || $prm['action'] === 'unval1') {
$sql = "UPDATE so_resultentry SET
So_ResultEntryValidation1 = 'N',
So_ResultEntryStatus = 'NEW',
So_ResultEntryLastUpdated = NOW(),
So_ResultEntryLastUpdatedUserID = ?
WHERE
So_ResultEntryID = ?";
$rst = $this->db_onedev->query($sql, array($userid, $prm['trx']['re_id']));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update form validation");
exit;
}
//echo $this->db_onedev->last_query();
$errors = $this->genresultfisik->update_unvalidated($prm['trx']['orderid']);
if (!$errors) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update unvalidated fisik umum genresultfisik");
exit;
}
}
$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);
$status_verif = "N";
$last_id = $prm['trx']['re_id'];
if ($prm['action'] === 'val1' || $prm['action'] === 'unval1') {
if ($prm['action'] === 'val1')
$status_verif = "Y";
$verdate = '0000-00-00 00:00:00';
if ($status_verif == 'Y')
$verdate = 'NOW()';
$veruser = $status_verif == 'Y' ? $userid : 0;
$sql = "SELECT So_ResultEntryT_OrderDetailID
FROM so_resultentry
WHERE
So_ResultEntryID = {$last_id} LIMIT 1";
$qry = $this->db_onedev->query($sql);
$data_result_entry = $qry->result_array();
$orderdetail_id = $data_result_entry[0]['So_ResultEntryT_OrderDetailID'];
$sql = "UPDATE t_orderdetail SET T_OrderDetailVerification = '{$status_verif}',
T_OrderDetailVerDate = '{$verdate}',
T_OrderDetailVerUserID = {$veruser}
WHERE T_OrderDetailID = {$orderdetail_id}";
$qry = $this->db_onedev->query($sql);
//echo $this->db_onedev->last_query();
if (!$qry) {
$message = $this->db_onedev->error();
$message['qry'] = $this->db_onedev->last_query();
$this->sys_error($message);
exit;
}
$row_dt_group = $this->get_group_result_by_orderdetail($orderdetail_id);
if ($row_dt_group === false) {
$this->sys_error_db("single verification select group result", $this->db_onedev);
exit();
}
if (count($row_dt_group) > 0) {
$ohid = $row_dt_group["T_OrderHeaderGroupResultDetailsT_OrderHeaderID"];
$gid = $row_dt_group["T_OrderHeaderGroupResultGroup_ResultID"];
$this->verification_by_group($ohid, $gid);
}
else {
$this->sys_error_db("group result tidak ditemukan", $this->db_onedev);
exit();
}
}
if ($is_mobile) {
$act = "MOBILE_ACT";
$sql = "SELECT *
FROM form_riwayat_pasien
WHERE
FormRiwayatPasienT_OrderHeaderID = ? AND FormRiwayatPasienIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, array($prm['trx']['orderid']));
if (!$qry) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error get data riwayat pasien");
exit;
}
$dt_form_riwayat = $qry->result_array();
if (count($dt_form_riwayat) > 0) {
$form_riwayat_id = $dt_form_riwayat[0]['FormRiwayatPasienID'];
$form_riwayat_details = [];
$r_templates = $prm['r_templates'];
$arr_r_temp = [];
foreach ($r_templates as $v_r_temp) {
$arr_r_temp[] = $v_r_temp['title'];
}
$sql = "SELECT *
FROM form_riwayat_pasien_template
JOIN fisik_template ON FormRiwayatPasienTemplateFisikTemplateID = FisikTemplateID AND FisikTemplateIsActive = 'Y'
WHERE
FormRiwayatPasienTemplateFormRiwayatPasienID = ? AND
FormRiwayatPasienTemplateIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, array($form_riwayat_id));
if (!$qry) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error get data riwayat pasien template");
exit;
}
$dt_form_riwayat_template = $qry->result_array();
//print_r($save_template);
if (count($dt_form_riwayat_template) > 0) {
foreach ($dt_form_riwayat_template as $v_dt_form_riwayat_template) {
if (in_array($v_dt_form_riwayat_template['FisikTemplateTitle'], $save_template)) {
$sql = "UPDATE so_resultentry_fisik_umum SET
So_ResultEntryFisikUmumIsActive = 'N',
So_ResultEntryFisikUmumDeleted = NOW(),
So_ResultEntryFisikUmumDeletedUserID = ?
WHERE
So_ResultEntryFisikUmumT_OrderHeaderID = ? AND
So_ResultEntryFisikUmumFisikTemplateID = ? AND
So_ResultEntryFisikUmumIsActive = 'Y'";
$rst = $this->db_onedev->query($sql, array(
$userid,
$prm['trx']['orderid'],
$v_dt_form_riwayat_template['FormRiwayatPasienTemplateFisikTemplateID']
));
if (!$rst) {
//echo $this->db_onedev->last_query();
$this->db_onedev->trans_rollback();
$this->sys_error("Error update form riwayat pasien template");
exit;
}
$sql = "INSERT INTO so_resultentry_fisik_umum (
So_ResultEntryFisikUmumSo_T_OrderHeaderID,
So_ResultEntryFisikUmumFisikTemplateID,
So_ResultEntryFisikUmumDetails,
So_ResultEntryFisikUmumCreated,
So_ResultEntryFisikUmumCreatedUserID
) VALUES (?, ?, ?, NOW(), ?)";
$rst = $this->db_onedev->query($sql, array(
$prm['trx']['orderid'],
$v_dt_form_riwayat_template['FormRiwayatPasienTemplateFisikTemplateID'],
$v_dt_form_riwayat_template['FormRiwayatPasienTemplateDetails'],
$userid
));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error insert form riwayat pasien template");
exit;
}
}
}
}
}
$mobile_data_json = [];
$sql = "SELECT * FROM so_resultentry_fisik_umum WHERE So_ResultEntryFisikUmumSo_ResultEntryID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, array($prm['trx']['re_id']));
if (!$qry) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error get data fisik umum");
exit;
}
$this->soresultlog->log_result(json_encode($mobile_data_json), $prm['trx']['re_id'], $userid);
$this->soresultlog->step_action($act, $prm['trx']['re_id'], $userid);
$sql = "SELECT *
FROM m_user
JOIN m_staff ON M_UserM_StaffID = M_StaffID AND M_StaffIsActive = 'Y'
JOIN m_doctor ON M_StaffM_DoctorID = M_DoctorID AND M_DoctorIsActive = 'Y'
WHERE
M_UserIsActive = 'Y' AND
M_UserID = ?
ORDER BY M_UserID DESC
LIMIT 1
";
$qry = $this->db_onedev->query($sql, array($userid));
if (!$qry) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error get data user");
exit;
}
$dt_user = $qry->result_array();
if (count($dt_user) > 0) {
$sql = "UPDATE so_resultentry SET So_ResultEntryM_DoctorID = ? WHERE So_ResultEntryID = ? AND So_ResultEntryIsActive = 'Y'";
$rst = $this->db_onedev->query($sql, array($dt_user[0]['M_DoctorID'], $prm['trx']['re_id']));
if (!$rst) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error update form result entry");
exit;
}
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = ? AND So_ResultEntryIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, array($prm['trx']['re_id']));
if (!$qry) {
$this->db_onedev->trans_rollback();
$this->sys_error("Error get data result entry");
exit;
}
$dt_result_entry = $qry->result_array();
if (count($dt_result_entry) > 0) {
$this->soresultlog->log_result(json_encode($dt_result_entry), $prm['trx']['re_id'], $userid);
}
$this->soresultlog->step_action('DOC_MOBILE', $prm['trx']['re_id'], $userid);
}
}
$this->db_onedev->trans_commit();
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = ? LIMIT 1";
$fresh_header = $this->db_onedev->query($sql, array($prm['trx']['re_id']))->row_array();
$fresh_header['status_name'] = $this->alias_resultentry_status_name(isset($fresh_header['So_ResultEntryStatus']) ? $fresh_header['So_ResultEntryStatus'] : null);
$result = array(
"total" => 1,
"records" => $rst,
"errors" => $errors,
"header" => $fresh_header
);
$this->sys_ok($result);
exit;
}
private function generate_qr_nonlab_for_val1($trx, $userid)
{
$this->load->library("Generateqrreport");
$sql_get = "SELECT DISTINCT
T_OrderHeaderGroupResultID,
T_OrderHeaderGroupResultGroup_ResultID,
T_OrderHeaderGroupResultT_TestID,
T_OrderHeaderGroupResultGroup_ResultName,
gr.Group_ResultFlagPerTest,
T_TestName
FROM t_orderheader_group_result
JOIN group_result gr
ON gr.Group_ResultID = T_OrderHeaderGroupResultGroup_ResultID
AND gr.Group_ResultIsActive = 'Y'
LEFT JOIN t_test
ON T_OrderHeaderGroupResultT_TestID = T_TestID
AND T_TestIsActive = 'Y'
WHERE (T_OrderHeaderGroupResultT_TestID = ? OR T_OrderHeaderGroupResultT_TestID = 0)
AND T_OrderHeaderGroupResultT_OrderHeaderID = ?
AND T_OrderHeaderGroupResultIsActive = 'Y'";
$qry_get = $this->db_onedev->query($sql_get, array($trx['test_id'], $trx['orderid']));
if (!$qry_get) {
$this->sys_error_db("error t_orderheader_group_result", $this->db_onedev);
exit;
}
$data = $qry_get->result_array();
$map = array(
'fisik' => 'FISIK-RESULT-P-01',
'fisik_eng' => 'FISIK-RESULT-EN-P-01',
'srq' => 'SRQ-RESULT-P-01'
);
$sql_branch = "SELECT
M_BranchID,
M_BranchCode,
M_BranchName,
M_BranchIPAddress
FROM m_branch
WHERE M_BranchIsDefault = 'Y'
AND M_BranchIsActive = 'Y'";
$qry_branch = $this->db_onedev->query($sql_branch);
if (!$qry_branch) {
$this->sys_error_db('error m_branch', $this->db_onedev);
exit;
}
$branch = $qry_branch->row_array();
$base = "http://" . $branch['M_BranchIPAddress'] . "/";
$sql_url = "SELECT QR_ReportEndpointID,
QR_ReportEndpointUrl,
QR_ReportEndpointIsActive
FROM qr_report_endpoint
WHERE QR_ReportEndpointIsActive = 'Y' LIMIT 1";
$qry_url = $this->db_onedev->query($sql_url);
if (!$qry_url) {
$this->sys_error_db("Error Query Endpoint URL", $this->db_onedev);
exit;
}
$endpoint_url = "";
$data_url = $qry_url->result_array();
if (count($data_url) > 0) {
$endpoint_url = $data_url[0]['QR_ReportEndpointUrl'];
}
$verify_url = $endpoint_url . 'rpt/';
$template_name = isset($trx['template_name']) ? strtolower(trim($trx['template_name'])) : '';
$lang = isset($trx['lang']) ? strtoupper(trim($trx['lang'])) : '';
$report_key = 'fisik';
if (strpos($template_name, 'srq') !== false) {
$report_key = 'srq';
}
else if ($lang === 'ENG' || strpos($template_name, 'eng') !== false) {
$report_key = 'fisik_eng';
}
if (!isset($map[$report_key])) {
return;
}
$printCode = $map[$report_key];
foreach ($data as $value) {
$is_per_test = isset($value['Group_ResultFlagPerTest']) && $value['Group_ResultFlagPerTest'] === 'Y';
$target_test_id = $is_per_test ? intval($trx['test_id']) : 0;
$sql_pt = "SELECT Print_TransactionUrlWatermark
FROM print_transaction
WHERE Print_TransactionCode = ?
LIMIT 1";
$qry_pt = $this->db_onedev->query($sql_pt, array($printCode));
if (!$qry_pt) {
$this->sys_error_db('error print_transaction', $this->db_onedev);
exit;
}
$rst_url = $qry_pt->row_array();
if (!$rst_url || !isset($rst_url['Print_TransactionUrlWatermark'])) {
continue;
}
$template_url = $rst_url['Print_TransactionUrlWatermark'];
$full_url = $base . ltrim($template_url, '/');
$full_url = str_replace('.rptdesign', '_watermark.rptdesign', $full_url);
$full_url = str_replace(
array('PUsername', 'PT_OrderHeaderID', 'TS'),
array(
trim($this->sys_user['M_UserUsername']),
$trx['orderid'],
time()
),
$full_url
);
$sql_check = "SELECT QR_PrintOutID
FROM qr_printout
WHERE QR_PrintOutT_OrderHeaderID = ?
AND QR_PrintOutGroup_ResultID = ?
AND QR_PrintOutT_TestID = ?
AND QR_PrintOutIsActive = 1
LIMIT 1";
$qry_check = $this->db_onedev->query($sql_check, array(
$trx['orderid'],
$value['T_OrderHeaderGroupResultGroup_ResultID'],
$target_test_id
));
if (!$qry_check) {
$this->sys_error_db("error qr_printout", $this->db_onedev);
exit;
}
$exist = $qry_check->row_array();
if (empty($exist)) {
$params = array(
'orderHeaderID' => $trx['orderid'],
'groupResultID' => $value['T_OrderHeaderGroupResultGroup_ResultID'],
'testID' => $target_test_id,
'groupResultName' => $value['T_OrderHeaderGroupResultGroup_ResultName'],
'verifyBaseURL' => $verify_url,
'QR_PrintOutReportURL' => $full_url,
'createdByUserID' => $userid
);
$this->generateqrreport->saveQRPrintout($params);
}
}
}
private function alias_resultentry_status_name($status)
{
if ($status === 'NEW') {
return 'BARU';
}
if ($status === 'VAL1') {
return 'VALIDASI';
}
if ($status === 'VAL2') {
return 'VERIFIKASI';
}
return $status;
}
function add_action_log($act, $re_id, $userid)
{
$sql = "INSERT INTO so_reactionlog(
So_REActionLogDate,
So_REActionLogSo_ResultEntryID,
So_REActionLogAction,
So_REActionLogUserID
)
VALUES(
NOW(),
{$re_id},
'{$act}',
{$userid}
)";
$save = $this->db_onedev->query($sql);
if (!$save) {
$this->sys_error("Error Save Log Action");
exit;
}
return true;
}
function gettemplate()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$rst = array();
$sql = "SELECT So_TemplateLabelID as id, So_TemplateLabelName as label, '' as details
FROM so_templatelabel
WHERE
So_TemplateLabelM_DoctorID = {$prm['doctor_id']} AND
So_TemplateLabelT_TestID = {$prm['test_id']} AND
So_TemplateLabelSo_TemplateID = {$prm['template_id']} AND
So_TemplateLabelIsActive = 'Y'";
//echo $sql;
$rst = $this->db_onedev->query($sql)->result();
if (!$rst) {
$sql = "SELECT So_TemplateLabelID as id, So_TemplateLabelName as label, '' as details
FROM so_templatelabel
WHERE
So_TemplateLabelM_DoctorID = 0 AND
So_TemplateLabelT_TestID = {$prm['test_id']} AND
So_TemplateLabelSo_TemplateID = {$prm['template_id']} AND
So_TemplateLabelIsActive = 'Y'";
$rst = $this->db_onedev->query($sql)->result();
}
if ($rst) {
foreach ($rst as $k => $v) {
$sql = "SELECT so_templatevalueid as id, So_TemplateValueText as value, So_TemplateValueSo_TemplateDetailID as template_detail_id
FROM so_templatevalue
JOIN so_templatedetail ON So_TemplateValueSo_TemplateDetailID = So_TemplateDetailID AND
So_TemplateDetailM_LangID = {$prm['language_id']}
WHERE
So_TemplateValueSo_TemplateLabelID = {$v->id} AND So_TemplateValueIsActive = 'Y' ";
//echo $sql;
$v->details = $this->db_onedev->query($sql)->result();
}
}
$result = array(
"total" => 1,
"records" => $rst
);
$this->sys_ok($result);
exit;
}
function printcount()
{
// 1. Validasi Login
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$trx_id = isset($prm["trx_id"]) ? intval($prm["trx_id"]) : 0;
if ($trx_id == 0) {
$this->sys_error("trx_id tidak valid");
exit;
}
// 2. Ambil data Result Entry dengan Binding untuk keamanan
$sql = "SELECT
re.So_ResultEntryID,
re.So_ResultEntryT_OrderDetailID,
re.So_ResultEntryT_OrderHeaderID,
gr.Group_ResultName
FROM so_resultentry re
JOIN t_orderdetail od ON re.So_ResultEntryT_OrderDetailID = od.T_OrderDetailID
JOIN t_test t ON od.T_OrderDetailT_TestID = t.T_TestID
JOIN group_resultdetail grd ON t.T_TestID = grd.Group_ResultDetailT_TestID
JOIN group_result gr ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
WHERE re.So_ResultEntryID = ?
AND re.So_ResultEntryIsActive = 'Y'
LIMIT 1";
$query = $this->db_onedev->query($sql, array($trx_id));
// Validasi Query & Eksistensi Data
if ($query === FALSE) {
$this->sys_error("Database Error: Query Gagal Dijalankan.");
exit;
}
$res_data = $query->row();
if (!$res_data) {
$this->sys_error("Data transaksi (RE ID: $trx_id) tidak ditemukan.");
exit;
}
// 3. Update Print Count pada Order Detail
$sql_update = "UPDATE t_orderdetail SET
T_OrderDetailPrintCount = T_OrderDetailPrintCount + 1,
T_OrderDetailPrintBy = ?,
T_OrderDetailPrintTime = NOW()
WHERE T_OrderDetailID = ?";
$this->db_onedev->query($sql_update, array($userid, $res_data->So_ResultEntryT_OrderDetailID));
// 4. Inisialisasi Parameter Report
$type = $res_data->Group_ResultName;
$pid = $res_data->So_ResultEntryID;
$rptname = "mcu_fisik_history_v2"; // Default Report Name
// Logika penentuan rptname berdasarkan type
if ($type == 'USG') {
$rptname = "rpt_hasil_so_usg";
}
elseif ($type == 'Elektromedik') {
$rptname = "rpt_hasil_so_ecg";
}
// Tambahkan logic IF/ELSE lain di sini jika diperlukan
// 5. Ambil Nama Staff untuk Parameter BIRT
$sql_staff = "SELECT M_StaffName FROM m_staff JOIN m_user ON M_UserM_StaffID = M_StaffID WHERE M_UserID = ?";
$staff = $this->db_onedev->query($sql_staff, array($userid))->row();
$username = $staff ? urlencode($staff->M_StaffName) : '';
$tm = round(microtime(true) * 1000);
// 6. Logika Report URL (Sistem Baru)
$generatedUrl = '';
$code_prefix = '';
// Mapping Type ke Code Prefix
if ($type == 'Elektromedik')
$code_prefix = 'ECG';
elseif ($type == 'USG')
$code_prefix = 'USG';
elseif ($type == 'Spirometri')
$code_prefix = 'SPIRO';
elseif ($type == 'Audiometri')
$code_prefix = 'AUDIO';
else
$code_prefix = 'FISIK'; // Fallback prefix
if ($code_prefix) {
$tx_code = $code_prefix . '-RESULT-P-01';
$params = [
'PUsername' => $username,
'PT_OrderHeaderID' => $res_data->So_ResultEntryT_OrderHeaderID,
'TS' => $tm
];
// $res_url = $this->reporturl->get_report_url_by_code($tx_code, $params, 'N');
// if ($res_url[0]) {
// $generatedUrl = $res_url[1];
// }
$sql_pt = "SELECT Print_TransactionUrl FROM print_transaction WHERE Print_TransactionCode = ? LIMIT 1";
$row_pt = $this->db_onedev->query($sql_pt, [$tx_code])->row_array();
if ($row_pt) {
$generatedUrl = $row_pt['Print_TransactionUrl'];
foreach ($params as $key => $value) {
$generatedUrl = str_replace($key, $value, $generatedUrl);
}
}
}
// 7. Fallback ke Logika URL Manual jika reporturl gagal/tidak ada
if (empty($generatedUrl)) {
$generatedUrl = "/birt/run?__report=report/onelab/mcu/{$rptname}.rptdesign&__format=pdf&username={$username}&PType=fisik&PID={$pid}&PLang={$lang}&tm={$tm}";
}
// 8. Persiapan Input untuk simpan URL (generateurl)
$this->sys_input = array(
'orderid' => $res_data->So_ResultEntryT_OrderHeaderID,
're_id' => $res_data->So_ResultEntryID,
'type' => $type,
'url' => $generatedUrl,
'format' => 'pdf'
);
$this->generateurl(); // Simpan ke t_email_nonlab
// 9. Response Final
$this->sys_ok(array(
"total" => 1,
"records" => array(
"trx_id" => $trx_id,
"url" => $generatedUrl
)
));
exit;
}
function save_flagprint()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$rst_data = array('status' => 'OK');
$prm = $this->sys_input;
$row = $prm['row'];
$selected_trx = $prm['selected_trx'];
$userid = $this->sys_user["M_UserID"];
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = '{$selected_trx['re_id']}'";
//echo $sql;
$re_langid = $this->db_onedev->query($sql)->row()->So_ResultEntryM_LangID;
if ($re_langid == $prm['selected_trx']['language_id']) {
$sql = "UPDATE so_resultentrydetail SET
So_ResultEntryDetailFlagPrint = '{$row['flag_print']}',
So_ResultEntryDetailUserID = {$userid}
WHERE So_ResultEntryDetailID = {$row['trx_id']}";
//echo $sql;
$this->db_onedev->query($sql);
}
else {
$sql = "UPDATE so_resultentrydetail_other SET
So_ResultEntryDetailOtherFlagPrint = '{$row['flag_print']}',
So_ResultEntryDetailOtherUserID = {$userid}
WHERE So_ResultEntryDetailOtherID = {$row['trx_id']}";
//echo $sql;
$this->db_onedev->query($sql);
}
$result = array(
"total" => 1,
"records" => $rst_data
);
$this->sys_ok($result);
exit;
}
function getrstbylang()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$x_langid = $prm['lang']['id'];
$x_reid = $prm['detail']['trx_id'];
$sel_trx = $prm['selected_trx'];
$sql = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = '{$x_reid}'";
//echo $sql;
$re_langid = $this->db_onedev->query($sql)->row()->So_ResultEntryM_LangID;
if ($sel_trx['group_name'] != 'pemeriksaan fisik') {
$sql = "SELECT
So_ResultEntryDetailID as trx_id,
So_ResultEntryDetailNonlab_TemplateDetailID as template_detail_id,
So_ResultEntryDetailNonlab_TemplateDetailName as result_label,
IFNULL(So_ResultEntryDetailResult,'') as result_value,
'N' as flag_print,
'' as note
FROM so_resultentrydetail
JOIN so_resultentry ON So_ResultEntryDetailSo_ResultEntryID = So_ResultEntryID
WHERE
So_ResultEntryDetailSo_ResultEntryID = {$x_reid} AND So_ResultEntryDetailisActive = 'Y'
";
}
//echo $sql;
$rst = $this->db_onedev->query($sql)->result_array();
$result = array(
"total" => 1,
"records" => $rst
);
$this->sys_ok($result);
exit;
}
function save_signature()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$trx = $prm['trx'];
$home_dir = "/home/one/project/one/";
$target_dir = $home_dir . "one-media/one-signature/" . date("Y") . "/";
if (!file_exists($target_dir)) {
mkdir($target_dir, 0755, true);
}
$target_path = $target_dir . $trx['ordernumber'] . ".png";
if (file_exists($target_path)) {
$timestampx = date('YmdHis');
$new_path = $target_dir . $trx['ordernumber'] . "_" . $timestampx . ".png";
$xsource = fopen($target_path, 'r');
$xdestination = fopen($new_path, 'w');
stream_copy_to_stream($xsource, $xdestination);
fclose($xsource);
fclose($xdestination);
$new_path = "/" . str_replace($home_dir, "", $new_path);
$sql = "UPDATE so_signature SET So_SignatureIsActive = 'N', So_SignatureUrl = '{$new_path}' ,So_SignatureUserID = {$userid}
WHERE So_SignatureT_OrderHeaderID = {$trx['trx_id']} AND So_SignatureIsActive = 'Y'";
$this->db_onedev->query($sql);
}
//echo $target_path;
$file_png = $this->base64_to_jpeg($prm['data'], $target_path);
$xurl = "/" . str_replace($home_dir, "", $target_path);
if ($file_png) {
$sql = "INSERT INTO so_signature (
So_SignatureT_OrderHeaderID,
So_SignatureUrl,
So_SignatureCreated,
So_SignatureUserID
)
VALUES(
{$trx['trx_id']},
'{$xurl}',
NOW(),
{$userid}
)";
$this->db_onedev->query($sql);
}
$xurl = $xurl . "?=" . date('Ymdhhis');
$result = array(
"data" => $xurl
);
$this->sys_ok($result);
exit;
}
function searchdoctor()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$max_rst = 12;
$tot_count = 0;
$q = [
'search' => '%'
];
if ($prm['search'] != '') {
$q['search'] = "{$prm['search']}";
}
// QUERY TOTAL
$sql = "SELECT count(*) as total
FROM m_doctor
WHERE
M_DoctorName like ?
AND M_DoctorIsActive = 'Y'";
$query = $this->db_onedev->query($sql, $q['search']);
//echo $query;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
}
else {
$this->sys_error_db("m_doctor count", $this->db_onedev);
exit;
}
$sql = "
SELECT M_DoctorID as id,
CONCAT(IF(ISNULL(M_DoctorPrefix),'',M_DoctorPrefix),IF(ISNULL(M_DoctorPrefix2),'',M_DoctorPrefix2),' ',M_DoctorName,IF(ISNULL(M_DoctorSufix),'',CONCAT(' ',M_DoctorSufix)),IF(ISNULL(M_DoctorSufix2),'',M_DoctorSufix2)) as name
FROM m_doctor
WHERE
CONCAT(IF(ISNULL(M_DoctorPrefix),'',M_DoctorPrefix),IF(ISNULL(M_DoctorPrefix2),'',M_DoctorPrefix2),' ',M_DoctorName,IF(ISNULL(M_DoctorSufix),'',M_DoctorSufix),IF(ISNULL(M_DoctorSufix2),'',M_DoctorSufix2)) like CONCAT('%',?,'%')
AND M_DoctorIsActive = 'Y'
ORDER BY M_DoctorName ASC
";
$query = $this->db_onedev->query($sql, array($q['search']));
if ($query) {
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
$this->sys_error_db("m_city rows", $this->db_onedev);
exit;
}
}
function base64_to_jpeg($base64_string, $output_file)
{
// open the output file for writing
$ifp = fopen($output_file, 'wb');
// split the string on commas
// $data[ 0 ] == "data:image/png;base64"
// $data[ 1 ] == <actual base64 string>
$data = explode(',', $base64_string);
// we could add validation here with ensuring count( $data ) > 1
fwrite($ifp, base64_decode($data[1]));
// clean up the file resource
fclose($ifp);
return $output_file;
}
private function _get_delivery_data($orderid)
{
$sql = "SELECT
md.M_DeliveryName,
mdt.M_DeliveryTypeID,
mdt.M_DeliveryTypeCode
FROM t_orderdelivery tod
JOIN m_delivery md
ON md.M_DeliveryID = tod.T_OrderDeliveryM_DeliveryID
JOIN m_deliverytype mdt
ON mdt.M_DeliveryTypeID = md.M_DeliveryM_DeliveryTypeID
WHERE tod.T_OrderDeliveryT_OrderHeaderID = ?";
return $this->db_onedev->query($sql, array($orderid))->result_array();
}
function getdeliverybyorder()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$orderid = isset($prm['orderid']) ? $prm['orderid'] : (isset($prm['orderID']) ? $prm['orderID'] : 0);
$rows = $this->_get_delivery_data($orderid);
$result = array("total" => count($rows), "records" => $rows);
$this->sys_ok($result);
exit;
}
function generateurl()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$orderid = isset($prm['orderid']) ? $prm['orderid'] : 0;
$re_id = isset($prm['re_id']) ? $prm['re_id'] : 0;
$type = isset($prm['type']) ? $prm['type'] : '';
// Hardcode format default sesuai permintaan sebelumnya
$format = 'default-format';
$url = isset($prm['url']) ? $prm['url'] : '';
if ($orderid == 0 || $re_id == 0 || empty($url)) {
$this->sys_error("Data tidak lengkap (OrderID/ResultID/URL kosong)");
exit;
}
// Ambil data Group Result & Test Name
$group_result_id = 0;
$group_result_name = '';
$sql_gr = "SELECT
tt.T_TestName,
gr.Group_ResultID,
gr.Group_ResultName,
gr.Group_ResultFlagPerTest
FROM so_resultentry re
JOIN t_orderdetail od
ON re.So_ResultEntryT_OrderDetailID = od.T_OrderDetailID
JOIN t_test tt
ON od.T_OrderDetailT_TestID = tt.T_TestID
JOIN group_resultdetail grd
ON tt.T_TestID = grd.Group_ResultDetailT_TestID
JOIN group_result gr
ON grd.Group_ResultDetailGroup_ResultID = gr.Group_ResultID
WHERE re.So_ResultEntryID = ?
AND re.So_ResultEntryIsActive = 'Y'
AND tt.T_TestIsActive = 'Y'
AND grd.Group_ResultDetailIsActive = 'Y'
AND gr.Group_ResultIsActive = 'Y'
LIMIT 1";
$q_gr = $this->db_onedev->query($sql_gr, array($re_id));
if ($q_gr && $q_gr->num_rows() > 0) {
$row_gr = $q_gr->row();
$group_result_id = $row_gr->Group_ResultID;
if ($row_gr->Group_ResultFlagPerTest == 'Y') {
$group_result_name = $row_gr->T_TestName;
}
else {
$group_result_name = $row_gr->Group_ResultName;
}
}
// PERBAIKAN DI SINI:
// Cek existing berdasarkan UNIQUE KEY database (OrderHeaderID + ResultEntryID + Type)
$check_sql = "SELECT T_EmailNonLabID FROM t_email_nonlab
WHERE T_EmailNonLabT_OrderHeaderID = ?
AND T_EmailNonLabSo_ResultEntryID = ?
AND T_EmailNonLabType = ?"; // Mengganti Format menjadi Type
$existing = $this->db_onedev->query($check_sql, array($orderid, $re_id, $type))->row();
if ($existing) {
// Jika sudah ada, lakukan UPDATE (termasuk mengupdate Format ke 'default-format')
$sql = "UPDATE t_email_nonlab SET
T_EmailNonLabFormat = ?,
T_EmailNonLabUrl = ?,
T_EmailNonLabUserID = ?,
T_EmailNonLabGroup_ResultID = ?,
T_EmailNonLabGroup_ResultName = ?,
T_EmailNonLabUpdated = NOW()
WHERE T_EmailNonLabID = ?";
$this->db_onedev->query($sql, array($format, $url, $userid, $group_result_id, $group_result_name, $existing->T_EmailNonLabID));
}
else {
// Jika benar-benar baru, lakukan INSERT
$sql = "INSERT INTO t_email_nonlab (
T_EmailNonLabT_OrderHeaderID,
T_EmailNonLabSo_ResultEntryID,
T_EmailNonLabType,
T_EmailNonLabFormat,
T_EmailNonLabUrl,
T_EmailNonLabUserID,
T_EmailNonLabGroup_ResultID,
T_EmailNonLabGroup_ResultName,
T_EmailNonLabCreated,
T_EmailNonLabUpdated
)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())";
$query = $this->db_onedev->query($sql, array($orderid, $re_id, $type, $format, $url, $userid, $group_result_id, $group_result_name));
if (!$query) {
// Menambahkan detail error agar lebih mudah didebug
$this->sys_error_db("Gagal menyimpan URL Email", $this->db_onedev);
exit;
}
}
$result = array(
"status" => "OK",
"message" => "URL Berhasil disimpan"
);
$this->sys_ok($result);
exit;
}
function get_report_url_by_code()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
return;
}
$prm = $this->sys_input;
$report_code = isset($prm['code']) ? $prm['code'] : '';
$params = isset($prm['params']) ? $prm['params'] : [];
if (empty($report_code)) {
$this->sys_error("Report code is required");
return;
}
$sql = "SELECT * FROM print_transaction WHERE Print_TransactionCode = ? LIMIT 1";
$row = $this->db_onedev->query($sql, [$report_code])->row_array();
if (!$row) {
$this->sys_error("Report code not found: " . $report_code);
return;
}
$final_url = $row['Print_TransactionUrl'];
// Jika params tidak diberikan, gunakan default
if (empty($params) || !is_array($params)) {
$params = [
'PUsername' => urlencode($this->sys_user['M_StaffName']),
'PT_OrderHeaderID' => '0',
'TS' => round(microtime(true) * 1000)
];
}
// Replace parameters in URL
foreach ($params as $key => $value) {
$final_url = str_replace($key, $value, $final_url);
}
$this->sys_ok([
'status' => true,
'url' => $final_url,
'report_code' => $report_code,
'original_url' => $row['Print_TransactionUrl']
]);
}
/*
-- Adminer 4.7.5 MySQL dump
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
DROP TABLE IF EXISTS `fisik_templateresult`;
CREATE TABLE `fisik_templateresult` (
`Fisik_TemplateResultID` int(11) NOT NULL AUTO_INCREMENT,
`Fisik_TemplateResultM_LangID` int(11) NOT NULL,
`Fisik_TemplateResultType` varchar(15) NOT NULL,
`Fisik_TemplateResultText` text NOT NULL,
`Fisik_TemplateResultIsActive` char(1) NOT NULL DEFAULT 'Y',
PRIMARY KEY (`Fisik_TemplateResultID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `fisik_templateresult` (`Fisik_TemplateResultID`, `Fisik_TemplateResultM_LangID`, `Fisik_TemplateResultType`, `Fisik_TemplateResultText`, `Fisik_TemplateResultIsActive`) VALUES
(1, 1, 'riwayat', '[{\"title\":\"KELUHAN SAAT INI\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada keluhan\",\"flag_normal\":\"Y\",\"show_all\":\"N\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_1\",\"id\":\"1\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Demam\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_2\",\"id\":\"2\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Nyeri Kepala\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_3\",\"id\":\"3\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Batuk dan influensa\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_4\",\"id\":\"4\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Batuk lebih dari 1 bulan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_5\",\"id\":\"5\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Pusing atau rasa berputar (vertigo)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_6\",\"id\":\"6\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lemas\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_7\",\"id\":\"7\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan mata atau penglihatan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_8\",\"id\":\"8\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Mata berkunang-kunang\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_9\",\"id\":\"9\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan pendengaran\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_10\",\"id\":\"10\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Nyeri dada\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_11\",\"id\":\"11\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Sesak Napas\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_12\",\"id\":\"12\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Sakit Jantung\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_13\",\"id\":\"13\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Hipertensi / tekanan darah tinggi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_14\",\"id\":\"14\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Tidak nafsu makan lebih dari 1 bulan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_15\",\"id\":\"15\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gastritis (maag)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_16\",\"id\":\"16\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Nyeri perut atau gangguan pencernaan lainnya\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_17\",\"id\":\"17\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Haemorrhoid (wasir/ambeien)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_18\",\"id\":\"18\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Diare berulang / lama (kronis)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_19\",\"id\":\"19\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Sakit pinggang\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_20\",\"id\":\"20\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan berkemih\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_21\",\"id\":\"21\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan ginjal\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_22\",\"id\":\"22\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan pada alat reproduksi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_23\",\"id\":\"23\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Nyeri otot dan sendi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_24\",\"id\":\"24\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kesemutan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_25\",\"id\":\"25\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Bengkak pada kaki atau anggota badan lainnya\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_26\",\"id\":\"26\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gatal atau gangguan kulit lainnya\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_27\",\"id\":\"27\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Benjolan abnormal pada bagian tubuh\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_keluhan\",\"id_code\":\"fisik_keluhan_28\",\"id\":\"28\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Keluhan lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"RIWAYAT POBIA\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada pobia\",\"flag_normal\":\"Y\",\"show_all\":\"N\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"fisik_pobia\",\"id_code\":\"fisik_pobia_1\",\"id\":\"1\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Rasa takut yang berlebihan (phobia)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_pobia\",\"id_code\":\"fisik_pobia_2\",\"id\":\"2\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Takut ketinggian\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_pobia\",\"id_code\":\"fisik_pobia_3\",\"id\":\"3\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Takut di ruangan gelap\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_pobia\",\"id_code\":\"fisik_pobia_4\",\"id\":\"4\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Takut melihat darah\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_pobia\",\"id_code\":\"fisik_pobia_5\",\"id\":\"5\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Takut di ruang sempit\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_pobia\",\"id_code\":\"fisik_pobia_6\",\"id\":\"6\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Takut berada di tengah laut\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_pobia\",\"id_code\":\"fisik_pobia_7\",\"id\":\"7\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Takut naik pesawat/helikopter\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_pobia\",\"id_code\":\"fisik_pobia_8\",\"id\":\"8\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Mabuk laut atau mabuk perjalanan\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"RIWAYAT PENYAKIT\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada riwayat penyakit\",\"flag_normal\":\"Y\",\"show_all\":\"N\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"System Pencernaan\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pencernaan\",\"id_code\":\"fisik_penyakit_1\",\"id\":\"1\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gastritis (maag)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pencernaan\",\"id_code\":\"fisik_penyakit_2\",\"id\":\"2\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Hepatitis (penyakit hati/kuning)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pencernaan\",\"id_code\":\"fisik_penyakit_3\",\"id\":\"3\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Batu empedu\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pencernaan\",\"id_code\":\"fisik_penyakit_4\",\"id\":\"4\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Demam typoid\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pencernaan\",\"id_code\":\"fisik_penyakit_5\",\"id\":\"5\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Haemorrhoid (wasir/ambeien)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pencernaan\",\"id_code\":\"fisik_penyakit_6\",\"id\":\"6\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Operasi saluran pencernaan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pencernaan\",\"id_code\":\"fisik_penyakit_7\",\"id\":\"7\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Sistem Pencernaan )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"System Pernafasan\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pernafasan\",\"id_code\":\"fisik_penyakit_8\",\"id\":\"8\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Asma\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pernafasan\",\"id_code\":\"fisik_penyakit_9\",\"id\":\"9\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Tuberculosa (TBC)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pernafasan\",\"id_code\":\"fisik_penyakit_10\",\"id\":\"10\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Batuk lebih dari 1 bulan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pernafasan\",\"id_code\":\"fisik_penyakit_11\",\"id\":\"11\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Pneumonia\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Pernafasan\",\"id_code\":\"fisik_penyakit_12\",\"id\":\"12\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Sistem Pernafasan )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"System cardiovaskuler\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System cardiovaskuler\",\"id_code\":\"fisik_penyakit_13\",\"id\":\"13\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Penyakit jantung\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System cardiovaskuler\",\"id_code\":\"fisik_penyakit_14\",\"id\":\"14\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Hipertensi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System cardiovaskuler\",\"id_code\":\"fisik_penyakit_15\",\"id\":\"15\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Stroke\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System cardiovaskuler\",\"id_code\":\"fisik_penyakit_16\",\"id\":\"16\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Pasang pen atau ring\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System cardiovaskuler\",\"id_code\":\"fisik_penyakit_17\",\"id\":\"17\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Anemia\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System cardiovaskuler\",\"id_code\":\"fisik_penyakit_18\",\"id\":\"18\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Sistem Cardiovaskuler )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Sistem Saraf\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Saraf\",\"id_code\":\"fisik_penyakit_19\",\"id\":\"19\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Vertigo (pusing memutar)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Saraf\",\"id_code\":\"fisik_penyakit_20\",\"id\":\"20\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Epilepsi (ayan), kejang, pingsan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Saraf\",\"id_code\":\"fisik_penyakit_21\",\"id\":\"21\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Polio\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Saraf\",\"id_code\":\"fisik_penyakit_22\",\"id\":\"22\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan mental / kejiwaan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Saraf\",\"id_code\":\"fisik_penyakit_23\",\"id\":\"23\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Mengalami cidera kepala\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Saraf\",\"id_code\":\"fisik_penyakit_24\",\"id\":\"24\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Sistem Syaraf )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Sistem Penglihatan\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Penglihatan\",\"id_code\":\"fisik_penyakit_25\",\"id\":\"25\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kacamata Minus\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Penglihatan\",\"id_code\":\"fisik_penyakit_26\",\"id\":\"26\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kacamata (+)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Penglihatan\",\"id_code\":\"fisik_penyakit_27\",\"id\":\"27\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kacamata Silender\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Penglihatan\",\"id_code\":\"fisik_penyakit_28\",\"id\":\"28\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Trauma\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Penglihatan\",\"id_code\":\"fisik_penyakit_29\",\"id\":\"29\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Fotopobia\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Penglihatan\",\"id_code\":\"fisik_penyakit_30\",\"id\":\"30\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Sistem Penglihatan )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Sistem Pendengaran/THT\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Pendengaran/THT\",\"id_code\":\"fisik_penyakit_31\",\"id\":\"31\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan Pendengaran\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Pendengaran/THT\",\"id_code\":\"fisik_penyakit_32\",\"id\":\"32\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Sinusitis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Pendengaran/THT\",\"id_code\":\"fisik_penyakit_33\",\"id\":\"33\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Rhinitis Allergika\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Pendengaran/THT\",\"id_code\":\"fisik_penyakit_34\",\"id\":\"34\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Amandel/tonsilitis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Pendengaran/THT\",\"id_code\":\"fisik_penyakit_35\",\"id\":\"35\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Otitis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Pendengaran/THT\",\"id_code\":\"fisik_penyakit_36\",\"id\":\"36\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Trauma\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Sistem Pendengaran/THT\",\"id_code\":\"fisik_penyakit_37\",\"id\":\"37\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Sistem Pendengaran/THT )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Ginjal & Saluran Kemih\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Ginjal & Saluran Kemih\",\"id_code\":\"fisik_penyakit_38\",\"id\":\"38\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Batu ginjal\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Ginjal & Saluran Kemih\",\"id_code\":\"fisik_penyakit_39\",\"id\":\"39\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Penyakit ginjal (akut/kronis)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Ginjal & Saluran Kemih\",\"id_code\":\"fisik_penyakit_40\",\"id\":\"40\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Infeksi saluran kemih\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Ginjal & Saluran Kemih\",\"id_code\":\"fisik_penyakit_41\",\"id\":\"41\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Operasi saluran kemih\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Ginjal & Saluran Kemih\",\"id_code\":\"fisik_penyakit_42\",\"id\":\"42\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Ginjal & Saluran Kemih )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Tulang, Sendi & Otot\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Tulang, Sendi & Otot\",\"id_code\":\"fisik_penyakit_43\",\"id\":\"43\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Patah tulang\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Tulang, Sendi & Otot\",\"id_code\":\"fisik_penyakit_44\",\"id\":\"44\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Radang sendi (arthritis)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Tulang, Sendi & Otot\",\"id_code\":\"fisik_penyakit_45\",\"id\":\"45\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Rheumatik\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Tulang, Sendi & Otot\",\"id_code\":\"fisik_penyakit_46\",\"id\":\"46\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kecelakaan / cidera / trauma / luka parah\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Tulang, Sendi & Otot\",\"id_code\":\"fisik_penyakit_47\",\"id\":\"47\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Nyeri otot lebih dari 1 bulan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Tulang, Sendi & Otot\",\"id_code\":\"fisik_penyakit_48\",\"id\":\"48\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Nyeri punggung / back pain\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Tulang, Sendi & Otot\",\"id_code\":\"fisik_penyakit_49\",\"id\":\"49\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Tulang, Sendi & Otot )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Kulit & system reproduksi\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Kulit & system reproduksi\",\"id_code\":\"fisik_penyakit_50\",\"id\":\"50\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan alat reproduksi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Kulit & system reproduksi\",\"id_code\":\"fisik_penyakit_51\",\"id\":\"51\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kista / tumor / kanker alat reproduksi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Kulit & system reproduksi\",\"id_code\":\"fisik_penyakit_52\",\"id\":\"52\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Penyakit Akibat Hubungan Sex\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Kulit & system reproduksi\",\"id_code\":\"fisik_penyakit_53\",\"id\":\"53\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"HIV\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Kulit & system reproduksi\",\"id_code\":\"fisik_penyakit_54\",\"id\":\"54\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lepra\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Kulit & system reproduksi\",\"id_code\":\"fisik_penyakit_55\",\"id\":\"55\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Penyakit kulit yang lama / kronis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Kulit & system reproduksi\",\"id_code\":\"fisik_penyakit_56\",\"id\":\"56\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Kulit & Sistem Reproduksi )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"System Endokrin\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Endokrin\",\"id_code\":\"fisik_penyakit_57\",\"id\":\"57\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Diabetes Militus (Kencing manis)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Endokrin\",\"id_code\":\"fisik_penyakit_58\",\"id\":\"58\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan tiroid (gondok, hipo/hipertiroid)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"System Endokrin\",\"id_code\":\"fisik_penyakit_59\",\"id\":\"59\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Sistem Endokrin )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Allergi\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Allergi\",\"id_code\":\"fisik_penyakit_60\",\"id\":\"60\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Allergi Obat\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Allergi\",\"id_code\":\"fisik_penyakit_61\",\"id\":\"61\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Allergi Makanan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Allergi\",\"id_code\":\"fisik_penyakit_62\",\"id\":\"62\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Allergi Hirupan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Allergi\",\"id_code\":\"fisik_penyakit_63\",\"id\":\"63\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Allergi Kontak\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Allergi\",\"id_code\":\"fisik_penyakit_64\",\"id\":\"64\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Allergi )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Penyakit daerah tropis\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Penyakit daerah tropis\",\"id_code\":\"fisik_penyakit_65\",\"id\":\"65\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"DHF / Demam berdarah\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Penyakit daerah tropis\",\"id_code\":\"fisik_penyakit_66\",\"id\":\"66\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Malaria\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Penyakit daerah tropis\",\"id_code\":\"fisik_penyakit_67\",\"id\":\"67\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Typoid\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Penyakit daerah tropis\",\"id_code\":\"fisik_penyakit_68\",\"id\":\"68\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Penyakit daerah tropis )\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Penyakit lainnya\",\"details\":[{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Penyakit lainnya\",\"id_code\":\"fisik_penyakit_69\",\"id\":\"69\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Tumor / kanker\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Penyakit lainnya\",\"id_code\":\"fisik_penyakit_70\",\"id\":\"70\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Leukimia\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Penyakit lainnya\",\"id_code\":\"fisik_penyakit_71\",\"id\":\"71\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Pernah operasi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakit\",\"segment_name\":\"Penyakit lainnya\",\"id_code\":\"fisik_penyakit_72\",\"id\":\"72\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lain-lain ( Penyakit lainnya )\",\"chx\":false,\"value\":\"\"}]}]},{\"title\":\"RIWAYAT PENYAKIT KELUARGA\",\"subtitle\":\"Apakah orang tua, kakek nenek, saudara kandung atau keluarga dekat menderita penyakit dibawah ini ?\",\"label_flag_normal\":\"Tidak ada riwayat penyakit\",\"flag_normal\":\"Y\",\"show_all\":\"N\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_1\",\"id\":\"1\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Diabetes Millitus\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_2\",\"id\":\"2\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Hypertensi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_3\",\"id\":\"3\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Stroke\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_4\",\"id\":\"4\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Penyakit Jantung\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_5\",\"id\":\"5\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Penyakit Ginjal\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_6\",\"id\":\"6\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"TBC\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_7\",\"id\":\"7\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Lepra\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_8\",\"id\":\"8\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Penyakit hati / hepatitis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_9\",\"id\":\"9\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Epilepsi (ayan)\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_10\",\"id\":\"10\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Gangguan jiwa\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_11\",\"id\":\"11\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kanker / tumor ganas\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_12\",\"id\":\"12\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Autoimmum / Rheumatik / Lupus\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_penyakitkeluarga\",\"id_code\":\"fisik_penyakitkeluarga_13\",\"id\":\"13\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Asma\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"RIWAYAT KEBIASAAN HIDUP\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada riwayat kebiasaan hidup\",\"flag_normal\":\"Y\",\"show_all\":\"N\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"Minum alkohol\",\"details\":[{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Minum alkohol\",\"id_code\":\"fisik_kebiasaanhidup_1\",\"id\":\"1\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Tidak\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Minum alkohol\",\"id_code\":\"fisik_kebiasaanhidup_2\",\"id\":\"2\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kadang-kadang\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Minum alkohol\",\"id_code\":\"fisik_kebiasaanhidup_3\",\"id\":\"3\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Rutin\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Olahraga\",\"details\":[{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Olahraga\",\"id_code\":\"fisik_kebiasaanhidup_4\",\"id\":\"4\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Tidak\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Olahraga\",\"id_code\":\"fisik_kebiasaanhidup_5\",\"id\":\"5\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kadang-kadang\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Olahraga\",\"id_code\":\"fisik_kebiasaanhidup_6\",\"id\":\"6\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Rutin\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Merokok\",\"details\":[{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Merokok\",\"id_code\":\"fisik_kebiasaanhidup_8\",\"id\":\"8\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Tidak\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Merokok\",\"id_code\":\"fisik_kebiasaanhidup_9\",\"id\":\"9\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Kadang-kadang\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_kebiasaanhidup\",\"segment_name\":\"Merokok\",\"id_code\":\"fisik_kebiasaanhidup_10\",\"id\":\"10\",\"lang_id\":\"1\",\"type\":\"RIWAYAT\",\"category\":\"UMUM\",\"label\":\"Rutin\",\"chx\":false,\"value\":\"\"}]}]},{\"title\":\"RIWAYAT KONSUMSI OBAT TERATUR\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"N\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"fisik_konsumsiobatteratur\",\"id_code\":\"fisik_konsumsiobatteratur_1\",\"id\":\"1\",\"lang_id\":\"1\",\"type\":\"UMUM\",\"category\":\"RIWAYAT\",\"label\":\"Obat anti Diabetes Millitus\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_konsumsiobatteratur\",\"id_code\":\"fisik_konsumsiobatteratur_2\",\"id\":\"2\",\"lang_id\":\"1\",\"type\":\"UMUM\",\"category\":\"RIWAYAT\",\"label\":\"Obat anti hypertensi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"fisik_konsumsiobatteratur\",\"id_code\":\"fisik_konsumsiobatteratur_3\",\"id\":\"3\",\"lang_id\":\"1\",\"type\":\"UMUM\",\"category\":\"RIWAYAT\",\"label\":\"Obat lainnya\",\"chx\":false,\"value\":\"\"}]}]', 'Y'),
(2, 1, 'fisik', '[{\"title\":\"TANDA VITAL\",\"show_all\":\"Y\",\"type_form\":\"VXX\",\"details\":[{\"table_name\":\"tanda_vital\",\"id_code\":\"tanda_vital_1\",\"lang_id\":\"1\",\"type\":\"vxx-v\",\"label\":\"Denyut nadi\",\"value\":\"\",\"unit\":\"x/menit\",\"chx_y\":false,\"label_y\":\"\",\"chx_x\":false,\"label_x\":\"\"},{\"table_name\":\"tanda_vital\",\"id_code\":\"tanda_vital_2\",\"lang_id\":\"1\",\"type\":\"vxx-xx\",\"label\":\"Ritme denyut nadi\",\"value\":\"\",\"unit\":\"\",\"chx_y\":true,\"label_y\":\"Reguler\",\"chx_x\":false,\"label_x\":\"Ireguler\"},{\"table_name\":\"tanda_vital\",\"id_code\":\"tanda_vital_3\",\"lang_id\":\"1\",\"type\":\"vxx-v\",\"label\":\"Laju pernafasan\",\"value\":\"\",\"unit\":\"x/menit\",\"chx_y\":false,\"label_y\":\"\",\"chx_x\":false,\"label_x\":\"\"},{\"table_name\":\"tanda_vital\",\"id_code\":\"tanda_vital_4\",\"lang_id\":\"1\",\"type\":\"vxx-xx\",\"label\":\"Pola nafas\",\"value\":\"\",\"unit\":\"\",\"chx_y\":true,\"label_y\":\"Normal\",\"chx_x\":false,\"label_x\":\"Tidak normal\"},{\"table_name\":\"tanda_vital\",\"id_code\":\"tanda_vital_5\",\"lang_id\":\"1\",\"type\":\"vxx-v\",\"label\":\"Tekanan Darah\",\"value\":\"\",\"unit\":\"mmHg\",\"chx_y\":false,\"label_y\":\"\",\"chx_x\":false,\"label_x\":\"\"},{\"table_name\":\"tanda_vital\",\"id_code\":\"tanda_vital_4\",\"lang_id\":\"1\",\"type\":\"vxx-xx\",\"label\":\"Suhu\",\"value\":\"\",\"unit\":\"\",\"chx_y\":true,\"label_y\":\"Normal\",\"chx_x\":false,\"label_x\":\"Demam\"}]},{\"title\":\"STATUS GIZI\",\"show_all\":\"Y\",\"type_form\":\"VXX\",\"details\":[{\"table_name\":\"status_gizi\",\"id_code\":\"status_gizi_1\",\"lang_id\":\"1\",\"type\":\"vxx-v\",\"label\":\"Berat badan\",\"value\":\"\",\"unit\":\"kg\",\"chx_y\":false,\"label_y\":\"\",\"chx_x\":false,\"label_x\":\"\"},{\"table_name\":\"status_gizi\",\"id_code\":\"status_gizi_2\",\"lang_id\":\"1\",\"type\":\"vxx-v\",\"label\":\"Tinggi badan\",\"value\":\"\",\"unit\":\"cm\",\"chx_y\":false,\"label_y\":\"\",\"chx_x\":false,\"label_x\":\"\"},{\"table_name\":\"status_gizi\",\"id_code\":\"status_gizi_3\",\"lang_id\":\"1\",\"type\":\"vxx-v\",\"label\":\"Lingkar perut\",\"value\":\"\",\"unit\":\"cm\",\"chx_y\":false,\"label_y\":\"\",\"chx_x\":false,\"label_x\":\"\"},{\"table_name\":\"status_gizi\",\"id_code\":\"status_gizi_4\",\"lang_id\":\"1\",\"type\":\"vxx-v\",\"label\":\"BMI\",\"value\":\"\",\"unit\":\"\",\"chx_y\":false,\"label_y\":\"\",\"chx_x\":false,\"label_x\":\"\"},{\"table_name\":\"status_gizi\",\"id_code\":\"status_gizi_5\",\"lang_id\":\"1\",\"type\":\"vxx-v\",\"label\":\"Lingkar pinggang / Panggul\",\"value\":\"\",\"unit\":\"cm\",\"chx_y\":false,\"label_y\":\"\",\"chx_x\":false,\"label_x\":\"\"}]},{\"title\":\"KEADAAN UMUM\",\"show_all\":\"Y\",\"type_form\":\"XXV\",\"details\":[{\"table_name\":\"keadaan_umum\",\"id_code\":\"keadaan_umum_1\",\"lang_id\":\"1\",\"type\":\"\",\"label\":\"Kesadaran\",\"value\":\"\",\"unit\":\"\",\"chx_y\":true,\"label_y\":\"Normal\",\"chx_x\":false,\"label_x\":\"Tidak Normal\"},{\"table_name\":\"keadaan_umum\",\"id_code\":\"keadaan_umum_2\",\"lang_id\":\"1\",\"type\":\"\",\"label\":\"Sikap & tingkah laku\",\"value\":\"\",\"unit\":\"\",\"chx_y\":true,\"label_y\":\"Normal\",\"chx_x\":false,\"label_x\":\"Tidak Normal\"},{\"table_name\":\"keadaan_umum\",\"id_code\":\"keadaan_umum_3\",\"lang_id\":\"1\",\"type\":\"\",\"label\":\"Kontak psikis / perhatian\",\"value\":\"\",\"unit\":\"\",\"chx_y\":true,\"label_y\":\"Normal\",\"chx_x\":false,\"label_x\":\"Tidak Normal\"}]},{\"title\":\"KEPALA WAJAH\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"kepala_wajah\",\"id_code\":\"kepala_wajah_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"kepala_wajah\",\"id_code\":\"kepala_wajah_2\",\"lang_id\":\"1\",\"label\":\"Deformitas\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"kepala_wajah\",\"id_code\":\"kepala_wajah_3\",\"lang_id\":\"1\",\"label\":\"Luka\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"kepala_wajah\",\"id_code\":\"kepala_wajah_4\",\"lang_id\":\"1\",\"label\":\"Tumor\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"kepala_wajah\",\"id_code\":\"kepala_wajah_5\",\"lang_id\":\"1\",\"label\":\"Kepala benjol\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"kepala_wajah\",\"id_code\":\"kepala_wajah_6\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"MATA\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"mata\",\"id_code\":\"mata_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_2\",\"lang_id\":\"1\",\"label\":\"Strabismus\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_3\",\"lang_id\":\"1\",\"label\":\"Hiperemis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_4\",\"lang_id\":\"1\",\"label\":\"Ikterik\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_5\",\"lang_id\":\"1\",\"label\":\"Sekret\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_6\",\"lang_id\":\"1\",\"label\":\"Pterigium\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_7\",\"lang_id\":\"1\",\"label\":\"Lensa keruh\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_8\",\"lang_id\":\"1\",\"label\":\"Anemis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_9\",\"lang_id\":\"1\",\"label\":\"Merah\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mata\",\"id_code\":\"mata_10\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"PERSEPSI WARNA\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"persepsi_warna\",\"id_code\":\"persepsi_warna_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"persepsi_warna\",\"id_code\":\"persepsi_warna_2\",\"lang_id\":\"1\",\"label\":\"Buta warna parsial\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"persepsi_warna\",\"id_code\":\"persepsi_warna_3\",\"lang_id\":\"1\",\"label\":\"Hiperemis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"persepsi_warna\",\"id_code\":\"persepsi_warna_4\",\"lang_id\":\"1\",\"label\":\"Buta warna total\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"VISUS JAUH\",\"subtitle\":\"\",\"label_flag_normal\":\"\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"Tanpa kacamata\",\"details\":[{\"table_name\":\"visus_jauh\",\"segment_name\":\"Tanpa kacamata\",\"id_code\":\"visus_jauh_1\",\"lang_id\":\"1\",\"label\":\"-OD\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"visus_jauh\",\"segment_name\":\"Tanpa kacamata\",\"id_code\":\"visus_jauh_2\",\"lang_id\":\"1\",\"label\":\"-OS\",\"chx\":true,\"value\":\"\"}]},{\"name\":\"Dengan kacamata\",\"details\":[{\"table_name\":\"visus_jauh\",\"segment_name\":\"Dengan kacamata\",\"id_code\":\"visus_jauh_3\",\"lang_id\":\"1\",\"label\":\"-OD\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"visus_jauh\",\"segment_name\":\"Dengan kacamata\",\"id_code\":\"visus_jauh_4\",\"lang_id\":\"1\",\"label\":\"-Os\",\"chx\":false,\"value\":\"\"}]}]},{\"title\":\"TELINGA\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"telinga\",\"id_code\":\"telinga_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"telinga\",\"id_code\":\"telinga_2\",\"lang_id\":\"1\",\"label\":\"Tanda infeksi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"telinga\",\"id_code\":\"telinga_3\",\"lang_id\":\"1\",\"label\":\"Serumen\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"telinga\",\"id_code\":\"telinga_4\",\"lang_id\":\"1\",\"label\":\"Perforasi MT\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"telinga\",\"id_code\":\"telinga_5\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"HIDUNG\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"hidung\",\"id_code\":\"hidung_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"hidung\",\"id_code\":\"hidung_2\",\"lang_id\":\"1\",\"label\":\"Hiperemis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"hidung\",\"id_code\":\"hidung_3\",\"lang_id\":\"1\",\"label\":\"Oedem\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"hidung\",\"id_code\":\"hidung_4\",\"lang_id\":\"1\",\"label\":\"Deviasi Septum\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"MULUT\",\"subtitle\":\"\",\"label_flag_normal\":\"\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"Mukosa rongga mulut\",\"details\":[{\"table_name\":\"mukosa_rongga_mulut\",\"segment_name\":\"Mukosa rongga mulut\",\"id_code\":\"mukosa_rongga_mulut_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"mukosa_rongga_mulut\",\"segment_name\":\"Mukosa rongga mulut\",\"id_code\":\"mukosa_rongga_mulut_2\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Tenggorokan\",\"details\":[{\"table_name\":\"mukosa_rongga_mulut\",\"segment_name\":\"Tenggorokan\",\"id_code\":\"tenggorokan_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"mukosa_rongga_mulut\",\"segment_name\":\"Tenggorokan\",\"id_code\":\"tenggorokan_2\",\"lang_id\":\"1\",\"label\":\"Hiperemis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mukosa_rongga_mulut\",\"segment_name\":\"Tenggorokan\",\"id_code\":\"tenggorokan_3\",\"lang_id\":\"1\",\"label\":\"Tonsil hipertrofi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mukosa_rongga_mulut\",\"segment_name\":\"Tenggorokan\",\"id_code\":\"tenggorokan_4\",\"lang_id\":\"1\",\"label\":\"Deviasi uvula\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"mukosa_rongga_mulut\",\"segment_name\":\"Tenggorokan\",\"id_code\":\"tenggorokan_5\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]}]},{\"title\":\"LEHER\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"leher\",\"id_code\":\"hidung_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"leher\",\"id_code\":\"leher_2\",\"lang_id\":\"1\",\"label\":\"Spasme\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"leher\",\"id_code\":\"leher_3\",\"lang_id\":\"1\",\"label\":\"Pembesaran tiroid\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"leher\",\"id_code\":\"leher_4\",\"lang_id\":\"1\",\"label\":\"Pembesaran kelenjar limfe\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"leher\",\"id_code\":\"leher_5\",\"lang_id\":\"1\",\"label\":\"JVP meningkat\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"leher\",\"id_code\":\"leher_5\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"THORAX / DADA\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"thorax\",\"id_code\":\"thorax_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"thorax\",\"id_code\":\"thorax_2\",\"lang_id\":\"1\",\"label\":\"Deformitas\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"thorax\",\"id_code\":\"thorax_3\",\"lang_id\":\"1\",\"label\":\"Tumor mammae\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"thorax\",\"id_code\":\"thorax_4\",\"lang_id\":\"1\",\"label\":\"Gineko mastia\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"thorax\",\"id_code\":\"thorax_5\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"PARU-PARU\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"paru\",\"id_code\":\"paru_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"}]},{\"title\":\"PEMERIKSAAN FISIK\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"pemeriksaan_fisik\",\"id_code\":\"pemeriksaan_fisik_1\",\"lang_id\":\"1\",\"label\":\"Gerak asimetris\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"pemeriksaan_fisik\",\"id_code\":\"pemeriksaan_fisik_2\",\"lang_id\":\"1\",\"label\":\"Perkusi abnormal\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"pemeriksaan_fisik\",\"id_code\":\"pemeriksaan_fisik_3\",\"lang_id\":\"1\",\"label\":\"Suara nafas tambahan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"pemeriksaan_fisik\",\"id_code\":\"pemeriksaan_fisik_4\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"JANTUNG\",\"subtitle\":\"\",\"label_flag_normal\":\"\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"JVP\",\"details\":[{\"table_name\":\"jantung\",\"segment_name\":\"JVP\",\"id_code\":\"jantung_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"jantung\",\"segment_name\":\"JVP\",\"id_code\":\"jantung_2\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Apex\",\"details\":[{\"table_name\":\"jantung\",\"segment_name\":\"Apex\",\"id_code\":\"jantung_3\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"jantung\",\"segment_name\":\"Apex\",\"id_code\":\"jantung_4\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Suara jantung\",\"details\":[{\"table_name\":\"jantung\",\"segment_name\":\"Suara jantung\",\"id_code\":\"jantung_5\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"jantung\",\"segment_name\":\"Suara jantung\",\"id_code\":\"jantung_6\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Bising jantung / Murmur\",\"details\":[{\"table_name\":\"jantung\",\"segment_name\":\"Bising jantung / Murmur\",\"id_code\":\"jantung_7\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"jantung\",\"segment_name\":\"Bising jantung / Murmur\",\"id_code\":\"jantung_8\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]}]},{\"title\":\"PERUT / ABDOMEN\",\"subtitle\":\"\",\"label_flag_normal\":\"\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"Abdomen\",\"details\":[{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_2\",\"lang_id\":\"1\",\"label\":\"Nyeri tekan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_3\",\"lang_id\":\"1\",\"label\":\"Nyeri ketok ginjal\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_4\",\"lang_id\":\"1\",\"label\":\"Shifting Dulness\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_5\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Bising Usus\",\"details\":[{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_6\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_7\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Hati\",\"details\":[{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_8\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_9\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Limpa\",\"details\":[{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_11\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_12\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Hernia\",\"details\":[{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_13\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_14\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Hemorroid\",\"details\":[{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_15\",\"lang_id\":\"1\",\"label\":\"Tidak diperiksa\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_16\",\"lang_id\":\"1\",\"label\":\"Tidak Ada\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"perut\",\"segment_name\":\"Abdomen\",\"id_code\":\"perut_17\",\"lang_id\":\"1\",\"label\":\"Ada\",\"chx\":false,\"value\":\"\"}]}]},{\"title\":\"GENITOURINARIA\",\"subtitle\":\"\",\"label_flag_normal\":\"Tidak ada\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XV\",\"details\":[{\"table_name\":\"genitourinaria\",\"id_code\":\"genitourinaria_1\",\"lang_id\":\"1\",\"label\":\"Tidak diperiksa\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"genitourinaria\",\"id_code\":\"genitourinaria_2\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"genitourinaria\",\"id_code\":\"genitourinaria_3\",\"lang_id\":\"1\",\"label\":\"Retensi Urin\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"genitourinaria\",\"id_code\":\"genitourinaria_4\",\"lang_id\":\"1\",\"label\":\"Tanda Infeksi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"genitourinaria\",\"id_code\":\"genitourinaria_5\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"title\":\"ANGGOTA GERAK\",\"subtitle\":\"\",\"label_flag_normal\":\"\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"Ekstrimitas atas\",\"details\":[{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas atas\",\"id_code\":\"anggota_gerak_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas atas\",\"id_code\":\"anggota_gerak_2\",\"lang_id\":\"1\",\"label\":\"Deformitas\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas atas\",\"id_code\":\"anggota_gerak_3\",\"lang_id\":\"1\",\"label\":\"Tremor\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas atas\",\"id_code\":\"anggota_gerak_4\",\"lang_id\":\"1\",\"label\":\"Oedem\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas atas\",\"id_code\":\"anggota_gerak_5\",\"lang_id\":\"1\",\"label\":\"Palmer eritem\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas atas\",\"id_code\":\"anggota_gerak_6\",\"lang_id\":\"1\",\"label\":\"Penurunan Kekuatan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas atas\",\"id_code\":\"anggota_gerak_7\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Ekstrimitas bawah\",\"details\":[{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas bawah\",\"id_code\":\"anggota_gerak_8\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas bawah\",\"id_code\":\"anggota_gerak_9\",\"lang_id\":\"1\",\"label\":\"Deformitas\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas bawah\",\"id_code\":\"anggota_gerak_10\",\"lang_id\":\"1\",\"label\":\"Varices\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas bawah\",\"id_code\":\"anggota_gerak_11\",\"lang_id\":\"1\",\"label\":\"Oedem\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas bawah\",\"id_code\":\"anggota_gerak_12\",\"lang_id\":\"1\",\"label\":\"Vascularisasi abnormal\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas bawah\",\"id_code\":\"anggota_gerak_13\",\"lang_id\":\"1\",\"label\":\"Penurunan Kekuatan\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Ekstrimitas bawah\",\"id_code\":\"anggota_gerak_15\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Tonus / otot\",\"details\":[{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Tonus / otot\",\"id_code\":\"anggota_gerak_16\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Tonus / otot\",\"id_code\":\"anggota_gerak_17\",\"lang_id\":\"1\",\"label\":\"Paresis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Tonus / otot\",\"id_code\":\"anggota_gerak_18\",\"lang_id\":\"1\",\"label\":\"Paralysis\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Tonus / otot\",\"id_code\":\"anggota_gerak_19\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Bising anggota_gerak / Murmur\",\"details\":[{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Bising anggota_gerak / Murmur\",\"id_code\":\"anggota_gerak_7\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"anggota_gerak\",\"segment_name\":\"Bising anggota_gerak / Murmur\",\"id_code\":\"anggota_gerak_8\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]}]},{\"title\":\"SISTEM PERSYARAFAN\",\"subtitle\":\"\",\"label_flag_normal\":\"\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"Refleks Fisiologis\",\"details\":[{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Refleks Fisiologis\",\"id_code\":\"sistem_persyarafan_1\",\"lang_id\":\"1\",\"label\":\"Tonus / otot\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Refleks Fisiologis\",\"id_code\":\"sistem_persyarafan_2\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Refleks Fisiologis\",\"id_code\":\"sistem_persyarafan_3\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Refleks Pathologis\",\"details\":[{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Refleks Pathologis\",\"id_code\":\"sistem_persyarafan_4\",\"lang_id\":\"1\",\"label\":\"Tidak ada\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Refleks Pathologis\",\"id_code\":\"sistem_persyarafan_5\",\"lang_id\":\"1\",\"label\":\"Ada\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Keseimbangan & Koordinasi\",\"details\":[{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Keseimbangan & Koordinasi\",\"id_code\":\"sistem_persyarafan_6\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Keseimbangan & Koordinasi\",\"id_code\":\"sistem_persyarafan_7\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Refleks Neurologis Lainnya\",\"details\":[{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Refleks Neurologis Lainnya\",\"id_code\":\"sistem_persyarafan_8\",\"lang_id\":\"1\",\"label\":\"Tidak ada\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"sistem_persyarafan\",\"segment_name\":\"Refleks Neurologis Lainnya\",\"id_code\":\"sistem_persyarafan_9\",\"lang_id\":\"1\",\"label\":\"Ada\",\"chx\":false,\"value\":\"\"}]}]},{\"title\":\"SISTEM INTEGUMEN\",\"subtitle\":\"\",\"label_flag_normal\":\"\",\"flag_normal\":\"Y\",\"show_all\":\"Y\",\"type_form\":\"XVS\",\"details\":[{\"name\":\"Kulit\",\"details\":[{\"table_name\":\"sistem_integumen\",\"segment_name\":\"Kulit\",\"id_code\":\"sistem_integumen_1\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"sistem_integumen\",\"segment_name\":\"Kulit\",\"id_code\":\"sistem_integumen_2\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"sistem_integumen\",\"segment_name\":\"Kulit\",\"id_code\":\"sistem_integumen_3\",\"lang_id\":\"1\",\"label\":\"Bekas Operasi\",\"chx\":false,\"value\":\"\"},{\"table_name\":\"sistem_integumen\",\"segment_name\":\"Kulit\",\"id_code\":\"sistem_integumen_4\",\"lang_id\":\"1\",\"label\":\"Lain-lain\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Kuku\",\"details\":[{\"table_name\":\"sistem_integumen\",\"segment_name\":\"Kuku\",\"id_code\":\"sistem_integumen_5\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"sistem_integumen\",\"segment_name\":\"Kuku\",\"id_code\":\"sistem_integumen_6\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]},{\"name\":\"Rambut\",\"details\":[{\"table_name\":\"sistem_integumen\",\"segment_name\":\"Kuku\",\"id_code\":\"sistem_integumen_7\",\"lang_id\":\"1\",\"label\":\"Normal\",\"chx\":true,\"value\":\"\"},{\"table_name\":\"sistem_integumen\",\"segment_name\":\"Kuku\",\"id_code\":\"sistem_integumen_8\",\"lang_id\":\"1\",\"label\":\"Tidak Normal\",\"chx\":false,\"value\":\"\"}]}]}]', 'Y');
-- 2019-12-15 14:10:04
*/
}