PSSREMCH ;BIR/RTR-Pre release Orderable Item report ;02/14/00
 ;;1.0;PHARMACY DATA MANAGEMENT;**34**;9/30/97
 S PSSOUT=0 D TEXT^PSSUTLPR I $G(PSSOUT) K PSSOUT Q
 G ADDRP^PSSUTLPR
ADD ;
 N AAZ,AAZZ,SSZ,SSZZ,PSSATMP,PSSSTMP
 U IO S PSSOUT=0 K PSSADSUM,PSSTOTAL,PSSIVID,PSSIVIDL,PSSSOSUM
 S PSSDV=$S($E(IOST)="C":"C",1:"P"),PSSCOT=1
 S PSSIVID=$S($P($G(^PS(59.7,1,31)),"^",2)'="":$P($G(^(31)),"^",2),1:"IV") S PSSIVIDL=$L(PSSIVID)
 I $G(PSSTYPE)="S" G SOL
 S PSSWH="A"
 N ADD,AA,OI,PAD,ADDIEN,ZERO,LEN,COUNT,PSSAD,PAA,PZZ,PDD,OINAME,OIDOSE,OILT,TOTAL,PSSPADZ,AOILT,NEWOI,NEWOIL,ADDLT,PSSADIN,PSSADID,OIDATE,OIDATED,PSSPADX,PSSPADZZ,OIZD,OIZDZ,PSINDAT,PSINDATE
 K ^TMP($J,"PSSAD")
 D ADDH
 S ADD="" F  S ADD=$O(^PS(52.6,"B",ADD)) Q:ADD=""!($G(PSSOUT))  F ADDIEN=0:0 S ADDIEN=$O(^PS(52.6,"B",ADD,ADDIEN)) Q:'ADDIEN!($G(PSSOUT))  D
 .Q:'$P($G(^PS(52.6,ADDIEN,0)),"^",11)
 .S ZERO=$G(^PS(52.6,ADDIEN,0)),LEN=$L($P(ZERO,"^"))
 .K PSSADID S PSSADIN=$P($G(^PS(52.6,ADDIEN,"I")),"^") I PSSADIN S PSSADID="("_$E(PSSADIN,4,5)_"/"_$E(PSSADIN,6,7)_"/"_$E(PSSADIN,2,3)_")"
 .S LEN=LEN+$S($G(PSSADID)'="":11,1:0)
 .K PAD S $P(PAD,"=",(42-LEN))="",PAD=$G(PAD)_"> "
 .S OINAME=$P($G(^PS(50.7,+$P(ZERO,"^",11),0)),"^"),OIDOSE=$P($G(^PS(50.606,+$P($G(^(0)),"^",2),0)),"^"),OILT=$L($G(OINAME))+$L($G(OIDOSE))+2
 .K OIDATED S OIDATE=$P($G(^PS(50.7,+$P(ZERO,"^",11),0)),"^",4) I OIDATE S OIDATED="("_$E(OIDATE,4,5)_"/"_$E(OIDATE,6,7)_"/"_$E(OIDATE,2,3)_")"
 .S ADDLT=$L(ADDIEN)+3
 .S PSSTOTAL=+$G(ADDLT)+45+$G(OILT)+$S($G(OIDATED)'="":11,1:0)+$G(PSSIVIDL)
 .S PSSPADZ=+$G(ADDLT)+42
 .I ($Y+5)>IOSL D ADDH Q:$G(PSSOUT)
 .W !!,?3,"Current Additive/Orderable Item match:",!
 .I $G(PSSTOTAL)<132 W "("_$G(ADDIEN)_") "_$P(ZERO,"^")_$S($G(PSSADID)'="":" "_$G(PSSADID),1:"")_$G(PAD)_$G(OINAME)_"  "_$G(OIDOSE)_$S($G(OIDATED)'="":" "_$G(OIDATED),1:"")_"  "_$G(PSSIVID)
 .I $G(PSSTOTAL)>131 W "("_$G(ADDIEN)_") "_$P(ZERO,"^")_$S($G(PSSADID)'="":" "_$G(PSSADID),1:"")_$G(PAD) W !,"=====> ",$G(OINAME)_"  "_$G(OIDOSE)_$S($G(OIDATED)'="":" "_$G(OIDATED),1:"")_"  "_$G(PSSIVID)
 .S OI=$P($G(^PSDRUG(+$P(ZERO,"^",2),2)),"^") I 'OI W !?5,"cannot re-match, no Orderable Item for the Dispense Drug" Q
 .S PSSATMP=$P($G(^PS(50.7,OI,0)),"^")_"  "_$P($G(^PS(50.606,+$P($G(^(0)),"^",2),0)),"^")
 .S ^TMP($J,"PSSAD",PSSATMP,ADDIEN)=OI
 .S NEWOI=$P($G(^PS(50.7,+$G(OI),0)),"^")_"  "_$P($G(^PS(50.606,+$P($G(^(0)),"^",2),0)),"^")
 .K OIZDZ S OIZD=$P($G(^PS(50.7,+$G(OI),0)),"^",4) I OIZD S OIZDZ="("_$E(OIZD,4,5)_"/"_$E(OIZD,6,7)_"/"_$E(OIZD,2,3)_")"
 .K PSSPADZZ S PSSPADX=$G(PSSPADZ)-18 S $P(PSSPADZZ,"=",PSSPADX)=""
 .S PSSPADZZ=PSSPADZZ_"> "
 .W !,"New Orderable Item"_$G(PSSPADZZ)_$G(NEWOI)_$S($G(OIZDZ)'="":" "_$G(OIZDZ),1:"")
 .W !?2,"Dispense Drugs matched to Orderable Item:"
 .F PAA=0:0 S PAA=$O(^PSDRUG("ASP",OI,PAA)) Q:'PAA!($G(PSSOUT))  D
 ..I ($Y+4)>IOSL D ADDH Q:$G(PSSOUT)
 ..K PSINDATE S PSINDAT=$P($G(^PSDRUG(PAA,"I")),"^") I PSINDAT S PSINDATE=" "_"("_$E(PSINDAT,4,5)_"/"_$E(PSINDAT,6,7)_"/"_$E(PSINDAT,2,3)_")"
 ..I PSINDAT,PSINDAT<$G(PSSYRX) Q
 ..W !?4,$P($G(^PSDRUG(PAA,0)),"^")_$G(PSINDATE) I PAA=$P(ZERO,"^",2) W ?55,"(Additive link)"
 I $G(PSSOUT) G ADDX
 D ADDHS G:$G(PSSOUT) ADDX
 S PSSADSUM=1
 S AA="" F  S AA=$O(^TMP($J,"PSSAD",AA)) Q:AA=""!($G(PSSOUT))  D
 .S AAZ=$O(^TMP($J,"PSSAD",AA,0)),AAZZ=+$G(^TMP($J,"PSSAD",AA,+$G(AAZ)))
 .I ($Y+4)>IOSL D ADDH Q:$G(PSSOUT)
 .W !!,"OI => ",AA_$S($P($G(^PS(50.7,AAZZ,0)),"^",4)="":"",1:" ("_$E($P($G(^(0)),"^",4),4,5)_"/"_$E($P($G(^(0)),"^",4),6,7)_"/"_$E($P($G(^(0)),"^",4),2,3)_")")
 .F PZZ=0:0 S PZZ=$O(^TMP($J,"PSSAD",AA,PZZ)) Q:'PZZ!($G(PSSOUT))  D
 ..I ($Y+4)>IOSL D ADDH Q:$G(PSSOUT)
 ..W !,"("_$G(PZZ)_") ",?13,$P($G(^PS(52.6,PZZ,0)),"^")_$S($P($G(^("I")),"^")="":"",1:" ("_$E($P($G(^("I")),"^"),4,5)_"/"_$E($P($G(^("I")),"^"),6,7)_"/"_$E($P($G(^("I")),"^"),2,3)_")"),?69,"(Additive)"
 .Q:$G(PSSOUT)
 .W !?2,"Dispense Drugs matched to OI:"
 .F PDD=0:0 S PDD=$O(^PSDRUG("ASP",AAZZ,PDD)) Q:'PDD!($G(PSSOUT))  D
 ..I ($Y+4)>IOSL D ADDH Q:$G(PSSOUT)
 ..I $P($G(^PSDRUG(PDD,"I")),"^"),$P($G(^("I")),"^")<$G(PSSYRX) Q
 ..W !,?11,$P($G(^PSDRUG(PDD,0)),"^")_$S($P($G(^("I")),"^")="":"",1:" ("_$E($P($G(^("I")),"^"),4,5)_"/"_$E($P($G(^("I")),"^"),6,7)_"/"_$E($P($G(^("I")),"^"),2,3)_")")
ADDX ;
 K ^TMP($J,"PSSAD")
 I $G(PSSTYPE)="B",'$G(PSSOUT) G SOL
 I '$G(PSSOUT) D PDIR
 G END
SOL ;
 K ^TMP($J,"PSSOL"),PSSCOTX
 S PSSWH="S"
 N SOL,SLDD,SZZ,SOLAA,SAA,SOLIEN,SNAME,SLNEWOI,SOINAME,SOIDOSE,SOILT,SOILTX,STOTAL,SLOI,SDA,SDAT,SDOI,SDOID,SOLLT,PSSSOLZ,SOIZD,SOIZDZ,SZL,SZLA,SLID,SLIDD
 D SOLH S PSSCOTX=1
 I $G(PSSOUT) G SEND
 S SOL="" F  S SOL=$O(^PS(52.7,"B",SOL)) Q:SOL=""!($G(PSSOUT))  F SOLIEN=0:0 S SOLIEN=$O(^PS(52.7,"B",SOL,SOLIEN)) Q:'SOLIEN!($G(PSSOUT))  D
 .Q:'$P($G(^PS(52.7,SOLIEN,0)),"^",11)
 .S ZERO=$G(^PS(52.7,SOLIEN,0))
 .S SNAME=$P(ZERO,"^")_"  ("_$P(ZERO,"^",3)_")",LEN=$L(SNAME)
 .K SDAT S SDA=$P($G(^PS(52.7,SOLIEN,"I")),"^") I SDA S SDAT="("_$E(SDA,4,5)_"/"_$E(SDA,6,7)_"/"_$E(SDA,2,3)_")"
 .S LEN=LEN+$S($G(SDAT)'="":11,1:0)
 .K PAD S $P(PAD,"=",(53-LEN))="",PAD=$G(PAD)_"> "
 .S SOINAME=$P($G(^PS(50.7,+$P(ZERO,"^",11),0)),"^"),SOIDOSE=$P($G(^PS(50.606,+$P($G(^(0)),"^",2),0)),"^"),SOILT=$L($G(SOINAME))+$L($G(SOIDOSE))+2
 .K SDOID S SDOI=$P($G(^PS(50.7,+$P(ZERO,"^",11),0)),"^",4) I SDOI S SDOID="("_$E(SDOI,4,5)_"/"_$E(SDOI,6,7)_"/"_$E(SDOI,2,3)_")"
 .S SOLLT=$L(SOLIEN)+3
 .S PSSTOTAL=+$G(SOLLT)+67+$G(SOILT)+$S($G(PDOID)'="":11,1:0)+$G(PSSIVIDL)
 .S PSSSOLZ=+$G(SOLLT)+53
 .I ($Y+5)>IOSL D SOLH Q:$G(PSSOUT)
 .W !!?3,"Current Solution/Orderable Item match:",!
 .I $G(PSSTOTAL)<132 W "("_$G(SOLIEN)_") "_$G(SNAME)_$S($G(SDAT)'="":" "_$G(SDAT),1:"")_$G(PAD)_$G(SOINAME)_"  "_$G(SOIDOSE)_$S($G(SDOID)'="":" "_$G(SDOID),1:"")_"  "_$G(PSSIVID)
 .I $G(PSSTOTAL)>131 W "("_$G(SOLIEN)_") "_$G(SNAME)_$S($G(SDAT)'="":" "_$G(SDAT),1:"")_$G(PAD) D:($Y+4)>IOSL SOLH Q:$G(PSSOUT)  W !,"=====> ",$G(SOINAME)_"  "_$G(SOIDOSE)_$S($G(SDOID)'="":" "_$G(SDOID),1:"")_"  "_$G(PSSIVID)
 .S SLOI=$P($G(^PSDRUG(+$P(ZERO,"^",2),2)),"^") I 'SLOI W !?5,"cannot rematch, no Item for the Dispense Drug" Q
 .S PSSSTMP=$P($G(^PS(50.7,+$G(SLOI),0)),"^")_"  "_$P($G(^PS(50.606,+$P($G(^(0)),"^",2),0)),"^")
 .S ^TMP($J,"PSSOL",PSSSTMP,SOLIEN)=SLOI
 .S SLNEWOI=$P($G(^PS(50.7,+$G(SLOI),0)),"^")_"  "_$P($G(^PS(50.606,+$P($G(^(0)),"^",2),0)),"^")
 .K SOIZDZ S SOIZD=$P($G(^PS(50.7,+$G(SLOI),0)),"^",4) I SOIZD S SOIZDZ="("_$E(SOIZD,4,5)_"/"_$E(SOIZD,6,7)_"/"_$E(SOIZD,2,3)_")"
 .K SZL S SZLA=$G(PSSSOLZ)-18 S $P(SZL,"=",SZLA)="" S SZL=SZL_"> "
 .W !,"New Orderable Item"_$G(SZL)_$G(SLNEWOI)_$S($G(SOIZDZ)'="":" "_$G(SOIZDZ),1:"")
 .W !?2,"Dispense Drugs matched to Orderable Item:"
 .F SAA=0:0 S SAA=$O(^PSDRUG("ASP",SLOI,SAA)) Q:'SAA!($G(PSSOUT))  D
 ..I ($Y+4)>IOSL D SOLH Q:$G(PSSOUT)
 ..K SLID S SLIDD=$P($G(^PSDRUG(SAA,"I")),"^") I SLIDD S SLID=" "_"("_$E(SLIDD,4,5)_"/"_$E(SLIDD,6,7)_"/"_$E(SLIDD,2,3)_")"
 ..I SLIDD,SLIDD<$G(PSSYRX) Q
 ..W !?4,$P($G(^PSDRUG(SAA,0)),"^")_$G(SLID) I SAA=$P(ZERO,"^",2) W ?59,"(Solution link)"
 I $G(PSSOUT) G SEND
 D SOLHS G:$G(PSSOUT) SEND
 S PSSSOSUM=1
 S SOLAA="" F  S SOLAA=$O(^TMP($J,"PSSOL",SOLAA)) Q:SOLAA=""!($G(PSSOUT))  D
 .S SSZ=$O(^TMP($J,"PSSOL",SOLAA,0)),SSZZ=+$G(^TMP($J,"PSSOL",SOLAA,+$G(SSZ)))
 .I ($Y+4)>IOSL D SOLH Q:$G(PSSOUT)
 .W !!,"OI => ",SOLAA_$S($P($G(^PS(50.7,SSZZ,0)),"^",4)="":"",1:" ("_$E($P($G(^(0)),"^",4),4,5)_"/"_$E($P($G(^(0)),"^",4),6,7)_"/"_$E($P($G(^(0)),"^",4),2,3)_")")
 .F SZZ=0:0 S SZZ=$O(^TMP($J,"PSSOL",SOLAA,SZZ)) Q:'SZZ!($G(PSSOUT))  D
 ..I ($Y+4)>IOSL D SOLH Q:$G(PSSOUT)
 ..W !,"("_$G(SZZ)_") ",?13,$P($G(^PS(52.7,SZZ,0)),"^")_"   ("_$P($G(^(0)),"^",3)_")"_$S($P($G(^("I")),"^")="":"",1:" ("_$E($P($G(^("I")),"^"),4,5)_"/"_$E($P($G(^("I")),"^"),6,7)_"/"_$E($P($G(^("I")),"^"),2,3)_")") W ?67,"(Solution)"
 .Q:$G(PSSOUT)
 .W !?2,"Dispense Drugs matched to OI:"
 .F SLDD=0:0 S SLDD=$O(^PSDRUG("ASP",SSZZ,SLDD)) Q:'SLDD!($G(PSSOUT))  D
 ..I ($Y+4)>IOSL D SOLH Q:$G(PSSOUT)
 ..I $P($G(^PSDRUG(SLDD,"I")),"^"),$P($G(^("I")),"^")<$G(PSSYRX) Q
 ..W !?11,$P($G(^PSDRUG(SLDD,0)),"^")_$S($P($G(^("I")),"^")="":"",1:" ("_$E($P($G(^("I")),"^"),4,5)_"/"_$E($P($G(^("I")),"^"),6,7)_"/"_$E($P($G(^("I")),"^"),2,3)_")")
 I '$G(PSSOUT) D PDIR
SEND ;
 K ^TMP($J,"PSSOL")
END I $G(PSSDV)="C" W !
 E  W @IOF
 K PSSTOTAL,PSSIVID,PSSIVIDL,PSSTYPE,PSSDV,PSSWH,PSSCOT,PSSOUT,PSSCOTX,PSSADSUM,PSSSOSUM,PSSYRX
 D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@" Q
ADDH ;
 I $G(PSSCOT)=1 W @IOF W !?5,"ADDITIVE REPORT    (Additive Internal number in parenthesis)",?67,"PAGE: "_$G(PSSCOT) S PSSCOT=PSSCOT+1 Q
 I $G(PSSDV)="C" K DIR S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSOUT=1 Q
 W @IOF W !?8,"ADDITIVE "_$S('$G(PSSADSUM):"REPORT",1:"SUMMARY")_"   (continued)" W ?67,"PAGE: "_$G(PSSCOT) S PSSCOT=PSSCOT+1
 Q
ADDHS ;
 I $G(PSSDV)="C" K DIR S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit"  D ^DIR K DIR I 'Y S PSSOUT=1 Q
 W @IOF W !!?5,"ADDITIVE SUMMARY" W ?67,"PAGE: "_$G(PSSCOT) S PSSCOT=PSSCOT+1
 Q
SOLH ;
 I '$G(PSSCOTX) D  Q:$G(PSSOUT)  W @IOF W !?5,"SOLUTION REPORT   (Solution Internal number in parenthesis)",?67,"PAGE: "_$G(PSSCOT) S PSSCOT=PSSCOT+1 Q
 .I $G(PSSDV)="C",$G(PSSCOT)'=1 K DIR S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSOUT=1
 I $G(PSSDV)="C" K DIR S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSOUT=1 Q
 W @IOF W !?8,"SOLUTION "_$S('$G(PSSSOSUM):"REPORT",1:"SUMMARY")_"   (continued)" W ?67,"PAGE: "_$G(PSSCOT) S PSSCOT=PSSCOT+1
 Q
SOLHS ;
 I $G(PSSDV)="C" K DIR S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSOUT=1 Q
 W @IOF W !!?5,"SOLUTION SUMMARY" W ?67,"PAGE: "_$G(PSSCOT) S PSSCOT=PSSCOT+1
 Q
PDIR ;
 Q:$G(PSSDV)'="C"
 W ! S DIR(0)="E",DIR("A")="Pres Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSOUT=1
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSREMCH   9921     printed  Sep 23, 2025@20:10:06                                                                                                                                                                                                    Page 2
PSSREMCH  ;BIR/RTR-Pre release Orderable Item report ;02/14/00
 +1       ;;1.0;PHARMACY DATA MANAGEMENT;**34**;9/30/97
 +2        SET PSSOUT=0
           DO TEXT^PSSUTLPR
           IF $GET(PSSOUT)
               KILL PSSOUT
               QUIT 
 +3        GOTO ADDRP^PSSUTLPR
ADD       ;
 +1        NEW AAZ,AAZZ,SSZ,SSZZ,PSSATMP,PSSSTMP
 +2        USE IO
           SET PSSOUT=0
           KILL PSSADSUM,PSSTOTAL,PSSIVID,PSSIVIDL,PSSSOSUM
 +3        SET PSSDV=$SELECT($EXTRACT(IOST)="C":"C",1:"P")
           SET PSSCOT=1
 +4        SET PSSIVID=$SELECT($PIECE($GET(^PS(59.7,1,31)),"^",2)'="":$PIECE($GET(^(31)),"^",2),1:"IV")
           SET PSSIVIDL=$LENGTH(PSSIVID)
 +5        IF $GET(PSSTYPE)="S"
               GOTO SOL
 +6        SET PSSWH="A"
 +7        NEW ADD,AA,OI,PAD,ADDIEN,ZERO,LEN,COUNT,PSSAD,PAA,PZZ,PDD,OINAME,OIDOSE,OILT,TOTAL,PSSPADZ,AOILT,NEWOI,NEWOIL,ADDLT,PSSADIN,PSSADID,OIDATE,OIDATED,PSSPADX,PSSPADZZ,OIZD,OIZDZ,PSINDAT,PSINDATE
 +8        KILL ^TMP($JOB,"PSSAD")
 +9        DO ADDH
 +10       SET ADD=""
           FOR 
               SET ADD=$ORDER(^PS(52.6,"B",ADD))
               if ADD=""!($GET(PSSOUT))
                   QUIT 
               FOR ADDIEN=0:0
                   SET ADDIEN=$ORDER(^PS(52.6,"B",ADD,ADDIEN))
                   if 'ADDIEN!($GET(PSSOUT))
                       QUIT 
                   Begin DoDot:1
 +11                   if '$PIECE($GET(^PS(52.6,ADDIEN,0)),"^",11)
                           QUIT 
 +12                   SET ZERO=$GET(^PS(52.6,ADDIEN,0))
                       SET LEN=$LENGTH($PIECE(ZERO,"^"))
 +13                   KILL PSSADID
                       SET PSSADIN=$PIECE($GET(^PS(52.6,ADDIEN,"I")),"^")
                       IF PSSADIN
                           SET PSSADID="("_$EXTRACT(PSSADIN,4,5)_"/"_$EXTRACT(PSSADIN,6,7)_"/"_$EXTRACT(PSSADIN,2,3)_")"
 +14                   SET LEN=LEN+$SELECT($GET(PSSADID)'="":11,1:0)
 +15                   KILL PAD
                       SET $PIECE(PAD,"=",(42-LEN))=""
                       SET PAD=$GET(PAD)_"> "
 +16                   SET OINAME=$PIECE($GET(^PS(50.7,+$PIECE(ZERO,"^",11),0)),"^")
                       SET OIDOSE=$PIECE($GET(^PS(50.606,+$PIECE($GET(^(0)),"^",2),0)),"^")
                       SET OILT=$LENGTH($GET(OINAME))+$LENGTH($GET(OIDOSE))+2
 +17                   KILL OIDATED
                       SET OIDATE=$PIECE($GET(^PS(50.7,+$PIECE(ZERO,"^",11),0)),"^",4)
                       IF OIDATE
                           SET OIDATED="("_$EXTRACT(OIDATE,4,5)_"/"_$EXTRACT(OIDATE,6,7)_"/"_$EXTRACT(OIDATE,2,3)_")"
 +18                   SET ADDLT=$LENGTH(ADDIEN)+3
 +19                   SET PSSTOTAL=+$GET(ADDLT)+45+$GET(OILT)+$SELECT($GET(OIDATED)'="":11,1:0)+$GET(PSSIVIDL)
 +20                   SET PSSPADZ=+$GET(ADDLT)+42
 +21                   IF ($Y+5)>IOSL
                           DO ADDH
                           if $GET(PSSOUT)
                               QUIT 
 +22                   WRITE !!,?3,"Current Additive/Orderable Item match:",!
 +23                   IF $GET(PSSTOTAL)<132
                           WRITE "("_$GET(ADDIEN)_") "_$PIECE(ZERO,"^")_$SELECT($GET(PSSADID)'="":" "_$GET(PSSADID),1:"")_$GET(PAD)_$GET(OINAME)_"  "_$GET(OIDOSE)_$SELECT($GET(OIDATED)'="":" "_$GET(OIDATED),1:"")_"  "_$GET(PSSIVID)
 +24                   IF $GET(PSSTOTAL)>131
                           WRITE "("_$GET(ADDIEN)_") "_$PIECE(ZERO,"^")_$SELECT($GET(PSSADID)'="":" "_$GET(PSSADID),1:"")_$GET(PAD)
                           WRITE !,"=====> ",$GET(OINAME)_"  "_$GET(OIDOSE)_$SELECT($GET(OIDATED)'="":" "_$GET(OIDATED),1:"")_"  "_$GET(PSSIVID)
 +25                   SET OI=$PIECE($GET(^PSDRUG(+$PIECE(ZERO,"^",2),2)),"^")
                       IF 'OI
                           WRITE !?5,"cannot re-match, no Orderable Item for the Dispense Drug"
                           QUIT 
 +26                   SET PSSATMP=$PIECE($GET(^PS(50.7,OI,0)),"^")_"  "_$PIECE($GET(^PS(50.606,+$PIECE($GET(^(0)),"^",2),0)),"^")
 +27                   SET ^TMP($JOB,"PSSAD",PSSATMP,ADDIEN)=OI
 +28                   SET NEWOI=$PIECE($GET(^PS(50.7,+$GET(OI),0)),"^")_"  "_$PIECE($GET(^PS(50.606,+$PIECE($GET(^(0)),"^",2),0)),"^")
 +29                   KILL OIZDZ
                       SET OIZD=$PIECE($GET(^PS(50.7,+$GET(OI),0)),"^",4)
                       IF OIZD
                           SET OIZDZ="("_$EXTRACT(OIZD,4,5)_"/"_$EXTRACT(OIZD,6,7)_"/"_$EXTRACT(OIZD,2,3)_")"
 +30                   KILL PSSPADZZ
                       SET PSSPADX=$GET(PSSPADZ)-18
                       SET $PIECE(PSSPADZZ,"=",PSSPADX)=""
 +31                   SET PSSPADZZ=PSSPADZZ_"> "
 +32                   WRITE !,"New Orderable Item"_$GET(PSSPADZZ)_$GET(NEWOI)_$SELECT($GET(OIZDZ)'="":" "_$GET(OIZDZ),1:"")
 +33                   WRITE !?2,"Dispense Drugs matched to Orderable Item:"
 +34                   FOR PAA=0:0
                           SET PAA=$ORDER(^PSDRUG("ASP",OI,PAA))
                           if 'PAA!($GET(PSSOUT))
                               QUIT 
                           Begin DoDot:2
 +35                           IF ($Y+4)>IOSL
                                   DO ADDH
                                   if $GET(PSSOUT)
                                       QUIT 
 +36                           KILL PSINDATE
                               SET PSINDAT=$PIECE($GET(^PSDRUG(PAA,"I")),"^")
                               IF PSINDAT
                                   SET PSINDATE=" "_"("_$EXTRACT(PSINDAT,4,5)_"/"_$EXTRACT(PSINDAT,6,7)_"/"_$EXTRACT(PSINDAT,2,3)_")"
 +37                           IF PSINDAT
                                   IF PSINDAT<$GET(PSSYRX)
                                       QUIT 
 +38                           WRITE !?4,$PIECE($GET(^PSDRUG(PAA,0)),"^")_$GET(PSINDATE)
                               IF PAA=$PIECE(ZERO,"^",2)
                                   WRITE ?55,"(Additive link)"
                           End DoDot:2
                   End DoDot:1
 +39       IF $GET(PSSOUT)
               GOTO ADDX
 +40       DO ADDHS
           if $GET(PSSOUT)
               GOTO ADDX
 +41       SET PSSADSUM=1
 +42       SET AA=""
           FOR 
               SET AA=$ORDER(^TMP($JOB,"PSSAD",AA))
               if AA=""!($GET(PSSOUT))
                   QUIT 
               Begin DoDot:1
 +43               SET AAZ=$ORDER(^TMP($JOB,"PSSAD",AA,0))
                   SET AAZZ=+$GET(^TMP($JOB,"PSSAD",AA,+$GET(AAZ)))
 +44               IF ($Y+4)>IOSL
                       DO ADDH
                       if $GET(PSSOUT)
                           QUIT 
 +45               WRITE !!,"OI => ",AA_$SELECT($PIECE($GET(^PS(50.7,AAZZ,0)),"^",4)="":"",1:" ("_$EXTRACT($PIECE($GET(^(0)),"^",4),4,5)_"/"_$EXTRACT($PIECE($GET(^(0)),"^",4),6,7)_"/"_$EXTRACT($PIECE($GET(^(0)),"^",4),2,3)_")")
 +46               FOR PZZ=0:0
                       SET PZZ=$ORDER(^TMP($JOB,"PSSAD",AA,PZZ))
                       if 'PZZ!($GET(PSSOUT))
                           QUIT 
                       Begin DoDot:2
 +47                       IF ($Y+4)>IOSL
                               DO ADDH
                               if $GET(PSSOUT)
                                   QUIT 
 +48                      WRITE !,"("_$GET(PZZ)_") ",?13,$PIECE($GET(^PS(52.6,PZZ,0)),"^")_$SELECT($PIECE($GET(^("I")),"^")="":"",1:" ("_$EXTRACT($PIECE($GET(^("I")),"^"),4,5)_"/"_$EXTRACT($PIECE($GET(^("I")),"^"),6,7)_"/"_$EXTRACT($PIECE(...
                           ... $GET(^("I")),"^"),2,3)_")"),?69,"(Additive)"
                       End DoDot:2
 +49               if $GET(PSSOUT)
                       QUIT 
 +50               WRITE !?2,"Dispense Drugs matched to OI:"
 +51               FOR PDD=0:0
                       SET PDD=$ORDER(^PSDRUG("ASP",AAZZ,PDD))
                       if 'PDD!($GET(PSSOUT))
                           QUIT 
                       Begin DoDot:2
 +52                       IF ($Y+4)>IOSL
                               DO ADDH
                               if $GET(PSSOUT)
                                   QUIT 
 +53                       IF $PIECE($GET(^PSDRUG(PDD,"I")),"^")
                               IF $PIECE($GET(^("I")),"^")<$GET(PSSYRX)
                                   QUIT 
 +54                       WRITE !,?11,$PIECE($GET(^PSDRUG(PDD,0)),"^")_$SELECT($PIECE($GET(^("I")),"^")="":"",1:" ("_$EXTRACT($PIECE($GET(^("I")),"^"),4,5)_"/"_$EXTRACT($PIECE($GET(^("I")),"^"),6,7)_"/"_$EXTRACT($PIECE($GET(^("I")),"^"),2,3)_")")
                       End DoDot:2
               End DoDot:1
ADDX      ;
 +1        KILL ^TMP($JOB,"PSSAD")
 +2        IF $GET(PSSTYPE)="B"
               IF '$GET(PSSOUT)
                   GOTO SOL
 +3        IF '$GET(PSSOUT)
               DO PDIR
 +4        GOTO END
SOL       ;
 +1        KILL ^TMP($JOB,"PSSOL"),PSSCOTX
 +2        SET PSSWH="S"
 +3        NEW SOL,SLDD,SZZ,SOLAA,SAA,SOLIEN,SNAME,SLNEWOI,SOINAME,SOIDOSE,SOILT,SOILTX,STOTAL,SLOI,SDA,SDAT,SDOI,SDOID,SOLLT,PSSSOLZ,SOIZD,SOIZDZ,SZL,SZLA,SLID,SLIDD
 +4        DO SOLH
           SET PSSCOTX=1
 +5        IF $GET(PSSOUT)
               GOTO SEND
 +6        SET SOL=""
           FOR 
               SET SOL=$ORDER(^PS(52.7,"B",SOL))
               if SOL=""!($GET(PSSOUT))
                   QUIT 
               FOR SOLIEN=0:0
                   SET SOLIEN=$ORDER(^PS(52.7,"B",SOL,SOLIEN))
                   if 'SOLIEN!($GET(PSSOUT))
                       QUIT 
                   Begin DoDot:1
 +7                    if '$PIECE($GET(^PS(52.7,SOLIEN,0)),"^",11)
                           QUIT 
 +8                    SET ZERO=$GET(^PS(52.7,SOLIEN,0))
 +9                    SET SNAME=$PIECE(ZERO,"^")_"  ("_$PIECE(ZERO,"^",3)_")"
                       SET LEN=$LENGTH(SNAME)
 +10                   KILL SDAT
                       SET SDA=$PIECE($GET(^PS(52.7,SOLIEN,"I")),"^")
                       IF SDA
                           SET SDAT="("_$EXTRACT(SDA,4,5)_"/"_$EXTRACT(SDA,6,7)_"/"_$EXTRACT(SDA,2,3)_")"
 +11                   SET LEN=LEN+$SELECT($GET(SDAT)'="":11,1:0)
 +12                   KILL PAD
                       SET $PIECE(PAD,"=",(53-LEN))=""
                       SET PAD=$GET(PAD)_"> "
 +13                   SET SOINAME=$PIECE($GET(^PS(50.7,+$PIECE(ZERO,"^",11),0)),"^")
                       SET SOIDOSE=$PIECE($GET(^PS(50.606,+$PIECE($GET(^(0)),"^",2),0)),"^")
                       SET SOILT=$LENGTH($GET(SOINAME))+$LENGTH($GET(SOIDOSE))+2
 +14                   KILL SDOID
                       SET SDOI=$PIECE($GET(^PS(50.7,+$PIECE(ZERO,"^",11),0)),"^",4)
                       IF SDOI
                           SET SDOID="("_$EXTRACT(SDOI,4,5)_"/"_$EXTRACT(SDOI,6,7)_"/"_$EXTRACT(SDOI,2,3)_")"
 +15                   SET SOLLT=$LENGTH(SOLIEN)+3
 +16                   SET PSSTOTAL=+$GET(SOLLT)+67+$GET(SOILT)+$SELECT($GET(PDOID)'="":11,1:0)+$GET(PSSIVIDL)
 +17                   SET PSSSOLZ=+$GET(SOLLT)+53
 +18                   IF ($Y+5)>IOSL
                           DO SOLH
                           if $GET(PSSOUT)
                               QUIT 
 +19                   WRITE !!?3,"Current Solution/Orderable Item match:",!
 +20                   IF $GET(PSSTOTAL)<132
                           WRITE "("_$GET(SOLIEN)_") "_$GET(SNAME)_$SELECT($GET(SDAT)'="":" "_$GET(SDAT),1:"")_$GET(PAD)_$GET(SOINAME)_"  "_$GET(SOIDOSE)_$SELECT($GET(SDOID)'="":" "_$GET(SDOID),1:"")_"  "_$GET(PSSIVID)
 +21                   IF $GET(PSSTOTAL)>131
                           WRITE "("_$GET(SOLIEN)_") "_$GET(SNAME)_$SELECT($GET(SDAT)'="":" "_$GET(SDAT),1:"")_$GET(PAD)
                           if ($Y+4)>IOSL
                               DO SOLH
                           if $GET(PSSOUT)
                               QUIT 
                           WRITE !,"=====> ",$GET(SOINAME)_"  "_$GET(SOIDOSE)_$SELECT($GET(SDOID)'="":" "_$GET(SDOID),1:"")_"  "_$GET(PSSIVID)
 +22                   SET SLOI=$PIECE($GET(^PSDRUG(+$PIECE(ZERO,"^",2),2)),"^")
                       IF 'SLOI
                           WRITE !?5,"cannot rematch, no Item for the Dispense Drug"
                           QUIT 
 +23                   SET PSSSTMP=$PIECE($GET(^PS(50.7,+$GET(SLOI),0)),"^")_"  "_$PIECE($GET(^PS(50.606,+$PIECE($GET(^(0)),"^",2),0)),"^")
 +24                   SET ^TMP($JOB,"PSSOL",PSSSTMP,SOLIEN)=SLOI
 +25                   SET SLNEWOI=$PIECE($GET(^PS(50.7,+$GET(SLOI),0)),"^")_"  "_$PIECE($GET(^PS(50.606,+$PIECE($GET(^(0)),"^",2),0)),"^")
 +26                   KILL SOIZDZ
                       SET SOIZD=$PIECE($GET(^PS(50.7,+$GET(SLOI),0)),"^",4)
                       IF SOIZD
                           SET SOIZDZ="("_$EXTRACT(SOIZD,4,5)_"/"_$EXTRACT(SOIZD,6,7)_"/"_$EXTRACT(SOIZD,2,3)_")"
 +27                   KILL SZL
                       SET SZLA=$GET(PSSSOLZ)-18
                       SET $PIECE(SZL,"=",SZLA)=""
                       SET SZL=SZL_"> "
 +28                   WRITE !,"New Orderable Item"_$GET(SZL)_$GET(SLNEWOI)_$SELECT($GET(SOIZDZ)'="":" "_$GET(SOIZDZ),1:"")
 +29                   WRITE !?2,"Dispense Drugs matched to Orderable Item:"
 +30                   FOR SAA=0:0
                           SET SAA=$ORDER(^PSDRUG("ASP",SLOI,SAA))
                           if 'SAA!($GET(PSSOUT))
                               QUIT 
                           Begin DoDot:2
 +31                           IF ($Y+4)>IOSL
                                   DO SOLH
                                   if $GET(PSSOUT)
                                       QUIT 
 +32                           KILL SLID
                               SET SLIDD=$PIECE($GET(^PSDRUG(SAA,"I")),"^")
                               IF SLIDD
                                   SET SLID=" "_"("_$EXTRACT(SLIDD,4,5)_"/"_$EXTRACT(SLIDD,6,7)_"/"_$EXTRACT(SLIDD,2,3)_")"
 +33                           IF SLIDD
                                   IF SLIDD<$GET(PSSYRX)
                                       QUIT 
 +34                           WRITE !?4,$PIECE($GET(^PSDRUG(SAA,0)),"^")_$GET(SLID)
                               IF SAA=$PIECE(ZERO,"^",2)
                                   WRITE ?59,"(Solution link)"
                           End DoDot:2
                   End DoDot:1
 +35       IF $GET(PSSOUT)
               GOTO SEND
 +36       DO SOLHS
           if $GET(PSSOUT)
               GOTO SEND
 +37       SET PSSSOSUM=1
 +38       SET SOLAA=""
           FOR 
               SET SOLAA=$ORDER(^TMP($JOB,"PSSOL",SOLAA))
               if SOLAA=""!($GET(PSSOUT))
                   QUIT 
               Begin DoDot:1
 +39               SET SSZ=$ORDER(^TMP($JOB,"PSSOL",SOLAA,0))
                   SET SSZZ=+$GET(^TMP($JOB,"PSSOL",SOLAA,+$GET(SSZ)))
 +40               IF ($Y+4)>IOSL
                       DO SOLH
                       if $GET(PSSOUT)
                           QUIT 
 +41               WRITE !!,"OI => ",SOLAA_$SELECT($PIECE($GET(^PS(50.7,SSZZ,0)),"^",4)="":"",1:" ("_$EXTRACT($PIECE($GET(^(0)),"^",4),4,5)_"/"_$EXTRACT($PIECE($GET(^(0)),"^",4),6,7)_"/"_$EXTRACT($PIECE($GET(^(0)),"^",4),2,3)_")")
 +42               FOR SZZ=0:0
                       SET SZZ=$ORDER(^TMP($JOB,"PSSOL",SOLAA,SZZ))
                       if 'SZZ!($GET(PSSOUT))
                           QUIT 
                       Begin DoDot:2
 +43                       IF ($Y+4)>IOSL
                               DO SOLH
                               if $GET(PSSOUT)
                                   QUIT 
 +44                      WRITE !,"("_$GET(SZZ)_") ",?13,$PIECE($GET(^PS(52.7,SZZ,0)),"^")_"   ("_$PIECE($GET(^(0)),"^",3)_")"_$SELECT($PIECE($GET(^("I")),"^")="":"",1:" ("_$EXTRACT($PIECE($GET(^("I")),"^"),4,5)_"/"_...
                           ... $EXTRACT($PIECE($GET(^("I")),"^"),6,7)_"/"_$EXTRACT($PIECE($GET(^("I")),"^"),2,3)_")")
                           WRITE ?67,"(Solution)"
                       End DoDot:2
 +45               if $GET(PSSOUT)
                       QUIT 
 +46               WRITE !?2,"Dispense Drugs matched to OI:"
 +47               FOR SLDD=0:0
                       SET SLDD=$ORDER(^PSDRUG("ASP",SSZZ,SLDD))
                       if 'SLDD!($GET(PSSOUT))
                           QUIT 
                       Begin DoDot:2
 +48                       IF ($Y+4)>IOSL
                               DO SOLH
                               if $GET(PSSOUT)
                                   QUIT 
 +49                       IF $PIECE($GET(^PSDRUG(SLDD,"I")),"^")
                               IF $PIECE($GET(^("I")),"^")<$GET(PSSYRX)
                                   QUIT 
 +50                       WRITE !?11,$PIECE($GET(^PSDRUG(SLDD,0)),"^")_$SELECT($PIECE($GET(^("I")),"^")="":"",1:" ("_$EXTRACT($PIECE($GET(^("I")),"^"),4,5)_"/"_$EXTRACT($PIECE($GET(^("I")),"^"),6,7)_"/"_$EXTRACT($PIECE($GET(^("I")),"^"),2,3)_")")
                       End DoDot:2
               End DoDot:1
 +51       IF '$GET(PSSOUT)
               DO PDIR
SEND      ;
 +1        KILL ^TMP($JOB,"PSSOL")
END        IF $GET(PSSDV)="C"
               WRITE !
 +1       IF '$TEST
               WRITE @IOF
 +2        KILL PSSTOTAL,PSSIVID,PSSIVIDL,PSSTYPE,PSSDV,PSSWH,PSSCOT,PSSOUT,PSSCOTX,PSSADSUM,PSSSOSUM,PSSYRX
 +3        DO ^%ZISC
           if $DATA(ZTQUEUED)
               SET ZTREQ="@"
           QUIT 
ADDH      ;
 +1        IF $GET(PSSCOT)=1
               WRITE @IOF
               WRITE !?5,"ADDITIVE REPORT    (Additive Internal number in parenthesis)",?67,"PAGE: "_$GET(PSSCOT)
               SET PSSCOT=PSSCOT+1
               QUIT 
 +2        IF $GET(PSSDV)="C"
               KILL DIR
               SET DIR(0)="E"
               SET DIR("A")="Press Return to continue, '^' to exit"
               DO ^DIR
               KILL DIR
               IF 'Y
                   SET PSSOUT=1
                   QUIT 
 +3        WRITE @IOF
           WRITE !?8,"ADDITIVE "_$SELECT('$GET(PSSADSUM):"REPORT",1:"SUMMARY")_"   (continued)"
           WRITE ?67,"PAGE: "_$GET(PSSCOT)
           SET PSSCOT=PSSCOT+1
 +4        QUIT 
ADDHS     ;
 +1        IF $GET(PSSDV)="C"
               KILL DIR
               SET DIR(0)="E"
               SET DIR("A")="Press Return to continue, '^' to exit"
               DO ^DIR
               KILL DIR
               IF 'Y
                   SET PSSOUT=1
                   QUIT 
 +2        WRITE @IOF
           WRITE !!?5,"ADDITIVE SUMMARY"
           WRITE ?67,"PAGE: "_$GET(PSSCOT)
           SET PSSCOT=PSSCOT+1
 +3        QUIT 
SOLH      ;
 +1        IF '$GET(PSSCOTX)
               Begin DoDot:1
 +2                IF $GET(PSSDV)="C"
                       IF $GET(PSSCOT)'=1
                           KILL DIR
                           SET DIR(0)="E"
                           SET DIR("A")="Press Return to continue, '^' to exit"
                           DO ^DIR
                           KILL DIR
                           IF 'Y
                               SET PSSOUT=1
               End DoDot:1
               if $GET(PSSOUT)
                   QUIT 
               WRITE @IOF
               WRITE !?5,"SOLUTION REPORT   (Solution Internal number in parenthesis)",?67,"PAGE: "_$GET(PSSCOT)
               SET PSSCOT=PSSCOT+1
               QUIT 
 +3        IF $GET(PSSDV)="C"
               KILL DIR
               SET DIR(0)="E"
               SET DIR("A")="Press Return to continue, '^' to exit"
               DO ^DIR
               KILL DIR
               IF 'Y
                   SET PSSOUT=1
                   QUIT 
 +4        WRITE @IOF
           WRITE !?8,"SOLUTION "_$SELECT('$GET(PSSSOSUM):"REPORT",1:"SUMMARY")_"   (continued)"
           WRITE ?67,"PAGE: "_$GET(PSSCOT)
           SET PSSCOT=PSSCOT+1
 +5        QUIT 
SOLHS     ;
 +1        IF $GET(PSSDV)="C"
               KILL DIR
               SET DIR(0)="E"
               SET DIR("A")="Press Return to continue, '^' to exit"
               DO ^DIR
               KILL DIR
               IF 'Y
                   SET PSSOUT=1
                   QUIT 
 +2        WRITE @IOF
           WRITE !!?5,"SOLUTION SUMMARY"
           WRITE ?67,"PAGE: "_$GET(PSSCOT)
           SET PSSCOT=PSSCOT+1
 +3        QUIT 
PDIR      ;
 +1        if $GET(PSSDV)'="C"
               QUIT 
 +2        WRITE !
           SET DIR(0)="E"
           SET DIR("A")="Pres Return to continue, '^' to exit"
           DO ^DIR
           KILL DIR
           IF 'Y
               SET PSSOUT=1
 +3        QUIT