1 | PSALEVRP ;BIR/LTL,JMB-Stock and Reorder Report ;7/23/97
|
---|
2 | ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**15**; 10/24/97
|
---|
3 | ;This routine prints a report of all drugs with their stock and reorder
|
---|
4 | ;levels in a pharmacy location.
|
---|
5 | ;
|
---|
6 | ;References to ^PSDRUG( are covered by IA #2095
|
---|
7 | ;
|
---|
8 | D LOC G MASTER
|
---|
9 | ;
|
---|
10 | ;Gets locations
|
---|
11 | LOC S PSAOUT=0,PSALOC=+$O(^PSD(58.8,"ADISP","P",0))
|
---|
12 | I 'PSALOC W !!?5,"No Drug Accountability location has been created yet." S PSAOUT=1 G MASTER
|
---|
13 | ;
|
---|
14 | ;Collect locations in alpha order
|
---|
15 | S (PSACNT,PSALOC)=0 W !
|
---|
16 | F S PSALOC=+$O(^PSD(58.8,"ADISP","P",PSALOC)) Q:'PSALOC D
|
---|
17 | .Q:'$D(^PSD(58.8,PSALOC,0))!($P($G(^PSD(58.8,PSALOC,0)),"^")="")
|
---|
18 | .I +$G(^PSD(58.8,PSALOC,"I")),+^PSD(58.8,PSALOC,"I")'>DT Q
|
---|
19 | .Q:'$O(^PSD(58.8,PSALOC,1,0)) D SITES^PSAUTL1
|
---|
20 | .S PSACNT=PSACNT+1
|
---|
21 | .S PSALOCA($P(^PSD(58.8,PSALOC,0),"^")_PSACOMB,PSALOC)=$P(^(0),"^",3)_"^"_$P(^(0),"^",10)_"^"_+$G(^PSD(58.8,PSALOC,"I"))
|
---|
22 | S PSACHK=$O(PSALOCA("")) I PSACHK="" G MASTER
|
---|
23 | Q:$G(PSAHIS)&(PSACNT=1)
|
---|
24 | ;
|
---|
25 | DISPLOC ;Displays the available pharmacy locations.
|
---|
26 | W @IOF,!,"Choose one or many pharmacy locations:",!
|
---|
27 | S PSACNT=0,PSALOCN=""
|
---|
28 | F S PSALOCN=$O(PSALOCA(PSALOCN)) Q:PSALOCN="" D
|
---|
29 | .S PSALOC=0 F S PSALOC=$O(PSALOCA(PSALOCN,PSALOC)) Q:'PSALOC D
|
---|
30 | ..S PSACNT=PSACNT+1,PSAMENU(PSACNT,PSALOCN,PSALOC)=""
|
---|
31 | ..W !,$J(PSACNT,2)
|
---|
32 | ..W:$L(PSALOCN)>76 ?4,$P(PSALOCN,"(IP)",1)_"(IP)",!?21,$P(PSALOCN,"(IP)",2) W:$L(PSALOCN)<77 ?4,PSALOCN
|
---|
33 | ;
|
---|
34 | SELLOC W ! S DIR(0)="LO^1:"_PSACNT,DIR("A")="Select PHARMACY LOCATION",DIR("?")="Enter the number(s) of the Pharmacy Location",DIR("??")="^D HELP^PSAUTL3"
|
---|
35 | D ^DIR K DIR I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 G EXIT
|
---|
36 | Q:Y=""&('$G(PSAHIS)) I Y="",$G(PSAHIS) S PSAOUT=1 Q
|
---|
37 | S PSASEL=Y
|
---|
38 | F PSAPC=1:1 S PSANUM=+$P(PSASEL,",",PSAPC) Q:'PSANUM D
|
---|
39 | .S PSALOCN=$O(PSAMENU(PSANUM,"")),PSALOC=$O(PSAMENU(PSANUM,PSALOCN,0))
|
---|
40 | .S PSALOC(PSALOCN,PSALOC)=PSALOCA(PSALOCN,PSALOC)
|
---|
41 | ;
|
---|
42 | S PSACHK=$O(PSALOC(""))
|
---|
43 | I PSACHK="",'PSALOC W !,"There are no active pharmacy locations." G EXIT1
|
---|
44 | W ! S PSALOCN="" F S PSALOCN=$O(PSALOC(PSALOCN)) Q:PSALOCN=""!(PSAOUT) S PSALOC=0 F S PSALOC=$O(PSALOC(PSALOCN,PSALOC)) Q:'PSALOC!(PSAOUT) D
|
---|
45 | .I '$O(^PSD(58.8,PSALOC,1,0)) D
|
---|
46 | ..W:$L(PSALOCN)>79 !!,$P(PSALOCN,"(IP)",1)_"(IP)",!!?17,$P(PSALOCN,"(IP)",2) W:$L(PSALOCN)<80 !!,PSALOCN
|
---|
47 | ..W !,"There are no drugs in the pharmacy location."
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | MASTER G:'$D(^XUSEC("PSA ORDERS",DUZ)) TEST S (PSAMVN,PSAMV)=0
|
---|
51 | F S PSAMV=+$O(^PSD(58.8,"ADISP","M",PSAMV)) Q:'PSAMV D
|
---|
52 | .I +$G(^PSD(58.8,PSAMV,"I")),+^PSD(58.8,PSAMV,"I")'>DT Q
|
---|
53 | .S PSAMVN=PSAMVN+1,PSAMV($P(^PSD(58.8,PSAMV,0),"^"),PSAMV)=""
|
---|
54 | G:'PSAMVN TEST
|
---|
55 | ;
|
---|
56 | DISPMV ;Displays active master vaults
|
---|
57 | W @IOF,!,"Choose one or many master vaults:",!
|
---|
58 | S PSA=0,PSAMVA="" F S PSAMVA=$O(PSAMV(PSAMVA)) Q:PSAMVA="" D
|
---|
59 | .S PSAMV=0 F S PSAMV=$O(PSAMV(PSAMVA,PSAMV)) Q:'PSAMV D
|
---|
60 | ..S PSA=PSA+1,PSAVAULT(PSA,PSAMVA,PSAMV)="" W !,$J(PSA,2)_".",?4,PSAMVA
|
---|
61 | K PSAMV
|
---|
62 | ;
|
---|
63 | SELMV ;Select displayed master vaults
|
---|
64 | W ! S DIR(0)="LO^1:"_PSA,DIR("A")="Select Master Vault",DIR("?")="Select the Master Vault that received the invoice's drugs",DIR("??")="^D MV^PSAPROC"
|
---|
65 | D ^DIR K DIR I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 Q
|
---|
66 | G:Y="" TEST S PSASEL=Y
|
---|
67 | F PSAPC=1:1 S PSA=+$P(PSASEL,",",PSAPC) Q:'PSA D
|
---|
68 | .S PSAMVA="",PSAMVA=$O(PSAVAULT(PSA,PSAMVA)) Q:PSAMVA=""
|
---|
69 | .S PSAMVIEN=+$O(PSAVAULT(PSA,PSAMVA,0)) Q:'PSAMVIEN
|
---|
70 | .S PSAMAST(PSAMVA,PSAMVIEN)=""
|
---|
71 | K PSAVAULT
|
---|
72 | ;
|
---|
73 | TEST G:PSAOUT EXIT
|
---|
74 | S PSA=$O(PSALOC("")),PSAMV=$O(PSAMAST(""))
|
---|
75 | I PSA="",PSAMV="" G EXIT
|
---|
76 | ;
|
---|
77 | DEV ;Asks device & queueing info
|
---|
78 | W !!,"Each pharmacy location can contain all drugs in the DRUG file. Therefore,",!,"this report could be very long. It is advised to queue the report to run",!,"during non-critical hours.",!
|
---|
79 | K IO("Q") K %ZIS,IOP,POP S %ZIS="Q",%ZIS("B")=""
|
---|
80 | D ^%ZIS I POP W !,"NO DEVICE SELECTED OR OUTPUT PRINTED!" Q
|
---|
81 | I $D(IO("Q")) D G EXIT
|
---|
82 | .N ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTDTH,ZTSK
|
---|
83 | .S ZTRTN="COMPILE^PSALEVRP",ZTDESC="Drug Acct. - Stock and Reorder Report"
|
---|
84 | .S:PSA'="" ZTSAVE("PSALOC(")="" S:PSAMV'="" ZTSAVE("PSAMAST(")=""
|
---|
85 | .D ^%ZTLOAD
|
---|
86 | ;
|
---|
87 | COMPILE ;Compiles data
|
---|
88 | S PSA=$O(PSALOC("")) G:PSA="" MV
|
---|
89 | S PSALOCN="" F S PSALOCN=$O(PSALOC(PSALOCN)) Q:PSALOCN="" D
|
---|
90 | .S PSALOC=0 F S PSALOC=$O(PSALOC(PSALOCN,PSALOC)) Q:'PSALOC D
|
---|
91 | ..S PSADRG=0 F S PSADRG=+$O(^PSD(58.8,PSALOC,1,PSADRG)) Q:'PSADRG D
|
---|
92 | ...Q:'$D(^PSD(58.8,PSALOC,1,PSADRG,0))!($P($G(^PSDRUG(PSADRG,0)),"^")="")
|
---|
93 | ...S ^TMP("PSALEV",$J,1,PSALOC,$P(^PSDRUG(PSADRG,0),"^"))=+$P(^PSD(58.8,PSALOC,1,PSADRG,0),"^",3)_"^"_+$P(^(0),"^",5)
|
---|
94 | ;
|
---|
95 | MV S PSA=$O(PSAMAST("")) G:PSA="" PRINT
|
---|
96 | S PSAMVN="" F S PSAMVN=$O(PSAMAST(PSAMVN)) Q:PSAMVN="" D
|
---|
97 | .S PSAMV=0 F S PSAMV=$O(PSAMAST(PSAMVN,PSAMV)) Q:'PSAMV D
|
---|
98 | ..S PSADRG=0 F S PSADRG=+$O(^PSD(58.8,PSAMV,1,PSADRG)) Q:'PSADRG D
|
---|
99 | ...Q:'$D(^PSD(58.8,PSAMV,1,PSADRG,0))!($P($G(^PSDRUG(PSADRG,0)),"^")="")
|
---|
100 | ...S ^TMP("PSALEV",$J,2,PSAMV,$P(^PSDRUG(PSADRG,0),"^"))=+$P(^PSD(58.8,PSAMV,1,PSADRG,0),"^",3)_"^"_+$P(^(0),"^",5)
|
---|
101 | ;
|
---|
102 | PRINT ;Prints report
|
---|
103 | D NOW^%DTC S PSARUN=%,PSARUN=$E(PSARUN,4,5)_"/"_$E(PSARUN,6,7)_"/"_$E(PSARUN,2,3)_"@"_$E($P(PSARUN,".",2),1,2)_":"_$E($P(PSARUN,".",2),3,4)
|
---|
104 | S PSAPG=0,PSASLN="",$P(PSASLN,"-",80)="",PSAOUT=0 K Y
|
---|
105 | S PSAFIRST=1,PSALOC=0 F S PSALOC=+$O(^TMP("PSALEV",$J,1,PSALOC)) Q:'PSALOC!(PSAOUT) D
|
---|
106 | .D SITES^PSAUTL1 S PSALOCN=$P(^PSD(58.8,PSALOC,0),"^")_PSACOMB
|
---|
107 | .I PSAFIRST D HDR Q:PSAOUT S PSAFIRST=0
|
---|
108 | .S PSADRG="" F S PSADRG=$O(^TMP("PSALEV",$J,1,PSALOC,PSADRG)) Q:PSADRG=""!(PSAOUT) D
|
---|
109 | ..I $Y+5>IOSL D HDR Q:PSAOUT
|
---|
110 | ..S PSASTOCK=$P(^TMP("PSALEV",$J,1,PSALOC,PSADRG),"^"),PSAREORD=$P(^(PSADRG),"^",2)
|
---|
111 | ..W !,PSADRG
|
---|
112 | ..W ?(45-$L($P(PSASTOCK,".",2))),$J(PSASTOCK,9,+$L($P(PSASTOCK,".",2)))
|
---|
113 | ..W ?(67-$L($P(PSAREORD,".",2))),$J(PSAREORD,9,+$L($P(PSAREORD,".",2)))
|
---|
114 | ;
|
---|
115 | S PSA=$O(^TMP("PSALEV",$J,2,"")) G:PSA="" EXIT
|
---|
116 | S PSAFIRST=1,PSAMV=0
|
---|
117 | F S PSAMV=+$O(^TMP("PSALEV",$J,2,PSAMV)) Q:'PSAMV!(PSAOUT) D S PSAFIRST=1
|
---|
118 | .I PSAFIRST D HDR Q:PSAOUT S PSAFIRST=0
|
---|
119 | .S PSADRG="" F S PSADRG=$O(^TMP("PSALEV",$J,2,PSAMV,PSADRG)) Q:PSADRG=""!(PSAOUT) D
|
---|
120 | ..I $Y+5>IOSL D HDR Q:PSAOUT
|
---|
121 | ..S PSASTOCK=$P(^TMP("PSALEV",$J,2,PSAMV,PSADRG),"^"),PSAREORD=$P(^(PSADRG),"^",2)
|
---|
122 | ..W !,PSADRG
|
---|
123 | ..W ?(45-$L($P(PSASTOCK,".",2))),$J(PSASTOCK,9,+$L($P(PSASTOCK,".",2)))
|
---|
124 | ..W ?(67-$L($P(PSAREORD,".",2))),$J(PSAREORD,9,+$L($P(PSAREORD,".",2)))
|
---|
125 | I 'PSAOUT,$E(IOST,1,2)="C-" S PSAOUT=1 D END^PSAPROC G:PSAOUT EXIT1
|
---|
126 | ;
|
---|
127 | EXIT W:$E(IOST,1,2)="C-" @IOF D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
|
---|
128 | EXIT1 K IO("Q"),^TMP("PSALEV",$J)
|
---|
129 | K %,%ZIS,DIR,DTOUT,DUOUT,PSA,PSACHK,PSACNT,PSACOMB,PSADRG,PSAFIRST,PSAISIT,PSAISITN,PSALOC,PSALOCA,PSALOCN,PSAMAST,PSAMENU,PSAMV,PSAMVA,PSAMVIEN,PSAMVN
|
---|
130 | K PSANUM,PSAOSIT,PSAOSITN,PSAOUT,PSAPC,PSAPG,PSAREORD,PSARUN,PSASEL,PSASLN,PSASTOCK,PSAVAULT,Y,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
|
---|
131 | Q
|
---|
132 | ;
|
---|
133 | HDR ;Report header
|
---|
134 | I $E(IOST,1,2)="C-" W:'PSAPG @IOF D:+PSAPG END^PSAPROC Q:PSAOUT
|
---|
135 | I $E(IOST)'="C",+PSAPG W @IOF
|
---|
136 | S PSAPG=PSAPG+1
|
---|
137 | W !?20,"DRUG ACCOUNTABILITY/INVENTORY INTERFACE",?72,"PAGE "_PSAPG
|
---|
138 | W !?25,"STOCK AND REORDER LEVEL REPORT",!
|
---|
139 | I $E(IOST)'="C" W "RUN: "_PSARUN
|
---|
140 | I $G(PSALOC) W ?31,"PHARMACY LOCATION" W:$L(PSALOCN)>79 !!,$P(PSALOCN,"(IP)",1)_"(IP)",!!?17,$P(PSALOCN,"(IP)",2) W:$L(PSALOCN)<80 !!,PSALOCN
|
---|
141 | I $G(PSAMV) W !,"MASTER VAULT: "_$P($G(^PSD(58.8,PSAMV,0)),"^")
|
---|
142 | W !!,"DRUG",?43,"STOCK LEVEL",?63,"REORDER LEVEL",!,PSASLN
|
---|
143 | Q
|
---|