Large Claim Import Integration Point

A new file-based integration point is introduced to process a claim with a large number of claim lines (as defined in the system property: ohi.largeclaim.claimline.threshold (default 1000)) called as Large Claim hear after.

See Application Properties for more details on system properties related to Large Claim Import IP.

If system property ohi.claim.split is set to False then, using this IP end-point returns a fatal error CLA-IP-LCLA-001.
This integration point is designed to support accept, create, and replace only a single large claim at a time.

Integration Point

A POST request that initiates the long-running operation on the following end-point system.

  • End-Point:

    • http://[hostName]:[portNumber]/[api-context-root]/claimsimport

  • Upload Content:

    • This integration point accepts only a XML or JSON file as an input.

    • The content is uploaded as a file having the structure same as specified in Claims In Integration Point payload.

See the Long-Running Operation Through REST section from the HTTP API/IP Concepts chapter in Developer Guide for more details.

This operation accepts or rejects the large claim import request and creates or replaces the large claim by splitting it into smaller sub-claims.

The long-running process is a multi-step process. The following sections contain detailed descriptions of the system logic for each of these steps.

Intake of Large Claim File

This step in the process ensures that the system accepts the file and that it is now available for processing.

Claim or Claim line Payload Validation

The system validates the claim and claim line-level attributes. The application is unable to process the claim when:

  • The brand code provided in the message does not match any brand codes in Claims (CLA-IP-CLAI-001)

  • The payer code provided in the message does not match any payer codes in Claims (CLA-IP-CLAI-002)

  • The process type is unknown

  • The claim form provided in the message does not match any claim form code in Claims (CLA-IP-CLAI-003)

  • The product code provided in the message does not match any product code (CLA-IP-CLAI-010)

  • The funding arrangement provided in the message does not match any funding arrangement code (CLA-IP-CLAI-019)

  • The product line provided in the message does not match any product line code (CLA-IP-CLAI-020)

  • The product family provided in the message does not match any product family code (CLA-IP-CLAI-021)

  • The coverage regime code provided in the messages does not match any coverage regime code (CLA-IP-CLAI-011)

  • The authorization regime code provided in the messages does not match any authorization regime code (CLA-HTTP-006)

  • The waiting period regime code provided in the messages does not match any waiting period regime code (CLA-HTTP-007)

  • The post-benefits regime code provided in the messages does not match any post-benefits regime code (CLA-HTTP-008)

  • The coverage specification code provided in the messages does not match any coverage specification code (CLA-HTTP-009)

  • Bundled and un-bundled claim lines cannot be processed:

    • The original claim line or replaced claim line holds a reference to a non-existing claim line code number (CLA-IP-CLAI-005)

    • A claim line code is part of more than one bundling or unbundling or replaces itself (CLA-IP-CLAI-006)

  • A dynamic field specified in the message cannot be imported. For example:

    • The flex code value does not exist (GEN-DYNA-007)

    • The flex code definition code does not exist (GEN-DYNA-006)

  • The claim has no claim lines (CLA-IP-CLAI-009)

  • A claim line limit code provided in the messages does not match any limit code in Claims (CLA-IP-CLAI-017)

  • A claim line limit cover withhold category code provided in the messages does not match any cover withhold category code in Claims (CLA-IP-CLAI-015)

  • A claim line parameter cover withhold category code provided in the messages does not match any cover withhold category code in Claims (CLA-IP-CLAI-015)

  • A claim un-finalize reason code provided in the messages does not match any un-finalize reason code in Claims(CLA-IP-CLAI-012)

The claim is not taken in or processed if an explanatory message is logged in any of these situations.

Pre-processing

In this setup, the system refines the claim in the payload for the de-duplication of diagnoses and mapping of attributes.

De-duplicate Diagnoses

Mapping

Creating a New Large Claim

The system creates a new claim with an indicator manual set to N and a process category set to L, which means a Large Claim System. The claim lines are split over smaller sub-claims using a split logic. The allowed threshold number of claim lines per sub-claim is configurable and is specified by ohi.subclaim.claimline.threshold. The default value is considered to be 30.

