PSJMDWS ;BIR/MV-MAIN DRIVER FOR MED DUE WORKSHEET ;18 JUN 96 / 2:58 PM
;;5.0; INPATIENT MEDICATIONS ;**31,34,111**;16 DEC 97
;
;
S PSJSTOP=0 K ^TMP($J)
D ASK G:PSJSTOP EXIT
EN I $D(IO("Q")) D G EXIT
. NEW XDESC,XSAVE,XTRTN
. S XDESC="Med Due Worksheet (SORT)"
. S XSAVE="PSGIO;PSGMTYPE;PSGP;PSGP(;PSGPAT(;PSGPLF;PSGPLS;PSGRBADM;PSGSS;PSGTM;PSGTM(;PSGTMALL;PSGWD;PSGWG;PSGWGNM;PSGWN;PSJMPRN;PSGIODOC"
. S XTRTN="SORTQ^PSJMDWS" D SETSORTQ^PSJMUTL(XDESC,XSAVE,XTRTN)
D SORTQ
Q
SORTQ ;*** Entry when queue to do the sorting.
NEW ADMIN,CD,DRG,DRGI,DRGN,DRGT,ON,MID,MN,ND,ND1,OD,PLSD,PSIVUP,PSJORIFN,PST,QST,RBNO,ST,T,TM,TMNO,TS,UD0,UD2,XTYPE
D:PSGSS="G" ^PSJMEDS
D:PSGSS="W" WARD^PSJMEDS
I PSGSS="C" S PSGWG="^OTHER" D ^PSJMEDS
I PSGSS="P" S PPN="" F S PPN=$O(PSGPAT(PPN)) Q:PPN="" S PSGP=PSGPAT(PPN) S PSJACNWP="" D ^PSJAC D MEDTYPE^PSJMEDS
I $D(PSGIO) D G EXIT
. NEW XDESC,XSAVE,XTRTN
. S XDESC="Med Due Worksheet (PRINT)"
. S XSAVE="PSGMTYPE;PSGP;PSGP(;PSGPAT(;PSGPLF;PSGPLS;PSGRBADM;PSGSS;PSGTM;PSGTM(;PSGTMALL;PSGWD;PSGWG;PSGWGNM;PSGWN;PSJMPRN;^TMP($J,;PSGIODOC"
. S XTRTN="PRTQ^PSJMDWS" D SETPRTQ^PSJMUTL(XDESC,XSAVE,XTRTN)
PRTQ ;*** Entry when queue to the printer.
D ^PSJMPRT
;
;
EXIT ;
K ^TMP($J)
D EXITDEV^PSJMUTL,EXIT^PSJMUTL
D ENKV^PSGSETU ;*** Kill var called from ^PSJAC
K PFLG,PPN,PSGEXPDT,PSGIO,PSGLFD,PSGLOD,PSGLSD,PSGMAR,PSGMARWD,PSGMFOR,PSGMTYPE,PSGOES,PSGON,PSGP,PSGPAT,PSGPG,PSGPLC,PSGPLF,PSGPLO
K PSGPLS,PSGRBADM,PSGRBPPN,PSGRETF,PSGS0XT,PSGS0Y,PSGSS,PSGTM,PSGTMALL,PSGTMP,PSGTMP1,PSGWD,PSGWG,PSGWGNM
K PSGWN,PSGWN1,PSJACNWP,PSJADT,PSJADT1,PSJADTO,PSJADTME,PSJATME1,PSJATMEO
K PSJASTR,PSJATME,PSJATMEO,PSJDOS,PSJHL1,PSJHL2,PSJHL3,PSJHL62,PSJHOLD,PSJLN,PSJMPRN,PSJMR,PSJNEED,PSJONCAL,PSJONETM
K PSJPLC,PSJPRB,PSJPRT,PSJPWDN,PSJPWDO,PSJSCHE,PSJSI,PSJSTOP,PSJTOTLN,ZSTOP,ZTQUEUED
Q
;
;
ASK ;***Prompt for selection creteria. Quit when PSJSTOP=1
;
Q:$$PRN^PSJMDIR S PSJMPRN=Y
Q:$$STDATE^PSJMDIR S (X1,PSGTMP)=Y,X2=1 D C^%DTC S PSGTMP1=X,PSGPLS=Y
Q:$$ENDATE^PSJMDIR(PSGTMP,PSGTMP1) S PSGPLF=Y
Q:$$GWP^PSJMDIR1(1)
Q:$$MEDTYPE^PSJMDIR($G(PSGWD)) S PSGMTYPE=Y
Q:$$SELDEV^PSJMUTL
Q
;
ENLM ;Enrty Point for PSJ LM MDWS protocol
;
NEW VADM S PSJSTOP=0 K ^TMP($J)
I '$D(PSGP(0)) S DFN=PSGP D DEM^VADPT S PSGP(0)=VADM(1) K VADM
S PSGSS="P",PPN=PSGP(0),PSGPAT(PPN)=PSGP,PSJMDWS=1
Q:$$PRN^PSJMDIR S PSJMPRN=Y
Q:$$STDATE^PSJMDIR S (X1,PSGTMP)=Y,X2=1 D C^%DTC S PSGTMP1=X,PSGPLS=Y
Q:$$ENDATE^PSJMDIR(PSGTMP,PSGTMP1) S PSGPLF=Y
Q:$$MEDTYPE^PSJMDIR($G(PSGWD)) S PSGMTYPE=Y
Q:$$SELDEV^PSJMUTL
G EN
;
PSJMDWS ;BIR/MV-MAIN DRIVER FOR MED DUE WORKSHEET ;18 JUN 96 / 2:58 PM
+1 ;;5.0; INPATIENT MEDICATIONS ;**31,34,111**;16 DEC 97
+2 ;
+3 ;
+4 SET PSJSTOP=0
KILL ^TMP($JOB)
+5 DO ASK
IF PSJSTOP
GOTO EXIT
EN IF $DATA(IO("Q"))
Begin DoDot:1
+1 NEW XDESC,XSAVE,XTRTN
+2 SET XDESC="Med Due Worksheet (SORT)"
+3 SET XSAVE="PSGIO;PSGMTYPE;PSGP;PSGP(;PSGPAT(;PSGPLF;PSGPLS;PSGRBADM;PSGSS;PSGTM;PSGTM(;PSGTMALL;PSGWD;PSGWG;PSGWGNM;PSGWN;PSJMPRN;PSGIODOC"
+4 SET XTRTN="SORTQ^PSJMDWS"
DO SETSORTQ^PSJMUTL(XDESC,XSAVE,XTRTN)
End DoDot:1
GOTO EXIT
+5 DO SORTQ
+6 QUIT
SORTQ ;*** Entry when queue to do the sorting.
+1 NEW ADMIN,CD,DRG,DRGI,DRGN,DRGT,ON,MID,MN,ND,ND1,OD,PLSD,PSIVUP,PSJORIFN,PST,QST,RBNO,ST,T,TM,TMNO,TS,UD0,UD2,XTYPE
+2 IF PSGSS="G"
DO ^PSJMEDS
+3 IF PSGSS="W"
DO WARD^PSJMEDS
+4 IF PSGSS="C"
SET PSGWG="^OTHER"
DO ^PSJMEDS
+5 IF PSGSS="P"
SET PPN=""
FOR
SET PPN=$ORDER(PSGPAT(PPN))
IF PPN=""
QUIT
SET PSGP=PSGPAT(PPN)
SET PSJACNWP=""
DO ^PSJAC
DO MEDTYPE^PSJMEDS
+6 IF $DATA(PSGIO)
Begin DoDot:1
+7 NEW XDESC,XSAVE,XTRTN
+8 SET XDESC="Med Due Worksheet (PRINT)"
+9 SET XSAVE="PSGMTYPE;PSGP;PSGP(;PSGPAT(;PSGPLF;PSGPLS;PSGRBADM;PSGSS;PSGTM;PSGTM(;PSGTMALL;PSGWD;PSGWG;PSGWGNM;PSGWN;PSJMPRN;^TMP($J,;PSGIODOC"
+10 SET XTRTN="PRTQ^PSJMDWS"
DO SETPRTQ^PSJMUTL(XDESC,XSAVE,XTRTN)
End DoDot:1
GOTO EXIT
PRTQ ;*** Entry when queue to the printer.
+1 DO ^PSJMPRT
+2 ;
+3 ;
EXIT ;
+1 KILL ^TMP($JOB)
+2 DO EXITDEV^PSJMUTL
DO EXIT^PSJMUTL
+3 ;*** Kill var called from ^PSJAC
DO ENKV^PSGSETU
+4 KILL PFLG,PPN,PSGEXPDT,PSGIO,PSGLFD,PSGLOD,PSGLSD,PSGMAR,PSGMARWD,PSGMFOR,PSGMTYPE,PSGOES,PSGON,PSGP,PSGPAT,PSGPG,PSGPLC,PSGPLF,PSGPLO
+5 KILL PSGPLS,PSGRBADM,PSGRBPPN,PSGRETF,PSGS0XT,PSGS0Y,PSGSS,PSGTM,PSGTMALL,PSGTMP,PSGTMP1,PSGWD,PSGWG,PSGWGNM
+6 KILL PSGWN,PSGWN1,PSJACNWP,PSJADT,PSJADT1,PSJADTO,PSJADTME,PSJATME1,PSJATMEO
+7 KILL PSJASTR,PSJATME,PSJATMEO,PSJDOS,PSJHL1,PSJHL2,PSJHL3,PSJHL62,PSJHOLD,PSJLN,PSJMPRN,PSJMR,PSJNEED,PSJONCAL,PSJONETM
+8 KILL PSJPLC,PSJPRB,PSJPRT,PSJPWDN,PSJPWDO,PSJSCHE,PSJSI,PSJSTOP,PSJTOTLN,ZSTOP,ZTQUEUED
+9 QUIT
+10 ;
+11 ;
ASK ;***Prompt for selection creteria. Quit when PSJSTOP=1
+1 ;
+2 IF $$PRN^PSJMDIR
QUIT
SET PSJMPRN=Y
+3 IF $$STDATE^PSJMDIR
QUIT
SET (X1,PSGTMP)=Y
SET X2=1
DO C^%DTC
SET PSGTMP1=X
SET PSGPLS=Y
+4 IF $$ENDATE^PSJMDIR(PSGTMP,PSGTMP1)
QUIT
SET PSGPLF=Y
+5 IF $$GWP^PSJMDIR1(1)
QUIT
+6 IF $$MEDTYPE^PSJMDIR($GET(PSGWD))
QUIT
SET PSGMTYPE=Y
+7 IF $$SELDEV^PSJMUTL
QUIT
+8 QUIT
+9 ;
ENLM ;Enrty Point for PSJ LM MDWS protocol
+1 ;
+2 NEW VADM
SET PSJSTOP=0
KILL ^TMP($JOB)
+3 IF '$DATA(PSGP(0))
SET DFN=PSGP
DO DEM^VADPT
SET PSGP(0)=VADM(1)
KILL VADM
+4 SET PSGSS="P"
SET PPN=PSGP(0)
SET PSGPAT(PPN)=PSGP
SET PSJMDWS=1
+5 IF $$PRN^PSJMDIR
QUIT
SET PSJMPRN=Y
+6 IF $$STDATE^PSJMDIR
QUIT
SET (X1,PSGTMP)=Y
SET X2=1
DO C^%DTC
SET PSGTMP1=X
SET PSGPLS=Y
+7 IF $$ENDATE^PSJMDIR(PSGTMP,PSGTMP1)
QUIT
SET PSGPLF=Y
+8 IF $$MEDTYPE^PSJMDIR($GET(PSGWD))
QUIT
SET PSGMTYPE=Y
+9 IF $$SELDEV^PSJMUTL
QUIT
+10 GOTO EN
+11 ;