- PSALEVRP ;BIR/LTL,JMB-Stock and Reorder Report ;7/23/97
- ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**15**; 10/24/97
- ;This routine prints a report of all drugs with their stock and reorder
- ;levels in a pharmacy location.
- ;
- ;References to ^PSDRUG( are covered by IA #2095
- ;
- D LOC G MASTER
- ;
- ;Gets locations
- LOC S PSAOUT=0,PSALOC=+$O(^PSD(58.8,"ADISP","P",0))
- I 'PSALOC W !!?5,"No Drug Accountability location has been created yet." S PSAOUT=1 G MASTER
- ;
- ;Collect locations in alpha order
- S (PSACNT,PSALOC)=0 W !
- F S PSALOC=+$O(^PSD(58.8,"ADISP","P",PSALOC)) Q:'PSALOC D
- .Q:'$D(^PSD(58.8,PSALOC,0))!($P($G(^PSD(58.8,PSALOC,0)),"^")="")
- .I +$G(^PSD(58.8,PSALOC,"I")),+^PSD(58.8,PSALOC,"I")'>DT Q
- .Q:'$O(^PSD(58.8,PSALOC,1,0)) D SITES^PSAUTL1
- .S PSACNT=PSACNT+1
- .S PSALOCA($P(^PSD(58.8,PSALOC,0),"^")_PSACOMB,PSALOC)=$P(^(0),"^",3)_"^"_$P(^(0),"^",10)_"^"_+$G(^PSD(58.8,PSALOC,"I"))
- S PSACHK=$O(PSALOCA("")) I PSACHK="" G MASTER
- Q:$G(PSAHIS)&(PSACNT=1)
- ;
- DISPLOC ;Displays the available pharmacy locations.
- W @IOF,!,"Choose one or many pharmacy locations:",!
- S PSACNT=0,PSALOCN=""
- F S PSALOCN=$O(PSALOCA(PSALOCN)) Q:PSALOCN="" D
- .S PSALOC=0 F S PSALOC=$O(PSALOCA(PSALOCN,PSALOC)) Q:'PSALOC D
- ..S PSACNT=PSACNT+1,PSAMENU(PSACNT,PSALOCN,PSALOC)=""
- ..W !,$J(PSACNT,2)
- ..W:$L(PSALOCN)>76 ?4,$P(PSALOCN,"(IP)",1)_"(IP)",!?21,$P(PSALOCN,"(IP)",2) W:$L(PSALOCN)<77 ?4,PSALOCN
- ;
- 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"
- D ^DIR K DIR I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 G EXIT
- Q:Y=""&('$G(PSAHIS)) I Y="",$G(PSAHIS) S PSAOUT=1 Q
- S PSASEL=Y
- F PSAPC=1:1 S PSANUM=+$P(PSASEL,",",PSAPC) Q:'PSANUM D
- .S PSALOCN=$O(PSAMENU(PSANUM,"")),PSALOC=$O(PSAMENU(PSANUM,PSALOCN,0))
- .S PSALOC(PSALOCN,PSALOC)=PSALOCA(PSALOCN,PSALOC)
- ;
- S PSACHK=$O(PSALOC(""))
- I PSACHK="",'PSALOC W !,"There are no active pharmacy locations." G EXIT1
- 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
- .I '$O(^PSD(58.8,PSALOC,1,0)) D
- ..W:$L(PSALOCN)>79 !!,$P(PSALOCN,"(IP)",1)_"(IP)",!!?17,$P(PSALOCN,"(IP)",2) W:$L(PSALOCN)<80 !!,PSALOCN
- ..W !,"There are no drugs in the pharmacy location."
- Q
- ;
- MASTER G:'$D(^XUSEC("PSA ORDERS",DUZ)) TEST S (PSAMVN,PSAMV)=0
- F S PSAMV=+$O(^PSD(58.8,"ADISP","M",PSAMV)) Q:'PSAMV D
- .I +$G(^PSD(58.8,PSAMV,"I")),+^PSD(58.8,PSAMV,"I")'>DT Q
- .S PSAMVN=PSAMVN+1,PSAMV($P(^PSD(58.8,PSAMV,0),"^"),PSAMV)=""
- G:'PSAMVN TEST
- ;
- DISPMV ;Displays active master vaults
- W @IOF,!,"Choose one or many master vaults:",!
- S PSA=0,PSAMVA="" F S PSAMVA=$O(PSAMV(PSAMVA)) Q:PSAMVA="" D
- .S PSAMV=0 F S PSAMV=$O(PSAMV(PSAMVA,PSAMV)) Q:'PSAMV D
- ..S PSA=PSA+1,PSAVAULT(PSA,PSAMVA,PSAMV)="" W !,$J(PSA,2)_".",?4,PSAMVA
- K PSAMV
- ;
- SELMV ;Select displayed master vaults
- 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"
- D ^DIR K DIR I $G(DTOUT)!($G(DUOUT)) S PSAOUT=1 Q
- G:Y="" TEST S PSASEL=Y
- F PSAPC=1:1 S PSA=+$P(PSASEL,",",PSAPC) Q:'PSA D
- .S PSAMVA="",PSAMVA=$O(PSAVAULT(PSA,PSAMVA)) Q:PSAMVA=""
- .S PSAMVIEN=+$O(PSAVAULT(PSA,PSAMVA,0)) Q:'PSAMVIEN
- .S PSAMAST(PSAMVA,PSAMVIEN)=""
- K PSAVAULT
- ;
- TEST G:PSAOUT EXIT
- S PSA=$O(PSALOC("")),PSAMV=$O(PSAMAST(""))
- I PSA="",PSAMV="" G EXIT
- ;
- DEV ;Asks device & queueing info
- 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.",!
- K IO("Q") K %ZIS,IOP,POP S %ZIS="Q",%ZIS("B")=""
- D ^%ZIS I POP W !,"NO DEVICE SELECTED OR OUTPUT PRINTED!" Q
- I $D(IO("Q")) D G EXIT
- .N ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTDTH,ZTSK
- .S ZTRTN="COMPILE^PSALEVRP",ZTDESC="Drug Acct. - Stock and Reorder Report"
- .S:PSA'="" ZTSAVE("PSALOC(")="" S:PSAMV'="" ZTSAVE("PSAMAST(")=""
- .D ^%ZTLOAD
- ;
- COMPILE ;Compiles data
- S PSA=$O(PSALOC("")) G:PSA="" MV
- S PSALOCN="" F S PSALOCN=$O(PSALOC(PSALOCN)) Q:PSALOCN="" D
- .S PSALOC=0 F S PSALOC=$O(PSALOC(PSALOCN,PSALOC)) Q:'PSALOC D
- ..S PSADRG=0 F S PSADRG=+$O(^PSD(58.8,PSALOC,1,PSADRG)) Q:'PSADRG D
- ...Q:'$D(^PSD(58.8,PSALOC,1,PSADRG,0))!($P($G(^PSDRUG(PSADRG,0)),"^")="")
- ...S ^TMP("PSALEV",$J,1,PSALOC,$P(^PSDRUG(PSADRG,0),"^"))=+$P(^PSD(58.8,PSALOC,1,PSADRG,0),"^",3)_"^"_+$P(^(0),"^",5)
- ;
- MV S PSA=$O(PSAMAST("")) G:PSA="" PRINT
- S PSAMVN="" F S PSAMVN=$O(PSAMAST(PSAMVN)) Q:PSAMVN="" D
- .S PSAMV=0 F S PSAMV=$O(PSAMAST(PSAMVN,PSAMV)) Q:'PSAMV D
- ..S PSADRG=0 F S PSADRG=+$O(^PSD(58.8,PSAMV,1,PSADRG)) Q:'PSADRG D
- ...Q:'$D(^PSD(58.8,PSAMV,1,PSADRG,0))!($P($G(^PSDRUG(PSADRG,0)),"^")="")
- ...S ^TMP("PSALEV",$J,2,PSAMV,$P(^PSDRUG(PSADRG,0),"^"))=+$P(^PSD(58.8,PSAMV,1,PSADRG,0),"^",3)_"^"_+$P(^(0),"^",5)
- ;
- PRINT ;Prints report
- 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)
- S PSAPG=0,PSASLN="",$P(PSASLN,"-",80)="",PSAOUT=0 K Y
- S PSAFIRST=1,PSALOC=0 F S PSALOC=+$O(^TMP("PSALEV",$J,1,PSALOC)) Q:'PSALOC!(PSAOUT) D
- .D SITES^PSAUTL1 S PSALOCN=$P(^PSD(58.8,PSALOC,0),"^")_PSACOMB
- .I PSAFIRST D HDR Q:PSAOUT S PSAFIRST=0
- .S PSADRG="" F S PSADRG=$O(^TMP("PSALEV",$J,1,PSALOC,PSADRG)) Q:PSADRG=""!(PSAOUT) D
- ..I $Y+5>IOSL D HDR Q:PSAOUT
- ..S PSASTOCK=$P(^TMP("PSALEV",$J,1,PSALOC,PSADRG),"^"),PSAREORD=$P(^(PSADRG),"^",2)
- ..W !,PSADRG
- ..W ?(45-$L($P(PSASTOCK,".",2))),$J(PSASTOCK,9,+$L($P(PSASTOCK,".",2)))
- ..W ?(67-$L($P(PSAREORD,".",2))),$J(PSAREORD,9,+$L($P(PSAREORD,".",2)))
- ;
- S PSA=$O(^TMP("PSALEV",$J,2,"")) G:PSA="" EXIT
- S PSAFIRST=1,PSAMV=0
- F S PSAMV=+$O(^TMP("PSALEV",$J,2,PSAMV)) Q:'PSAMV!(PSAOUT) D S PSAFIRST=1
- .I PSAFIRST D HDR Q:PSAOUT S PSAFIRST=0
- .S PSADRG="" F S PSADRG=$O(^TMP("PSALEV",$J,2,PSAMV,PSADRG)) Q:PSADRG=""!(PSAOUT) D
- ..I $Y+5>IOSL D HDR Q:PSAOUT
- ..S PSASTOCK=$P(^TMP("PSALEV",$J,2,PSAMV,PSADRG),"^"),PSAREORD=$P(^(PSADRG),"^",2)
- ..W !,PSADRG
- ..W ?(45-$L($P(PSASTOCK,".",2))),$J(PSASTOCK,9,+$L($P(PSASTOCK,".",2)))
- ..W ?(67-$L($P(PSAREORD,".",2))),$J(PSAREORD,9,+$L($P(PSAREORD,".",2)))
- I 'PSAOUT,$E(IOST,1,2)="C-" S PSAOUT=1 D END^PSAPROC G:PSAOUT EXIT1
- ;
- EXIT W:$E(IOST,1,2)="C-" @IOF D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
- EXIT1 K IO("Q"),^TMP("PSALEV",$J)
- K %,%ZIS,DIR,DTOUT,DUOUT,PSA,PSACHK,PSACNT,PSACOMB,PSADRG,PSAFIRST,PSAISIT,PSAISITN,PSALOC,PSALOCA,PSALOCN,PSAMAST,PSAMENU,PSAMV,PSAMVA,PSAMVIEN,PSAMVN
- K PSANUM,PSAOSIT,PSAOSITN,PSAOUT,PSAPC,PSAPG,PSAREORD,PSARUN,PSASEL,PSASLN,PSASTOCK,PSAVAULT,Y,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
- Q
- ;
- HDR ;Report header
- I $E(IOST,1,2)="C-" W:'PSAPG @IOF D:+PSAPG END^PSAPROC Q:PSAOUT
- I $E(IOST)'="C",+PSAPG W @IOF
- S PSAPG=PSAPG+1
- W !?20,"DRUG ACCOUNTABILITY/INVENTORY INTERFACE",?72,"PAGE "_PSAPG
- W !?25,"STOCK AND REORDER LEVEL REPORT",!
- I $E(IOST)'="C" W "RUN: "_PSARUN
- 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
- I $G(PSAMV) W !,"MASTER VAULT: "_$P($G(^PSD(58.8,PSAMV,0)),"^")
- W !!,"DRUG",?43,"STOCK LEVEL",?63,"REORDER LEVEL",!,PSASLN
- Q
- PSALEVRP ;BIR/LTL,JMB-Stock and Reorder Report ;7/23/97
- +1 ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**15**; 10/24/97
- +2 ;This routine prints a report of all drugs with their stock and reorder
- +3 ;levels in a pharmacy location.
- +4 ;
- +5 ;References to ^PSDRUG( are covered by IA #2095
- +6 ;
- +7 DO LOC
- GOTO MASTER
- +8 ;
- +9 ;Gets locations
- LOC SET PSAOUT=0
- SET PSALOC=+$ORDER(^PSD(58.8,"ADISP","P",0))
- +1 IF 'PSALOC
- WRITE !!?5,"No Drug Accountability location has been created yet."
- SET PSAOUT=1
- GOTO MASTER
- +2 ;
- +3 ;Collect locations in alpha order
- +4 SET (PSACNT,PSALOC)=0
- WRITE !
- +5 FOR
- SET PSALOC=+$ORDER(^PSD(58.8,"ADISP","P",PSALOC))
- IF 'PSALOC
- QUIT
- Begin DoDot:1
- +6 IF '$DATA(^PSD(58.8,PSALOC,0))!($PIECE($GET(^PSD(58.8,PSALOC,0)),"^")="")
- QUIT
- +7 IF +$GET(^PSD(58.8,PSALOC,"I"))
- IF +^PSD(58.8,PSALOC,"I")'>DT
- QUIT
- +8 IF '$ORDER(^PSD(58.8,PSALOC,1,0))
- QUIT
- DO SITES^PSAUTL1
- +9 SET PSACNT=PSACNT+1
- +10 SET PSALOCA($PIECE(^PSD(58.8,PSALOC,0),"^")_PSACOMB,PSALOC)=$PIECE(^(0),"^",3)_"^"_$PIECE(^(0),"^",10)_"^"_+$GET(^PSD(58.8,PSALOC,"I"))
- End DoDot:1
- +11 SET PSACHK=$ORDER(PSALOCA(""))
- IF PSACHK=""
- GOTO MASTER
- +12 IF $GET(PSAHIS)&(PSACNT=1)
- QUIT
- +13 ;
- DISPLOC ;Displays the available pharmacy locations.
- +1 WRITE @IOF,!,"Choose one or many pharmacy locations:",!
- +2 SET PSACNT=0
- SET PSALOCN=""
- +3 FOR
- SET PSALOCN=$ORDER(PSALOCA(PSALOCN))
- IF PSALOCN=""
- QUIT
- Begin DoDot:1
- +4 SET PSALOC=0
- FOR
- SET PSALOC=$ORDER(PSALOCA(PSALOCN,PSALOC))
- IF 'PSALOC
- QUIT
- Begin DoDot:2
- +5 SET PSACNT=PSACNT+1
- SET PSAMENU(PSACNT,PSALOCN,PSALOC)=""
- +6 WRITE !,$JUSTIFY(PSACNT,2)
- +7 IF $LENGTH(PSALOCN)>76
- WRITE ?4,$PIECE(PSALOCN,"(IP)",1)_"(IP)",!?21,$PIECE(PSALOCN,"(IP)",2)
- IF $LENGTH(PSALOCN)<77
- WRITE ?4,PSALOCN
- End DoDot:2
- End DoDot:1
- +8 ;
- SELLOC WRITE !
- SET DIR(0)="LO^1:"_PSACNT
- SET DIR("A")="Select PHARMACY LOCATION"
- SET DIR("?")="Enter the number(s) of the Pharmacy Location"
- SET DIR("??")="^D HELP^PSAUTL3"
- +1 DO ^DIR
- KILL DIR
- IF $GET(DTOUT)!($GET(DUOUT))
- SET PSAOUT=1
- GOTO EXIT
- +2 IF Y=""&('$GET(PSAHIS))
- QUIT
- IF Y=""
- IF $GET(PSAHIS)
- SET PSAOUT=1
- QUIT
- +3 SET PSASEL=Y
- +4 FOR PSAPC=1:1
- SET PSANUM=+$PIECE(PSASEL,",",PSAPC)
- IF 'PSANUM
- QUIT
- Begin DoDot:1
- +5 SET PSALOCN=$ORDER(PSAMENU(PSANUM,""))
- SET PSALOC=$ORDER(PSAMENU(PSANUM,PSALOCN,0))
- +6 SET PSALOC(PSALOCN,PSALOC)=PSALOCA(PSALOCN,PSALOC)
- End DoDot:1
- +7 ;
- +8 SET PSACHK=$ORDER(PSALOC(""))
- +9 IF PSACHK=""
- IF 'PSALOC
- WRITE !,"There are no active pharmacy locations."
- GOTO EXIT1
- +10 WRITE !
- SET PSALOCN=""
- FOR
- SET PSALOCN=$ORDER(PSALOC(PSALOCN))
- IF PSALOCN=""!(PSAOUT)
- QUIT
- SET PSALOC=0
- FOR
- SET PSALOC=$ORDER(PSALOC(PSALOCN,PSALOC))
- IF 'PSALOC!(PSAOUT)
- QUIT
- Begin DoDot:1
- +11 IF '$ORDER(^PSD(58.8,PSALOC,1,0))
- Begin DoDot:2
- +12 IF $LENGTH(PSALOCN)>79
- WRITE !!,$PIECE(PSALOCN,"(IP)",1)_"(IP)",!!?17,$PIECE(PSALOCN,"(IP)",2)
- IF $LENGTH(PSALOCN)<80
- WRITE !!,PSALOCN
- +13 WRITE !,"There are no drugs in the pharmacy location."
- End DoDot:2
- End DoDot:1
- +14 QUIT
- +15 ;
- MASTER IF '$DATA(^XUSEC("PSA ORDERS",DUZ))
- GOTO TEST
- SET (PSAMVN,PSAMV)=0
- +1 FOR
- SET PSAMV=+$ORDER(^PSD(58.8,"ADISP","M",PSAMV))
- IF 'PSAMV
- QUIT
- Begin DoDot:1
- +2 IF +$GET(^PSD(58.8,PSAMV,"I"))
- IF +^PSD(58.8,PSAMV,"I")'>DT
- QUIT
- +3 SET PSAMVN=PSAMVN+1
- SET PSAMV($PIECE(^PSD(58.8,PSAMV,0),"^"),PSAMV)=""
- End DoDot:1
- +4 IF 'PSAMVN
- GOTO TEST
- +5 ;
- DISPMV ;Displays active master vaults
- +1 WRITE @IOF,!,"Choose one or many master vaults:",!
- +2 SET PSA=0
- SET PSAMVA=""
- FOR
- SET PSAMVA=$ORDER(PSAMV(PSAMVA))
- IF PSAMVA=""
- QUIT
- Begin DoDot:1
- +3 SET PSAMV=0
- FOR
- SET PSAMV=$ORDER(PSAMV(PSAMVA,PSAMV))
- IF 'PSAMV
- QUIT
- Begin DoDot:2
- +4 SET PSA=PSA+1
- SET PSAVAULT(PSA,PSAMVA,PSAMV)=""
- WRITE !,$JUSTIFY(PSA,2)_".",?4,PSAMVA
- End DoDot:2
- End DoDot:1
- +5 KILL PSAMV
- +6 ;
- SELMV ;Select displayed master vaults
- +1 WRITE !
- SET DIR(0)="LO^1:"_PSA
- SET DIR("A")="Select Master Vault"
- SET DIR("?")="Select the Master Vault that received the invoice's drugs"
- SET DIR("??")="^D MV^PSAPROC"
- +2 DO ^DIR
- KILL DIR
- IF $GET(DTOUT)!($GET(DUOUT))
- SET PSAOUT=1
- QUIT
- +3 IF Y=""
- GOTO TEST
- SET PSASEL=Y
- +4 FOR PSAPC=1:1
- SET PSA=+$PIECE(PSASEL,",",PSAPC)
- IF 'PSA
- QUIT
- Begin DoDot:1
- +5 SET PSAMVA=""
- SET PSAMVA=$ORDER(PSAVAULT(PSA,PSAMVA))
- IF PSAMVA=""
- QUIT
- +6 SET PSAMVIEN=+$ORDER(PSAVAULT(PSA,PSAMVA,0))
- IF 'PSAMVIEN
- QUIT
- +7 SET PSAMAST(PSAMVA,PSAMVIEN)=""
- End DoDot:1
- +8 KILL PSAVAULT
- +9 ;
- TEST IF PSAOUT
- GOTO EXIT
- +1 SET PSA=$ORDER(PSALOC(""))
- SET PSAMV=$ORDER(PSAMAST(""))
- +2 IF PSA=""
- IF PSAMV=""
- GOTO EXIT
- +3 ;
- DEV ;Asks device & queueing info
- +1 WRITE !!,"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.",!
- +2 KILL IO("Q")
- KILL %ZIS,IOP,POP
- SET %ZIS="Q"
- SET %ZIS("B")=""
- +3 DO ^%ZIS
- IF POP
- WRITE !,"NO DEVICE SELECTED OR OUTPUT PRINTED!"
- QUIT
- +4 IF $DATA(IO("Q"))
- Begin DoDot:1
- +5 NEW ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTDTH,ZTSK
- +6 SET ZTRTN="COMPILE^PSALEVRP"
- SET ZTDESC="Drug Acct. - Stock and Reorder Report"
- +7 IF PSA'=""
- SET ZTSAVE("PSALOC(")=""
- IF PSAMV'=""
- SET ZTSAVE("PSAMAST(")=""
- +8 DO ^%ZTLOAD
- End DoDot:1
- GOTO EXIT
- +9 ;
- COMPILE ;Compiles data
- +1 SET PSA=$ORDER(PSALOC(""))
- IF PSA=""
- GOTO MV
- +2 SET PSALOCN=""
- FOR
- SET PSALOCN=$ORDER(PSALOC(PSALOCN))
- IF PSALOCN=""
- QUIT
- Begin DoDot:1
- +3 SET PSALOC=0
- FOR
- SET PSALOC=$ORDER(PSALOC(PSALOCN,PSALOC))
- IF 'PSALOC
- QUIT
- Begin DoDot:2
- +4 SET PSADRG=0
- FOR
- SET PSADRG=+$ORDER(^PSD(58.8,PSALOC,1,PSADRG))
- IF 'PSADRG
- QUIT
- Begin DoDot:3
- +5 IF '$DATA(^PSD(58.8,PSALOC,1,PSADRG,0))!($PIECE($GET(^PSDRUG(PSADRG,0)),"^")="")
- QUIT
- +6 SET ^TMP("PSALEV",$JOB,1,PSALOC,$PIECE(^PSDRUG(PSADRG,0),"^"))=+$PIECE(^PSD(58.8,PSALOC,1,PSADRG,0),"^",3)_"^"_+$PIECE(^(0),"^",5)
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +7 ;
- MV SET PSA=$ORDER(PSAMAST(""))
- IF PSA=""
- GOTO PRINT
- +1 SET PSAMVN=""
- FOR
- SET PSAMVN=$ORDER(PSAMAST(PSAMVN))
- IF PSAMVN=""
- QUIT
- Begin DoDot:1
- +2 SET PSAMV=0
- FOR
- SET PSAMV=$ORDER(PSAMAST(PSAMVN,PSAMV))
- IF 'PSAMV
- QUIT
- Begin DoDot:2
- +3 SET PSADRG=0
- FOR
- SET PSADRG=+$ORDER(^PSD(58.8,PSAMV,1,PSADRG))
- IF 'PSADRG
- QUIT
- Begin DoDot:3
- +4 IF '$DATA(^PSD(58.8,PSAMV,1,PSADRG,0))!($PIECE($GET(^PSDRUG(PSADRG,0)),"^")="")
- QUIT
- +5 SET ^TMP("PSALEV",$JOB,2,PSAMV,$PIECE(^PSDRUG(PSADRG,0),"^"))=+$PIECE(^PSD(58.8,PSAMV,1,PSADRG,0),"^",3)_"^"_+$PIECE(^(0),"^",5)
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +6 ;
- PRINT ;Prints report
- +1 DO NOW^%DTC
- SET PSARUN=%
- SET PSARUN=$EXTRACT(PSARUN,4,5)_"/"_$EXTRACT(PSARUN,6,7)_"/"_$EXTRACT(PSARUN,2,3)_"@"_$EXTRACT($PIECE(PSARUN,".",2),1,2)_":"_$EXTRACT($PIECE(PSARUN,".",2),3,4)
- +2 SET PSAPG=0
- SET PSASLN=""
- SET $PIECE(PSASLN,"-",80)=""
- SET PSAOUT=0
- KILL Y
- +3 SET PSAFIRST=1
- SET PSALOC=0
- FOR
- SET PSALOC=+$ORDER(^TMP("PSALEV",$JOB,1,PSALOC))
- IF 'PSALOC!(PSAOUT)
- QUIT
- Begin DoDot:1
- +4 DO SITES^PSAUTL1
- SET PSALOCN=$PIECE(^PSD(58.8,PSALOC,0),"^")_PSACOMB
- +5 IF PSAFIRST
- DO HDR
- IF PSAOUT
- QUIT
- SET PSAFIRST=0
- +6 SET PSADRG=""
- FOR
- SET PSADRG=$ORDER(^TMP("PSALEV",$JOB,1,PSALOC,PSADRG))
- IF PSADRG=""!(PSAOUT)
- QUIT
- Begin DoDot:2
- +7 IF $Y+5>IOSL
- DO HDR
- IF PSAOUT
- QUIT
- +8 SET PSASTOCK=$PIECE(^TMP("PSALEV",$JOB,1,PSALOC,PSADRG),"^")
- SET PSAREORD=$PIECE(^(PSADRG),"^",2)
- +9 WRITE !,PSADRG
- +10 WRITE ?(45-$LENGTH($PIECE(PSASTOCK,".",2))),$JUSTIFY(PSASTOCK,9,+$LENGTH($PIECE(PSASTOCK,".",2)))
- +11 WRITE ?(67-$LENGTH($PIECE(PSAREORD,".",2))),$JUSTIFY(PSAREORD,9,+$LENGTH($PIECE(PSAREORD,".",2)))
- End DoDot:2
- End DoDot:1
- +12 ;
- +13 SET PSA=$ORDER(^TMP("PSALEV",$JOB,2,""))
- IF PSA=""
- GOTO EXIT
- +14 SET PSAFIRST=1
- SET PSAMV=0
- +15 FOR
- SET PSAMV=+$ORDER(^TMP("PSALEV",$JOB,2,PSAMV))
- IF 'PSAMV!(PSAOUT)
- QUIT
- Begin DoDot:1
- +16 IF PSAFIRST
- DO HDR
- IF PSAOUT
- QUIT
- SET PSAFIRST=0
- +17 SET PSADRG=""
- FOR
- SET PSADRG=$ORDER(^TMP("PSALEV",$JOB,2,PSAMV,PSADRG))
- IF PSADRG=""!(PSAOUT)
- QUIT
- Begin DoDot:2
- +18 IF $Y+5>IOSL
- DO HDR
- IF PSAOUT
- QUIT
- +19 SET PSASTOCK=$PIECE(^TMP("PSALEV",$JOB,2,PSAMV,PSADRG),"^")
- SET PSAREORD=$PIECE(^(PSADRG),"^",2)
- +20 WRITE !,PSADRG
- +21 WRITE ?(45-$LENGTH($PIECE(PSASTOCK,".",2))),$JUSTIFY(PSASTOCK,9,+$LENGTH($PIECE(PSASTOCK,".",2)))
- +22 WRITE ?(67-$LENGTH($PIECE(PSAREORD,".",2))),$JUSTIFY(PSAREORD,9,+$LENGTH($PIECE(PSAREORD,".",2)))
- End DoDot:2
- End DoDot:1
- SET PSAFIRST=1
- +23 IF 'PSAOUT
- IF $EXTRACT(IOST,1,2)="C-"
- SET PSAOUT=1
- DO END^PSAPROC
- IF PSAOUT
- GOTO EXIT1
- +24 ;
- EXIT IF $EXTRACT(IOST,1,2)="C-"
- WRITE @IOF
- DO ^%ZISC
- IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- EXIT1 KILL IO("Q"),^TMP("PSALEV",$JOB)
- +1 KILL %,%ZIS,DIR,DTOUT,DUOUT,PSA,PSACHK,PSACNT,PSACOMB,PSADRG,PSAFIRST,PSAISIT,PSAISITN,PSALOC,PSALOCA,PSALOCN,PSAMAST,PSAMENU,PSAMV,PSAMVA,PSAMVIEN,PSAMVN
- +2 KILL PSANUM,PSAOSIT,PSAOSITN,PSAOUT,PSAPC,PSAPG,PSAREORD,PSARUN,PSASEL,PSASLN,PSASTOCK,PSAVAULT,Y,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
- +3 QUIT
- +4 ;
- HDR ;Report header
- +1 IF $EXTRACT(IOST,1,2)="C-"
- IF 'PSAPG
- WRITE @IOF
- IF +PSAPG
- DO END^PSAPROC
- IF PSAOUT
- QUIT
- +2 IF $EXTRACT(IOST)'="C"
- IF +PSAPG
- WRITE @IOF
- +3 SET PSAPG=PSAPG+1
- +4 WRITE !?20,"DRUG ACCOUNTABILITY/INVENTORY INTERFACE",?72,"PAGE "_PSAPG
- +5 WRITE !?25,"STOCK AND REORDER LEVEL REPORT",!
- +6 IF $EXTRACT(IOST)'="C"
- WRITE "RUN: "_PSARUN
- +7 IF $GET(PSALOC)
- WRITE ?31,"PHARMACY LOCATION"
- IF $LENGTH(PSALOCN)>79
- WRITE !!,$PIECE(PSALOCN,"(IP)",1)_"(IP)",!!?17,$PIECE(PSALOCN,"(IP)",2)
- IF $LENGTH(PSALOCN)<80
- WRITE !!,PSALOCN
- +8 IF $GET(PSAMV)
- WRITE !,"MASTER VAULT: "_$PIECE($GET(^PSD(58.8,PSAMV,0)),"^")
- +9 WRITE !!,"DRUG",?43,"STOCK LEVEL",?63,"REORDER LEVEL",!,PSASLN
- +10 QUIT