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