| 1 | FBPCR2 ;AISC/DMK,GRR,TET-OUTPATIENT POTENTIAL COST RECOVERY SORT/PRINT ;07/01/2006 | 
|---|
| 2 | ;;3.5;FEE BASIS;**4,48,55,69,76,98**;JAN 30, 1995;Build 54 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | EN ;entry point | 
|---|
| 5 | S (FBCATC,FBINS,FBPSF)=0 | 
|---|
| 6 | SORT ;sort by date finalized, patient, vendor, treatment ien, service ien | 
|---|
| 7 | S I=FBBDATE-.1 F  S I=$O(^FBAAC("AK",I)) Q:'I!(I>FBEDATE)  S J=0 F  S J=$O(^FBAAC("AK",I,J)) Q:'J  D | 
|---|
| 8 | .S DFN=J D VET^FBPCR | 
|---|
| 9 | .S K=0  F  S K=$O(^FBAAC("AK",I,J,K)) Q:'K  S L=0 F  S L=$O(^FBAAC("AK",I,J,K,L)) Q:'L  D SETTR S M=0 F  S M=$O(^FBAAC("AK",I,J,K,L,M)) Q:'M  D  S (FBCATC,FBINS,FBPSF)=0 | 
|---|
| 10 | ..D SET Q:'FBPSV&('$D(FBPSV(FBPSF)))  I FBCATC!FBINS D SETTMP | 
|---|
| 11 | KILL ;kill variables set in this routine | 
|---|
| 12 | K A1,A2,A3,D,D2,DFN,FBAACPTC,FBBN,FBCATC,FBCP,FBDOB,FBDOS,FBDT,FBDT1,FBIN,FBINS,FBOB,FBP,FBPAT,FBPCR,FBPDX,FBPDXC,FBPID,FBPNAME,FBPSF,FBSC,FBTA,FBTYPE,FBVEN,FBVID,FBVNAME,FBVP,I,J,K,L,M,T,Y,FBMODLE | 
|---|
| 13 | K FBCSID,FBADJLA,FBADJLR,FBRRMKL,FBUNITS,TAMT,T,FBADJ | 
|---|
| 14 | Q | 
|---|
| 15 | SET ;set variables - also entry point from FBPCR67 | 
|---|
| 16 | N FBPCR,FBX | 
|---|
| 17 | S Y=$G(^FBAAC(J,1,K,1,L,1,M,0)) Q:'+$P(Y,U,9)!($G(^FBAAC(J,1,K,1,L,1,M,"FBREJ"))]"") | 
|---|
| 18 | S FBY=$G(^FBAAC(J,1,K,1,L,1,M,2)) | 
|---|
| 19 | S FBVNAME=$E($P($G(^FBAAV(K,0)),U),1,23),FBVID=$S(FBVNAME]"":$P(^(0),U,2)_"/"_$S($P($G(^(3)),U,2)]"":$P(^(3),U,2),1:"**********"),1:"") | 
|---|
| 20 | S FBP=+$P(Y,U,9),FBSC=$P(Y,U,27),FBPDX=+$P(Y,U,23),FBPSF=+$P(Y,U,12) | 
|---|
| 21 | S FBSC=$S(FBSC="Y":"YES",FBSC="N":"NO",1:"-") | 
|---|
| 22 | S T=$P(Y,U,5),D2=$P(Y,U,6),FBDOS=D2,D2=$$DATX^FBAAUTL(D2),FBCP=$P(Y,U,18),FBCP=$S(FBCP=1:"(C&P)",1:"") | 
|---|
| 23 | Q:FBCP]""!('FBPSV&('$D(FBPSV(FBPSF))))  S FBPCR=+$G(^FBAAC(J,1,K,1,L,0)),FBCATC=$$CATC^FBPCR(DFN,FBPCR,+$P(Y,U,18)),FBINS=$S(FBSC["N":$$INSURED^FBPCR4(DFN,FBPCR),1:0) Q:'FBCATC&'FBINS | 
|---|
| 24 | S FBAACPTC=$$CPT^FBAAUTL4($P(Y,U)) | 
|---|
| 25 | S FBOB=$P(Y,U,10) | 
|---|
| 26 | I T]"" S T=$P($G(^FBAA(161.27,+T,0)),U) | 
|---|
| 27 | S FBTYPE=$P(Y,U,20),FBVP=$P(Y,U,21),FBIN=$P(Y,U,16),FBBN=$P(Y,U,8),FBBN=$S(FBBN']"":"",$D(^FBAA(161.7,FBBN,0)):$P(^(0),U),1:""),FBBN=$S(FBBN="":"",1:$E("00000",$L(FBBN)+1,5)_FBBN) | 
|---|
| 28 | S FBVEN=FBVNAME_";"_FBVID,FBPAT=FBPNAME_";"_DFN | 
|---|
| 29 | S FBMODLE=$$MODL^FBAAUTL4("^FBAAC("_J_",1,"_K_",1,"_L_",1,"_M_",""M"")","E") | 
|---|
| 30 | I T]"" S T=$P($G(^FBAA(161.27,+T,0)),U) ;suspend code | 
|---|
| 31 | S TAMT=$FN($P(Y,U,4),"",2) ;suspend amount | 
|---|
| 32 | S FBUNITS=$P(FBY,U,14) ;units paid | 
|---|
| 33 | S FBCSID=$P(FBY,U,16) ;patient account number | 
|---|
| 34 | S FBX=$$ADJLRA^FBAAFA(M_","_L_","_K_","_J_",") | 
|---|
| 35 | S FBADJLR=$P(FBX,U) ;adjustment codes | 
|---|
| 36 | S FBADJLA=$P(FBX,U,2) ;adjustment amounts | 
|---|
| 37 | S FBRRMKL=$$RRL^FBAAFR(M_","_L_","_K_","_J_",") ;remit remarks | 
|---|
| 38 | ;output format | 
|---|
| 39 | S A1=$J($P(Y,U,2),6,2),A2=$J($P(Y,U,3),6,2),A3=$J(A3,6,2),FBIN=$J(FBIN,7) | 
|---|
| 40 | S FBDT1=$S(FBVP="VP":"#",1:"")_$S(FBTYPE="R":"*",1:" ")_FBDT | 
|---|
| 41 | Q | 
|---|
| 42 | SETTMP ;sort data by primary service facility, patient, fee program, vendor, date | 
|---|
| 43 | Q:$$FILTER^FBPCR4()=0 | 
|---|
| 44 | I $P(Y,U,9)'=FBPI Q | 
|---|
| 45 | S ^TMP($J,"FB",FBPSF,FBPAT,FBP,FBVEN,I,L_M)=FBDT1_U_FBAACPTC_FBCP_$S($G(FBMODLE)]"":"-"_FBMODLE,1:"")_U_A1_U_A2_U_T_U_FBBN_U_FBIN_U_D2_U_FBSC_U_FBPDX_U_FBOB_U_FBPI_U_FBCATC_U_FBINS | 
|---|
| 46 | S ^TMP($J,"FB",FBPSF,FBPAT,FBP,FBVEN,I,L_M,"FBADJ")=TAMT_U_FBUNITS_U_FBADJLR_U_FBADJLA_U_FBRRMKL_U_FBCSID | 
|---|
| 47 | Q | 
|---|
| 48 | SETTR S D=$S($D(^FBAAC(J,1,K,1,L,0)):$P(^(0),"^",1),1:""),A3=".00" | 
|---|
| 49 | I D]"",$D(^FBAAC(J,3,"AB",D)) S FBTA=$O(^FBAAC(J,3,"AB",D,0)),A3=$S($P(^FBAAC(J,3,FBTA,0),"^",3)]"":$P(^(0),"^",3),1:.0001) | 
|---|
| 50 | S FBDT=$$DATX^FBAAUTL(D) | 
|---|
| 51 | Q | 
|---|
| 52 | EN1 ;entry point to set variables, called by fbpcr67, anc | 
|---|
| 53 | N FBVEN,FBPAT,FBDT1 | 
|---|
| 54 | D SETTR,SET | 
|---|
| 55 | Q | 
|---|
| 56 | PRINT ;write output | 
|---|
| 57 | D HDR1 S FBVI="" F  S FBVI=$O(^TMP($J,"FB",FBPSF,FBPT,FBPI,FBVI)) Q:FBVI']""!(FBOUT)  D SH Q:FBOUT  D  Q:FBOUT | 
|---|
| 58 | .S FBDT=0 F  S FBDT=$O(^TMP($J,"FB",FBPSF,FBPT,FBPI,FBVI,FBDT)) Q:'FBDT  S M=0 F  S M=$O(^TMP($J,"FB",FBPSF,FBPT,FBPI,FBVI,FBDT,M)) Q:'M  D  Q:FBOUT | 
|---|
| 59 | ..I ($Y+4)>IOSL D PAGE Q:FBOUT | 
|---|
| 60 | ..S FBDATA=^TMP($J,"FB",FBPSF,FBPT,FBPI,FBVI,FBDT,M),FBCATC=$P(FBDATA,U,13),FBINS=$P(FBDATA,U,14) | 
|---|
| 61 | ..S FBADJ=$G(^TMP($J,"FB",FBPSF,FBPT,FBPI,FBVI,FBDT,M,"FBADJ")) | 
|---|
| 62 | ..;S FBLOC=1_U_12_U_23_U_33_U_47_U_57_U_63_U_71 | 
|---|
| 63 | ..W ! | 
|---|
| 64 | ..;S I=1 W ?$P(FBLOC,U,I),$P(FBDATA,U,I) | 
|---|
| 65 | ..W ?1,$P(FBDATA,U,1) | 
|---|
| 66 | ..;S I=2 W ?$P(FBLOC,U,I),$P($P(FBDATA,U,I),",") | 
|---|
| 67 | ..W ?11,$P($P(FBDATA,U,2),",") | 
|---|
| 68 | ..;F I=3:1:8 W ?$P(FBLOC,U,I),$P(FBDATA,U,I) | 
|---|
| 69 | ..W ?31,$J($P(FBADJ,U,2),10) | 
|---|
| 70 | ..W ?43,$P(FBDATA,U,6) | 
|---|
| 71 | ..W ?54,$P(FBDATA,U,7) | 
|---|
| 72 | ..W ?64,$P(FBDATA,U,8) | 
|---|
| 73 | ..I $P($P(FBDATA,U,2),",",2)]"" D  Q:FBOUT | 
|---|
| 74 | ...N FBI,FBMOD | 
|---|
| 75 | ...F FBI=2:1 S FBMOD=$P($P(FBDATA,U,2),",",FBI) Q:FBMOD=""  D  Q:FBOUT | 
|---|
| 76 | ....I $Y+7>IOSL D PAGE Q:FBOUT  W !,"  (continued)" | 
|---|
| 77 | ....W !,?16,"-",FBMOD | 
|---|
| 78 | ..W !,$P(FBDATA,U,3) | 
|---|
| 79 | ..W ?13,$P(FBDATA,U,4) | 
|---|
| 80 | ..W ?23,$S($P(FBADJ,U,3)]"":$P(FBADJ,U,3),1:$P(FBDATA,U,5)) | 
|---|
| 81 | ..W ?33,$J($S($P(FBADJ,U,4)]"":$J($P(FBADJ,U,4),14),1:$P(FBADJ,U,1)),14) | 
|---|
| 82 | ..W ?48,$P(FBADJ,U,5) | 
|---|
| 83 | ..W ?60,$P(FBADJ,U,6) | 
|---|
| 84 | ..S FBPDX=$P(FBDATA,U,10),FBPDXC=$$ICD9^FBCSV1(FBPDX,$$DT2FMDT^FBCSV1($P(FBDATA,U))),$P(FBDATA,U,10)=$E($$ICD9P^FBCSV1(FBPDX,3,$$DT2FMDT^FBCSV1($P(FBDATA,U))),1,19),FBPDXC=$S(FBPDXC="":"",1:" ("_FBPDXC_")") | 
|---|
| 85 | ..W !?3,"Primary Dx: ",$P(FBDATA,U,10),FBPDXC,?45,"S/C Condition? ",$P(FBDATA,U,9) W ?66,"Obl.#: ",$P(FBDATA,U,11) | 
|---|
| 86 | ..I FBCATC!FBINS D | 
|---|
| 87 | ...W !?5,">>>" | 
|---|
| 88 | ...I FBCATC=0 W "Cost recover from insurance." | 
|---|
| 89 | ...I FBCATC=1 W "Cost recover from means testing"_$S(FBINS:" and insurance.",1:".") | 
|---|
| 90 | ...I FBCATC=2 W "Cost recover from LTC co-pay"_$S(FBINS:" and insurance.",1:".") | 
|---|
| 91 | ...I FBCATC=3 W $S(FBINS:"Cost recover from insurance, ",1:"")_"1010EC Missing for LTC Patient." | 
|---|
| 92 | ...I FBCATC=4 W $S(FBINS:"Cost Recover from insurance and ",1:"")_"Potential Cost Recover from LTC co-pay." | 
|---|
| 93 | ..S A3=".00" | 
|---|
| 94 | Q | 
|---|
| 95 | HDR ;main header | 
|---|
| 96 | D HDR^FBPCR Q:FBOUT | 
|---|
| 97 | HDR1 W !!?(IOM-(13+$L(FBXPROG))/2),"FEE PROGRAM: ",FBXPROG | 
|---|
| 98 | ;W !!,?2,"Svc Date",?11,"CPT-MOD",?23,"Amount",?33," Amount",?42,"Susp",?49,"Travel",?57,"Batch",?63,"Invoice",?71,"Voucher" | 
|---|
| 99 | ;W !,?23,"Claimed",?35,"Paid",?42,"Code",?50,"Paid",?58,"Num",?64,"Num",?72,"Date",!,FBDASH | 
|---|
| 100 | W !!,?1,"Svc Date",?11,"CPT-MOD ",?19,"Travel Paid",?31,"Units Paid",?43,"Batch No.",?54,"Inv No.",?64,"Voucher Date" | 
|---|
| 101 | W !,"Amt Claimed",?13,"Amt Paid",?23,"Adj Code",?36,"Adj Amounts",?48,"Remit Remark",?61,"Patient Account No",!,FBDASH | 
|---|
| 102 | Q | 
|---|
| 103 | SH ;subheader - vendor, prints when name changed | 
|---|
| 104 | I ($Y+6)>IOSL D HDR Q:FBOUT | 
|---|
| 105 | ;W !!,"Vendor: ",$P(FBVI,";"),?41,"Vendor ID/NPI: ",$P(FBVI,";",2) | 
|---|
| 106 | W !!,"Vendor: ",$P(FBVI,";"),?41,"Vendor ID: ",$P($P(FBVI,";",2),"/",1) | 
|---|
| 107 | W !?20,"Fee Basis Billing Provider NPI: ",$P(FBVI,"/",2) | 
|---|
| 108 | Q | 
|---|
| 109 | CR ;read for display | 
|---|
| 110 | S DIR(0)="E" W ! D ^DIR K DIR S:$D(DUOUT)!($D(DTOUT)) FBOUT=1 | 
|---|
| 111 | Q | 
|---|
| 112 | PAGE ;new page | 
|---|
| 113 | D HDR Q:FBOUT  D SH | 
|---|
| 114 | Q | 
|---|