| 1 | FBAACP ;AISC/CMR-C&P PAYMENT DRIVER ;7/13/2003 | 
|---|
| 2 | ;;3.5;FEE BASIS;**4,38,55,61,77**;JAN 30, 1995 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | K FBAAOUT,FBPOP S FBCNP=1 ;C&P flag | 
|---|
| 5 | D SITE^FBAACO G Q:$G(FBPOP) D BT^FBAACO G Q:$G(FBAAOUT) | 
|---|
| 6 | 1 K FBAR,FBAAOUT,FBDL,FBAAMM D GETVEN1^FBAACO1:$D(FB583),GETVEN^FBAACO1:'$D(FB583) G CLN:$G(FBAAOUT) | 
|---|
| 7 | D GETINV^FBAACO1 G CLN:$G(FBAAOUT) | 
|---|
| 8 | D GETINDT^FBAACO1 G CLN:$G(FBAAOUT) | 
|---|
| 9 | D MMPPT^FBAACP G CLN:$G(FBAAOUT) | 
|---|
| 10 | SVDT W !! S %DT="AEXP",%DT("A")="Date of Service: " D ^%DT I X="^" G CLN | 
|---|
| 11 | I Y<0!(Y>FBAAID) W *7,!!,"Enter the date the Vendor provided the service to the Patient.",!,"The date must be prior to the date the invoice is received.",! G SVDT | 
|---|
| 12 | S FBAADT=Y D SETO^FBAACO3,CPTM^FBAALU(FBAADT) I 'FBGOT G CLN | 
|---|
| 13 | ; prompt revenue code | 
|---|
| 14 | S FBAARC=$$ASKREVC^FBUTL5() I FBAARC="^" S FBAAOUT=1 G CLN | 
|---|
| 15 | ; prompt units paid | 
|---|
| 16 | S FBUNITS=$$ASKUNITS^FBUTL5() I FBUNITS="^" S FBAAOUT=1 G CLN | 
|---|
| 17 | D ASKZIP^FBAAFS($G(FBV),$G(FBAADT)) I $G(FBAAOUT)!($G(FBZIP)']"") G CLN | 
|---|
| 18 | I $$ANES^FBAAFS($$CPT^FBAAUTL4(FBAACP)) D ASKTIME^FBAAFS I $G(FBAAOUT)!('$G(FBTIME)) G CLN | 
|---|
| 19 | D HCFA G CLN:$G(FBAAOUT) | 
|---|
| 20 | S FBAAAMT=0 D AMTPD I $G(FBAAOUT)!('$G(FBAAAMT)) G CLN | 
|---|
| 21 | ; prompt for remittance remarks | 
|---|
| 22 | I $$RR^FBUTL4(.FBRRMK,2)=0 S FBAAOUT=1 G CLN | 
|---|
| 23 | MULT ;begin unique patient entry | 
|---|
| 24 | W:FBINTOT>0 !,"Invoice: "_FBAAIN_" Totals: $ "_FBINTOT | 
|---|
| 25 | K FBAAOUT,FBDL S (DFN,FTP)="" D SITE^FBAACO G Q:$G(FBPOP) W !! | 
|---|
| 26 | I '$D(FB583) K FBDL D GETVET^FBAAUTL1 G CLN:'DFN K FBDMRA D GETAUTH^FBAAUTL1 G MULT:FTP']"" | 
|---|
| 27 | K FBAAOUT D  G Q:$G(FBAAOUT) | 
|---|
| 28 | . N ICDVDT S ICDVDT=$G(FBAADT) | 
|---|
| 29 | . F  D  Q:$G(FBAAOUT)  Q:($$INPICD9^FBCSV1(+$G(Y),"",$G(FBAADT))=0) | 
|---|
| 30 | . . S I=28,DIR(0)="PO^80:EMQZ",DIR("A")="PRIMARY DIAGNOSIS" D DIR | 
|---|
| 31 | D PAT^FBAACO W !! D FILEV^FBAACO5(DFN,FBV) I $G(FBAAOUT) G Q:$D(FB583),CLN | 
|---|
| 32 | ;check for payments against all linked vendors | 
|---|
| 33 | S DA=+Y D CHK^FBAACO4 K FBAACK1,FBAAOUT,DA,X,Y | 
|---|
| 34 | W !! D GETSVDT^FBAACO5(DFN,FBV,FBASSOC,0,FBAADT) I $G(FBAAOUT) D AUTHQ^FBAACO G MULT | 
|---|
| 35 | D SETO^FBAACO3,CHK2^FBAACO4 I FBJ']"" G SVPR | 
|---|
| 36 | CHKE ;determines what action to take on duplicate services entered | 
|---|
| 37 | K FBAAOUT W !!,*7,"Service selected for that date already in system." | 
|---|
| 38 | S DIR(0)="Y",DIR("A")="Do you want to add another service for the SAME DATE",DIR("B")="No" D ^DIR K DIR G SVPR:Y I $D(DIRUT) D DEL^FBAACO3 G Q | 
|---|
| 39 | W !!,*7,"You must use the 'EDIT PAYMENT' option to edit the service previously",!,"entered for that date." D DEL^FBAACO3 | 
|---|
| 40 | G MULT | 
|---|
| 41 | SVPR K FBAAOUT D SVCPR^FBAACO1 G CHKE:$G(FBAAOUT) | 
|---|
| 42 | D FILE^FBAACP1 I Z1>(FBAAMPI-1) W !!,*7,"You have reached the maximum number of payments for a batch!",!,"You must select another Batch for entering Payments!" G CLN | 
|---|
| 43 | G MULT | 
|---|
| 44 | Q ;kill variables and exit | 
|---|
| 45 | D Q^FBAACO | 
|---|
| 46 | Q | 
|---|
| 47 | AMTPD ;get amount paid | 
|---|
| 48 | N FBX | 
|---|
| 49 | S FBFY=FY-1 | 
|---|
| 50 | S (FBAMTPD,FBFSAMT,FBFSUSD)="" | 
|---|
| 51 | S FBX=$$GET^FBAAFS($$CPT^FBAAUTL4(FBAACP),$$MODL^FBAAUTL4("FBMODA","E"),FBAADT,$G(FBZIP),$$FAC^FBAAFS($G(FBHCFA(30))),$G(FBTIME)) | 
|---|
| 52 | ; | 
|---|
| 53 | I '$G(FBAAMM1) D | 
|---|
| 54 | . S FBFSAMT=$P(FBX,U),FBFSUSD=$P(FBX,U,2) | 
|---|
| 55 | E  D | 
|---|
| 56 | . W !,?2,"Payment is for a contracted service so fee schedule does not apply." | 
|---|
| 57 | ; | 
|---|
| 58 | I $P($G(FBX),U)]"" D | 
|---|
| 59 | . W !?2,$S($G(FBAAMM1):"However, f",1:"F") | 
|---|
| 60 | . W "ee schedule amount is $",$P(FBX,U)," from the " | 
|---|
| 61 | . W:$P(FBX,U,3)]"" $P(FBX,U,3)," " ; year if returned | 
|---|
| 62 | . W:$P(FBX,U,2)]"" $$EXTERNAL^DILFD(162.03,45,"",$P(FBX,U,2)) | 
|---|
| 63 | E  W !?2,"Unable to determine a FEE schedule amount." | 
|---|
| 64 | ; | 
|---|
| 65 | I $G(FBUNITS)>1 D | 
|---|
| 66 | . W !!?2,"Units Paid = ",FBUNITS | 
|---|
| 67 | . Q:FBFSAMT'>0 | 
|---|
| 68 | . N FBFSUNIT | 
|---|
| 69 | . ; determine if fee schedule can be multipled by units | 
|---|
| 70 | . S FBFSUNIT=$S(FBFSUSD="R":1,FBFSUSD="F"&(FBAADT>3040930):1,1:0) | 
|---|
| 71 | . I FBFSUNIT D | 
|---|
| 72 | . . S FBFSAMT=$J(FBFSAMT*FBUNITS,0,2) | 
|---|
| 73 | . . W !?2,"  Therefore, fee schedule amount increased to $",FBFSAMT | 
|---|
| 74 | . E  D | 
|---|
| 75 | . . W !?2,"  Fee schedule not complied on per unit basis so amount not adjusted by units." | 
|---|
| 76 | ; | 
|---|
| 77 | I '$G(FBAAMM1) S FBAMTPD=FBFSAMT | 
|---|
| 78 | ; | 
|---|
| 79 | I FBAMTPD=0 D  Q:$G(FBAAOUT) | 
|---|
| 80 | . ;if fee schedule = 0 write message and quit | 
|---|
| 81 | . W !,"You must use the Enter Payment option for CPT codes that have a",!,"Fee Schedule set equal to zero." | 
|---|
| 82 | . S FBAAOUT=1 | 
|---|
| 83 | W ! | 
|---|
| 84 | S DIR(0)="162.03,1",DIR("A")="Enter Amount Paid:  $",DIR("?")="Enter a dollar amount that does not exceed the FEE Schedule" S:FBAMTPD'="" DIR("B")=FBAMTPD D ^DIR K DIR I $D(DIRUT) S FBAAOUT=1 Q | 
|---|
| 85 | I $G(FBAMTPD),+Y>FBAMTPD&('$D(^XUSEC("FBAASUPERVISOR",DUZ))) W !!,*7,"You must be a holder of the 'FBAASUPERVISOR' security key to",!,"exceed the FEE Schedule.  Enter an '^' to quit or accept the default.",! G AMTPD | 
|---|
| 86 | S FBAAAMT=+Y | 
|---|
| 87 | Q | 
|---|
| 88 | HCFA ;get HCFA fields | 
|---|
| 89 | F I=28,30,31 S FBHCFA(I)="" | 
|---|
| 90 | W ! F I=30,31 S DIR(0)="P"_$S(I=30:"^353.1",I=31:"O^353.2")_":EMQZ" D DIR Q:$G(FBAAOUT) | 
|---|
| 91 | K DIR Q | 
|---|
| 92 | DIR ;generic DIR call for HCFA | 
|---|
| 93 | D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S FBAAOUT=1 Q | 
|---|
| 94 | S:Y'=-1 FBHCFA(I)=$P(Y,"^") | 
|---|
| 95 | Q | 
|---|
| 96 | CLN G Q:$D(FB583) | 
|---|
| 97 | D Q G FBAACP | 
|---|
| 98 | Q | 
|---|
| 99 | MMPPT ;money management/prompt pay type for multiple payment entry | 
|---|
| 100 | ; input | 
|---|
| 101 | ;   FBAAPTC | 
|---|
| 102 | ; output | 
|---|
| 103 | ;   FBAAMM | 
|---|
| 104 | ;   FBAAMM1 | 
|---|
| 105 | ;   FBAAOUT | 
|---|
| 106 | ; | 
|---|
| 107 | S (FBAAMM,FBAAMM1)="" | 
|---|
| 108 | I $G(FBAAPTC)'="R" D | 
|---|
| 109 | . W !,"The answer to the following will apply to all payments entered via this option." | 
|---|
| 110 | . S DIR(0)="Y" | 
|---|
| 111 | . S DIR("A")="Are payments for contracted services" | 
|---|
| 112 | . S DIR("B")="No" | 
|---|
| 113 | . S DIR("?",1)="Answering no indicates interest will not be paid for any line items." | 
|---|
| 114 | . S DIR("?",2)="Answering yes indicates interest will be paid." | 
|---|
| 115 | . S DIR("?",3)="A fee schedule is not used for contracted services." | 
|---|
| 116 | . S DIR("?")="Enter either 'Y' or 'N'." | 
|---|
| 117 | . D ^DIR K DIR I $D(DIRUT) S FBAAOUT=1 Q | 
|---|
| 118 | . S (FBAAMM,FBAAMM1)=$S(Y:1,1:"") | 
|---|
| 119 | Q | 
|---|