| [613] | 1 | IBEMTO ;ALB/CPM-BILL MT CHARGES AWAITING NEW COPAY RATE ;02-AUG-93 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**179,183,202**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ; Bill MT OPT charges on hold awaiting the new copay rate. | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | ENO ; Standalone option entry point | 
|---|
|  | 8 | S IBOPT=1 | 
|---|
|  | 9 | ; | 
|---|
|  | 10 | ENR ; Enter/edit billing rates entry point | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | ; - quit if job has been fired up from enter/edit rates already | 
|---|
|  | 13 | I $G(IBRUN) G ENQ | 
|---|
|  | 14 | ; | 
|---|
|  | 15 | ; no longer used (at least for now) | 
|---|
|  | 16 | W !!,"This option is no longer available.",! G ENQ | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | ; - quit if there are no charges on hold awaiting the new rate | 
|---|
|  | 19 | I '$D(^IB("AC",20)) W:$G(IBOPT) !!,"There are no charges on hold awaiting the entry of the new copay rate." G ENQ | 
|---|
|  | 20 | ; | 
|---|
|  | 21 | ; - quit if current rate is still too old | 
|---|
|  | 22 | S IBDT=DT,IBX="O" D TYPE^IBAUTL2 | 
|---|
|  | 23 | I $$OLDRATE^IBAMTS1(IBRTED,DT) D:$G(IBOPT)  G ENQ | 
|---|
|  | 24 | .W !!,"The current copay rate (effective ",$$DAT1^IBOUTL(IBRTED),") is still too old to use.  Please be" | 
|---|
|  | 25 | .W !,"sure that you have entered the most current rate in your Billing Rates table." | 
|---|
|  | 26 | ; | 
|---|
|  | 27 | ; - if x-ref is locked, the job must be currently running | 
|---|
|  | 28 | L +^IB("AC",20):5 E  D:$G(IBOPT)  G ENQ | 
|---|
|  | 29 | .W !!,"The list of held charges cannot be accessed -- the job to bill these held" | 
|---|
|  | 30 | .W !,"charges may currently be running." | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | ; - queue the job to bill the held charges? | 
|---|
|  | 33 | I '$G(IBOPT) D | 
|---|
|  | 34 | .W !!?28,*7,*7,"***  PLEASE NOTE  ***" | 
|---|
|  | 35 | .W !?8,"The Means Test Outpatient Copayment rate has just been updated," | 
|---|
|  | 36 | .W !?8,"and there are charges 'on hold' awaiting the entry of this new rate!",! | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | I $G(IBOPT) D | 
|---|
|  | 39 | .S IBN=0 F IBJ=0:1:21 S IBN=$O(^IB("AC",20,IBN)) Q:'IBN | 
|---|
|  | 40 | .W !!,"There ",$S(IBJ=1:"is 1",1:"are "_$S(IBJ>20:"at least ",1:"")_IBJ)," charge",$E("s",IBJ>1)," on hold, awaiting the new copay rate." | 
|---|
|  | 41 | S DIR(0)="Y",DIR("A")="Do you want to queue a job to automatically bill these held charges",DIR("?")="^D HQ^IBEMTO" | 
|---|
|  | 42 | D ^DIR K DIR I 'Y!($D(DIRUT))!($D(DUOUT)) G ENQ | 
|---|
|  | 43 | ; | 
|---|
|  | 44 | ; - queue up job to bill held charges | 
|---|
|  | 45 | S:'$G(IBOPT) ZTDTH=$H | 
|---|
|  | 46 | S ZTRTN="DQ^IBEMTO",ZTIO="",ZTDESC="BILLING OF MT OPT CHARGES AWAITING NEW COPAY RATE" | 
|---|
|  | 47 | S IBRUN=1 D ^%ZTLOAD W !!,$S($D(ZTSK):"This job has been queued.  The task number is "_ZTSK_".",1:"Unable to queue this job!") | 
|---|
|  | 48 | ; | 
|---|
|  | 49 | ENQ L -^IB("AC",20) | 
|---|
|  | 50 | K:$G(IBOPT) IBRUN | 
|---|
|  | 51 | K IBN,IBDT,IBATYP,IBDESC,IBJ,IBOPT,IBRTED,IBCHG,IBX,ZTSK | 
|---|
|  | 52 | Q | 
|---|
|  | 53 | ; | 
|---|
|  | 54 | HQ ; Help for prompt | 
|---|
|  | 55 | W !!,"If you wish to queue off a job to bill the Means Test Outpatient" | 
|---|
|  | 56 | W !,"copayment charges that are on hold awaiting entry of the updated" | 
|---|
|  | 57 | W !,"billing rate, please enter 'Y' or 'YES'.  The job will be tasked" | 
|---|
|  | 58 | W !,"immediately.  Otherwise, enter 'N' or 'NO' or '^' to quit." | 
|---|
|  | 59 | Q | 
|---|
|  | 60 | ; | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | DQ ; Tasked job to bill all charges awaiting the new copay rate. | 
|---|
|  | 63 | S IBJOB=8,IBDUZ=DUZ,IBSEQNO=1,IBCNT=0 | 
|---|
|  | 64 | ; | 
|---|
|  | 65 | ; - record start time | 
|---|
|  | 66 | D NOW^%DTC S IBSTART=$$DAT2^IBOUTL(%) | 
|---|
|  | 67 | ; | 
|---|
|  | 68 | ; - if can't lock x-ref, job must currently be running | 
|---|
|  | 69 | L +^IB("AC",20):5 | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | ; - loop through all charges awaiting the new rate | 
|---|
|  | 72 | I  S IBREF=0 F  S IBREF=$O(^IB("AC",20,IBREF)) Q:'IBREF  D CHG | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | ; - unlock x-ref, record end time, and post bulletin | 
|---|
|  | 75 | L -^IB("AC",20) | 
|---|
|  | 76 | D NOW^%DTC S IBEND=$$DAT2^IBOUTL(%) | 
|---|
|  | 77 | D BULL^IBEMTO1 | 
|---|
|  | 78 | K IBT,IBSTART,IBEND,IBREF,IBND,IBDT,IBX,IBCHG,IBSEQNO,IBNOS,IBCNT,XMTEXT,XMSUB,XMZ,XMY,XMDUZ | 
|---|
|  | 79 | Q | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | CHG ; Pass a single charge to Accounts Receivable. | 
|---|
|  | 82 | S IBND=$G(^IB(IBREF,0)) I 'IBND K ^IB("AC",20,IBREF) G CHGQ | 
|---|
|  | 83 | S IBDT=DT,IBX="O" D TYPE^IBAUTL2 | 
|---|
|  | 84 | I $$OLDRATE^IBAMTS1(IBRTED,$P(IBND,"^",14)) G CHGQ ; rate still old | 
|---|
|  | 85 | S $P(^IB(IBREF,0),"^",7)=IBCHG,IBSEQNO=1,DFN=+$P(IBND,"^",2) | 
|---|
|  | 86 | S IBNOS=IBREF D ^IBR S:Y>0 IBCNT=IBCNT+1 | 
|---|
|  | 87 | CHGQ Q | 
|---|