Predefined Methods

This section describes the predefined methods available per object. There are two categories of predefined methods: generic methods available on all or many objects and specific methods only available on particular objects.

Generic Methods

This section describes generic methods available on all objects. A number of these methods return time-valid information. As a consequence, most methods take an as-of date as one of the input parameters. The as-of date parameter is always optional. If left unspecified, the method defaults to the as-of date specified by the signature.

asOf

The asOf method can be used to filter the elements of a list based on time-validity. It returns a list of the elements that are valid on a given date. However, for single-value dynamic fields, only one element can be valid at any given time, so this method will return that element (instead of a list containing the element). The latter only applies to dynamic fields, not to dynamic records.

Availability

This method is available on all lists containing time-valid elements. This includes lists of detail entities, lists of dynamic fields, and lists of dynamic records.

Parameters

Table 1. asOf
In or Out Type Description

In

java.sql.Date

The date on which the elements in the list should be valid.

Optional: if not specified, the default date that is associated with the dynamic logic signature will be used.

Out

  • For single-value dynamic fields: the dynamic field’s datatype

  • For all others: List

  • For single-value dynamic fields: the dynamic field value for the date

  • For all others: the list of elements that are valid on the date

Example: Detail Entities

Assume a certain person has the below addresses.

Table 2. Example: Detail Entities
Type City startDate endDate

Site

New York

2000-01-01

Mailing

New York

2000-01-01

2000-12-31

Mailing

Washington

2001-01-01

def date = java.sql.Date.valueOf("2001-04-21")
assert person.addressList.size() == 3
assert person.addressList.asOf(date).size() == 2
assert person.addressList.asOf(date).find({address -> address.addressType.code == "M"}).city == "Washington"
Example: Dynamic Records
assert claimLine.occupations.asOf().size() == 1
assert claimLine.occupations.asOf()[0].code == "FIRE"
assert claimLine.occupations.asOf()[0].risk == "H"
Example: Dynamic Fields (Multi-Value)
assert claimLine.occupations.asOf().size() == 1
assert claimLine.occupations.asOf()[0] == "Fireman"
Example: Dynamic Fields (Single-Value)
assert claimLine.occupations.asOf() == "Fireman"

getSystemProperty

Returns the value of the property with the passed key as input.

Availability

This method is available in the dynamic logic (Groovy script).

Table 3. getSystemProperty
In or Out Type Description

In

String

Key of the property

Out

String

Value of the property

lookUp

Looks up the object in the system on the passed input parameters.

Availability

This method is available in the dynamic logic (Groovy script).

Table 4. lookUp
In or Out Type Description

In

Class<?>

Class of the object that needs looking up.

In

Map<String,Object>

Map of key and value pairs to identify the object uniquely The key of the map must be an attribute name to search on, like Code or Start Date. The value must be the value that needs searching. So, it must be a string for Code or a date for a Date type argument.

Out

Object

Object that the search finds It is advisable to pass the parameters with restraint as the lookup restricts in providing only the first object.

Example
def premiumSchedule = lookUp(PremiumSchedule.class, ['code': 'PS1'])

lookUpDiagnosis

Returns the diagnosis object that matches the input character string

Availability

This method is available in the dynamic logic (groovy script)

Parameters

Table 5. lookUpDiagnosis
In or Out Type Description

In

String

Code of the diagnosis

In

String

Definition code of the diagnosis

Out

diagnosis

Diagnosis

lookUpFlexCode

Returns the flex code object that matches the input character string.

Availability

This method can be called without a base object.

Table 6. lookUpFlexCode
In / Out Type Description

In

String

Key value of the flexCode

In

String

Definition code of the flexCode

Out

flexCode

The flex code

Example
person.dynamicFieldYesNoIndicator = lookUpFlexCode("YES", "YES_NO")

lookUpInsurableEntity

Looks up the Insurable Entity in the system on the input parameters passed.

Availability

This method is available in the Dynamic Logic (Groovy script).

Table 7. lookUpInsurableEntity
In or Out Type Description

In

String

Code of the object or Person

In

String

Usage name of the Insurable Entity Type of the Insurable Entity

Out

Insurable Entity

Insurable Entity

lookUpPerson

Looks up the Person in the system on the input parameters passed.

Availability

This method is available in the Dynamic Logic (Groovy script).

Table 8. lookUpPerson
In or Out Type Description

In

String

Code of the Person

Out

Person

Person

lookUpProcedure

Looks up the procedure in the system based on the input parameters passed.

Availability

This method is available in the dynamic logic (groovy script)

Parameters

Table 9. lookUpProcedure
In or Out Type Description

In

String

Code of the procedure

In

String

Definition code of the procedure

Out

procedure

Procedure

lookUpProvider

Looks up the Provider in the system on the input parameters passed.

Availability

This method is available in the Dynamic Logic (Groovy script).

Table 10. lookUpProvider
In or Out Type Description

In

String

Code of the Provider

In

String

Definition Code of the Provider

Out

provider

Provider

test

A method that tests a dynamic logic:

  1. Follows the security restrictions of the unit under test (UUT).

  2. The application sets the transaction to rollback only. Any data changes to the database are temporary.

    Availability

    This method is available for a Dynamic Logic (Groovy script).

Table 11. test
In or Out Type Description

In

String

Dynamic logic Code of the UUT

In

Map<String,Object>

Map with the input parameters of the UUT

Out

DynamicLogicResult

Contains the result of the test and the exception class if the test encounters any errors.

Attributes of this object are:

  • result

  • exception

Example
def result = test("SPECIAL_BENEFIT_SELECT", [
    "claim" : claim
])

Object Methods

In this section, the methods are described that are only available on specific objects. For each method, the following information is given:

  • The purpose of the method.

  • On which object(s) the method can be called.

  • Description of the parameters.

  • An example of the usage.

addAssignedProvider

Adds an assigned provider to a person.

Availability

This method is available for the Person object. Its purpose is to add an assigned provider through function dynamic logic:

Parameters

Table 12. addAssignedProvider
In or Out Type Description

In

String

Provider code. Mandatory

In

String

Provider flex code definition code. Mandatory

In

String

Provider assignment type code. Mandatory

In

Date

Assigned provider start date. Mandatory

In

Date

Assigned provider end date. Optional

Example
person.addAssignedProvider("1234567890", "US_PROVIDER", "PCP", java.sql.Date.valueOf("2017-01-01"))

addClaimHold

Adds a financial hold to a claim. The purpose of this method to put a financial hold on a claim when the claim is being finalized and a financial transaction is created for it; the start datetime of the hold is automatically set to the moment of processing.

Availability

This method is available only for Claim. The method is overloaded and the next two sets of parameters are allowed:

Parameters

Table 13. addClaimHold
In or Out Type Description

In

String

The code of the financial hold type (mandatory)

In

Datetime

The expiration datetime of the financial hold (optional)

Example
claim.addClaimHold('PAYMENT_HOLD', null)

Parameters

Table 14. addClaimHold - Parameters"
In or Out Type Description

In

String

The code of the financial hold type (mandatory)

In

Datetime

The expiration datetime of the financial hold (optional)

In

Boolean

Is this financial hold automatically released when a new version is created? (optional)

In

String

An additional remark on why a hold is placed (optional)

Example
claim.addClaimHold('PAYMENT_HOLD', null, true, 'A remark')

addCtrCalloutHistory

Adds a ctrCalloutHistory to the ctrStatusHistory.

Availability

This method is only available for ctrStatusHistory

Parameters

Table 15. addCtrCalloutHistory
In or Out Type Description

In

CtrCalloutHistory

The CtrCalloutHistory to add to the ctrStatusHistory

See the example for addCtrStatusHistory

addCtrClaimDiagnosis

Adds a ctrClaimDiagnosis to the ctrClaim.

Availability

This method is only available for ctrClaim

Parameters

Table 16. addCtrClaimDiagnosis
In or Out Type Description

In

CtrClaimDiagnosis

The CtrClaimDiagnosis to add to the CtrClaim

Example
// create new ctrClaimDiagnosis
def ctrClaimDiagnosis = new CtrClaimDiagnosis()
// transfer attributes
ctrClaimDiagnosis.code = claimDiagnosis.diagnosis.code
...
// attach to claim
ctrClaim.addCtrClaimDiagnosis(ctrClaimDiagnosis)

addCtrClaimHold

Adds a financial hold to a ctrClaim. The purpose of this method to put a financial hold on a ctrClaim to be able to control each version being approved and a financial transaction is created for it; the start datetime of the hold is automatically set to the moment of processing.

