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