| [613] | 1 | IBAKAT ;ALB/CPM - CANCEL COPAY CHARGES FOR KATRINA VETS ; 05-MAR-06 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**340**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | CAN() ; Cancel copayments for Katrina vets | 
|---|
|  | 7 | N IBCRES,IBBEG,IBEND,IBTOT,IBHIT,IBBUCK,IBD,IBN,IBND,IBCHG,IBIL | 
|---|
|  | 8 | N DFN,DIE,DA,DR,IBND1,IBH,IBDEC,IBTRAN | 
|---|
|  | 9 | S IBCRES=$O(^IBE(350.3,"B","KATRINA AFFECTED VETERAN",0)),IBTOT="" | 
|---|
|  | 10 | I 'IBCRES G CANQ | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | S IBBEG=3050829,IBEND=3060228,IBTOT="0^0^0" | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | S DFN=0 F  S DFN=$O(^IB("APTDT",DFN)) Q:'DFN   D | 
|---|
|  | 15 | .; | 
|---|
|  | 16 | .; - quit if vet should not have charges cancelled | 
|---|
|  | 17 | .Q:'$$CHK^RCKATP(DFN)  S (IBHIT,IBBUCK)=0 K IBH | 
|---|
|  | 18 | .; | 
|---|
|  | 19 | .; - examine all charges billed from 8/29/05 through 2/28/06 | 
|---|
|  | 20 | .S IBD=3050828.9 F  S IBD=$O(^IB("APTDT",DFN,IBD)) Q:'IBD  D | 
|---|
|  | 21 | ..S IBN=0 F  S IBN=$O(^IB("APTDT",DFN,IBD,IBN)) Q:'IBN  D | 
|---|
|  | 22 | ...; | 
|---|
|  | 23 | ...S IBND=$G(^IB(IBN,0)),IBND1=$G(^(1)) | 
|---|
|  | 24 | ...; | 
|---|
|  | 25 | ...; - skip event records | 
|---|
|  | 26 | ...Q:$P(IBND,"^",8)["ADMISSION" | 
|---|
|  | 27 | ...; | 
|---|
|  | 28 | ...; - skip if this is not the last entry for the parent | 
|---|
|  | 29 | ...Q:'$P(IBND,"^",9) | 
|---|
|  | 30 | ...Q:IBN'=$$LAST^IBECEAU($P(IBND,"^",9)) | 
|---|
|  | 31 | ...; | 
|---|
|  | 32 | ...; - skip if entry is cancelled | 
|---|
|  | 33 | ...Q:$P($G(^IBE(350.1,+$P(IBND,"^",3),0)),"^",5)=2 | 
|---|
|  | 34 | ...I IBN=$P(IBND,"^",9),($P(IBND,"^",5)=10!($P(IBND,"^",10))) Q | 
|---|
|  | 35 | ...; | 
|---|
|  | 36 | ...; - skip if rx copay is after 2/28/06 | 
|---|
|  | 37 | ...I '$P(IBND,"^",14),$E(IBD,1,7)>IBEND Q | 
|---|
|  | 38 | ...; | 
|---|
|  | 39 | ...; - skip if medical care copay is out of range | 
|---|
|  | 40 | ...I $P(IBND,"^",14),($P(IBND,"^",15)<IBBEG!($P(IBND,"^",14)>IBEND)) Q | 
|---|
|  | 41 | ...; | 
|---|
|  | 42 | ...S IBCHG=+$P(IBND,"^",7),IBIL=$P(IBND,"^",11),IBTRAN=$P(IBND,"^",12) | 
|---|
|  | 43 | ...; | 
|---|
|  | 44 | ...; - if charge is not passed to AR, cancel it in IB | 
|---|
|  | 45 | ...I '$P($G(^IBE(350.21,+$P(IBND,"^",5),0)),"^",4) D  Q | 
|---|
|  | 46 | ....S $P(IBTOT,"^",3)=$P(IBTOT,"^",3)+IBCHG | 
|---|
|  | 47 | ....S $P(IBTOT,"^",2)=$P(IBTOT,"^",2)+IBCHG,IBHIT=1 | 
|---|
|  | 48 | ....S DIE="^IB(",DA=IBN,DR=".05////10;.1////"_IBCRES D ^DIE | 
|---|
|  | 49 | ...; | 
|---|
|  | 50 | ...; - cancel the charge in AR, to the extent possible, if it | 
|---|
|  | 51 | ...;   were never on hold in IB | 
|---|
|  | 52 | ...I '$P(IBND1,"^",6) D  Q | 
|---|
|  | 53 | ....S $P(IBTOT,"^",2)=$P(IBTOT,"^",2)+IBCHG,IBHIT=1 | 
|---|
|  | 54 | ....S IBBUCK=IBBUCK+$$DEC^RCKATP(IBIL,IBCHG) | 
|---|
|  | 55 | ...; | 
|---|
|  | 56 | ...; - for charges once on hold, see if there is "credit" in AR | 
|---|
|  | 57 | ...;   that would preclude our need to cancel the charge.  The | 
|---|
|  | 58 | ...;   amount to decrease the charge is in IBDEC. | 
|---|
|  | 59 | ...S IBDEC=IBCHG D  Q:'IBDEC | 
|---|
|  | 60 | ....N IBAR,IBB | 
|---|
|  | 61 | ....; | 
|---|
|  | 62 | ....; - have AR update the credit amount | 
|---|
|  | 63 | ....S IBAR=$$TPP^RCKATP(IBTRAN,.IBH) | 
|---|
|  | 64 | ....; | 
|---|
|  | 65 | ....; - if the receivable in file 430 couldn't be defined, quit | 
|---|
|  | 66 | ....;   and decrease the entire charge amount | 
|---|
|  | 67 | ....S IBB=$P(IBAR,"^",2) I 'IBB Q | 
|---|
|  | 68 | ....; | 
|---|
|  | 69 | ....; - initialize the credit amount for the bill | 
|---|
|  | 70 | ....I '$G(IBH(IBB)) S IBH(IBB)=0 | 
|---|
|  | 71 | ....; | 
|---|
|  | 72 | ....; - increment the credit amount by what is returned from AR | 
|---|
|  | 73 | ....S IBH(IBB)=IBH(IBB)+IBAR | 
|---|
|  | 74 | ....; | 
|---|
|  | 75 | ....; - if there is no additional credit, quit and decrease the | 
|---|
|  | 76 | ....;   entire charge amount | 
|---|
|  | 77 | ....I 'IBH(IBB) Q | 
|---|
|  | 78 | ....; | 
|---|
|  | 79 | ....; - if the credit amount is greater than the charge, set the | 
|---|
|  | 80 | ....;   decrease amount to zero; otherwise, set it to the charge | 
|---|
|  | 81 | ....;   amount minus the available credit | 
|---|
|  | 82 | ....S IBDEC=$S(IBH(IBB)>IBCHG:0,1:IBCHG-IBH(IBB)) | 
|---|
|  | 83 | ....; | 
|---|
|  | 84 | ....; - if the credit amount is less than the charge, set it to | 
|---|
|  | 85 | ....;   zero; otherwise, offset it by the charge amount | 
|---|
|  | 86 | ....S IBH(IBB)=$S(IBH(IBB)<IBCHG:0,1:IBH(IBB)-IBCHG) | 
|---|
|  | 87 | ...; | 
|---|
|  | 88 | ...; | 
|---|
|  | 89 | ...; - decrease account by the adjusted amount IBDEC | 
|---|
|  | 90 | ...S $P(IBTOT,"^",2)=$P(IBTOT,"^",2)+IBDEC,IBHIT=1 | 
|---|
|  | 91 | ...S IBBUCK=IBBUCK+$$DEC^RCKATP(IBIL,IBDEC) | 
|---|
|  | 92 | .; | 
|---|
|  | 93 | .; | 
|---|
|  | 94 | .; - flag each patient in AR, even if no charges are found | 
|---|
|  | 95 | .D FLAG^RCKATP(DFN) | 
|---|
|  | 96 | .; | 
|---|
|  | 97 | .; - update patient counter | 
|---|
|  | 98 | .I IBHIT S $P(IBTOT,"^")=$P(IBTOT,"^")+1 | 
|---|
|  | 99 | .; | 
|---|
|  | 100 | .; - if there's anything in the bucket, further reduce account | 
|---|
|  | 101 | .I IBBUCK D ADJ^RCKATP(DFN,IBBUCK) | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | ; | 
|---|
|  | 104 | CANQ Q IBTOT | 
|---|
|  | 105 | ; | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | CANRES ; Patch *340 post-init entry point | 
|---|
|  | 109 | D BMES^XPDUTL(">>> Adding new cancellation reason into file #350.3...") | 
|---|
|  | 110 | S IBCR="KATRINA AFFECTED VETERAN^KAT^3" | 
|---|
|  | 111 | I $O(^IBE(350.3,"B",$P(IBCR,"^"),0)) D  G CANRESQ | 
|---|
|  | 112 | .D MES^XPDUTL(" >> '"_$P(IBCR,"^")_"' is already on file.") | 
|---|
|  | 113 | S DIC="^IBE(350.3,",DIC(0)="L",DLAYGO=350.3,X=$P(IBCR,"^") | 
|---|
|  | 114 | K DD,DO D FILE^DICN K DD,DO | 
|---|
|  | 115 | I Y<0 D MES^XPDUTL(" >> Unable to file this entry!") G CANRESQ | 
|---|
|  | 116 | S DIE=DIC,DA=+Y,DR=".02///"_$P(IBCR,"^",2)_";.03///"_$P(IBCR,"^",3) | 
|---|
|  | 117 | D ^DIE,MES^XPDUTL(" >> '"_$P(IBCR,"^")_"' has been filed.") | 
|---|
|  | 118 | CANRESQ K DA,DIC,DIE,DR,DLAYGO,IBCR,X,Y | 
|---|
|  | 119 | Q | 
|---|