'CONSID', * 'BPJS_KEY'=>'SECRETKEY', * 'BPJS_VCLAIM_URL'=>'URL SERVICE', * ]); * * - Define katalog and parameter * $request = ['katalog'=>'peserta','parameter'=['nokartu','xx000123456','2019-01-01']]; * * - Get result * $result = $bpjs->request($request,(DEBUG=BOOLEAN,OBJECT_ONLY=BOOLEAN)); * **/ use GuzzleHttp\Client; use GuzzleHttp\Psr7; use GuzzleHttp\Psr7\Request; use GuzzleHttp\Exception\RequestException; use Monolog\Logger; use Monolog\Handler\StreamHandler; use Monolog\Handler\FirePHPHandler; Class BPJS { private $consId; private $secretkey; private $serviceUrl; private $header; private $timeStamp; private $requestURL; private $contentType; private $method; public function __construct($cons_id,$secret_key,$service_url) { $this->consId = $cons_id; $this->secretkey = $secret_key; $this->serviceUrl = $service_url; } private function setHeader() { date_default_timezone_set('Asia/Jakarta'); $this->timeStamp = strval(strtotime('now')); $signature = hash_hmac('sha256', $this->consId."&".$this->timeStamp, $this->secretkey, true); $encodedSignature = base64_encode($signature); $context = [ 'headers' => [ 'Accept' => 'application/json', 'Content-type' => $this->contentType, 'X-cons-id' => $this->consId, 'X-timestamp' => $this->timeStamp, 'X-signature' => $encodedSignature, ] ]; $this->header = $context['headers']; } private function setUrl($param) { if($param['katalog'] != null) { switch ($param['katalog']) { case 'peserta': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Peserta/'.$param['parameter'][0].'/'.$param['parameter'][1].'/tglSEP/'.$param['parameter'][2]; break; } // Referensi case 'poli': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/poli/'.$param['parameter'][0]; break; } case 'faskes': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/faskes/'.$param['parameter'][0].'/'.$param['parameter'][1]; break; } case 'propinsi': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/propinsi'; break; } case 'kabupaten': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/kabupaten/propinsi/'.$param['parameter'][0]; break; } case 'kecamatan': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/kecamatan/kabupaten/'.$param['parameter'][0]; break; } case 'dpjp': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/dokter/pelayanan/'.$param['parameter'][0].'/tglPelayanan/'.$param['parameter'][1].'/Spesialis/'.$param['parameter'][2]; break; } case 'diagnosa': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/diagnosa/'.$param['parameter'][0]; break; } // SEP case 'insert_sep': { $this->method = 'POST'; $this->contentType = 'application/x-www-form-urlencoded'; $this->requestURL = '/SEP/1.1/insert'; break; } case 'update_sep': { $this->method = 'PUT'; $this->contentType = 'application/x-www-form-urlencoded'; $this->requestURL = '/SEP/1.1/Update'; break; } case 'hapus_sep': { $this->method = 'DELETE'; $this->contentType = 'application/x-www-form-urlencoded'; $this->requestURL = '/SEP/Delete'; break; } case 'sep': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/SEP/'.$param['parameter'][0]; break; } case 'suplesi': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/sep/JasaRaharja/Suplesi/'.$param['parameter'][0].'/tglPelayanan/'.$param['parameter'][1]; break; } case 'update_pulang': { $this->method = 'PUT'; $this->contentType = 'application/x-www-form-urlencoded'; $this->requestURL = '/Sep/updtglplg'; break; } // RUJUKAN case 'rujukan_pcare': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Rujukan/'.$param['parameter'][0]; break; } case 'rujukan_RS': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Rujukan/RS/'.$param['parameter'][0]; break; } case 'rujukan_pcare_kartu1': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Rujukan/Peserta/'.$param['parameter'][0]; break; } case 'rujukan_RS_kartu1': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Rujukan/RS/Peserta/'.$param['parameter'][0]; break; } case 'rujukan_pcare_kartumulti': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Rujukan/List/Peserta/'.$param['parameter'][0]; break; } case 'rujukan_RS_kartumulti': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Rujukan/RS/List/Peserta/'.$param['parameter'][0]; break; } case 'insert_rujukan': { $this->method = 'POST'; $this->contentType = 'Application/x-www-form-urlencoded'; $this->requestURL = '/Rujukan/insert'; break; } case 'update_rujukan': { $this->method = 'PUT'; $this->contentType = 'Application/x-www-form-urlencoded'; $this->requestURL = '/Rujukan/update'; break; } case 'delete_rujukan': { $this->method = 'DELETE'; $this->contentType = 'Application/x-www-form-urlencoded'; $this->requestURL = '/Rujukan/delete'; break; } // Referensi LPK case 'tindakan': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/procedure/'.$param['parameter'][0]; break; } case 'kelasrawat': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/kelasrawat'; break; } case 'ruangrawat': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/ruangrawat'; break; } case 'dokter': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/dokter'; break; } case 'spesialistik': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/spesialistik'; break; } case 'carakeluar': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/carakeluar'; break; } case 'pascapulang': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/referensi/pascapulang'; break; } // LPK case 'insert_lpk': { $this->method = 'GET'; $this->contentType = 'Application/x-www-form-urlencoded'; $this->requestURL = '/LPK/insert'; break; } case 'update_lpk': { $this->method = 'PUT'; $this->contentType = 'Application/x-www-form-urlencoded'; $this->requestURL = '/LPK/update'; break; } case 'delete_lpk': { $this->method = 'DELETE'; $this->contentType = 'Application/x-www-form-urlencoded'; $this->requestURL = '/LPK/delete'; break; } case 'list_lpk': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/LPK/TglMasuk/'.$param['parameter'][0].'/JnsPelayanan/'.$param['parameter'][1]; break; } case 'monitor_kunjungan': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Monitoring/Kunjungan/Tanggal/'.$param['parameter'][0].'/JnsPelayanan/'.$param['parameter'][1]; break; } case 'monitor_klaim': { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = '/Monitoring/Klaim/Tanggal/'.$param['parameter'][0].'/JnsPelayanan/'.$param['parameter'][1].'/Status/'.$param['parameter'][2]; break; } // DEFAULT default: { $this->method = 'GET'; $this->contentType = 'application/json; charset=utf-8'; $this->requestURL = null; break; } } } } public function request($args, $debug = FALSE, $object_only = FALSE) { if($this->consId == null || $this->secretkey == null) { return false; } $this->setUrl($args); $this->setHeader(); if($debug == TRUE) { $this->log($this->method."\r\n".$this->serviceUrl.$this->requestURL."\r\n".http_build_query($this->header)); } $client = new GuzzleHttp\Client(); $url_request = $this->serviceUrl.$this->requestURL; try { $request = new Request($this->method, $url_request, $this->header, $args['body']); $obj_request = $client->send($request); $json_request = ($obj_request->getStatusCode() == 200) ? $obj_request->getBody()->getContents() : []; if($object_only == TRUE) { return $json_request; } else { return (array) json_decode($json_request); } } catch(RequestException $e){ return Psr7\str($e->getRequest()); if ($e->hasResponse()) { return Psr7\str($e->getResponse()); } } } private function log($string) { $logger = new Logger('BPJS'); $daily_log = date('d-m-Y').'.log'; $logger->pushHandler(new StreamHandler(_DOCROOT_.'logs/bpjs_logs/'.$daily_log, Logger::INFO)); $logger->pushHandler(new FirePHPHandler()); $logger->addInfo($string); } }