CalculateAdjustments(CalculateAdjustmentsInput, claimId, coverageId)

Calculate adjustments for a loss item and determine the final payable amount for a specific claim loss item.

API Version

65.0

Requires Chatter

No

Signature

public static ConnectApi.CalculateAdjustmentsRepresentation CalculateAdjustments(ConnectApi.CalculateAdjustmentsInputRepresentation CalculateAdjustmentsInput, String claimId, String coverageId)

Parameters

CalculateAdjustmentsInput
Type: ConnectApi.CalculateAdjustmentsInputRepresentation
Details for calculating adjustments.
claimId
Type: String
ID of the claim for which the adjustments must be calculated.
coverageId
Type: String
ID of the claim coverage.

Example

Here's an example of how to invoke the Calculate Adjustments API by using Apex.

1public with sharing class CalculateAdjustments implements System.Callable {
2    public Object call(String action, Map<String, Object> args) {
3
4        Map<String, Object> bodyMap = new Map<String, Object>();
5
6        // Extract 'input' and 'output'
7        Map<String, Object> inputMap = (Map<String, Object>) args.get('input');
8        Map<String, Object> outputMap = (Map<String, Object>) args.get('output');
9
10        if (inputMap != null) {
11            if (inputMap.containsKey('claimId') && inputMap.get('claimId') != null) {
12                bodyMap.put('claimId', String.valueOf(inputMap.get('claimId')));
13            }
14            if (inputMap.containsKey('claimCoverageId') && inputMap.get('claimCoverageId') != null) {
15                bodyMap.put('claimCoverageId', String.valueOf(inputMap.get('claimCoverageId')));
16            }
17            if (inputMap.containsKey('claimedAmount') && inputMap.get('claimedAmount') != null) {
18                bodyMap.put('claimedAmount', String.valueOf(inputMap.get('claimedAmount')));
19            }
20        } else {
21            System.debug('No input map found in args');
22        }
23
24        String jsonBody = JSON.serialize(bodyMap);
25        System.debug('Final JSON Body: ' + jsonBody);
26
27        String str = postDataToExternalApi(bodyMap, jsonBody);
28        return outputMap.put('API Response: ', str);
29    }
30
31    public static String postDataToExternalApi(Map<String, Object> bodyMap, String jsonBody) {
32        HttpRequest request = new HttpRequest();
33        Http http = new Http();
34
35        String claimId = (String) bodyMap.get('claimId');
36        String claimCoverageId = (String) bodyMap.get('claimCoverageId');
37        String claimedAmount = (String) bodyMap.get('claimedAmount');
38        
39        bodyMap.remove('claimId');
40        bodyMap.remove('claimCoverageId');
41
42        jsonBody = JSON.serialize(bodyMap);
43
44        if (String.isBlank(claimId) || String.isBlank(claimCoverageId) || String.isBlank(claimedAmount)) {
45            String errorMsg = 'Missing required fields - claimId: ' + claimId + ', claimCoverageId: ' + claimCoverageId + ', claimedAmount: ' + claimedAmount;
46            System.debug('Validation failed: ' + errorMsg);
47            return 'Error: ' + errorMsg;
48        }
49
50        // Build endpoint dynamically
51        String endpoint = 'callout:invokeUW/services/data/v65.0/connect/insurance/claims/' 
52                          + claimId + '/coverages/' + claimCoverageId + '/calculate-adjustments';
53        System.debug('>>> Dynamic Endpoint: ' + endpoint);
54
55        request.setEndpoint(endpoint);
56        request.setMethod('POST');
57        request.setHeader('Content-Type', 'application/json');
58        request.setTimeout(120000); // 2 mins
59        request.setBody(jsonBody);
60
61        try {
62            HttpResponse response = http.send(request);
63
64            System.debug('Status Code: ' + response.getStatusCode());
65            System.debug('Response Body: ' + response.getBody());
66
67            return response.getBody();
68        } catch (Exception e) {
69            System.debug('Exception: ' + e.getMessage());
70            return 'Exception: ' + e.getMessage();
71        }
72    }
73
74    // Sample test method
75    public static void testCalculateAdjustments() {
76        Map<String, Object> args = new Map<String, Object>();
77        Map<String, Object> input = new Map<String, Object>();
78        Map<String, Object> output = new Map<String, Object>();
79
80        input.put('claimId', '0Zkxx000000009hCAA');
81        input.put('claimCoverageId', '0kPxx000000006TEAQ');
82        input.put('claimedAmount', '1200.0');
83
84        args.put('input', input);
85        args.put('output', output);
86
87        CalculateAdjustments test = new CalculateAdjustments();
88        test.call('calculateAdjustments', args);
89    }
90}