Availability

This method is available only for ctrClaim. The method is overloaded and the next two sets of parameters are allowed:

Parameters

Table 17. addCtrClaimHold
In or Out Type Description

In

String

The code of the financial hold type (mandatory)

In

Datetime

The expiration datetime of the financial hold (optional)

Example
ctrClaim.addCtrClaimHold("PAYMENT_HOLD", null)

Parameters

Table 18. addCtrClaimHold - Parameters
In or Out Type Description

In

String

The code of the financial hold type (mandatory)

In

Datetime

The expiration datetime of the financial hold (optional)

In

Boolean

Is this financial hold automatically released when a new version is created? (optional)

In

String

An additional remark on why a hold is placed (optional)

Example
ctrClaim.addCtrClaimHold("PAYMENT_HOLD", null, true, "A remark")

addCtrClaimLineBenefitSpecification

Adds a ctrClaimLineBenefitSpecification to the ctrClaimLine.

Availability

This method is only available for ctrClaimLine

Parameters

Table 19. addCtrClaimLineBenefitSpecification
In or Out Type Description

In

CtrClaimLineBenefitSpecification

The CtrClaimLineBenefitSpecification to add to the CtrClaimLine

Example
// create new ctr claim line benefit specification
def ctrClaimLineBenefitSpecification = new CtrClaimLineBenefitSpecification()

// transfer attributes
ctrClaimLineBenefitSpecification.benefitSpecificationCode = claimLineBenefitSpecification.code
...
// attach to ctr claim line
ctrClaimLine.addCtrClaimLineBenefitSpecification(ctrClaimLineBenefitSpecification)

addCtrClaimLineContractReference

Adds a ctrClaimLineContractReference to the ctrClaimLine.

Availability

This method is only available for ctrClaimLine

Parameters

Table 20. addCtrClaimLineContractReference
In or Out Type Description

In

CtrClaimLineContractReference

The CtrClaimLineContractReference to add to the CtrClaimLine

Example
// create new ctr contract reference
def ctrClaimLineContractReference = new CtrClaimLineContractReference()
// transfer attributes
ctrClaimLineContractReference.code = claimLineContractReference.contractReference.code
...
// attach to ctrClaimLine
ctrClaimLine.addCtrClaimLineContractReference(ctrClaimLineContractReference)

addCtrClaimLineCoverage

Adds a ctrClaimLineCoverage to the ctrClaimLine.

Availability

This method is only available for ctrClaimLine

Parameters

Table 21. addCtrClaimLineCoverage
In or Out Type Description

In

CtrClaimLineCoverage

The CtrClaimLineCoverage to add to the CtrClaimLine

Example
// create new ctr claim line coverage
def ctrClaimLineCoverage = new CtrClaimLineCoverage()
// transfer attributes
ctrClaimLineCoverage.action = claimLineCoverage.action
...
// attach to ctr claim line
ctrClaimLine.addCtrClaimLineCoverage(ctrClaimLineCoverage)

addCtrClaimLineDiagnosis

Adds a ctrClaimLineDiagnosis to the ctrClaimLine.

Availability

This method is only available for ctrClaimLine

Parameters

Table 22. addCtrClaimLineDiagnosis
In or Out Type Description

In

CtrClaimLineDiagnosis

The CtrClaimLineDiagnosis to add to the CtrClaimLine

Example
// create new ctrClaimLineDiagnosis
def ctrClaimLineDiagnosis = new CtrClaimLineDiagnosis()
// transfer attributes
ctrClaimLineDiagnosis.code = claimLineDiagnosis.diagnosis.code
...
// attach to claim
ctrClaimLine.addCtrClaimLineDiagnosis(ctrClaimLineDiagnosis)

addCtrClaimLineMessage

Adds a ctrClaimLineMessage to the ctrClaimLine.

Availability

This method is only available for ctrClaimLine

Parameters

Table 23. addCtrClaimLineMessage
In or Out Type Description

In

CtrClaimLineMessage

The CtrClaimLineMessage to add to the CtrClaimLine

Example
// create new ctrClaimLineMessage
def ctrClaimLineMessage = new CtrClaimLineMessage()
// transfer attributes
ctrClaimLineMessage.code = claimLineMessage.message.code
...
// attach to claim
ctrClaimLine.addCtrClaimLineMessage(ctrClaimLineMessage)

addCtrClaimLineModifier

Adds a ctrClaimLineModifier to the ctrClaimLine.

Availability

This method is only available for ctrClaimLine

Parameters

Table 24. addCtrClaimLineModifier
In or Out Type Description

In

CtrClaimLineModifier

The CtrClaimLineModifier to add to the CtrClaimLine

Example
// create new ctr modifier
def ctrClaimLineModifier = new CtrClaimLineModifierDomain()
// transfer attributes
ctrClaimLineModifier.code = claimLineModifier.modifier.code
...
// attach to ctrClaimLine
ctrClaimLine.addCtrClaimLineModifier(ctrClaimLineModifier)

addCtrClaimLineProviderPricingClause

Adds a ctrClaimLineProviderPricingClause to the ctrClaimLine.

Availability

This method is only available for ctrClaimLine

Parameters

Table 25. addCtrClaimLineProviderPricingClause
In or Out Type Description

In

CtrClaimLineProviderPricingClause

The CtrClaimLineProviderPricingClause to add to the CtrClaimLine

Example
// create new ctr claim line provider pricing clause
def ctrClaimLineProviderPricingClause = new CtrClaimLineProviderPricingClause()

// transfer attributes
ctrClaimLineProviderPricingClause.sequence = claimLineProviderPricingClause.sequence
...
// attach to ctr claim line
ctrClaimLine.addCtrClaimLineProviderPricingClause(ctrClaimLineProviderPricingClause)

addCtrClaimMessage

Adds a ctrClaimMessage to the ctrClaim.

Availability

This method is only available for ctrClaim

Parameters

Table 26. addCtrClaimMessage
In or Out Type Description

In

CtrClaimMessage

The CtrClaimMessage to add to the ctrClaim

Example
// create new ctrClaimMessage
def ctrClaimMessage = new CtrClaimMessage()
// transfer attributes
ctrClaimMessage.code = claimMessage.message.code
...
// attach to claim
ctrClaim.addCtrClaimMessage(ctrClaimMessage)

addCtrClaimSubLine

Adds a ctrClaimSubLine to the ctrClaimLine.

Availability

This method is only available for ctrClaimLine

Parameters

Table 27. addCtrClaimSubLine
In or Out Type Description

In

CtrClaimSubLine

The CtrClaimSubLine to add to the CtrClaimLine

Example
// create new ctr sub line
def ctrClaimSubLine = new CtrClaimSubLine()
// transfer attributes
ctrClaimSubLine.sequence = claimSubLine.sequence
...
// attach to ctr claim line
ctrClaimLine.addCtrClaimSubLine(ctrClaimSubLine)

addCtrClaimUnfinalizeReason

adds a ctrClaimUnfinalizeReason to the ctrClaim.

Availability

This method is only available for ctrClaim

Parameters

Table 28. addCtrClaimUnfinalizeReason
In or Out Type Description

In

CtrClaimUnfinalizeReason

The CtrClaimUnfinalizeReason to add to the CtrClaim

Example
// create new
def ctrClaimUnfinalizeReason = new CtrClaimUnfinalizeReason()
// transfer attributes
ctrClaimUnfinalizeReason.code = claimUnfinalizeReason.unfinalizeReason.code
...
// attach to ctrClaim
ctrClaim.addCtrClaimUnfinalizeReason(ctrClaimUnfinalizeReason)

addCtrPendReasonHistory

Adds a ctrPendReasonHistory to the ctrStatusHistory.

Availability

This method is only available for ctrStatusHistory

Parameters

Table 29. addCtrPendReasonHistory
In or Out Type Description

In

CtrPendReasonHistory

The CtrPendReasonHistory to add to the ctrStatusHistory

See the example for addCtrStatusHistory

addCtrStatusHistory

Adds a ctrStatusHistory to the ctrClaim.

Availability

This method is only available for ctrClaim

Parameters

Table 30. addCtrStatusHistory
In or Out Type Description

In

CtrStatusHistory

The CtrStatusHistory to add to the CtrClaim

Example
// Transfer Status History
for (claimStatusHistory in claim.claimStatusHistoryList) {
    def ctrClaimStatusHistory = new CtrStatusHistory()
    ctrClaimStatusHistory.status = claimStatusHistory.status
    ctrClaimStatusHistory.statusDateTime = claimStatusHistory.dateTime
    ctrClaimStatusHistory.transactionSourceCode = claimStatusHistory.transactionSource?.code
    ctrClaimStatusHistory.referenceCode = claimStatusHistory.referenceCode
    for (claimPendReasonHistory in claimStatusHistory?.claimPendReasonHistoryList) {
        def ctrPendReasonHistory = new CtrPendReasonHistory()
        ctrPendReasonHistory.code = claimPendReasonHistory.pendReason.code
        ctrPendReasonHistory.externalCode = claimPendReasonHistory.pendReason.externalCode
        ctrPendReasonHistory.billProviderReference = claimPendReasonHistory.billProviderReference
        ctrPendReasonHistory.claimLineCode = claimPendReasonHistory.claimLineCode
        ctrPendReasonHistory.userLoginName = claimPendReasonHistory.resolvedBy?.loginName
        ctrPendReasonHistory.resolvedDateTime = claimPendReasonHistory.resolvedDateTime
        ctrPendReasonHistory.referenceCode = claimPendReasonHistory.referenceCode
        ctrPendReasonHistory.transactionSourceCode = claimPendReasonHistory.transactionSource?.code
        ctrPendReasonHistory.memberText = claimPendReasonHistory.pendReason.externalTextMember
        ctrPendReasonHistory.providerText = claimPendReasonHistory.pendReason.externalTextProvider
        ctrClaimStatusHistory.addCtrPendReasonHistory(ctrPendReasonHistory)
    }
    for (claimCalloutHistory in claimStatusHistory?.claimCalloutHistoryList) {
        if (claimCalloutHistory.displayInUi == "Y")
        {
        def ctrCalloutHistory = new CtrCalloutHistory()
        ctrCalloutHistory.definitionCode = claimCalloutHistory.calloutDefinition.code
        ctrCalloutHistory.definitionDescription = claimCalloutHistory.calloutDefinition.descr
        ctrCalloutHistory.requestSentDatetime = claimCalloutHistory.requestSentDatetime
        ctrCalloutHistory.responseReceivedDatetime = claimCalloutHistory.responseReceivedDatetime
        ctrClaimStatusHistory.addCtrCalloutHistory(ctrCalloutHistory)
        }
    }
    ctrClaim.addCtrStatusHistory(ctrClaimStatusHistory)
}

addDynamicRecord

Adds a new dynamic record to an object. If the record’s usage is configured as time-valid, then the record supports two additional attributes. They are startDate and endDate, of which the former is mandatory.

Availability

This method is available for all objects that support dynamic records. It is available for functions, but not for conditions.

Table 31. addDynamicRecord
In or Out Type Description

In

String

The usage name

In

Map

The attributes of the record, structured as name and value pairs

Example: Add a Non-Time-Valid Record

The following logic adds a non-time-valid record:

person.addDynamicRecord( "occurrence"
                      , [ code        : "06"
                        , description : "Crime victim"
                        ]
                      )
Example: Add A Time-Valid Record

Add a time-valid record in the same manner, except the map contains two extra attributes:

person.addDynamicRecord( "dynRecord1"
                      , [ code        : "06"
                        , description : "dynRecord 1 value 6"
                        , startDate   : person.dateOfBirth
                        , endDate     : person.endDate
                        ]
                      )

addDiagnosis

This method is available only for the Claim and ClaimLine entities. It adds a diagnosis code to a claim or claim line through a dynamic logic, within a derivation rule.

Availability

This method is available for a claim and claim line.

Parameters

Table 32. addDiagnosis
In or Out Type Description

In

String

Code of the diagnosis

In

String

Definition code of the diagnosis

In

String

Code of the diagnosis type

In

Integer

The sequence number of the claim or claim line diagnosis

Example
claimLine.addDiagnosis('E11.9','ICD-10','P',1)

addMessage

Adds a message to a claim, bill or claim line, in other words adds a claim message, bill message or claim line message.

Availability

This method is available for Claim, Bill and ClaimLine. Its purpose is to add a message through function dynamic logic; a couple of examples

  • through a derivation rule, a dynamic field is set. Apart from having the value of the dynamic field updated, it is also desirable to have a message attached to the claim line with that information. In this example, the message code and parameters will be known.

  • through authorization matching, the messages from a denied authorizations need to be passed on to the claim line. In this example, the message code and parameters first need to be picked up from the authorization before they can be passed on.

The origin of the claim, bill or claim line message that will be attached, needs to come from the context. It is either 'SANITY CHECKS', 'PRE PRICING', 'ENROLLMENT', 'RESERVATION', 'PRICING', 'PRICING NO RECALCULATION', 'PRE BENEFITS', 'BENEFITS' or 'COVERAGE'. This implies for example that using the addMessage convenience method in a claim transaction scenario will fail, because no appropriate origin exists; functionally this is correct because no change to a FINALIZED claim should be possible when writing a claim to the claim transaction repository.

Parameters

Table 33. addMessage
In or Out Type Description

In

String

Message code. Mandatory

In

Object[]

Message arguments. Optional

Example
def authorization = authorizationList[0]
def authorizationMessage = authorization.authorizationMessageList[0]
claimLine.addMessage(authorizationMessage.message.code, authorizationMessage.value0, authorizationMessage.value1)

addModifier

Adds one or more modifiers to a claim line, in other words adds claim line modifier(s).

Availability

This method is available for ClaimLine object in function dynamic logic. Its purpose is to have the possibility to add a modifier through function dynamic logic. A typical use case would be to add a modifier to a claim line before it is sent out to iCES because iCES needs the modifier in order to find the correct pricing information, for example in a derivation rule or a callout rule.

One or more modifiers are given as input parameter. If the claim line modifier does not yet exist, it is created; if it already exists, nothing happens.

Parameters

Table 34. addModifier
In or Out Type Description

In

StringList

Modifier code(s). Mandatory

Example
claimLine.addModifier('26', 'TC')

clearLocationProviderOnAllClaimLines

Clears the location providers (including unmatched fields) on all claim lines of a claim. Note that replaced claim lines are ignored, that is the location providers on replaced claim lines are not cleared.

Availability

This method is available for the Claim object in function dynamic logic. Its purpose is to clear the location providers on all claim lines of a claim using function dynamic logic.

A typical use case is when a claim is received in Oracle Health Insurance which has a claim level location provider and one or more (different) claim line location providers, but the pricing for all claim lines should be done using one location provider (the location provider on the claim level).

Example
claim.clearLocationProviderOnAllClaimLines()

clearServiceProviderOnAllClaimLines

Clears the service providers (including unmatched fields) on all claim lines of a claim. Note that replaced claim lines are ignored, that is the service providers on replaced claim lines are not cleared.

Availability

This method is available for the Claim object in function dynamic logic. Its purpose is to clear the service providers on all claim lines of a claim using function dynamic logic which can be called by a button.

A typical use case is when a claim is received in Oracle Health Insurance which has a claim level service provider and one or more (different) claim line service providers, but the pricing for all claim lines should be done using one service provider (the service provider on the claim level).

Example
claim.clearServiceProviderOnAllClaimLines()

deleteClaimLineLimit

Delete one or more claim line limits.

Availability

This method is available only for ClaimLine. Its purpose is to delete a claim line limit through dynamic logic, noticeably within a derivation rule. If the In parameters are left unspecified, then all claim line limits for that claim line are deleted. If one or more of the In parameters is specified then only the claim line limits for that claim line and the specified limit/product are deleted.

Parameters

Table 35. deleteClaimLineLimit
In or Out Type Description

In

String

The code of the limit (optional)

In

String

The code of the product to which the limit is to be applied(optional)

Example
claimLine.deleteClaimLineLimit('MEMBER_OOPM','COPAY')
claimLine.deleteClaimLineLimit(null,null)

deleteClaimLineLimitWithCategory

Delete one or more claim line limits with cover withhold category.

Availability

This method is available only for ClaimLine. Its purpose is to delete a claim line limit through dynamic logic, noticeably within a derivation rule. If the In parameters are left unspecified, then all claim line limits for that claim line are deleted. If one or more of the In parameters is specified then only the claim line limits for that claim line and the specified limit/product/cover withhold category are deleted.

Parameters

Table 36. deleteClaimLineLimitWithCategory
In or Out Type Description

In

String

The code of the limit (optional)

In

String

The code of the cover withhold category (optional)

In

String

The code of the product to which the limit is to be applied (optional)

Example
claimLine.deleteClaimLineLimitWithCategory('MEMBER_OOPM','COPAY','PROD')
claimLine.deleteClaimLineLimitWithCategory(null,null,'PROD')

deleteClaimLineParameter

Delete one or more claim line parameters.

Availability

This method is available only for ClaimLine. Its purpose is to delete a claim line parameter through dynamic logic, noticeably within a derivation rule. If both a cover withhold category and a product are specified, then only that parameter is deleted. If product is left unspecified, then all parameters for that claim line and cover withhold category are deleted. If cover withhold category is left unspecified, then all parameters for that claim line and product are deleted. If both cover withhold category and product are left unspecified, then all parameters for that claim line are deleted.

Parameters

Table 37. deleteClaimLineParameter
In or Out Type Description

In

String

The code of the cover withhold category (optional)

In

String

The code of the product to which the use is limited (optional)

Example
claimLine.deleteClaimLineParameter('COPAY','PROD')
claimLine.deleteClaimLineParameter(null,'PROD')

deleteDiagnosis

This method works on the Claim and ClaimLine entities. It removes a diagnosis code from a claim or claim line through dynamic logic, within a derivation rule.

Availability

This method is available for a claim and claim line.

Parameters

Table 38. deleteDiagnosis
In or Out Type Description

In

String

Code of the diagnosis

In

String

Definition code of the diagnosis

Example
claimLine.deleteDiagnosis('250.00','ICD-9')

deleteDynamicRecord

Deletes an existing dynamic record. If a key attribute is configured on the record’s definition, then the second input argument can delete a dynamic record with a specific key value. If no record with a matching key value is found, nothing is deleted. If multiple records match with the input key value, only one record is deleted. If the input key is NULL, or if no key attribute is configured at all, then all associated dynamic records are deleted.

Availability

This method is available for all objects that support dynamic records. It is available for functions, but not for conditions.

Table 39. deleteDynamicRecord
In or Out Type Description

In

String

The usage name

In

String

The record’s key attribute value, or null.

Examples

Assume an existing person has the following three values for the dynRecord1 record. This dynamic record has two attributes: code and description, where code is configured as the key.

Table 40. Examples
Code Description

01

dynRecord1 value 1

02

dynRecord1 value 2

03

dynRecord1 value 3

The following logic deletes the record with code 02 while leaving the other two records intact.

person.deleteDynamicRecord("dynRecord1", "02")

The following logic deletes all three occurrences in records.

person.deleteDynamicRecord("dynRecord1", null)

filterFeeScheduleLineModifierSpecificity

Filter an input list of fee schedule lines; return a version of the list including only those fee schedule lines that are most specific with regard to modifiers matched.

Availability

This is available only for ClaimLine, intended for use within function dynamic logic with signature "Fee Schedule Line Priority". Its purpose is to filter an input list of fee schedule lines based on modifier specificity. For modifier specificity this is as simple as determining the fee schedule line(s) with the most modifiers specified, and returning a list with only those fee schedule lines that specify that number of modifiers.

Parameters

Table 41. filterFeeScheduleLineModifierSpecificity
In or Out Type Description

In

List of FeeScheduleLines

The input list of fee schedule lines.

Out

List of FeeScheduleLines

The filtered list of fee schedule lines.

Example
feeScheduleLineList = claimLine.filterFeeScheduleLineModifierSpecificity(feeScheduleLineList)

Consider the following claim line and consequent filtering of fee schedule lines:

Table 42. Consider a Claim Line
Claim Line Procedure Modifiers

1

CPT 99201

TC, XY, AB

Fee Schedule Lines

Table 43. Fee Schedule Lines
Line Modifiers Included in output list?

1

N - specificity value: 0

2

TC

N - specificity value: 1

3

TC, XY

Y - specificity value: 2

4

TC, AB

Y - specificity value: 2

filterFeeScheduleLineProcedureSpecificity

Filter an input list of fee schedule lines; return a version of the list including only those fee schedule lines that are most specific with regard to procedures matched.

Availability

This is available only for ClaimLine, intended for use within function dynamic logic with signature "Fee Schedule Line Priority". Its purpose is to filter an input list of fee schedule lines based on procedure specificity. This is done by determining if the fee schedule line 'directly matches' one, two or all three procedure fields on the claim line. A 'direct match' means that the claim line procedure is not null and equals (at least) one of the procedures of the fee schedule line and/or is part of (at least) one of the procedure groups of the fee schedule line. As such a specificity value is calculated for each fee schedule line in the input list:

  • Specificity value 1 if the fee schedule line directly matches one of the claim line’s procedures. A fee schedule line has at least this specificity, otherwise it would not have been selected to price the claim line.

  • Specificity value 2 if the fee schedule line directly matches two of the claim line’s procedures.

  • Specificity value 3 if the fee schedule line directly matches all three procedures of the claim line. This is the maximum specificity a fee schedule line can have.

The maximum specificity value amongst the fee schedule lines in the input list is the standard by which the list will be filtered. In the output list of fee schedule lines, only those lines of the input list are included that have the maximum specificity value.

Note that no distinction in specificity is made between procedure groups and procedures, for example a fee schedule line that matches on one procedure is considered to be just as specific as a fee schedule line that matches on one procedure group.

Parameters

Table 44. filterFeeScheduleLineProcedureSpecificity
In or Out Type Description

In

List of FeeScheduleLines

The input list of fee schedule lines.

Out

List of FeeScheduleLines

The filtered list of fee schedule lines.

Example
feeScheduleLineList = claimLine.filterFeeScheduleLineProcedureSpecificity(feeScheduleLineList)

Consider the following claim line and consequent filtering of fee schedule lines:

Table 45. Claim Line with Filtering of Fee Schedule Line
Claim Line Procedure Procedure 2 Procedure 3

1

CPT 99201

REV 805

NDC 812

Fee Schedule Lines

Table 46. Fee Schedule Lines
Line Procedure Proc. Group Procedure 2 Proc. Group 2 Procedure 3 Included in output list?

1

CPT 99201

N - specificity value: 1

2

CPT_RANGE

N - specificity value: 1

3

CPT 99201

REV 805

N - specificity value: 2

4

CPT_RANGE

REV_RANGE

N - specificity value: 2

5

CPT 99201

REV_RANGE

N - specificity value: 2

6

CPT_RANGE

REV_RANGE

NDC 812

Y - specificity value: 3

7

CPT 99201

REV 805

NDC 812

Y - specificity value: 3

Note that this example assumes that CPT 99201 is in the group 'CPT_RANGE' and REV 805 is in the group 'REV_RANGE'.

generatedWorkflowNotification

Checks if a claim has (recently) generated a work flow event. Note that this check is based on the current setup, which gives no guarantee that a work flow notification message was actually sent,that is, the setup may have been different at the time that the claim pended.

Availability

This method is available for the claim object.

Parameters

Table 47. generatedWorkflowNotification
In or Out Type Description

Out

Boolean

True if the directly preceding status was a MANUAL status and at least one of the pertaining pend reasons is configured to be published.

Example
if claim.generatedWorkflowNotification()

getAge

Calculates the age of a person at a given date. Returns the age in years.

Availability

This method is only available for person objects.

Parameters

Table 48. getAge
In or Out Type Description

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

Integer

Age of the invoking person on the as-of date

Example
def age = person.getAge()

getAuthorizations

The purpose of this function is to retrieve a list of authorizations that have a consumption on the claim line if any.

Availability

This method is only available for claimLine

Parameters

Table 49. getAuthorizations
In or Out Type Description

Out

List<Authorization>

List of authorizations available on the claim line if any.

Example
def auhtorizationList = claimLine.getAuthorizations()

getCountryRegions (Provider)

Get the country regions of a provider. Use addresses at given point in time. Returns the country regions if found, null otherwise.

Availability

This method is available on provider objects.

Parameters

Table 50. getCountryRegions (Provider)
In or Out Type Description

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

CountryRegionList

For individual providers: returns the country regions of the invoking provider’s rendering addresses (specified on the related service addresses) on the as-of date.

For organization providers: returns the country regions of the invoking provider’s service addresses on the as-of date.

Example
countryRegions = provider.getCountryRegions()

getCountryRegion (Relation)

Get the country region of a relation. Use address of given type at given point in time. Returns the country region if found, null otherwise.

Availability

This method is available on relation objects.

Parameters

Table 51. getCountryRegion (Relation)
In or Out Type Description

In

Date

As of date for time validity (optional in case the signature defines adefault date)

In

String

Address type code. Optional, when not specified, the default address type is used.

Out

CountryRegion

Returns the country region of the invoking relation’s address on the as-of date.

Example
countryRegion = person.getCountryRegion()

getDynamicRecords

Retrieves the dynamic record or records of a particular object. The output parameter type depends on the record’s definition. Check the detailed description in the section below.

Dynamic records are also available as attributes of an entity. Access them directly from the object with a usage name, instead of explicitly invoking this method. See examples.

Availability

This method is available for all objects that support dynamic records.

Single-value and Non-time-valid

This method will return a single record if the record definition has both single-value and non-time-valid configurations.

Table 52. getDynamicRecords
In or Out Type Description

In

String

A usage name.

Out

Map

The attributes of the record can be a name and a value pair.

Example

assert claim.getDynamicRecords("hobby").name == "Cricket"
assert claim.getDynamicRecords("hobby").level.code == "BEGINNER"

assert claim.hobby.name == "Cricket"
assert claim.hobby.level.code == "BEGINNER"

Multi-value or Time-valid

This method will return a list of records if the record definition has either multi-value or time-valid configurations.

Table 53. Multi-value or Time-valid
In or Out Type Description

In

String

A usage name.

Out

List

A list of records. Each record represents a map of attribute names or value pairs.

Example

assert claim.getDynamicRecords("hobbies").size() == 2
assert claim.getDynamicRecords("hobbies")[0].name == "Cricket"
assert claim.getDynamicRecords("hobbies")[1].name == "Soccer"

assert claim.hobbies.size() == 2
assert claim.hobbies[0].name == "Cricket"
assert claim.hobbies[1].name == "Soccer"

getPrimaryDiagnosis

Returns the primary diagnosis on a claim, bill or claim line. Returns Null if no primary diagnosis exists. The primary diagnosis of a claim, bill or claim line is the diagnosis with the lowest sequence.

Availability

This method is available for claim, claim line and bill objects.

Parameters

Table 54. getPrimaryDiagnosis
In or Out Type Description

Out

Diagnosis

Out of all the diagnoses in the list, the one with the lowest value for the "sequence" field

Example
def primaryDiagnosis = claimLine.getPrimaryDiagnosis()

getTitles

This method returns a string containing all the titles of the person or individual provider separated by blank spaces. The titles are sorted on display order. If no display order is available or several titles have the same display order, the alphabetic ordering of the title applies.

Availability

This method is available on person and individual provider objects.

Parameters

Table 55. getTitle
In or Out Type Description

In

String

'A' returns al post-name titles, 'B' returns all pre-name titles.

Out

String

Space separated list of the invoking person’s titles

Example
return person.getTitles('B') + ' ' + person.name + ' ' + person.getTitles('A')

getWorkingCopyClaim

Retrieves the working copy of the Claim Transaction.

Availability

This method is only available for ctrClaim

Parameters

Table 56. getWorkingCopyClaim
In or Out Type Description

Out

Claim

Working Copy of the claim transaction

Example
def claim = ctrClaim.getWorkingCopyClaim()

getWorkflowPendReasons

This method returns a list with an entry for each pend reason in the context of the Claim. It returns the list with publishMessage = true". The list contains code, description, priority of the pend reason and the list is ordered by priority.

Availability

This method is available for Claim object.

Parameters:

Table 57. getWorkflowPendReasons
In or Out Type Description

Out

String

The Code of the pend reason.

Out

Description

The description of the pend reason.

Out

Numeric

The priority of the pend reason.

Out

Boolean

The pend reason list is returned when publishMessage = True.

getClaimLineWorkflowPendReasons

This method returns a map with a key value in the context of the Claim, for every claim line that has pend reasons, with the pend reasons attached on the claim line. The key is the sequence of the claim line.

For example, claim line 1 has pend reason P1 and P2, and claim line 2 has pend reason P1, P3, and P4. Then the result of this method is a map with a key value for every claim line that has pend reasons.

  • Key 1 has a list with pend reasons P1 and P2,

  • Key 2 has a list with pend reasons P1, P3 and P4.
    The contents of the list are identical to the getWorkflowPendReasons method.

    Availability

    This method is only available for Claim object.

Parameters:

Table 58. getClaimLineWorkflowPendReasons
In or Out Type Description

Out

String

The Code of the pend reason.

Out

Description

The description of the pend reason.

Out

Numeric

The priority of the pend reason.

Out

Boolean

The pend reason map is returned when publishMessage = True.

hasFatalMessage

Returns true if one or more fatal messages are attached to the claim line, bill or claim. Returns false otherwise. So, if called on the line, the bill and claim messages are also checked. If called on the bill, the claim messages are also checked

Availability

This method is available for claim, claim line and bill objects

Parameters

Table 59. hasFatalMessage
In or Out Type Description

In

List of Strings

The list of message origins that should be taken into account. Optional

Out

Boolean

True if at least one fatal message belonging to one of the spec ified origins exists. If no origin is specified, then a fatal message of any origin will cause the return value to be true.

Possible values for the message origin are: ADJUDICATION, BENEFITS, COVERAGE, ENROLLMENT, EXTERNAL, MANUAL, PAYMENT STATUS, PRE BENEFITS, PRE PRICING, PRICING, PRICING LIMIT, PRICING NO RECALCULATION, RESERVATION and SANITY CHECKS

Example
if claimLine.hasFatalMessage()
if claimLine.hasFatalMessage('PRE BENEFITS')
if claimLine.hasFatalMessage('PRE BENEFITS', 'PRE PRICING')

hasSpecialty

Checks whether a provider has a specialty at a certain point in time. Returns true when that is the case, false otherwise.

Availability

This method is available for provider objects, both individual and organizational providers.

Parameters

Table 60. hasSpecialty
In or Out Type Description

In

String

Code of the specialty

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

Boolean

True the invoking provider has a provider specialty that matches the code on the as-of date

Example
provider.hasSpecialty('DERMATOLOGY')

hasTag

Determines whether a relation has a certain tag at a given point in time. Returns true if this is the case, false otherwise.

Availability

This method is available on relation objects.

Parameters

Table 61. hasTag
In or Out Type Description

In

String

Code of the tag type

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

Boolean

True of the invoking relation has a tag of the specified type on the as-of date

Example
relation.hasTag('VIP')

inCountryRegionGroup

Checks whether a country region is part of a country region group. Returns true when that is the case, false otherwise.

Availability

This method is only available for country region objects.

Parameters

Table 62. inCountryRegionGroup
In or Out Type Description

In

String

Code of the country region group. (mandatory)

Out

Boolean

True if the invoking country region belongs to the group

Example
countryRegion.inCountryRegionGroup('NORTHWEST')

inDiagnosisGroup

Checks whether a diagnosis is part of a diagnosis group or of at least one diagnosis group if a list of diagnosis groups is passed at a certain point in time. Returns true when that is the case, false otherwise.

Availability

This method is only available for diagnosis objects.

Parameters

Table 63. inDiagnosisGroup
In or Out Type Description

In

String

Code of one diagnosis group or a comma-separated list of diagnosis groups

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

Boolean

True if the invoking diagnosis belongs to the given group or at least one of the given groups on the as-of date.

Example

Check whether a diagnosis is part of a specific diagnosis group:

diagnosis.inDiagnosisGroup('BACKINJURY')

Check whether a diagnosis is part of at least one diagnosis group in a list of groups:

diagnosis.inDiagnosisGroup('EVAL_MGMT_DX,GYN_R_DX,TMD_DX')

If it is required to check if a diagnosis is in at least one of a list of diagnosis groups (on a certain date) use the comma-separated list capability for efficiency reasons.

inFlexCodeGroup

Checks whether a flex code is part of a flex code group or of at least one flex code group if a list of flex code groups is passed at a certain point in time. Returns true when that is the case, false otherwise.

Availability

This method is only available for flex code objects.

Parameters

Table 64. inFlexCodeGroup
In or Out Type Description

In

String

Code of one flex code group or a comma-separated list of flex code groups

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

Boolean

True if the invoking flex code belongs to the given group or at least one of the given groups on the as-of date

Example

Check whether a procedure is part of a specific procedure group:

flexCode.inFlexCodeGroup('FLEXCODEGROUP1')

Check whether a flex code is part of at least one flex code group in a list of groups:

flexCode.inFlexCodeGroup('FLEXCODEGROUP1,FLEXCODEGROUP2,FLEXCODEGROUP3')

If it is required to check if a flex code is in at least one of a list of flex code groups (on a certain date) use the comma-separated list capability for efficiency reasons.

inLocationTypeGroup

Checks whether a location type is part of a location type group. Returns true when that is the case, false otherwise.

Availability

This method is only available for location type objects.

Parameters

Table 65. inLocationTypeGroup
In or Out Type Description

In

String

Code of the location type group. (mandatory)

Out

Boolean

True if the invoking location type belongs to the group

Example
locationType.inLocationTypeGroup('MEDICAL')

inMessageGroup

Checks whether a message is part of a message group. Returns true when that is the case, false otherwise.

Availability

This method is only available for message objects.

Parameters

Table 66. inMessageGroup
In or Out Type Description

In

String

Code of the message group. (mandatory)

Out

Boolean

True if the invoking message belongs to the group

Example
message.inMessageGroup('FRAUD')

inProcedureGroup

Checks whether a procedure is part of a procedure group or of at least one procedure group if a list of procedure groups is passed at a certain point in time. Returns true when that is the case, false otherwise.

Availability

This method is only available for procedure objects.

Parameters

Table 67. inProcedureGroup
In or Out Type Description

In

String

Code of one procedure group or a comma-separated list of procedure groups

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

Boolean

True if the invoking procedure belongs to the given group or at least one of the given groups on the as-of date

Example

Check whether a procedure is part of a specific procedure group:

procedure.inProcedureGroup('OFFICEVISITS')

Check whether a procedure is part of at least one procedure group in a list of groups:

procedure.inProcedureGroup('OFFICEVISITS,HEALTHCHECKS')

If it is required to check if a procedure is in at least one of a list of procedure groups (on a certain date) use the comma-separated list capability for efficiency reasons.

inProductProviderGroup

Checks whether a provider is in a provider group that is connected to a product at a certain point in time.

This is determined as follows. The system starts by creating a list of provider groups to consider.

  • The system selects all Product Provider Groups on the product

  • For each Product Provider Group, the system determines which provider group to consider:

  • If the product provider group has an assignment label

    • And if there is a policy product provider group in the corresponding enrollment response that has the same assignment label and applies to the same product.

    • Then the system ignores the provider group on the product provider group and considers the provider group to the matching policy product provider group instead

    • If the product provider group does not specify an assignment label, or can’t be matched, then the system considers the provider group on the product provider group

This iteration results in a list of provider groups. If the provider is included in at least one of these provider groups then this method returns TRUE.

Note that this method determines whether a provider is part of a provider group in the exactly the same way as the system does during the selection of benefits.

Availability

This method is available for provider objects, both individual and organizational providers.

Parameters

Table 68. inProductProviderGroup
In or Out Type Description

In

String

Code of the product.

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

Boolean

True if the invoking provider is within scope of at least one of the product’s provider groups

Example
def asOfDate = java.sql.Date.valueOf('2010-06-28')
provider.inProductProviderGroup('SUPERBUY', asOfDate)

inProviderGroup

Checks whether a provider is part of a provider group at a certain point in time. Returns true when that is the case, false otherwise.

An organization provider is part of a provider group if:

  • the organization provider is affiliated to the provider group OR

  • the organization provider is part of an organization provider that is affiliated to the provider group

An individual provider is part of a provider group if:

  • the individual provider is affiliated to the provider group

The affiliations must be valid at the as of date in all cases.

Availability

This method is available for provider objects, both individual and organizational providers.

Parameters

Table 69. inProviderGroup
In or Out Type Description

In

String

Code of the provider group

In

Date

As of date for time validity (optional in case the signature defines a default date)

Out

Boolean

True if the invoking provider belongs to the group on the as-of date

Example
individualProvider.inProviderGroup('CORE')

inUnfinalizeReasonGroup

Checks whether an unfinalize reason is part of an unfinalize reason group. Returns true when that is the case, false otherwise.

Availability

This method is only available for unfinalize reason objects.

Parameters

Table 70. inUnfinalizeReasonGroup
In or Out Type Description

In

String

Code of the unifnalize reason group. (mandatory)

Out

Boolean

True if the invoking unfinalize reason belongs to the group

Example
unfinalizeReason.inUnfinalizeReasonGroup('ADMIN')

isOrganization

Returns true when the relation is of subtype Organization (not a Bank), false otherwise.

Availability

This method is available on relation objects.

Parameters

Table 71. isOrganization
In or Out Type Description

Out

Boolean

True if the invoking relation is an organization

Example
relation.isOrganization()

isPerson

Returns true when the relation is of subtype Person, false otherwise.

Parameters

Table 72. isPerson
In or Out Type Description

Out

Boolean

True if the invoking relation is a person

Example
relation.isPerson()

setAmountManually

Set or modify the amount of a claim line coverage.

Availability

This method is available only for ClaimLineRuleCoverage. Its purpose is to set an amount through dynamic logic and prevent the value from automatic updates during recalulation of benefits.

Parameters

Table 73. setAmountManually
In or Out Type Description

In

Number

Amount

Example
claimLineRuleCoverage.setAmountManually(100)

setAuthorizationCode

Set or modify the authorization code on a claim line.

Availability

This method is available only for ClaimLine. Its purpose is to set an authorization code through dynamic logic.

Parameters

Table 74. setAuthorizationCode
In or Out Type Description

In

String

The code of the authorization

Example
claimLine.setAuthorizationCode('AU12345')

setAuthorizationExceptionType

Set or modify the authorization exception type on a claim line.

Availability

This method is available only for ClaimLine. Its purpose is to set an authorization exception type through dynamic logic.

Parameters

Table 75. setAuthorizationExceptionType
In or Out Type Description

In

String

ALL, AUTHORIZATION, NOTIFICATION or REFERRAL

Example
claimLine.setAuthorizationExceptionType('NOTIFICATION')

setClaimLineContractReferences

Set claim line contract references.

Availability

This method is available only for ClaimLine. Its purpose is to set claim line contract references through dynamic logic, noticeably within a derivation rule. The existing claim line contract references (if any) are replaced by the contract references specified within the method. If no contract references are specified within the method, the existing claim line contract references (if any) are cleared.

Parameters

Table 76. setClaimLineContractReferences
In or Out Type Description

In

StringList

Contract Reference code(s) (optional)

Example
claimLine.setClaimLineContractReferences('1234', '1235')

setClaimLineLimit

Set or modify a claim line limit.

Availability

This method is available only for ClaimLine. Its purpose is to set a claim line limit through dynamic logic, noticeably within a derivation rule. If the claim line limit does not yet exist (the logical key being the combination of claim line, limit and product, the last one optional), it is created. If the claim line limit already exists, it is modified.

Parameters

Table 77. setClaimLineLimit
In or Out Type Description

In

String

The code of the limit (mandatory)

In

String

The code of the cover withhold category (optional)

In

Number or Money

The maximum amount, maximum number of units or maximum number of distinct service days (mandatory)

In

String

In

String

The code of the product to which the limit is to be applied (optional)

Example
claimLine.setClaimLineLimit('MEMBER_DEDUCTIBLE','DEDUCTIBLE',Money.create(230),'S',null)
claimLine.setClaimLineLimit('MEMBER_OOPM','COPAY',Money.create(460),'C',null)
claimLine.setClaimLineLimit('PT_VISITS',null,10,null,'PROD') -- Set PT_VISITS number, when reached, use action on the limit
claimLine.setClaimLineLimit('PT_VISITS',null,null,'C','PROD') -- Set PT_VISITS action to continue, use number of units defined on the limit

setClaimLineParameter

Set or modify a claim line parameter.

Availability

This method is available only for ClaimLine. Its purpose is to set a claim line parameter through dynamic logic, noticeably within a derivation rule. If the parameter does not yet exist (the logical key being the combination of claim line, cover withhold category and product, the last one optional), it is created. If the parameter already exists, it is modified.

Parameters

Table 78. setClaimLineParameter
In or Out Type Description

In

String

The code of the cover withhold category (mandatory)

In

Number

The percentage (mandatory or null)

In

Money

The amount (mandatory or null)

In

String

The product to which the use is limited (optional)

Out

claimLineParameter

added or modified claimLineParameter

Example
claimLine.setClaimLineParameter('COINSURANCE',75,null) -- Setting a coinsurance percentage
claimLine.setClaimLineParameter('COPAY',null,Money.create(10)) -- Setting a copay amount
claimLine.setClaimLineParameter('COINSURANCE',75,null,'PROD') -- Setting a coinsurance percentage for product 'PROD'
claimLine.setClaimLineParameter('COPAY',null,Money.create(10),'PROD') -- Setting a copay amount for product 'PROD'

setDynamicField

The method sets the dynamic field to an object.

Availability

This method is available for all objects that support dynamic fields.

Parameters

Table 79. setDynamicField
In or Out Type Description

In

String

A usage name

In

Object

Structure of the dynamic field

Example

The following logic sets a time-valid field usage:

policy.setDynamicField("policyCoverage", new DynamicFieldPeriod(polCovRef.policyCoverage,polCovRef.startDate,polCovRef.endDate))
The recommended way to use the dynamic field is mentioned in the Writing section.

setField

The usual way to assign a value is to use the assignment operator, for example:

claimLine.widget = 3

In the case of a dynamic field that is in a FlexCode Set, a direct assignment is not possible without specifying the code of the FlexCode Definition.

This method sets the value for a dynamic field, a provider field, a diagnosis field or a procedure field. The field has to be single value and non-time-valid.

Availability

This method is only available for functions that allow a value to be set within the dynamic logic, for example derivation rules.

Parameters

Table 80. setField
In or Out Type Description

In

String

The name of the field which is to be set.

In

String, Date or Number

The value of the field to be set. For flex codes, the key field value.

In

String

Code of the FlexCode Definition

Example

This example assigns a value to the benefitsProvider field on the claimLine. The field benefitsProvider is of type Provider, which is defined as flex code set. Use the following code to do the same where '1234' is the code of the Provider and 'US PROVIDER' is the code of the flex code definition for the provider.

claimLine.setField('benefitsProvider','1234','US PROVIDER')

setOverridingBenefits

Set or modify the overriding coverage regime, family code, product and subscription date on a claim line.

Availability

This method is available only for ClaimLine. Its purpose is to set an overriding coverage regime, family code, product and subscription date through dynamic logic. The following restrictions apply to this method:

  • The product code, subscription date or family code must be specified in conjunction with a coverage regime code (meaning that the coverage regime code may not be null if one or more of product code, subscription date or family code are specified)

  • Either both or neither the product code and the subscription date are specified (meaning that both must be specified or both must be null)

Parameters

Table 81. setOverridingBenefits
In or Out Type Description

In

String

The code of the coverage regime

In

String

The family code

In

String

The code of the product

In

Date

The subscription date

Examples of Allowed Configuration

claimLine.setOverridingBenefits('COVER100', 'FAM12345', 'BASIC',java.sql.Date.valueOf('2010/12/31'))
claimLine.setOverridingBenefits('COVER100', null, null,null)
claimLine.setOverridingBenefits('COVER100', null, 'BASIC',java.sql.Date.valueOf('2010/12/31'))
claimLine.setOverridingBenefits('COVER100', claimLine.familyCode,null, null)
claimLine.setOverridingBenefits(null, null, null, null)

Examples of Not Allowed Configuration

claimLine.setOverridingBenefits('COVER100', 'FAM12345', 'BASIC',
null) claimLine.setOverridingBenefits(null, 'FAM12345', 'BASIC',Date.parse('MM/dd/yyyy', '2010/2/31'))

setOverridingBenefits

Set or modify the overriding values on a claim line. The method allows setting overriding values for

  • Product

  • Subscription Date

  • Coverage Specification

  • Coverage Regime

  • Coverage Regime No Auth

  • Authorization Regime

  • Waiting Period Regime

  • Post Benefit Regime

  • Funding Arrangement

  • Family Code

Product Line and Product Family can not be set by this method.
Availability

This method is available only for ClaimLine. Its purpose is to set overriding values through dynamic logic.

This method expects an overriding object namely BenefitOverride. This object has following attributes:

  • productCode: String

  • subscriptionDate: Date/String

  • coverageSpecificationCode: String

  • coverageRegimeCode: String

  • coverageRegimeNoAuthCode: String

  • authorizationRegimeCode: String

  • waitingPeriodRegimeCode: String

  • postBenefitRegimeCode: String

  • fundingArrangementCode: String

  • familyCode: String

Only the attributes populated will be updated on the ClaimLine, if a certain attribute is not mentioned, it will not be touched. If it is desired to nullify an attribute, it should be set to empty string for all string types. This is the reason why subscriptionDate can be set as Date when setting a value or String when nullifying.

Parameters

Table 82. setOverridingBenefits - Parameters
In or Out Type Description

In

BenefitOverride

Please see the explanation above

Examples of Allowed Configuration

claimLine.setOverridingBenefits(new BenefitOverride()
.withCoverageSpecificationCode('COVER100'))

claimLine.setOverridingBenefits(new BenefitOverride()
.withProductCode('BASIC')
.withSubscriptionDate(Date.parse('MM/dd/yyyy','12/31/2010'))
.withCoverageSpecificationCode('COVER100'))

claimLine.setOverridingBenefits(new BenefitOverride()
.withProductCode('BASIC')
.withSubscriptionDate(java.sql.Date.valueOf('12/31/2010'))
.withCoverageRegimeCode('COVER100')
.withFamilyCode('FAM12345'))

claimLine.setOverridingBenefits(new BenefitOverride()
.withCoverageRegimeCode('COVER100'))

claimLine.setOverridingBenefits(new BenefitOverride()
.withCoverageRegimeCode('')
.withProductCode('')
.withSubscriptionDate('')
.withCoverageSpecificationCode('')
.withCoverageRegimeNoAuthCode('')
.withFamilyCode('')
.withPostBenefitsRegimeCode('')
.withAuthorizationRegimeCode('').withWaitingPeriodRegimeCode('').withFundingArrangementCode(''))

setRecalculateBenefits

Recalculates the benefits changes that were made, just as it does during Manual Adjudication or Manual benefits. Only benefits are recalculated using this predefined method.

This method doesn’t start an immediate recalculation but flags the claim for recalculation. The actual recalculation is done in the Adjudication step in the claims flow.

Availability

This method is available for Claim and only in the context of a Callout Definition (Response) dynamic logic function.

Parameters

Table 83. setRecalculateBenefits
In or Out Type Description

In

Claim

The claim that needs to be recalculated

setServiceSpecialty

Set or modify a Service Specialty.

Availability

This method is available for Claim and ClaimLine and can be called on callout rule (response logic). Its purpose is to allow modifying service specialty on a claim and/or claimline while reprocessing a claim via automated process. This method performs the following based on the scenario:

  • In case a new value for service specialty is passed then the method adds or updates the existing service specialty value if already present

  • In case no value for service specialty is passed then the method deletes the existing service specialty value if already present

Parameters

Table 84. setServiceSpecialty
In or Out Type Description

In

String

The code of the service specialty

Example
claim.setServiceSpecialty('Code')
claim.setServiceSpecialty()
claimLine.setServiceSpecialty('Code')
claimLine.setServiceSpecialty()

setSkipTagAction

Modify a skip tag action for a given skip tag. align the skip tag actions for several different skip tags.

Availability

This method is available only on the Claim. dynamic logic, e.g. invoked by derivation rules and callout rules. If the method is called on a claim that does not have the specified skip tag (first parameter), this method does nothing.

Parameters

Table 85. setSkipTagAction
In or Out Type Description

In

String

The code of the skip tag

In

String

R (Redo), S (Skip), H (Hold) or F (Force).

Example
claim.setSkipTagAction('ICES_2ND_CALL','H')

switchPrimaryClaimDiagnosis

Switches which diagnosis is primary for the claim. Make a secondary primary and vice versa.

Availability

This method is only available for claim

Parameters

Table 86. switchPrimaryClaimDiagnosis
In or Out Type Description

In

ClaimDiagnosis

Current primary claim diagnosis

In

ClaimDiagnosis

Current secondary claim diagnosis

Out

Boolean

Returns true when the change succeeded. Returns false when the situation was already as requested.

switchPrimaryClaimLineDiagnosis

Switches which diagnosis is primary for the claim line. Make a secondary primary and vice versa.

Availability

This method is only available for claimLine

Parameters

Table 87. switchPrimaryClaimLineDiagnosis
In or Out Type Description

In

CLaimLineDiagnosis

Current primary claim line diagnosis

In

CLaimLineDiagnosis

Current secondary claim line diagnosis

Out

Boolean

Returns true when the change succeeded. Returns false when the situation was already as requested.

updateDynamicRecord

Updates the attributes of an existing dynamic record. To find the correct record to update, match on the record’s key attribute value. If none of the existing records have a matching key value, nothing is updated. If multiple records match with the key value, only one of them is updated. If no key is configured at all, executing this method results in adding a record. This applies to both non-time-valid and time-valid dynamic records, so time-validity does not play a role in finding the record to update.

