436 lines
13 KiB
Plaintext
436 lines
13 KiB
Plaintext
<?php
|
|
class Patient extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
public function index()
|
|
{
|
|
echo "Patient API";
|
|
}
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
}
|
|
|
|
function search_patient(){
|
|
|
|
//# ambil parameter input
|
|
$prm = $this->sys_input;
|
|
|
|
$data_patient = [];
|
|
$sql = "
|
|
SELECT DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date,
|
|
T_OrderHeaderLabNumber as labnumber,
|
|
T_OrderHeaderM_PatientAge as patient_age,
|
|
M_PatientName as patient_name,
|
|
M_PatientNoReg as noreg,
|
|
IF(M_PatientGender = 'male','Laki-laki','Perempuan') as gender,
|
|
DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob,
|
|
M_PatientJob as job,
|
|
M_PatientPosisi as posisi,
|
|
IF(M_PatientDivisi = '','-',M_PatientDivisi) as divisi,
|
|
M_PatientHp as hp,
|
|
M_PatientEmail as email,
|
|
M_PatientNIP as nip,
|
|
CorporateName as corporate_name,
|
|
M_PatientPhoto as photo
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID
|
|
WHERE
|
|
T_OrderHeaderID = {$prm['order_id']} AND T_OrderHeaderLabNumber = '{$prm['noreg']}'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data patient");
|
|
exit;
|
|
}
|
|
|
|
$data_patient = $query->row_array();
|
|
|
|
$data_packet = [];
|
|
$sql = "
|
|
SELECT T_PacketName as packet_name,
|
|
T_PacketID as packet_id,
|
|
'' as active,
|
|
'' as details
|
|
FROM t_orderdetailorder
|
|
JOIN t_packet ON T_OrderDetailOrderT_PacketID = T_PacketID
|
|
WHERE
|
|
T_OrderDetailOrderT_OrderHeaderID = {$prm['order_id']} AND
|
|
T_OrderDetailOrderIsPacket = 'Y' AND
|
|
T_OrderDetailOrderIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data packet");
|
|
exit;
|
|
}
|
|
|
|
$data_packet = $query->result_array();
|
|
if($data_packet){
|
|
foreach ($data_packet as $key => $value) {
|
|
$data_packet[$key]['active'] = false;
|
|
$sql = "SELECT T_TestName as test_name
|
|
FROM t_packetdetail
|
|
JOIN t_test ON T_PacketDetailT_TestID = T_TestID
|
|
WHERE T_PacketDetailT_PacketID = {$value['packet_id']} AND T_PacketDetailIsActive = 'Y'";
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data packet detail");
|
|
exit;
|
|
}
|
|
|
|
$data_packet_details = $query->result_array();
|
|
if(count($data_packet_details) > 0)
|
|
$data_packet[$key]['details'] = $data_packet_details;
|
|
else
|
|
$data_packet[$key]['details'] = [];
|
|
}
|
|
}
|
|
|
|
$data_tests = [];
|
|
$sql = "
|
|
SELECT T_TestName as test_name
|
|
FROM t_orderdetailorder
|
|
JOIN t_test ON T_OrderDetailOrderT_TestID = T_TestID
|
|
WHERE
|
|
T_OrderDetailOrderT_OrderHeaderID = {$prm['order_id']} AND
|
|
T_OrderDetailOrderIsPacket = 'N' AND
|
|
T_OrderDetailOrderIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data tests");
|
|
exit;
|
|
}
|
|
|
|
$data_tests = $query->result_array();
|
|
|
|
$data_sample_lab = [];
|
|
$sql = "
|
|
SELECT T_SampleTypeName as sampletype_name,
|
|
T_OrderSampleBarcode as barcode,
|
|
IF(ISNULL(T_OrderSampleSamplingDate),'Belum diambil',DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y')) as sampling_date,
|
|
IF(ISNULL(T_OrderSampleSamplingTime),'',T_OrderSampleSamplingTime) as sample_time,
|
|
IF(ISNULL(T_OrderSampleReceiveDate),'Belum dilakukan',DATE_FORMAT(T_OrderSampleReceiveDate,'%d-%m-%Y')) as receive_date,
|
|
IF(ISNULL(T_OrderSampleReceiveTime),'',DATE_FORMAT(T_OrderSampleReceiveTime,'%H:%i')) as receive_time,
|
|
T_OrderSampleSampling as is_sampling,
|
|
T_OrderSampleReceive as is_received,
|
|
IFNULL(M_StaffName,'') as staff_name
|
|
FROM t_ordersample
|
|
JOIN t_sampletype ON T_OrderSampleT_SampleTypeID = T_SampleTypeID
|
|
LEFT JOIN m_user ON T_OrderSampleReceiveUserID = M_UserID
|
|
LEFT JOIN m_staff ON M_UserM_StaffID = M_StaffID
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$prm['order_id']} AND
|
|
T_OrderSampleIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data sample lab");
|
|
exit;
|
|
}
|
|
|
|
$data_sample_lab = $query->result_array();
|
|
|
|
$data_sample_radiodiagnostic = [];
|
|
$sql = "
|
|
SELECT T_TestName as sampletype_name,
|
|
T_OrderHeaderLabNumber as barcode,
|
|
IF(ISNULL(T_SamplingSoProcessDate),'Belum dilakukan',DATE_FORMAT(T_SamplingSoProcessDate,'%d-%m-%Y')) as sampling_date,
|
|
IF(ISNULL(T_SamplingSoProcessTime),'',T_SamplingSoProcessTime) as sample_time,
|
|
IF(ISNULL(T_SamplingSoDoneDate),'Belum dilakukan',DATE_FORMAT(T_SamplingSoDoneDate,'%d-%m-%Y')) as receive_date,
|
|
IF(ISNULL(T_SamplingSoDoneTime),'',DATE_FORMAT(T_SamplingSoDoneTime,'%H:%i')) as receive_time,
|
|
IF(ISNULL(T_SamplingSoFlag),'N','Y') as is_sampling,
|
|
IF(ISNULL(T_SamplingSoFlag) OR T_SamplingSoFlag <> 'D','N','Y') as is_received,
|
|
IFNULL(M_StaffName,'') as staff_name
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
|
|
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
|
|
JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID AND
|
|
T_SampleStationIsNonLab = 'RADIODIAGNOSTIC'
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_SamplingSoT_TestID = T_TestID
|
|
LEFT JOIN m_user ON T_SamplingSoDoneUserID = M_UserID
|
|
LEFT JOIN m_staff ON M_UserM_StaffID = M_StaffID
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$prm['order_id']} AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data sample radiodiagnostic");
|
|
exit;
|
|
}
|
|
|
|
$data_sample_radiodiagnostic = $query->result_array();
|
|
|
|
$data_sample_electromedic = [];
|
|
$sql = "
|
|
SELECT T_TestName as sampletype_name,
|
|
T_OrderHeaderLabNumber as barcode,
|
|
IF(ISNULL(T_SamplingSoProcessDate),'Belum dilakukan',DATE_FORMAT(T_SamplingSoProcessDate,'%d-%m-%Y')) as sampling_date,
|
|
IF(ISNULL(T_SamplingSoProcessTime),'',T_SamplingSoProcessTime) as sample_time,
|
|
IF(ISNULL(T_SamplingSoDoneDate),'Belum dilakukan',DATE_FORMAT(T_SamplingSoDoneDate,'%d-%m-%Y')) as receive_date,
|
|
IF(ISNULL(T_SamplingSoDoneTime),'',DATE_FORMAT(T_SamplingSoDoneTime,'%H:%i')) as receive_time,
|
|
IF(ISNULL(T_SamplingSoFlag),'N','Y') as is_sampling,
|
|
IF(ISNULL(T_SamplingSoFlag) OR T_SamplingSoFlag <> 'D','N','Y') as is_received,
|
|
IFNULL(M_StaffName,'') as staff_name
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
|
|
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
|
|
JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID AND
|
|
T_SampleStationIsNonLab = 'ELEKTROMEDIS'
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_SamplingSoT_TestID = T_TestID
|
|
LEFT JOIN m_user ON T_SamplingSoDoneUserID = M_UserID
|
|
LEFT JOIN m_staff ON M_UserM_StaffID = M_StaffID
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$prm['order_id']} AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data sample electromedis");
|
|
exit;
|
|
}
|
|
|
|
$data_sample_electromedic = $query->result_array();
|
|
|
|
$data_sample_other = [];
|
|
$sql = "
|
|
SELECT T_TestName as sampletype_name,
|
|
T_OrderHeaderLabNumber as barcode,
|
|
IF(ISNULL(T_SamplingSoProcessDate),'Belum dilakukan',DATE_FORMAT(T_SamplingSoProcessDate,'%d-%m-%Y')) as sampling_date,
|
|
IF(ISNULL(T_SamplingSoProcessTime),'',T_SamplingSoProcessTime) as sample_time,
|
|
IF(ISNULL(T_SamplingSoDoneDate),'Belum dilakukan',DATE_FORMAT(T_SamplingSoDoneDate,'%d-%m-%Y')) as receive_date,
|
|
IF(ISNULL(T_SamplingSoDoneTime),'',DATE_FORMAT(T_SamplingSoDoneTime,'%H:%i')) as receive_time,
|
|
IF(ISNULL(T_SamplingSoFlag),'N','Y') as is_sampling,
|
|
IF(ISNULL(T_SamplingSoFlag) OR T_SamplingSoFlag <> 'D','N','Y') as is_received,
|
|
IFNULL(M_StaffName,'') as staff_name
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
|
|
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
|
|
JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID AND
|
|
T_SampleStationIsNonLab = 'OTHERS'
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_SamplingSoT_TestID = T_TestID
|
|
LEFT JOIN m_user ON T_SamplingSoDoneUserID = M_UserID
|
|
LEFT JOIN m_staff ON M_UserM_StaffID = M_StaffID
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$prm['order_id']} AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data sample other");
|
|
exit;
|
|
}
|
|
|
|
$data_sample_other = $query->result_array();
|
|
|
|
|
|
$sql = "
|
|
SELECT COUNT(*) as xcount, DATE_FORMAT(T_SurveyCreated,'%d-%m-%Y') as xcreated_date, DATE_FORMAT(T_SurveyCreated,'%H:%i') as xcreated_time
|
|
FROM t_survey
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_SurveyT_OrderHeaderID AND T_OrderHeaderID = {$prm['order_id']} AND T_OrderHeaderLabNumber = '{$prm['noreg']}'
|
|
WHERE
|
|
T_SurveyIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data exist");
|
|
exit;
|
|
}
|
|
|
|
$data_exist = $query->row();
|
|
$data_survey = [];
|
|
|
|
if($data_exist->xcount > 0){
|
|
$status = "SUCCESS";
|
|
$data_survey = [
|
|
"sampletype_name" => "Isi survey",
|
|
"barcode" => $prm['noreg'],
|
|
"sampling_date" => $data_exist->xcreated_date,
|
|
"sample_time" => $data_exist->xcreated_time,
|
|
"receive_date" => $data_exist->xcreated_date,
|
|
"receive_time" => $data_exist->xcreated_time,
|
|
"is_sampling" => 'Y',
|
|
"is_received" => 'Y'
|
|
|
|
];
|
|
}
|
|
|
|
|
|
$result = array(
|
|
"data_patient" => $data_patient?$data_patient:[],
|
|
"data_packet" => $data_packet? $data_packet:[],
|
|
"data_tests" => $data_tests?$data_tests:[],
|
|
"data_sample_lab" => $data_sample_lab?$data_sample_lab:[],
|
|
"data_sample_radiodiagnostic" => $data_sample_radiodiagnostic?$data_sample_radiodiagnostic:[],
|
|
"data_sample_electromedic" => $data_sample_electromedic?$data_sample_electromedic:[],
|
|
"data_sample_other" => $data_sample_other?$data_sample_other:[],
|
|
"data_survey" => $data_survey
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
function load_survey(){
|
|
|
|
//# ambil parameter input
|
|
$prm = $this->sys_input;
|
|
|
|
$status = "FORM";
|
|
$results = [];
|
|
|
|
$sql = "
|
|
SELECT COUNT(*) as xcount
|
|
FROM t_survey
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_SurveyT_OrderHeaderID AND T_OrderHeaderID = {$prm['order_id']} AND T_OrderHeaderLabNumber = '{$prm['noreg']}'
|
|
WHERE
|
|
T_SurveyIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data exist");
|
|
exit;
|
|
}
|
|
|
|
$data_exist = $query->row()->xcount;
|
|
|
|
if($data_exist > 0){
|
|
$status = "SUCCESS";
|
|
}else{
|
|
$sql = "
|
|
SELECT COUNT(*) as xcount
|
|
FROM t_orderheader
|
|
WHERE
|
|
T_OrderHeaderID = {$prm['order_id']} AND
|
|
T_OrderHeaderLabNumber = '{$prm['noreg']}' AND
|
|
T_OrderHeaderIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data patient");
|
|
exit;
|
|
}
|
|
|
|
$data_exist_patient = $query->row()->xcount;
|
|
if($data_exist_patient == 0){
|
|
$status = "PATIENT_NOT_FOUND";
|
|
}else{
|
|
$sql = "
|
|
SELECT M_SurveyID as id,
|
|
M_SurveyName as name,
|
|
'' as value
|
|
FROM m_survey
|
|
WHERE
|
|
M_SurveyIsActive = 'Y'
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$this->sys_error_db("data survey");
|
|
exit;
|
|
}
|
|
|
|
$results = $query->result_array();
|
|
}
|
|
|
|
}
|
|
|
|
$result = array(
|
|
"records" => $results,
|
|
"status" => $status
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
|
|
function save_survey(){
|
|
|
|
//# ambil parameter input
|
|
$prm = $this->sys_input;
|
|
|
|
$status = "FORM";
|
|
$results = [];
|
|
|
|
$sql = "
|
|
INSERT INTO t_survey (
|
|
T_SurveyT_OrderHeaderID,
|
|
T_SurveySaran,
|
|
T_SurveyCreated
|
|
)
|
|
VALUES( ?, ?, NOW())
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql,array(
|
|
$prm['order_id'],
|
|
$prm['saran']
|
|
));
|
|
if (!$query) {
|
|
$this->sys_error_db("insert header");
|
|
exit;
|
|
}
|
|
|
|
$header_id = $this->db_onedev->insert_id();
|
|
|
|
foreach ($prm['surveys'] as $key => $value) {
|
|
$sql = "
|
|
INSERT INTO t_surveydetail (
|
|
T_SurveryDetailT_SurveyID,
|
|
T_SurveryDetailM_SurveyID,
|
|
T_SurveryDetailValue,
|
|
T_SurveryDetailCreated
|
|
)
|
|
VALUES(
|
|
?,?,?,NOW()
|
|
)
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql,array(
|
|
$header_id,
|
|
$value['id'],
|
|
$value['value']
|
|
));
|
|
if (!$query) {
|
|
//echo $this->db_onedev->last_query();
|
|
$this->sys_error_db("insert detail ");
|
|
exit;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$status = "SUCCESS";
|
|
|
|
$result = array(
|
|
"status" => $status
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
|
|
}
|