| 1 | PSOCPIB ;BHAM ISC/EJW - PHARMACY CO-PAY IB-INITIATED COPAY CHARGE ;  07/27/01 | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**71,137**;DEC 1997 | 
|---|
| 3 | ;External reference to IBARX supported by DBIA 125 | 
|---|
| 4 | ; files IB-initiated charges into original or refill node | 
|---|
| 5 | ; IB passes date/time^person initiating copay^Rx#^Fill#^Partial or full charge^IB transaction IEN from file #350 | 
|---|
| 6 | N PSODA,PSOCOMM,PSOREF,PREA,SAVEDUZ,PSORSN | 
|---|
| 7 | S PREA="I" | 
|---|
| 8 | S SAVEDUZ=DUZ | 
|---|
| 9 | S DUZ=$P(Y(1),"^",2) | 
|---|
| 10 | S PSODA=$P(Y(1),"^",3) | 
|---|
| 11 | I 'PSODA Q | 
|---|
| 12 | S PSOREF=$P(Y(1),"^",4) | 
|---|
| 13 | D CHKIB | 
|---|
| 14 | S PSOCOMM=$S($P(Y(1),"^",5)="F":"FULL CHARGE",1:"PARTIAL CHARGE") | 
|---|
| 15 | FILE ;         File IB number in ^PSRX | 
|---|
| 16 | S:PSOREF>0 ^PSRX(PSODA,1,PSOREF,"IB")=$P(Y(1),"^",6) ;  Filing in refill node | 
|---|
| 17 | I PSOREF>0,'$D(^PSRX(PSODA,"IB")) S ^PSRX(PSODA,"IB")="^^" ;  If refill "IB" exists, need "IB" entry on original fill node | 
|---|
| 18 | S:PSOREF=0 $P(^PSRX(PSODA,"IB"),"^",2)=$P(Y(1),"^",6) ;Filing in original fill (zero node) | 
|---|
| 19 | D ACTLOG^PSOCPA | 
|---|
| 20 | I $P($G(^PSRX(PSODA,"IB")),"^",1)="" D CANCEL ; IF Rx is 'no copay', send a cancel back to IB in 10 minutes for their IB-initiated charge | 
|---|
| 21 | S DUZ=SAVEDUZ | 
|---|
| 22 | Q | 
|---|
| 23 | ; | 
|---|
| 24 | CANCEL ; | 
|---|
| 25 | S ZTRTN="CANCHG^PSOCPIB" | 
|---|
| 26 | S ZTDESC="Call IB back to cancel charges" | 
|---|
| 27 | S PSORX=Y(1)_"^"_$G(PSOPAR7) | 
|---|
| 28 | S ZTSAVE("PSORX")="" | 
|---|
| 29 | S ZTDTH=$$HADD^XLFDT($H,0,0,10),ZTIO="" | 
|---|
| 30 | D ^%ZTLOAD | 
|---|
| 31 | Q | 
|---|
| 32 | ; | 
|---|
| 33 | CANCHG ; Cancel charges if IB initiates a charge for a 'no copay' Rx | 
|---|
| 34 | N PSODA,PSOCOMM,PSOREF,PREA,SAVEDUZ,X | 
|---|
| 35 | S PREA="C" | 
|---|
| 36 | S DUZ=$P(PSORX,"^",2) | 
|---|
| 37 | S PSODA=$P(PSORX,"^",3) | 
|---|
| 38 | S PSOREF=$P(PSORX,"^",4) | 
|---|
| 39 | S PSOPAR7=$P(PSORX,"^",7) | 
|---|
| 40 | S X=PSOPAR7_"^"_+$P(^PSRX(PSODA,0),"^",2)_"^^"_DUZ | 
|---|
| 41 | I PSOREF=0 D  I $O(X(""))="" Q | 
|---|
| 42 | . I $P($G(^PSRX(PSODA,"IB")),"^",2)>0 S X(PSODA)=$P(^PSRX(PSODA,"IB"),"^",2)_"^40" | 
|---|
| 43 | I PSOREF>0 D  I $O(X(""))="" Q | 
|---|
| 44 | . I $P($G(^PSRX(PSODA,1,PSOREF,"IB")),"^",1)>0 S X(PSODA)=$P(^PSRX(PSODA,1,PSOREF,"IB"),"^",1)_"^40" | 
|---|
| 45 | D CANCEL^IBARX | 
|---|
| 46 | I $D(Y(PSODA)),+$G(Y(PSODA))'=-1 D | 
|---|
| 47 | . S $P(^PSRX(PSODA,"IB"),"^",2)=+Y(PSODA),$P(^PSRX(PSODA,"IB"),"^",4)="" K Y(PSODA) | 
|---|
| 48 | . S PREA="C",PSOREF=0,PSOCOMM="AUTO-CANCEL IB-INITIATED CHARGE FOR 'NO COPAY' RX" D ACTLOG^PSOCPA | 
|---|
| 49 | F PSOREF=0:0 S PSOREF=$O(Y(PSOREF)) Q:PSOREF=""  Q:PSOREF>12  D | 
|---|
| 50 | . I +Y(PSOREF)'=-1,$D(^PSRX(PSODA,1,PSOREF)) S ^PSRX(PSODA,1,PSOREF,"IB")=+Y(PSOREF) | 
|---|
| 51 | . S PREA="C",PSOCOMM="AUTO-CANCEL IB-INITIATED CHARGE FOR 'NO COPAY' RX" D ACTLOG^PSOCPA | 
|---|
| 52 | Q | 
|---|
| 53 | ; | 
|---|
| 54 | CHKIB ; SEE IF IB NUMBER ALREADY EXISTS AND IS A BILL OR UPDATE NUMBER (NOT A CANCEL NUMBER) | 
|---|
| 55 | N PSOIB,PSOSTAT | 
|---|
| 56 | I PSOREF=0 S PSOIB=$P($G(^PSRX(PSODA,"IB")),"^",2) | 
|---|
| 57 | I PSOREF'=0 S PSOIB=$P($G(^PSRX(PSODA,1,PSOREF,"IB")),"^",1) | 
|---|
| 58 | I PSOIB'="" D STATUS | 
|---|
| 59 | Q | 
|---|
| 60 | ; | 
|---|
| 61 | STATUS ; | 
|---|
| 62 | S PSOSTAT=$$STATUS^IBARX(PSOIB) | 
|---|
| 63 | I PSOSTAT'=1,PSOSTAT'=3 Q | 
|---|
| 64 | S PSOCOMM="Copay charge(s) removed" | 
|---|
| 65 | D ACTLOG^PSOCPA | 
|---|
| 66 | Q | 
|---|
| 67 | ; | 
|---|