| [613] | 1 | FBPAID ;WOIFO/SAB-SERVER ROUTINE TO UPDATE PAYMENTS ;9/9/2003 | 
|---|
|  | 2 | ;;3.5;FEE BASIS;**5,61**;JAN 30, 1995 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ;incoming record from AAC will contain the following data | 
|---|
|  | 5 | ;   - Fee Program  - from Fee Basis Program  (161.8) | 
|---|
|  | 6 | ;   - Activity Code    (C - confirmed) | 
|---|
|  | 7 | ;                      (B - backout) | 
|---|
|  | 8 | ;                      (X - cancelled) | 
|---|
|  | 9 | ;   - Internal Control Number   - IEN of payment record | 
|---|
|  | 10 | ;   - Check Number | 
|---|
|  | 11 | ;   - Check Date | 
|---|
|  | 12 | ;   - Interest Amount | 
|---|
|  | 13 | ;   - Cancellation Date | 
|---|
|  | 14 | ;   - Reason Code  (File # 162.95) | 
|---|
|  | 15 | ;   - Cancellation Code (R - C - X) | 
|---|
|  | 16 | ;   - Disbursed Amount   (this amount minus interest amount = amt pd) | 
|---|
|  | 17 | ;   variable 'FBPAID' is defined and passed to TRAP^FBMRASVR2 | 
|---|
|  | 18 | ; | 
|---|
|  | 19 | N FBINV | 
|---|
|  | 20 | S U="^",FBPAID=1,FBMCNT=0 | 
|---|
|  | 21 | S X="TRAP^FBMRASV2" S @^%ZOSF("TRAP") | 
|---|
|  | 22 | ;K XMY S XMY("G.FEE")="" D ENT1^XMD | 
|---|
|  | 23 | K ^TMP("FBPAID",$J),^TMP("FBERR",$J) | 
|---|
|  | 24 | D STATION^FBAAUTL I $S($G(FB("ERROR")):1,'$G(FBAASN):1,1:0) Q | 
|---|
|  | 25 | K FB | 
|---|
|  | 26 | ;start to read in message from central fee | 
|---|
|  | 27 | ;edits are: | 
|---|
|  | 28 | ;          1. invalid station number | 
|---|
|  | 29 | ;          2. invalid record length | 
|---|
|  | 30 | ;          3. unable to locate payment record | 
|---|
|  | 31 | ;          4. disbursed amount '= amt paid+interest | 
|---|
|  | 32 | ;          5. cancellations | 
|---|
|  | 33 | ; XMRG=record received in mail message from Austin | 
|---|
|  | 34 | F I=1:1 X XMREC Q:XMER<0  I XMRG]"",$E(XMRG,1,3)=FBAASN D | 
|---|
|  | 35 | .S ^TMP("FBREC",$J,I)=XMRG | 
|---|
|  | 36 | .K FBERR | 
|---|
|  | 37 | .I $L(XMRG)'=77 S FBERR=1,^TMP("FBERR",$J,2,I)="" | 
|---|
|  | 38 | .D PARSE^FBPAID1 Q:$G(FBERR)  S FBMCNT=FBMCNT+1 D @FBPROG | 
|---|
|  | 39 | D ^FBPAID2:$D(^TMP("FBERR",$J)) | 
|---|
|  | 40 | D BUL^FBPAID1 | 
|---|
|  | 41 | ; if any EDI invoices then add to FPPS queue | 
|---|
|  | 42 | I $D(FBINV) D PAIDLOG^FBFHLL(.FBINV) | 
|---|
|  | 43 | G END | 
|---|
|  | 44 | ; | 
|---|
|  | 45 | 3 ;update outpatient payment record | 
|---|
|  | 46 | Q:'$D(^FBAAC(+FBIEN(3),1,+FBIEN(2),1,FBIEN(1),1,FBIEN,0))  S FBAMT=+$P(^(0),U,3) D | 
|---|
|  | 47 | .I FBDAMT-FBINAMT'=FBAMT,$G(FBACT)="C" S ^TMP("FBERR",$J,4,I)=""_U_FBPROG_U_+FBIEN(3)_U_+FBIEN(2)_U_+FBIEN(1)_U_+FBIEN | 
|---|
|  | 48 | N JJ F JJ=1:1:3 S DA(JJ)=+FBIEN(JJ) | 
|---|
|  | 49 | S DA=+FBIEN | 
|---|
|  | 50 | S DR="" | 
|---|
|  | 51 | I FBACT="C" S DR="12////^S X=$G(FBCKDT);35///^S X=FBCKNUM;40///^S X=FBDAMT;41///^S X=FBINAMT;36///@;37///@" | 
|---|
|  | 52 | I FBACT="B" S DR="12///@;35///@;36///@;37///@;40///@;41///@" | 
|---|
|  | 53 | I FBACT="X" S DR="12///@;40///@;41///@;36////^S X=FBXDT;37////^S X=$G(FBRCOD);38///^S X=FBXCOD" D | 
|---|
|  | 54 | .I FBXCOD'="R" S ^TMP("FBERR",$J,5,I)=""_U_FBPROG_U_+FBIEN(3)_U_+FBIEN(2)_U_+FBIEN(1)_U_+FBIEN | 
|---|
|  | 55 | .I FBXCOD="R" S DR=DR_";35///@" | 
|---|
|  | 56 | S DIE="^FBAAC("_DA(3)_",1,"_DA(2)_",1,"_DA(1)_",1," | 
|---|
|  | 57 | D LOCK^FBUCUTL(DIE,DA,1) I FBLOCK D ^DIE L -^FBAAC(DA(3),1,DA(2),1,DA(1),1,DA) | 
|---|
|  | 58 | ; if EDI then add invoice to list in FBINV(, patch *61 | 
|---|
|  | 59 | I FBACT'="B",$P($G(^FBAAC(DA(3),1,DA(2),1,DA(1),1,DA,3)),U)]"" D | 
|---|
|  | 60 | . N FBAAIN | 
|---|
|  | 61 | . S FBAAIN=$P($G(^FBAAC(DA(3),1,DA(2),1,DA(1),1,DA,0)),U,16) | 
|---|
|  | 62 | . I FBAAIN]"" S FBINV(3,FBAAIN)="" | 
|---|
|  | 63 | D KILL | 
|---|
|  | 64 | Q | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | 5 ;update pharmacy payment record | 
|---|
|  | 67 | Q:'$D(^FBAA(162.1,+FBIEN(1),"RX",+FBIEN,0))  S FBAMT=+$P(^(0),U,16) D | 
|---|
|  | 68 | . I FBDAMT-FBINAMT'=FBAMT,$G(FBACT)="C" S ^TMP("FBERR",$J,4,I)=""_U_FBPROG_U_+FBIEN(1)_U_+FBIEN | 
|---|
|  | 69 | S DA(1)=+FBIEN(1),DA=+FBIEN | 
|---|
|  | 70 | S DR="" | 
|---|
|  | 71 | I FBACT="C" S DR="28////^S X=FBCKDT;30///^S X=FBCKNUM;34///^S X=FBDAMT;35///^S X=FBINAMT;31///@;32///@" | 
|---|
|  | 72 | I FBACT="B" S DR="28///@;30///@;31///@;32///@;34///@;35///@" | 
|---|
|  | 73 | I FBACT="X" S DR="28///@;34///@;35///@;31////^S X=FBXDT;32////^S X=$G(FBRCOD);33///^S X=FBXCOD" D | 
|---|
|  | 74 | .I FBXCOD'="R" S ^TMP("FBERR",$J,5,I)=""_U_FBPROG_U_+FBIEN(1)_U_+FBIEN | 
|---|
|  | 75 | .I FBXCOD="R" S DR=DR_";30///@" | 
|---|
|  | 76 | S DIE="^FBAA(162.1,"_DA(1)_",""RX""," | 
|---|
|  | 77 | D LOCK^FBUCUTL(DIE,DA,1) I FBLOCK D ^DIE L -^FBAA(162.1,DA(1),"RX",DA) | 
|---|
|  | 78 | ; if EDI then add invoice to list in FBINV(, patch *61 | 
|---|
|  | 79 | I FBACT'="B",$P($G(^FBAA(162.1,DA(1),0)),U,13)]"" D | 
|---|
|  | 80 | . N FBAAIN | 
|---|
|  | 81 | . S FBAAIN=$P($G(^FBAA(162.1,DA(1),0)),U) | 
|---|
|  | 82 | . I FBAAIN]"" S FBINV(5,FBAAIN)="" | 
|---|
|  | 83 | D KILL | 
|---|
|  | 84 | Q | 
|---|
|  | 85 | ; | 
|---|
|  | 86 | 9 ;update inpatient payment record | 
|---|
|  | 87 | Q:'$D(^FBAAI(+FBIEN,0))  S FBAMT=+$P(^(0),U,9) D | 
|---|
|  | 88 | .I FBDAMT-FBINAMT'=FBAMT,$G(FBACT)="C" S ^TMP("FBERR",$J,4,I)=""_U_FBPROG_U_+FBIEN | 
|---|
|  | 89 | S DA=+FBIEN | 
|---|
|  | 90 | S DR="" | 
|---|
|  | 91 | I FBACT="C" S DR="45////^S X=FBCKDT;48///^S X=FBCKNUM;52///^S X=FBDAMT;53///^S X=FBINAMT;49///@;50///@" | 
|---|
|  | 92 | I FBACT="B" S DR="45///@;48///@;49///@;50///@;52///@;53///@" | 
|---|
|  | 93 | I FBACT="X" S DR="45///@;52///@;53///@;49////^S X=FBXDT;50////^S X=$G(FBRCOD);51///^S X=FBXCOD" D | 
|---|
|  | 94 | .I FBXCOD'="R" S ^TMP("FBERR",$J,5,I)=""_U_FBPROG_U_+FBIEN | 
|---|
|  | 95 | .I FBXCOD="R" S DR=DR_";48///@" | 
|---|
|  | 96 | S DIE="^FBAAI(" | 
|---|
|  | 97 | D LOCK^FBUCUTL(DIE,DA,1) I FBLOCK D ^DIE L -^FBAAI(DA) | 
|---|
|  | 98 | ; if EDI then add invoice to list in FBINV(, patch *61 | 
|---|
|  | 99 | I FBACT'="B",$P($G(^FBAAI(DA,3)),U)]"" D | 
|---|
|  | 100 | . N FBAAIN | 
|---|
|  | 101 | . S FBAAIN=$P($G(^FBAAI(DA,0)),U) | 
|---|
|  | 102 | . I FBAAIN]"" S FBINV(9,FBAAIN)="" | 
|---|
|  | 103 | D KILL | 
|---|
|  | 104 | Q | 
|---|
|  | 105 | ; | 
|---|
|  | 106 | T ;update travel payment record | 
|---|
|  | 107 | Q:'$D(^FBAAC(+FBIEN(1),3,+FBIEN,0))  S FBAMT=+$P(^(0),U,3) D | 
|---|
|  | 108 | . I FBDAMT-FBINAMT'=FBAMT,$G(FBACT)="C" S ^TMP("FBERR",$J,4,I)=""_U_FBPROG_U_+FBIEN(1)_U_+FBIEN | 
|---|
|  | 109 | S DA(1)=+FBIEN(1),DA=+FBIEN | 
|---|
|  | 110 | S DR="" | 
|---|
|  | 111 | I FBACT="C" S DR="8////^S X=FBCKDT;9///^S X=FBCKNUM;13///^S X=FBDAMT;14///^S X=FBINAMT;10///@;11///@" | 
|---|
|  | 112 | I FBACT="B" S DR="8///@;9///@;10///@;11///@;13///@;14///@" | 
|---|
|  | 113 | I FBACT="X" S DR="8///@;13///@;14///@;10////^S X=FBXDT;11////^S X=$G(FBRCOD);12///^S X=FBXCOD" D | 
|---|
|  | 114 | .I FBXCOD'="R" S ^TMP("FBERR",$J,5,I)=""_U_FBPROG_U_+FBIEN(1)_U_+FBIEN | 
|---|
|  | 115 | .I FBXCOD="R" S DR=DR_";9///@" | 
|---|
|  | 116 | S DIE="^FBAAC("_+FBIEN(1)_",3," | 
|---|
|  | 117 | D LOCK^FBUCUTL(DIE,DA,1) I FBLOCK D ^DIE L -^FBAAC(DA(1),3,DA) | 
|---|
|  | 118 | D KILL | 
|---|
|  | 119 | Q | 
|---|
|  | 120 | ; | 
|---|
|  | 121 | END ;clean and exit | 
|---|
|  | 122 | S XMSER="S."_XQSOP,XMZ=XQMSG D REMSBMSG^XMA1C | 
|---|
|  | 123 | K FB,FBPAID,FBSITE,FBAASN,FBSN,FBMCNT,I,XMER,XMSER,XMREC,XMRG,XMY,^TMP("FBERR",$J),^TMP("FBPAID",$J),^TMP("FBREC",$J) | 
|---|
|  | 124 | KILL K FBLOCK,DIE,DA,DR,FBIEN,FBACT,FBCKNUM,FBRCOD,FBPROG,FBCKDT,FBXDT,FBXCOD,FBINAMT,FBDAMT,FBAMT,FBERR | 
|---|
|  | 125 | Q | 
|---|