Advertisement
dicaribapak11

Untitled

Nov 28th, 2024
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.71 KB | None | 0 0
  1. <?Php
  2.  
  3. use phpDocumentor\Reflection\Types\Object_;
  4.  
  5. require_once APPPATH . 'core/API_Controller.php';
  6.  
  7. class Antrean extends API_Controller
  8. {
  9. var $unit;
  10. var $dokter;
  11. var $base_url = 'https://apijkn.bpjs-kesehatan.go.id/antreanrs';
  12. public function __construct()
  13. {
  14. parent::__construct();
  15. $this->load->model('Api_m');
  16. }
  17.  
  18. public function pasien_baru_post()
  19. {
  20. $data["nomor_rm"] = $this->Api_m->get_nomor_rm();
  21. $data["nik"] = $this->post("nik");
  22. $data["nama_lengkap"] = $this->post("nama");
  23. $data["nomor_asuransi"] = $this->post("nomorkartu");
  24. $data["nama_keluarga"] = '';
  25. $data["tempat_lahir"] = '';
  26. $data["tgl_lahir"] = $this->post('tanggallahir');
  27. $data["jk"] = $this->post("jeniskelamin") == 'L' ? 1 : 2;
  28. $data["alamat"] = $this->post("alamat");
  29. $data["kd_desa"] = $this->post("kodekel");
  30. $data["kd_kecamatan"] = $this->post("kodekec");
  31. $data["kd_kabupaten"] = $this->post("kodedati2");
  32. // $data["kd_provinsi"] = $this->post("kodeprop");
  33. $data["telp"] = $this->post("nohp");
  34. $data["id_agama"] = 1;
  35. $data["id_status_nikah"] = 1;
  36. $data["id_pendidikan"] = 1;
  37. $data["id_pekerjaan"] = 1;
  38. $data["id_suku_bangsa"] = 1;
  39. $data["kewarganegaraan"] = 'WNI';
  40. $data["id_jenis_pasien"] = 2;
  41. $data["tanggal"] = date("Y-m-d");
  42. $data['created_by'] = 2;
  43. $data['created_at'] = date('Y-m-d H:i:s');
  44. $data['updated_by'] = 1;
  45. $data['deleted_by'] = 1;
  46.  
  47.  
  48. $this->no_validation($data["nomor_asuransi"], 'Nomor Kartu', 13, 'Format Nomor Kartu Tidak Sesuai');
  49. $this->no_validation($data["nik"], 'NIK', 16, 'Format NIK Tidak Sesuai');
  50.  
  51. $this->check_if_empty($data["nama_lengkap"], 'Nama');
  52. $this->check_if_empty($this->post("nomorkk"), 'Nomor KK');
  53. $this->check_if_empty($this->post("jeniskelamin"), 'Jenis Kelamin');
  54. $this->check_if_empty($this->post("tanggallahir"), 'Tanggal Lahir');
  55. $this->check_if_empty($this->post("alamat"), 'Alamat');
  56. $this->check_if_empty($this->post("kodeprop"), 'Kode Provinsi');
  57. $this->check_if_empty($this->post("namaprop"), 'Nama Provinsi');
  58. $this->check_if_empty($this->post("kodedati2"), 'Kode Dati2');
  59. $this->check_if_empty($this->post("namadati2"), 'Dati2');
  60. $this->check_if_empty($this->post("kodekec"), 'Kode Kecamatan');
  61. $this->check_if_empty($this->post("namakec"), 'Kecamatan');
  62. $this->check_if_empty($this->post("kodekel"), 'Kode Kelurahan');
  63. $this->check_if_empty($this->post("namakel"), 'Kelurahan');
  64. $this->check_if_empty($this->post("rt"), 'RT');
  65. $this->check_if_empty($this->post("rw"), 'RW');
  66.  
  67. if (!$this->date_validation($data["tgl_lahir"])) {
  68. $this->send_response(null, 201, "Format Tanggal Tidak Sesuai");
  69. }
  70.  
  71. $pasien = $this->Api_m->get_data('data_pasien', '*', [
  72. 'nik' => $data["nik"],
  73. 'nomor_asuransi' => $data["nomor_asuransi"]
  74. ])->row();
  75.  
  76. if ($pasien) {
  77. $this->send_response(null, 201, "Data Peserta Sudah Pernah Dientrikan");
  78. }
  79.  
  80. $kecamatan = $this->Api_m->get_data('master_kecamatan', '*', [
  81. 'kd_kecamatan' => $data["kd_kecamatan"]
  82. ])->row();
  83.  
  84. if ($kecamatan == null) {
  85. $this->send_response(null, 201, "kode kecamatan tidak sesuai referensi sistem");
  86. }
  87.  
  88. $kabupaten = $this->Api_m->get_data('master_kabupaten', '*', [
  89. 'kd_kabupaten' => $data["kd_kabupaten"]
  90. ])->row();
  91.  
  92. if ($kabupaten == null) {
  93. $this->send_response(null, 201, "kode kabupaten tidak sesuai referensi sistem");
  94. }
  95.  
  96. $desa = $this->Api_m->get_data('master_desa', '*', [
  97. 'kd_desa' => $data["kd_desa"]
  98. ])->row();
  99.  
  100. if ($desa == null) {
  101. $this->send_response(null, 201, "kode desa tidak sesuai referensi sistem");
  102. }
  103.  
  104. if ($this->Api_m->tambah_data('data_pasien', $data)) {
  105. $this->send_response(['norm' => $data["nomor_rm"]], 200, "Harap datang ke admisi untuk melengkapi data rekam medis");
  106. } else {
  107. $eror = $this->Api_m->get_db_error();
  108. $this->send_response(null, 201, $eror);
  109. }
  110. }
  111.  
  112. public function status_antrean_post()
  113. {
  114. $kode_poli = $this->post('kodepoli');
  115. $kode_dokter = $this->post('kodedokter');
  116. $tanggal_periksa = $this->post('tanggalperiksa');
  117. $jam_praktek = $this->post('jampraktek');
  118.  
  119. if ($tanggal_periksa == null)
  120. $this->send_response(null, 201, 'Tanggal tidak boleh kosong.');
  121.  
  122. if (!$this->date_validation($tanggal_periksa)) {
  123. $this->send_response(null, 201, "Format Tanggal Tidak Sesuai, format yang benar adalah yyyy-mm-dd");
  124. }
  125.  
  126. $d = date('Y-m-d', strtotime($tanggal_periksa));
  127. if ($d < date("Y-m-d")) {
  128. $this->send_response(null, 201, 'Tanggal periksa tidak berlaku.');
  129. }
  130.  
  131. $this->unit_validation($kode_poli); //validate kode_unit bpjs
  132. $this->dokter_validation($kode_dokter); // validasi kode dokter bpjs
  133.  
  134. $antrean = $this->Api_m->status_antrean($this->unit->kd_bpjs, $this->dokter->kd_dokter_bpjs, $tanggal_periksa, $jam_praktek);
  135. // echo json_encode($antrean); exit;
  136. // $this->send_response($antrean,200,"ok");
  137. if ($antrean == null) {
  138. $antrean = new Object_();
  139. $antrean->totalantrean = 0;
  140. $antrean->sisaantrean = 0;
  141. $antrean->antreanpanggil = null;
  142. $antrean->kuota_mjkn = $this->unit->kuota_mjkn ?: 30;
  143. }
  144. $result = array(
  145. 'namapoli' => $this->unit->nama_unit,
  146. 'totalantrean' => intval($antrean->totalantrean),
  147. 'sisaantrean' => intval($antrean->sisaantrean),
  148. 'antreanpanggil' => $antrean->antreanpanggil != null ? $antrean->kd_bpjs . '-' . str_pad($antrean->antreanpanggil, 3, '0', STR_PAD_LEFT) : '-',
  149. "namadokter" => $this->dokter->nama_pegawai,
  150. "sisakuotajkn" => $antrean->kuota_mjkn - intval($antrean->totalantrean),
  151. "kuotajkn" => $antrean->kuota_mjkn,
  152. "sisakuotanonjkn" => 999,
  153. "kuotanonjkn" => 999,
  154. "keterangan" => ""
  155. );
  156. $this->send_response([$result], 200, "ok");
  157. }
  158.  
  159. public function antrean_post()
  160. {
  161. try {
  162. $this->db->trans_begin();
  163. $nomorkartu = $this->post("nomorkartu");
  164. $nik = $this->post("nik");
  165. $nohp = $this->post("nohp");
  166. $kodepoli = $this->post("kodepoli");
  167. $norm = $this->post("norm");
  168. $tanggalperiksa = $this->post("tanggalperiksa");
  169. $kodedokter = $this->post("kodedokter");
  170. $jampraktek = $this->post("jampraktek");
  171. $jeniskunjungan = $this->post("jeniskunjungan");
  172. $nomorreferensi = $this->post("nomorreferensi");
  173.  
  174. // $this->response([
  175. // 'nomor_rm' => $norm,
  176. // 'nik' => $nik,
  177. // 'nomor_asuransi' => $nomorkartu
  178.  
  179. // ],200);
  180.  
  181. $this->unit_validation($kodepoli); //validate kode_unit bpjs
  182. $this->dokter_validation($kodedokter); // validasi kode dokter bpjs
  183.  
  184. if (!$this->date_validation($tanggalperiksa)) {
  185. $this->send_response(null, 201, "Format Tanggal Tidak Sesuai, format yang benar adalah yyyy-mm-dd");
  186. }
  187.  
  188. $tanggal = date('Y-m-d', strtotime($tanggalperiksa));
  189. if ($tanggal < date("Y-m-d")) {
  190. $this->send_response(null, 201, 'Tanggal periksa tidak berlaku.');
  191. }
  192.  
  193. $this->no_validation($nomorkartu, 'Nomor Kartu', 13, 'Format Nomor Kartu Tidak Sesuai');
  194. $this->no_validation($nik, 'NIK', 16, 'Format NIK Tidak Sesuai');
  195.  
  196. $this->load->helper('bpjs_antrol');
  197.  
  198. $header = $this->input->request_headers();
  199. $headers[] = "Content-Type: application/json; charset=utf-8";
  200. $headers[] = "x-username: " . $header['x-username'];
  201. $headers[] = "x-token: " . $header['x-token'];
  202.  
  203. $endpoint = '/jadwaldokter/kodepoli/' . $this->unit->kd_bpjs . '/tanggal/' . $tanggal;
  204. $url = $this->base_url . $endpoint;
  205. $req_method = 'GET';
  206. // echo vclaim_request($req_method, $url, $headers);
  207. $decoded_response = vclaim_request($req_method, $url, $headers);
  208.  
  209. // $this->send_response($decoded_response, 200, 'OK');
  210.  
  211. if ($decoded_response->metadata->code != 200) {
  212. $this->send_response(null, 201, 'Pendaftaran ke Poli Ini Sedang Tutup');
  213. }
  214.  
  215. $jadwal_dokter = null;
  216.  
  217. foreach ($decoded_response->response as $jadwal) {
  218. if ($this->dokter->kd_dokter_bpjs == $jadwal->kodedokter) {
  219. $jadwal_dokter = $jadwal;
  220. }
  221. }
  222.  
  223. if ($jadwal_dokter == null) {
  224. $this->send_response(
  225. null,
  226. 201,
  227. 'Jadwal Dokter ' . $this->dokter->nama_pegawai . ' Tersebut Belum Tersedia, Silahkan Reschedule Tanggal dan Jam Praktek Lainnya'
  228. );
  229. }
  230.  
  231. $jam = explode('-', $jadwal_dokter->jadwal);
  232. $jam_mulai = strtotime($tanggal . ' ' . $jam[0]);
  233. $jam_selesai = strtotime($tanggal . ' ' . $jam[1]);
  234. $jam_sekarang = time();
  235.  
  236.  
  237. if ($jam_sekarang > $jam_selesai) {
  238. $this->send_response(
  239. null,
  240. 201,
  241. 'Pendaftaran Ke Poli (' . $this->unit->nama_unit . ') Sudah Tutup Jam ' . $jam[1]
  242. );
  243. }
  244.  
  245. $pasien = $this->Api_m->get_data('data_pasien', '*', [
  246. 'nomor_rm' => $norm,
  247. 'nik' => $nik,
  248. 'nomor_asuransi' => $nomorkartu
  249. ])->row();
  250.  
  251. // $this->response($pasien,200);
  252.  
  253.  
  254. if ($pasien == null) {
  255. $this->send_response(null, 202, "Data pasien ini tidak ditemukan, silahkan Melakukan Registrasi Pasien Baru");
  256. }
  257.  
  258. $kunjungan = $this->Api_m->get_data('kunjungan', '*', [
  259. 'tanggal' => $tanggal,
  260. 'nomor_rm' => $pasien->nomor_rm,
  261. 'kd_unit' => $this->unit->kd_unit,
  262. 'deleted' => "0"
  263. ])->row();
  264.  
  265.  
  266. if ($kunjungan != null) {
  267. $this->send_response(null, 201, "Nomor Antrean Hanya Dapat Diambil 1 Kali Pada Tanggal Yang Sama");
  268. }
  269.  
  270. $ym = date('ym', strtotime($tanggalperiksa));
  271. $nourut = $this->Api_m->get_new_notran($ym);
  272. $kd_kunjungan = $ym . STR_PAD(++$nourut, 4, '0', STR_PAD_LEFT);
  273.  
  274. $ym = date('ymd', strtotime($tanggalperiksa));
  275. $params = [
  276. 'kd_unit' => $this->unit->kd_unit,
  277. 'tanggal' => $tanggalperiksa,
  278. 'kd_kunjungan' => $kd_kunjungan,
  279. 'kd_pegawai' => $this->dokter->kd_pegawai
  280.  
  281. ];
  282.  
  283. // $nourut_poli = $this->Api_m->get_no_antrean($ym . $this->dokter->kd_pegawai);
  284. $nourut_poli = $this->Api_m->getNoAntreanV2($params);
  285. $kdKunjunganRj = $this->Api_m->getKdKunjunganRJ($params);
  286.  
  287. list($kode, $urutan) = explode("-", $nourut_poli);
  288. $urutanAngka = (int)$urutan;
  289.  
  290. $birthDt = new DateTime($pasien->tgl_lahir); //tanggal lahir
  291. $today = new DateTime("today"); //tanggal hari ini
  292. $y = $today->diff($birthDt)->y;
  293. $m = $today->diff($birthDt)->m;
  294. $d = $today->diff($birthDt)->d;
  295.  
  296. $kabupaten = $this->Api_m->get_data('master_kabupaten', '*', ['kd_kabupaten' => $pasien->kd_kabupaten, 'deleted' => 0])->row();
  297. $kunjungan = array(
  298. 'kd_kunjungan' => $kd_kunjungan,
  299. 'tanggal' => $tanggal,
  300. 'waktu' => date("H:i:s"),
  301. 'nomor_rm' => $pasien->nomor_rm,
  302. 'nama_pasien' => $pasien->nama_lengkap,
  303. 'jk' => $pasien->jk,
  304. 'tgl_lahir' => $pasien->tgl_lahir,
  305. 'umur_thn' => $y,
  306. 'umur_bln' => $m,
  307. 'umur_hari' => $d,
  308. 'alamat' => $pasien->alamat,
  309. 'kd_desa' => $pasien->kd_desa,
  310. 'kd_kecamatan' => $pasien->kd_kecamatan,
  311. 'kd_kabupaten' => $pasien->kd_kabupaten,
  312. 'kd_provinsi' => $kabupaten->kd_provinsi,
  313. 'minggu_ke' => 0,
  314. 'status_kunjungan' => "Lama",
  315. 'kd_unit' => $this->unit->kd_unit,
  316. 'kd_unit_ri' => 00,
  317. 'kd_pegawai' => $this->dokter->kd_pegawai,
  318. 'id_jenis_pasien' => 2,
  319. 'nomor_asuransi' => $pasien->nomor_asuransi,
  320. 'nomor_sep' => '',
  321. 'antrian' => $nourut_poli,
  322. 'jenis_kunjungan' => $jeniskunjungan,
  323. 'nomor_referensi' => $nomorreferensi,
  324. 'sumber' => "online jkn",
  325. 'status' => "mendaftar",
  326. 'kd_pembiayaan' => '00',
  327. 'waktu_checkin' => null,
  328. 'created_by' => 4,
  329. 'created_at' => date('Y-m-d H:i:s'),
  330. 'updated_by' => 1,
  331. 'updated_at' => date('0000-00-00 00:00:00'),
  332. 'deleted_by' => 1,
  333. 'deleted_at' => date('0000-00-00 00:00:00'),
  334. );
  335.  
  336. $kunjungan_rj = [
  337. 'kd_kunjungan_rj' => $kdKunjunganRj,
  338. 'tanggal' => $tanggal,
  339. 'waktu' => date("H:i:s"),
  340. 'kd_kunjungan' => $kd_kunjungan,
  341. 'nomor_rm' => $pasien->nomor_rm,
  342. 'nomor_asuransi' => $pasien->nomor_asuransi,
  343. 'nama_pasien' => $pasien->nama_lengkap,
  344. 'jk' => $pasien->jk,
  345. 'tgl_lahir' => $pasien->tgl_lahir,
  346. 'umur_thn' => $y,
  347. 'umur_bln' => $m,
  348. 'umur_hari' => $d,
  349. 'id_jenis_pasien' => 2,
  350. 'kd_unit' => $this->unit->kd_unit,
  351. 'kd_dokter' => $this->dokter->kd_pegawai,
  352. 'created_by' => 4,
  353. 'created_at' => date('Y-m-d H:i:s'),
  354. 'updated_by' => 4,
  355. 'updated_at' => date('Y-m-d H:i:s'),
  356. 'deleted' => 0,
  357. 'urutan' => 0
  358. ];
  359.  
  360. $daftar = $this->Api_m->register($kunjungan);
  361. $this->Api_m->insertKunjunganRJ($kunjungan_rj);
  362. // $biaya_pendaftaran = $this->Api_m->get_biaya_pendaftaran($this->unit->kd_unit);
  363. $jenis_pasien = $this->Api_m->get_jenis_pasien_by(2);
  364.  
  365.  
  366. // foreach ($biaya_pendaftaran as $key => $row) {
  367. // $data_biaya_pendaftaran[$key]['kd_kunjungan'] = $kd_kunjungan;
  368. // $data_biaya_pendaftaran[$key]['nomor_rm'] = $pasien->nomor_rm;
  369. // $data_biaya_pendaftaran[$key]['id_tarif'] = $row['id_tarif'];
  370. // $data_biaya_pendaftaran[$key]['nama_tarif'] = $row['nama_tarif'];
  371. // $data_biaya_pendaftaran[$key]['jasa_sarana'] = $row['jasa_sarana'];
  372. // $data_biaya_pendaftaran[$key]['jasa_pelayanan'] = $row['jasa_pelayanan'];
  373. // $data_biaya_pendaftaran[$key]['bayar'] = $jenis_pasien['bayar'];
  374. // $data_biaya_pendaftaran[$key]['status_bayar'] = 'Belum';
  375. // $data_biaya_pendaftaran[$key]['tunggakan'] = 'Tidak';
  376.  
  377. // $data_biaya_pendaftaran[$key]['created_by'] = '09';
  378. // $data_biaya_pendaftaran[$key]['created_at'] = date('Y-m-d H:i:s');
  379. // $data_biaya_pendaftaran[$key]['updated_by'] = 1;
  380. // $data_biaya_pendaftaran[$key]['updated_at'] = date('0000-00-00 00:00:00');
  381. // $data_biaya_pendaftaran[$key]['deleted_by'] = 1;
  382. // $data_biaya_pendaftaran[$key]['deleted_at'] = date('0000-00-00 00:00:00');
  383. // }
  384. // $this->Api_m->store_biaya_pendaftaran($data_biaya_pendaftaran);
  385. if (!$daftar) {
  386. $this->send_response(null, 201, "Registrasi gagal");
  387. }
  388.  
  389. $antrean = $this->Api_m->status_antrean($this->unit->kd_bpjs, $this->dokter->kd_dokter_bpjs, $tanggalperiksa, $jampraktek);
  390.  
  391. // $this->send_response($antrean,200,"ok");
  392. if ($antrean == null) {
  393. $antrean = new Object_();
  394. $antrean->totalantrean = 0;
  395. $antrean->sisaantrean = 0;
  396. $antrean->antreanpanggil = null;
  397. $antrean->kuota_mjkn = $this->unit->kuota_mjkn ?: 30;
  398. }
  399. $timeStampAntrol = 0;
  400. if ($antrean->antreanpanggil < $urutanAngka) {
  401. $selectedTime = $jam[0] . ":30";
  402.  
  403. if ($antrean->antreanpanggil <= 1) {
  404. $minutes = 7;
  405. } else {
  406. $minutes = 7 * $antrean->antreanpanggil;
  407. }
  408. $minuterProcess = "+" . $minutes . "minutes";
  409.  
  410. $endTime = strtotime($minuterProcess, strtotime($selectedTime));
  411. $newDate = $tanggalperiksa . " " . date('H:i:s', $endTime);
  412. $convertToMicrotime = $this->convertToMilisecond($newDate);
  413. list($jamNew, $menitNew, $detikNew) = explode(":", $newDate);
  414.  
  415. // $dt = new DateTime($formatingNew);
  416. // $timeStampAntrol = $dt->getTimestamp();
  417.  
  418. // $jam = intdiv((($urutanAngka - ($antrean->antreanpanggil ?: 0)) * 7), 60);
  419. // $menit = (($urutanAngka - ($antrean->antreanpanggil ?: 0)) * 7) % 60;
  420.  
  421. // $menit = str_pad($menit, 2, '0', STR_PAD_LEFT);
  422. // $jam = str_pad(8 + $jam, 2, '0', STR_PAD_LEFT);
  423.  
  424. $estimasi_dilayani = $tanggal . ' ' . $jamNew . ':' . $menitNew . ':' . $detikNew;
  425. }
  426.  
  427. $kuotaJKN = $antrean->kuota_mjkn - intval($antrean->totalantrean);
  428. $response = array(
  429. "nomorantrean" => $nourut_poli,
  430. // "antreanterpanggil" => $antrean->antreanpanggil == null ? 0 : $antrean->antreanpanggil,
  431. "angkaantrean" => $urutanAngka,
  432. "kodebooking" => $kd_kunjungan,
  433. "norm" => $norm,
  434. "namapoli" => $this->unit->nama_unit,
  435. "namadokter" => $this->dokter->nama_pegawai,
  436. "estimasidilayani" => $convertToMicrotime,
  437. // "estimasidilayani" => strtotime($estimasi_dilayani) * 1000,
  438. "sisakuotajkn" => $kuotaJKN < 0 ? 0 : $kuotaJKN,
  439. "kuotajkn" => (int)$antrean->kuota_mjkn,
  440. "sisakuotanonjkn" => 0,
  441. "kuotanonjkn" => 0,
  442. "keterangan" => "Peserta harap 60 menit lebih awal guna pencatatan administrasi."
  443. );
  444. $this->db->trans_commit();
  445. $postLog = [
  446. 'data' => json_encode($antrean),
  447. 'respon' => json_encode($response)
  448. ];
  449. $this->Api_m->storeLogAntrol($postLog);
  450. $this->send_response($response, 200, "Ok");
  451. } catch (\Exception $e) {
  452. $this->db->trans_rollback();
  453. $data = [
  454. 'nomorkartu' => $this->post("nomorkartu"),
  455. 'nik' => $this->post("nik"),
  456. 'nohp' => $this->post("nohp"),
  457. 'kodepoli' => $this->post("kodepoli"),
  458. 'norm' => $this->post("norm"),
  459. 'tanggalperiksa' => $this->post("tanggalperiksa"),
  460. 'kodedokter' => $this->post("kodedokter"),
  461. 'jampraktek' => $this->post("jampraktek"),
  462. 'jeniskunjungan' => $this->post("jeniskunjungan"),
  463. 'nomorreferensi' => $this->post("nomorreferensi")
  464. ];
  465. $post = [
  466. 'data' => json_encode($data),
  467. 'respon' => json_encode($e)
  468. ];
  469. $this->Api_m->storeLogAntrol($post);
  470. $this->send_response(null, 201, "Terjadi Kesalahan pada server");
  471. }
  472. }
  473.  
  474. public function sisa_antrean_post()
  475. {
  476. $kode_booking = $this->post("kodebooking");
  477. $data_antrean = $this->Api_m->sisa_antrean($kode_booking);
  478.  
  479. if ($data_antrean == null) {
  480. $this->send_response(null, 201, "Antrean tidak ditemukan");
  481. }
  482.  
  483. $response = array(
  484. "nomorantrean" => $data_antrean->kd_unit_bpjs . '-' . $data_antrean->antrian,
  485. "namapoli" => $data_antrean->namapoli,
  486. "namadokter" => $data_antrean->namadokter,
  487. "sisaantrean" => $data_antrean->sisaantrean,
  488. "antreanpanggil" => $data_antrean->antreanpanggil ?: '-',
  489. "waktutunggu" => $data_antrean->sisaantrean * 1000 * 60 * 60 * 15,
  490. "keterangan" => ""
  491. );
  492. $this->send_response($response, 200, "OK");
  493. }
  494.  
  495. public function batal_antrean_post()
  496. {
  497. $kode_booking = $this->post("kodebooking");
  498. $keterangan = $this->post("keterangan");
  499.  
  500. $kunjungan = $this->Api_m->get_kunjungan($kode_booking);
  501.  
  502. if ($kunjungan == null) {
  503. $this->send_response(null, 201, "Antrean tidak ditemukan");
  504. }
  505.  
  506. if ($kunjungan->status == "terlayani") {
  507. $this->send_response(null, 201, "Antrean sudah dilayanai, antrean tidak dapat dibatalkan");
  508. }
  509.  
  510. if ($kunjungan->deleted == 1) {
  511. $this->send_response(null, 201, "Antrean tidak ditemukan atau sudah dibatalkan");
  512. }
  513.  
  514. $delete_kunjungan = $this->Api_m->batal_antrean($kode_booking, $this->user->user_id);
  515. $this->Api_m->batalAntreanPoli($kode_booking);
  516. if ($delete_kunjungan) {
  517. $this->send_response(null, 200, "OK");
  518. } else {
  519. $this->send_response(null, 201, "Gagal batal antrean");
  520. }
  521. }
  522.  
  523. public function checkin_post()
  524. {
  525. $kodebooking = $this->post("kodebooking"); // kodebookin = kd_kunjungan
  526.  
  527. $kunjungan = $this->Api_m->get_kunjungan($kodebooking);
  528.  
  529. if ($kunjungan == null) {
  530. $this->send_response(null, 201, "Antrean tidak ditemukan");
  531. }
  532.  
  533. $waktu = $this->post("waktu"); // in miliseconds
  534. $seconds = $waktu / 1000;
  535. $waktu_checkin = date("Y-m-d H:i:s", $seconds);
  536.  
  537. $check_in = $this->Api_m->check_in($kodebooking, $waktu_checkin);
  538.  
  539. if ($check_in) {
  540. $this->send_response(null, 200, "OK");
  541. }
  542. $this->send_response(['kodebooking' => $kodebooking, 'waktu' => $waktu], 201, "Checkin Gagal");
  543. }
  544.  
  545. function jadwal_operasi_rs_post()
  546. {
  547. $tanggalawal = date('Y-m-d', strtotime($this->post("tanggalawal")));
  548. $tanggalakhir = date('Y-m-d', strtotime($this->post("tanggalakhir")));
  549.  
  550. if (!$this->date_validation($tanggalawal)) {
  551. $this->send_response(null, 201, "Format Tanggal Tidak Sesuai, format yang benar adalah yyyy-mm-dd");
  552. }
  553.  
  554. if (!$this->date_validation($tanggalawal)) {
  555. $this->send_response(null, 201, "Format Tanggal Tidak Sesuai, format yang benar adalah yyyy-mm-dd");
  556. }
  557.  
  558. if ($tanggalakhir < $tanggalawal) {
  559. $this->send_response(null, 201, "Tanggal akhir tidak boleh lebih kecil dari tanggal awal");
  560. }
  561.  
  562. $jadwal_operasi = $this->Api_m->get_jadwal_operasi([
  563. 'tanggaloperasi >= ' => $tanggalawal,
  564. 'tanggaloperasi <=' => $tanggalakhir
  565. ])->result();
  566.  
  567. $data = array("list" => $jadwal_operasi);
  568.  
  569. $this->send_response($data, 200, "OK");
  570. }
  571.  
  572. function jadwal_operasi_pasien_post()
  573. {
  574. $nopeserta = $this->post("nopeserta");
  575. $pasien = $this->Api_m->get_data('data_pasien', '*', ['nomor_asuransi' => $nopeserta, 'deleted' => 0])->row();
  576.  
  577. if ($pasien == null) {
  578. $this->send_response(null, 201, "Data pasien ini tidak ditemukan, silahkan Melakukan Registrasi Pasien Baru");
  579. }
  580.  
  581. $jadwal_operasi = $this->Api_m->jadwal_operasi_pasien($pasien->nomor_rm)->result();
  582.  
  583. foreach ($jadwal_operasi as $jadwal) {
  584. $jadwal->terlaksana = $jadwal->status_operasi == 'selesai' ? 1 : 0;
  585. unset($jadwal->status_operasi);
  586. }
  587.  
  588. $jadwal = array(
  589. array(
  590. "kodebooking" => "123456ZXC",
  591. "tanggaloperasi" => "2019-12-11",
  592. "jenistindakan" => "operasi gigi",
  593. "kodepoli" => "001",
  594. "namapoli" => "Poli Bedah Mulut",
  595. "terlaksana" => 0
  596. ),
  597. array()
  598. );
  599. $this->send_response($jadwal_operasi, 200, "OK");
  600. }
  601.  
  602. public function setdilayani_post()
  603. {
  604. $kd_kunjungan = $this->post("kodebooking");
  605. $this->Api_m->set_dilayani($kd_kunjungan);
  606. $this->send_response(null, 200, "OK");
  607. }
  608.  
  609.  
  610. public function no_validation($no, $whatnumber, $length, $not_valid_message)
  611. {
  612. if (empty(trim($no))) {
  613. $this->send_response(null, 201, $whatnumber . ' Belum Diisi');
  614. }
  615. if (!ctype_digit($no) or strlen($no) != $length) {
  616. $this->send_response(null, 201, $not_valid_message);
  617. }
  618. }
  619.  
  620. public function check_if_empty($var, $whatvar, $ifemptymessage = null)
  621. {
  622. if (empty(trim($var))) {
  623. $this->send_response(null, $whatvar . ($ifemptymessage ?? ' Belum Diisi'), 201);
  624. }
  625. }
  626.  
  627. public function date_validation($date, $format = 'Y-m-d')
  628. {
  629. $date_temp = DateTime::createFromFormat($format, $date);
  630. return $date_temp && $date_temp->format($format) === $date;
  631. }
  632.  
  633. public function unit_validation($kode_unit)
  634. {
  635. if ($kode_unit == null) {
  636. $this->send_response(null, 201, 'Poli tidak boleh kosong');
  637. }
  638. $this->unit = $this->Api_m->get_unit($kode_unit);
  639. if ($this->unit == null) {
  640. $this->send_response(null, 201, 'Poli tidak ditemukan');
  641. }
  642. }
  643.  
  644. public function dokter_validation($kode_dokter)
  645. {
  646. if ($kode_dokter == null) {
  647. $this->send_response(null, 201, 'Dokter tidak boleh kosong');
  648. }
  649. $this->dokter = $this->Api_m->get_dokter($kode_dokter);
  650. if ($this->dokter == null) {
  651. $this->send_response(null, 201, 'Dokter tidak ditemukan');
  652. }
  653. }
  654.  
  655. public function send_response($data, $kode, $message)
  656. {
  657. $this->response(array(
  658. "response" => $data,
  659. "metadata" => array(
  660. "message" => $message,
  661. "code" => $kode
  662. )
  663. ), 200);
  664. }
  665.  
  666. public function referensi_poli_get()
  667. {
  668. $this->load->helper('bpjs_antrol');
  669.  
  670. $headers[] = "Content-Type: application/json; charset=utf-8";
  671.  
  672. $endpoint = '/ref/poli';
  673. $url = $this->base_url . $endpoint;
  674. $req_method = 'GET';
  675. // echo vclaim_request($req_method, $url, $headers);
  676. $decoded_response = vclaim_request($req_method, $url, $headers);
  677. $this->send_response($decoded_response, 200, 'OK');
  678. }
  679.  
  680. public function referensi_dokter_get()
  681. {
  682. $this->load->helper('bpjs_antrol');
  683. $headers[] = "Content-Type: application/json; charset=utf-8";
  684. $unit = $this->input->get('unit');
  685. $tanggal = $this->input->get('tanggal');
  686. $endpoint = '/jadwaldokter/kodepoli/' . $unit . '/tanggal/' . $tanggal;
  687. $url = $this->base_url . $endpoint;
  688. $req_method = 'GET';
  689. // echo vclaim_request($req_method, $url, $headers);
  690. $decoded_response = vclaim_request($req_method, $url, $headers);
  691.  
  692. $this->send_response($decoded_response, 200, 'OK');
  693. }
  694.  
  695. public function pasien_baru()
  696. {
  697. $this->load->helper('bpjs_antrol');
  698.  
  699. $headers[] = "Content-Type: application/json; charset=utf-8";
  700.  
  701. $endpoint = '/jadwaldokter/kodepoli/' . $unit . '/tanggal/' . $tanggal;
  702. $url = $this->base_url . $endpoint;
  703. $req_method = 'GET';
  704. // echo vclaim_request($req_method, $url, $headers);
  705. $decoded_response = vclaim_request($req_method, $url, $headers);
  706. $this->send_response($decoded_response, 200, 'OK');
  707. }
  708.  
  709. public function convertToMilisecond($time)
  710. {
  711. date_default_timezone_set('Asia/Bangkok');
  712. if (!preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/', $time)) {
  713. throw new Exception("Invalid date-time format. Please use YYYY-MM-DD HH:II:SS");
  714. }
  715.  
  716.  
  717. // The date and time string
  718. $date_string = $time;
  719.  
  720. // Create a DateTime object from the date and time string
  721. $date = new DateTime($date_string);
  722.  
  723. // Get the Unix timestamp in seconds
  724. $timestamp_seconds = $date->getTimestamp();
  725.  
  726. // Convert the Unix timestamp to milliseconds
  727. $timestamp_milliseconds = $timestamp_seconds * 1000;
  728.  
  729. // Output the timestamp in milliseconds
  730. return $timestamp_milliseconds;
  731. }
  732. }
  733.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement