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 support
<CriterionChoice> elements, limited to only
<CriterionChoice> nodes that have a
DateCriterionChoice or FinancialCriterion set
as their property, as well as any children option elements with mapped
targetProperty or cloudAPILabel values. You
can find these criterion mappings in search-config.xml. The
following example shows how some financial criteria are mapped:
<CriteriaDef entity="ClaimSearchCriteria" targetEntity="ClaimRpt">
<CriterionChoice property="FinancialCriterion">
<Option label="Java.Criterion.Option.Claim.OpenReserves" targetProperty="OpenReserves"/>
<Option label="Java.Criterion.Option.Claim.RemainingReserves" targetProperty="RemainingReserves"/>
<Option label="Java.Criterion.Option.Claim.TotalPayments" targetProperty="TotalPayments"/>
<Option label="Java.Criterion.Option.Claim.FuturePayments" targetProperty="FuturePayments"/>
<Option label="Java.Criterion.Option.Claim.TotalIncurredGross" cloudAPILabel="TotalIncurredGross"/>
<Option label="Java.Criterion.Option.Claim.TotalIncurredNet" cloudAPILabel="TotalIncurredNet"/>
</CriterionChoice>
</CriteriaDef>
To make additional date and financial criteria available for search, you must specify
the criterion choice and its mapped targetProperty or
cloudAPILabel. For example, the following example would make
the financial criterion TotalIncurredNetMinusOpenRecoveryReserves
available for search:
<CriteriaDef entity="ClaimSearchCriteria" targetEntity="ClaimRpt">
<CriterionChoice property="FinancialCriterion">
<Option label="Java.Criterion.Option.Claim.OpenReserves" targetProperty="OpenReserves"/>
<Option label="Java.Criterion.Option.Claim.RemainingReserves" targetProperty="RemainingReserves"/>
<Option label="Java.Criterion.Option.Claim.TotalPayments" targetProperty="TotalPayments"/>
<Option label="Java.Criterion.Option.Claim.FuturePayments" targetProperty="FuturePayments"/>
<Option label="Java.Criterion.Option.Claim.TotalIncurredGross" cloudAPILabel="TotalIncurredGross"/>
<Option label="Java.Criterion.Option.Claim.TotalIncurredNet" cloudAPILabel="TotalIncurredNet"/>
<Option label="Java.Criterion.Option.Claim.TotalIncurredNetMinusOpenRecoveryReserves" cloudAPILabel="TotalIncurredNetMinusOpenRecoveryReserves"/>
</CriterionChoice>
</CriteriaDef>
You can search by the following date and financial criteria options without making any changes:
Date Criteria:
LossDateReportedDateCloseDateCreateDate
Financial Criteria
OpenReservesRemainingReservesTotalPaymentsFuturePaymentsTotalIncurredGrossTotalIncurredNet
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.
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
}