1 | IBJDB21 ;ALB/RB - REASONS NOT BILLABLE REPORT (COMPILE) ;19-JUN-00
|
---|
2 | ;;2.0;INTEGRATED BILLING;**123,159,185**;21-MAR-94
|
---|
3 | ;
|
---|
4 | EN ; - Entry point from IBJDB2.
|
---|
5 | K ^TMP("IBJDB2",$J),IB,IBE
|
---|
6 | I '$G(IBXTRACT) D
|
---|
7 | . F X=1:1:4 I IBSEL[X S IBE(X)=IBEPS(X) ; Set episodes for report.
|
---|
8 | ;
|
---|
9 | ; - Print the header line for the Excel spreadsheet
|
---|
10 | I $G(IBEXCEL) D PHDL
|
---|
11 | ;
|
---|
12 | ; - Compile reason not billable (RNB) data for episode.
|
---|
13 | S IBRNB=0 F S IBRNB=$S(IBSRNB'="A":$O(IBSRNB(IBRNB)),1:$O(^IBE(356.8,IBRNB))) Q:'IBRNB D
|
---|
14 | .S IB0=0 F S IB0=$O(^IBT(356,"AR",IBRNB,IB0)) Q:'IB0 D
|
---|
15 | ..S IBN0=$G(^IBT(356,IB0,0)),IBN1=$G(^IBT(356,IB0,1)) Q:'IBN0!('IBN1)
|
---|
16 | ..S IBEP=+$P(IBN0,U,18) I IBSEL'[IBEP Q ; Get episode.
|
---|
17 | ..S (IBRNB1,IBSORT1)=$P($G(^IBE(356.8,IBRNB,0)),U)
|
---|
18 | ..;
|
---|
19 | ..; - Get valid date entered/episode date and amount for report.
|
---|
20 | ..S IBEPD=+$P(IBN0,U,6)\1,IBDEN=+IBN1\1
|
---|
21 | ..S IBDT=$S($E(IBD)="D":IBDEN,1:IBEPD)
|
---|
22 | ..Q:IBDT<IBBDT!(IBDT>IBEDT)
|
---|
23 | ..S IBAMT=$$AMOUNT(IBEP,IB0)
|
---|
24 | ..;
|
---|
25 | ..; - Get division, if necessary.
|
---|
26 | ..I IBSD D Q:'VAUTD&('$D(VAUTD(IBDIV)))
|
---|
27 | ...S IBDIV=$$DIV^IBJD1(IB0)
|
---|
28 | ..E S IBDIV=$S($G(IBEXCEL):+$$PRIM^VASITE(),1:0)
|
---|
29 | ..;
|
---|
30 | ..; - Provider & Specialty
|
---|
31 | ..S (IBPRV,IBSPC)="",IBQT=0
|
---|
32 | ..I IBEP=1!(IBEP=2) D I IBQT Q
|
---|
33 | ...S IBPRSP=$$PRVSPC(IBEP,IB0)
|
---|
34 | ...I IBSPRV'="A",'$D(IBSPRV(+IBPRSP)) S IBQT=1 Q
|
---|
35 | ...I IBEP=1,IBSISP'="A",'$D(IBSISP(+$P(IBPRSP,U,3))) S IBQT=1 Q
|
---|
36 | ...I IBEP=2,IBSOSP'="A",'$D(IBSOSP(+$P(IBPRSP,U,3))) S IBQT=1 Q
|
---|
37 | ...S IBPRV=$S($P(IBPRSP,U,2)'="":$P(IBPRSP,U,2),1:"** UNKNOWN **")
|
---|
38 | ...S IBSPC=$S($P(IBPRSP,U,4)'="":$P(IBPRSP,U,4),1:"** UNKNOWN **")
|
---|
39 | ..;
|
---|
40 | ..; - Get remaining data for detailed report.
|
---|
41 | ..S DFN=+$P(IBN0,U,2)
|
---|
42 | ..D DEM^VADPT S IBPT=$E(VADM(1),1,25),IBSSN=$P(VADM(2),U)
|
---|
43 | ..S DIC="^VA(200,",DA=+$P(IBN1,U,4),DR=".01",DIQ="IBCLK" D EN^DIQ1
|
---|
44 | ..S IBCLK=$E($G(IBCLK(200,DA,.01)),1,20)
|
---|
45 | ..;
|
---|
46 | ..; - Get totals for summary.
|
---|
47 | ..I '$D(IB(IBDIV,IBEP,IBRNB)) S IB(IBDIV,IBEP,IBRNB)="0^0"
|
---|
48 | ..S $P(IB(IBDIV,IBEP,IBRNB),U)=$P(IB(IBDIV,IBEP,IBRNB),U)+1
|
---|
49 | ..S $P(IB(IBDIV,IBEP,IBRNB),U,2)=$P(IB(IBDIV,IBEP,IBRNB),U,2)+IBAMT
|
---|
50 | ..I IBRPT="S" Q
|
---|
51 | ..;
|
---|
52 | ..S IBSORT1=$S(IBSORT="P":IBPRV,IBSORT="S":IBSPC,1:IBSORT1)
|
---|
53 | ..S:IBSORT1="" IBSORT1=" "
|
---|
54 | ..;
|
---|
55 | ..I $G(IBEXCEL) D Q
|
---|
56 | ...W !,$E($P($G(^DG(40.8,IBDIV,0)),U),1,25),U
|
---|
57 | ...W $S(IBEP<4:$E(IBE(IBEP)),1:"H"),U,IBPT,U,IBSSN,U
|
---|
58 | ...W $$DT^IBJD(IBEPD,1),U,$$DT^IBJD(IBDEN,1),U
|
---|
59 | ...W $$DT^IBJD($P(IBN1,U,3),1),U,IBCLK,U,$E(IBRNB1,1,25),U
|
---|
60 | ...W $E(IBPRV,1,25),U,$E(IBSPC,1,25),U,IBAMT,U,$P(IBN1,U,8)
|
---|
61 | ..;
|
---|
62 | ..S X=IBEPD_U_IBDEN_U_$P(IBN1,U,3)_U_IBCLK_U_IBRNB1
|
---|
63 | ..S X=X_U_IBPRV_U_IBSPC_U_IBAMT_U_$E($P(IBN1,U,8),1,70)
|
---|
64 | ..S ^TMP("IBJDB2",$J,IBDIV,IBEP,IBSORT1,IBPT_"@@"_$E(IBSSN,6,10))=$$INS^IBJD1(+$P(IBN0,U,2),IBEPD)
|
---|
65 | ..S ^TMP("IBJDB2",$J,IBDIV,IBEP,IBSORT1,IBPT_"@@"_$E(IBSSN,6,10),+IBN0)=X
|
---|
66 | ;
|
---|
67 | I '$G(IBEXCEL) D EN^IBJDB22 ; Print report(s).
|
---|
68 | ;
|
---|
69 | ENQ K ^TMP("IBJDB2")
|
---|
70 | K DA,DIC,DIQ,DR,IB,IB0,IBAMT,IBCLK,IBDEN,IBDIV,IBDT,IBE,IBEP,IBEPD,IBI
|
---|
71 | K IBN0,IBN1,IBN2,IBPRSP,IBPRV,IBPT,IBQT,IBRNB,IBRNB1,IBSORT1,IBSPC
|
---|
72 | K IBSSN,VADM,X1,X2
|
---|
73 | Q
|
---|
74 | ;
|
---|
75 | AMOUNT(EPS,CLM) ; Return the Amount not billed
|
---|
76 | ; Input: EPS - Episode(1=Inpatient,2=Outpatient,3=Prosthet.,4=Prescr.)
|
---|
77 | ; CLM - Pointer to Claim Tracking File (#356)
|
---|
78 | ;Output: AMOUNT not billed
|
---|
79 | ;
|
---|
80 | N ADM,ADMDT,AMOUNT,BLBS,BLDT,CPT,CPTLST,DA,DR,DCHD,DFN,DIC,DIQ,DIV,DRG
|
---|
81 | N ENC,ENCDT,EPDT,PFT,PRST,PTF,RIMB,VCPT,TTCST,X
|
---|
82 | ;
|
---|
83 | S AMOUNT=0,X=$G(^IBT(356,CLM,0))
|
---|
84 | S ENC=+$P(X,U,4) ; Encounter (Pointer to #409.68)
|
---|
85 | S ADM=+$P(X,U,5) ; Admission (Pointer to #405)
|
---|
86 | S PRST=+$P(X,U,9) ; Prothetics (Pointer to #660)
|
---|
87 | S EPDT=$P(X,U,6) ; Episode Date (FM format)
|
---|
88 | ;
|
---|
89 | ; - Assumes REIMBURSABLE INS. as the RATE TYPE
|
---|
90 | S RIMB=$O(^DGCR(399.3,"B","REIMBURSABLE INS.",0)) I 'RIMB S RIMB=8
|
---|
91 | ;
|
---|
92 | G @("AMT"_EPS)
|
---|
93 | ;
|
---|
94 | AMT1 ; - Inpatient Charges
|
---|
95 | I 'ADM G QAMT
|
---|
96 | S X=$G(^DGPM(ADM,0)) G QAMT:X="" S PTF=$P(X,U,16) G QAMT:'PTF
|
---|
97 | S ADMDT=$P(X,U)\1,DFN=+$P(X,U,3)
|
---|
98 | I $P(X,U,17) S DCHD=$P($G(^DGPM(+$P(X,U,17),0)),U)\1
|
---|
99 | I '$G(DCHD) S DCHD=$$DT^XLFDT()
|
---|
100 | ;
|
---|
101 | K ^TMP($J,"IBCRC-PTF"),^TMP($J,"IBCRC-DIV"),^TMP($J,"IBCRC-INDT")
|
---|
102 | D PTF^IBCRBG(PTF) G QAMT:'$D(^TMP($J,"IBCRC-PTF"))
|
---|
103 | D PTFDV^IBCRBG(PTF) G QAMT:'$D(^TMP($J,"IBCRC-DIV"))
|
---|
104 | D BSLOS^IBCRBG(ADMDT,DCHD,1,ADM,0) G QAMT:'$D(^TMP($J,"IBCRC-INDT"))
|
---|
105 | ;
|
---|
106 | S BLDT=""
|
---|
107 | F S BLDT=$O(^TMP($J,"IBCRC-INDT",BLDT)) Q:BLDT="" D
|
---|
108 | .S X=^TMP($J,"IBCRC-INDT",BLDT)
|
---|
109 | .S BLBS=$P(X,U,2),DRG=$P(X,U,4),DIV=$P(X,U,5)
|
---|
110 | .;
|
---|
111 | .; - Tort Liable Charge (prior to 09/01/99)
|
---|
112 | .I BLDT<2990901 D Q
|
---|
113 | ..S AMOUNT=AMOUNT+$$BICOST^IBCRCI(RIMB,1,BLDT,"INPATIENT BEDSECTION STAY",BLBS)
|
---|
114 | .;
|
---|
115 | .; - Reasonable Charges (on 09/01/99 or later)
|
---|
116 | .S AMOUNT=AMOUNT+$$BICOST^IBCRCI(RIMB,1,BLDT,"INPATIENT DRG",DRG,"",DIV,"",1)
|
---|
117 | ;
|
---|
118 | ; - Add the Professional Average Amount per Episode (Reason.Chg only)
|
---|
119 | I EPDT'<2990901 S AMOUNT=AMOUNT+$$AVG(EPDT)
|
---|
120 | ;
|
---|
121 | ; - Subtract the amount billed for this Episode
|
---|
122 | S AMOUNT=AMOUNT-$$CLAMT(DFN,EPDT,1)
|
---|
123 | ;
|
---|
124 | K ^TMP($J,"IBCRC-PTF"),^TMP($J,"IBCRC-DIV"),^TMP($J,"IBCRC-INDT")
|
---|
125 | ;
|
---|
126 | G QAMT
|
---|
127 | ;
|
---|
128 | AMT2 ; - Outpatient Charges
|
---|
129 | S X=$$GETOE^SDOE(ENC),ENCDT=+$P(X,U),DFN=+$P(X,U,2),DIV=$P(X,U,11)
|
---|
130 | ;
|
---|
131 | ; - Tort Liable Charge (prior to 09/01/99)
|
---|
132 | I ENCDT<2990901 D G QAMT
|
---|
133 | . S AMOUNT=+$$BICOST^IBCRCI(RIMB,3,ENCDT,"OUTPATIENT VISIT DATE")
|
---|
134 | ;
|
---|
135 | D GETCPT^SDOE(ENC,"CPTLST") S VCPT=0
|
---|
136 | F S VCPT=$O(CPTLST(VCPT)) Q:VCPT="" D
|
---|
137 | .S CPT=+CPTLST(VCPT)
|
---|
138 | .S AMOUNT=AMOUNT+$$BICOST^IBCRCI(RIMB,3,ENCDT,"PROCEDURE",CPT,"",DIV,"")
|
---|
139 | ;
|
---|
140 | ; - Subtract the amount billed for this Episode
|
---|
141 | S AMOUNT=AMOUNT-$$CLAMT(DFN,EPDT,0)
|
---|
142 | G QAMT
|
---|
143 | ;
|
---|
144 | AMT3 ; Prosthetic Charges
|
---|
145 | S DIC="^RMPR(660,",DA=PRST,DR="14",DIQ="TTCST" D EN^DIQ1
|
---|
146 | S AMOUNT=+$G(TTCST(660,DA,14))
|
---|
147 | G QAMT
|
---|
148 | ;
|
---|
149 | AMT4 ; - Prescription Charges
|
---|
150 | ; - Tort Liable Charge & Reasonable Charge (same source)
|
---|
151 | S AMOUNT=+$$BICOST^IBCRCI(RIMB,3,EPDT,"PRESCRIPTION FILL")
|
---|
152 | ;
|
---|
153 | QAMT I AMOUNT<0 S AMOUNT=0
|
---|
154 | Q AMOUNT
|
---|
155 | ;
|
---|
156 | CLAMT(DFN,EPDT,PT) ; Returns the Total Amount of Claims for Patient/Episode
|
---|
157 | ;
|
---|
158 | ; Input: DFN - Pointer to the Patient File #2
|
---|
159 | ; EPDT - Episode Date
|
---|
160 | ; PT - 0=Outpatient, 1=Inpatient
|
---|
161 | ;
|
---|
162 | N CLAMT,CLM,DAY,IBD,X
|
---|
163 | S CLAMT=0,DAY=EPDT-1,CLM=""
|
---|
164 | F S CLM=$O(^DGCR(399,"C",DFN,CLM)) Q:'CLM D
|
---|
165 | .S X=$G(^DGCR(399,CLM,0))
|
---|
166 | .I $P($P(X,U,3),".")=$P(EPDT,".") D
|
---|
167 | ..S IBD=$$CKBIL^IBTUBOU(CLM,PT) Q:IBD=""
|
---|
168 | ..I '$P(IBD,U,3) Q ; Not authorized
|
---|
169 | ..S CLAMT=CLAMT+$G(^DGCR(399,CLM,"U1"))
|
---|
170 | ;
|
---|
171 | QCLAMT Q CLAMT
|
---|
172 | ;
|
---|
173 | AVG(EPDT) ; Returns the Average Amount of Inpatient Professional per
|
---|
174 | ; Number of Episodes for the previous 12 months
|
---|
175 | N AVG,M,Z
|
---|
176 | S AVG=0,M=EPDT\100*100
|
---|
177 | I '$D(^IBE(356.19,M,1)) S M=$O(^IBE(356.19,M),-1) I 'M G QAVG
|
---|
178 | S Z=$G(^IBE(356.19,M,1)) I $P(Z,U,12) S AVG=$P(Z,U,11)/$P(Z,U,12)
|
---|
179 | QAVG Q $J(AVG,0,2)
|
---|
180 | ;
|
---|
181 | PRVSPC(EPS,CLM) ; Return the Provider and the Specialty
|
---|
182 | ; Input: EPS - Episode(1 = Inpatient OR 2 = Outpatient)
|
---|
183 | ; CLM - Pointer to Claim Tracking File (#356)
|
---|
184 | ; Output: Provider Code (Pointer to #200) ^ Provider Name ^
|
---|
185 | ; Specialty Code (Pointer to #40.7 or #45.7) ^ Specialty Name
|
---|
186 | ;
|
---|
187 | N ADM,DFN,ENC,PRI,PRS,PRV,PRVLST,SPC,STP,X,VAIN,VAINDT
|
---|
188 | ;
|
---|
189 | S X=$G(^IBT(356,CLM,0))
|
---|
190 | S DFN=$P(X,U,2),ENC=$P(X,U,4),ADM=$P(X,U,5),PRS=$P(X,U,8)
|
---|
191 | ;
|
---|
192 | S (PRV,SPC)="^"
|
---|
193 | I EPS=1,ADM D G QPS ; Inpatient
|
---|
194 | .S X=$G(^DGPM(ADM,0)),VAINDT=$P(X,U)\1 I 'VAINDT Q
|
---|
195 | .D INP^VADPT S PRV=$G(VAIN(11)),SPC=$G(VAIN(3))
|
---|
196 | .S:PRV="" PRV="^" S:SPC="" SPC="^"
|
---|
197 | ;
|
---|
198 | I EPS=2,ENC D G QPS ; Outpatient
|
---|
199 | .D GETPRV^SDOE(ENC,"PRVLST")
|
---|
200 | .S (X,PRI)=""
|
---|
201 | .F S X=$O(PRVLST(X),-1) Q:X=""!PRI D
|
---|
202 | ..N IBX S PRV=+PRVLST(X)
|
---|
203 | ..I $P(PRVLST(X),U,4)="P" S PRI=1 ; Primary provider
|
---|
204 | ..I PRV S PRV=PRV_U_$P($G(^VA(200,+PRV,0)),U)
|
---|
205 | ..S IBX=$$GETOE^SDOE(ENC),STP=$P(IBX,U,3)
|
---|
206 | ..I STP'="" S SPC=STP_U_$P($G(^DIC(40.7,STP,0)),U)
|
---|
207 | ;
|
---|
208 | QPS Q (PRV_U_SPC)
|
---|
209 | ;
|
---|
210 | PHDL ; - Print the header line for the Excel spreadsheet
|
---|
211 | N X
|
---|
212 | S X="Division^Svc^Patient^SSN^Episode Dt^Dt Entered^Dt Lst Edit^"
|
---|
213 | S X=X_"Lst Edited By^RNB Cat^Provider^Specialty^Entry Amt^Comments"
|
---|
214 | W !,X
|
---|
215 | Q
|
---|