Only the attributes that are present in the input map are updated. Attributes that are not mentioned are left untouched.

Availability

This method is available for all objects that support dynamic records. It is available for functions, but not for conditions.

Table 88. updateDynamicRecord
In / Out Type Description

In

String

A usage name.

In

Map

The attributes of the record, that can have a structure of name or value pairs.

Example, Update a Multi-Value Record

Assume an existing person has the following three values for the dynRecord1 record. This dynamic record has three attributes: code, description, and level, where code is configured as the key.

Table 89. Update a Multi-Value Record
Code Description Level

01

dynRecord1 value 1

3

02

dynRecord1 value 2

7

03

dynRecord1 value 3

12

The following logic updates the level of the record with code 02 from 7 to 6. Its description is retained.

person.updateDynamicRecord( "dynRecord1"
                         , [ code  : "02"
                           , level : 6
                           ]
                         )
Example: Update a Time-Valid Record

Update a record’s start and end date attribute in the same way as other attributes. Assume an existing person has the following two values for the dynRecord1 record. Besides, startDate and endDate, this time-valid dynamic record has two attributes: code, description, where code is configured as the key.

Table 90. Update a Time-Valid Record
Code Description StartDate EndDate

01

dynRecord1 value 1

2015-01-01

2015-12-31

02

dynRecord1 value 2

2016-01-01

The following logic sets the endDate of the second record to the person’s end date. Its other attributes are retained.

person.updateDynamicRecord("dynRecord1"
                         , [ code    : "02"
                           , endDate : person.endDate
                           ]
                         )

Access to Enrollment data

The policyEnrollment object represents the data returned by the enrollment interface. The object is accessible through the claim line. The information stored in the policyEnrollment object is accessible using the methods defined below.

getFamily

This method returns the Family.

Availability

This method is only available for policyEnrollment .

Parameters

Table 91. Access to Enrollment Data
In or Out Type Description

In

Date

As of date for time validity. Optional.

Out

PolicyFamily

The PolicyFamily on the as of date

Example
familyCode = claimLine.policyEnrollment.getFamily().code

getLimitCounterPeriod

This method fetches the LimitCounterPeriod on the Limit for the InsurableEntity on the specified asOfDate. If there are multiple limit counter periods available based on the request parameters, the method throws an Exception, in which case, the caller should make the request more specific to get the required limit counter period back.

Availability

This method is only available for Limit.

Parameters

Table 92. getLimitCounterPeriod
In or Out Type Description

In

InsurableEntity

InsurableEntity to find the limitCounter on

In

Provider

Provider for which limit counter is applied. Optional

In

String

Product aggregation level. Optional

In

String

FamilyCode. Optional

In

Date

As of date for time validity. Optional

Out

LimitCounterPeriod

The LimitCounterPeriod on the specified date and for insurableEntity on that limit.

Example
def currentAmount = limit.getLimitCounterPeriod(insurableEntity, null, null, null, serviceDate)?.currentAmount?.amount

getProduct

This method searches for the relevant product in the list of Products returned by the Enrollment interface.

Availability

This method is only available for policyEnrollment .

Parameters

Table 93. getProduct
In or Out Type Description

In

Product

The product for which the corresponding policy product is to be returned

In

Date

As of date for time validity. Optional.

Out

PolicyProduct

The policyProduct for the specified product on the as of date

Example
if ( claim.precedingPayerCode ==
     claimLine.policyEnrollment.getProduct(product).product.nextPayerCode ) {
  ...
}

getProducts

This method searches for the relevant products in the list of Products returned by the Enrollment interface. It returns the list of products that are valid on the specified asOfDate.

Availability

This method is only available for policyEnrollment.

Parameters

Table 94. getProducts
In or Out Type Description

In

Date

As of date for time validity. Optional.

Out

List of PolicyProducts

The policyProducts on the as of date

Example

When the product that covers a claim line is not known yet but when the product that is used is always the first product returned then the following logic can be used.

if ( claim.precedingPayerCode ==
     claimLine.policyEnrollment.getProducts()[0]?.product.nextPayerCode ) {
  ...
}

Access to Eligibility Check data

The EligibilityCheck and EligiblityCheckMessage objects represent the data returned by an eligibility check. The information stored in these objects - of which the EligibiltyCheckMessage when available is contained in the EligibilityCheck object - is accessible using the properties defined below.

checkStatus

This property returns a textual representation of the status of the EligibilityCheck. This can be used in constructing the response payload.

Availability

This property is available for EligibilityCheck.

Parameters

Table 95. checkStatus
In or Out Type Description

Out

String

Returns one of the following: 'Error', 'Approved', 'Denied'

messageCode

This is a convenience property that returns the code of the message that is referenced by the EligibilityCheckMessage.

Availability

This property is available for EligibilityCheckMessage, of which potentially a number are contained by an EligibilityCheck.

Parameters

Table 96. messageCode
In or Out Type Description

Out

String

Returns the textual code that is associated with the message referenced by the EligibilityCheckMessage.

messageText

This is a convenience property that returns the message text of the message that is referenced by the EligibilityCheckMessage.

Availability

This property is available for EligibilityCheckMessage, of which potentially a number are contained by an EligibilityCheck.

Parameters

Table 97. messageText
In or Out Type Description

Out

String

Returns the message text that is associated with the message referenced by the EligibilityCheckMessage.

To Copy Attributes from Working Copy Objects to Claim Transaction Objects

The following audit attributes are copied for working copy Claims, Bills and Claim Lines to their Claim Transaction counterparts:

  • CREATED_BY

  • CREATION_DATE

  • LAST_UPDATED_BY

  • LAST_UPDATED_DATE

  • Claim only: OBJECT_LAST_UPDATED_BY and OBJECT_LAST_UPDATED_DATE

For the following sub elements of Claims, Bills and Claim Lines a convenience method copyAuditAttributes is available that can be used in a Claim Transaction scenario’s Dynamic Logic to copy the audit attributes:

  • Claim sub elements:

    • CtrClaimDiagnosis

    • CtrClaimMessage

    • CtrClaimUnfinalizeReason

    • CtrStatusHistory

  • Bill sub elements:

    • CtrBillDiagnosis

    • CtrBillMessage

  • Claim Line sub elements:

    • CtrClaimLineDiagnosis

    • CtrClaimLineMessage

    • CtrClaimLineModifier

    • CtrClaimSubLine

CtrClaimDiagnosis.copyAuditAttributes

This method copies the audit attributes from the ClaimDiagnosis to the CtrClaimDiagnosis.

Availability

Available for CtrClaimDiagnosis.

Parameters

Table 98. CtrClaimDiagnosis.copyAuditAttributes
In or Out Type Description

In

ClaimDiagnosis

Source for the audit attributes. Mandatory.

Example

When the product that covers a claim line is not known yet but when the product that is used is always the first product returned then the following logic can be used.

// Transfer Claim Diagnoses
for (claimDiagnosis in claim?.claimDiagnosisList) {
  if (claimDiagnosis.diagnosis != null) {
    def ctrClaimDiagnosis = new CtrClaimDiagnosis()
    ...
    ctrClaimDiagnosis.copyAuditAttributes(claimDiagnosis)
    ctrClaim.addCtrClaimDiagnosis(ctrClaimDiagnosis)
  }
}

The following methods operate in a similar vein, meaning that the in parameter is of the type of the corresponding working copy object (for example ClaimMessage for the first one):

  • CtrClaimMessage.copyAuditAttributes(ClaimMessage claimMessage)

  • CtrClaimUnfinalizeReason.copyAuditAttributes(ClaimUnfinalizeReason claimUnfinalizeReason)

  • CtrStatusHistory.copyAuditAttributes(ClaimStatusHistory claimStatusHistoryEntry)

  • CtrBillDiagnosis.copyAuditAttributes(BillDiagnosis billDiagnosis)

  • CtrBillMessage.copyAuditAttributes(BillMessage BillMessage)

  • CtrClaimLineDiagnosis.copyAuditAttributes(ClaimLineDiagnosis claimLineDiagnosis)

  • CtrClaimLineMessage.copyAuditAttributes(ClaimLineMessage claimLineMessage)

  • CtrClaimLineModifier.copyAuditAttributes(ClaimLineModifier claimLineModifier)

  • CtrClaimSubLine.copyAuditAttributes(ClaimSubLine claimSubLine)

  • CtrClaimPolicyProduct.copyAuditAttributes(PolicyProduct policyProduct)