| 1 | IBTUBO2 ;ALB/AAS - UNBILLED AMOUNTS - GENERATE UNBILLED REPORTS ;03 Aug 2004  8:21 AM
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**19,31,32,91,123,159,192,155,309,347**;21-MAR-94;Build 24
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | INPT(DGPM) ; - Check if inpatient episode has bills or final bill; if not,
 | 
|---|
| 6 |  ;   ^TMP($J,"IBTUB-INPT",NAME@@DFN,DATE,IBX)=bill status
 | 
|---|
| 7 |  ;   ^TMP($J,"IBTUB-INPT_MRA",NAME@@DFN,DATE,IBX)=1 if MRA request
 | 
|---|
| 8 |  ;   *Pre-set variables: DFN=patient IEN, DGPM=pointer to file #405,
 | 
|---|
| 9 |  ;                       IBDT=event date, IBRT=bill rate,
 | 
|---|
| 10 |  ;                       IBEDT=reporting period date
 | 
|---|
| 11 |  I '$G(DFN)!('$G(DGPM))!('$G(IBDT))!('$G(IBRT)) G INPTQ
 | 
|---|
| 12 |  N IBIP,IBDATA,IBNAME,IBNCF,IBXX,X,Y,IBMRA
 | 
|---|
| 13 |  S IBNAME=$P($G(^DPT(DFN,0)),U)
 | 
|---|
| 14 |  I $D(^TMP($J,"IBTUB-INPT",IBNAME_"@@"_DFN,IBDT)) G INPTQ
 | 
|---|
| 15 |  I $P($G(^DGPM(DGPM,0)),U,11) G INPTQ ;      Admitted for SC condition.
 | 
|---|
| 16 |  I $$SC^IBTUBOU($P($G(^DGPM(DGPM,0)),U,16)) G INPTQ ; Check PTF for SC.
 | 
|---|
| 17 |  S (IBIP(1),IBIP(2))=0 ; Set claim flags.
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ; - Check patient's claims.
 | 
|---|
| 20 |  S (IBNCF,X)=0
 | 
|---|
| 21 |  F  S X=$O(^DGCR(399,"C",DFN,X)) Q:'X  D  Q:IBIP(1)&(IBIP(2))
 | 
|---|
| 22 |  . S IBDATA=$$CKBIL^IBTUBOU(X,1) Q:IBDATA=""
 | 
|---|
| 23 |  . ;
 | 
|---|
| 24 |  . ; The admission date on the bill is different from the Event date.
 | 
|---|
| 25 |  . I $P(IBDATA,U,5)'=$P(IBDT,".") Q
 | 
|---|
| 26 |  . S IBNCF=IBNCF+1 ; Increment the number of bills on file for episode
 | 
|---|
| 27 |  . ;
 | 
|---|
| 28 |  . ; If Compile/Store & Not authorized before reporting period - Quit.
 | 
