| 1 | FBAACO0 ;AISC/GRR-DISPLAY PATIENT ADDRESS DATA AND EDIT ;7/13/2003 | 
|---|
| 2 | ;;3.5;FEE BASIS;**4,38,52,57,61,75,70**;JAN 30, 1995 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | S FBMST=$S(FBTT=1:"Y",1:""),FBTTYPE="A",FBFDC="" | 
|---|
| 5 | N FBEDPTAD S (FBEDPTAD(1),FBEDPTAD(2))=0 | 
|---|
| 6 | W @IOF,"Patient:  ",$P(^DPT(DFN,0),"^") S (Y(0),HY(0))=$G(^DPT(DFN,.11)) I Y(0)="" W !,*7,"No Address information for this patient!" G EDIT | 
|---|
| 7 | S VAPA("P")="" D ADD^VADPT | 
|---|
| 8 | S FBEDPTAD(1)=$$ISCCADR() | 
|---|
| 9 | S FBEDPTAD(2)="N" | 
|---|
| 10 | I $$CCADR(2) | 
|---|
| 11 | W !!,"Patient's Permanent address:" | 
|---|
| 12 | F Z=1:1:3 I VAPA(Z)]"" W !?2,"Address Line ",Z,":",?18,VAPA(Z) | 
|---|
| 13 | W !?2,"City:",?18,VAPA(4),!?2,"State:",?18,$P(VAPA(5),U,2) | 
|---|
| 14 | W !?2,"Zip:",?18,$S(+$G(VAPA(11)):$P(VAPA(11),U,2),1:VAPA(6)),!?2,"County",?18,$P(VAPA(7),U,2) | 
|---|
| 15 | K VAPA,VAERR | 
|---|
| 16 | RD W ! S DIR("A")="Want to edit Permanent Address data",DIR("B")="No",DIR(0)="Y" D ^DIR K DIR  S:Y&('$D(DIRUT)) FBEDPTAD(2)="Y" G EDIT | 
|---|
| 17 | Q | 
|---|
| 18 | EDIT I $G(FBEDPTAD(2))'="N" W !! S HY(0)=$G(^DPT(DFN,.11)) D EN^DGREGAED(DFN) | 
|---|
| 19 | I $$EDTCCADR()=0 I FBTT'=1 I FBEDPTAD(2)="N" Q | 
|---|
| 20 | MRA I FBTT=1!($G(^DPT(DFN,.11))'=$G(HY(0))) S FBD1=FTP D ENT^FBAAAUT K FBD1 | 
|---|
| 21 | Q | 
|---|
| 22 | FEE ;calculates amount paid based on fee schedule | 
|---|
| 23 | N FB1725 | 
|---|
| 24 | ; set FB1725 flag = true if payment for a 38 U.S.C. 1725 claim | 
|---|
| 25 | S FB1725=$S($G(FB583):+$P($G(^FB583(+FB583,0)),U,28),1:0) | 
|---|
| 26 | S FBFY=FY-1 | 
|---|
| 27 | S (FBFSAMT,FBFSUSD)="",FBAMTPD=$S($G(FBAMTPD)>0:FBAMTPD,1:"") | 
|---|
| 28 | ; if amount not passed then use fee schedule | 
|---|
| 29 | I '$G(FBAMTPD) D | 
|---|
| 30 | . N FBX | 
|---|
| 31 | . S FBX=$$GET^FBAAFS($$CPT^FBAAUTL4(FBAACP),$$MODL^FBAAUTL4("FBMODA","E"),FBAADT,$G(FBZIP),$$FAC^FBAAFS($G(FBHCFA(30))),$G(FBTIME)) | 
|---|
| 32 | . ; | 
|---|
| 33 | . I '$G(FBAAMM1) D | 
|---|
| 34 | . . S FBFSAMT=$P(FBX,U),FBFSUSD=$P(FBX,U,2) | 
|---|
| 35 | . E  W !?2,"Payment is for a contracted service so fee schedule does not apply." | 
|---|
| 36 | . ; | 
|---|
| 37 | . I $P($G(FBX),U)]"" D | 
|---|
| 38 | . . W !?2,$S($G(FBAAMM1):"However, f",1:"F") | 
|---|
| 39 | . . W "ee schedule amount is $",$P(FBX,U)," from the " | 
|---|
| 40 | . . W:$P(FBX,U,3)]"" $P(FBX,U,3)," " ; year if returned | 
|---|
| 41 | . . W:$P(FBX,U,2)]"" $$EXTERNAL^DILFD(162.03,45,"",$P(FBX,U,2)) | 
|---|
| 42 | . E  W !?2,"Unable to determine a FEE schedule amount." | 
|---|
| 43 | . ; | 
|---|
| 44 | . I FB1725 D | 
|---|
| 45 | . . W !!?2,"**Payment is for emergency treatment under 38 U.S.C. 1725." | 
|---|
| 46 | . . I FBFSAMT D | 
|---|
| 47 | . . . S FBFSAMT=$J(FBFSAMT*.7,0,2) | 
|---|
| 48 | . . . W !?2,"  Therefore, fee schedule amount reduced to $",FBFSAMT," (70%)." | 
|---|
| 49 | . ; | 
|---|
| 50 | . I $G(FBUNITS)>1 D | 
|---|
| 51 | . . W !!?2,"Units Paid = ",FBUNITS | 
|---|
| 52 | . . Q:FBFSAMT'>0 | 
|---|
| 53 | . . N FBFSUNIT | 
|---|
| 54 | . . ; determine if fee schedule can be multipled by units | 
|---|
| 55 | . . S FBFSUNIT=$S(FBFSUSD="R":1,FBFSUSD="F"&(FBAADT>3040930):1,1:0) | 
|---|
| 56 | . . I FBFSUNIT D | 
|---|
| 57 | . . . S FBFSAMT=$J(FBFSAMT*FBUNITS,0,2) | 
|---|
| 58 | . . . W !?2,"  Therefore, fee schedule amount increased to $",FBFSAMT | 
|---|
| 59 | . . E  D | 
|---|
| 60 | . . . W !?2,"  Fee schedule not complied on per unit basis so amount not adjusted for units." | 
|---|
| 61 | . ; | 
|---|
| 62 | . I '$G(FBAAMM1) D | 
|---|
| 63 | . . ; set default amount paid to lesser of amt claimed (J) or fee sched. | 
|---|
| 64 | . . S FBAMTPD=$S(FBFSAMT>J:J,FBFSAMT>0:FBFSAMT,1:"") | 
|---|
| 65 | . ; | 
|---|
| 66 | . W ! | 
|---|
| 67 | ; | 
|---|
| 68 | AMTPD W !,"AMOUNT PAID: "_$S(FBAMTPD]"":FBAMTPD_"//",1:"") R X:DTIME S:X="" X=FBAMTPD G KILL:$E(X)="^",HELP1:$E(X)="?" S:X["$" X=$P(X,"$",2) I +X'=X&(X'?.N.1".".2N)!(+X>+J)!(+X<0) G HELPPD | 
|---|
| 69 | I FBAMTPD]"",X>FBAMTPD&('$D(^XUSEC("FBAASUPERVISOR",DUZ))) D  G AMTPD | 
|---|
| 70 | .W !!,*7,"You must be a holder of the 'FBAASUPERVISOR' key to",!,"exceed the Fee Schedule. Entering an up-arrow ('^') will",!,"delete the payment or you can accept the default.",! | 
|---|
| 71 | S FBAMTPD=X Q | 
|---|
| 72 | KILL W !!,*7,"Entering an '^' will delete this payment!" R !,?5,"Do you want to delete? No//",X:DTIME S:X="" X="N" D VALCK^FBAAUTL1 G KILL:'VAL,AMTPD:"Nn"[$E(X) | 
|---|
| 73 | S DIK="^FBAAC("_DA(3)_",1,"_DA(2)_",1,"_DA(1)_",1," D WAIT^DICD,^DIK W !,?3,"<DELETED>" K DA,J,K,DIC,DIK,FBAACP,FBAADT,FBX S Y=0,FBDL=1 Q | 
|---|
| 74 | HELP1 W !!,"Enter a dollar amount that does not exceed the amount claimed.",!,"Entering an '^' will delete the payment.",! | 
|---|
| 75 | I FBAMTPD>0 W !,"Only the holder of the 'FBAASUPERVISOR' key may exceed the",!,"Fee Schedule.",! | 
|---|
| 76 | G AMTPD | 
|---|
| 77 | HELPPD W !!,*7,"Enter a dollar amount that does not exceed the amount claimed.",! G AMTPD | 
|---|
| 78 | Q | 
|---|
| 79 | ;print Confidential Communication address | 
|---|
| 80 | ;ADD^VADPT must be invoked before this call | 
|---|
| 81 | ;FBDFN -patient's DFN | 
|---|
| 82 | ;FBSTPOS - position to start print | 
|---|
| 83 | ;returns 0 if there is no active CC address | 
|---|
| 84 | ;returns 1 if active | 
|---|
| 85 | CCADR(FBSTPOS) ; | 
|---|
| 86 | N FBACT | 
|---|
| 87 | S FBACT=0 | 
|---|
| 88 | I '$D(VAPA(12)) Q 0  ;if D ADD^VADPT was not invoked before | 
|---|
| 89 | I 'VAERR D | 
|---|
| 90 | . S FBACT=$$ACTIVECC() | 
|---|
| 91 | . Q:'FBACT | 
|---|
| 92 | . W !!,"Confidential Communication address until: "_$P($G(VAPA(21)),U,2) | 
|---|
| 93 | . I $G(VAPA(13))]"" W !?FBSTPOS,"Line 1: ",$G(VAPA(13)) | 
|---|
| 94 | . I $G(VAPA(14))]"" W " Line 2: ",$G(VAPA(14)) | 
|---|
| 95 | . I $G(VAPA(15))]"" W !?FBSTPOS,"Line 3: ",$G(VAPA(15)) | 
|---|
| 96 | . W !?FBSTPOS,"City:",?9,$S($G(VAPA(16))]"":$G(VAPA(16)),1:"     ") | 
|---|
| 97 | . W ?40,"State:",?47,$S($P($G(VAPA(17)),U,2)]"":$P($G(VAPA(17)),U,2),1:"  ") | 
|---|
| 98 | . W !?FBSTPOS,"Zip:",?9,$P($G(VAPA(18)),U,2) | 
|---|
| 99 | . W ?20,"County:",?28,$P($G(VAPA(19)),U,2) | 
|---|
| 100 | Q $G(FBACT) | 
|---|
| 101 | ; | 
|---|
| 102 | ;is called after ADD^VADPT to verify whether confidential address is | 
|---|
| 103 | ;active or not to encapsulate the logic related to status of CC address | 
|---|
| 104 | ;input:  VAPA | 
|---|
| 105 | ACTIVECC() ; | 
|---|
| 106 | Q (+$G(VAPA(12))=1)&($P($G(VAPA(22,3)),"^",3)="Y") | 
|---|
| 107 | ; | 
|---|
| 108 | ;edit confidential address | 
|---|
| 109 | ;returns 1 if CC address has been edited | 
|---|
| 110 | ;otherwise - 0 | 
|---|
| 111 | EDTCCADR() ; | 
|---|
| 112 | Q:'$G(DFN) 0 | 
|---|
| 113 | I FBEDPTAD(1)=0 D | 
|---|
| 114 | . N VAPA S VAPA("P")="" D ADD^VADPT S FBEDPTAD(1)=$$ISCCADR() | 
|---|
| 115 | I FBEDPTAD(1)'="N" D | 
|---|
| 116 | . W:FBEDPTAD(1)'="B" !!,"WARNING: The Confidential address is NOT active for the Billing Category." | 
|---|
| 117 | . S DIR("A")="Want to edit Confidential Address data" | 
|---|
| 118 | E  S DIR("A")="Want to add Confidential Address data" | 
|---|
| 119 | W ! S DIR("B")="No",DIR(0)="Y" | 
|---|
| 120 | D ^DIR K DIR | 
|---|
| 121 | Q:($D(DIRUT)) 0 | 
|---|
| 122 | ;Registration API | 
|---|
| 123 | I Y D QUES^DGRPU1(+DFN,"ADD4") Q 1 | 
|---|
| 124 | Q 0 | 
|---|
| 125 | ; | 
|---|
| 126 | ;returns "B" if patient has any (active or inactive) CC address and billing category | 
|---|
| 127 | ;returns "Y" if patient has any (active or inactive) CC address with another category | 
|---|
| 128 | ;otherwise returns "N" | 
|---|
| 129 | ISCCADR() ; | 
|---|
| 130 | Q:($P($G(VAPA(22,3)),"^",3)="Y") "B" | 
|---|
| 131 | Q:'$O(VAPA(22,0)) "N" | 
|---|
| 132 | Q "Y" | 
|---|
| 133 | ; | 
|---|
| 134 | ;FBAACO0 | 
|---|