| 1 | PSODISPS ;BIR/SAB-CONTINUATION OF RELEASE FUNCTION ;3/2/93 | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**15,13,9,27,67,71,156,118,148,247,200**;DEC 1997;Build 7 | 
|---|
| 3 | ;External reference ^PS(59.7 supported by DBIA 694 | 
|---|
| 4 | ;External reference to ^PSDRUG("AQ" supported by DBIA 3165 | 
|---|
| 5 | ;External reference ^XTMP("PSA" supported by DBIA 1036 | 
|---|
| 6 | ;External reference $$SERV^IBARX1 supported by DBIA 2245 | 
|---|
| 7 | ;External reference ^PSDRUG( supported by DBIA 221 | 
|---|
| 8 | ;Reference to ^DIC(19.2 supported by DBIA 1064 | 
|---|
| 9 | ; | 
|---|
| 10 | QTY ; Refill Release | 
|---|
| 11 | S PSOCPN=$P(^PSRX(RXP,0),"^",2),QDRUG=$P(^PSRX(RXP,0),"^",6) K LBLP | 
|---|
| 12 | F YY=0:0 S YY=$O(^PSRX(RXP,XTYPE,YY)) Q:'YY  D:$P($G(^PSRX(RXP,XTYPE,YY,0)),"^")'<PSIN  K ISUF,LBLP | 
|---|
| 13 | .S RXFD=$E($P(^PSRX(RXP,XTYPE,YY,0),"^"),1,7),SUPN=$O(^PS(52.5,"B",RXP,0)) I SUPN,$D(^PS(52.5,"C",RXFD,SUPN)),$G(^PS(52.5,SUPN,"P"))'=1,$G(XTYPE) S ISUF=1 Q | 
|---|
| 14 | .I XTYPE=1,($D(^PSDRUG("AQ",QDRUG))) K CMOP D RREL^PSOCMOPB(RXP,YY) K CMOP Q:$G(ISUF) | 
|---|
| 15 | .I $P(^PSRX(RXP,XTYPE,YY,0),"^",$S($G(XTYPE):18,1:19))]""!($P(^(0),"^",16)) K IFN Q | 
|---|
| 16 | .; | 
|---|
| 17 | .F LBL=0:0 S LBL=$O(^PSRX(RXP,"L",LBL)) Q:'LBL  I $P(^PSRX(RXP,"L",LBL,0),"^",2)=$S('XTYPE:(99-YY),1:YY) S LBLP=1 | 
|---|
| 18 | .Q:'$G(LBLP) | 
|---|
| 19 | .D CHKADDR(RXP) | 
|---|
| 20 | .; | 
|---|
| 21 | .; - Checking for OPEN/UNRESOLVED 3rd. Party Payer Rejects / NDC Editing | 
|---|
| 22 | .I XTYPE,$$MANREL^PSOBPSUT(RXP,YY,$G(PSOPID))="^" K LBLP Q | 
|---|
| 23 | .; | 
|---|
| 24 | .S IFN=YY S:$G(^PSDRUG(QDRUG,660.1))]"" QTY=$P(^PSRX(RXP,XTYPE,YY,0),"^",4),^PSDRUG(QDRUG,660.1)=^PSDRUG(QDRUG,660.1)-QTY | 
|---|
| 25 | .K DA,DR,DIE D NOW^%DTC S DIE="^PSRX("_RXP_","""_XTYPE_""",",DA(1)=RXP | 
|---|
| 26 | .S DA=YY,DR=$S(XTYPE:17,1:8)_"///"_%_";"_$S(XTYPE:4,1:.05)_"////"_PSRH | 
|---|
| 27 | .S PSODT=% D ^DIE K DIE,DR,DA | 
|---|
| 28 | .; | 
|---|
| 29 | .; - Notifying IB through ECME of the Rx being released | 
|---|
| 30 | .I XTYPE D IBSEND^PSOBPSUT(RXP,YY) | 
|---|
| 31 | .; | 
|---|
| 32 | .K PSODISPP S:$G(XTYPE)="P" PSODISPP=1 D EN^PSOHLSN1(RXP,"ZD") K PSODISPP | 
|---|
| 33 | .K:XTYPE ^PSRX("ACP",$P($G(^PSRX(RXP,0)),"^",2),$P($G(^PSRX(RXP,1,YY,0)),"^"),YY,RXP) | 
|---|
| 34 | .I XTYPE,$G(IFN),'$G(ISUF) S PSOCPRX=$P(^PSRX(RXP,0),"^") D CP^PSOCP | 
|---|
| 35 | .;if appropriate update ^XTMP("PSA", for Drug Acct. | 
|---|
| 36 | .I $G(PSODA),$G(PSODA(1)),'$D(^PSRX("AR",+PSODT,+RXP,YY)) D | 
|---|
| 37 | ..S ^XTMP("PSA",+PSOSITE,+QDRUG,DT)=$G(^XTMP("PSA",+PSOSITE,+QDRUG,DT))+$P($G(^PSRX(RXP,XTYPE,YY,0)),"^",4) | 
|---|
| 38 | .;initialize bingo board variables | 
|---|
| 39 | .I $G(IFN),$P($G(^PSRX(RXP,XTYPE,IFN,0)),"^",2)["W" S BINGRPR="W",BNGPDV=$P(^PSRX(RXP,XTYPE,IFN,0),"^",9),BINGNAM=$P($G(^PSRX(RXP,0)),"^",2) | 
|---|
| 40 | W:$G(IFN) !?7,"Prescription Number "_$P(^PSRX(RXP,0),"^")_$S('$G(XTYPE):" Partial Fill",1:" Refill(s)")_" Released" I $G(SPEED) G XMIT | 
|---|
| 41 | W:'$G(IFN) !?7,"No "_$S($G(XTYPE):"Refill(s)",1:"Partial(s)")_" to be Released" | 
|---|
| 42 | XMIT I $G(PSODISP)=2.4 D  ;build an send HL7 v2.4 messages to dispense system | 
|---|
| 43 | . F I=0:0 S SUB=$O(^PSRX(RXP,"A",I)) Q:'I  I $P(^PSRX(RXP,"A",I,0),"^",2)="N" D | 
|---|
| 44 | .. D NOW^%DTC S PSODTM=% K ^UTILITY($J,"PSOHL") | 
|---|
| 45 | .. S IDGN=$P(^PSRX(+RXP,0),"^",6),FP=$S(XTYPE=1:"R",1:"P") | 
|---|
| 46 | .. S ^UTILITY($J,"PSOHL",1)=+RXP_"^"_IDGN_"^"_PSODTM_"^"_+$G(PDUZ)_"^0^^PSO DISP^^^"_FP_"^"_IFN | 
|---|
| 47 | .. S ZTRTN="INIT^PSORELDT",ZTDESC="EXTERNAL INTERFACE FOR RELEASE DATE/TIME",ZTIO="",ZTDTH=$H,ZTSAVE("^UTILITY($J,""PSOHL"",")="",ZTSAVE("PSOSITE")="",ZTSAVE("RXP")="" D ^%ZTLOAD K ^UTILITY($J,"PSOHL") | 
|---|
| 48 | K IFN | 
|---|
| 49 | Q | 
|---|
| 50 | STAT S RX0=^PSRX(RXP,0),$P(RX0,"^",15)=+^("STA"),RX2=^PSRX(RXP,2),J=RXP D ^PSOFUNC | 
|---|
| 51 | W !!?5,$C(7),$C(7),"Rx# "_$P(^PSRX(RXP,0),"^")_" has a status of "_ST_" and is not eligible for",!?5,"release."_$S('$D(^XUSEC("PSORPH",DUZ)):"  Please check with a Pharmacist!",1:"") | 
|---|
| 52 | K RX0,ST | 
|---|
| 53 | Q | 
|---|
| 54 | OERR I '$D(PSOPAR) D ^PSOLSET I '$D(PSOPAR) W $C(7),!!,?5,"Site Parameters must be defined to use the Release option!",! S VALMBCK="" Q | 
|---|
| 55 | S VALMBCK="Q",Y=$G(^PS(59,PSOSITE,"IB")),PSOIBSS=$$SERV^IBARX1(+Y) I 'PSOIBSS D IBSSR^PSOUTL I 'PSOIBFL D  S VALMBCK="" G EX | 
|---|
| 56 | .W $C(7),!!,"The IB SERVICE/SECTION defined in your site parameter file is not valid.",!,"You will not be able to release any medication until this is corrected!",! | 
|---|
| 57 | W !! S PSIN=+$P($G(^PS(59.7,1,49.99)),"^",2),RXP=$P(PSOLST($P(PSLST,",",ORD)),"^",2) | 
|---|
| 58 | S DIC("S")="I $D(^XUSEC(""PSORPH"",+Y))",DIC("A")="Enter PHARMACIST: ",DIC="^VA(200,",DIC(0)="QEAM" D ^DIC G:"^"[X EX K DIC G:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!(Y=-1) EX S PSRH=+Y | 
|---|
| 59 | ;check for Drug Acct background job K8 & K7.1 | 
|---|
| 60 | S X="PSA IV ALL LOCATIONS",DIC(0)="MZ",DIC=19.2 D ^DIC I Y=-1 K DIC,X,Y G DOIT | 
|---|
| 61 | I $P($G(Y(0)),U,2)>DT S PSODA=1 S:'$P($G(^XTMP("PSA",0)),U,2) $P(^(0),U,2)=DT G DOIT | 
|---|
| 62 | S X="PSA IV ALL LOCATIONS",DIC(0)="MZ",DIC=19 D ^DIC K DIC,X G:Y=-1 DOIT | 
|---|
| 63 | K DIQ,PSA S DA=+Y,DIC=19,DIQ="PSA",DR=200,DIQ(0)="IN" D EN^DIQ1 | 
|---|
| 64 | I '$D(PSA(19,DA,200,"I")) K DIC,DA,X,Y,DIQ G DOIT | 
|---|
| 65 | I PSA(19,DA,200,"I")>DT S PSODA=1 S:'$P($G(^XTMP("PSA",0)),U,2) $P(^(0),U,2)=DT | 
|---|
| 66 | K PSA,DIC,DA,X,Y,DIQ | 
|---|
| 67 | ; | 
|---|
| 68 | DOIT S POERR=1 D FULL^VALM1,BC1^PSODISP | 
|---|
| 69 | I $D(DISGROUP),$D(BINGNAM),($D(BINGDIV)!$D(BNGPDV)!$D(BNGRDV)),($D(BINGRO)!$D(BINGRPR)) N TM,TM1 D REL^PSOBING1 K BINGNAM,BINGDIV,BINGRO,BINGRPR,BNGPDV,BNGRDV | 
|---|
| 70 | EX ; | 
|---|
| 71 | K OUT,RX2,RXFD,RESK,ISUF,SUPN,%,DIC,IFN,J,DA,DR,DIE,X,X1,X2,Y,RXP,CX,PX,REC,DIR,YDT,REC,RDUZ,DIRUT,PSOCPN,PSOCPRX,PSOIBSS,PSOIBFL,PSOIBLP,PSOIBST,YY,QDRUG,QTY,TYPE,XTYPE,DUOUT,PSRH,XX,Y,PSIN,POERR,SUB | 
|---|
| 72 | K DIR S DIR("A",1)=" ",DIR("A")="Press Return to Continue",DIR(0)="E" D ^DIR K DIRUT,DUOUT,DTOUT,DIR S VALMBCK="R" | 
|---|
| 73 | S PSORXED=1 D ^PSOBUILD,ACT^PSOORNE2 K PSORXED | 
|---|
| 74 | Q | 
|---|
| 75 | ; | 
|---|
| 76 | CHKADDR(RXP) ; | 
|---|
| 77 | N PSOTXT,PSOBADR,PSOTEMP,LBL | 
|---|
| 78 | S LBL=$O(^PSRX(RXP,"L",99999),-1) I LBL>0 D | 
|---|
| 79 | .S PSOTXT=$G(^PSRX(RXP,"L",LBL,0)) I PSOTXT'["(BAD ADDRESS)" Q | 
|---|
| 80 | .S PSOBADR=$$CHKRX^PSOBAI(RXP) | 
|---|
| 81 | .I '$G(PSOBADR) D SETLBL(LBL,"NO BAD ADDRESS INDICATOR AT RELEASE") Q | 
|---|
| 82 | .I $P(PSOBADR,"^",2) D SETLBL(LBL,"ACTIVE TEMPORARY ADDRESS AT RELEASE") | 
|---|
| 83 | Q | 
|---|
| 84 | ; | 
|---|
| 85 | SETLBL(LBL,PSOMSG) ; | 
|---|
| 86 | N PSOTXT | 
|---|
| 87 | S PSOTXT=$G(^PSRX(RXP,"L",LBL,0)),$P(PSOTXT,"^",3)=PSOMSG | 
|---|
| 88 | S LBL=LBL+1,^PSRX(RXP,"L",0)="^52.032DA^"_LBL_"^"_LBL | 
|---|
| 89 | S ^PSRX(RXP,"L",LBL,0)=PSOTXT | 
|---|
| 90 | Q | 
|---|