<?php

namespace App\Models;

use CodeIgniter\Model;

class ModelRekammedis extends Model
{
    protected $table            = 'rekam_medis';
    protected $primaryKey       = 'id_rekam_medis';
    protected $allowedFields    = [
        'id_kunjungan',
        'keluhan',
        'tekanan_darah',
        'denyut_nadi',
        'suhu_tubuh',
        'laju_nafas',
        'berat_badan',
        'tinggi_badan',
        'gigi_yang_dirawat',
        'diagnosa',
        'terapi',
        'edukasi',
        'created_at'
    ];

    /**
     * Mengambil semua data rekam medis beserta info pasien dan kunjungan
     *
     * @return array
     */
    public function getAllData()
    {
        return $this->select('rekam_medis.*, pasien.nama_lengkap as nama_pasien, kunjungan.tanggal_kunjungan')
            ->join('kunjungan', 'kunjungan.id_kunjungan = rekam_medis.id_kunjungan')
            ->join('pasien', 'pasien.id_pasien = kunjungan.id_pasien')
            ->orderBy('rekam_medis.created_at', 'DESC')
            ->findAll();
    }

    /**
     * Mengambil satu data rekam medis berdasarkan ID
     *
     * @param int $id
     * @return array|null
     */
    public function getDataById($id)
    {
        return $this->where('id_rekam_medis', $id)->first();
    }

    /**
     * Tambah data rekam medis
     *
     * @param array $data
     * @return bool
     */
    public function tambahData($data)
    {
        return $this->insert($data);
    }

    /**
     * Update data rekam medis berdasarkan ID
     *
     * @param int $id
     * @param array $data
     * @return bool
     */
    public function updateData($id_rekam_medis, $data)
    {
        return $this->update($id_rekam_medis, $data);
    }

    /**
     * Hapus data rekam medis berdasarkan ID
     *
     * @param int $id
     * @return bool
     */
    public function deleteData($id_rekam_medis)
    {
        return $this->delete($id_rekam_medis);
    }

    public function getTindakanByKunjungan($id_kunjungan)
    {
        return $this->db->table('rekam_medis')
            ->select('rekam_medis.id_tindakan, tindakan.nama_tindakan, tindakan.tarif')
            ->join('tindakan', 'tindakan.id_tindakan = rekam_medis.id_tindakan')
            ->where('rekam_medis.id_kunjungan', $id_kunjungan)
            ->get()->getResultArray();
    }
}
