1 | IBJDF41 ;ALB/RB - FIRST PARTY FOLLOW-UP REPORT (COMPILE) ;15-APR-00
|
---|
2 | ;;2.0;INTEGRATED BILLING;**123,159,204,356**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ST ; - Tasked entry point.
|
---|
6 | K IB,IBCAT,^TMP("IBJDF4",$J) S IBQ=0
|
---|
7 | ;
|
---|
8 | ; - Set selected categories for report.
|
---|
9 | I IBSEL[1 S IBCAT(2)=1
|
---|
10 | I IBSEL[2 S IBCAT(1)=2
|
---|
11 | I IBSEL[3 S IBCAT(18)=3 F X=22,23 S IBCAT(X)=4
|
---|
12 | I IBSEL[4 F X=33:1:39 S IBCAT(X)=5
|
---|
13 | ;
|
---|
14 | ; - Print the header line for the Excel spreadsheet
|
---|
15 | I $G(IBEXCEL) D PHDL
|
---|
16 | ;
|
---|
17 | ; - Find data required for report.
|
---|
18 | F IB=16,19,40 D G:IBQ ENQ
|
---|
19 | . I IBSTA="A",IB'=16 Q ; Active AR's only.
|
---|
20 | . I IBSTA="S",IB=16 Q ; Suspended AR's only.
|
---|
21 | . I IB'=40 D
|
---|
22 | . . S IBCAT=""
|
---|
23 | . . F S IBCAT=$O(IBCAT(IBCAT)) Q:IBCAT="" D
|
---|
24 | . . . D INIT^IBJDF43
|
---|
25 | . S IBA=0
|
---|
26 | . F S IBA=$O(^PRCA(430,"AC",IB,IBA)) Q:'IBA D Q:IBQ
|
---|
27 | . . D PROC
|
---|
28 | ;
|
---|
29 | I 'IBQ,'$G(IBEXCEL) D EN^IBJDF42 ; Print the report.
|
---|
30 | ;
|
---|
31 | ENQ K ^TMP("IBJDF4",$J)
|
---|
32 | I $D(ZTQUEUED) S ZTREQ="@" G ENQ1
|
---|
33 | ;
|
---|
34 | D ^%ZISC
|
---|
35 | ENQ1 K IB,IB0,IBA,IBA1,IBADM,IBAGE,IBAR,IBAR1,IBBA,IBBN,IBBU,IBC,IBCAT,IBCAT1
|
---|
36 | K IBELIG,IBEXCEL,IBFLG,IBAI,IBAIQ,IBIDX,IBIO,IBINT,IBN,IBPA,IBPD,IBPAT
|
---|
37 | K IBPT,IBQ,IBRFD,IBRFT,IBSRC,IBRP,IBVA,COM,COM1,DAT,DFN,X,X1,X2,Y,Z
|
---|
38 | Q
|
---|
39 | ;
|
---|
40 | PROC ; - Process data for report(s).
|
---|
41 | I IBA#100=0 D Q:IBQ
|
---|
42 | .S IBQ=$$STOP^IBOUTL("First Party Follow-Up Report")
|
---|
43 | S IBAR=$G(^PRCA(430,IBA,0)) I 'IBAR Q
|
---|
44 | S IBCAT=+$P(IBAR,U,2) I '$D(IBCAT(IBCAT)) Q ;Get valid AR category.
|
---|
45 | I '$$CLMACT^IBJD(IBA,IBCAT) Q ; Invalid IB claim/action.
|
---|
46 | S IBPT=$$PAT(IBA) I IBPT="" Q ; Get patient info.
|
---|
47 | S DFN=$P(IBPT,U,2)
|
---|
48 | S IBAGE=$$FMDIFF^XLFDT(DT,+$P(IBAR,U,10))
|
---|
49 | I IBSMN,IBAGE<IBSMN!(IBAGE>IBSMX) Q ; AR outside age range.
|
---|
50 | S IBVA=$$VA^IBJD1(DFN),IBBN=$P(IBAR,U),IBPD=$P($$PYMT^IBJD1(IBA),U)
|
---|
51 | S IBPAT=$P(IBPT,U)_"@@"_DFN
|
---|
52 | ;
|
---|
53 | ; - Check the AR balance amounts, if necessary.
|
---|
54 | S (IBADM,IBBA,IBINT,IBPA)=0,IBN=$G(^PRCA(430,IBA,7))
|
---|
55 | F X=1:1:5 D
|
---|
56 | . S IBBA=IBBA+$P(IBN,U,X)
|
---|
57 | . S:X=1 IBPA=+IBN S:X=2 IBINT=$P(IBN,U,2) S:X=3 IBADM=$P(IBN,U,3)
|
---|
58 | ;
|
---|
59 | I '$G(IBEXCEL) D EN^IBJDF43 I IBRPT="S" Q ; Get summary stats.
|
---|
60 | ;
|
---|
61 | I IBSAM,IBBA<IBSAM Q
|
---|
62 | ;
|
---|
63 | ; - Check if AR was referred to R-Regional Counsel, D-DMC, or T-TOP
|
---|
64 | ; and exclude, if necessary.
|
---|
65 | S IB0=$S(IB=40:19,1:IB),IBIDX=0,IBRFT=""
|
---|
66 | S IBAIQ=0,IBAI=$G(^TMP("IBJDF4",$J,IBPAT,0,"A"))
|
---|
67 | S IBRFD=$P($G(^PRCA(430,IBA,6)),U,4)
|
---|
68 | I IBRPT="D",IBRFD D I IBAIQ Q ; Referred to RC
|
---|
69 | . S IBRFT="R" I IBAI'["R" S IBAI=IBAI_"R"
|
---|
70 | . I 'IBSRC S IBAIQ=1 Q
|
---|
71 | . D SREF("R",IBRFD,IB0,,.IBIDX)
|
---|
72 | S IBRFD=+$G(^PRCA(430,IBA,12))
|
---|
73 | I IBRPT="D",IBRFD D ; Referred to DMC
|
---|
74 | . S IBRFT=IBRFT_"D" I IBAI'["D" S IBAI=IBAI_"D"
|
---|
75 | . D SREF("D",IBRFD,IB0,,.IBIDX)
|
---|
76 | S IBRFD=+$G(^PRCA(430,IBA,14))
|
---|
77 | I IBRPT="D",IBRFD D ; Referred to TOP
|
---|
78 | . S IBRFT=IBRFT_"T" I IBAI'["T" S IBAI=IBAI_"T"
|
---|
79 | . D SREF("T",IBRFD,IB0,,.IBIDX)
|
---|
80 | ;
|
---|
81 | ; - Check if AR is on P-Repayment plan or F-Defaulted repayment plan.
|
---|
82 | ; and exclude if repayment plan is active.
|
---|
83 | S IBRP=$$RP(IBA)
|
---|
84 | I IBRP D
|
---|
85 | . I IBRP=2 S IBRFT=IBRFT_"F" I IBAI'["F" S IBAI=IBAI_"F"
|
---|
86 | . I IBRP=1 S IBRFT=IBRFT_"P" I IBAI'["P"&(IBAI'["F") S IBAI=IBAI_"P"
|
---|
87 | . D SREF("P",$P(IBRP,"^",2),IB0,$S(+IBRP=2:1,1:0),.IBIDX)
|
---|
88 | ;
|
---|
89 | I IBIDX S IBFLG=1
|
---|
90 | ;
|
---|
91 | ; - Check if VA Employee
|
---|
92 | I $P(IBVA,"^")["*",IBAI'["V" S IBAI=IBAI_"V"
|
---|
93 | ;
|
---|
94 | I IBAI'="" S ^TMP("IBJDF4",$J,IBPAT,0,"A")=IBAI
|
---|
95 | ;
|
---|
96 | ; - Set up indexes for detail report.
|
---|
97 | I $G(IBEXCEL) D Q
|
---|
98 | . S IBEXCEL1=$P($G(^PRCA(430.2,IBCAT,0)),U,2)_U_$P(IBPT,U,3)_U_$P(IBVA,U)_U_$P(IBPT,U,4)_U_$$DT^IBJD($P(IBPT,U,6),1)_U_$$ELIG^IBJDF42(+$P(IBPT,U,5))_U
|
---|
99 | . S IBEXCEL1=IBEXCEL1_$$GET1^DIQ(2,DFN,.381)_U_$$MTRX(DFN)_U_IBBN_U_$S(IB=16:"A",1:"S")_U_IBRFT_U_$$DT^IBJD($P(IBAR,U,10),1)_U_$$DT^IBJD(IBPD,1)_U_IBBA_U_IBPA_U_IBINT_U_IBADM_U
|
---|
100 | . I IBSH D COM
|
---|
101 | . S IBD=0 I DAT!IBPD S IBD=$$FMDIFF^XLFDT(DT,$S('DAT:IBPD,1:$G(DAT)))
|
---|
102 | . S IBEXCEL1=IBEXCEL1_U_IBD W !,IBEXCEL1 K IBD,IBEXCEL1
|
---|
103 | ;
|
---|
104 | I '($D(^TMP("IBJDF4",$J,IBPAT))#10) D
|
---|
105 | . S ^TMP("IBJDF4",$J,IBPAT)=$P(IBPT,U,3,5)_U_$$MTRX(DFN)_U_$P(IBPT,U,6)_"^"_$P(IBVA,"^",2)_"^"_$$ACCBAL($P(IBPT,U,7))
|
---|
106 | S ^TMP("IBJDF4",$J,IBPAT,IB0,IBCAT,IBBN)=IBPD_U_IBBA_U_IBPA_U_IBINT_U_IBADM_U_IBIDX
|
---|
107 | ;
|
---|
108 | I IBSH D COM
|
---|
109 | ;
|
---|
110 | Q
|
---|
111 | ;
|
---|
112 | ACCBAL(DFN) ; Calculates the Account Balance for the Bill
|
---|
113 | ; Input: DFN - Patient/Debtor internal number
|
---|
114 | ; Output: BAL - Patient/Debtor Account Balance
|
---|
115 | ;
|
---|
116 | N B0,B7,BAL,BILL,I
|
---|
117 | S (BAL,BILL)=0
|
---|
118 | F S BILL=$O(^PRCA(430,"C",DFN,BILL)) Q:BILL="" D
|
---|
119 | . S B0=$G(^PRCA(430,BILL,0)) I $P(B0,"^",8)'=16 Q
|
---|
120 | . S B7=$G(^PRCA(430,BILL,7))
|
---|
121 | . F I=1:1:5 S BAL=BAL+$P(B7,"^",I)
|
---|
122 | Q BAL
|
---|
123 | ;
|
---|
124 | PHDL ; - Print the header line for the Excel spreadsheet
|
---|
125 | N X
|
---|
126 | S X="Cat^Patient^VA Empl.?^SSN^Dt Death^Prim.Elig.^Med.Elig.?^"
|
---|
127 | S X=X_"Means Tst Sts^Means Tst Dt^RX Copay Exemp.Sts^RX Copay Exemp.Dt^"
|
---|
128 | S X=X_"Bill #^Act/Susp^Refer. to^Dt Bill prep.^Last Pymt Dt^"
|
---|
129 | S X=X_"Curr.Bal.^Princ.Bal.^Int.^Admin.^Last Comm.Dt^Days Lst Comm."
|
---|
130 | W !,X
|
---|
131 | Q
|
---|
132 | ;
|
---|
133 | PAT(X) ; - Find the AR patient and decide to include the AR.
|
---|
134 | ; Input: X=AR pointer to file #430 and pre-set variables IBS*
|
---|
135 | ; Output: Y=Sort key (name or last 4) ^ Patient pointer to file #2
|
---|
136 | ; ^ Name ^ SSN ^ Eligibilities ^ Date of death (if any)
|
---|
137 | ; ^ Debtor pointer to file #340
|
---|
138 | N PAT,KEY,DBTR,DFN,DEATH,NAME,SSN,VAEL,VADM,X1,X2
|
---|
139 | S PAT="" G:'$G(X) PATQ
|
---|
140 | S DBTR=+$P($G(^PRCA(430,X,0)),U,9)
|
---|
141 | S X1=$P($G(^RCD(340,DBTR,0)),U) G:X1'["DPT" PATQ
|
---|
142 | S DFN=+X1 G:'DFN PATQ D DEM^VADPT
|
---|
143 | S NAME=VADM(1),SSN=$P(VADM(2),"^"),DEATH=VADM(6)\1
|
---|
144 | S KEY=$S(IBSN="N":NAME,1:$E(SSN,6,9))
|
---|
145 | I KEY=""!(IBSNF'="@"&('DFN)) G PATQ
|
---|
146 | I $D(IBSNA) G:IBSNA="ALL"&('DFN) PATQ G:IBSNA="NULL"&(DFN) PATQ
|
---|
147 | I $G(IBSNA)="ALL" G PATC
|
---|
148 | I IBSNF="@",IBSNL="zzzzz" G PATC
|
---|
149 | I IBSNF'=KEY,IBSNF]KEY G PATQ
|
---|
150 | I IBSNL'=KEY,KEY]IBSNL G PATQ
|
---|
151 | ;
|
---|
152 | PATC ; - Set patient eligibilities.
|
---|
153 | D ELIG^VADPT S X2=+$G(VAEL(1))_";"
|
---|
154 | I +X2 S X1=0 F S X1=$O(VAEL(1,X1)) Q:'X1 S X2=X2_X1_";"
|
---|
155 | ;
|
---|
156 | S PAT=KEY_U_DFN_U_$E(NAME,1,26)_U_SSN_U_X2_U_DEATH
|
---|
157 | S PAT=PAT_U_DBTR
|
---|
158 | PATQ Q PAT
|
---|
159 | ;
|
---|
160 | RP(X) ; - Check if claim/receivable is under a repayment plan.
|
---|
161 | ; Input: X=Bill pointer to file #399/#430
|
---|
162 | ; Output: 0-Not on repay plan, 1-On repay plan, 2-On defaulted plan
|
---|
163 | N Z
|
---|
164 | S Z=$$REPDATA^RCBECHGA(X,1) I Z="" Q 0
|
---|
165 | I '$P(Z,"^",7) Q ("1^"_$P(Z,"^"))
|
---|
166 | Q ("2^"_$P(Z,"^"))
|
---|
167 | ;
|
---|
168 | MTRX(X) ; - Return patient's means test and/or RX copay status and most recent
|
---|
169 | ; test dates for both.
|
---|
170 | ; Input: X=Patient pointer to file #2 and opt. variable IBEXCEL
|
---|
171 | ; Output: Y=Means test status ^ Date ^ RX copay status ^ Date
|
---|
172 | N MTST,RXST,Y
|
---|
173 | S Y="^^^",MTST=$$LST^DGMTU(X),RXST=$$RXST^IBARXEU(X)
|
---|
174 | I '$G(IBEXCEL) D
|
---|
175 | . S $P(Y,"^",1,2)=$P(MTST,"^",3)_"^"_$$DAT1^IBOUTL($P(MTST,"^",2))
|
---|
176 | . S $P(Y,"^",3)=$S('RXST:"NON-EXEMPT",+RXST=1:"EXEMPT",1:"")
|
---|
177 | . I $P(Y,"^",3)'="" S $P(Y,"^",4)=$$DAT1^IBOUTL($P(RXST,"^",5))
|
---|
178 | I $G(IBEXCEL) D
|
---|
179 | . S $P(Y,"^",1,2)=$P(MTST,"^",4)_"^"_$$DT^IBJD($P(MTST,"^",2),1)
|
---|
180 | . S $P(Y,"^",3)=$S('RXST:"M",+RXST=1:"E",1:"")
|
---|
181 | . I $P(Y,"^",3)'="" S $P(Y,"^",4)=$$DT^IBJD($P(RXST,"^",5),1)
|
---|
182 | Q Y
|
---|
183 | ;
|
---|
184 | SREF(RFT,DAT,STS,DEF,IDX) ; Set the "referred to" information on the
|
---|
185 | ; temporary global ^TMP
|
---|
186 | ;Input: RFT: "R": RC, "D": DMC, "T": TOP, "P": REPAYMENT PLAN
|
---|
187 | ; DAT: Date it was referred/established
|
---|
188 | ; STS: Receivable status (16-Active,19-Suspended)
|
---|
189 | ; DEF: Repayment Plan in Default? (1 - YES, 0 - NO)
|
---|
190 | ; IDX: Subscript to be set in the Temporary global ^TMP
|
---|
191 | ;Output: IDX: Subscript set in the Temporary global ^TMP
|
---|
192 | ;
|
---|
193 | N SREF,IDX1
|
---|
194 | S DEF=+$G(DEF),IDX=+$G(IDX)
|
---|
195 | I RFT="R" S SREF="REFERRED TO RC"
|
---|
196 | I RFT="D" S SREF="REFERRED TO DMC"
|
---|
197 | I RFT="T" S SREF="REFERRED TO TOP"
|
---|
198 | I RFT="P" D
|
---|
199 | . S SREF="REPAYMENT PLAN ESTABLISHED"
|
---|
200 | . I $G(DEF) S SREF=SREF_" (CURRENTLY IN DEFAULT)"
|
---|
201 | ;
|
---|
202 | I 'IDX S IDX=$O(^TMP("IBJDF4",$J,IBPAT,0,"C",STS,""),-1)+1
|
---|
203 | S IDX1=$O(^TMP("IBJDF4",$J,IBPAT,0,"C",STS,IDX,""),-1)+1
|
---|
204 | S ^TMP("IBJDF4",$J,IBPAT,0,"C",STS,IDX,IDX1)=DAT
|
---|
205 | S ^TMP("IBJDF4",$J,IBPAT,0,"C",STS,IDX,IDX1,1)=SREF
|
---|
206 | Q
|
---|
207 | ;
|
---|
208 | COM ; - Get bill comments.
|
---|
209 | I 'IBIDX,'$G(IBEXCEL) D
|
---|
210 | . S IBFLG=0,IBIDX=$O(^TMP("IBJDF4",$J,IBPAT,0,"C",IB0,""),-1)+1
|
---|
211 | ;
|
---|
212 | S DAT=0,IBA1=$S(IBSH1="M":999999999,1:0)
|
---|
213 | F S IBA1=$S(IBSH1="M":$O(^PRCA(433,"C",IBA,IBA1),-1),1:$O(^PRCA(433,"C",IBA,IBA1))) Q:'IBA1 D I IBSH1="M",DAT Q
|
---|
214 | . S IBC=$G(^PRCA(433,IBA1,1)) Q:'IBC
|
---|
215 | . I $G(IBSH2),$$FMDIFF^XLFDT(DT,+IBC)>IBSH2 Q ; Comment age not minimum.
|
---|
216 | . I $P(IBC,U,2)'=35,$P(IBC,U,2)'=45 Q ; Not decrease/comment transact.
|
---|
217 | . S DAT=$S(IBC:+IBC\1,1:+$P(IBC,U,9)\1)
|
---|
218 | . I $G(IBEXCEL),IBSH1="M" S IBEXCEL1=IBEXCEL1_$$DT^IBJD(DAT,1) Q
|
---|
219 | . ;
|
---|
220 | . ; - Append brief and transaction comments.
|
---|
221 | . K COM,COM1 S COM(0)=DAT,X1=0
|
---|
222 | . S COM1(1)=$P($G(^PRCA(433,IBA1,5)),U,2)
|
---|
223 | . S COM1(2)=$E($P($G(^PRCA(433,IBA1,8)),U,6),1,70)
|
---|
224 | . S COM(1)=COM1(1)_$S(COM1(1)]""&(COM1(2)]""):"|",1:"")_COM1(2)
|
---|
225 | . I COM(1)]"" S COM(1)="**"_COM(1)_"**",X1=1
|
---|
226 | . ;
|
---|
227 | . ; - Get main comments.
|
---|
228 | . S X2=0
|
---|
229 | . F S X2=$O(^PRCA(433,IBA1,7,X2)) Q:'X2 D
|
---|
230 | . . S COM($S(X1:X2+1,1:X2))=^PRCA(433,IBA1,7,X2,0)
|
---|
231 | . ;
|
---|
232 | . I $G(IBEXCEL) Q
|
---|
233 | . ;
|
---|
234 | . S IBFLG=1,^TMP("IBJDF4",$J,IBPAT,0,"C",IB0,IBIDX,IBA1)=$G(COM(0)),X1=0
|
---|
235 | . F S X1=$O(COM(X1)) Q:X1="" D
|
---|
236 | . . S ^TMP("IBJDF4",$J,IBPAT,0,"C",IB0,IBIDX,IBA1,X1)=COM(X1)
|
---|
237 | ;
|
---|
238 | I '$G(IBEXCEL),IBFLG D
|
---|
239 | . S $P(^TMP("IBJDF4",$J,IBPAT,IB0,IBCAT,IBBN),"^",6)=IBIDX
|
---|
240 | Q
|
---|