PSSUTLA1 ;BHAM ISC/RTR-PSS utility routine ;08/21/00 ;;1.0;PHARMACY DATA MANAGEMENT;**38,49,53,54,66,69**;9/30/97 ;Reference to EN^DDIOL supported by DBIA 10142 ; EN3(PSSBINTR,PSSBLGTH) ; ;Pass in to EN3 the internal number from 50.7, and the length of the ;array you want. Returns expanded Instructions is PSSBSIG array K PSSBSIG N X,BVAR,BVAR1,III,CNT,NNN,BLIM,Y,PISIG,Z0,Z1,CNTZ,FFF Q:'$G(PSSBINTR)!('$G(PSSBLGTH)) S X=$P($G(^PS(50.7,PSSBINTR,"INS")),"^") Q:X="" S PISIG(1)="",CNTZ=1 Q:$L(X)<1 F Z0=1:1:$L(X," ") G:Z0="" START S Z1=$P(X," ",Z0) D G:'$D(X) START .D:$D(X)&($G(Z1)]"") D ADD ..S Y=$O(^PS(51,"B",Z1,0)) Q:'Y!($P($G(^PS(51,+Y,0)),"^",4)>1) S Z1=$P($G(^PS(51,Y,0)),"^",2) Q:'$D(^(9)) S Y=$P(X," ",Z0-1),Y=$E(Y,$L(Y)) S:Y>1 Z1=^(9) START ; S (BVAR,BVAR1)="",III=1 F FFF=0:0 S FFF=$O(PISIG(FFF)) Q:'FFF S CNT=0 F NNN=1:1:$L(PISIG(FFF)) I $E(PISIG(FFF),NNN)=" "!($L(PISIG(FFF))=NNN) S CNT=CNT+1 D I $L(BVAR)>PSSBLGTH S PSSBSIG(III)=BLIM_" ",III=III+1,BVAR=BVAR1 .S BVAR1=$P(PISIG(FFF)," ",(CNT)) .S BLIM=BVAR .S BVAR=$S(BVAR="":BVAR1,1:BVAR_" "_BVAR1) I $G(BVAR)'="" S PSSBSIG(III)=BVAR I $G(PSSBSIG(1))=""!($G(PSSBSIG(1))=" ") S PSSBSIG(1)=$G(PSSBSIG(2)) K PSSBSIG(2) F CNTZ=0:0 S CNTZ=$O(PSSBSIG(CNTZ)) Q:'CNTZ S PSSX("PI",CNTZ)=$G(PSSBSIG(CNTZ)) K PSSBSIG Q ADD ; I $L(PISIG(CNTZ))+$L(Z1)+1<246 S PISIG(CNTZ)=PISIG(CNTZ)_" "_Z1 Q S CNTZ=CNTZ+1 S PISIG(CNTZ)=Z1 Q ; DEA(PSSDIENM) ;Return DEA Special Handling for CPRS Dose Call ;1 Requires wet sig, DEA contains 1, or a 2 ;2 = Controlled Sub, no wet sig required, DEA contains 3, 4, or 5 ;0 = others Q:'$G(PSSDIENM) N PSSDEAX,PSSDEAXV S PSSDEAX=$P($G(^PSDRUG(PSSDIENM,0)),"^",3) I PSSDEAX[1!(PSSDEAX[2) S PSSDEAXV=1 G DSET I PSSDEAX[3!(PSSDEAX[4)!(PSSDEAX[5) S PSSDEAXV=2 G DSET S PSSDEAXV=0 DSET ; S PSSX("DD",PSSDIENM)=PSSX("DD",PSSDIENM)_"^"_PSSDEAXV_"^"_$S($D(PSSHLF(PSSDIENM)):1,1:0) Q HELP ; Q:$G(X)="" N PSSSIG,PSSYX,PSSZ0,PSSZ1,PSSCTX,PSSLPX,PSSBVAR,PSSBVAR1,PSSIII,PSSFFF,PCT,PNNN,PSSBLIM,PSSIG S PSSIG(1)="",PSSCTX=1 Q:$L(X)<1 F PSSZ0=1:1:$L(X," ") G:PSSZ0="" HELP1 S PSSZ1=$P(X," ",PSSZ0) D G:'$D(X) HELP1 .D:$D(X)&($G(PSSZ1)]"") D HELPADD ..S PSSYX=$O(^PS(51,"B",PSSZ1,0)) Q:'PSSYX!($P($G(^PS(51,+PSSYX,0)),"^",4)>1) S PSSZ1=$P($G(^PS(51,PSSYX,0)),"^",2) Q:'$D(^(9)) S PSSYX=$P(X," ",PSSZ0-1),PSSYX=$E(PSSYX,$L(PSSYX)) S:PSSYX>1 PSSZ1=^(9) HELP1 ; S (PSSBVAR,PSSBVAR1)="",PSSIII=1 F PSSFFF=0:0 S PSSFFF=$O(PSSIG(PSSFFF)) Q:'PSSFFF S PCT=0 F PNNN=1:1:$L(PSSIG(PSSFFF)) I $E(PSSIG(PSSFFF),PNNN)=" "!($L(PSSIG(PSSFFF))=PNNN) S PCT=PCT+1 D I $L(PSSBVAR)>70 S PSSSIG(PSSIII)=PSSBLIM_" ",PSSIII=PSSIII+1,PSSBVAR=PSSBVAR1 .S PSSBVAR1=$P(PSSIG(PSSFFF)," ",(PCT)) .S PSSBLIM=PSSBVAR .S PSSBVAR=$S(PSSBVAR="":PSSBVAR1,1:PSSBVAR_" "_PSSBVAR1) I $G(PSSBVAR)'="" S PSSSIG(PSSIII)=PSSBVAR I $G(PSSSIG(1))=""!($G(PSSSIG(1))=" ") S PSSSIG(1)=$G(PSSSIG(2)) K PSSSIG(2) F PSSLPX=0:0 S PSSLPX=$O(PSSSIG(PSSLPX)) Q:'PSSLPX D:PSSLPX=1 EN^DDIOL(" ") D EN^DDIOL(" "_$G(PSSSIG(PSSLPX))) Q HELPADD ; I $L(PSSIG(PSSCTX))+$L(PSSZ1)+1<246 S PSSIG(PSSCTX)=PSSIG(PSSCTX)_" "_PSSZ1 Q S PSSCTX=PSSCTX+1 S PSSIG(PSSCTX)=PSSZ1 Q PRICE() ;Return price per dose for CPRS Dose call ;DLOOP = Internal entry number from Drug file ;PSSUDOS = Dispense units per Dose N PSSPRICE,PSSPRQ I '$G(DLOOP) Q "" S PSSPRICE=$P($G(^PSDRUG(DLOOP,660)),"^",6) I 'PSSPRICE Q "" I $G(PSSUDOS) S PSSPRQ=PSSUDOS*PSSPRICE G PRICEQ I $G(PSSBCM) S PSSPRQ=PSSBCM*PSSPRICE PRICEQ ; I $E($G(PSSPRQ))="." S PSSPRQ=0_$G(PSSPRQ) Q $G(PSSPRQ) ; Q ; OIDEA(PSSXOI,PSSXOIP) ; ;DEA return based on Orderable Item, Item and Usage passed in ;1 means DEA contains a 1, or a 2 ;2 means DEA contains a 3, or a 4, or a 5 ;0 means all others N PSSXOLP,PSSXOLPD,PSSXOLPX,PSSXNODD,PSSPKLX S (PSSXOLPD,PSSXNODD)=0 I PSSXOIP="X" G OIDQ I '$G(PSSXOI)!($G(PSSXOIP)="") G OIDQ S PSSPKLX=$S(PSSXOIP="I":1,PSSXOIP="U":1,1:0) F PSSXOLP=0:0 S PSSXOLP=$O(^PSDRUG("ASP",PSSXOI,PSSXOLP)) Q:'PSSXOLP!(PSSXOLPD=1) D .I $P($G(^PSDRUG(PSSXOLP,"I")),"^"),$P($G(^("I")),"^")