You are here:
Custom Integration Procedures for Processing Limits
The standard expression set is designed to manage responsibilities within the context of the Insurance Policy Limit. However, there are situations where more specialized calculations are required. In such cases, when you need to process limits by using custom logic, you can enhance the calculation flow by implementing a custom Integration Procedure (IP). This enables a more tailored and precise handling of policy limits.
Required Editions
| View supported editions. |
Scenario
When the primary beneficiary or any dependent is under 18 and they use the Critical Illness coverage under the Medical Insurance root product, the system must make sure that the overall policy level limit (Sum Insured) remains unaffected. Instead, the system should only debit the specific Benefit limit such as for a Platelet Count Test and the coverage level limit. This makes sure that the policy's total coverage amount is preserved for other potential claims.
Inputs
-
Coverage: Critical Illness
-
Benefit: Platelet Count Test
-
Participant: The participant is 16 years old, which means the minor rule applies.
-
Starting Limits:
- The Policy Sum Insured (SI) is $50,000. This is the total amount available under the policy.
- The Critical Illness Coverage has a limit of $5,000. This is the maximum amount that can be claimed for critical illness-related expenses.
- The Platelet Count Benefit has a specific limit of $600. This is the maximum amount that can be claimed for platelet count tests.
-
Claim (Allowed Amount): The claim amount for the Platelet Count Test is $120. This is the amount that is being requested for reimbursement under the benefit.
In this scenario, this is the input that your IP receives resembles this sample.
{
"claimId": "801xx0000004Cc7GAE",
"claimCoverageId": "1cxx0000004Cc7GAE",
"adjustedAmount": 120,
"benefitName": "Platelet Count Test",
"limitUnitCount": 1,
"paymentDetailId": "0Rvxx0000004Cc7GAE",
"PolicyLimitStandings": [
{
"policyLimitId": "9QMSG000000A7t34AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Policy",
"remainingAmount": 50000
},
{
"policyLimitId": "9QMSG000000A7t35AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Coverage",
"remainingAmount": 5000
},
{
"policyLimitId": "9QMSG000000A7t36AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Benefit",
"remainingAmount": 600
}
],
"additionalFields": {
"participantAge": 16
}
}
Your IP receives additionalFields only when you configure a field set on the Claim Coverage Payment Detail object and map it to a coverage product. For more details on including contextual data in additional fields, see Contextual Data in Custom Calculations.
Rules
If the Coverage is Critical Illness and age is less than 18 implement these rules:
- Don't reduce the Policy's Sum Insured.
- Reduce only the Benefit limit and the Coverage limit.
- Calculate the Payment as the minimum of the allowed amount, the remaining Benefit limit, and the remaining Coverage limit.
- Calculate the Denied amount as the difference between the allowed amount and the Payment.
Minor (aged 16) Consumption and Balances
| Bucket | Before | Change | After |
|---|---|---|---|
| Platelet Count (Benefit) | $600 | −$120 | $480 |
| Critical Illness (Coverage) | $5,000 | −$120 | $4,880 |
| Policy Sum Insured | $50,000 | −$0 | $50,000 |
-
Payment Amount: $120 has been approved and will be paid.
-
Denied Amount: $0, meaning no part of the claim has been denied.
-
Policy Limit: The overall policy limit remains unaffected and unchanged.
Here's the sample output JSON.
{
"result": {
"exceededAmount": 0,
"exceededCount": 0,
"insurancePolicyLimitTrackings": [
{
"policyLimitId": "9QMSG000000A7t34AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Policy",
"calcInitialAmount": 50000,
"postedAmount": 120,
"remainingAmount": 50000,
"totalUsedAmount": 0,
"isLimitExceeded": false
},
{
"policyLimitId": "9QMSG000000A7t35AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Coverage",
"calcInitialAmount": 5000,
"postedAmount": 120,
"remainingAmount": 4880,
"totalUsedAmount": 120,
"isLimitExceeded": false
},
{
"policyLimitId": "9QMSG000000A7t36AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Benefit",
"calcInitialAmount": 600,
"postedAmount": 120,
"remainingAmount": 480,
"totalUsedAmount": 120,
"isLimitExceeded": false
}
]
}
}
In contrast, for an adult aged 19, the policy limit is consumed as follows:
Adult (aged 19) Consumption and Balances
| Bucket | Before | Change | After |
|---|---|---|---|
| Platelet Count (Benefit) | $600 | −$120 | $480 |
| Critical Illness (Coverage) | $5,000 | −$120 | $4,880 |
| Policy Sum Insured | $50,000 | −$120 | $49,880 |
Payment Amount: $120 has been approved and will be paid.
Here's the sample output JSON for the adult scenario.
{
"result": {
"exceededAmount": 0,
"exceededCount": 0,
"insurancePolicyLimitTrackings": [
{
"policyLimitId": "9QMSG000000A7t34AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Policy",
"calcInitialAmount": 50000,
"postedAmount": 120,
"remainingAmount": 49880,
"totalUsedAmount": 120,
"isLimitExceeded": false
},
{
"policyLimitId": "9QMSG000000A7t35AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Coverage",
"calcInitialAmount": 5000,
"postedAmount": 120,
"remainingAmount": 4880,
"totalUsedAmount": 120,
"isLimitExceeded": false
},
{
"policyLimitId": "9QMSG000000A7t36AC",
"attributeCategory": "Limit - Currency",
"attributeScope": "Benefit",
"calcInitialAmount": 600,
"postedAmount": 120,
"remainingAmount": 480,
"totalUsedAmount": 120,
"isLimitExceeded": false
}
]
}
}
