PSOBSET1 ;BHAM ISC/CCG - BLACK LINE RESOLVER ; 10/24/92 13:23
;;7.0;OUTPATIENT PHARMACY;**268**;DEC 1997;Build 9
S PSOBMX=$P(^PS(59,PSOBPS,0),"^",9) S:+PSOBMX<1000 PSOBMX=1000,^PS(59,PSOBPS,0)=$P(^(0),"^",1,8)_"^1000^"_$P(^(0),"^",10,255)
LCK L +^PS(52.9,PSOBIO,1,0):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) G:'$T LCK S Z=$P(^PS(52.9,PSOBIO,1,0),"^",3),ZX=$P(^(0),"^",4)
LP S Z=Z+1,ZX=ZX+1 G:$D(^PS(52.9,PSOBIO,1,Z,0)) LP D:(ZX>PSOBMX)&($D(^PS(52.9,PSOBIO,1,Z-PSOBMX))) DEL S ^PS(52.9,PSOBIO,1,0)=$P(^PS(52.9,PSOBIO,1,0),"^",1,2)_"^"_Z_"^"_ZX L -^PS(52.9,PSOBIO,1,0) S %DT="T",X="N" D ^%DT
S ^PS(52.9,PSOBIO,1,Z,0)=PSOBDPT_"^"_PSOBR_"^"_Y_"^"_$G(RXP)_"^"_PSOBCP_"^"_PSOBVR2_"^"_PSOBPS,^PS(52.9,PSOBIO,1,"B",PSOBDPT,Z)="",PSOB=0
S PSOBPCZ=PSOBPC F P=1:1:$L(^PSOBPPL($J)) I $E(^PSOBPPL($J),P)'?.AN,$E(^($J),P)'="*" S PSOBPC=$E(^($J),P) Q
PPL F P=1:1 Q:($P(^PSOBPPL($J),PSOBPC,P)="")&(P'=1) S PSOBRX=$P($P(^PSOBPPL($J),PSOBPC,P),"*",1) D:PSOBRX'="" C
I $D(PSOBPPL1),PSOBPPL1'="" S ^PSOBPPL($J)=PSOBPPL1 K PSOBPPL1 G PPL
I PSOB S ^PS(52.9,PSOBIO,1,Z,2,0)="^52.9002P^"_PSOB_"^"_PSOB
I +$P(^PS(52.9,PSOBIO,1,0),"^",3)=0 K ^PS(52.9,"B",^PS(52.9,PSOBIO,0),PSOBIO),^PS(52.9,PSOBIO) S ^PS(52.9,0)=$P(^PS(52.9,0),"^",1,2)_"^"_($P(^(0),"^",3)-1)_"^"_($P(^(0),"^",4)-1)
Q S:$D(PSOBPCZ) PSOBPC=PSOBPCZ K PSOBPCZ K:'$D(PSOBS) I,IOP,PSOBPPL1,PSOBR,PSOBPC,PSOBPS,^PSOBPPL($J),PSOB,PSOBIO,PSOBRX,PSOBDPT,PSOBCP,PSOBVR2,PSOBVR1,PSOBZ,PSOBMX,X,Y,Z,ZZX,ZX,P,%ZIS,%ZIS("B")
Q
C Q:'$D(^PSRX(PSOBRX,0)) S PSOB=PSOB+1,^PS(52.9,PSOBIO,1,Z,2,PSOB,0)=PSOBRX,^PS(52.9,PSOBIO,1,"C",PSOBRX,Z,PSOB)="" S:$G(RXPR(PSOBRX)) $P(^PS(52.9,PSOBIO,1,Z,2,PSOB,0),"^",2)=$G(RXPR(PSOBRX))
S:$D(RXFL(PSOBRX)) $P(^PS(52.9,PSOBIO,1,Z,2,PSOB,0),"^",3)=$G(RXFL(PSOBRX)) Q
DEL S ZZX=Z-PSOBMX F I=0:0 S I=$O(^PS(52.9,PSOBIO,1,ZZX,2,I)) Q:'I K ^PS(52.9,PSOBIO,1,"C",^PS(52.9,PSOBIO,1,ZZX,2,I,0),ZZX)
S PSOBZ=$P(^PS(52.9,PSOBIO,1,ZZX,0),"^") K ^PS(52.9,PSOBIO,1,"B",+PSOBZ,ZZX),^PS(52.9,PSOBIO,1,ZZX) S ZX=ZX-1 Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOBSET1 1998 printed Dec 13, 2024@02:25:09 Page 2
PSOBSET1 ;BHAM ISC/CCG - BLACK LINE RESOLVER ; 10/24/92 13:23
+1 ;;7.0;OUTPATIENT PHARMACY;**268**;DEC 1997;Build 9
+2 SET PSOBMX=$PIECE(^PS(59,PSOBPS,0),"^",9)
if +PSOBMX<1000
SET PSOBMX=1000
SET ^PS(59,PSOBPS,0)=$PIECE(^(0),"^",1,8)_"^1000^"_$PIECE(^(0),"^",10,255)
LCK LOCK +^PS(52.9,PSOBIO,1,0):$SELECT(+$GET(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
if '$TEST
GOTO LCK
SET Z=$PIECE(^PS(52.9,PSOBIO,1,0),"^",3)
SET ZX=$PIECE(^(0),"^",4)
LP SET Z=Z+1
SET ZX=ZX+1
if $DATA(^PS(52.9,PSOBIO,1,Z,0))
GOTO LP
if (ZX>PSOBMX)&($DATA(^PS(52.9,PSOBIO,1,Z-PSOBMX)))
DO DEL
SET ^PS(52.9,PSOBIO,1,0)=$PIECE(^PS(52.9,PSOBIO,1,0),"^",1,2)_"^"_Z_"^"_ZX
LOCK -^PS(52.9,PSOBIO,1,0)
SET %DT="T"
SET X="N"
DO ^%DT
+1 SET ^PS(52.9,PSOBIO,1,Z,0)=PSOBDPT_"^"_PSOBR_"^"_Y_"^"_$GET(RXP)_"^"_PSOBCP_"^"_PSOBVR2_"^"_PSOBPS
SET ^PS(52.9,PSOBIO,1,"B",PSOBDPT,Z)=""
SET PSOB=0
+2 SET PSOBPCZ=PSOBPC
FOR P=1:1:$LENGTH(^PSOBPPL($JOB))
IF $EXTRACT(^PSOBPPL($JOB),P)'?.AN
IF $EXTRACT(^($JOB),P)'="*"
SET PSOBPC=$EXTRACT(^($JOB),P)
QUIT
PPL FOR P=1:1
if ($PIECE(^PSOBPPL($JOB),PSOBPC,P)="")&(P'=1)
QUIT
SET PSOBRX=$PIECE($PIECE(^PSOBPPL($JOB),PSOBPC,P),"*",1)
if PSOBRX'=""
DO C
+1 IF $DATA(PSOBPPL1)
IF PSOBPPL1'=""
SET ^PSOBPPL($JOB)=PSOBPPL1
KILL PSOBPPL1
GOTO PPL
+2 IF PSOB
SET ^PS(52.9,PSOBIO,1,Z,2,0)="^52.9002P^"_PSOB_"^"_PSOB
+3 IF +$PIECE(^PS(52.9,PSOBIO,1,0),"^",3)=0
KILL ^PS(52.9,"B",^PS(52.9,PSOBIO,0),PSOBIO),^PS(52.9,PSOBIO)
SET ^PS(52.9,0)=$PIECE(^PS(52.9,0),"^",1,2)_"^"_($PIECE(^(0),"^",3)-1)_"^"_($PIECE(^(0),"^",4)-1)
Q if $DATA(PSOBPCZ)
SET PSOBPC=PSOBPCZ
KILL PSOBPCZ
if '$DATA(PSOBS)
KILL I,IOP,PSOBPPL1,PSOBR,PSOBPC,PSOBPS,^PSOBPPL($JOB),PSOB,PSOBIO,PSOBRX,PSOBDPT,PSOBCP,PSOBVR2,PSOBVR1,PSOBZ,PSOBMX,X,Y,Z,ZZX,ZX,P,%ZIS,%ZIS("B")
+1 QUIT
C if '$DATA(^PSRX(PSOBRX,0))
QUIT
SET PSOB=PSOB+1
SET ^PS(52.9,PSOBIO,1,Z,2,PSOB,0)=PSOBRX
SET ^PS(52.9,PSOBIO,1,"C",PSOBRX,Z,PSOB)=""
if $GET(RXPR(PSOBRX))
SET $PIECE(^PS(52.9,PSOBIO,1,Z,2,PSOB,0),"^",2)=$GET(RXPR(PSOBRX))
+1 if $DATA(RXFL(PSOBRX))
SET $PIECE(^PS(52.9,PSOBIO,1,Z,2,PSOB,0),"^",3)=$GET(RXFL(PSOBRX))
QUIT
DEL SET ZZX=Z-PSOBMX
FOR I=0:0
SET I=$ORDER(^PS(52.9,PSOBIO,1,ZZX,2,I))
if 'I
QUIT
KILL ^PS(52.9,PSOBIO,1,"C",^PS(52.9,PSOBIO,1,ZZX,2,I,0),ZZX)
+1 SET PSOBZ=$PIECE(^PS(52.9,PSOBIO,1,ZZX,0),"^")
KILL ^PS(52.9,PSOBIO,1,"B",+PSOBZ,ZZX),^PS(52.9,PSOBIO,1,ZZX)
SET ZX=ZX-1
QUIT