| [613] | 1 | IBTRKR3 ;ALB/AAS - CLAIMS TRACKING - ADD/TRACK RX FILLS ;13-AUG-93 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**13,43,121,160,247,275,260,309,336,312,339,347**;21-MAR-94;Build 24 | 
|---|
|  | 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | % ; -- entry point for nightly background job | 
|---|
|  | 6 | N IBTSBDT,IBTSEDT | 
|---|
|  | 7 | S IBTSBDT=$$FMADD^XLFDT(DT,-14)-.1 | 
|---|
|  | 8 | S IBTSEDT=$$FMADD^XLFDT(DT,-7)+.9 | 
|---|
|  | 9 | D EN1 | 
|---|
|  | 10 | Q | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | EN ; -- entry point to ask date range | 
|---|
|  | 13 | N IBSWINFO S IBSWINFO=$$SWSTAT^IBBAPI() ;IB*2.0*312 | 
|---|
|  | 14 | N IBBDT,IBEDT,IBTSBDT,IBTSEDT,IBTALK,IBMESS | 
|---|
|  | 15 | S IBTALK=1 | 
|---|
|  | 16 | I '$P($G(^IBE(350.9,1,6)),"^",4) W !!,"I'm sorry, Tracking of Prescription Refills is currently turned off." G ENQ | 
|---|
|  | 17 | W !!!,"Select the Date Range of Rx Refills to Add to Claims Tracking.",! | 
|---|
|  | 18 | D DATE^IBOUTL | 
|---|
|  | 19 | I IBBDT<1!(IBEDT<1) G ENQ | 
|---|
|  | 20 | S IBTSBDT=IBBDT,IBTSEDT=IBEDT | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | ; Do NOT PROCESS on VistA if Start or End>=Switch Eff Date ;IB*2.0*312 | 
|---|
|  | 23 | I +IBSWINFO,((IBTSBDT+1)>$P(IBSWINFO,"^",2))!((IBTSEDT+1)>$P(IBSWINFO,"^",2)) D  G EN | 
|---|
|  | 24 | .W !!,"The Begin OR End Date CANNOT be on or after" | 
|---|
|  | 25 | .W !,"the PFSS Effective Date: ",$$FMTE^XLFDT($P(IBSWINFO,"^",2)) | 
|---|
|  | 26 | ; | 
|---|
|  | 27 | ; -- check selected dates | 
|---|
|  | 28 | S IBTRKR=$G(^IBE(350.9,1,6)) | 
|---|
|  | 29 | ; start date can't be before parameters | 
|---|
|  | 30 | I +IBTRKR,IBTSBDT<+IBTRKR S IBTSBDT=IBTRKR W !!,"Begin date is before Claims Tracking Start Date, changed to ",$$DAT1^IBOUTL(IBTSBDT) | 
|---|
|  | 31 | ; -- end date into future | 
|---|
|  | 32 | I IBTSEDT>$$FMADD^XLFDT(DT,-3) W !!,"I'll automatically change the end date to 3 days prior to the date queued to run." | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | W !!!,"I'm going to automatically queue this off and send you a" | 
|---|
|  | 35 | W !,"mail message when complete.",! | 
|---|
|  | 36 | S ZTIO="",ZTRTN="EN1^IBTRKR3",ZTSAVE("IB*")="",ZTDESC="IB - Add Rx Refills to Claims Tracking" | 
|---|
|  | 37 | D ^%ZTLOAD I $G(ZTSK) K ZTSK W !,"Request Queued" | 
|---|
|  | 38 | ENQ K ZTSK,ZTIO,ZTSAVE,ZTDESC,ZTRTN | 
|---|
|  | 39 | D HOME^%ZIS | 
|---|
|  | 40 | Q | 
|---|
|  | 41 | ; | 
|---|
|  | 42 | EN1 ; -- add rx refills to claims tracking file | 
|---|
|  | 43 | N I,J,X,Y,IBTRKR,IBDT,IBRXN,IBFILL,DFN,IBDATA,IBCNT,IBCNT1,IBCNT2,LIST1 | 
|---|
|  | 44 | N IBSWINFO S IBSWINFO=$$SWSTAT^IBBAPI() ;IB*2.0*312 | 
|---|
|  | 45 | N IBICD,IBCOPAY | 
|---|
|  | 46 | ; | 
|---|
|  | 47 | ; -- check parameters | 
|---|
|  | 48 | S IBTRKR=$G(^IBE(350.9,1,6)) | 
|---|
|  | 49 | G:'$P(IBTRKR,"^",4) EN1Q ; quit if rx tracking off | 
|---|
|  | 50 | I +IBTRKR,IBTSBDT<+IBTRKR S IBTSBDT=IBTRKR ; start date can't be before parameters | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | ; -- users can queue into future, make sure dates not after date run | 
|---|
|  | 53 | I IBTSEDT>$$FMADD^XLFDT(DT,-3) S IBMESS="(Selected end date of "_$$DAT1^IBOUTL(IBTSEDT)_" automatically changed to "_$$DAT1^IBOUTL($$FMADD^XLFDT(DT,-3))_".)",IBTSEDT=$$FMADD^XLFDT(DT,-3) | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | S IBRXTYP=$O(^IBE(356.6,"AC",4,0)) ; event type pointer for rx billing | 
|---|
|  | 56 | ; | 
|---|
|  | 57 | ; -- cnt= total count, cnt1=count added nsc, cnt2=count of pending | 
|---|
|  | 58 | S (IBCNT,IBCNT1,IBCNT2)=0 | 
|---|
|  | 59 | S IBDT=IBTSBDT-.0001 | 
|---|
|  | 60 | S LIST1="IBTRKAD" | 
|---|
|  | 61 | D REF^PSO52EX(IBDT,IBTSEDT,LIST1) | 
|---|
|  | 62 | S IBDT=0 | 
|---|
|  | 63 | F  S IBDT=$O(^TMP($J,LIST1,"AD",IBDT)) Q:'IBDT!(IBDT>IBTSEDT)  D | 
|---|
|  | 64 | .S IBRXN=0 | 
|---|
|  | 65 | .I +IBSWINFO,(IBDT+1)>$P(IBSWINFO,"^",2) Q | 
|---|
|  | 66 | .F  S IBRXN=$O(^TMP($J,LIST1,"AD",IBDT,IBRXN)) Q:'IBRXN  D | 
|---|
|  | 67 | ..S IBFILL="" | 
|---|
|  | 68 | ..F  S IBFILL=$O(^TMP($J,LIST1,"AD",IBDT,IBRXN,IBFILL)) Q:IBFILL=""  D RXCHK | 
|---|
|  | 69 | K ^TMP($J,LIST1) | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | I $G(IBTALK) D BULL^IBTRKR31 | 
|---|
|  | 72 | EN1Q I $D(ZTQUEUED) S ZTREQ="@" | 
|---|
|  | 73 | Q | 
|---|
|  | 74 | ; | 
|---|
|  | 75 | RXCHK ; -- check and add rx | 
|---|
|  | 76 | N IBND,LIST,NODE | 
|---|
|  | 77 | S IBCNT=IBCNT+1 | 
|---|
|  | 78 | ;I IBFILL<1 G RXCHKQ ; original fill | 
|---|
|  | 79 | I IBDT>(DT+.24) G RXCHKQ ; future fill | 
|---|
|  | 80 | I '$D(ZTQUEUED),($G(IBTALK)) W "." | 
|---|
|  | 81 | ; | 
|---|
|  | 82 | S DFN=$$FILE^IBRXUTL(IBRXN,2) | 
|---|
|  | 83 | S IBRXDATA=$$RXZERO^IBRXUTL(DFN,IBRXN),IBRXSTAT=$$FILE^IBRXUTL(IBRXN,100,"I") | 
|---|
|  | 84 | ;I IBDT=$P($O(^DPT(DFN,"S",(IBDT-.00001))),".") G RXCHKQ ;scheduled appointment on same day as fill date | 
|---|
|  | 85 | ;I $$BABCSC^IBEFUNC(DFN,$P(IBDT,".",1)) G RXCHKQ ; is billable clinic stop in encounter file for data (allows telephone stops on same day, but not others) (P121 - RC, can now bill Rx if on same day as opt visit) | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | ; -- not already in claims tracking | 
|---|
|  | 88 | I $O(^IBT(356,"ARXFL",IBRXN,IBFILL,"")) G RXCHKQ ; already in claims tracking | 
|---|
|  | 89 | ; | 
|---|
|  | 90 | ; -- see if tracking only insured and pt is insured | 
|---|
|  | 91 | I $P(IBTRKR,"^",4)=1,'$$INSURED^IBCNS1(DFN,IBDT) G RXCHKQ ; patient not insure | 
|---|
|  | 92 | ; | 
|---|
|  | 93 | ; -- check rx status (not deleted) | 
|---|
|  | 94 | I IBRXSTAT=13 G RXCHKQ | 
|---|
|  | 95 | ; | 
|---|
|  | 96 | ; -- Don't PROCESS IF there is already a PFSS ACCT REF# -- ;IB*2.0*312 | 
|---|
|  | 97 | I 'IBFILL,+$$FILE^IBRXUTL(IBRXN,125) G RXCHKQ | 
|---|
|  | 98 | I +IBFILL,+$$SUBFILE^IBRXUTL(IBRXN,IBFILL,52,21) G RXCHKQ | 
|---|
|  | 99 | ; | 
|---|
|  | 100 | ; -- original fill not released or returned to stock | 
|---|
|  | 101 | I 'IBFILL,'$$FILE^IBRXUTL(IBRXN,31) G RXCHKQ | 
|---|
|  | 102 | I 'IBFILL,$$FILE^IBRXUTL(IBRXN,32.1) G RXCHKQ | 
|---|
|  | 103 | ; | 
|---|
|  | 104 | ; -- refill not released or returned to stock | 
|---|
|  | 105 | I +IBFILL,'$$SUBFILE^IBRXUTL(IBRXN,IBFILL,52,17) G RXCHKQ | 
|---|
|  | 106 | I +IBFILL,$$SUBFILE^IBRXUTL(IBRXN,IBFILL,52,14) G RXCHKQ | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | ; -- check drug (not investigational, supply, or over the counter drug | 
|---|
|  | 109 | S IBDRUG=$P(IBRXDATA,"^",6) | 
|---|
|  | 110 | D ZERO^IBRXUTL(IBDRUG) | 
|---|
|  | 111 | S IBDEA=$G(^TMP($J,"IBDRUG",+IBDRUG,3)) | 
|---|
|  | 112 | K ^TMP($J,"IBDRUG") | 
|---|
|  | 113 | I IBDEA["I"!(IBDEA["S")!(IBDEA["9") G RXCHKQ ; investigational drug, supply or otc | 
|---|
|  | 114 | ; | 
|---|
|  | 115 | ; -- see if insured for prescriptions | 
|---|
|  | 116 | I '$$PTCOV^IBCNSU3(DFN,IBDT,"PHARMACY",.IBANY) S IBRMARK=$S($G(IBANY):"SERVICE NOT COVERED",1:"NOT INSURED") | 
|---|
|  | 117 | ; | 
|---|
|  | 118 | ; -- check sc status and others | 
|---|
|  | 119 | ; -- new ICD node in PSO with CIDC, if it exists use this for determination | 
|---|
|  | 120 | S LIST="IBTRKRLST" | 
|---|
|  | 121 | S NODE="ICD" | 
|---|
|  | 122 | S IBICD=0,IBCOPAY=0 | 
|---|
|  | 123 | D RX^PSO52API(DFN,LIST,IBRXN,,NODE,,) | 
|---|
|  | 124 | I +$G(^TMP($J,LIST,DFN,IBRXN,"ICD",0))>0 S IBICD=1 ;Setup ICD Flag | 
|---|
|  | 125 | I +$$IBND^IBRXUTL(DFN,IBRXN)>0 S IBCOPAY=1 ;Setup Copay Flag | 
|---|
|  | 126 | I $G(IBRMARK)="",IBICD D CL^SDCO21(DFN,IBDT,"",.IBARR) I $D(IBARR) D | 
|---|
|  | 127 | .S IBM=0 | 
|---|
|  | 128 | .F  S IBM=$O(^TMP($J,LIST,DFN,IBRXN,"ICD",IBM)) Q:'IBM!($G(IBRMARK)'="")  D | 
|---|
|  | 129 | ..S IBZ=$$ICD^IBRXUTL1(DFN,IBRXN,IBM,LIST) F IBP=1:1:7 Q:$G(IBRMARK)'=""  I $D(IBARR(IBP)) D | 
|---|
|  | 130 | ... S IBRMARK=$S($P(IBZ,"^",IBP+1):$P($T(EXEMPT+IBP),";",3),$P(IBZ,"^",IBP+1)=0:"",1:"NEEDS SC DETERMINATION") | 
|---|
|  | 131 | ; | 
|---|
|  | 132 | ; -- no new ICD node in PSO, use old method of determining status | 
|---|
|  | 133 | I $G(IBRMARK)="",'IBICD D | 
|---|
|  | 134 | . D ELIG^VADPT | 
|---|
|  | 135 | . ;if the patient is covered by insurance for pharmacy ($G(IBRMARK)="") | 
|---|
|  | 136 | . ;AND if no copay in #350 | 
|---|
|  | 137 | . ;then we need to determine the non billable reason and set IBRMARK | 
|---|
|  | 138 | . ; | 
|---|
|  | 139 | . ;IF VAEL(3) -- if this is a veteran with SC(service connection) status | 
|---|
|  | 140 | . I VAEL(3),'IBCOPAY D | 
|---|
|  | 141 | . . I $P(VAEL(3),"^",2)>49 S IBRMARK="NEEDS SC DETERMINATION" | 
|---|
|  | 142 | . . ;in case of POW and Unempl.vet we cannot decide if the 3rd party should be exempt | 
|---|
|  | 143 | . . N IBPOWUNV,IBAUTRET S IBAUTRET=$$AUTOINFO^DGMTCOU1(DFN),IBPOWUNV=$S($P(IBAUTRET,U,8):1,$P(IBAUTRET,U,9):1,1:0) | 
|---|
|  | 144 | . . I $P(VAEL(3),"^",2)<50 S IBRMARK=$S(IBPOWUNV:"NEEDS SC DETERMINATION",1:"SC TREATMENT") | 
|---|
|  | 145 | . . I $$RXST^IBARXEU(DFN,$P(IBRXDATA,U,13))>0 S IBRMARK="NEEDS SC DETERMINATION" | 
|---|
|  | 146 | . ; | 
|---|
|  | 147 | . ;IF +VAEL(3)=0 if the veteran doesn't have SC status, but | 
|---|
|  | 148 | . ;the veteran still may have CV status active | 
|---|
|  | 149 | . I $G(IBRMARK)="",+VAEL(3)=0,'IBCOPAY D | 
|---|
|  | 150 | . . I $$CVEDT^IBACV(DFN,IBDT) S IBRMARK="NEEDS SC DETERMINATION" ;SC-because IB staff usually is using this reason to search for cases that need to be reviewed. COMBAT VETERAN reason will be used after review if this was a case | 
|---|
|  | 151 | K ^TMP($J,LIST) | 
|---|
|  | 152 | ; | 
|---|
|  | 153 | ; | 
|---|
|  | 154 | ; -- ok to add to tracking module | 
|---|
|  | 155 | D REFILL^IBTUTL1(DFN,IBRXTYP,IBDT,IBRXN,IBFILL,$G(IBRMARK)) I '$D(ZTQUEUED),$G(IBTALK) W "+" | 
|---|
|  | 156 | I $G(IBRMARK)'="" S IBCNT2=IBCNT2+1 | 
|---|
|  | 157 | I $G(IBRMARK)="" S IBCNT1=IBCNT1+1 | 
|---|
|  | 158 | K IBANY,IBRMARK,VAEL,VA,IBDEA,IBDRUG,IBRXSTAT,IBRXDATA,DFN,X,Y | 
|---|
|  | 159 | K IBARR,IBM,IBZ,IBP | 
|---|
|  | 160 | RXCHKQ Q | 
|---|
|  | 161 | ; | 
|---|
|  | 162 | EXEMPT ; exemption reasons | 
|---|
|  | 163 | ;;AGENT ORANGE | 
|---|
|  | 164 | ;;IONIZING RADIATION | 
|---|
|  | 165 | ;;SC TREATMENT | 
|---|
|  | 166 | ;;SOUTHWEST ASIA | 
|---|
|  | 167 | ;;MILITARY SEXUAL TRAUMA | 
|---|
|  | 168 | ;;HEAD/NECK CANCER | 
|---|
|  | 169 | ;;COMBAT VETERAN | 
|---|
|  | 170 | ;;PROJECT 112/SHAD | 
|---|
|  | 171 | ;; | 
|---|