Files
BE_CPONE/application/libraries/NatPatientLib.php
2026-04-27 10:26:26 +07:00

188 lines
5.5 KiB
PHP

<?php
defined("BASEPATH") or exit("No direct script access allowed");
class NatPatientLib
{
//dev
//var $NAT_PATIENT_API = "http://10.9.8.249/one-api/nat_patient/r_api/";
//prod
var $NAT_PATIENT_API = "http://192.168.50.250/one-api/nat_patient/r_api/";
function __construct()
{
$CI = &get_instance();
$this->db = $CI->load->database("default", true);
}
//remote => status : Y|N Y confirm N, not confirm.
/*
create table m_patient_nat_validation(
M_PatientNatValidationID int not null auto_increment primary key,
M_PatientNatValidationM_PatientID int,
M_PatientNatValidationM_UserID int,
M_PatientNatValidationM_UserUsername varchar(100),
M_PatientNatValidationIsActive char(1) default 'Y',
M_PatientNatValidationCreated datetime default current_timestamp(),
M_PatientNatValidationLastUpdated datetime default current_timestamp() on update current_timestamp(),
key(M_PatientNatValidationM_PatientID),
key(M_PatientNatValidationIsActive),
);
create table m_patient_nat_log (
M_PatientNatLogID int not null auto_increment primary key,
M_PatientNatLogDate datetime default current_timestamp(),
M_PatientNatLogStatus enum('New','Retry','Sent'),
M_PatientNatLogLastUpdated datetime default current_timestamp() on update current_timestamp(),
M_PatientNatLogJson text,
key(M_PatientNatLogDate),
key(M_PatientNatLogStatus)
);
*/
function save_nasional($userName, $patient)
{
$resp = $this->get_branch();
if ($resp["status"] != "OK") {
return $resp;
}
$param = [
"M_BranchID" => $resp["branchID"],
"M_BranchCode" => $resp["branchCode"],
"Username" => $userName,
"patient" => $patient
];
$z_param = gzcompress(json_encode($param));
$url = $this->NAT_PATIENT_API . "/update_from_local";
$zresp = $this->post($url, $z_param);
$jresp = gzuncompress($zresp);
$resp = json_decode($jresp, true);
if (!isset($resp["status"])) {
$resp["status"] = "ERR";
$resp["message"] = $zresp;
}
return $resp;
}
function confirm($localM_PatientID, $arr_remote, $userID, $userName)
{
$payload = [
"userID" => $userID,
"userName" => $userName,
"lokalM_PatientID" => $localM_PatientID,
"remote" => $arr_remote,
];
$jsonPayload = json_encode($payload);
$sql = "insert into m_patient_nat_log(M_PatientNatLogStatus,M_PatientNatLogJson)
values('New',?)";
$qry = $this->db->query($sql, [$jsonPayload]);
if (!$qry) {
return [
"status" => "ERR",
"message" => $this->db->error()["message"],
];
}
return ["status" => "OK"];
}
function check_connection()
{
$start = date("Y-m-d H:i:s");
$url = $this->NAT_PATIENT_API . "/check_connection";
$zresp = $this->post($url, ["dummy" => "load"]);
$jresp = gzuncompress($zresp);
$resp = json_decode($jresp, true);
if (!isset($resp["status"])) {
$resp["status"] = "ERR";
$resp["message"] = $zresp;
}
$stop = date("Y-m-d H:i:s");
$resp["start"] = $start;
$resp["stop"] = $stop;
return $resp;
}
function get_branch()
{
$sql =
"select M_BranchID, M_BranchCode from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault='Y'";
$qry = $this->db->query($sql);
if (!$qry) {
return [
"status" => "ERR",
"message" =>
$this->db->error()["message"] .
"|\n" .
$this->db->last_query(),
];
}
$rows = $qry->result_array();
if (count($rows) == 0) {
return ["status" => "ERR", "message" => "No Default Branch"];
}
return [
"status" => "OK",
"branchID" => $rows[0]["M_BranchID"],
"branchCode" => $rows[0]["M_BranchCode"],
];
}
function search($query)
{
$start = date("Y-m-d H:i:s");
$url = $this->NAT_PATIENT_API . "/search_bizone";
$jparam = json_encode(["search" => $query]);
$zresp = $this->post($url, $jparam);
$jresp = gzuncompress($zresp);
$resp = json_decode($jresp, true);
if (!isset($resp["status"])) {
$resp["status"] = "ERR";
$resp["message"] = $zresp;
}
$stop = date("Y-m-d H:i:s");
$resp["start"] = $start;
$resp["stop"] = $stop;
return $resp;
}
// param array ->
function search_by_nik($param)
{
$start = date("Y-m-d H:i:s");
$url = $this->NAT_PATIENT_API . "/search_by_nik";
$resp = $this->get_branch();
if ($resp["status"] != "OK") {
return $resp;
}
$jparam = json_encode($param);
$zresp = $this->post($url, $jparam);
$jresp = gzuncompress($zresp);
$resp = json_decode($jresp, true);
if (!isset($resp["status"])) {
$resp["status"] = "ERR";
$resp["message"] = $zresp;
}
$stop = date("Y-m-d H:i:s");
$resp["start"] = $start;
$resp["stop"] = $stop;
return $resp;
}
public function post($url, $data)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/text",
"Content-Length: " . strlen($data),
]);
$result = curl_exec($ch);
if (curl_error($ch) != "") {
echo json_encode([
"status" => "ERR",
"message" => "Http Error : " . curl_error($ch),
]);
curl_close($ch);
exit();
}
curl_close($ch);
return $result;
}
}