| 1 | IBECUS3 ;RLM/DVAMC - CANCEL TRICARE PHARMACY TRANSACTION ; 14-AUG-96
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**52,89,240**;21-MAR-94
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN ; Transmit a cancellation transaction.
 | 
|---|
| 5 |  ;  Input:    IBKEY  --  1 ; 2, where
 | 
|---|
| 6 |  ;                           1 = Pointer to the prescription in file #52
 | 
|---|
| 7 |  ;                           2 = Pointer to the refill in file #52.1, or
 | 
|---|
| 8 |  ;                               0 for the original fill
 | 
|---|
| 9 |  ;           IBKEYD  --  1 ^ 2 ^ 3 ^ 4, where
 | 
|---|
| 10 |  ;                         1 = Rx label printing device
 | 
|---|
| 11 |  ;                         2 = Pointer to the Pharmacy in file #59
 | 
|---|
| 12 |  ;                         3 = Pointer to the Pharmacy user in file #200
 | 
|---|
| 13 |  ;                         4 = Pointer to the billing transaction
 | 
|---|
| 14 |  ;                             in file #351.5 (cancellations only)
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ; - bleed off queue
 | 
|---|
| 17 |  F  R *IBI:0 Q:IBI=-1
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ; - get rx data; make sure there is an NDC
 | 
|---|
| 20 |  K IBDRX,IBERR
 | 
|---|
| 21 |  I $$TRANS^PSOCPTRI(+IBKEY,+$P(IBKEY,";",2),.IBDRX)<0 S IBERR=1 G ENQ
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  ; - must be a billing transaction for the cancellation
 | 
|---|
| 24 |  S IBCHTRN=+$P(IBKEYD,"^",4)
 | 
|---|
| 25 |  S IBCHTRND=$G(^IBA(351.5,IBCHTRN,0))
 | 
|---|
| 26 |  I 'IBCHTRND S IBERR=8 G ENQ
 | 
|---|
| 27 |  S DFN=+$P(IBCHTRND,"^",2)
 | 
|---|
| 28 |  I 'DFN S IBERR=4 G ENQ
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ; - is patient covered by TRICARE?
 | 
|---|
| 31 |  S IBCDFN=$$CUS^IBACUS(DFN,DT)
 | 
|---|
| 32 |  I 'IBCDFN S IBERR=2 G ENQ
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ; - get the BIN Number for the insurance company
 | 
|---|
| 35 |  S IBCDFND=$G(^DPT(DFN,.312,IBCDFN,0))
 | 
|---|
| 36 |  S IBBIN=$P($G(^DIC(36,+IBCDFND,3)),"^",3)
 | 
|---|
| 37 |  I $L(IBBIN)'=6 S IBERR=5 G ENQ
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  ; - build transmission:
 | 
|---|
| 40 |  ;        o pharmacy division
 | 
|---|
| 41 |  ;        o FI identifier (bin number)
 | 
|---|
| 42 |  ;        o commercial software package version (32)
 | 
|---|
| 43 |  ;        o cancellation transaction code  (11)
 | 
|---|
| 44 |  ;        o control # (currently 10 spaces)
 | 
|---|
| 45 |  ;        o pharmacy # (currently 12 spaces)
 | 
|---|
| 46 |  ;        o rx fill date
 | 
|---|
| 47 |  ;        o prescription number
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ;        (pharmacy number [abp] ??)
 | 
|---|
| 50 |  ;        S JADNUM=$S($P(JADPSRX(2),"^",9)=1:7745017,1:7745029),JADLEN=12 D LJUST^JADNC S JADNABP=JADNUM
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  S IBLINE(1)=$$FILL^IBECUS2(IBDRX("DIV"),2)_IBBIN_"3211"_$J("",10)_$J("",12)
 | 
|---|
| 53 |  S IBLINE(1)=IBLINE(1)_$$DATE^IBECUS2(IBDRX("FDT"))
 | 
|---|
| 54 |  S IBLINE(1)=IBLINE(1)_$$FILL^IBECUS2(IBDRX("RX#"),7)
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  ; - transmit
 | 
|---|
| 57 |  W IBLINE(1),!
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  ; - receive
 | 
|---|
| 60 |  R IBRESP(1)#100:120 I '$L(IBRESP(1)) S IBERR=6 G ENQ
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ; - handle errors
 | 
|---|
| 63 |  I $E(IBRESP(1),1,3) D ERROR^IBECUS22 G ENQ
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  ; - handle rejects
 | 
|---|
| 66 |  S IBRESP(1)=$E(IBRESP(1),3,999)
 | 
|---|
| 67 |  I $E(IBRESP(1),5)="R" D REJECT G ENQ
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  ; - update cancellation auth number and user
 | 
|---|
| 70 |  S ^IBA(351.5,IBCHTRN,6)=$E(IBRESP(1),6,19)_"^"_+$P(IBKEYD,"^",3)
 | 
|---|
| 71 |  K ^IBA(351.5,"APOST",IBKEY)
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  ; - Queue task to cancel charges
 | 
|---|
| 74 |  D TASK^IBECUS2("RXCAN;Rx Cancellation")
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 | ENQ I $G(IBERR) D ERROR^IBECUS22
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | REJECT ; Send alert for a reject.
 | 
|---|
| 81 |  S IBREJ=""
 | 
|---|
| 82 |  F IBRJ=8:2 S IBRJA=$E(IBRESP(1),IBRJ,IBRJ+1) Q:IBRJA="  "!(IBRJA="")  D
 | 
|---|
| 83 |  .S IBERRP=$$ERRIEN^IBECUS22("UNIVERSAL",IBRJA)
 | 
|---|
| 84 |  .I IBERRP S IBREJ=IBREJ_","_IBERRP
 | 
|---|
| 85 |  S IBREJ=$E(IBREJ,2,999)
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  S XQA("G.IB CHAMP RX REJ")="",XQA(+$P(IBKEYD,"^",3))=""
 | 
|---|
| 88 |  S XQAMSG="Reversal for prescription #"_IBDRX("RX#")_" rejected for reason #"_IBREJ
 | 
|---|
| 89 |  S XQADATA=IBDRX("RX#")_"^"_IBREJ_"^"_DFN,XQAROU="DISP^IBECUS22"
 | 
|---|
| 90 |  D SETUP^XQALERT
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 |  ; - update transaction file with reject codes
 | 
|---|
| 93 |  S $P(^IBA(351.5,IBCHTRN,6),"^",3)=IBREJ
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  K IBERRP,IBREJ,IBRJ,IBRJA
 | 
|---|
| 96 |  Q
 | 
|---|