| 1 | IBEMTBC ;ALB/RLW - IB MEANS TEST BILLING CLOCK FILE UPDATE ; 15-JAN-92
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**153,199**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | EN ; Entry point for Clock Maintenance
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;I $D(XRT0) S:'$D(XRTN) XRTN="IBEMTBC" D T1^%ZOSV ;stop rt clock
 | 
|---|
| 8 |  ;S XRTL=$ZU(0),XRTN="IBEMTBC-1" D T0^%ZOSV ;start rt clock
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  D HOME^%ZIS,NOW^%DTC S IBDT=% K % I '$D(DT) D DT^DICRW
 | 
|---|
| 11 |  N DPTNOFZY S DPTNOFZY=1  ;Suppress PATIENT file fuzzy lookups
 | 
|---|
| 12 |  S DIR(0)="PO^2:AEMQZ" D ^DIR K DIR S DFN=+Y I $D(DIRUT) G ENQ
 | 
|---|
| 13 |  I $$BILST^DGMTUB(DFN)=0 S J=5 D ERR G EN
 | 
|---|
| 14 |  I $D(^IBE(351,"ACT",DFN)) S IBSELECT="ADJUST",IBDR="[IB BILLING CYCLE ADJUST]" D ADJUST,CLEANUP G ENQ
 | 
|---|
| 15 |  S IBSELECT="ADD",IBDR="[IB BILLING CYCLE ADD]" D ADDNEW,CLEANUP
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 | ENQ I '$D(DIRUT) W ! G EN
 | 
|---|
| 18 |  K DIC,IBSELECT,DFN,IBDR,IBEL,DFN,IBIEN,IBDATA,J,DIRUT,IBFAC,IBSITE,IBDT
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;I $D(XRT0) S:'$D(XRTN) XRTN="IBEMTBC" D T1^%ZOSV ;stop rt clock
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 | ADJUST ; - show current active clock; inactivate and add a new one
 | 
|---|
| 25 |  W @IOF
 | 
|---|
| 26 |  S IBIEN=$O(^IBE(351,"ACT",DFN,0))
 | 
|---|
| 27 |  S DIC="^IBE(351,",DA=IBIEN W !! D EN^DIQ K DIC,DA
 | 
|---|
| 28 |  S DIR(0)="Y",DIR("A")="Do you want to update" D ^DIR K DIR Q:+Y<1
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ; - save current clock, change to cancelled and delete "ACT" xref
 | 
|---|
| 31 |  K ^IBE(351,"ACT",DFN) L +(^IBE(351,IBIEN))
 | 
|---|
| 32 |  S IBDATA=$P(^IBE(351,IBIEN,0),"^",2,10),$P(^IBE(351,IBIEN,0),"^",4)=3,$P(^(1),"^",3,4)=DUZ_"^"_IBDT
 | 
|---|
| 33 |  L -(^IBE(351,IBIEN))
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 | ADDNEW ; - add a new clock and allow updating
 | 
|---|
| 36 |  I IBSELECT="ADD" D  Q:'Y  W !
 | 
|---|
| 37 |  .W !!,"This patient does not have an active billing clock!"
 | 
|---|
| 38 |  .S DIR(0)="Y",DIR("A")="Is it okay to add a new billing clock for this patient"
 | 
|---|
| 39 |  .D ^DIR K DIR,DIRUT,DUOUT,DTOUT
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  D SITE^IBAUTL I 'IBSITE S J=1 G ERR
 | 
|---|
| 42 |  S I=$P($S($D(^IBE(351,0)):^(0),1:"^^-1"),"^",3)+1 I 'I S J=3 G ERR
 | 
|---|
| 43 |  K DD,DO,DIC,DR S DIC="^IBE(351,",DIC(0)="L",DLAYGO=351,DIC("DR")=".02////"_DFN_";11////"_DUZ_";12////"_IBDT
 | 
|---|
| 44 |  F I=I:1 I I>0,'$D(^IBE(351,I)) L +^IBE(351,I):2 I $T,'$D(^IBE(351,I)) S DINUM=I,X=+IBSITE_I D FILE^DICN K DIC,DR S IBCL=+Y Q:+Y>0
 | 
|---|
| 45 |  I IBSELECT'="ADD" S $P(^IBE(351,IBCL,0),"^",2,10)=IBDATA,DIK="^IBE(351,",DA=IBCL D IX1^DIK K DIK
 | 
|---|
| 46 |  S DIE="^IBE(351,",DA=IBCL,DR=IBDR D ^DIE K DA,DIE,DR
 | 
|---|
| 47 |  L -^IBE(351,IBCL)
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ; - if the updated clock was cancelled, with no other changes made,
 | 
|---|
| 50 |  ; - move the update reason over to the old clock and cancel the new one.
 | 
|---|
| 51 |  I IBSELECT'="ADD" D
 | 
|---|
| 52 |  .I $L(^IBE(351,+$G(IBIEN),0),"^")=9 S $P(^IBE(351,+$G(IBIEN),0),"^",10)=""
 | 
|---|
| 53 |  .I $L(^IBE(351,IBCL,0),"^")=9 S $P(^IBE(351,IBCL,0),"^",10)=""
 | 
|---|
| 54 |  .Q:$P(^IBE(351,+$G(IBIEN),0),"^",2,10)'=$P(^IBE(351,IBCL,0),"^",2,10)
 | 
|---|
| 55 |  .W !!,"Since you only cancelled the clock, I'll delete the new clock..."
 | 
|---|
| 56 |  .I $P(^IBE(351,IBCL,0),"^",11)]"" S $P(^IBE(351,+$G(IBIEN),0),"^",11)=$P(^IBE(351,IBCL,0),"^",11) W !,"(but I'll save the update reason)..."
 | 
|---|
| 57 |  .S DA=IBCL,DIK="^IBE(351," D ^DIK K DIK,DA
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  ; - if the user is adding a new clock, and there is no clock
 | 
|---|
| 60 |  ; - begin date or status, delete the clock.
 | 
|---|
| 61 |  I IBSELECT="ADD" S IBDATA=^IBE(351,IBCL,0) I '$P(IBDATA,"^",3)!'$P(IBDATA,"^",4) D
 | 
|---|
| 62 |  .W !!,"This new clock is incomplete!!  Deleting the clock from the system..."
 | 
|---|
| 63 |  .S DA=IBCL,DIK="^IBE(351," D ^DIK K DIK,DA
 | 
|---|
| 64 |  K IBCL
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 | ERR ; - display error messages
 | 
|---|
| 68 |  W !?5,$P($T(ERRMSG+J),";;",2)
 | 
|---|
| 69 | CLEANUP K IBCLDA,IBCLDAY,IBCLDT,IBMED,IBCLDOL,X,IBSELECT,DLAYGO,IBDT
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | ERRMSG ; - possible error messages
 | 
|---|
| 73 |  ;;No value returned from call to SITE^IBAUTL
 | 
|---|
| 74 |  ;;Record locked, try again later!
 | 
|---|
| 75 |  ;;Problem extracting last IFN from zeroth node of MEANS TEST BILLING CLOCK file
 | 
|---|
| 76 |  ;;Unable to add record to MEANS TEST BILLING CLOCK file
 | 
|---|
| 77 |  ;;Not a Means Test copay patient!
 | 
|---|