Free Format Claim Transaction Event Integration Point (REST)

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, for which the REST messaging protocol is used. The structured format rules are similar to Claim Event Rules, using the SOAP or REST protocol depending on the event protocol property configuration, which is described in the Claim Event Integration Point chapter. Note that claim events and claim transaction events share the same property.

Relation to OHI Enterprise Policy Administration

The free format Claim Transaction Event Rules allows OHI Claims Adjudication 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 OHI Enterprise Policy Administration, which is further described in the OHI Policies Integration 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' in the OHI Components application’s properties file. 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 Integration 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 chapter of the Dynamic Logic guide. The below Groovy code example shows how to construct a message for the Policy Account Integration Point of OHI 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
 }
}