MERGE_UAT_BUG_FIXES
This commit is contained in:
commit
d4fe43b48d
@ -214,105 +214,108 @@ SQL;
|
|||||||
/** Metabase #186: CLAIMS EXPERIENCE SUMMARY */
|
/** Metabase #186: CLAIMS EXPERIENCE SUMMARY */
|
||||||
public function claims_experience_summary(int $policyId): array
|
public function claims_experience_summary(int $policyId): array
|
||||||
{
|
{
|
||||||
$sql = <<<'SQL'
|
$sql = <<<'SQL'
|
||||||
SELECT
|
SELECT
|
||||||
/* run days */
|
/* run days */
|
||||||
/*
|
DATEDIFF(
|
||||||
DATEDIFF(
|
LEAST(CURDATE(), cp.policy_end_date),
|
||||||
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
|
cp.policy_start_date
|
||||||
cp.policy_start_date
|
) + 1 AS run_days,
|
||||||
) + 1 AS run_days,
|
|
||||||
|
|
||||||
/* earned premium */
|
|
||||||
FORMAT(
|
|
||||||
(prem.premium_as_on_date / 365)
|
|
||||||
* (DATEDIFF(
|
|
||||||
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
|
|
||||||
cp.policy_start_date
|
|
||||||
) + 1)
|
|
||||||
, 0) AS earned_premium,
|
|
||||||
*/
|
|
||||||
|
|
||||||
prem.premium_as_on_date,
|
|
||||||
|
|
||||||
|
/* earned premium */
|
||||||
|
FORMAT(
|
||||||
|
(prem.premium_as_on_date / 365) *
|
||||||
|
(
|
||||||
DATEDIFF(
|
DATEDIFF(
|
||||||
LEAST(CURDATE(), cp.policy_end_date),
|
LEAST(CURDATE(), cp.policy_end_date),
|
||||||
cp.policy_start_date
|
cp.policy_start_date
|
||||||
) + 1 AS run_days,
|
) + 1
|
||||||
|
),
|
||||||
|
2
|
||||||
|
) AS earned_premium,
|
||||||
|
|
||||||
FORMAT(
|
/* claims reported */
|
||||||
(prem.premium_as_on_date / 365) *
|
FORMAT(COUNT(tm.id), 0) AS claims_reported,
|
||||||
(
|
\t\t/* incurred claims count */
|
||||||
DATEDIFF(
|
\tFORMAT(
|
||||||
LEAST(CURDATE(), cp.policy_end_date),
|
\t SUM(
|
||||||
cp.policy_start_date
|
\t CASE
|
||||||
) + 1
|
\t WHEN tcs.claim_status IN ('Settled', 'Paid') THEN 1
|
||||||
),
|
\t WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied') THEN 1
|
||||||
2
|
\t ELSE 0
|
||||||
) AS earned_premium,
|
\t END
|
||||||
|
\t )
|
||||||
|
, 0) AS incurred_claims,
|
||||||
|
|
||||||
|
/* incurred amount */
|
||||||
|
FORMAT(
|
||||||
|
COALESCE(SUM(
|
||||||
|
CASE
|
||||||
|
WHEN tcs.claim_status IN ('Settled', 'Paid')
|
||||||
|
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
|
||||||
|
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
|
||||||
|
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
|
||||||
|
ELSE 0
|
||||||
|
END
|
||||||
|
), 0)
|
||||||
|
, 0) AS incurred_amount,
|
||||||
|
|
||||||
|
/* incurred ratio */
|
||||||
|
CONCAT(
|
||||||
|
ROUND(
|
||||||
|
COALESCE(SUM(
|
||||||
|
CASE
|
||||||
|
WHEN tcs.claim_status IN ('Settled', 'Paid')
|
||||||
|
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
|
||||||
|
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
|
||||||
|
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
|
||||||
|
ELSE 0
|
||||||
|
END
|
||||||
|
), 0)
|
||||||
|
/ NULLIF(
|
||||||
|
(prem.premium_as_on_date / 365)
|
||||||
|
* DATEDIFF(
|
||||||
|
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
|
||||||
|
cp.policy_start_date
|
||||||
|
)
|
||||||
|
, 0) * 100
|
||||||
|
, 2)
|
||||||
|
, '%') AS incurred_ratio,
|
||||||
|
|
||||||
/* claims reported */
|
/* rejection rate */
|
||||||
FORMAT(COUNT(tm.id), 0) AS claims_reported,
|
CONCAT(
|
||||||
\t\t/* incurred claims count */
|
ROUND(
|
||||||
\tFORMAT(
|
SUM(CASE WHEN tcs.claim_status IN ('Rejected', 'Denied') THEN 1 ELSE 0 END)
|
||||||
\t SUM(
|
/ NULLIF(COUNT(tm.id), 0) * 100
|
||||||
\t CASE
|
, 2)
|
||||||
\t WHEN tcs.claim_status IN ('Settled', 'Paid') THEN 1
|
, '%') AS rejection_rate,
|
||||||
\t WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied') THEN 1
|
|
||||||
\t ELSE 0
|
|
||||||
\t END
|
|
||||||
\t )
|
|
||||||
, 0) AS incurred_claims,
|
|
||||||
|
|
||||||
/* incurred amount */
|
/* projected claims */
|
||||||
FORMAT(
|
FORMAT(
|
||||||
COALESCE(SUM(
|
(
|
||||||
CASE
|
COALESCE(SUM(
|
||||||
WHEN tcs.claim_status IN ('Settled', 'Paid')
|
CASE
|
||||||
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
|
WHEN tcs.claim_status IN ('Settled', 'Paid')
|
||||||
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
|
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
|
||||||
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
|
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
|
||||||
ELSE 0
|
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
|
||||||
END
|
ELSE 0
|
||||||
), 0)
|
END
|
||||||
, 0) AS incurred_amount,
|
), 0)
|
||||||
|
/ NULLIF(
|
||||||
|
DATEDIFF(
|
||||||
|
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
|
||||||
|
cp.policy_start_date
|
||||||
|
), 0
|
||||||
|
)
|
||||||
|
* 365
|
||||||
|
) * 1.10
|
||||||
|
, 0) AS projected_claims,
|
||||||
|
|
||||||
/* incurred ratio */
|
/* projected ratio */
|
||||||
CONCAT(
|
CONCAT(
|
||||||
ROUND(
|
ROUND(
|
||||||
COALESCE(SUM(
|
(
|
||||||
CASE
|
|
||||||
WHEN tcs.claim_status IN ('Settled', 'Paid')
|
|
||||||
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
|
|
||||||
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
|
|
||||||
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
|
|
||||||
ELSE 0
|
|
||||||
END
|
|
||||||
), 0)
|
|
||||||
/ NULLIF(
|
|
||||||
(prem.premium_as_on_date / 365)
|
|
||||||
* DATEDIFF(
|
|
||||||
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
|
|
||||||
cp.policy_start_date
|
|
||||||
)
|
|
||||||
, 0) * 100
|
|
||||||
, 2)
|
|
||||||
, '%') AS incurred_ratio,
|
|
||||||
|
|
||||||
/* rejection rate */
|
|
||||||
CONCAT(
|
|
||||||
ROUND(
|
|
||||||
SUM(CASE WHEN tcs.claim_status IN ('Rejected', 'Denied') THEN 1 ELSE 0 END)
|
|
||||||
/ NULLIF(COUNT(tm.id), 0) * 100
|
|
||||||
, 2)
|
|
||||||
, '%') AS rejection_rate,
|
|
||||||
|
|
||||||
/* projected claims */
|
|
||||||
FORMAT(
|
|
||||||
(
|
(
|
||||||
COALESCE(SUM(
|
COALESCE(SUM(
|
||||||
CASE
|
CASE
|
||||||
@ -331,73 +334,49 @@ SQL;
|
|||||||
)
|
)
|
||||||
* 365
|
* 365
|
||||||
) * 1.10
|
) * 1.10
|
||||||
, 0) AS projected_claims,
|
)
|
||||||
|
/ NULLIF(prem.premium_as_on_date, 0) * 100
|
||||||
|
, 2)
|
||||||
|
, '%') AS projected_ratio
|
||||||
|
|
||||||
/* projected ratio */
|
FROM client_policy cp
|
||||||
CONCAT(
|
|
||||||
ROUND(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
COALESCE(SUM(
|
|
||||||
CASE
|
|
||||||
WHEN tcs.claim_status IN ('Settled', 'Paid')
|
|
||||||
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
|
|
||||||
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
|
|
||||||
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
|
|
||||||
ELSE 0
|
|
||||||
END
|
|
||||||
), 0)
|
|
||||||
/ NULLIF(
|
|
||||||
DATEDIFF(
|
|
||||||
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
|
|
||||||
cp.policy_start_date
|
|
||||||
), 0
|
|
||||||
)
|
|
||||||
* 365
|
|
||||||
) * 1.10
|
|
||||||
)
|
|
||||||
/ NULLIF(prem.premium_as_on_date, 0) * 100
|
|
||||||
, 2)
|
|
||||||
, '%') AS projected_ratio
|
|
||||||
|
|
||||||
FROM client_policy cp
|
JOIN (
|
||||||
|
SELECT
|
||||||
|
ep2.client_policy_id,
|
||||||
|
COALESCE(SUM(
|
||||||
|
CASE
|
||||||
|
WHEN e2.change_event = 'inception'
|
||||||
|
THEN ep2.rata_premimum
|
||||||
|
WHEN e2.change_event != 'inception'
|
||||||
|
AND (ep2.date_of_exit IS NULL OR ep2.date_of_exit = '')
|
||||||
|
THEN ep2.rata_premimum
|
||||||
|
WHEN ep2.date_of_exit IS NOT NULL
|
||||||
|
AND ep2.date_of_exit != ''
|
||||||
|
AND ep2.claim_status = 0
|
||||||
|
THEN -ep2.rata_premimum
|
||||||
|
ELSE 0
|
||||||
|
END
|
||||||
|
), 0) AS premium_as_on_date
|
||||||
|
FROM employee_polices ep2
|
||||||
|
JOIN employees e2 ON e2.id = ep2.employee_id
|
||||||
|
WHERE ep2.client_policy_id = :policy_id:
|
||||||
|
AND ep2.is_active = 1
|
||||||
|
GROUP BY ep2.client_policy_id
|
||||||
|
) prem ON prem.client_policy_id = cp.id
|
||||||
|
|
||||||
JOIN (
|
JOIN ticket_master tm
|
||||||
SELECT
|
ON tm.client_policy_id = cp.id
|
||||||
ep2.client_policy_id,
|
AND tm.is_active = 1
|
||||||
COALESCE(SUM(
|
|
||||||
CASE
|
|
||||||
WHEN e2.change_event = 'inception'
|
|
||||||
THEN ep2.rata_premimum
|
|
||||||
WHEN e2.change_event != 'inception'
|
|
||||||
AND (ep2.date_of_exit IS NULL OR ep2.date_of_exit = '')
|
|
||||||
THEN ep2.rata_premimum
|
|
||||||
WHEN ep2.date_of_exit IS NOT NULL
|
|
||||||
AND ep2.date_of_exit != ''
|
|
||||||
AND ep2.claim_status = 0
|
|
||||||
THEN -ep2.rata_premimum
|
|
||||||
ELSE 0
|
|
||||||
END
|
|
||||||
), 0) AS premium_as_on_date
|
|
||||||
FROM employee_polices ep2
|
|
||||||
JOIN employees e2 ON e2.id = ep2.employee_id
|
|
||||||
WHERE ep2.client_policy_id = :policy_id:
|
|
||||||
AND ep2.is_active = 1
|
|
||||||
GROUP BY ep2.client_policy_id
|
|
||||||
) prem ON prem.client_policy_id = cp.id
|
|
||||||
|
|
||||||
JOIN ticket_master tm
|
JOIN ticket_claim_status tcs
|
||||||
ON tm.client_policy_id = cp.id
|
ON tcs.id = tm.claim_status_id
|
||||||
AND tm.is_active = 1
|
|
||||||
|
|
||||||
JOIN ticket_claim_status tcs
|
WHERE cp.id = :policy_id:
|
||||||
ON tcs.id = tm.claim_status_id
|
|
||||||
|
|
||||||
WHERE cp.id = :policy_id:
|
GROUP BY cp.id, cp.policy_start_date, prem.premium_as_on_date;
|
||||||
|
SQL;
|
||||||
GROUP BY cp.id, cp.policy_start_date, prem.premium_as_on_date;
|
return $this->runKpiQuery($sql, $policyId);
|
||||||
SQL;
|
|
||||||
return $this->runKpiQuery($sql, $policyId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Metabase #190: Claim Amount by Gender */
|
/** Metabase #190: Claim Amount by Gender */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user