| 1 | IBECEAU4 ;ALB/CPM - Cancel/Edit/Add... Cancel Utilities ; 23-APR-93 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**52,167,183,341**;21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | CANCH(IBN,IBCRES,IBIND,IBCV) ; Cancel last transaction for a specific charge. | 
|---|
| 6 | ;  Input:    IBN   --  Charge to be cancelled | 
|---|
| 7 | ;          IBCRES  --  Cancellation reason | 
|---|
| 8 | ;           IBIND  --  1=>set MT bulletin flags; 0=>don't set flags | 
|---|
| 9 | ;            IBCV  --  1=>use the CHAMPVA error bulletin | 
|---|
| 10 | N IBY,IBHOLDN,IBND,IBPARNT,IBCANC,IBH,IBCANTR,IBXA,IBATYP,IBSEQNO,IBIL,IBUNIT,IBCHG | 
|---|
| 11 | S (IBN,IBHOLDN)=$$LAST^IBECEAU($P(^IB(IBN,0),"^",9)),IBY=1 | 
|---|
| 12 | D CED(IBN) I IBCANTR!(IBY<0) G CANCHQ | 
|---|
| 13 | D CANC(IBN,IBCRES,1) I IBY<0 G CANCHQ | 
|---|
| 14 | I $G(IBIND) S IBARR(DT,IBHOLDN)="",(IBCANCEL,IBFND)=1 | 
|---|
| 15 | CANCHQ I IBY<1 D @$S($G(IBCV):"ERRMSG^IBACVA2(0,1)",1:"^IBAERR1") | 
|---|
| 16 | Q | 
|---|
| 17 | ; | 
|---|
| 18 | CANC(IBCN,IBCRES,IBINC) ; Cancel a charge, after passing all edits | 
|---|
| 19 | ; Input:    IBCN  --  Internal entry # of IB Action to cancel | 
|---|
| 20 | ;          IBCRES --  Cancellation reason | 
|---|
| 21 | ;           IBINC --  Try to cancel an incomplete charge? [optional] | 
|---|
| 22 | N DA,DIK,IBCAN,IBSTOPDA,IBGMTR | 
|---|
| 23 | S IBCAN=$G(^IB(IBCN,0)) | 
|---|
| 24 | ; | 
|---|
| 25 | ; - handle incomplete transactions | 
|---|
| 26 | I $G(IBINC) S:'$D(IBH) IBH='$P($G(^IBE(350.21,+$P(IBND,"^",5),0)),"^",4) I IBH D UPSTAT(IBCN,1) G CANCQ | 
|---|
| 27 | ; | 
|---|
| 28 | ; - handle regular transactions | 
|---|
| 29 | S IBATYP=$P($G(^IBE(350.1,+$P(IBCAN,"^",3),0)),"^",6) I IBATYP="" S IBY="-1^IB022" G CANCQ | 
|---|
| 30 | S IBSEQNO=$P($G(^IBE(350.1,IBATYP,0)),"^",5) I 'IBSEQNO S IBY="-1^IB023" G CANCQ | 
|---|
| 31 | W:$G(IBJOB)=4 !!,"Building the cancellation transaction... " | 
|---|
| 32 | D ADD^IBAUTL I Y<1 S IBY=Y G CANCQ | 
|---|
| 33 | S $P(IBCAN,"^",3)=IBATYP,$P(IBCAN,"^",5)=1,$P(IBCAN,"^",10)=IBCRES,$P(IBCAN,"^",12)="" | 
|---|
| 34 | ;  if there is a clinic stop, move it over | 
|---|
| 35 | S IBSTOPDA=$P(IBCAN,"^",20) | 
|---|
| 36 | S IBGMTR=$P(IBCAN,"^",21) ; 'GMT RELATED' flag | 
|---|
| 37 | S:IBXA'=5 IBCAN=$P(IBCAN,"^",1,16) | 
|---|
| 38 | S IBCAN=$P(IBCAN,"^",1,17) | 
|---|
| 39 | I IBSTOPDA S $P(IBCAN,"^",20)=IBSTOPDA | 
|---|
| 40 | S $P(^IB(IBN,0),"^",2,20)=$P(IBCAN,"^",2,20) | 
|---|
| 41 | I IBGMTR S $P(^IB(IBN,0),"^",21)=IBGMTR ; Set the 'GMT RELATED' flag | 
|---|
| 42 | ; DUZ may be null if this code is called by a process started by an HL7 multi-threaded listener | 
|---|
| 43 | ; if this condition occurs the approved fix is to use the Postmaster IEN.  2/27/06, IB*2.0*341 | 
|---|
| 44 | S $P(^IB(IBN,1),"^")=$S(DUZ:DUZ,1:.5) ; | 
|---|
| 45 | S DA=IBN,DIK="^IB(" D IX1^DIK | 
|---|
| 46 | W:$G(IBJOB)=4 " .. " D PASS | 
|---|
| 47 | ; | 
|---|
| 48 | ; - cancel original charge (if it was an updated transaction) | 
|---|
| 49 | I $D(^IB(IBCN,0)),$P(^(0),"^",5)'=10 D UPSTAT(IBCN) | 
|---|
| 50 | CANCQ Q | 
|---|
| 51 | ; | 
|---|
| 52 | CED(IBN) ; Edits required to cancel a charge. | 
|---|
| 53 | ; Input:   IBN  --   Internal entry # of charge to be cancelled | 
|---|
| 54 | S IBND=$G(^IB(IBN,0)) I 'IBND S IBY="-1^IB021" G CEDQ | 
|---|
| 55 | S IBPARNT=+$P(IBND,"^",9) I '$D(^IB(IBPARNT,0)) S IBY="-1^IB027" G CEDQ | 
|---|
| 56 | I $$LAST^IBECEAU(IBPARNT)'=IBN S IBY="-1^^You can only cancel the last transaction for an original charge." G CEDQ | 
|---|
| 57 | S IBCANC=$G(^IBE(350.1,+$P(IBND,"^",3),0)) | 
|---|
| 58 | S IBH='$P($G(^IBE(350.21,+$P(IBND,"^",5),0)),"^",4),IBCANTR=$P(IBCANC,"^",5)=2 | 
|---|
| 59 | S IBXA=$P(IBCANC,"^",11),IBATYP=$P(IBCANC,"^",6) | 
|---|
| 60 | I '$D(^IBE(350.1,+IBATYP,0)) S IBY="-1^IB022" G CEDQ | 
|---|
| 61 | S IBSEQNO=$P(^IBE(350.1,+IBATYP,0),"^",5) I 'IBSEQNO S IBY="-1^IB023" G CEDQ | 
|---|
| 62 | S IBIL=$P(IBND,"^",11),IBUNIT=+$P(IBND,"^",6),IBCHG=+$P(IBND,"^",7),IBFR=$P(IBND,"^",14) | 
|---|
| 63 | I IBUNIT<1 S IBY="-1^IB025" G CEDQ | 
|---|
| 64 | I 'IBH,'IBCHG S IBY="-1^^There is no charge amount associated with this action." G CEDQ | 
|---|
| 65 | I $G(IBJOB)'=4,'IBH,IBIL="" S IBY="-1^IB024" | 
|---|
| 66 | CEDQ Q | 
|---|
| 67 | ; | 
|---|
| 68 | UPSTAT(IBCN,IB) ; Update the status, cancellation reason of incomplete charges. | 
|---|
| 69 | N DIE,DA,DR | 
|---|
| 70 | W:$G(IBJOB)=4&$G(IB) !,"Updating the status of the charge to 'cancelled'... " | 
|---|
| 71 | S DIE="^IB(",DA=IBCN,DR=".05////10;.1////"_IBCRES | 
|---|
| 72 | D ^DIE W:$G(IBJOB)=4&$G(IB) "done." | 
|---|
| 73 | Q | 
|---|
| 74 | ; | 
|---|
| 75 | PASS ; Pass the action to Accounts Receivable. | 
|---|
| 76 | N IBSERV | 
|---|
| 77 | S IBNOS=IBN D ^IBR S IBY=Y I Y>0,$G(IBJOB)=4 W "done." | 
|---|
| 78 | Q | 
|---|
| 79 | ; | 
|---|
| 80 | ERR ; Error Processing. | 
|---|
| 81 | Q:IBY>0 | 
|---|
| 82 | I $P(IBY,"^",2)]"" W !,$P($G(^IBE(350.8,+$O(^IBE(350.8,"AC",$P($P(IBY,"^",2),";"),0)),0)),"^",2) Q | 
|---|
| 83 | I $P(IBY,"^",3)]"" W !,$P(IBY,"^",3) | 
|---|
| 84 | Q | 
|---|
| 85 | ; | 
|---|
| 86 | PROC(EVT) ; Okay to proceed with Add, Edit, or Cancel? | 
|---|
| 87 | N DIR,DIRUT,DUOUT,DTOUT,X,Y | 
|---|
| 88 | W ! S DIR(0)="Y",DIR("A")="Okay to "_EVT_" this charge",DIR("?")="Enter 'Y' or 'YES' to "_EVT_" this charge, or 'N', 'NO', or '^' to quit." | 
|---|
| 89 | D ^DIR K DIR I 'Y!($D(DIRUT))!($D(DUOUT)) W !,"This charge will not be ",$S(EVT="cancel":"cancelled",1:EVT_"ed"),"." S IBY=-1 G PROCQ | 
|---|
| 90 | S IBCOMMIT=1 | 
|---|
| 91 | PROCQ Q | 
|---|