Splitting Logic

The splitting logic starts by grouping all the claim lines of the large claim. The system orders the claim lines based on member, line grouping criteria, and line sequence (ascending). Then, group them into sub-claims, each having not more than a number of lines as defined by the system property ohi.subclaim.claimline.threshold.

  • The system generates the code for each sub-claim as per the configured Claim code generation dynamic logic.

  • The system sets the Process Category on:

    • The large claim header to value L (Large Claim System).

    • The sub-claim header to the value S (Sub Claim).

    • On the sub-claim Reference to Large Claim field is set to Large Claim Code.

  • All the header fields of Large Claim are copied to the header fields of each sub-claim, respectively. See other details for exceptions:

Replacing Existing Large Claim

The Code in the request payload matches with the large claim code that is already in use, and the attribute <largeClaimHeader indOverwriteClaim> is set to Y, then the system considers the claim as a replacement claim.

The first step in the replacement process is to unfinalized and finalize large or sub-claims.

The finalized large claim and the sub-claims (PRICING FINALIZED or FINALIZED) get unfinalized using the unfinalized reasons as specified in the payload. If an unfinalized reason is not found or is invalid, the request is rejected with the message CLA-IP-CLAI-012 or CLA-IP-CLAI-013.

If the existing large claim has the status FINALIZED and is also settled, then the request payload will be rejected with the message CLA-IP-CLAI-016.

If the large claim or sub-claims is in any manual status with unresolved pends, then the system immediately resolves these pend reasons. This remains visible in the claim pend reason history.

If the sub-claim has triggered an asynchronous callout rule that is still in progress, then its wait cycle will be immediately aborted, and any response received later will be ignored.

The system brings the large claim to IN PROCESS and all sub-claims to status CHANGED.

Once all the sub-claims are in the CHANGED status, the following replacement logic is applied.

Replacement Logic

The system discards the existing large claim header attributes and replaces them with the preprocessed claim header. The system also discards the sub-claim header and replaces it with the attributes of the large claims.

For example, if the existing claim has a field A with value 1, and the request payload does not specify field A at all, then after the payload has been processed, the existing claim no longer has a value for field A on large claim header or the sub claim header.

The system clears all information on the large claim and sub-claim header, including the details, and replaces it with the information in the request payload, with an exception to the claim status history and claim pend history; this information remains intact.

The system then determines, line by line, whether a line has been replaced, partially updated, or remains untouched. With regards to the information in the request payload, there might be some lines in the business context that are flagged that cannot be changed for business reasons.

Match claim lines on their code to the claim lines of the sub-claim, i.e., If a claim line code in the request payload and the existing claim line in a sub-claim have the same code, the system works on the assumption that these are the same lines and does the following:

  • When the claim line in the request payload and the matched claim line in the sub-claim both have the keepPricing and keepBenefits flags set to Yes, then the line and its processing results remain untouched. The line in the request payload gets ignored.

  • When the matched claim line in the sub-claim is locked, and the claim line in the request payload either does not specify the unlock flag or specifies it with the value No, then the line and its processing results remain locked and untouched. The line in the request payload will be ignored. If the system is unable to match the existing locked line to a line in the request payload, then the request will be rejected with the message CLA-CLLI-007.

  • When the claim line in the request payload and the matched claim line of the existing sub-claim have the keepPricing set to Yes, but neither of the previous two situations applies, then the claim line gets partially cleared and replaced.

  • The following information will be retained and remain untouched:

    • The claim line’s provider pricing clauses, the allowed amount, and the currency

    • The allowed number of units

    • Claim line messages that originated from the PRICING, PRICING LIMIT, and PRICING NO RECALCULATION steps.

  • When the matched claim line is with tags:

    • Update claim lines with a reference to a Line skip tag rather than remove. Clear all attributes and details on the line and overwrite with the information in the payload except the line skip tag and the claim line’s provider pricing clauses.

    • Update claim lines with a reference to an Allowed Amount skip tag rather than remove. Clear all attributes and details on the line and overwrite with the information in the payload except:

      • The allowed amount skip tag.

      • The claim line provider pricing clauses.

      • The allowed amount and currency.

      • The allowed number of units.

    • Claim line messages that are tagged remain untouched. If the request payload includes the same message for the same line with the same placeholder values, then it is ignored. This prevents duplicate messages.

  • The line is deleted when a claim line exists in the sub-claim but is not part of the payload.

  • The line is considered in the splitting logic when a claim line exists in a payload but is not part of any sub-claim.

    • Order all such lines per member, claimline grouping, and sequence, and add them into existing sub-claims matching them on the member, grouping criteria, and sequence, each having not more than the value defined in the system property ohi.subclaim.claimline.threshold.

    • If no sub-claim is found or a threshold is reached, the system creates a new sub-claim.

