PSSUTLPR ;BIR/RTR-Pre release utility routine ;02/14/00
;;1.0;PHARMACY DATA MANAGEMENT;**34,47**;9/30/97
;
TEXT ;Text for pre-release report
W !!,"The current Orderable Item structure keeps Additives and Solutions matched to",!,"Orderable Items flagged for IV use. All Dispense Drugs are currently matched to",!,"Orderable Items that are not flagged for IV Use. This was done"
W " to control "
W !,"the finishing process of IV and Unit Dose orders entered through CPRS.",!,"The new Orderable Item structure will inactivate all IV flagged Orderable",!,"Items. All Additives and Solutions will be re-matched to non-IV flagged"
W !,"Orderable Items, based on their Dispense Drug links.",!
W ! K DIR S DIR(0)="E" D ^DIR K DIR I Y["^"!($D(DIRUT)) K Y S PSSOUT=1 Q
K PSSTYPE
K DIR S DIR(0)="S^A:ADDITIVES;S:SOLUTIONS;B:BOTH",DIR("A")="Print report for Additives, Solutions, or Both",DIR("B")="B"
S DIR("?")=" ",DIR("?",1)="Enter 'A' to see how the Additives will be re-matched in the new Orderable"
S DIR("?",2)="Item structure, enter 'S' to see how the Solutions will be re-matched in the",DIR("?",3)="new Orderable Item structure, enter 'B' to see both, enter '^' to exit."
Q
INS ;Convert non-numeric Instructions to Nouns
D CHECK I $G(PSSNOCON) K PSSNOCON Q
K PSSNOCON
W !!,"This option will move all non-numeric Instructions to the Noun field in the",!,"Dosage Form file. If you do this, you will then need to review the Nouns and decide to mark them for Inpatient, Outpatient or both."
W ! K DIR S DIR(0)="Y",DIR("A")="Convert all non-numeric Instructions to Nouns",DIR("B")="Y" D ^DIR I Y'=1 W !!,"Nothing converted.",! G INSQ
W !,"Converting.." H 1
N PSSD,PSSI,PSSINS
F PSSD=0:0 S PSSD=$O(^PS(50.606,PSSD)) Q:'PSSD D:$O(^PS(50.606,PSSD,"INS",0))
.F PSSI=0:0 S PSSI=$O(^PS(50.606,PSSD,"INS",PSSI)) Q:'PSSI S PSSINS=$P($G(^PS(50.606,PSSD,"INS",PSSI,0)),"^") I PSSINS'="" D
..I PSSINS?.N!(PSSINS?.N1".".N) Q
..I $O(^PS(50.606,PSSD,"NOUN","B",PSSINS,0)) Q
..K DIC,DD,DO S DA(1)=PSSD,DIC="^PS(50.606,"_DA(1)_",""NOUN"",",DIC(0)="L",X=PSSINS D FILE^DICN W "." K DD,DO,DIC
W !,"Finished converting Instructions to Nouns!"
INSQ W !
Q
NOUN ;Enter/edit Nouns
D CHECK I $G(PSSNOCON) K PSSNOCON G NOUNQ
K PSSNOCON
W ! K DIC S DIC(0)="QEAMZ",DIC="^PS(50.606," D ^DIC I Y<1!($D(DTOUT))!($D(DUOUT)) G NOUNQ
S PSSDOSE=+Y
NOUNA W !!?2,"Dosage Form => ",$P($G(^PS(50.606,+PSSDOSE,0)),"^"),! K DIC S DA(1)=PSSDOSE,DIC="^PS(50.606,"_PSSDOSE_",""NOUN"",",DIC(0)="QEAMLZ" D D ^DIC I Y<1!($D(DUOUT))!($D(DTOUT)) G NOUNC
.S DIC("W")="W "" ""_$P($G(^PS(50.606,PSSDOSE,""NOUN"",+Y,0)),""^"",2)"
S PSSNOUN=+Y,PSSOTH=$S($P($G(^PS(59.7,1,40.2)),"^"):1,1:0)
K DIE S DA(1)=PSSDOSE,DA=PSSNOUN,DR=".01;S:'$G(PSSOTH) Y=""@1"";3;@1;1;2",DIE="^PS(50.606,"_PSSDOSE_",""NOUN"","
D ^DIE K DIE,PSSOTH G:'$D(Y)&('$D(DTOUT)) NOUNA
NOUNC W ! K DIE,PSSOTH S DA=PSSDOSE,DIE="^PS(50.606,",DR="10" D ^DIE K DIE G NOUN
NOUNQ W ! K DIC,DR,DIE,PSSDOSE,PSSNOUN,PSSOTH
Q
CHECK ;Check for running conversion
S PSSNOCON=0
S PSSYSIEN=$O(^PS(59.7,0))
I $P($G(^PS(59.7,+$G(PSSYSIEN),80)),"^",3)=2 S PSSNOCON=1
K PSSYSIEN I PSSNOCON W $C(7) W !!,"Cannot use this option, Dosage conversion is currently running!",!
Q
TRAC ;
N PSZZ,PSZZ1,PSZZ2,PSZSTA,PSZSTO,PSZWHO
S PSZZ1=$O(^PS(59.7,0)),PSZZ2=$P($G(^PS(59.7,+$G(PSZZ1),80)),"^",3)
I PSZZ2 D
.S Y=$P($G(^PS(59.7,+$G(PSZZ1),80)),"^",4) I Y D DD^%DT S PSZSTA=$G(Y)
.S Y=$P($G(^PS(59.7,+$G(PSZZ1),80)),"^",5) I Y D DD^%DT S PSZSTO=$G(Y)
.K PSZWHOAR S DA=+$P($G(^PS(59.7,+$G(PSZZ1),80)),"^",6) I DA S DIC=200,DR=".01",DIQ(0)="E",DIQ="PSZWHOAR" D EN^DIQ1 S PSZWHO=$G(PSZWHOAR(200,DA,.01,"E")) K DIQ,PSZWHOAR,DR,DIC,DA
H 1 W @IOF W !,?15,"Dosage Conversion Tracker Status",! F PSZZ=1:1:77 W "="
I 'PSZZ2 W !,"The Dosage conversion has never been run!",! G TRACQ
I PSZZ2=1 W !,"The Dosage conversion is queued to run at "_$G(PSZSTA),!,"It was queued by "_$G(PSZWHO),! G TRACQ
I PSZZ2=2 W !,"The Dosage conversion is currently running.",!,"It started at "_$G(PSZSTA),! G TRACQ
I PSZZ2=3 W !,"The Dosage conversion was last run by "_$G(PSZWHO),!,"It started on "_$G(PSZSTA)_" and ended on "_$G(PSZSTO),!
TRACQ W ! K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR W ! K DIR
Q
FRE ;
W ! K DIC S DIC(0)="QEAMZ",DIC("A")="Select Medication Instruction: ",DIC="^PS(51," D ^DIC K DIC I Y<1!($D(DTOUT))!($D(DUOUT)) G FREQ
K DIE W ! S DA=+Y,DIE="^PS(51,",DR="31" D ^DIE G:$D(Y)!($D(DTOUT)) FREQ
G FRE
FREQ W ! K DA,DIE,DR,DIC
Q
FRRP ;
W !!,"This report shows the MEDICATION INSTRUCTION file entries, along with the",!,"Synonym, Frequency and Expansion. Use the Edit Medication Instruction",!,"Frequency option to enter appropriate frequencies.",!
K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP) W !!,"Nothing queued to print.",!! Q
I $D(IO("Q")) S ZTRTN="ENF^PSSUTLPR",ZTDESC="Med Instruction Frequency report" D ^%ZTLOAD K %ZIS W !,"Report queued to print." Q
ENF ;
U IO
S PSSOUT=0,PSSDV=$S($E(IOST)="C":"C",1:"P"),PSSCT=1
K PSSLINE,PSSF,PSSFR S $P(PSSLINE,"-",79)=""
D ENFH
S PSSF="" F S PSSF=$O(^PS(51,"B",PSSF)) Q:PSSF=""!($G(PSSOUT)) F PSSFR=0:0 S PSSFR=$O(^PS(51,"B",PSSF,PSSFR)) Q:'PSSFR!($G(PSSOUT)) I $G(^PS(51,"B",PSSF,PSSFR))="" D
.I ($Y+5)>IOSL D ENFH Q:$G(PSSOUT)
.S PSSFNODE=$G(^PS(51,PSSFR,0)) Q:PSSFNODE=""
.W !,$P(PSSFNODE,"^"),?11,$P(PSSFNODE,"^",3),?22,$P(PSSFNODE,"^",8),?30,$P(PSSFNODE,"^",2)
I '$G(PSSOUT),$G(PSSDV)="C" W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
I $G(PSSDV)="C" W !
E W @IOF
K PSSLINE,PSSOUT,PSSF,PSSFR,PSSCT,PSSDV D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
Q
ENFH ;
I $G(PSSDV)="C",$G(PSSCT)'=1 W ! 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,"MEDICATION INSTRUCTION FREQUENCY REPORT"_$S($G(PSSCT)=1:"",1:" (cont.)"),?68,"PAGE: "_$G(PSSCT) S PSSCT=PSSCT+1
W !!,"NAME",?10,"SYNONYM",?21,"FREQUENCY",?34,"EXPANSION",!,PSSLINE,!
Q
SLS ;Called from PSSORUTL
K PSSJZUNT
I $P($G(PSSX(PSSA,PL3)),"^",2)'["/" S $P(PSSX(PSSA,PL3),"^",5)=$P($G(PSSX(PSSA,PL3)),"^")_$P($G(PSSX(PSSA,PL3)),"^",2) Q
N PSSJ,PSSJ1,PSSJ2,PSSI,PSSJA,PSSJA1,PSSJB,PSSJB1,PSSWZI,PSSWZSL,PSSWZND,PSSWZSL1,PSSWZSL2,PSSWZSL3,PSSWZSL4,PSSWZSL5,PSSWZ50
S PSSJ=$P($G(PSSX(PSSA,PL3)),"^"),PSSI=$P($G(PSSX(PSSA,PL3)),"^",2)
S PSSWZSL=0,PSSWZI=+$P($G(PSSX(PSSA,PL3)),"^",6),PSSWZ50=$P($G(^PSDRUG(PSSWZI,"DOS")),"^")
S PSSWZND=$$PSJST^PSNAPIS(+$P($G(^PSDRUG(PSSWZI,"ND")),"^"),+$P($G(^PSDRUG(PSSWZI,"ND")),"^",3)) S PSSWZND=+$P($G(PSSWZND),"^",2) ;I $G(PSSWZND),$G(PSSWZ50),+$G(PSSWZND)'=+$G(PSSWZ50) S PSSWZSL=1
S PSSJA=$P(PSSI,"/"),PSSJB=$P(PSSI,"/",2),PSSJA1=+$G(PSSJA),PSSJB1=+$G(PSSJB)
I '$G(PSSWZND) S $P(PSSX(PSSA,PL3),"^",5)=$P(PSSX(PSSA,PL3),"^") G SLSQ
S PSSWZSL2=PSSWZ50/PSSWZND,PSSWZSL3=PSSWZSL2*+$P($G(PSSX(PSSA,PL3)),"^",3) S PSSWZSL4=PSSWZSL3*$S($G(PSSJB1):PSSJB1,1:1) S PSSWZSL5=$S('$G(PSSJB1):PSSWZSL4_$G(PSSJB),1:PSSWZSL4_$P(PSSJB,PSSJB1,2))
S PSSJ2=$S('$G(PSSJA1):PSSJ,1:($G(PSSJA1)*PSSJ))_$S($G(PSSJA1):$P(PSSJA,PSSJA1,2),1:PSSJA)_"/"_$G(PSSWZSL5)
S PSSJZUNT=$P(PSSI,"/")_"/"_$G(PSSWZSL4)_$S('$G(PSSJB1):$G(PSSJB),1:$P(PSSJB,PSSJB1,2)) S $P(PSSX(PSSA,PL3),"^",2)=PSSJZUNT
S $P(PSSX(PSSA,PL3),"^",5)=PSSJ2
SLSQ Q
;
ADDRP ;
D ^DIR K DIR S PSSTYPE=Y I Y["^"!($D(DIRUT)) K PSSTYPE W ! Q
W !!?3,"*** THIS REPORT IS DESIGNED FOR 132 COLUMNS ***",!
K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP) W !,"Nothing queued to print.",! K PSSTYPE W ! Q
I '$G(DT) S DT=$$DT^XLFDT
S X1=DT,X2=-365 D C^%DTC S PSSYRX=$G(X) K X,X1,X2
I $D(IO("Q")) S ZTRTN="ADD^PSSREMCH",ZTDESC="Orderable Item re-matching report",ZTSAVE("PSSTYPE")="",ZTSAVE("PSSYRX")="" D ^%ZTLOAD K %ZIS W !,"Report queued to print." G END^PSSREMCH
G ADD^PSSREMCH
PSSUTLPR ;BIR/RTR-Pre release utility routine ;02/14/00
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**34,47**;9/30/97
+2 ;
TEXT ;Text for pre-release report
+1 WRITE !!,"The current Orderable Item structure keeps Additives and Solutions matched to",!,"Orderable Items flagged for IV use. All Dispense Drugs are currently matched to",!,"Orderable Items that are not flagged for IV Use. This was done"
+2 WRITE " to control "
+3 WRITE !,"the finishing process of IV and Unit Dose orders entered through CPRS.",!,"The new Orderable Item structure will inactivate all IV flagged Orderable",!,"Items. All Additives and Solutions will be re-matched to non-IV flagged"
+4 WRITE !,"Orderable Items, based on their Dispense Drug links.",!
+5 WRITE !
KILL DIR
SET DIR(0)="E"
DO ^DIR
KILL DIR
IF Y["^"!($DATA(DIRUT))
KILL Y
SET PSSOUT=1
QUIT
+6 KILL PSSTYPE
+7 KILL DIR
SET DIR(0)="S^A:ADDITIVES;S:SOLUTIONS;B:BOTH"
SET DIR("A")="Print report for Additives, Solutions, or Both"
SET DIR("B")="B"
+8 SET DIR("?")=" "
SET DIR("?",1)="Enter 'A' to see how the Additives will be re-matched in the new Orderable"
+9 SET DIR("?",2)="Item structure, enter 'S' to see how the Solutions will be re-matched in the"
SET DIR("?",3)="new Orderable Item structure, enter 'B' to see both, enter '^' to exit."
+10 QUIT
INS ;Convert non-numeric Instructions to Nouns
+1 DO CHECK
IF $GET(PSSNOCON)
KILL PSSNOCON
QUIT
+2 KILL PSSNOCON
+3 WRITE !!,"This option will move all non-numeric Instructions to the Noun field in the",!,"Dosage Form file. If you do this, you will then need to review the Nouns and decide to mark them for Inpatient, Outpatient or both."
+4 WRITE !
KILL DIR
SET DIR(0)="Y"
SET DIR("A")="Convert all non-numeric Instructions to Nouns"
SET DIR("B")="Y"
DO ^DIR
IF Y'=1
WRITE !!,"Nothing converted.",!
GOTO INSQ
+5 WRITE !,"Converting.."
HANG 1
+6 NEW PSSD,PSSI,PSSINS
+7 FOR PSSD=0:0
SET PSSD=$ORDER(^PS(50.606,PSSD))
IF 'PSSD
QUIT
IF $ORDER(^PS(50.606,PSSD,"INS",0))
Begin DoDot:1
+8 FOR PSSI=0:0
SET PSSI=$ORDER(^PS(50.606,PSSD,"INS",PSSI))
IF 'PSSI
QUIT
SET PSSINS=$PIECE($GET(^PS(50.606,PSSD,"INS",PSSI,0)),"^")
IF PSSINS'=""
Begin DoDot:2
+9 IF PSSINS?.N!(PSSINS?.N1".".N)
QUIT
+10 IF $ORDER(^PS(50.606,PSSD,"NOUN","B",PSSINS,0))
QUIT
+11 KILL DIC,DD,DO
SET DA(1)=PSSD
SET DIC="^PS(50.606,"_DA(1)_",""NOUN"","
SET DIC(0)="L"
SET X=PSSINS
DO FILE^DICN
WRITE "."
KILL DD,DO,DIC
End DoDot:2
End DoDot:1
+12 WRITE !,"Finished converting Instructions to Nouns!"
INSQ WRITE !
+1 QUIT
NOUN ;Enter/edit Nouns
+1 DO CHECK
IF $GET(PSSNOCON)
KILL PSSNOCON
GOTO NOUNQ
+2 KILL PSSNOCON
+3 WRITE !
KILL DIC
SET DIC(0)="QEAMZ"
SET DIC="^PS(50.606,"
DO ^DIC
IF Y<1!($DATA(DTOUT))!($DATA(DUOUT))
GOTO NOUNQ
+4 SET PSSDOSE=+Y
NOUNA WRITE !!?2,"Dosage Form => ",$PIECE($GET(^PS(50.606,+PSSDOSE,0)),"^"),!
KILL DIC
SET DA(1)=PSSDOSE
SET DIC="^PS(50.606,"_PSSDOSE_",""NOUN"","
SET DIC(0)="QEAMLZ"
Begin DoDot:1
+1 SET DIC("W")="W "" ""_$P($G(^PS(50.606,PSSDOSE,""NOUN"",+Y,0)),""^"",2)"
End DoDot:1
DO ^DIC
IF Y<1!($DATA(DUOUT))!($DATA(DTOUT))
GOTO NOUNC
+2 SET PSSNOUN=+Y
SET PSSOTH=$SELECT($PIECE($GET(^PS(59.7,1,40.2)),"^"):1,1:0)
+3 KILL DIE
SET DA(1)=PSSDOSE
SET DA=PSSNOUN
SET DR=".01;S:'$G(PSSOTH) Y=""@1"";3;@1;1;2"
SET DIE="^PS(50.606,"_PSSDOSE_",""NOUN"","
+4 DO ^DIE
KILL DIE,PSSOTH
IF '$DATA(Y)&('$DATA(DTOUT))
GOTO NOUNA
NOUNC WRITE !
KILL DIE,PSSOTH
SET DA=PSSDOSE
SET DIE="^PS(50.606,"
SET DR="10"
DO ^DIE
KILL DIE
GOTO NOUN
NOUNQ WRITE !
KILL DIC,DR,DIE,PSSDOSE,PSSNOUN,PSSOTH
+1 QUIT
CHECK ;Check for running conversion
+1 SET PSSNOCON=0
+2 SET PSSYSIEN=$ORDER(^PS(59.7,0))
+3 IF $PIECE($GET(^PS(59.7,+$GET(PSSYSIEN),80)),"^",3)=2
SET PSSNOCON=1
+4 KILL PSSYSIEN
IF PSSNOCON
WRITE $CHAR(7)
WRITE !!,"Cannot use this option, Dosage conversion is currently running!",!
+5 QUIT
TRAC ;
+1 NEW PSZZ,PSZZ1,PSZZ2,PSZSTA,PSZSTO,PSZWHO
+2 SET PSZZ1=$ORDER(^PS(59.7,0))
SET PSZZ2=$PIECE($GET(^PS(59.7,+$GET(PSZZ1),80)),"^",3)
+3 IF PSZZ2
Begin DoDot:1
+4 SET Y=$PIECE($GET(^PS(59.7,+$GET(PSZZ1),80)),"^",4)
IF Y
DO DD^%DT
SET PSZSTA=$GET(Y)
+5 SET Y=$PIECE($GET(^PS(59.7,+$GET(PSZZ1),80)),"^",5)
IF Y
DO DD^%DT
SET PSZSTO=$GET(Y)
+6 KILL PSZWHOAR
SET DA=+$PIECE($GET(^PS(59.7,+$GET(PSZZ1),80)),"^",6)
IF DA
SET DIC=200
SET DR=".01"
SET DIQ(0)="E"
SET DIQ="PSZWHOAR"
DO EN^DIQ1
SET PSZWHO=$GET(PSZWHOAR(200,DA,.01,"E"))
KILL DIQ,PSZWHOAR,DR,DIC,DA
End DoDot:1
+7 HANG 1
WRITE @IOF
WRITE !,?15,"Dosage Conversion Tracker Status",!
FOR PSZZ=1:1:77
WRITE "="
+8 IF 'PSZZ2
WRITE !,"The Dosage conversion has never been run!",!
GOTO TRACQ
+9 IF PSZZ2=1
WRITE !,"The Dosage conversion is queued to run at "_$GET(PSZSTA),!,"It was queued by "_$GET(PSZWHO),!
GOTO TRACQ
+10 IF PSZZ2=2
WRITE !,"The Dosage conversion is currently running.",!,"It started at "_$GET(PSZSTA),!
GOTO TRACQ
+11 IF PSZZ2=3
WRITE !,"The Dosage conversion was last run by "_$GET(PSZWHO),!,"It started on "_$GET(PSZSTA)_" and ended on "_$GET(PSZSTO),!
TRACQ WRITE !
KILL DIR
SET DIR(0)="E"
SET DIR("A")="Press Return to continue"
DO ^DIR
WRITE !
KILL DIR
+1 QUIT
FRE ;
+1 WRITE !
KILL DIC
SET DIC(0)="QEAMZ"
SET DIC("A")="Select Medication Instruction: "
SET DIC="^PS(51,"
DO ^DIC
KILL DIC
IF Y<1!($DATA(DTOUT))!($DATA(DUOUT))
GOTO FREQ
+2 KILL DIE
WRITE !
SET DA=+Y
SET DIE="^PS(51,"
SET DR="31"
DO ^DIE
IF $DATA(Y)!($DATA(DTOUT))
GOTO FREQ
+3 GOTO FRE
FREQ WRITE !
KILL DA,DIE,DR,DIC
+1 QUIT
FRRP ;
+1 WRITE !!,"This report shows the MEDICATION INSTRUCTION file entries, along with the",!,"Synonym, Frequency and Expansion. Use the Edit Medication Instruction",!,"Frequency option to enter appropriate frequencies.",!
+2 KILL IOP,%ZIS,POP
SET %ZIS="QM"
DO ^%ZIS
IF $GET(POP)
WRITE !!,"Nothing queued to print.",!!
QUIT
+3 IF $DATA(IO("Q"))
SET ZTRTN="ENF^PSSUTLPR"
SET ZTDESC="Med Instruction Frequency report"
DO ^%ZTLOAD
KILL %ZIS
WRITE !,"Report queued to print."
QUIT
ENF ;
+1 USE IO
+2 SET PSSOUT=0
SET PSSDV=$SELECT($EXTRACT(IOST)="C":"C",1:"P")
SET PSSCT=1
+3 KILL PSSLINE,PSSF,PSSFR
SET $PIECE(PSSLINE,"-",79)=""
+4 DO ENFH
+5 SET PSSF=""
FOR
SET PSSF=$ORDER(^PS(51,"B",PSSF))
IF PSSF=""!($GET(PSSOUT))
QUIT
FOR PSSFR=0:0
SET PSSFR=$ORDER(^PS(51,"B",PSSF,PSSFR))
IF 'PSSFR!($GET(PSSOUT))
QUIT
IF $GET(^PS(51,"B",PSSF,PSSFR))=""
Begin DoDot:1
+6 IF ($Y+5)>IOSL
DO ENFH
IF $GET(PSSOUT)
QUIT
+7 SET PSSFNODE=$GET(^PS(51,PSSFR,0))
IF PSSFNODE=""
QUIT
+8 WRITE !,$PIECE(PSSFNODE,"^"),?11,$PIECE(PSSFNODE,"^",3),?22,$PIECE(PSSFNODE,"^",8),?30,$PIECE(PSSFNODE,"^",2)
End DoDot:1
+9 IF '$GET(PSSOUT)
IF $GET(PSSDV)="C"
WRITE !!,"End of Report."
KILL DIR
SET DIR(0)="E"
SET DIR("A")="Press Return to continue"
DO ^DIR
KILL DIR
+10 IF $GET(PSSDV)="C"
WRITE !
+11 IF '$TEST
WRITE @IOF
+12 KILL PSSLINE,PSSOUT,PSSF,PSSFR,PSSCT,PSSDV
DO ^%ZISC
IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+13 QUIT
ENFH ;
+1 IF $GET(PSSDV)="C"
IF $GET(PSSCT)'=1
WRITE !
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,"MEDICATION INSTRUCTION FREQUENCY REPORT"_$SELECT($GET(PSSCT)=1:"",1:" (cont.)"),?68,"PAGE: "_$GET(PSSCT)
SET PSSCT=PSSCT+1
+3 WRITE !!,"NAME",?10,"SYNONYM",?21,"FREQUENCY",?34,"EXPANSION",!,PSSLINE,!
+4 QUIT
SLS ;Called from PSSORUTL
+1 KILL PSSJZUNT
+2 IF $PIECE($GET(PSSX(PSSA,PL3)),"^",2)'["/"
SET $PIECE(PSSX(PSSA,PL3),"^",5)=$PIECE($GET(PSSX(PSSA,PL3)),"^")_$PIECE($GET(PSSX(PSSA,PL3)),"^",2)
QUIT
+3 NEW PSSJ,PSSJ1,PSSJ2,PSSI,PSSJA,PSSJA1,PSSJB,PSSJB1,PSSWZI,PSSWZSL,PSSWZND,PSSWZSL1,PSSWZSL2,PSSWZSL3,PSSWZSL4,PSSWZSL5,PSSWZ50
+4 SET PSSJ=$PIECE($GET(PSSX(PSSA,PL3)),"^")
SET PSSI=$PIECE($GET(PSSX(PSSA,PL3)),"^",2)
+5 SET PSSWZSL=0
SET PSSWZI=+$PIECE($GET(PSSX(PSSA,PL3)),"^",6)
SET PSSWZ50=$PIECE($GET(^PSDRUG(PSSWZI,"DOS")),"^")
+6 ;I $G(PSSWZND),$G(PSSWZ50),+$G(PSSWZND)'=+$G(PSSWZ50) S PSSWZSL=1
SET PSSWZND=$$PSJST^PSNAPIS(+$PIECE($GET(^PSDRUG(PSSWZI,"ND")),"^"),+$PIECE($GET(^PSDRUG(PSSWZI,"ND")),"^",3))
SET PSSWZND=+$PIECE($GET(PSSWZND),"^",2)
+7 SET PSSJA=$PIECE(PSSI,"/")
SET PSSJB=$PIECE(PSSI,"/",2)
SET PSSJA1=+$GET(PSSJA)
SET PSSJB1=+$GET(PSSJB)
+8 IF '$GET(PSSWZND)
SET $PIECE(PSSX(PSSA,PL3),"^",5)=$PIECE(PSSX(PSSA,PL3),"^")
GOTO SLSQ
+9 SET PSSWZSL2=PSSWZ50/PSSWZND
SET PSSWZSL3=PSSWZSL2*+$PIECE($GET(PSSX(PSSA,PL3)),"^",3)
SET PSSWZSL4=PSSWZSL3*$SELECT($GET(PSSJB1):PSSJB1,1:1)
SET PSSWZSL5=$SELECT('$GET(PSSJB1):PSSWZSL4_$GET(PSSJB),1:PSSWZSL4_$PIECE(PSSJB,PSSJB1,2))
+10 SET PSSJ2=$SELECT('$GET(PSSJA1):PSSJ,1:($GET(PSSJA1)*PSSJ))_$SELECT($GET(PSSJA1):$PIECE(PSSJA,PSSJA1,2),1:PSSJA)_"/"_$GET(PSSWZSL5)
+11 SET PSSJZUNT=$PIECE(PSSI,"/")_"/"_$GET(PSSWZSL4)_$SELECT('$GET(PSSJB1):$GET(PSSJB),1:$PIECE(PSSJB,PSSJB1,2))
SET $PIECE(PSSX(PSSA,PL3),"^",2)=PSSJZUNT
+12 SET $PIECE(PSSX(PSSA,PL3),"^",5)=PSSJ2
SLSQ QUIT
+1 ;
ADDRP ;
+1 DO ^DIR
KILL DIR
SET PSSTYPE=Y
IF Y["^"!($DATA(DIRUT))
KILL PSSTYPE
WRITE !
QUIT
+2 WRITE !!?3,"*** THIS REPORT IS DESIGNED FOR 132 COLUMNS ***",!
+3 KILL IOP,%ZIS,POP
SET %ZIS="QM"
DO ^%ZIS
IF $GET(POP)
WRITE !,"Nothing queued to print.",!
KILL PSSTYPE
WRITE !
QUIT
+4 IF '$GET(DT)
SET DT=$$DT^XLFDT
+5 SET X1=DT
SET X2=-365
DO C^%DTC
SET PSSYRX=$GET(X)
KILL X,X1,X2
+6 IF $DATA(IO("Q"))
SET ZTRTN="ADD^PSSREMCH"
SET ZTDESC="Orderable Item re-matching report"
SET ZTSAVE("PSSTYPE")=""
SET ZTSAVE("PSSYRX")=""
DO ^%ZTLOAD
KILL %ZIS
WRITE !,"Report queued to print."
GOTO END^PSSREMCH
+7 GOTO ADD^PSSREMCH