<?php
class RumahSakitClient extends BackgroundBaseClient
{
    public function getRsIdsDenganTempatTidur()
    {
        $method = "GET";
        $path = "/sirsservice/kpk/ketersediaanTT/all";
        $params = [];

        //region LOG Definition
        $this->setApiName("RumahSakit-get_rs_ids_dengan_tempat_tidur");
        //endregion

        $result = $this->execute($method, $path, $params);
        $ids = [];

        foreach ($result as $res) {
            array_push($ids, $res["KodeRS"]);
        }
        return $ids;
    }

    public function getDetailKetersedianTempatTidur($nprs)
    {
        $method = "GET";
        $path = "/sirsservice/kpk/ketersediaanTT/$nprs";
        $params = [];

        //region LOG Definition
        $this->setApiName("RumahSakit-get_detail_ketersediaan_tempat_tidur");
        $this->setLogParams([
            'nprs' => $nprs
        ]);
        //endregion

        return $this->execute($method, $path, $params);
    }

    public function getAll()
    {

        //region LOG Definition
        $this->setApiName("RumahSakit-get_all");
        //endregion

        return $this->execute("GET", "/sirsservice/kpk/profil/all", []);
    }

    public function profile($nprs)
    {
        $method = "GET";

        $path = "/sirsservice/kpk/profil/" . $nprs;
        $params = [];

        //region LOG Definition
        $this->setApiName("RumahSakit-profile");
        $this->setLogParams([
            'nprs' => $nprs
        ]);
        //endregion

        return $this->execute($method, $path, $params);
    }

    public function updateAllProfile()
    {
        $this->startTime = microtime(true);
        $all_rs = [];

        try {
            $all_rs = $this->getAll();
        } catch (\Exception $e) {           
			throw $e;
        }

        $this->objectsProcessed = count($all_rs);

        foreach ($all_rs as $key => $rs) {
            $this->updateRs($rs);
        }

        $this->endTime = microtime(true);
    }