Replaced and replacing lines will always be in the same sub-claim. This means that a sub-claim can have claim lines more than ohi.subclaim.claimline.threshold possible value or a default value if one line replaces many lines and the overall non-replaceable lines count within the threshold value.

Other Details

Large Claim Header

Take the following actions automatically when processing the request message:

  • The attribute largeclaim.entryDate is set to sysdate.

  • Status

    • New claim - ENTRY

  • Total Claimed Amount is set to the total of all sub-claim Total Claimed Amount.

  • Total Covers Amount is set to the total of all sub-claim Total Covered Amount.

  • Start Date is set as the sub-claim’s earliest start date.

  • End Date is set to the sub-claim’s last end date.

Sub-claim Header

  • If externalPricing is set to No then set sendOutForPreprocessing to Yes.

  • The field subclaim.servicedMember is set to the claimLine.servicedMember of any claim line of the respective sub-claim that has member details. If none of the claim lines of the sub-claim has member details, then subclaim.servicedMember is left bank.

  • The field subclaim.totalClaimedAmount is set to the sum of the claimLine.claimedAmounts as long as all the currencies of the claim line claimed amounts are equal; set the currency for the total claimed amount as well.

  • The field subclaim.totalAllowedAmount is set to the sum of the claimLine.allowedAmounts as long as all the currencies of the claim line allowed amounts are equal; set the currency for the total allowed amount as well. Do not include claim lines without an allowed amount in this sum (as if they specify a zero allowed amount).

  • The field subclaim.startDate is set to the earliest claimLine.startDate that belongs to the sub-claim.

  • The field subclaim.endDate is set to the latest date out of all claimLine.endDates and claimLine.startDates that belong to the sub-claim.

Submit Large Claim for Processing

Once the large claim is created or replaced, it is submitted for processing. See Large Claims Flow for more details.

Authorization

A user authorization configuration protects access to this feature. The relevant access restriction is claimsImport IP.

Response Messages

  • The response to this integration point:

    • The server responds with status 201.

    • A link is returned in the Location header as: http://[hostName]:[portNumber]/[api-context-root]/claimsimport/+{id}+

    • The clients can now track the progress by issuing a GET on the URI returned in the Location header.

    • While the claim is being imported, this resource response will return:

      • Claim Status link

        • Issuing a GET on Claim status link returns the claim processing status with a link to that activity

      • Import activity link

{
    "links": [
        {
            "href": "http://[hostName]:[portNumber]/[api-context-root]/claimsimport/{id}",
            "rel": "self"
        },
        {
            "href": "http://[hostName]:[portNumber]/[api-context-root]/generic/claims/{id}/status",
            "rel": "related"
        },
        {
            "href": "http://[hostName]:[portNumber]/[api-context-root]/generic/activities/{id}",
            "rel": "operator"
        }
    ]
}
Table 1. Failure Response Message
Code Sev Internal Message

CLA-IP-LCLA-001

Fatal

This integration point can be used only when the system property 'ohi.claim.split' is set to true

  • See the Long-Running Operation Through REST section from the HTTP API/IP Concepts chapter in Developer Guide for more details on how to track the progress and responses of a long-running operation.

  • When processing a request message, this integration point can generate more messages, See Claims In Integration Point - Response Message for more details.