$num($c['count'] ?? 0), 'amount' => $num($c['amount'] ?? 0), ]; }; $genderMax = 1; foreach ($chartGender as $g) { $genderMax = max($genderMax, (int) ($g['male'] ?? 0) + (int) ($g['female'] ?? 0)); } $ageMax = 1; foreach ($chartAge as $a) { $ageMax = max($ageMax, (int) ($a['total'] ?? 0)); } $ageBarColor = static function (string $dominant): string { return match (true) { $dominant === 'Child' => '#4472c4', str_contains($dominant, 'Self') => '#264478', str_contains($dominant, 'Parents') => '#ffc000', default => '#70ad47', }; }; /** DomPDF-safe horizontal bar (nested table widths). */ $renderBar = static function (float $pct, string $color): void { $filled = (int) max(0, min(100, round($pct))); $empty = 100 - $filled; echo ''; if ($filled > 0) { echo ''; } if ($empty > 0) { echo ''; } if ($filled === 0 && $empty === 0) { echo ''; } echo '
   
'; }; $renderRelationClaimRow = static function ( string $label, array $row, array $ageRelations, bool $isTotal = false ) use ($num, $pct2, $cellCa): void { $cls = $isTotal ? ' class="total-row"' : ''; echo '' . esc($label) . ''; foreach ($ageRelations as $rel) { $ca = $cellCa($row[$rel] ?? []); echo '' . esc($ca['count']) . '' . esc($ca['amount']) . ''; } $tot = $cellCa($row['total'] ?? ($row['_total'] ?? [])); echo '' . esc($tot['count']) . '' . esc($tot['amount']) . ''; $pct = $row['pct'] ?? []; if (is_array($pct) && (isset($pct['count']) || isset($pct['amount']))) { echo '' . esc($pct2($pct['count'] ?? 0) . ' / ' . $pct2($pct['amount'] ?? 0)) . ''; } else { echo ''; } echo ''; }; $renderRelationPctRow = static function (array $colPct, array $ageRelations) use ($pct): void { echo '%'; foreach ($ageRelations as $rel) { $p = $colPct[$rel] ?? []; if (is_array($p)) { echo '' . esc($pct($p['count'] ?? 0)) . '' . esc($pct($p['amount'] ?? 0)) . ''; } else { echo '' . esc($pct($p)) . ''; } } echo '' . esc($pct(100)) . '' . esc($pct(100)) . ''; }; ?> Vidal Health - Corporate Analysis Report
Corporate Office : Tower-2, 1st floor, SJR I Park, Plot No: 13,14,15 , EPIP Zone, Whitefield, Bangalore-560066
Phone: 91-80-40125678   Fax : 91-80-41159215   Email: care@vidalhealthtpa.com   Website : www.vidalhealthtpa.com
Corporate Analysis Report
Corporate Name:
Insurer Policy Number:
Policy Start Date:
Policy End Date:
Total Premium:(in Rs.)
Earned Premium:(in Rs.)
Lives Covered:(in Nos.)
Report Generated By(Broker):
Report Generated Date:

1. Incurred Claims Ratio (ICR):

>
Claim Status Cashless Member Total
Nos.Amt. (in Rs.)Nos.Amt. (in Rs.)Nos.Amt. (in Rs.)
ICR On EP*
Incidence Rate
Disposal Rate
Cost per Claims(CPC)

2. Hospitalisation Type Details:

Claim Subtype Cashless Member
Nos.Amt. (in Rs.)Nos.Amt. (in Rs.)
Total
*Considering Only Settled ,Approved and UTR Awaiting (Cheque Pending)
Notes:
ICR = (Settled Amt + Outstanding Amt) / Annual Premium
ICR on EP* = (Settled Amt + Outstanding Amt) / Earned Premium
Earned Premium = Prorated premium as on report generated date
Cost Per Claim(CPC) = Approved Amt / Number of Events(Main Claims) for IPD + Daycare Cases
Incidents Rate = No of Claim Events/ Lives
Disposal Rate = (Settled+Rejected+Awaiting UTR+Cancelled / Claims Reported)
* EP- Earned Premium ; O/S - Outstanding
* Event = Main Claims Only (Excluding Prepost and Addendum)

3. Member Details - Relationship & Gender wise :

RelationMaleFemaleTotal%
Total
%
$male) ? '#ed7d31' : '#4472c4'; ?>
Male Female

4. Member Details - Age Band & Relationship wise :

AgeBand Total%
Total
%
Self Spouse Parents Child In Law/Other

5. Claims Approved - Age Band & Relationship wise :

100, 'amount' => 100]; $renderRelationClaimRow('Total', $totalRow, $ageRelations, true); $renderRelationPctRow($claimsAge['col_pct'] ?? [], $ageRelations); ?>
Age Band TotalTotal %
No.Amt.(Rs.) No.Amt.(Rs.)No.%/Amt.%
* Count is only for Approved Claims(Settled and Awaiting UTR(Cheque Pending)) .

6. Claims Approved - Amount Band & Relationship wise :

100, 'amount' => 100]; $renderRelationClaimRow('Total', $amtTotalRow, $ageRelations, true); $renderRelationPctRow($claimsAmount['col_pct'] ?? [], $ageRelations); ?>
Amount Band TotalTotal %
No.Amt.(Rs.) No.Amt.(Rs.)No.%/Amt.%
* Count is only for Approved Claims(Settled and Awaiting UTR (Cheque Pending)).   * Banding for Incurred Amount

7. Claims Approved - Top 15 Ailment wise :

100, 'amount' => 100]; $renderRelationClaimRow('Total', $ailTotalRow, $ageRelations, true); $renderRelationPctRow($ailments['col_pct'] ?? [], $ageRelations); ?>
Ailment Group TotalTotal %
No.Amt.(Rs.) No.Amt.(Rs.)No.%/Amt.%
* Count is only for Approved Claims(Settled and Awaiting UTR (Cheque Pending)) .

8. Top 15 Cashless Hospital wise utilization:

Hospital_ID Hospital_Name No of Claims Amount
No cashless hospital utilization

9. Claims Approved - Cashless & Member Summary:

Type of claim EventsEvents%AmountAmount%
TOTAL

10. Turn Around Time (TAT) :

Claim Process TAT :
TAT BandNos.%
Total
Note: Only Settled,Awaiting UTR, Approved and Rejected claims are considered
* LDR to Decision date
* only for Member claims

11. Month on Month

Admission Month Hospitalization and Daycare Other than Hospitalization Total
Inc CountInc Amount Inc CountInc Amount Inc CountInc Amount
TOTAL

12. Payout Ratio

Claimed AmountSettled AmountPayout %