    private function updateRs($rs)
    {
        $rumahSakit = RumahSakit::findFirst("kode_rs = '" . $rs["KodeRS"] . "'");
        if (!$rumahSakit) {
            $rumahSakit = new RumahSakit();
            $rumahSakit->created = "now()";
        }

        $rumahSakit->kode_rs = $rs["KodeRS"];
        $rumahSakit->nama = $rs["NamaRS"];
        $rumahSakit->jenis_rs = $rs["JenisRS"];
        $rumahSakit->direktur_rs = $rs["DirekturRS"];
        $rumahSakit->alamat_rs = $rs["AlamatRS"];
        $rumahSakit->kab_kota = $rs["NamaKabupatenKota"];
        $rumahSakit->telepon = $rs["TELEPON"];
        $rumahSakit->tt_vvip = $rs["TempatTidur"]["VVIP"];
        $rumahSakit->tt_vip = $rs["TempatTidur"]["VIP"];
        $rumahSakit->tt_i = $rs["TempatTidur"]["kelas1"];
        $rumahSakit->tt_ii = $rs["TempatTidur"]["kelas2"];
        $rumahSakit->tt_iii = $rs["TempatTidur"]["kelas3"];
        $rumahSakit->tt_icu = $rs["TempatTidur"]["ICU"];
        $rumahSakit->tt_nicu = $rs["TempatTidur"]["NICU"];
        $rumahSakit->tt_iccu = $rs["TempatTidur"]["ICCU"];
        $rumahSakit->tt_igd = $rs["TempatTidur"]["TTRuangIGD"];
        $rumahSakit->tt_bayi = $rs["TempatTidur"]["TTRuangBayi"];

        $rumahSakit->umum = $rs["Tenaga"]["DrUmum"];
        $rumahSakit->drg = $rs["Tenaga"]["Drg"];
        $rumahSakit->drg_sp_karang_gigi = $rs["Tenaga"]["DrgSpKarangGigi"];
        $rumahSakit->drg_sp_bedah_mulut = $rs["Tenaga"]["DrgSpBedahMulut"];
        $rumahSakit->ners = $rs["Tenaga"]["Ners"];
        $rumahSakit->perawat_gigi = $rs["Tenaga"]["PerawatGigi"];
        $rumahSakit->perawat_bedah = $rs["Tenaga"]["PerawatBedah"];
        $rumahSakit->perawat_maternitas = $rs["Tenaga"]["PerawatMaternitas"];
        $rumahSakit->perawat_anak = $rs["Tenaga"]["PerawatAnak"];
        $rumahSakit->perawat_komunitas = $rs["Tenaga"]["PerawatKomunitas"];
        $rumahSakit->perawat_lainnya = $rs["Tenaga"]["PerawatLainnya"];
        $rumahSakit->apoteker = $rs["Tenaga"]["Apoteker"];
        $rumahSakit->perawat_kes_jiwa = $rs["Tenaga"]["Psikologi"];

        $rumahSakit->latitude = $rs["TitikKoordinat"]["Y"];
        $rumahSakit->longitude = $rs["TitikKoordinat"]["X"];
        $rumahSakit->last_update = "now()";
        $rumahSakit->provinsi = $rs["NamaPropinsi"];
        $rumahSakit->kelas = $rs["KelasRS"];

        $rumahSakit->spa = $rs["Tenaga"]["SpA"];
        $rumahSakit->spog = $rs["Tenaga"]["SpOg"];
        $rumahSakit->spd = $rs["Tenaga"]["SpD"];
        $rumahSakit->spb = $rs["Tenaga"]["SpB"];
        $rumahSakit->sprad = $rs["Tenaga"]["SpRad"];
        $rumahSakit->sprm = $rs["Tenaga"]["SpRm"];
        $rumahSakit->span = $rs["Tenaga"]["SpAn"];
        $rumahSakit->spjp = $rs["Tenaga"]["SpJp"];
        $rumahSakit->spm = $rs["Tenaga"]["SpM"];
        $rumahSakit->sptht = $rs["Tenaga"]["SpTht"];
        $rumahSakit->spkj = $rs["Tenaga"]["SpKj"];
        $rumahSakit->sppk = $rs["Tenaga"]["SpPk"];
        $rumahSakit->sps = $rs["Tenaga"]["SpS"];
        $rumahSakit->spp = $rs["Tenaga"]["SpP"];
        $rumahSakit->spokupasi = $rs["Tenaga"]["SpOkupasi"];
        $rumahSakit->spu = $rs["Tenaga"]["SpU"];
        $rumahSakit->spkl = $rs["Tenaga"]["SpKl"];
        $rumahSakit->sporthopedi = $rs["Tenaga"]["SpOrthopedi"];
        $rumahSakit->spf = $rs["Tenaga"]["SpF"];
        $rumahSakit->sppsikiatri = $rs["Tenaga"]["SpPsikiatri"];
        $rumahSakit->spof = $rs["Tenaga"]["SpOf"];
        $rumahSakit->sppa = $rs["Tenaga"]["SpPa"];
        $rumahSakit->splainnya = $rs["Tenaga"]["SpLainnya"];
        $rumahSakit->subspesialis = $rs["Tenaga"]["SubSpesialis"];
        $rumahSakit->drg_sp_anak = $rs["Tenaga"]["DrgSpAnak"];
        $rumahSakit->drg_sp_konservasi = $rs["Tenaga"]["DrgSpKonservasi"];
        $rumahSakit->drg_sp_gigi_tiruan = $rs["Tenaga"]["DrgSpGigitiruan"];
        $rumahSakit->drg_sp_penyakit_mulut = $rs["Tenaga"]["DrgSpPenyakitMulut"];
        $rumahSakit->drg_sp_periodonsia = $rs["Tenaga"]["DrgSpPeriodonsia"];
        $rumahSakit->drg_sp_lainnya = $rs["Tenaga"]["DrgSpLainnya"];
        $rumahSakit->bidan_pendidik = $rs["Tenaga"]["BidanPendidik"];
        $rumahSakit->bidan_klinik = $rs["Tenaga"]["BidanKlinik"];
        $rumahSakit->bidan_lainnya = $rs["Tenaga"]["BidanLainnya"] ?: 0;

        $rumahSakit->jml_tenaga_medis = $rs["Tenaga"]["Apoteker"] ?: 0 + $rs["Tenaga"]["AnalisFarmasi"] ?: 0 + $rs["Tenaga"]["Radiografer"] ?: 0
            + $rs["Tenaga"]["Radioterapis"] ?: 0 + $rs["Tenaga"]["Elektromedis"] ?: 0 + $rs["Tenaga"]["TeknisiGigi"] ?: 0
            + $rs["Tenaga"]["AnalisKesehatan"] ?: 0 + $rs["Tenaga"]["Refraksionis"] ?: 0 + $rs["Tenaga"]["RekamMedis"] ?: 0
            + $rs["Tenaga"]["Ortotik"] ?: 0 + $rs["Tenaga"]["TeknisiTransfusiDarah"] ?: 0
            + $rs["Tenaga"]["TeknisiKardiovaskular"] ?: 0 + $rs["Tenaga"]["Epedemiologi"] ?: 0 + $rs["Tenaga"]["Promkes"] ?: 0
            + $rs["Tenaga"]["Kesja"] ?: 0 + $rs["Tenaga"]["AdmKes"] ?: 0 + $rs["Tenaga"]["Biostatistik"] ?: 0
            + $rs["Tenaga"]["Reproduksi"] ?: 0 + $rs["Tenaga"]["InfoKes"] ?: 0 + $rs["Tenaga"]["KesmasLainnya"] ?: 0
            + $rs["Tenaga"]["Sanitasi"] ?: 0 + $rs["Tenaga"]["Entomologi"] ?: 0 + $rs["Tenaga"]["Mikrobiologi"] ?: 0
            + $rs["Tenaga"]["Kesling"] ?: 0 + $rs["Tenaga"]["Nutrisionis"] ?: 0 + $rs["Tenaga"]["Dietisien"] ?: 0 + $rs["Tenaga"]["Fisioterapi"] ?: 0
            + $rs["Tenaga"]["TerapiOkupasi"] ?: 0 + $rs["Tenaga"]["TerapiWicara"] ?: 0 + $rs["Tenaga"]["Akupunkturis"] ?: 0 + $rs["Tenaga"]["Progkes"] ?: 0
            + $rs["Tenaga"]["Psikologi"] ?: 0;

        $res = $rumahSakit->save();
        if (!$res) {
            if ($rumahSakit->getMessages()[0]->getField() == "email") {
                $rumahSakit->email = null;
                $rumahSakit->save();
            }
        }
    }
}
