Extending claim search

The base configuration of ClaimCenter lets you execute claim search using a specific set of criteria. Insurers can extend the base configuration search criteria to enhance claim searches through the user interface. Insurers can also extend the search criteria in Cloud API to enhance claim searches through the /claim/v1/search/claims-v2 endpoint. This topic describes how to extend claim search in Cloud API.

Extend claim search in ClaimCenter

First, you must configure claim search in ClaimCenter itself. For more information, refer to the Database search configuration topic in the Configuration Guide.

In Cloud API, the claim search endpoints do not yet support any kind of <CriterionChoice> elements. This includes Financial and Date Criterion choices. They also do not support <ArrayCriterion> elements.

Subclass the ClaimSearchResultWrapper class

Subclass gw.rest.core.cc.claim.v1.search.claims.ClaimSearchResultWrapper and add your new properties to the subclass.

Configure the ClaimSearchV2Attributes schema

In the claim_ext-1.0 file, add the new properties to the ClaimSearchV2Attributes schema extension file. Also add mappings and updaters for the properties.

Add the properties to ClaimSearchResultWrapper

Add your extension properties to ClaimSearchResultWrapper mapping, schema, and updater in the claim_ext-1.0 JSON files.

For example, suppose you had a ClaimSearchResultWrapper subclass named MyClaimSearchResultWrapper, and an extension property named MyExtension_Ext. You would add the following code to ClaimSearchResultWrapper:

"ClaimSearchResultWrapper": {
  "schemaDefinition": "ClaimSearchResultWrapper",
  "root": "gw.rest.core.cc.claim.v1.search.claims.ClaimSearchResultWrapper",
  "properties": {
    "myExtensionField_Ext": {
      "path": "(ClaimSearchResultWrapper as MyClaimSearchResultWrapper).MyExtensionField_Ext",
      "predicate": "ClaimSearchResultWrapper typeis MyClaimSearchResultWrapper"
    }
  }
}

Override the mapClaimSearchResult methods

In gw.rest.ext.cc.claim.v1.search.claims.ActiveClaimExtSearch, override the mapClaimSearchResult method. The override method must create an instance of your new ClaimSearchResultWrapper subclass and return it.

Also, in gw.rest.ext.cc.claim.v1.search.claims.ActiveClaimExtSearch, override the mapClaimSearchResultWrapperFields method. The override method must populate the new properties.

Given the previous example with a MyClaimSearchResultWrapper subclass and an extension property named MyExtension_Ext, the overrides might look like this:
override function mapClaimSearchResult(claims : IQueryBeanResult<ClaimSearchView>) : 
                                       List<ClaimSearchResultWrapper> {
 return claims.map(\c -> {
   var claimSearchResultWrapper = new MyClaimSearchResultWrapper();
   mapClaimSearchResultWrapperFields(c, claimSearchResultWrapper);
   return claimSearchResultWrapper
 })
}

override function mapClaimSearchResultWrapperFields(claimSearchView : ClaimSearchView, 
                                                    resultWrapper : ClaimSearchResultWrapper) {
 super.mapClaimSearchResultWrapperFields(claimSearchView, resultWrapper)
 mapExtensionFields(claimSearchView, resultWrapper as MyClaimSearchResultWrapper)
}

private function mapExtensionFields(claimSearchView : ClaimSearchView, resultWrapper : 
                                    MyClaimSearchResultWrapper) {
 resultWrapper.MyExtensionField_Ext = claimSearchView.Claim.MyExtensionField_Ext
}