FHM09062601IBL - doctorv5/anamnesedoctor: fix kelurahan sub-query, tambah PDP decrypt, gunakan regional

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sas.fajri
2026-06-10 11:36:44 +07:00
parent ae28375cc3
commit dc586c63f4

View File

@@ -14,6 +14,7 @@ class Anamnesedoctor extends MY_Controller
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
$this->db_oneklinik = $this->load->database("onedev", true);
$this->load->library('ibl_encryptor');
$this->IP_SOCKET_IO = "localhost";
}
@@ -37,15 +38,23 @@ class Anamnesedoctor extends MY_Controller
M_PatientNoReg,
M_PatientPrefix,
M_PatientName,
M_PatientName_enc,
M_PatientSuffix,
M_PatientHP,
M_PatientHP_enc,
M_PatientEmail,
M_PatientEmail_enc,
M_PatientPOB,
M_PatientPOB_enc,
M_PatientPhone,
M_PatientPhone_enc,
M_PatientIDNumber,
M_PatientIDNumber_enc,
DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as M_PatientDOB,
M_PatientDOB_enc,
M_PatientNote,
M_PatientNIK,
M_PatientNIK_enc,
M_PatientJabatan,
M_PatientKedudukan,
M_PatientPJ,
@@ -61,9 +70,12 @@ class Anamnesedoctor extends MY_Controller
M_IdTypeName,
M_PatientIDNumber,
IF(ISNULL(M_PatientSuspendID),'active','suspend' ) as status,
M_PatientAddressM_KelurahanID M_KelurahanID,
0 M_DistrictID,
0 M_CityID,
M_PatientAddressM_KelurahanID M_KelurahanID,
M_PatientAddressRegionalCd,
M_PatientAddressDescription,
M_PatientAddressDescription_enc,
0 M_DistrictID,
0 M_CityID,
0 M_ProvinceID
FROM one_klinik.order
JOIN m_patient ON M_PatientID = orderM_PatientID AND M_PatientIsActive = 'Y'
@@ -86,26 +98,33 @@ class Anamnesedoctor extends MY_Controller
$rows = $query->result_array();
foreach ($rows as $k => $v) {
$rows[$k]['M_PatientName'] = stripslashes($rows[$k]['M_PatientName']);
$rows[$k]['M_PatientAddressDescription'] = stripslashes($v['M_PatientAddressDescription']);
$patient_name = str_replace("'", "\\'", $prm['M_PatientName']);
$sql = "SELECT *, concat('{$rows[$k]['M_PatientAddressDescription']}', '\n\n',
m_kelurahanname, ', ',
m_districtname,'\n',
m_cityname, ', ',
m_provincename) as xaddress
FROM m_kelurahan
JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
JOIN m_city ON M_DistrictM_CityID = M_CityID
JOIN m_province ON M_CityM_ProvinceID = M_ProvinceID
WHERE
M_KelurahanID = {$v['M_KelurahanID']} ";
//echo $sql;
$row_address = $this->db_onedev->query($sql)->row_array();
$rows[$k]['M_PatientAddress'] = stripslashes($row_address['xaddress']);
$rows[$k]['M_DistrictID'] = $row_address['M_DistrictID'];
$rows[$k]['M_CityID'] = $row_address['M_CityID'];
$rows[$k]['M_ProvinceID'] = $row_address['M_ProvinceID'];
$enc = $this->ibl_encryptor;
$rows[$k]['M_PatientName'] = $enc->decrypt($v['M_PatientName_enc'] ?? '') ?: stripslashes($v['M_PatientName']);
$rows[$k]['M_PatientHP'] = $enc->decrypt($v['M_PatientHP_enc'] ?? '') ?: $v['M_PatientHP'];
$rows[$k]['M_PatientEmail'] = $enc->decrypt($v['M_PatientEmail_enc'] ?? '') ?: $v['M_PatientEmail'];
$rows[$k]['M_PatientPOB'] = $enc->decrypt($v['M_PatientPOB_enc'] ?? '') ?: $v['M_PatientPOB'];
$rows[$k]['M_PatientPhone'] = $enc->decrypt($v['M_PatientPhone_enc'] ?? '') ?: $v['M_PatientPhone'];
$rows[$k]['M_PatientIDNumber'] = $enc->decrypt($v['M_PatientIDNumber_enc'] ?? '') ?: $v['M_PatientIDNumber'];
$rows[$k]['M_PatientDOB'] = $enc->decrypt($v['M_PatientDOB_enc'] ?? '') ?: $v['M_PatientDOB'];
$rows[$k]['M_PatientNIK'] = $enc->decrypt($v['M_PatientNIK_enc'] ?? '') ?: $v['M_PatientNIK'];
$rows[$k]['M_PatientAddressDescription'] = $enc->decrypt($v['M_PatientAddressDescription_enc'] ?? '') ?: stripslashes($v['M_PatientAddressDescription'] ?? '');
$reg_cd = $v['M_PatientAddressRegionalCd'] ?? '';
if ($reg_cd) {
$reg = $this->db_onedev->query(
"SELECT r_kel.regional_name as kel_name, r_kec.regional_name as kec_name, r_kab.regional_name as kab_name, r_pro.regional_name as pro_name
FROM regional r_kel
LEFT JOIN regional r_kec ON r_kec.regional_cd = LEFT(r_kel.regional_cd,7) AND RIGHT(r_kec.regional_cd,3)='000'
LEFT JOIN regional r_kab ON r_kab.regional_cd = LEFT(r_kel.regional_cd,4) AND RIGHT(r_kab.regional_cd,6)='000000'
LEFT JOIN regional r_pro ON r_pro.regional_cd = LEFT(r_kel.regional_cd,2) AND RIGHT(r_pro.regional_cd,8)='00000000'
WHERE r_kel.regional_cd = ?", [$reg_cd]
)->row_array();
$rows[$k]['M_PatientAddress'] = $rows[$k]['M_PatientAddressDescription'] . "\n\n" .
implode(', ', array_filter([$reg['kel_name'] ?? '', $reg['kec_name'] ?? '', $reg['kab_name'] ?? '', $reg['pro_name'] ?? '']));
} else {
$rows[$k]['M_PatientAddress'] = $rows[$k]['M_PatientAddressDescription'];
}
$info = $this->db_onedev->query("SELECT fn_fo_patient_visit(?) info", [$v['M_PatientID']])->row();
$rows[$k]['info'] = json_decode($info->info);
}