|---|
| 29 |  . I $G(IBCOMP),$S($P(IBDATA,U,2)'=2:$P(IBDATA,U,3),1:$P(IBDATA,U,6))>IBEDT Q
 | 
|---|
| 30 |  . ;
 | 
|---|
| 31 |  . S IBIP($P(IBDATA,U,4))=$S($P(IBDATA,U,2)'=2:1,1:2) ;   Episode billed for inst/prof bill type
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  I IBIP(1)=1 G:IBIP(2)=1!(IBDT<2990901) INPTQ ; Episode is billed.
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  ; - Add to episodes missing inst./prof. bills.
 | 
|---|
| 36 |  S (IBXX,IBMRA)=""
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  I IBIP(1)'=1 D
 | 
|---|
| 39 |  . I 'IBIP(1) S IBUNB("EPISM-I")=IBUNB("EPISM-I")+1 S:IBDET IBXX="I"
 | 
|---|
| 40 |  . I $G(IBXTRACT) S IB(1)=IB(1)+1 ; For DM extract.
 | 
|---|
| 41 |  . I IBIP(1)=2 S IBUNB("EPISM-I-MRA")=IBUNB("EPISM-I-MRA")+1 S:IBDET IBMRA="I"
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  I IBIP(2)'=1,IBDT'<2990901 D
 | 
|---|
| 44 |  . I 'IBIP(2) S IBUNB("EPISM-P")=IBUNB("EPISM-P")+1 S:IBDET IBXX=$S(IBXX="I":"I,P",1:"P")
 | 
|---|
| 45 |  . I $G(IBXTRACT) S IB(3)=IB(3)+1 ; For DM extract.
 | 
|---|
| 46 |  . I IBIP(2)=2 S IBUNB("EPISM-P-MRA")=IBUNB("EPISM-P-MRA")+1 S:IBDET IBMRA=$S(IBMRA="I":"I,P",1:"P")
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  I $S('IBIP(1):1,'IBIP(2):1,1:0) S IBUNB("EPISM-A")=IBUNB("EPISM-A")+1  ; Number of Admissions missing claims
 | 
|---|
| 49 |  S:IBIP(1)=2!(IBIP(2)=2) IBUNB("EPISM-A-MRA")=IBUNB("EPISM-A-MRA")+1
 | 
|---|
| 50 |  I $G(IBXTRACT) S IB(5)=IB(5)+1 ; For DM extract.
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  I '$G(IBINMRA),IBIP(1)=2 G:IBIP(2)=1 INPTQ
 | 
|---|
| 53 |  I '$G(IBINMRA),IBIP(2)=2 G:IBIP(1)=1 INPTQ
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  ; - Set global for report.
 | 
|---|
| 56 |  I $S($G(IBINMRA):1,1:IBXX'="") S ^TMP($J,"IBTUB-INPT",IBNAME_"@@"_DFN,IBDT,IBX)=IBNCF_U_IBXX_U_U_U_$$HOSP^IBTUBOU(DGPM)
 | 
|---|
| 57 |  I IBMRA'="",$G(IBINMRA) S ^TMP($J,"IBTUB-INPT_MRA",IBNAME_"@@"_DFN,IBDT,IBX)=1_U_IBMRA
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | INPTQ Q
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 | RX(IBRX) ; - Check if prescription has been billed; if not,
 | 
|---|
| 62 |  ;   ^TMP($J,"IBTUB-RX",NAME@@DFN,DATE@RX#,IBX)=bill status^drug name^
 | 
|---|
| 63 |  ;                                            original fill date
 | 
|---|
| 64 |  ;   ^TMP($J,"IBTUB-RX_MRA",NAME@@DFN,DATE@RX#,IBX)=1 if req MRA
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  ;   *Pre-set variables: DFN=patient IEN, IBDT=refill date,
 | 
|---|
| 67 |  ;                       IBRT=bill rate, IBRX=pointer to file #52,
 | 
|---|
| 68 |  ;                       IBEDT=reporting period date
 | 
|---|
| 69 |  I '$G(DFN)!('$G(IBDT))!('$G(IBRT))!('$G(IBRX)) G RXQ
 | 
|---|
| 70 |  N IBDATA,IBDAY,IBDRX,IBFL,IBFLG,IBOFD,IBNAME,IBND,IBNO,IBNCF,RX,X,RXDT,IBMRA,IBCO
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  ; - Be sure prescription has an RX#.
 | 
|---|
| 73 |  S IBND=$$RXZERO^IBRXUTL(DFN,IBRX),IBNO=$P(IBND,U) G:IBNO="" RXQ
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  ; - Retrieve the Prescription Original Fill Date
 | 
|---|
| 76 |  S IBOFD=$$FILE^IBRXUTL(IBRX,22)\1
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  S IBDAY=$E(IBDT,1,7),IBDRX=IBDAY_"@@"_IBNO,IBNAME=$P($G(^DPT(DFN,0)),U)
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  ; - Be sure that this fill was not already marked as unbilled.
 | 
|---|
| 81 |  I $D(^TMP($J,"IBTUB-RX",IBNAME_"@@"_DFN,IBDRX,IBX)) G RXQ
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  ; - Look at all fills of the prescription that are on a claim.
 | 
|---|
| 84 |  S (IBFL,X)="",(IBFLG,IBNCF,IBNCF(0),IBMRA)=0
 | 
|---|
| 85 |  F  S X=$O(^IBA(362.4,"B",IBNO,X)) Q:'X  D  Q:IBFL
 | 
|---|
| 86 |  . S RX=$G(^IBA(362.4,X,0)),RXDT=$P(RX,U,3)\1
 | 
|---|
| 87 |  . I RXDT=IBOFD S IBFLG=1  ; Original Fill Date Billed?
 | 
|---|
| 88 |  . I RXDT'=IBDAY Q  ; RX refill and claim refill dates not the same.
 | 
|---|
| 89 |  . ;
 | 
|---|
| 90 |  . ; - Skip bill if not authorized (and not meeting other criteria).
 | 
|---|
| 91 |  . S IBDATA=$$CKBIL^IBTUBOU($P(RX,U,2)) Q:IBDATA=""
 | 
|---|
| 92 |  . S IBNCF=IBNCF+1 ; Increment the number of bills on file for the episode
 | 
|---|
| 93 |  . ; If Compile/Store & Not authorized before reporting period - Quit.
 | 
|---|
| 94 |  . I $G(IBCOMP),$S($P(IBDATA,U,2)'=2:$P(IBDATA,U,3),1:$P(IBDATA,U,6))>IBEDT S IBNONMRA=0 Q
 | 
|---|
| 95 |  . S:$P(IBDATA,U,2)'=2 IBFL=1,IBMRA=0 ; at least 1 non-MRA bill exists
 | 
|---|
| 96 |  . S:$P(IBDATA,U,2)=2 IBMRA=1 ; at least 1 MRA bill exists
 | 
|---|
| 97 |  . ;
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  I IBFL G RXQ ; Refill has been billed.
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 | RX1 ; - Calculate unbilled amounts.
 | 
|---|
| 102 |  S:'IBMRA IBUNB("PRESCRP")=IBUNB("PRESCRP")+1
 | 
|---|
| 103 |  I IBMRA S IBUNB("PRESCRP-MRA")=IBUNB("PRESCRP-MRA")+1
 | 
|---|
| 104 |  S IBCO=$$BICOST^IBCRCI(IBRT,3,IBDAY,"PRESCRIPTION FILL")
 | 
|---|
| 105 |  S:'IBMRA IBUNB("UNBILRX")=IBUNB("UNBILRX")+IBCO
 | 
|---|
| 106 |  I IBMRA S IBUNB("UNBILRX-MRA")=IBUNB("UNBILRX-MRA")+IBCO
 | 
|---|
| 107 |  I $G(IBXTRACT) D  ; For DM extract.
 | 
|---|
| 108 |  . S IB(17)=IB(17)+1
 | 
|---|
| 109 |  . S IB(18)=IB(18)+IBCO
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ; - Set global for report.
 | 
|---|
| 112 |  D ZERO^IBRXUTL(+$P(IBND,U,6))
 | 
|---|
| 113 |  I $S($G(IBINMRA):1,1:'IBMRA) S ^TMP($J,"IBTUB-RX",IBNAME_"@@"_DFN,IBDRX,IBX)=IBNCF_U_$P($G(^VA(200,+$P(IBND,U,4),0)),U)_U_$$FILE^IBRXUTL(IBRX,22)_U_U_IBFLG_U_$G(^TMP($J,"IBDRUG",+$P(IBND,U,6),.01))
 | 
|---|
| 114 |  I IBMRA,$G(IBINMRA) S ^TMP($J,"IBTUB-RX_MRA",IBNAME_"@@"_DFN,IBDRX,IBX)=1
 | 
|---|
| 115 |  K ^TMP($J,"IBDRUG")
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 | RXQ Q
 | 
|---|