| 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
 | 
|---|