1 | IBJDF2 ;ALB/CPM - THIRD PARTY FOLLOW-UP SUMMARY REPORT ; 03-JAN-97
|
---|
2 | ;;2.0;INTEGRATED BILLING;**69,91,100,118,133,205**;21-MAR-94
|
---|
3 | ;
|
---|
4 | EN ; - Option entry point.
|
---|
5 | ;
|
---|
6 | W !!,"This report provides a summary of all outstanding Third Party receivables.",!
|
---|
7 | ;
|
---|
8 | DATE ; - Choose date to use for calculation
|
---|
9 | W !!,"Calculate report using (D)ATE OF CARE or (A)CTIVE IN AR (days): (A)CTIVE IN AR// " R X:DTIME
|
---|
10 | G:'$T!(X["^") ENQ S:X="" X="A" S X=$E(X)
|
---|
11 | I "ADad"'[X S IBOFF=99 D HELP^IBJDF1H G DATE
|
---|
12 | W " ",$S("Dd"[X:"DATE OF CARE",1:"(DAYS) ACTIVE IN AR")
|
---|
13 | S IBSDATE=$S("Dd"[X:"D",1:"A")
|
---|
14 | ;
|
---|
15 | ; - Sort by division.
|
---|
16 | S DIR(0)="Y",DIR("B")="NO"
|
---|
17 | S DIR("A")="Do you wish to sort this report by division"
|
---|
18 | S DIR("?")="^D DHLP^IBJDF2"
|
---|
19 | D ^DIR K DIR I $D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) G ENQ
|
---|
20 | S IBSORT=+Y K DIROUT,DTOUT,DUOUT,DIRUT
|
---|
21 | ;
|
---|
22 | ; - Issue prompt for division.
|
---|
23 | I IBSORT D PSDR^IBODIV G:Y<0 ENQ
|
---|
24 | ;
|
---|
25 | TYP ; - Select type of summaries to print.
|
---|
26 | W !!,"Choose which type of summaries to print:",!
|
---|
27 | S DIR(0)="LO^1:4^K:+$P(X,""-"",2)>4 X"
|
---|
28 | S DIR("A",1)=" 1 - INPATIENT RECEIVABLES"
|
---|
29 | S DIR("A",2)=" 2 - OUTPATIENT RECEIVABLES"
|
---|
30 | S DIR("A",3)=" 3 - PHARMACY REFILL RECEIVABLES"
|
---|
31 | S DIR("A",4)=" 4 - ALL RECEIVABLES"
|
---|
32 | S DIR("A",5)="",DIR("A")="Select",DIR("B")=4
|
---|
33 | D ^DIR K DIR I $D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) G ENQ
|
---|
34 | S IBSEL=Y K DIROUT,DTOUT,DUOUT,DIRUT
|
---|
35 | ;
|
---|
36 | W !!,"This report only requires an 80 column printer."
|
---|
37 | W !!,"Note: This report requires a search through all active receivables."
|
---|
38 | W !?6,"You should queue this report to run after normal business hours.",!
|
---|
39 | ;
|
---|
40 | ; - Select a device.
|
---|
41 | S %ZIS="QM" D ^%ZIS G:POP ENQ
|
---|
42 | I $D(IO("Q")) D G ENQ
|
---|
43 | .S ZTRTN="DQ^IBJDF2",ZTDESC="IB - FOLLOW-UP SUMMARY REPORT"
|
---|
44 | .F I="IBSEL","IBSDATE","IBSORT","VAUTD","VAUTD(" S ZTSAVE(I)=""
|
---|
45 | .D ^%ZTLOAD
|
---|
46 | .W !!,$S($D(ZTSK):"This job has been queued. The task number is "_ZTSK_".",1:"Unable to queue this job.")
|
---|
47 | .K ZTSK,IO("Q") D HOME^%ZIS
|
---|
48 | ;
|
---|
49 | U IO
|
---|
50 | ;
|
---|
51 | DQ ; - Tasked entry point.
|
---|
52 | ;
|
---|
53 | I $G(IBXTRACT) D E^IBJDE(9,1) ; Change extract status.
|
---|
54 | ;
|
---|
55 | K IB F I=1,2,3,4 I IBSEL[I D
|
---|
56 | .I 'IBSORT D Q
|
---|
57 | ..F J=1:1:9 S IB(0,I,J)=""
|
---|
58 | .I 'VAUTD D Q
|
---|
59 | ..S J=0 F S J=$O(VAUTD(J)) Q:'J F K=1:1:9 S IB(J,I,K)=""
|
---|
60 | .S J=0 F S J=$O(^DG(40.8,J)) Q:'J F K=1:1:9 S IB(J,I,K)=""
|
---|
61 | ;
|
---|
62 | ; - Find data required for the report.
|
---|
63 | S (IBQ,IBA)=0 F S IBA=$O(^PRCA(430,"AC",16,IBA)) Q:'IBA D Q:IBQ
|
---|
64 | .;
|
---|
65 | .I IBA#100=0 S IBQ=$$STOP^IBOUTL("Third Party Follow-Up Summary Report") Q:IBQ
|
---|
66 | .;
|
---|
67 | .S IBAR=$G(^PRCA(430,IBA,0))
|
---|
68 | .I $P(IBAR,U,2)'=9 Q ; Not an RI bill.
|
---|
69 | .S:"Aa"[IBSDATE IBARD=$$ACT(IBA) S:"Dd"[IBSDATE IBARD=$$DATE1(IBA) I 'IBARD Q ; No activation date.
|
---|
70 | .I '$D(^DGCR(399,IBA,0)) Q ; No corresponding claim to this AR.
|
---|
71 | .;
|
---|
72 | .; - Get division if necessary.
|
---|
73 | .I 'IBSORT S IBDIV=0
|
---|
74 | .E S IBDIV=$$DIV(IBA) I 'IBDIV S IBDIV=+$$PRIM^VASITE()
|
---|
75 | .I IBSORT,'VAUTD Q:'$D(VAUTD(IBDIV)) ; Not a selected division.
|
---|
76 | .;
|
---|
77 | .; - Determine whether bill is inpatient, outpatient, or RX refill.
|
---|
78 | .S IBTYP=$P($G(^DGCR(399,IBA,0)),U,5),IBTYP=$S(IBTYP>2:2,1:1)
|
---|
79 | .S:$D(^IBA(362.4,"C",IBA)) IBTYP=3 I IBSEL'[IBTYP,IBSEL'[4 Q
|
---|
80 | .;
|
---|
81 | .; - Handle claims referred to Regional Counsel.
|
---|
82 | .S IBOUT=+$G(^PRCA(430,IBA,7))
|
---|
83 | .I $P($G(^PRCA(430,IBA,6)),U,4) D Q
|
---|
84 | ..F I=IBTYP,4 I IBSEL[I D
|
---|
85 | ...S $P(IB(IBDIV,I,8),U)=+IB(IBDIV,I,8)+1
|
---|
86 | ...S $P(IB(IBDIV,I,8),U,2)=$P(IB(IBDIV,I,8),U,2)+IBOUT
|
---|
87 | .;
|
---|
88 | .; - Determine age and outstanding balance.
|
---|
89 | .S IBAGE=$$FMDIFF^XLFDT(DT,IBARD),IBCAT=$$CAT(IBAGE)
|
---|
90 | .;
|
---|
91 | .F I=IBTYP,4 I IBSEL[I D
|
---|
92 | ..S $P(IB(IBDIV,I,IBCAT),U)=+IB(IBDIV,I,IBCAT)+1
|
---|
93 | ..S $P(IB(IBDIV,I,IBCAT),U,2)=$P(IB(IBDIV,I,IBCAT),U,2)+IBOUT
|
---|
94 | ;
|
---|
95 | I IBQ G ENQ
|
---|
96 | ;
|
---|
97 | ; - Extract summary data.
|
---|
98 | I $G(IBXTRACT) D G ENQ
|
---|
99 | .F I=1:1:8 D
|
---|
100 | ..F J=1,2 S $P(IB(0,4,9),U,J)=$P(IB(0,4,9),U,J)+$P(IB(0,4,I),U,J)
|
---|
101 | .S I=0 F J=1:1:9 D
|
---|
102 | ..S I=I+1,IB(I)=+IB(0,4,J),I=I+1,IB(I)=$J(+$P(IB(0,4,J),U,2),0,2)
|
---|
103 | .D E^IBJDE(9,0)
|
---|
104 | ;
|
---|
105 | ; - Print the reports.
|
---|
106 | S (IBPAG,IBQ)=0 D NOW^%DTC S IBRUN=$$DAT2^IBOUTL(%)
|
---|
107 | I 'IBSORT D SUM(0) G ENQ
|
---|
108 | ;
|
---|
109 | S IBDIV=0 F S IBDIV=$O(IB(IBDIV)) Q:'IBDIV D SUM(IBDIV) Q:IBQ
|
---|
110 | ;
|
---|
111 | ENQ I $D(ZTQUEUED) S ZTREQ="@" G ENQ1
|
---|
112 | ;
|
---|
113 | D ^%ZISC
|
---|
114 | ENQ1 K IB,IBOFF,IBQ,IBSDATE,IBSEL,IBSORT,IBTEXT,IBA,IBAR,IBARD,IBDIV,IBAGE,IBOUT,IBCAT,IBPAG,IBRUN
|
---|
115 | K IBDH,IBTYP,IBTYPH,%,%ZIS,DFN,I,J,K,POP,VAUTD,X,Y,Z,ZTDESC,ZTRTN,ZTSAVE
|
---|
116 | K DIROUT,DTOUT,DUOUT,DIRUT
|
---|
117 | Q
|
---|
118 | ;
|
---|
119 | SUM(IBDIV) ; - Print the report.
|
---|
120 | ; Input: IBDIV=Pointer to the division in file #40.8
|
---|
121 | ;
|
---|
122 | S IBTYP=0 F S IBTYP=$O(IB(IBDIV,IBTYP)) Q:'IBTYP D Q:IBQ
|
---|
123 | .I $E(IOST,1,2)="C-"!(IBPAG) W @IOF,*13
|
---|
124 | .S IBPAG=IBPAG+1 I $E(IOST,1,2)'="C-" W !?68,"Page: ",IBPAG
|
---|
125 | .W !!?22,"THIRD PARTY FOLLOW-UP SUMMARY REPORT"
|
---|
126 | .S IBTYPH=$S(IBTYP=1:"INPATIENT",IBTYP=2:"OUTPATIENT",IBTYP=3:"RX REFILL",1:"ALL REIMBURSABLE")_" RECEIVABLES"_$S(IBSDATE="D":" ( date of care )",1:" ( days in AR )")
|
---|
127 | .W !?(80-$L(IBTYPH))\2,IBTYPH
|
---|
128 | .I IBDIV S IBDH="Division: "_$P($G(^DG(40.8,IBDIV,0)),U) W !?(80-$L(IBDH)\2),IBDH
|
---|
129 | .W !!?24,"Run Date: ",IBRUN,!?24,$$DASH(31),!!
|
---|
130 | .;
|
---|
131 | .; - Calculate totals first.
|
---|
132 | .F I=1:1:8 F J=1,2 S $P(IB(IBDIV,IBTYP,9),U,J)=$P(IB(IBDIV,IBTYP,9),U,J)+$P(IB(IBDIV,IBTYP,I),U,J)
|
---|
133 | .;
|
---|
134 | .W "AR Category",?31,"# Receivables",?52,"Total Outstanding Balance"
|
---|
135 | .W !,"-----------",?31,"-------------",?52,"-------------------------",!
|
---|
136 | .;
|
---|
137 | .I 'IB(IBDIV,IBTYP,9) W !,"There are no active receivables",$S(IBDIV:" for this division",1:""),"." D PAUSE Q
|
---|
138 | .;
|
---|
139 | .; - Primary loop to write results.
|
---|
140 | .S Y=$P(IB(IBDIV,IBTYP,9),U,2) F I=1:1:9 S X=$P($T(CATN+I),";;",2,99) D
|
---|
141 | ..W:I=9 ! W !,X,?30,$J(+IB(IBDIV,IBTYP,I),6)
|
---|
142 | ..W " (",$J(+IB(IBDIV,IBTYP,I)/+IB(IBDIV,IBTYP,9)*100,0,$S(I=9:0,1:2)),"%)"
|
---|
143 | ..S Z=$FN($P(IB(IBDIV,IBTYP,I),U,2),",",2)
|
---|
144 | ..W ?52,$J($S(I=1!(I=9):"$",1:"")_Z,15)
|
---|
145 | ..W " (",$J($S('Y:0,1:$P(IB(IBDIV,IBTYP,I),U,2)/Y*100),0,$S(I=9:0,1:2)),"%)"
|
---|
146 | .;
|
---|
147 | .D PAUSE
|
---|
148 | ;
|
---|
149 | SUMQ Q
|
---|
150 | ;
|
---|
151 | DASH(X) ; - Return a dashed line.
|
---|
152 | Q $TR($J("",X)," ","=")
|
---|
153 | ;
|
---|
154 | PAUSE ; - Page break.
|
---|
155 | I $E(IOST,1,2)'="C-" Q
|
---|
156 | N IBX,DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y
|
---|
157 | F IBX=$Y:1:(IOSL-3) W !
|
---|
158 | S DIR(0)="E" D ^DIR I $D(DIRUT)!($D(DUOUT)) S IBQ=1
|
---|
159 | Q
|
---|
160 | ;
|
---|
161 | DHLP ; - 'Display Registration User' help.
|
---|
162 | W !,"Enter <CR> to summarize all receivables without regard to division,"
|
---|
163 | W !,"or YES to select those divisions for which a separate report should"
|
---|
164 | W !,"be created."
|
---|
165 | Q
|
---|
166 | ;
|
---|
167 | CAT(X) ; - Determine category to place receivable.
|
---|
168 | Q $S($G(X)<31:1,X<61:2,X<91:3,X<121:4,X<181:5,X<366:6,1:7)
|
---|
169 | ;
|
---|
170 | ACT(X) ; - Determine the activation date for a receivable.
|
---|
171 | N Y S Y=0 I '$G(X) G ACTQ
|
---|
172 | S Y=$P($G(^PRCA(430,X,6)),U,21) I Y G ACTQ
|
---|
173 | S Y=$P($G(^PRCA(430,X,9)),U,3) I Y G ACTQ
|
---|
174 | S Y=$P($G(^PRCA(430,X,0)),U,10)
|
---|
175 | ACTQ Q Y
|
---|
176 | ;
|
---|
177 | DATE1(X) ; - Determine the Date of Care
|
---|
178 | N Y S Y=0 I '$G(X) G DATEQ
|
---|
179 | S Y=$P($G(^DGCR(399,X,"U")),U,2) I Y G DATEQ
|
---|
180 | DATEQ Q Y
|
---|
181 | ;
|
---|
182 | DIV(IBX) ; - Determine the division for a claim.
|
---|
183 | ; Input: IBX=Pointer to a claim in file #399
|
---|
184 | ; Output: IBY=Pointer to a division in file #40.8,
|
---|
185 | ; or 0 if not determined
|
---|
186 | ;
|
---|
187 | N DFN,IBADM,IBEV,IBD,IBPTF,IBU,IBY,IBC,IBTY,VAINDT,VADMVT
|
---|
188 | S IBY=0,IBC=$G(^DGCR(399,+$G(IBX),0)) I $P(IBC,U)="" G DIVQ
|
---|
189 | S DFN=+$P(IBC,U,2),IBEV=+$P(IBC,U,3)\1,IBTY=$P(IBC,U,5)
|
---|
190 | ;
|
---|
191 | S IBY=+$P(IBC,U,22) I +IBY G DIVQ ; use bill default division if defined
|
---|
192 | ;
|
---|
193 | ; - For Pharmacy or Prosthetics claims, use the primary division.
|
---|
194 | I $D(^IBA(362.4,"AIFN"_IBX))!$D(^IBA(362.5,"AIFN"_IBX)) D G DIVQ
|
---|
195 | .S IBY=$$PRIM^VASITE(DT) S:IBY'>0 IBY=0
|
---|
196 | ;
|
---|
197 | ; - Check all visit dates if outpatient claim.
|
---|
198 | I IBTY>2 D G DIVQ
|
---|
199 | .S IBY=$$OPT(IBEV,DFN) Q:IBY
|
---|
200 | .S IBD=0 F S IBD=$O(^DGCR(399,IBX,"OP",IBD)) Q:'IBD S IBY=$$OPT(IBD,DFN) Q:IBY
|
---|
201 | ;
|
---|
202 | ; - Check inpatient claim.
|
---|
203 | S IBPTF=+$P(IBC,U,8),IBU=$G(^DGCR(399,IBX,"U"))
|
---|
204 | I IBPTF S IBADM=$O(^DGPM("APTF",IBPTF,0)) I IBADM S IBY=$$INP(IBADM) G:IBY DIVQ
|
---|
205 | S VAINDT=+IBU\1_.23 D ADM^VADPT2 I VADMVT S IBY=$$INP(VADMVT) G:IBY DIVQ
|
---|
206 | S VAINDT=$S($P(IBEV,".",2):IBEV,1:+IBEV\1_.23) D ADM^VADPT2 I VADMVT S IBY=$$INP(VADMVT)
|
---|
207 | ;
|
---|
208 | DIVQ ; - If a division cannot be determined, use the primary division.
|
---|
209 | I 'IBY S IBY=$$PRIM^VASITE(DT) S:IBY'>0 IBY=0
|
---|
210 | Q IBY
|
---|
211 | ;
|
---|
212 | INP(X) ; - Return division for a movement.
|
---|
213 | Q +$P($G(^DIC(42,+$P($G(^DGPM(+$G(X),0)),U,6),0)),U,11)
|
---|
214 | ;
|
---|
215 | OPT(X,DFN) ; - Return division for a patient's outpatient visit date.
|
---|
216 | N IBFR,IBTO,IBY,IBY1,IBZ,IBZERR
|
---|
217 | S IBY=0 I '$G(X) G OPTQ
|
---|
218 | S IBFR=X,IBTO=X\1_".99"
|
---|
219 | F S IBZ=$$EXOE^SDOE(DFN,IBFR,IBTO,,"IBZERR") K IBZERR Q:'IBZ S IBY1=$$SCE^IBSDU(IBZ) D Q:IBY
|
---|
220 | .I $P(IBY1,U,11) S IBY=$P(IBY1,U,11) Q
|
---|
221 | .S IBFR=IBY1+.000001
|
---|
222 | OPTQ Q IBY
|
---|
223 | ;
|
---|
224 | CATN ; - List of category names.
|
---|
225 | ;;Less than 30 days old
|
---|
226 | ;;31-60 days
|
---|
227 | ;;61-90 days
|
---|
228 | ;;91-120 days
|
---|
229 | ;;121-180 days
|
---|
230 | ;;181-365 days
|
---|
231 | ;;Over 365 days
|
---|
232 | ;;Referred to Regional Counsel
|
---|
233 | ;;Total Third Party Receivables
|
---|