Free Format Claim Transaction Event Integration Point

The trigger for this integration point is the evaluation of a Claim Transaction Event Rule. If, during the claims flow, a rule is evaluated to be applicable, then a request message will be sent out via this integration point.

Claim Transaction Event Rules come in two different flavors: structured format and free format. This chapter focuses on the latter free format rules, which use the REST messaging protocol.

Relation to the Oracle Health Insurance Enterprise Policy Administration

The free format Claim Transaction Event Rules allows Claims to be integrated with any external system. One such system, which is particularly well-suited for receiving the messages that this integration point produces, is the Policy Account Integration Point of Oracle Health Insurance Enterprise Policy Administration, which is further described in the Policies Developer Guide. These two integration points, in combination with the Enrollment Integration Point, allows for information about policy saving accounts to be exchanged between the two applications.

The message of the Enrollment Integration Point could be used to carry information (from Enterprise Policy Administration to Claims Adjudication) about the current status of the account, such as its number, and how much money it contains. This data can be stored using the dynamic fields/records of the Policy Product. If the savings account is used to fund a claim’s copay, the total consumed amount is send back (from Claims Adjudication to Enterprise Policy Administration) using this Claim Transaction Integration Point, such that the money is withdrawn from the savings account. Example scenario B10 in the Coverage Regimes chapter shows how to set up copay reinsurance.

Configuration

The generic endpoint can be configured as property 'ohi.policyaccounttransaction.endpoint.request'. Refer to Property Management for more information on setting a property. The event endpoint can be overridden for specific claim transaction event codes, e.g. specify property 'ohi.policyaccounttransaction.{0}.endpoint.request' where the placeholder is replaced with claim transaction event code to have the system deliver claim event for code XXX to a specific endpoint.

If the claim transaction event endpoint is configured on the specific event code, all other properties are also fetched based on event code or else defaults are used. Similarly if the endpoint for the claim event is configured without the event code, then all other properties are fetched on a generic usecase code PolicyAccountTransactionClient. Please see section "Outbound RESTful Service Invocations" in Security Guide for the process and more properties.

Dynamic Logic

The free format message body is constructed by a dynamic logic function. For details, refer to the "Functions" page in the "Dynamic Logic" chapter of the Developer Guide. The below Groovy code example shows how to construct a message for the Policy Account Integration Point of Oracle Health Insurance Enterprise Policy Administration. For it to work, dynamic fields with the following usage names should be configured on the Policy Product entity: accountCode, accountTransactionTypeCode, and accountNumber.

// If no consumption has taken place, do not send a policy withdrawal request
if (limitConsumption == null) {
    return null
}

// Information about the policy account was stored using dynamic fields on the claim line's primary policy product
def policyProduct = claimLine.policyEnrollment.getProducts()[0]

// Collect the request information in a map-structure
def request = [ code                             : policyProduct.accountCode
              , descr                            : claimLine.claim.code + "-" + claimLine.code + "-WITHDRAWAL"
              , personCode                       : claimLine.servicedMember.code
              , policyAccountTransactionTypeCode : policyProduct.accountTransactionTypeCode
              , transactionDateTime              : ctrClaimLine.creationDate.format("yyyy-MM-dd'T'HH:mm:ssXXX")
              , policyAccount                    : [ accountNumber : policyProduct.accountNumber
                                                   ]
              , amount                           : [ currency      : limitConsumption.amount.currencyCode
                                                   , value         : limitConsumption.amount.amount
                                                   ]
              ]

// Convert the map-structure into a JSON-structure, and return the result
return groovy.json.JsonOutput.toJson(request)

The above dynamic logic function returns a JSON string for example:

{
 "code": "POAT123",
 "descr": "CLAI123-CLLI123-WITHDRAWAL",
 "personCode": "RELA123",
 "policyAccountTransactionTypeCode": "POAY123",
 "transactionDateTime": "2018-12-31T23:59:59+00:00",
 "policyAccount": {
 "accountNumber": "POAO123"
 },
 "amount": {
 "currency": "CUR",
 "value": 123.45
 }
}