| [613] | 1 | IBARX1 ;ALB/AAS - INTEGRATED BILLING, PHARMACY COPAY INTERFACE (CONT.) ;21-FEB-91 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**34,101,150,158,156,234,247**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142 ;This routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ;  - process 1 rx entry and accumulate totals | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | RX N IBAM,IBNOCH | 
|---|
|  | 8 | ;if Combat Vet send alert e-mail to mailgroup "IB COMBAT VET RX COPAY" | 
|---|
|  | 9 | D | 
|---|
|  | 10 | . N Y D NOW^%DTC S Y=%\1 | 
|---|
|  | 11 | . D RXALRT^IBACV(DFN,Y,+$P($P($G(IBSAVX(1)),"^",1),":",2)) | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | I $P(IBX,"^")'?1.N1":"1.N.ANP S Y="-1^IB012" G RXQ | 
|---|
|  | 14 | I $P(IBX,"^",2)<1 S Y="-1^IB013" G RXQ | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | D BDESC | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | S DA=IBATYP D COST^IBAUTL | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | ; compute amount above cap | 
|---|
|  | 21 | D NEW^IBARXMC($P(IBX,"^",2),X1,DT,.IBCHRG,.IBNOCH) | 
|---|
|  | 22 | ; | 
|---|
|  | 23 | S IBTCH=$P(IBX,"^",2)*X1 | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | ; add to 354.71 | 
|---|
|  | 26 | S IBAM=$$ADD^IBARXMN(DFN,"^^"_$S($G(IBEFDT):IBEFDT,1:DT)_"^^P^"_$P(IBX,"^")_"^"_$P(IBX,"^",2)_"^"_IBTCH_"^"_IBDESC_"^"_$S($G(IBAMP):IBAMP,1:"")_"^"_IBCHRG_"^"_IBNOCH_"^"_(+$P($$SITE^IBARXMU,"^",3)),IBATYP) I IBAM<1 S Y="-1^IB316" G RXQ | 
|---|
|  | 27 | ; | 
|---|
|  | 28 | ; setup new pieces (4, 5, 6, and 7), quit if above cap | 
|---|
|  | 29 | S $P(IBSAVY(IBJ),"^",4,7)=$S(IBNOCH:1,1:0)_"^"_$S(IBNOCH&(IBCHRG):"P",IBCHRG:"F",1:"")_"^"_(+$G(IBEXMP))_"^"_IBAM G:'IBCHRG RXQ | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | S IBTOTL=IBTOTL+IBCHRG | 
|---|
|  | 32 | S IBWHER=2 | 
|---|
|  | 33 | D ADD^IBAUTL | 
|---|
|  | 34 | I +Y<1 G RXQ | 
|---|
|  | 35 | S IBPARNT=$S($D(IBPARNT):IBPARNT,1:IBN) | 
|---|
|  | 36 | S $P(^IB(IBN,1),"^",1)=IBDUZ,$P(^IB(IBN,0),"^",2,13)=DFN_"^"_IBATYP_"^"_$P(IBX,"^")_"^2^"_$P(IBX,"^",2)_"^"_IBCHRG_"^"_IBDESC_"^"_IBPARNT_"^^"_IBIL_"^"_IBTRAN_"^"_IBFAC,$P(^(0),"^",19)=IBAM | 
|---|
|  | 37 | K IBPARNT,^IB("AC",1,IBN) ;S ^IB("AC",2,IBN)="" | 
|---|
|  | 38 | D INDEX | 
|---|
|  | 39 | S $P(IBSAVY(IBJ),"^",1,3)=IBN_"^"_IBCHRG_"^"_IBIL | 
|---|
|  | 40 | S:'$D(IBNOS) IBNOS="" S IBNOS=IBN_"^"_IBNOS | 
|---|
|  | 41 | RXQ Q | 
|---|
|  | 42 | ; | 
|---|
|  | 43 | CANRX ;  - ibx = ibn for parent entry | 
|---|
|  | 44 | ;  - ibn = new cancellation entry | 
|---|
|  | 45 | N IBAM,IBAMY | 
|---|
|  | 46 | S IBY(IBJ)=1 | 
|---|
|  | 47 | I '$D(^IBE(350.3,+$P(IBX,"^",2),0)) S (Y,IBY(IBJ))="-1^IB020" G CANRXQ | 
|---|
|  | 48 | I '$D(^IB(+IBX,0)) S (Y,IBY(IBJ))="-1^IB021" G CANRXQ | 
|---|
|  | 49 | S IBND=^IB(+IBX,0) | 
|---|
|  | 50 | S IBCRES=$P(IBX,"^",2) | 
|---|
|  | 51 | ;  -find most recent entry for parent ibx | 
|---|
|  | 52 | ;  -if status isn't an update or new, error already cancelled? | 
|---|
|  | 53 | D LAST I IBLAST'=IBPARNT,$D(^IB(IBLAST,0)),$P(^IBE(350.1,$P(^IB(IBLAST,0),"^",3),0),"^",5)=2 S (Y,IBY(IBJ))="-1^IB026^ Ref. No: "_+^IB(+IBLAST,0) G CANRXQ ;already cancelled | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | ; cancel 354.71 | 
|---|
|  | 56 | S IBAM=$$CANCEL^IBARXMN(DFN,$P(IBND,"^",19),.IBAMY,IBCRES) I $G(IBAMY)<0 S (Y,IBY(IBJ))=IBAMY G CANRXQ | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | I $P(IBND,"^",5)=8 D  QUIT  ;Cancel a charge with a status of HOLD | 
|---|
|  | 59 | . N DIE,DA,DR | 
|---|
|  | 60 | . S DIE="^IB(",DA=+IBX,DR=".05////10;.1////"_IBCRES | 
|---|
|  | 61 | . DO ^DIE | 
|---|
|  | 62 | . S Y=1,IBY(IBJ)=1,Y(IBJ)=+IBX | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | S IBPARNT=$P(IBND,"^",9) I '$D(^IB(IBPARNT,0)) S (Y,IBY(IBJ))="-1^IB027" G CANRXQ | 
|---|
|  | 65 | S IBATYP=$P(^IBE(350.1,$P(IBND,"^",3),0),"^",6) ;cancellation action type for parent | 
|---|
|  | 66 | I '$D(^IBE(350.1,+IBATYP,0)) S (Y,IBY(IBJ))="-1^IB022" G CANRXQ | 
|---|
|  | 67 | S IBSEQNO=$P(^IBE(350.1,+IBATYP,0),"^",5) I 'IBSEQNO S (Y,IBY(IBJ))="-1^IB023" G CANRXQ | 
|---|
|  | 68 | S IBIL=$P(IBND,"^",11) I IBIL="" S (Y,IBY(IBJ))="-1^IB024" G CANRXQ | 
|---|
|  | 69 | S IBUNIT=$S($D(^IB(+IBLAST,0)):$P(^(0),"^",6),1:$P(IBND,"^",6)) I IBUNIT<1 S (Y,IBY(IBJ))="-1^IB025" G CANRXQ | 
|---|
|  | 70 | S IBCHRG=$S($D(^IB(+IBLAST,0)):$P(^(0),"^",7),1:$P(IBND,"^",7)) I IBCHRG<1 S (Y,IBY(IBJ))="-1^IB025" G CANRXQ | 
|---|
|  | 71 | S IBTOTL=IBTOTL+IBCHRG | 
|---|
|  | 72 | S IBWHER=2 | 
|---|
|  | 73 | D ADD^IBAUTL I +Y<1 S IBY(IBJ)=Y G CANRXQ | 
|---|
|  | 74 | S $P(^IB(IBN,1),"^",1)=IBDUZ,$P(^IB(IBN,0),"^",2,13)=DFN_"^"_IBATYP_"^"_$P(IBND,"^",4)_"^2^"_IBUNIT_"^"_IBCHRG_"^"_$P(IBND,"^",8)_"^"_IBPARNT_"^"_IBCRES_"^"_IBIL_"^^"_IBFAC S:IBAM $P(^(0),"^",19)=IBAM | 
|---|
|  | 75 | K ^IB("AC",1,IBN) ;S ^IB("AC",2,IBN)="" | 
|---|
|  | 76 | D INDEX | 
|---|
|  | 77 | S Y(IBJ)=IBN_"^"_IBCHRG_"^"_IBIL | 
|---|
|  | 78 | S IBNOS=IBN | 
|---|
|  | 79 | CANRXQ Q | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | BDESC ;  -return brief description | 
|---|
|  | 82 | N X,Y S IBDESC="",X=$P(IBX,"^") | 
|---|
|  | 83 | I $D(^IBE(350.1,IBATYP,20)) X ^(20) S IBDESC=X | 
|---|
|  | 84 | Q | 
|---|
|  | 85 | LAST ;find last entry | 
|---|
|  | 86 | S IBLAST="" | 
|---|
|  | 87 | S IBPARNT=$P(^IB(+IBX,0),"^",9) I 'IBPARNT S IBPARNT=+IBX | 
|---|
|  | 88 | S IBLDT=$O(^IB("APDT",IBPARNT,"")) I +IBLDT F IBL=0:0 S IBL=$O(^IB("APDT",IBPARNT,IBLDT,IBL)) Q:'IBL  S IBLAST=IBL | 
|---|
|  | 89 | I IBLAST="" S IBLAST=IBPARNT | 
|---|
|  | 90 | Q | 
|---|
|  | 91 | ; | 
|---|
|  | 92 | INDEX ;cross-reference entry | 
|---|
|  | 93 | N X,Y | 
|---|
|  | 94 | S DA=IBN,DIK="^IB(" D IX^DIK | 
|---|
|  | 95 | K DIK Q | 
|---|
|  | 96 | ; | 
|---|
|  | 97 | SERV(Y) ; -- Service check for Pharmacy | 
|---|
|  | 98 | ;    called by the screen in the input transform for the IB SERVICE/SECTION | 
|---|
|  | 99 | ;    field of the PHARMACY SITE file. | 
|---|
|  | 100 | ;    input = Y internal entry number in service section file | 
|---|
|  | 101 | ;    output = 1 if okay to use (service matches) or 0 if not okay | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | ; -- screen logic for field 1003 in file 59 should be | 
|---|
|  | 104 | ;    S DIC("S")="I $$SERV^IBARX1(+Y)" | 
|---|
|  | 105 | ; | 
|---|
|  | 106 | Q $S('$G(Y):0,1:$D(^IBE(350.1,"ANEW",Y,1,1))&$D(^IBE(350.1,"ANEW",Y,1,2))) | 
|---|