Fix dashboard and OPD counts for DATETIME appointment_date

This commit is contained in:
DevSoftTech Server 2026-04-28 11:23:06 +05:30
parent 5226fde8a0
commit baba5521dd
3 changed files with 22 additions and 13 deletions

View File

@ -63,14 +63,18 @@ class Home extends BaseController
$user = service('auth')->user();
$today = date('Y-m-d');
$monthStart = date('Y-m-01');
$todayStart = $today . ' 00:00:00';
$tomorrowStart = date('Y-m-d', strtotime('+1 day')) . ' 00:00:00';
$monthStartDateTime = $monthStart . ' 00:00:00';
$opdToday = $this->db->table('opd_master')
->where('apointment_date', $today)
->where('apointment_date >=', $todayStart)
->where('apointment_date <', $tomorrowStart)
->countAllResults();
$opdLast7Days = $this->db->table('opd_master')
->where('apointment_date >=', date('Y-m-d', strtotime('-7 days')))
->where('apointment_date <=', $today)
->where('apointment_date >=', date('Y-m-d', strtotime('-7 days')) . ' 00:00:00')
->where('apointment_date <', $tomorrowStart)
->countAllResults();
$admitToday = $this->db->table('ipd_master')
@ -96,8 +100,8 @@ class Home extends BaseController
->select('ins.short_name as org_name')
->select('COUNT(o.opd_id) as total_cases', false)
->join('hc_insurance ins', 'ins.id = o.insurance_id', 'left')
->where('o.apointment_date >=', $monthStart)
->where('o.apointment_date <=', $today)
->where('o.apointment_date >=', $monthStartDateTime)
->where('o.apointment_date <', $tomorrowStart)
->groupBy('ins.short_name')
->orderBy('total_cases', 'DESC')
->limit(10)
@ -109,7 +113,8 @@ class Home extends BaseController
->select('COUNT(o.opd_id) as total_cases', false)
->select("SUM(CASE WHEN (o.insurance_id IS NULL OR o.insurance_id <= 1) THEN 1 ELSE 0 END) as direct_cases", false)
->select("SUM(CASE WHEN (o.insurance_id IS NULL OR o.insurance_id <= 1) THEN 0 ELSE 1 END) as org_cases", false)
->where('o.apointment_date', $today)
->where('o.apointment_date >=', $todayStart)
->where('o.apointment_date <', $tomorrowStart)
->where('o.doc_name IS NOT NULL', null, false)
->where("o.doc_name != ''", null, false)
->groupBy('o.doc_name')
@ -160,8 +165,8 @@ class Home extends BaseController
$opdTrendRaw = $this->db->table('opd_master')
->select("DATE_FORMAT(apointment_date, '%Y-%m-%d') as yd", false)
->select('COUNT(opd_id) as total', false)
->where('apointment_date >=', $trendStart)
->where('apointment_date <=', $trendEnd)
->where('apointment_date >=', $trendStart . ' 00:00:00')
->where('apointment_date <', $tomorrowStart)
->groupBy('yd')
->get()
->getResult();

View File

@ -382,7 +382,7 @@ class Patient extends BaseController
}
$sql = "select o.opd_id,o.opd_code,o.doc_name,o.apointment_date,o.p_id,
p.p_fname,if(o.apointment_date=curdate(),1,0) as new_opd,
p.p_fname,if(date(o.apointment_date)=curdate(),1,0) as new_opd,
date_format(o.apointment_date,'%d-%m-%Y') as str_apointment_date
from opd_master o join patient_master p on o.p_id=p.id
where o.p_id=$pno

View File

@ -17,13 +17,16 @@ class OpdModel
{
$pId = (int) ($data['p_id'] ?? 0);
$docId = (int) ($data['doc_id'] ?? 0);
$todayStart = date('Y-m-d') . ' 00:00:00';
$tomorrowStart = date('Y-m-d', strtotime('+1 day')) . ' 00:00:00';
if ($pId <= 0 || $docId <= 0) {
return 0;
}
$duplicate = $this->db->table('opd_master')
->where('apointment_date', date('Y-m-d'))
->where('apointment_date >=', $todayStart)
->where('apointment_date <', $tomorrowStart)
->where('p_id', $pId)
->where('doc_id', $docId)
->groupStart()
@ -44,7 +47,8 @@ class OpdModel
$opdNoRow = $this->db->table('opd_master')
->select('count(*) as no_max')
->where('apointment_date', date('Y-m-d'))
->where('apointment_date >=', $todayStart)
->where('apointment_date <', $tomorrowStart)
->where('doc_id', $docId)
->get()
->getRow();
@ -66,8 +70,8 @@ class OpdModel
$lastOpdRow = $this->db->table('opd_master')
->select('max(opd_id) as last_opd_id')
->where('apointment_date >=', $this->resolveRunningLookupDate($docId))
->where('apointment_date <=', date('Y-m-d'))
->where('apointment_date >=', $this->resolveRunningLookupDate($docId) . ' 00:00:00')
->where('apointment_date <', $tomorrowStart)
->where('running_opd', 0)
->where('opd_fee_type <>', 3)
->where('coalesce(opd_fee_amount,0) >', 0, false)