| [613] | 1 | IBARXEPV ;ALB/AAS - RX COPAY EXEMPTION VERIFY STATUS ; 02/12/2004 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**262**; 21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | % ; -- print/verify patients whose current exemption does not match | 
|---|
|  | 6 | ;    what is currently computed. | 
|---|
|  | 7 | I '$D(DT) D DT^DICRW | 
|---|
|  | 8 | S IBQUIT=0 | 
|---|
|  | 9 | I '$D(IOF) D HOME^%ZIS | 
|---|
|  | 10 | W @IOF,"Verify Medication Copayment Exemption Status" | 
|---|
|  | 11 | W !! D DATE^IBOUTL | 
|---|
|  | 12 | I 'IBBDT!('IBEDT)!(IBEDT<IBBDT) G END | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | ; -- update patient status | 
|---|
|  | 15 | W ! | 
|---|
|  | 16 | S DIR("?")="Answer 'YES' if you want to automatically update patient status to the computed status, or 'NO' to print a report of discrepancies." | 
|---|
|  | 17 | S DIR(0)="Y",DIR("A")="Update Patient Status",DIR("B")="NO" D ^DIR K DIR S IBUP=+Y | 
|---|
|  | 18 | I $D(DIRUT) G END | 
|---|
|  | 19 | W ! | 
|---|
|  | 20 | ; | 
|---|
|  | 21 | DEV W !!,"You will need a 132 column printer for this report!",! | 
|---|
|  | 22 | S %ZIS="QM" D ^%ZIS G:POP END | 
|---|
|  | 23 | I $D(IO("Q")) S ZTRTN="DQ^IBARXEPV",ZTSAVE("IB*")="",ZTDESC="IB Verify Medication Copayment exemption" D ^%ZTLOAD K ZTSK,IO("Q") D HOME^%ZIS G END | 
|---|
|  | 24 | I '$D(ZTQUEUED) W !,"HMMMM, LET ME THINK ABOUT THIS FOR A MINUTE" | 
|---|
|  | 25 | U IO | 
|---|
|  | 26 | ; | 
|---|
|  | 27 | DQ ; -- entry point from task man to start comparison | 
|---|
|  | 28 | S (IBPCNT,IBPAG)=0,IBOK=1 D NOW^%DTC S Y=% D D^DIQ S IBPDAT=$P(Y,"@")_" "_$E($P(Y,"@",2),1,5) | 
|---|
|  | 29 | K ^TMP($J,"IBUNVER") | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | ; -- look through inverse date x-ref | 
|---|
|  | 32 | S IBDT=IBBDT-.00001 | 
|---|
|  | 33 | F  S IBDT=$O(^IBA(354.1,"B",IBDT)) Q:'IBDT!(IBDT>(IBEDT+.9))  S IBDA=0 F   S IBDA=$O(^IBA(354.1,"B",IBDT,IBDA)) Q:'IBDA  D CHK I 'IBOK D UP:IBUP,SET | 
|---|
|  | 34 | D REPORT,PAUSE^IBOUTL:'IBQUIT | 
|---|
|  | 35 | G END | 
|---|
|  | 36 | ; | 
|---|
|  | 37 | END K ^TMP($J,"IBUNVER") | 
|---|
|  | 38 | I $D(ZTQUEUED) S ZTREQ="@" Q | 
|---|
|  | 39 | D ^%ZISC | 
|---|
|  | 40 | K DFN,DIR,DIRUT,DIC,DIE,DA,DR,X,Y | 
|---|
|  | 41 | K IBBDT,IBDA,IBDATA,IBDEPEN,IBDFN,IBDT,IBEDT,IBER,IBERR,IBEXREA,IBEXREAN,IBEXREAO,IBJ,IBMESS,IBNAM,IBOK,IBP,IBPAG,IBPCNT,IBPDAT,IBQUIT,IBUP | 
|---|
|  | 42 | Q | 
|---|
|  | 43 | ; | 
|---|
|  | 44 | REPORT ; -- print report | 
|---|
|  | 45 | D HDR S IBDCNT=0 | 
|---|
|  | 46 | I '$D(^TMP($J,"IBUNVER")) W !,"No discrepancies found in ",IBPCNT," exemptions checked." G REPORTQ | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | S IBNAM="" | 
|---|
|  | 49 | F  S IBNAM=$O(^TMP($J,"IBUNVER",IBNAM)) Q:IBNAM=""!(IBQUIT)  S IBDFN="" F  S IBDFN=$O(^TMP($J,"IBUNVER",IBNAM,IBDFN)) Q:IBDFN=""!(IBQUIT)  S IBER=^(IBDFN) D LINE | 
|---|
|  | 50 | ; | 
|---|
|  | 51 | W !!,"There were ",IBDCNT," discrepancies found in ",IBPCNT," exemptions checked." | 
|---|
|  | 52 | ; | 
|---|
|  | 53 | REPORTQ Q | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | LINE ; -- write each line | 
|---|
|  | 56 | S DFN=+IBDFN,IBDCNT=IBDCNT+1 | 
|---|
|  | 57 | I $Y>(IOSL-5) D PAUSE^IBOUTL Q:IBQUIT  D HDR | 
|---|
|  | 58 | W !,$E(IBNAM,1,20),?22,$P(IBER,"^",8) | 
|---|
|  | 59 | S X=$P(IBER,"^",5) W ?39,$S(X=3:"Exemption incorrect",X=1!(X=2)!(X=5):"Not Current Status",X=4:"Name Missing",1:"Hmmmm") | 
|---|
|  | 60 | W ?61,$$DAT1^IBOUTL($P(IBER,"^",2))_" "_$E($P($G(^IBE(354.2,+IBER,0)),"^"),1,15) | 
|---|
|  | 61 | W ?88,$$DAT1^IBOUTL($P(IBER,"^",4))_" "_$E($P($G(^IBE(354.2,+$P(IBER,"^",3),0)),"^"),1,15) | 
|---|
|  | 62 | W ?115,$P(IBER,"^",6) | 
|---|
|  | 63 | Q | 
|---|
|  | 64 | ; | 
|---|
|  | 65 | CHK ; -- check if current status = computed status | 
|---|
|  | 66 | S IBOK=1,IBMESS="Nothing Updated",IBERR="" | 
|---|
|  | 67 | S X=$G(^IBA(354.1,+IBDA,0)) G CHKQ:'$P(X,"^",10) ;not active skip | 
|---|
|  | 68 | S DFN=$P(X,"^",2) | 
|---|
|  | 69 | S Y=$G(^IBA(354,DFN,0)) I +X<$P(Y,"^",3) G CHKQ ;not current exemption | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | N DGMT,CONV,CLN S (CLN,CONV)=0,DGMT=$$LST^DGMTU(DFN,+X,1) | 
|---|
|  | 72 | I $P(DGMT,U,5)=2 D  G:CONV CHKQ           ; skip Edb conv. tests | 
|---|
|  | 73 | .; Loop through the MT comments, Check for EDB converted test | 
|---|
|  | 74 | .; No comments to check | 
|---|
|  | 75 | .Q:'$D(^DGMT(408.31,+DGMT,"C",1,0)) | 
|---|
|  | 76 | .F  S CLN=$O(^DGMT(408.31,+DGMT,"C",CLN)) Q:'CLN!(CONV)  D | 
|---|
|  | 77 | ..I ^DGMT(408.31,+DGMT,"C",CLN,0)["Z06 MT via Edb" S CONV=1 | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | S IBPCNT=IBPCNT+1 | 
|---|
|  | 80 | I '+Y S IBOK=0,IBERR=4 | 
|---|
|  | 81 | S IBEXREAO=$P(X,"^",5)_"^"_+X ;current exemption | 
|---|
|  | 82 | I $P($G(^IBE(354.2,+IBEXREAO,0)),"^",5)=2010 G CHKQ ; hardships don't report | 
|---|
|  | 83 | I +X>$P(Y,"^",3) S IBOK=0,IBERR=1 ;most current exemption not in 354 | 
|---|
|  | 84 | I $P(X,"^",5)'=$P(Y,"^",5) S IBOK=0,IBERR=2 ;Current exemption not in 354 | 
|---|
|  | 85 | I $P(X,"^",4)'=$P(Y,"^",4) S IBOK=0,IBERR=5 ;current status in exemption not in 354 | 
|---|
|  | 86 | S IBEXREAN=$$STATUS^IBARXEU1(DFN,DT) | 
|---|
|  | 87 | I +IBEXREAO'=+IBEXREAN S IBOK=0,IBERR=3 | 
|---|
|  | 88 | CHKQ Q | 
|---|
|  | 89 | ; | 
|---|
|  | 90 | UP ; -- update current exemption status | 
|---|
|  | 91 | Q:IBOK | 
|---|
|  | 92 | S IBJOB=15,IBWHER=16 | 
|---|
|  | 93 | I IBERR=4 D  G UPQ | 
|---|
|  | 94 | .S DIE="^IBA(354,",DA=DFN,DR=".01////"_DFN D ^DIE | 
|---|
|  | 95 | .K DIE,DA,DR,DIC | 
|---|
|  | 96 | .S IBMESS="Name Corrected" | 
|---|
|  | 97 | UP1 N IBOLDAUT S IBOLDAUT="" | 
|---|
|  | 98 | ; | 
|---|
|  | 99 | ; -- if currently not auto exempt make sure not more recent autoexempt | 
|---|
|  | 100 | I $L($P($G(^IBE(354.2,+IBEXREAN,0)),"^",5))>2 D OLDAUT^IBARXEX1(IBEXREAN) | 
|---|
|  | 101 | S IBFORCE=$P(IBEXREAN,"^",2) | 
|---|
|  | 102 | D MOSTR^IBARXEU5($P(IBEXREAN,"^",2),+IBEXREAN) | 
|---|
|  | 103 | D ADDEX^IBAUTL6(+IBEXREAN,$P(IBEXREAN,"^",2),1,1,IBOLDAUT) | 
|---|
|  | 104 | S IBMESS="Updated" | 
|---|
|  | 105 | UPQ K IBFORCE Q | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | SET ; -- set ^tmp node if not okay | 
|---|
|  | 108 | Q:IBOK | 
|---|
|  | 109 | S IBP=$$PT^IBEFUNC(DFN) | 
|---|
|  | 110 | S IBDFN=DFN | 
|---|
|  | 111 | I $D(^TMP($J,"IBUNVER",$P(IBP,"^"),DFN)) S IBDFN=DFN_"-"_IBPCNT | 
|---|
|  | 112 | S ^TMP($J,"IBUNVER",$P(IBP,"^"),IBDFN)=IBEXREAO_"^"_IBEXREAN_"^"_IBERR_"^"_IBMESS_"^"_IBP | 
|---|
|  | 113 | Q | 
|---|
|  | 114 | ; | 
|---|
|  | 115 | HDR ; -- print header | 
|---|
|  | 116 | I IBPAG!($E(IOST,1,2)="C-") W @IOF | 
|---|
|  | 117 | S IBPAG=IBPAG+1 | 
|---|
|  | 118 | W !,"Medication Copayment Exemption Problem Report",?(IOM-31),IBPDAT," Page ",IBPAG | 
|---|
|  | 119 | W !,"Patient",?22,"PT. ID",?39,"Error",?61,"Current Exemption",?88,"Computed Exemption",?115,"Action" | 
|---|
|  | 120 | W !,$TR($J(" ",IOM)," ","-") | 
|---|
|  | 121 | Q | 
|---|