ERA: New Adjustment code reasons

aethelwulffe wrote on Monday, January 05, 2015:

Seems like some new adjustment codes are mashing up the AR tables via ERA import not recognizing them.
Adjustment Code 141 was the first:
parse_era.inc.php
else if ($segid == ‘CAS’ && $out[‘loopid’] == ‘2110’) {
$i = count($out[‘svc’]) - 1;
for ($k = 2; $k < 20; $k += 3) {
if (!$seg[$k]) break;
if (($seg[1] == ‘CO’) && ($seg[$k+1] < 0) && ($seg[$k] != ‘144’)) { // Adjustment code 144 is Incentive adjustment which is negative.
$out[‘warnings’] .= "Negative Contractual Obligation adjustment " .
“seems wrong. Inverting, but should be checked!\n”;
$seg[$k+1] = 0 - $seg[$k+1];
}
$j = count($out[‘svc’][$i][‘adj’]);
$out[‘svc’][$i][‘adj’][$j] = array();
$out[‘svc’][$i][‘adj’][$j][‘group_code’] = $seg[1];
$out[‘svc’][$i][‘adj’][$j][‘reason_code’] = $seg[$k];
$out[‘svc’][$i][‘adj’][$j][‘amount’] = $seg[$k+1];
// Note: $seg[$k+2] is “quantity”. A value here indicates a change to
// the number of units of service. We’re ignoring that for now.
}
}

Now I am seeing stuff like this:

CLP2498-1033791900**HMN344FHE0195011*E

CASOA133*90

…in the ERA’s

Per WPC information on CAS OA 133
The disposition of the claim/service is pending further review. (Use only with Group Code OA). This change effective 3/1/2015: The disposition of this service line is pending further review. (Use only with Group Code OA). NOTE: Use of this code requires a reversal and correction when the service line is finalized (use only in Loop 2110 CAS segment of the 835 or Loop 2430 of the 837).

I take it we need to ignore claims with CASOA133*90, or add reason 133 like the above…I believe that SHOULD take care of that one issue. Problem is, there are lots of adjustment codes: http://www.wpc-edi.com/reference/codelists/healthcare/claim-adjustment-reason-codes/
Some seem to indicate (144 and 259 I believe) that they are positive adjustments that would be read as negative balances.

aethelwulffe wrote on Monday, January 05, 2015:

I have a reference to an adjustment 'A2" as well that goes with Reason 133. 133 is “pending” I believe, and “A2” is “what we will adjust off when you actually get it”.

I am thinking that Segment CAS needs exceptions for AO as well as the CO exception that handles the Incentive adjustment. I think the following would at least write the pending balances to $0 instead of adding goofy stuff to the ledger. Does this appear valid, and what is the way we should actually be handling pending balances? If would be better to not import them at all I would think.
else if ($segid == ‘CAS’ && $out[‘loopid’] == ‘2110’) {
$i = count($out[‘svc’]) - 1;
for ($k = 2; $k < 20; $k += 3) {
if (!$seg[$k]) break;
if (($seg[1] == ‘CO’) && ($seg[$k+1] < 0) && ($seg[$k] != ‘144’)) { // Adjustment code 144 is Incentive adjustment which is negative.
$out[‘warnings’] .= "Negative Contractual Obligation adjustment " .
“seems wrong. Inverting, but should be checked!\n”;
$seg[$k+1] = 0 - $seg[$k+1];
}
if (($seg[1] == ‘OA’) && ($seg[$k] == ‘133’ OR $seg[$k] == ‘A2’)) { // Adjustment code 133 and A2
$out[‘warnings’] .= “This is either a Pending Payment or a pending Contractural Adjustment. Check to make sure this is correct!\n”;
$seg[$k+1] = 0;
}
$j = count($out[‘svc’][$i][‘adj’]);
$out[‘svc’][$i][‘adj’][$j] = array();
$out[‘svc’][$i][‘adj’][$j][‘group_code’] = $seg[1];
$out[‘svc’][$i][‘adj’][$j][‘reason_code’] = $seg[$k];
$out[‘svc’][$i][‘adj’][$j][‘amount’] = $seg[$k+1];
// Note: $seg[$k+2] is “quantity”. A value here indicates a change to
// the number of units of service. We’re ignoring that for now.
}
}

cmswest wrote on Friday, January 16, 2015:

Hi Art, CARC A2 was deactivated.