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