BAR50P06 ; IHS/SD/LSL - POST CLAIMS ;
;;1.8;IHS ACCOUNTS RECEIVABLE;**1,21**;OCT 26, 2005
;;
; IHS/SD/LSL - 11/26/02 - V1.7 - NOIS QAA-1200-130051
; Modified to Q if error in creating a transaction
;
; ********************************************************************
;
EN(TRDA,IMPDA) ; EP
; LOOP Claims in M status and post
D INIT^BARUTL
S BARSECT=BARUSR(29,"I")
S CLMDA=0
F S CLMDA=$O(^BAREDI("I",DUZ(2),IMPDA,30,"AC","M",CLMDA)) Q:CLMDA'>0 D
. D BASIC ; (gather claim data & build BARDR string)
. D PAY
. D ADJMULT
. D MRKCLMP
Q
; *********************************************************************
;
PAY ;EP
; PULL CLAIM INFO AND POST PAYMENT (IF ANY)
K BARCR,CLM
D ENP^XBDIQ1(90056.0205,"IMPDA,CLMDA",".01;.05;1.01;.02;.04","CLM(")
W !!,"Claim: ",CLM(.01)," <> ",CLM(1.01)
W !?5,"Billed: ",CLM(.05),?25,"Payment: ",CLM(.04)
S BARCR=$$VALI^XBDIQ1(90056.0205,"IMPDA,CLMDA",.04)
Q:BARCR=0
S BARTRAN=40
I +$G(BARCOL),+$G(BARITM)
E Q
D POST
Q
; *********************************************************************
;
ADJMULT ;EP
; POST ADJUSTMENTS
K ADJ
S DR=BARDR_";102////^S X=BARCAT;103////^S X=BARREA"
D ENPM^XBDIQ1(90056.0208,"IMPDA,CLMDA,0",".02;.04;.05","ADJ(","I")
Q:'$D(ADJ)
S BARTRAN=43
S ADJDA=0
F S ADJDA=$O(ADJ(ADJDA)) Q:ADJDA'>0 D
. S BARCR=ADJ(ADJDA,.02,"I")
. S BARCAT=ADJ(ADJDA,.04,"I")
. S BARREA=ADJ(ADJDA,.05,"I")
. S DR=BARDR_";102////^S X=BARCAT;103////^S X=BARREA"
. D POST
. K ADJP
. D ENP^XBDIQ1(90056.0208,"IMPDA,CLMDA,ADJDA",".02;.04;.05","ADJP(")
. W !?5,"ADJ: ",ADJP(.02),?25,ADJP(.04),?45,ADJP(.05)
Q
; *********************************************************************
;
MRKCLMP ;EP
; MARK CLAIM AS POSTED
K DIC,DA,DR
S DIE=$$DIC^XBDIQ1(90056.0205)
S DA(1)=IMPDA
S DA=CLMDA
S DR=".02////P"
D ^DIE
K DIC,DA,DR
Q
; *********************************************************************
;
BASIC ;EP ASSEMBLE BASIC DATA FOR TRANSACTION
;
S BARBLIEN=$$VALI^XBDIQ1(90056.0205,"IMPDA,CLMDA",1.01) ; A/R BILL
S BARBLPAT=$$GET1^DIQ(90050.01,BARBLIEN,101,"I") ; A/R Patient IEN
S BARBLAC=$$GET1^DIQ(90050.01,BARBLIEN,3,"I") ; A/R Account
S BARCOL=$$GET1^DIQ(90056.02,IMPDA,.06,"I") ; A/R COLLECTION BATCH IEN
S BARITM=$$GET1^DIQ(90056.02,IMPDA,.07,"I") ; A/R COL BATCH ITEM
S BARVLOC=$$GET1^DIQ(90056.02,IMPDA,108,"I") ; A/R LOCATION
S DR="2////^S X=BARCR"
S DR=DR_";4////^S X=BARBLIEN" ; A/R Bill
S DR=DR_";5////^S X=BARBLPAT" ; A/R Patient
S DR=DR_";6////^S X=BARBLAC" ; A/R Account
S DR=DR_";8////^S X=DUZ(2)" ; Parent Location
S DR=DR_";9////^S X=DUZ(2)" ; Parent ASUFAC
S DR=DR_";10////^S X=BARSECT" ; A/R Section
S DR=DR_";11////^S X=BARVLOC" ; Visit Location
S DR=DR_";12////^S X=DT" ; Date
S DR=DR_";13////^S X=DUZ" ; Entry by
S DR=DR_";14////^S X=$G(BARCOL)" ; IEN to A/R COLLECTION BATCH
S DR=DR_";15////^S X=$G(BARITM)" ; IEN to ITEM mult in A/R COL
S DR=DR_";101////^S X=BARTRAN" ; Transaction Type
S BARDR=DR
S (BARCAT,BARREA)=""
Q
; *********************************************************************
;
POST ;EP
; SET TRANSACTION & POST FILES
S BARTRIEN=$$NEW^BARTR ; Create Transaction
I BARTRIEN<1 D MSG^BARTR(BARBLIEN) Q
S BARROLL(BARBLIEN)=""
; Populate Transaction file
S DA=BARTRIEN ; IEN to A/R TRANSACTION
S DIE=90050.03
S DIDEL=90050
D ^DIE
K DIDEL,DIE,DA,DR
; Post from transaction file to related files
D TR^BARTDO(BARTRIEN)
Q
BAR50P06 ; IHS/SD/LSL - POST CLAIMS ;
+1 ;;1.8;IHS ACCOUNTS RECEIVABLE;**1,21**;OCT 26, 2005
+2 ;;
+3 ; IHS/SD/LSL - 11/26/02 - V1.7 - NOIS QAA-1200-130051
+4 ; Modified to Q if error in creating a transaction
+5 ;
+6 ; ********************************************************************
+7 ;
EN(TRDA,IMPDA) ; EP
+1 ; LOOP Claims in M status and post
+2 DO INIT^BARUTL
+3 SET BARSECT=BARUSR(29,"I")
+4 SET CLMDA=0
+5 FOR
SET CLMDA=$ORDER(^BAREDI("I",DUZ(2),IMPDA,30,"AC","M",CLMDA))
IF CLMDA'>0
QUIT
Begin DoDot:1
+6 ; (gather claim data & build BARDR string)
DO BASIC
+7 DO PAY
+8 DO ADJMULT
+9 DO MRKCLMP
End DoDot:1
+10 QUIT
+11 ; *********************************************************************
+12 ;
PAY ;EP
+1 ; PULL CLAIM INFO AND POST PAYMENT (IF ANY)
+2 KILL BARCR,CLM
+3 DO ENP^XBDIQ1(90056.0205,"IMPDA,CLMDA",".01;.05;1.01;.02;.04","CLM(")
+4 WRITE !!,"Claim: ",CLM(.01)," <> ",CLM(1.01)
+5 WRITE !?5,"Billed: ",CLM(.05),?25,"Payment: ",CLM(.04)
+6 SET BARCR=$$VALI^XBDIQ1(90056.0205,"IMPDA,CLMDA",.04)
+7 IF BARCR=0
QUIT
+8 SET BARTRAN=40
+9 IF +$GET(BARCOL)
IF +$GET(BARITM)
+10 IF '$TEST
QUIT
+11 DO POST
+12 QUIT
+13 ; *********************************************************************
+14 ;
ADJMULT ;EP
+1 ; POST ADJUSTMENTS
+2 KILL ADJ
+3 SET DR=BARDR_";102////^S X=BARCAT;103////^S X=BARREA"
+4 DO ENPM^XBDIQ1(90056.0208,"IMPDA,CLMDA,0",".02;.04;.05","ADJ(","I")
+5 IF '$DATA(ADJ)
QUIT
+6 SET BARTRAN=43
+7 SET ADJDA=0
+8 FOR
SET ADJDA=$ORDER(ADJ(ADJDA))
IF ADJDA'>0
QUIT
Begin DoDot:1
+9 SET BARCR=ADJ(ADJDA,.02,"I")
+10 SET BARCAT=ADJ(ADJDA,.04,"I")
+11 SET BARREA=ADJ(ADJDA,.05,"I")
+12 SET DR=BARDR_";102////^S X=BARCAT;103////^S X=BARREA"
+13 DO POST
+14 KILL ADJP
+15 DO ENP^XBDIQ1(90056.0208,"IMPDA,CLMDA,ADJDA",".02;.04;.05","ADJP(")
+16 WRITE !?5,"ADJ: ",ADJP(.02),?25,ADJP(.04),?45,ADJP(.05)
End DoDot:1
+17 QUIT
+18 ; *********************************************************************
+19 ;
MRKCLMP ;EP
+1 ; MARK CLAIM AS POSTED
+2 KILL DIC,DA,DR
+3 SET DIE=$$DIC^XBDIQ1(90056.0205)
+4 SET DA(1)=IMPDA
+5 SET DA=CLMDA
+6 SET DR=".02////P"
+7 DO ^DIE
+8 KILL DIC,DA,DR
+9 QUIT
+10 ; *********************************************************************
+11 ;
BASIC ;EP ASSEMBLE BASIC DATA FOR TRANSACTION
+1 ;
+2 ; A/R BILL
SET BARBLIEN=$$VALI^XBDIQ1(90056.0205,"IMPDA,CLMDA",1.01)
+3 ; A/R Patient IEN
SET BARBLPAT=$$GET1^DIQ(90050.01,BARBLIEN,101,"I")
+4 ; A/R Account
SET BARBLAC=$$GET1^DIQ(90050.01,BARBLIEN,3,"I")
+5 ; A/R COLLECTION BATCH IEN
SET BARCOL=$$GET1^DIQ(90056.02,IMPDA,.06,"I")
+6 ; A/R COL BATCH ITEM
SET BARITM=$$GET1^DIQ(90056.02,IMPDA,.07,"I")
+7 ; A/R LOCATION
SET BARVLOC=$$GET1^DIQ(90056.02,IMPDA,108,"I")
+8 SET DR="2////^S X=BARCR"
+9 ; A/R Bill
SET DR=DR_";4////^S X=BARBLIEN"
+10 ; A/R Patient
SET DR=DR_";5////^S X=BARBLPAT"
+11 ; A/R Account
SET DR=DR_";6////^S X=BARBLAC"
+12 ; Parent Location
SET DR=DR_";8////^S X=DUZ(2)"
+13 ; Parent ASUFAC
SET DR=DR_";9////^S X=DUZ(2)"
+14 ; A/R Section
SET DR=DR_";10////^S X=BARSECT"
+15 ; Visit Location
SET DR=DR_";11////^S X=BARVLOC"
+16 ; Date
SET DR=DR_";12////^S X=DT"
+17 ; Entry by
SET DR=DR_";13////^S X=DUZ"
+18 ; IEN to A/R COLLECTION BATCH
SET DR=DR_";14////^S X=$G(BARCOL)"
+19 ; IEN to ITEM mult in A/R COL
SET DR=DR_";15////^S X=$G(BARITM)"
+20 ; Transaction Type
SET DR=DR_";101////^S X=BARTRAN"
+21 SET BARDR=DR
+22 SET (BARCAT,BARREA)=""
+23 QUIT
+24 ; *********************************************************************
+25 ;
POST ;EP
+1 ; SET TRANSACTION & POST FILES
+2 ; Create Transaction
SET BARTRIEN=$$NEW^BARTR
+3 IF BARTRIEN<1
DO MSG^BARTR(BARBLIEN)
QUIT
+4 SET BARROLL(BARBLIEN)=""
+5 ; Populate Transaction file
+6 ; IEN to A/R TRANSACTION
SET DA=BARTRIEN
+7 SET DIE=90050.03
+8 SET DIDEL=90050
+9 DO ^DIE
+10 KILL DIDEL,DIE,DA,DR
+11 ; Post from transaction file to related files
+12 DO TR^BARTDO(BARTRIEN)
+13 QUIT