Loading
Prepare for Email to Become the Default Login ExperienceRead More
Insurance
Custom Integration Procedures for Processing Limits

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
      }
    ]
  }
}
Note
Note Before you create your custom Integration Procedure, make sure that you enable Omnistudio Metadata API Support.
 
Loading
Salesforce Help | Article