feat(claims): enhance claims filtering with insurance, date range, and patient search
This commit is contained in:
@@ -59,13 +59,18 @@ class BillingController extends BaseController
|
||||
$sessionIds[] = $d['patient_session_id'];
|
||||
}
|
||||
}
|
||||
$sessionDates = $this->sessionRepo->datesForIds(array_values(array_unique($sessionIds)));
|
||||
$uniqueSessionIds = array_values(array_unique($sessionIds));
|
||||
$sessionDates = $this->sessionRepo->datesForIds($uniqueSessionIds);
|
||||
$patientInfo = $this->sessionRepo->patientInfoForIds($uniqueSessionIds);
|
||||
|
||||
return array_map(function (Claim $claim) use ($itemDetails, $sessionDates) {
|
||||
return array_map(function (Claim $claim) use ($itemDetails, $sessionDates, $patientInfo) {
|
||||
$data = $claim->toArray();
|
||||
$data['insurance_name'] = $this->insuranceRepo->find($claim->getInsuranceId())?->getName();
|
||||
|
||||
$data['items'] = array_map(function (array $item) use ($itemDetails, $sessionDates) {
|
||||
$patientName = null;
|
||||
$patientMobile = null;
|
||||
|
||||
$data['items'] = array_map(function (array $item) use ($itemDetails, $sessionDates, $patientInfo, &$patientName, &$patientMobile) {
|
||||
$detail = $itemDetails[$item['invoice_item_id']] ?? null;
|
||||
$sessionId = $detail['patient_session_id'] ?? null;
|
||||
$item['title'] = $detail['title'] ?? null;
|
||||
@@ -73,9 +78,17 @@ class BillingController extends BaseController
|
||||
$item['quantity'] = $detail['quantity'] ?? 1;
|
||||
$item['total_rials'] = $detail['total_rials'] ?? null;
|
||||
$item['visit_date'] = $sessionId !== null ? ($sessionDates[$sessionId] ?? null) : null;
|
||||
|
||||
if ($patientName === null && $sessionId !== null && isset($patientInfo[$sessionId])) {
|
||||
$patientName = $patientInfo[$sessionId]['name'];
|
||||
$patientMobile = $patientInfo[$sessionId]['mobile'];
|
||||
}
|
||||
return $item;
|
||||
}, $data['items']);
|
||||
|
||||
$data['patient_name'] = $patientName;
|
||||
$data['patient_mobile'] = $patientMobile;
|
||||
|
||||
return $data;
|
||||
}, $claims);
|
||||
}
|
||||
@@ -164,8 +177,14 @@ class BillingController extends BaseController
|
||||
return $this->error(ErrorCodes::ERR_FORBIDDEN_001, 'پروفایل یافت نشد', 403);
|
||||
}
|
||||
|
||||
$status = $request->query->get('status') ?: null;
|
||||
$claims = $this->claimRepo->findByTenant($entityType, $entityId, $status);
|
||||
$filters = [
|
||||
'status' => $request->query->get('status') ?: null,
|
||||
'insurance_id' => $request->query->get('insurance_id') ?: null,
|
||||
'from' => $request->query->get('from') ?: null,
|
||||
'to' => $request->query->get('to') ?: null,
|
||||
'q' => $request->query->get('q') ?: null,
|
||||
];
|
||||
$claims = $this->claimRepo->findByTenant($entityType, $entityId, $filters);
|
||||
|
||||
return $this->success(['data' => $this->enrichClaims($claims)]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user