<?php

defined('BASEPATH') or exit('No direct script access allowed');



class Ranapperdokter extends CI_Controller

{

    public function dataranapperdokter()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AKHIR'])) {

            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];
            // Mengonversi format tanggal ke dd/mm/yyyy

            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));



            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs/inap_all_perdpjp',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir
                ),
            ));



            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON

            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {

                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }


    public function referensidokter()
    {
        // Alamat API eksternal yang akan dihubungi
        //$apiUrl = 'http://103.255.241.146/api/service_rs/ref_dokter';

        // Menginisialisasi cURL
        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://103.255.241.146/api/service_rs/ref_dokter',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0, // Waktu tunggu permintaan selama 30 detik
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            // Metode diatur ke POST sesuai kebutuhan API backend
            CURLOPT_CUSTOMREQUEST => 'POST',
            // Mengirim body kosong secara eksplisit menggunakan sintaks array() yang kompatibel
            CURLOPT_POSTFIELDS => array(),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl); // Menangkap error dari cURL jika ada

        curl_close($curl);

        // Selalu atur header Content-Type agar browser tahu ini adalah JSON
        header('Content-Type: application/json');

        if ($err) {
            // Jika terjadi error pada cURL (misal: tidak bisa terhubung ke API)
            echo json_encode(['error' => 'Gagal terhubung ke server API eksternal: ' . $err]);
        } elseif ($response) {
            // Cek apakah respons adalah JSON yang valid sebelum dikirim
            json_decode($response);
            if (json_last_error() !== JSON_ERROR_NONE) {
                echo json_encode(['error' => 'Respons dari API eksternal bukan JSON yang valid.']);
            } else {
                // Kirimkan kembali data JSON yang benar dari API
                echo $response;
            }
        } else {
            // Jika tidak ada respons sama sekali dari API
            echo json_encode(['error' => 'Tidak ada respons dari server API eksternal.']);
        }
    }




    // public function unduhdataranapperdokter()
    // {
    //     $nm_user = $this->session->userdata('nm_user');
    //     $kd_user = $this->session->userdata('kd_user');
    //     $tanggal_awal = $this->input->get('TANGGAL_AWAL');
    //     $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');

    //     // Ubah format tanggal jika diperlukan
    //     $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
    //     $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

    //     // Memanggil API menggunakan cURL
    //     $curl = curl_init();
    //     curl_setopt_array($curl, array(
    //         CURLOPT_URL => '103.255.241.146/api/service_rs/inap_all_perdpjp',
    //         CURLOPT_RETURNTRANSFER => true,
    //         CURLOPT_ENCODING => '',
    //         CURLOPT_MAXREDIRS => 10,
    //         CURLOPT_TIMEOUT => 0,
    //         CURLOPT_FOLLOWLOCATION => true,
    //         CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    //         CURLOPT_CUSTOMREQUEST => 'POST',
    //         CURLOPT_POSTFIELDS => array(
    //             'TANGGAL_AWAL' => $tanggal_awali,
    //             'TANGGAL_AKHIR' => $tanggal_akhiri
    //         ),
    //     ));

    //     $response = curl_exec($curl);
    //     curl_close($curl);

    //     //log harian download
    //     $datai = [
    //         "NIP_PETUGAS" => $kd_user,
    //         "CATATAN" => "Akun " . $nm_user . " berhasil download Data Pasien RANAP TOTAL PER DPJP."

    //     ];
    //     $curl = curl_init();
    //     curl_setopt_array($curl, [
    //         CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
    //         CURLOPT_RETURNTRANSFER => true,
    //         CURLOPT_ENCODING => '',
    //         CURLOPT_MAXREDIRS => 10,
    //         CURLOPT_TIMEOUT => 0,
    //         CURLOPT_FOLLOWLOCATION => true,
    //         CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    //         CURLOPT_CUSTOMREQUEST => 'POST',
    //         CURLOPT_POSTFIELDS => $datai,
    //     ]);

    //     $responsee = curl_exec($curl);
    //     curl_close($curl);

    //     if ($response) {
    //         $data = json_decode($response, true)['response'];

    //         if (isset($data['response']) && is_array($data['response'])) {

    //             $data_semua = $data['response'];
    //             $data_hasil_filter = array();

    //             // 2. Lakukan proses filter di sisi server (PHP)
    //             if ($kd_dokter_dipilih && !empty($kd_dokter_dipilih)) {
    //                 // Jika ada dokter spesifik yang dipilih
    //                 foreach ($data_semua as $item) {
    //                     // Cocokkan NIP dari data pasien dengan NIP yang dipilih dari URL
    //                     if (isset($item['nip_dokter']) && trim($item['nip_dokter']) == trim($kd_dokter_dipilih)) {
    //                         $data_hasil_filter[] = $item;
    //                     }
    //                 }
    //             } else {
    //                 // Jika tidak ada dokter yang dipilih, gunakan semua data
    //                 $data_hasil_filter = $data_semua;
    //             }
    //         }

    //         // Load library PhpSpreadsheet
    //         //require_once APPPATH . 'third_party/PhpSpreadsheet/src/Bootstrap.php';

    //         // Load library PhpSpreadsheet
    //         require_once APPPATH . '../vendor/autoload.php';

    //         $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
    //         $sheet = $spreadsheet->getActiveSheet();

    //         // Set header kolom
    //         $sheet->setCellValue('A1', 'Kode Registrasi');
    //         $sheet->setCellValue('B1', 'Kode RM');
    //         $sheet->setCellValue('C1', 'Kode Pendaftaran');
    //         $sheet->setCellValue('D1', 'Kode Cara Masuk');
    //         $sheet->setCellValue('E1', 'Kode Pembayaran');
    //         $sheet->setCellValue('F1', 'Tanggal Regist');
    //         $sheet->setCellValue('G1', 'Jam Regist');
    //         $sheet->setCellValue('H1', 'Tanggal Keluar');
    //         $sheet->setCellValue('I1', 'Jam Keluar');
    //         $sheet->setCellValue('J1', 'Kode Jenis Pasien');
    //         $sheet->setCellValue('K1', 'Kode Poliklinik');
    //         $sheet->setCellValue('L1', 'NIP Dokter');
    //         $sheet->setCellValue('M1', 'Kode Ruang');
    //         $sheet->setCellValue('N1', 'Kode Status Periksa');
    //         $sheet->setCellValue('O1', 'Total');
    //         $sheet->setCellValue('P1', 'Total Pribadi');
    //         $sheet->setCellValue('Q1', 'Total Penjamin');
    //         $sheet->setCellValue('R1', 'NIP Petugas');
    //         $sheet->setCellValue('S1', 'No Antrian');
    //         $sheet->setCellValue('T1', 'Nama Pasien');
    //         $sheet->setCellValue('U1', 'Alamat');
    //         $sheet->setCellValue('V1', 'Kode Desa');
    //         $sheet->setCellValue('W1', 'Nama Pendaftaran');
    //         $sheet->setCellValue('X1', 'Nama Cara Masuk');
    //         $sheet->setCellValue('Y1', 'Nama Pembayaran');
    //         $sheet->setCellValue('Z1', 'Nama Jenis Pasien');
    //         $sheet->setCellValue('AA1', 'Nama Poliklinik');
    //         $sheet->setCellValue('AB1', 'Kode Grup Ruang');
    //         $sheet->setCellValue('AC1', 'Nama Dokter');
    //         $sheet->setCellValue('AD1', 'Nama Status Periksa');
    //         $sheet->setCellValue('AE1', 'DPJP');

    //         // Isi data
    //         $row = 2;
    //         foreach ($data as $item) {
    //             $sheet->setCellValue('A' . $row, $item['kd_registrasi']);
    //             $sheet->setCellValue('B' . $row, $item['kd_rekam_medis']);
    //             $sheet->setCellValue('C' . $row, $item['kd_pendaftaran']);
    //             $sheet->setCellValue('D' . $row, $item['kd_cara_masuk']);
    //             $sheet->setCellValue('E' . $row, $item['kd_pembayaran']);
    //             $sheet->setCellValue('F' . $row, $item['tgl_registrasi']);
    //             $sheet->setCellValue('G' . $row, $item['jam_registrasi']);
    //             $sheet->setCellValue('H' . $row, $item['tgl_keluar']);
    //             $sheet->setCellValue('I' . $row, $item['jam_keluar']);
    //             $sheet->setCellValue('J' . $row, $item['kd_jenis_pasien']);
    //             $sheet->setCellValue('K' . $row, $item['kd_poliklinik']);
    //             $sheet->setCellValue('L' . $row, $item['nip_dokter']);
    //             $sheet->setCellValue('M' . $row, $item['kd_ruang']);
    //             $sheet->setCellValue('N' . $row, $item['kd_status_periksa']);
    //             $sheet->setCellValue('O' . $row, $item['total']);
    //             $sheet->setCellValue('P' . $row, $item['total_pribadi']);
    //             $sheet->setCellValue('Q' . $row, $item['total_penjamin']);
    //             $sheet->setCellValue('R' . $row, $item['nip_petugas']);
    //             $sheet->setCellValue('S' . $row, $item['no_antri']);
    //             $sheet->setCellValue('T' . $row, $item['nm_pasien']);
    //             $sheet->setCellValue('U' . $row, $item['alamat']);
    //             $sheet->setCellValue('V' . $row, $item['kd_desa']);
    //             $sheet->setCellValue('W' . $row, $item['nm_pendaftaran']);
    //             $sheet->setCellValue('X' . $row, $item['nm_cara_masuk']);
    //             $sheet->setCellValue('Y' . $row, $item['nm_pembayaran']);
    //             $sheet->setCellValue('Z' . $row, $item['nm_jenis_pasien']);
    //             $sheet->setCellValue('AA' . $row, $item['nm_poliklinik']);
    //             $sheet->setCellValue('AB' . $row, $item['kd_grup_ruang']);
    //             $sheet->setCellValue('AC' . $row, $item['nm_dokter']);
    //             $sheet->setCellValue('AD' . $row, $item['nm_status_periksa']);
    //             $sheet->setCellValue('AE' . $row, $item['dpjp']);
    //             $row++;
    //         }

    //         // Mengatur header untuk unduhan
    //         header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    //         header('Content-Disposition: attachment;filename="data_pasien_RANAP_ALL_PERDPJP.xlsx"');
    //         header('Cache-Control: max-age=0');

    //         // Output ke file
    //         $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
    //         $writer->save('php://output');
    //         exit();
    //     } else {
    //         echo json_encode(['error' => 'Tidak ada data yang ditemukan.']);
    //     }
    // }



    public function unduhdataranapperdokter1()
    {
        // 1. Ambil semua parameter yang diperlukan dari URL
        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');
        // PERBAIKAN: Ambil NAMA dokter, bukan NIP (KD_DOKTER)
        $nm_dokter_dipilih = $this->input->get('NM_DOKTER');

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API untuk mendapatkan SEMUA data pasien
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://103.255.241.146/api/service_rs/inap_all_perdpjp',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri
            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download data RANAP PERDOKTER DPJP."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);

        // ... (kode log harian Anda) ...

        if ($response) {
            $decoded_response = json_decode($response, true);

            if (isset($decoded_response['response']) && is_array($decoded_response['response'])) {

                $data_semua = $decoded_response['response'];
                $data_hasil_filter = array();

                // 2. PERBAIKAN: Lakukan proses filter berdasarkan NAMA DOKTER dan DPJP
                if ($nm_dokter_dipilih && !empty(trim($nm_dokter_dipilih)) && trim($nm_dokter_dipilih) !== '-- Tampilkan Semua Dokter --') {
                    foreach ($data_semua as $item) {
                        // Cocokkan DPJP dari data pasien dengan NAMA dokter yang dipilih
                        if (isset($item['dpjp']) && trim($item['dpjp']) == trim($nm_dokter_dipilih)) {
                            $data_hasil_filter[] = $item;
                        }
                    }
                } else {
                    // Jika tidak ada dokter yang dipilih, gunakan semua data
                    $data_hasil_filter = $data_semua;
                }

                // 3. Buat file Excel dari data yang SUDAH DIFILTER
                require_once APPPATH . '../vendor/autoload.php';

                $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
                $sheet = $spreadsheet->getActiveSheet();

                // Set header kolom lengkap
                $sheet->setCellValue('A1', 'Kode Registrasi');
                $sheet->setCellValue('B1', 'Kode RM');
                $sheet->setCellValue('C1', 'Kode Pendaftaran');
                $sheet->setCellValue('D1', 'Kode Cara Masuk');
                $sheet->setCellValue('E1', 'Kode Pembayaran');
                $sheet->setCellValue('F1', 'Tanggal Regist');
                $sheet->setCellValue('G1', 'Jam Regist');
                $sheet->setCellValue('H1', 'Tanggal Keluar');
                $sheet->setCellValue('I1', 'Jam Keluar');
                $sheet->setCellValue('J1', 'Kode Jenis Pasien');
                $sheet->setCellValue('K1', 'Kode Poliklinik');
                $sheet->setCellValue('L1', 'NIP Dokter');
                $sheet->setCellValue('M1', 'Kode Ruang');
                $sheet->setCellValue('N1', 'Kode Status Periksa');
                $sheet->setCellValue('O1', 'Total');
                $sheet->setCellValue('P1', 'Total Pribadi');
                $sheet->setCellValue('Q1', 'Total Penjamin');
                $sheet->setCellValue('R1', 'NIP Petugas');
                $sheet->setCellValue('S1', 'No Antrian');
                $sheet->setCellValue('T1', 'Nama Pasien');
                $sheet->setCellValue('U1', 'Alamat');
                $sheet->setCellValue('V1', 'Kode Desa');
                $sheet->setCellValue('W1', 'Nama Pendaftaran');
                $sheet->setCellValue('X1', 'Nama Cara Masuk');
                $sheet->setCellValue('Y1', 'Nama Pembayaran');
                $sheet->setCellValue('Z1', 'Nama Jenis Pasien');
                $sheet->setCellValue('AA1', 'Nama Poliklinik');
                $sheet->setCellValue('AB1', 'Kode Grup Ruang');
                $sheet->setCellValue('AC1', 'Nama Dokter');
                $sheet->setCellValue('AD1', 'Nama Status Periksa');
                $sheet->setCellValue('AE1', 'DPJP');

                // Isi data dari $data_hasil_filter
                $row = 2;
                foreach ($data_hasil_filter as $item) {
                    $sheet->setCellValue('A' . $row, $item['kd_registrasi']);
                    $sheet->setCellValue('B' . $row, $item['kd_rekam_medis']);
                    $sheet->setCellValue('C' . $row, $item['kd_pendaftaran']);
                    $sheet->setCellValue('D' . $row, $item['kd_cara_masuk']);
                    $sheet->setCellValue('E' . $row, $item['kd_pembayaran']);
                    $sheet->setCellValue('F' . $row, $item['tgl_registrasi']);
                    $sheet->setCellValue('G' . $row, $item['jam_registrasi']);
                    $sheet->setCellValue('H' . $row, $item['tgl_keluar']);
                    $sheet->setCellValue('I' . $row, $item['jam_keluar']);
                    $sheet->setCellValue('J' . $row, $item['kd_jenis_pasien']);
                    $sheet->setCellValue('K' . $row, $item['kd_poliklinik']);
                    $sheet->setCellValue('L' . $row, $item['nip_dokter']);
                    $sheet->setCellValue('M' . $row, $item['kd_ruang']);
                    $sheet->setCellValue('N' . $row, $item['kd_status_periksa']);
                    $sheet->setCellValue('O' . $row, $item['total']);
                    $sheet->setCellValue('P' . $row, $item['total_pribadi']);
                    $sheet->setCellValue('Q' . $row, $item['total_penjamin']);
                    $sheet->setCellValue('R' . $row, $item['nip_petugas']);
                    $sheet->setCellValue('S' . $row, $item['no_antri']);
                    $sheet->setCellValue('T' . $row, $item['nm_pasien']);
                    $sheet->setCellValue('U' . $row, $item['alamat']);
                    $sheet->setCellValue('V' . $row, $item['kd_desa']);
                    $sheet->setCellValue('W' . $row, $item['nm_pendaftaran']);
                    $sheet->setCellValue('X' . $row, $item['nm_cara_masuk']);
                    $sheet->setCellValue('Y' . $row, $item['nm_pembayaran']);
                    $sheet->setCellValue('Z' . $row, $item['nm_jenis_pasien']);
                    $sheet->setCellValue('AA' . $row, $item['nm_poliklinik']);
                    $sheet->setCellValue('AB' . $row, $item['kd_grup_ruang']);
                    $sheet->setCellValue('AC' . $row, $item['nm_dokter']);
                    $sheet->setCellValue('AD' . $row, $item['nm_status_periksa']);
                    $sheet->setCellValue('AE' . $row, $item['dpjp']);
                    $row++;
                }

                // Mengatur header untuk unduhan
                header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
                header('Content-Disposition: attachment;filename="data_pasien_RANAP_PER_DPJP.xlsx"');
                header('Cache-Control: max-age=0');

                // Output ke file
                $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
                $writer->save('php://output');
                exit();
            } else {
                echo "Format respons API tidak valid atau tidak ada data.";
            }
        } else {
            echo "Gagal menghubungi API atau tidak ada data yang ditemukan.";
        }
    }
}
