Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSORXFIN

PSORXFIN.m

Go to the documentation of this file.
  1. PSORXFIN ;BHAM ISC/TJL - VPS Productivity Report ;5/17/21 12:39
  1. ;;7.0;OUTPATIENT PHARMACY;**630**;JAN 2021;Build 26
  1. ;
  1. EN ; entry point
  1. N I,X,Y,DATE,PSORUN,PSODESC,PSOSAVE
  1. N RXSTDT,RXENDDT,RANGE,PSOERR,QFLG
  1. S QFLG=0
  1. ; get today's date
  1. D NOW^%DTC S DATE=X,Y=$E(%,1,12) D DD^%DT S PSORUN=Y K %DT
  1. W !!,"This report prints a listing of people who finished the order in pharmacy"
  1. W !,"in the user-selected date range.",!
  1. D DATES Q:QFLG
  1. ;device selection
  1. S PSODESC="MbM-VPS Productivity Report"
  1. F I="PSODESC","RXSTDT","RXENDDT","RANGE" D
  1. . S PSOSAVE(I)=""
  1. D EN^XUTMDEVQ("PROCESS^PSORXFIN",PSODESC,.PSOSAVE)
  1. I POP W !!,"No device selected...exiting.",! Q
  1. I IO'=IO(0) D ^%ZISC
  1. D HOME^%ZIS
  1. Q
  1. DATES ; User inputs for date range
  1. N %DT,SRANGE,ERANGE,X,Y
  1. ;
  1. RETRY S %DT="AEX",%DT("A")="Starting with Date: ",%DT(0)="-NOW" D ^%DT
  1. I Y<0 S QFLG=1 Q
  1. S RXSTDT=Y D DD^%DT S SRANGE=$$FMTE^XLFDT(Y,12)
  1. S %DT="AEX",%DT("A")="Ending with Date: ",%DT(0)="-NOW" D ^%DT
  1. I Y<0 S QFLG=1 Q
  1. I Y<RXSTDT D G RETRY
  1. . W !!,"The ending date cannot be earlier than the starting date.",!
  1. S RXENDDT=Y D DD^%DT S ERANGE=$$FMTE^XLFDT(Y,12)
  1. S RANGE="Rx Orders finished from "_SRANGE_" through "_ERANGE
  1. Q
  1. ;
  1. PROCESS ; entry point for queued report
  1. N ZTREQ
  1. S ZTREQ="@"
  1. S PSOERR=0 D EN1^PSORXFIN Q:PSOERR
  1. Q
  1. EN1 ;
  1. N PAGENUM,FINISHDT,STOP
  1. K ^TMP("PSORXFIN",$J)
  1. S FINISHDT=RXSTDT-.1,RXENDDT=RXENDDT+.9999,(QFLG,PAGENUM,STOP)=0
  1. D HEADER I STOP D EXIT Q
  1. D GETDATA
  1. I ^TMP("PSORXFIN",$J,"GRAND TOTAL")=0 D Q
  1. . W !
  1. . W !,?7,"***************************************************"
  1. . W !,?7,"* Nothing to report for the selected time frame *"
  1. . W !,?7,"***************************************************"
  1. . D WAIT
  1. D DETAIL I STOP D EXIT Q
  1. D TOTAL
  1. K ^TMP("PSORXFIN",$J)
  1. Q
  1. ;
  1. GETDATA ; Get data
  1. N RXDA,RXOR1,FINIEN,FINNAME
  1. S ^TMP("PSORXFIN",$J,"GRAND TOTAL")=0
  1. F S FINISHDT=$O(^PSRX("AFDT",FINISHDT)) Q:(FINISHDT>RXENDDT)!('FINISHDT)!(QFLG=1) D
  1. . S RXDA=0
  1. . F S RXDA=$O(^PSRX("AFDT",FINISHDT,RXDA)) Q:('RXDA) D
  1. . . Q:'$D(^PSRX(RXDA,"OR1"))
  1. . . S RXOR1=$G(^PSRX(RXDA,"OR1"))
  1. . . S FINIEN=$P(RXOR1,"^",5)
  1. . . ; Get name of finisher
  1. . . S FINNAME=$$GET1^DIQ(200,+FINIEN,.01,"E")
  1. . . S:FINNAME="" FINNAME="ZZ^Missing from ^VA(200 :: DFN = "_FINIEN
  1. . . I '$D(^TMP("PSORXFIN",$J,FINNAME)) S ^TMP("PSORXFIN",$J,FINNAME)=0
  1. . . S ^TMP("PSORXFIN",$J,FINNAME)=^TMP("PSORXFIN",$J,FINNAME)+1
  1. . . S ^TMP("PSORXFIN",$J,"GRAND TOTAL")=^TMP("PSORXFIN",$J,"GRAND TOTAL")+1
  1. Q
  1. ;
  1. N LN
  1. W:$Y!($E(IOST)="C") @IOF S PAGENUM=PAGENUM+1
  1. S $P(LN,"-",80)=""
  1. W !,?1,"MbM-VPS Productivity Report",?51,"Run Date: ",PSORUN
  1. W !,?1,RANGE,?68,$$RJ^XLFSTR("Page: "_PAGENUM,11),!
  1. W !,?46,"Prescriptions"
  1. W !,?7,"Finishing Person",?48,"Finished"
  1. W !,LN
  1. Q
  1. ;
  1. DETAIL ; Print detail line
  1. N RECORD,FCOUNT,NAME
  1. S RECORD="" F S RECORD=$O(^TMP("PSORXFIN",$J,RECORD)) Q:(RECORD="")!(STOP) D
  1. . S NAME=RECORD Q:NAME="GRAND TOTAL"
  1. . S:NAME["ZZ^" NAME=$P(NAME,"^",2,3)
  1. . S FCOUNT=^TMP("PSORXFIN",$J,RECORD)
  1. . W !,?7,NAME,?48,$$RJ^XLFSTR(FCOUNT,6)
  1. . I $Y>(IOSL-3) D WAIT Q:STOP D HEADER
  1. Q
  1. ;
  1. TOTAL ; Report totals
  1. N DASH
  1. S $P(DASH,"=",7)=""
  1. W !,?49,DASH
  1. W !?31,$$RJ^XLFSTR("Grand Total: "_^TMP("PSORXFIN",$J,"GRAND TOTAL"),23)
  1. Q
  1. ;
  1. WAIT ; End of page logic
  1. S STOP=0
  1. ;CRT - Prompt for continue
  1. I $E(IOST,1,2)="C-"&(IOSL'>24) D Q
  1. . F Q:$Y>(IOSL-3) W !
  1. . N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. . S DIR(0)="E"
  1. . D ^DIR
  1. . S STOP=$S(Y'=1:1,1:0)
  1. ; Background task - check TaskMan
  1. S STOP=$$S^%ZTLOAD()
  1. I STOP D
  1. . W !,?7,"*********************************************"
  1. . W !,?7,"* Printing of report stopped as requested *"
  1. . W !,?7,"*********************************************"
  1. Q
  1. EXIT ; Kill ^TMP Global
  1. K ^TMP("PSORXFIN",$J)
  1. Q