db->query($sql); $data['person_info'] = $query->getResult(); if (empty($data['person_info'])) { return $this->response->setStatusCode(404)->setBody('Patient not found'); } $row = $data['person_info'][0]; $row->age = get_age_1($row->dob ?? null, $row->age ?? '', $row->age_in_month ?? '', $row->estimate_dob ?? ''); $sql = "select d.id, d.p_fname, group_concat(m.SpecName) as SpecName from doctor_master d join doc_spec s join med_spec m on d.id = s.doc_id and s.med_spec_id = m.id where d.active = 1 group by d.id"; $query = $this->db->query($sql); $data['doc_spec_l'] = $query->getResult(); $cards = $this->db->table('hc_insurance_card') ->where('p_id', $pno) ->get() ->getResult(); $insuranceId = 0; if (!empty($cards)) { $insuranceId = (int) ($cards[0]->insurance_id ?? 0); } elseif (!empty($row->insurance_id)) { $insuranceId = (int) $row->insurance_id; } return view('billing/opd_app_insurance_V', [ 'person_info' => $data['person_info'], 'doc_spec_l' => $data['doc_spec_l'], 'insurance_cards' => $cards, 'insurance_id' => $insuranceId, ]); } public function showfee() { if (!$this->request->isAJAX()) { return $this->response->setStatusCode(400)->setJSON([ 'content' => '', 'error_text' => 'Invalid request', ]); } $docId = (int) $this->request->getPost('doc_id'); $insuranceId = (int) $this->request->getPost('insurance_id'); $sql = "select d.id, d.p_fname, group_concat(m.SpecName) as SpecName, if(d.gender=1,'Male','Female') as xGender from doctor_master d join doc_spec s join med_spec m on d.id = s.doc_id and s.med_spec_id = m.id where d.active = 1 and d.id=" . $docId . " group by d.id"; $query = $this->db->query($sql); $docInfo = $query->getResult(); $sql = "select * from hc_insurance where id=" . $insuranceId; $query = $this->db->query($sql); $opdFee = $query->getResult(); $content = ''; $content .= '
Name : ' . esc($docInfo[0]->p_fname ?? '') . ' / Specialization: ' . esc($docInfo[0]->SpecName ?? '') . ' / Gender : ' . esc($docInfo[0]->xGender ?? '') . '
'; $content .= ''; if (count($opdFee) > 0) { foreach ($opdFee as $row) { $content .= ''; } } else { $content .= '
No insurance fee found.
'; } return $this->response->setJSON([ 'csrfName' => csrf_token(), 'csrfHash' => csrf_hash(), 'content' => $content, ]); } public function confirm_opd() { if (!$this->request->isAJAX()) { return $this->response->setStatusCode(400)->setJSON([ 'insertid' => 0, 'error_text' => 'Invalid request', ]); } $docId = (int) $this->request->getPost('doc_id'); $feeId = (int) $this->request->getPost('fee_id'); $pid = (int) $this->request->getPost('pid'); $insuranceId = (int) $this->request->getPost('insurance_id'); $appointmentDate = (string) $this->request->getPost('datepicker_appointment'); if ($docId <= 0 || $feeId <= 0 || $pid <= 0 || $insuranceId <= 0 || $appointmentDate === '') { return $this->response->setJSON([ 'insertid' => 0, 'error_text' => 'Missing required fields.', 'csrfName' => csrf_token(), 'csrfHash' => csrf_hash(), ]); } $sql = "select * from patient_master where id=" . $pid; $query = $this->db->query($sql); $personInfo = $query->getResult(); $sql = "select d.id, d.p_fname, group_concat(m.SpecName) as SpecName, if(d.gender=1,'Male','Female') as xGender from doctor_master d join doc_spec s join med_spec m on d.id = s.doc_id and s.med_spec_id = m.id where d.active=1 and d.id=" . $docId . " group by d.id"; $query = $this->db->query($sql); $docInfo = $query->getResult(); $sql = "select * from hc_insurance where id=" . $insuranceId; $query = $this->db->query($sql); $insurance = $query->getResult(); if (count($personInfo) === 0 || count($docInfo) === 0 || count($insurance) === 0) { return $this->response->setJSON([ 'insertid' => 0, 'error_text' => 'Invalid patient, doctor, or insurance selection.', 'csrfName' => csrf_token(), 'csrfHash' => csrf_hash(), ]); } $sql = "select * from opd_master where p_id=" . $pid . " order by opd_id desc"; $query = $this->db->query($sql); $opdMaster = $query->getResult(); $user = auth()->user(); $userLabel = $user ? ($user->username ?? $user->email ?? 'User') : 'User'; $userId = $user->id ?? ''; $userNameInfo = $userLabel . ' [' . date('d-m-Y H:i:s') . '] ' . $userId; $opdFeeAmount = $insurance[0]->opd_fee ?? 0; $opdFeeDesc = $insurance[0]->opd_desc ?? ''; $insert = [ 'p_id' => $pid, 'P_name' => strtoupper((string) $personInfo[0]->p_fname), 'doc_id' => $docId, 'insurance_id' => $insuranceId, 'opd_fee_id' => $feeId, 'opd_fee_amount' => $opdFeeAmount, 'opd_fee_gross_amount' => $opdFeeAmount, 'opd_fee_desc' => $opdFeeDesc, 'doc_name' => $docInfo[0]->p_fname, 'doc_spec' => $docInfo[0]->SpecName, 'apointment_date' => str_to_MysqlDate($appointmentDate), 'opd_fee_type' => '1', 'prepared_by' => $userNameInfo, ]; if (count($opdMaster) > 0) { $insert['last_opdvisit_date'] = $opdMaster[0]->apointment_date; } $opdModel = new OpdModel(); $insertId = $opdModel->insertOpd($insert); if ($insertId > 0) { $this->db->table('patient_master') ->where('id', $pid) ->update(['last_visit' => str_to_MysqlDate($appointmentDate)]); } return $this->response->setJSON([ 'insertid' => $insertId, 'error_text' => $insertId > 0 ? 'OPD Register' : 'OPD already exists for today.', 'csrfName' => csrf_token(), 'csrfHash' => csrf_hash(), ]); } }