BAR50PZ1 ; IHS/SD/LSL - AHCCCS IMPORT ROUTINE ;
;;1.8;IHS ACCOUNTS RECEIVABLE;**21**;OCT 26, 2005
;
; IHS/SD/LSL - 06/26/2002 - V1.6 Patch 2 - NOIS XXX-0602-200032
; Modified to be FM22 compliant
;
; IHS/SD/LSL - 03/17/2003 - V1.7 Patch 1 - IM10293
; If AHCCCS doesn't send a bill number I modified PAYAMT
; to look for NO BILL NUMBER IN FILE instead of crashing with
; <SBSCR>*XECUTE*NEW+65^DICN
;
; IHS/SD/LSL - 02/09/2004 - V1.7 Patch 5 - IM12514
; Denial codes for proprietary AHCCCS ERA not working properly
;
; *********************************************************************
Q
;
SEP ;EP Set seperators
S S="~",E="`",SE=" " ;SE is 2 spaces used in the CC seg Reason Element
Q
; *********************************************************************
;
DT ;EP Conversion of date to readable format
S X=$E(X,5,6)_"/"_$E(X,7,8)_"/"_$E(X,1,4)
S %DT="X"
D ^%DT,DD^%DT
S X=Y
Q
; *********************************************************************
;
PAYAMT ;Load Claim data
W:'(COUNT#10) "."
W:'(COUNT#100) " ",COUNT,!
S COUNT=COUNT+1
K DIC,DR,DA,DIE
S DIC=$$DIC^XBDIQ1(90056.0205)
S DIC(0)="XL"
S DIC("P")="90056.0205A"
S X=$P(VBILNM,"-")
W !,X,?15,VBILNM
I X="" D ; LSL 03/17/0/3
. W "NO BILL NUMBER IN FILE"
. S X="NO BILL"
S DA(1)=IMPDA
K DD,DO,D0
D FILE^DICN
S CLMDA=+Y
S DA=+Y
S DIE=DIC
K DIC
K DR
S DR=".04///^S X=VPAYAMT;.05///^S X=VBILAMT"
D ^DIE
S PAT=VPATLN_","_VPATFN_" "_VPATMN
S DR=".06///^S X=PAT;.08///^S X=VDOSB;.09///^S X=VDOSE"
D ^DIE
S ADJDA=0
Q
; *********************************************************************
;
ADJREA ;EP Process reason and amount into claim impda,clmda
S VADJAMT=VBILAMT-VPAYAMT
I '$L(VADJREA) Q
S VADJCAT=$E(VADJCAT)
I VADJCAT="A" Q
I VADJCAT'="R" D Q
. S VADJREA=VADJCAT_" | "_$P(VADJREA,SE,2)
. D SET1ADJ
; process reason code(s)
S XXX=$P(VADJREA,": ",2)
I '$F(XXX,SE) D Q
. S X=XXX
. D CLMCODE^BAR50P02
. S VADJREA=X
. D SET1ADJ
F I=1:1 S X=$P(XXX,SE,I) Q:'$L(X) D
. S:I>1 VADJAMT=0 ; assign amt to the 1st reason only
. D CLMCODE^BAR50P02 ; lookup reason in Claim Level Reasons table
. S VADJREA=X
. D SET1ADJ
Q
; *********************************************************************
;
SET1ADJ ; set one adjustment X|reason, AMT
S ADJDA=ADJDA+1
K DIE,DR,DA,X,DIC
S DA(2)=IMPDA
S DA(1)=CLMDA
S X=ADJDA
S DIC=$$DIC^XBDIQ1(90056.0208)
S DIC("P")="90056.0208A"
S DIC(0)="EXL"
S DIC("DR")=".02///^S X=VADJAMT;.03////^S X=VADJREA"
D ^DIC
Q
; *********************************************************************
;
CHKNUM ;EP Enter Check mumber into Import
K DIE,DR,DA
S DIE=$$DIC^XBDIQ1(90056.02)
S DA=IMPDA
S DR=".09////^S X=VCHKNUM"
D ^DIE
;
ECHECK ;
Q
; *********************************************************************
;
LOAD ;EP Scan all AHCCCS imports loaded for new reason codes and stuff them
; into the Claim Level Reason Codes table for mapping.
EN ;
S FDA=0
F S FDA=$O(^BAREDI("I",2917,FDA)) Q:FDA'>0 D FILE
Q
; *********************************************************************
;
FILE ;
S FDA0=^BAREDI("I",2917,FDA,0)
I $P(FDA0,U,3)'=4 Q
W !,FDA0
D REASON
Q
; *********************************************************************
;
REASON ;
F L=1:1 Q:'$D(^BAREDI("I",2917,FDA,15,L)) S X=^(L,0) D
. I '(L#100) W "."
. I $E(X,1,2)="PN" D PN
Q
; *********************************************************************
;
PN ;
S CODE=$P(X,"`",2)
S REA=$P(X,"`",3)
I '$D(^BAREDI("1T",4,40,"B",CODE)) D
. W !,CODE,?10,REA
. S ^PWTMP("AHC",CODE)=REA
Q
; *********************************************************************
;
PUT ; FILE NEW INTO CLAIM LEVEL MULTIPLE
S CODE=""
F S CODE=$O(^PWTMP("AHC",CODE)) Q:CODE="" D SET
Q
; *********************************************************************
;
SET ;
K DIC,DR,DA
S X=CODE
S REA=^PWTMP("AHC",CODE)
S DA(1)=4
W !,CODE,?10,REA
Q
; *********************************************************************
;
END ;
Q
; *********************************************************************
;
AHCCCS ;EP enter new table entries for AHCCCS
;;
Q
; *********************************************************************
;
MAP ;EP repoint the distributed tabled reason pointers to the new ones installed
Q
; *********************************************************************
;
1001 ;;BAD DEBT/COLLECTION AGENCY^3^WO
1002 ;;CODING ERROR^4^NONPAY
1003 ;;RX PROCESSING FEE^3^WO^123
1004 ;;OTHER TPL^4^NONPAY
1005 ;;MISSING DATA^4^NONPAY
1006 ;;INCORRECT PROVIDER TYPE^4^NONPAY
1007 ;;MISSING FIELD^4^NONPAY
1008 ;;DOCUMENTATION REQUIRED^4^NONPAY
BAR50PZ1 ; IHS/SD/LSL - AHCCCS IMPORT ROUTINE ;
+1 ;;1.8;IHS ACCOUNTS RECEIVABLE;**21**;OCT 26, 2005
+2 ;
+3 ; IHS/SD/LSL - 06/26/2002 - V1.6 Patch 2 - NOIS XXX-0602-200032
+4 ; Modified to be FM22 compliant
+5 ;
+6 ; IHS/SD/LSL - 03/17/2003 - V1.7 Patch 1 - IM10293
+7 ; If AHCCCS doesn't send a bill number I modified PAYAMT
+8 ; to look for NO BILL NUMBER IN FILE instead of crashing with
+9 ; <SBSCR>*XECUTE*NEW+65^DICN
+10 ;
+11 ; IHS/SD/LSL - 02/09/2004 - V1.7 Patch 5 - IM12514
+12 ; Denial codes for proprietary AHCCCS ERA not working properly
+13 ;
+14 ; *********************************************************************
+15 QUIT
+16 ;
SEP ;EP Set seperators
+1 ;SE is 2 spaces used in the CC seg Reason Element
SET S="~"
SET E="`"
SET SE=" "
+2 QUIT
+3 ; *********************************************************************
+4 ;
DT ;EP Conversion of date to readable format
+1 SET X=$EXTRACT(X,5,6)_"/"_$EXTRACT(X,7,8)_"/"_$EXTRACT(X,1,4)
+2 SET %DT="X"
+3 DO ^%DT
DO DD^%DT
+4 SET X=Y
+5 QUIT
+6 ; *********************************************************************
+7 ;
PAYAMT ;Load Claim data
+1 IF '(COUNT#10)
WRITE "."
+2 IF '(COUNT#100)
WRITE " ",COUNT,!
+3 SET COUNT=COUNT+1
+4 KILL DIC,DR,DA,DIE
+5 SET DIC=$$DIC^XBDIQ1(90056.0205)
+6 SET DIC(0)="XL"
+7 SET DIC("P")="90056.0205A"
+8 SET X=$PIECE(VBILNM,"-")
+9 WRITE !,X,?15,VBILNM
+10 ; LSL 03/17/0/3
IF X=""
Begin DoDot:1
+11 WRITE "NO BILL NUMBER IN FILE"
+12 SET X="NO BILL"
End DoDot:1
+13 SET DA(1)=IMPDA
+14 KILL DD,DO,D0
+15 DO FILE^DICN
+16 SET CLMDA=+Y
+17 SET DA=+Y
+18 SET DIE=DIC
+19 KILL DIC
+20 KILL DR
+21 SET DR=".04///^S X=VPAYAMT;.05///^S X=VBILAMT"
+22 DO ^DIE
+23 SET PAT=VPATLN_","_VPATFN_" "_VPATMN
+24 SET DR=".06///^S X=PAT;.08///^S X=VDOSB;.09///^S X=VDOSE"
+25 DO ^DIE
+26 SET ADJDA=0
+27 QUIT
+28 ; *********************************************************************
+29 ;
ADJREA ;EP Process reason and amount into claim impda,clmda
+1 SET VADJAMT=VBILAMT-VPAYAMT
+2 IF '$LENGTH(VADJREA)
QUIT
+3 SET VADJCAT=$EXTRACT(VADJCAT)
+4 IF VADJCAT="A"
QUIT
+5 IF VADJCAT'="R"
Begin DoDot:1
+6 SET VADJREA=VADJCAT_" | "_$PIECE(VADJREA,SE,2)
+7 DO SET1ADJ
End DoDot:1
QUIT
+8 ; process reason code(s)
+9 SET XXX=$PIECE(VADJREA,": ",2)
+10 IF '$FIND(XXX,SE)
Begin DoDot:1
+11 SET X=XXX
+12 DO CLMCODE^BAR50P02
+13 SET VADJREA=X
+14 DO SET1ADJ
End DoDot:1
QUIT
+15 FOR I=1:1
SET X=$PIECE(XXX,SE,I)
IF '$LENGTH(X)
QUIT
Begin DoDot:1
+16 ; assign amt to the 1st reason only
IF I>1
SET VADJAMT=0
+17 ; lookup reason in Claim Level Reasons table
DO CLMCODE^BAR50P02
+18 SET VADJREA=X
+19 DO SET1ADJ
End DoDot:1
+20 QUIT
+21 ; *********************************************************************
+22 ;
SET1ADJ ; set one adjustment X|reason, AMT
+1 SET ADJDA=ADJDA+1
+2 KILL DIE,DR,DA,X,DIC
+3 SET DA(2)=IMPDA
+4 SET DA(1)=CLMDA
+5 SET X=ADJDA
+6 SET DIC=$$DIC^XBDIQ1(90056.0208)
+7 SET DIC("P")="90056.0208A"
+8 SET DIC(0)="EXL"
+9 SET DIC("DR")=".02///^S X=VADJAMT;.03////^S X=VADJREA"
+10 DO ^DIC
+11 QUIT
+12 ; *********************************************************************
+13 ;
CHKNUM ;EP Enter Check mumber into Import
+1 KILL DIE,DR,DA
+2 SET DIE=$$DIC^XBDIQ1(90056.02)
+3 SET DA=IMPDA
+4 SET DR=".09////^S X=VCHKNUM"
+5 DO ^DIE
+6 ;
ECHECK ;
+1 QUIT
+2 ; *********************************************************************
+3 ;
LOAD ;EP Scan all AHCCCS imports loaded for new reason codes and stuff them
+1 ; into the Claim Level Reason Codes table for mapping.
EN ;
+1 SET FDA=0
+2 FOR
SET FDA=$ORDER(^BAREDI("I",2917,FDA))
IF FDA'>0
QUIT
DO FILE
+3 QUIT
+4 ; *********************************************************************
+5 ;
FILE ;
+1 SET FDA0=^BAREDI("I",2917,FDA,0)
+2 IF $PIECE(FDA0,U,3)'=4
QUIT
+3 WRITE !,FDA0
+4 DO REASON
+5 QUIT
+6 ; *********************************************************************
+7 ;
REASON ;
+1 FOR L=1:1
IF '$DATA(^BAREDI("I",2917,FDA,15,L))
QUIT
SET X=^(L,0)
Begin DoDot:1
+2 IF '(L#100)
WRITE "."
+3 IF $EXTRACT(X,1,2)="PN"
DO PN
End DoDot:1
+4 QUIT
+5 ; *********************************************************************
+6 ;
PN ;
+1 SET CODE=$PIECE(X,"`",2)
+2 SET REA=$PIECE(X,"`",3)
+3 IF '$DATA(^BAREDI("1T",4,40,"B",CODE))
Begin DoDot:1
+4 WRITE !,CODE,?10,REA
+5 SET ^PWTMP("AHC",CODE)=REA
End DoDot:1
+6 QUIT
+7 ; *********************************************************************
+8 ;
PUT ; FILE NEW INTO CLAIM LEVEL MULTIPLE
+1 SET CODE=""
+2 FOR
SET CODE=$ORDER(^PWTMP("AHC",CODE))
IF CODE=""
QUIT
DO SET
+3 QUIT
+4 ; *********************************************************************
+5 ;
SET ;
+1 KILL DIC,DR,DA
+2 SET X=CODE
+3 SET REA=^PWTMP("AHC",CODE)
+4 SET DA(1)=4
+5 WRITE !,CODE,?10,REA
+6 QUIT
+7 ; *********************************************************************
+8 ;
END ;
+1 QUIT
+2 ; *********************************************************************
+3 ;
AHCCCS ;EP enter new table entries for AHCCCS
+1 ;;
+2 QUIT
+3 ; *********************************************************************
+4 ;
MAP ;EP repoint the distributed tabled reason pointers to the new ones installed
+1 QUIT
+2 ; *********************************************************************
+3 ;
1001 ;;BAD DEBT/COLLECTION AGENCY^3^WO
1002 ;;CODING ERROR^4^NONPAY
1003 ;;RX PROCESSING FEE^3^WO^123
1004 ;;OTHER TPL^4^NONPAY
1005 ;;MISSING DATA^4^NONPAY
1006 ;;INCORRECT PROVIDER TYPE^4^NONPAY
1007 ;;MISSING FIELD^4^NONPAY
1008 ;;DOCUMENTATION REQUIRED^4^NONPAY