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

ORVCOMONITOR.m

Go to the documentation of this file.
  1. ORVCOMONITOR ;SPFO/AJB - VISTA CUTOVER ;Feb 11, 2021@09:04:23
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**529**;DEC 17, 1997;Build 17
  1. Q
  1. ; see ORVCO for list of ICRs/DBIAs
  1. EN ;
  1. N ANS,BASE,POP,X,Y
  1. S BASE=4 D PREP^XGF,HEADER
  1. F D Q:ANS="Q"!(ANS=U)
  1. . N JOB
  1. . I '$$STATUS(.JOB) S JOB=0 D IOXY^XGF(BASE+JOB+1,1) W $$CJ^XLFSTR("< No Running Jobs >",80) D IOXY^XGF(14,0),PROMPT S ANS=U Q
  1. . S JOB=$O(JOB(""),-1) D IOXY^XGF(BASE+JOB+1,1)
  1. . N DIR S DIR="SAO^U:Update;S:Stop;Q:Quit"
  1. . S DIR("L")="<Enter> to refresh the screen or (S)top a running Job # or (Q)uit"
  1. . S ANS=$$FMR(.DIR,"Enter monitor action: ","UPDATE","^D MONHELP^ORVCOMONITOR") Q:ANS="Q"!(ANS=U)
  1. . I ANS="S" D
  1. . . D CLEAR^XGF(0,1,23,80),HEADER,STATUS(.JOB)
  1. . . N ANS,DIR S DIR="SAO^",DIR("L")="Enter a Job # from the following list: "
  1. . . S JOB=0 F S JOB=$O(JOB(JOB)) Q:'+JOB D
  1. . . . S $P(DIR,U,2)=$P(DIR,U,2)_JOB(JOB)_":"_JOB(JOB)_$S(+$O(JOB(JOB)):";",1:"")
  1. . . . S $P(DIR("L"),":",2)=$P(DIR("L"),":",2)_JOB(JOB)_$S(+$O(JOB(JOB)):", ",1:"")
  1. . . D IOXY^XGF(BASE+$O(JOB(""),-1)+1,1)
  1. . . S ANS=$$FMR(.DIR,"Enter a Job # from the list above: ","","^D JOBHELP^ORVCOMONITOR") Q:'+ANS
  1. . . D CLEAR^XGF(0,1,23,80),HEADER(1),STATUS(.JOB)
  1. . . W !!,"Asking Task Man to stop Job #: ",ANS
  1. . . N INF,TASK S INF=$NA(^XTMP("ORVCO",ANS,"Info"))
  1. . . S TASK=0 F S TASK=$O(@INF@(TASK)) Q:'+TASK D
  1. . . . I $$ASKSTOP^%ZTLOAD(TASK)
  1. . . D IOXY^XGF(14,0),PROMPT
  1. . D CLEAR^XGF(0,0,23,80),HEADER
  1. . I '$D(^XTMP("ORVCO")) S JOB=0 D IOXY^XGF(BASE+JOB+1,1) W $$CJ^XLFSTR("< No Running Jobs >",80) D IOXY^XGF(14,0),PROMPT S ANS=U Q
  1. D CLEAR^XGF(0,0,23,80),CLEAN^XGF
  1. Q
  1. STATUS(JOB) ;
  1. N CNT S (CNT,JOB)=0 F S JOB=$O(^XTMP("ORVCO",JOB)) Q:'+JOB D
  1. . N DATA,INF,USER,MODE,TYPE,THREAD,START
  1. . S INF=$NA(^XTMP("ORVCO",JOB,"Info"))
  1. . I $D(@INF@("Single Patient")) Q
  1. . S CNT=+$G(CNT)+1,JOB(CNT)=JOB
  1. . I +$G(@INF@("Calculating")) D SAY^XGF((BASE+CNT),0,JOB),SAY^XGF((BASE+CNT),28,"< Evaluating Patients >") Q
  1. . S DATA=$$SETSTR^VALM1(JOB,"",1,8) ; job #
  1. . S DATA=$$SETSTR^VALM1($$GET1^DIQ(200,+@INF@("User"),.01),DATA,10,18) ; user
  1. . S DATA=$$SETSTR^VALM1($S(+@INF@("Mode"):"Create",1:"Test"),DATA,35,6) ; mode
  1. . S DATA=$$SETSTR^VALM1($S(+$P(@INF@("Mode"),U,2):"Reminders",1:"Summary"),DATA,43,9) ; type
  1. . S (THREAD("Active"),THREAD("Progress"),THREAD)=0 F S THREAD=$O(@INF@(" Daemon",THREAD)) Q:'+THREAD D
  1. . . S THREAD("Progress")=THREAD("Progress")+$G(@INF@(" Daemon",THREAD,"Progress"))
  1. . . I '$D(@INF@(" Daemon",THREAD,"Stop Time")) S THREAD("Active")=THREAD("Active")+1
  1. . S THREAD("Progress")=$E(THREAD("Progress")/@INF@("Patients"),1,3)*100 ; calculate completion %
  1. . S DATA=$$SETSTR^VALM1(THREAD("Progress")_"%",DATA,32-$L(THREAD("Progress")),3) ; completion
  1. . S THREAD=THREAD("Active")_$S(@INF@("Threads")>9:" of ",1:" of ")_@INF@("Threads") ; calulate active threads
  1. . S DATA=$$SETSTR^VALM1(THREAD,DATA,61-$L(THREAD),8) ; threads
  1. . S DATA=$$SETSTR^VALM1($E($$HTE^XLFDT(@INF@("Start Time")),1,18),DATA,63,18) ; start time
  1. . D SAY^XGF((BASE+CNT),0,DATA)
  1. Q CNT
  1. N DATA D SAY^XGF(0,29,"Daemon* Monitoring Tool"),SAY^XGF(0,72,$P($$HTE^XLFDT($H),"@",2)),SAY^XGF(2,53,"Active")
  1. S DATA=$$SETSTR^VALM1("Job #","",1,7)
  1. S DATA=$$SETSTR^VALM1("User",DATA,10,4)
  1. S DATA=$$SETSTR^VALM1("Progress",DATA,25,8)
  1. S DATA=$$SETSTR^VALM1("Mode",DATA,35,4)
  1. S DATA=$$SETSTR^VALM1("Type",DATA,43,9)
  1. S DATA=$$SETSTR^VALM1("Threads",DATA,54,10)
  1. S DATA=$$SETSTR^VALM1("Start Date/Time",DATA,66,15)
  1. W !,IOUON,DATA,IOUOFF
  1. D:'+$G(PARAM) SAY^XGF(21,0,"* In multitasking computer operating systems, a daemon is a computer program")
  1. D:'+$G(PARAM) SAY^XGF(22,0," that runs as a background process rather than being under the direct control")
  1. D:'+$G(PARAM) SAY^XGF(23,0," of an interactive user.")
  1. Q
  1. MONHELP ;
  1. W !,"The following actions are available: <Enter>, S, or Q"
  1. Q
  1. JOBHELP ;
  1. W !,"Enter the desired Job # or ^ to exit."
  1. Q
  1. FMR(DIR,PRM,DEF,HLP,SCR) ; fileman reader
  1. N DILN,DILOCKTM,DISYS
  1. N DIROUT,DIRUT,DTOUT,DUOUT,X,Y
  1. S DIR(0)=DIR S:$G(PRM)'="" DIR("A")=PRM S:$G(DEF)'="" DIR("B")=DEF S:$G(SCR)'="" DIR("S")=SCR
  1. I $G(HLP)'="" S DIR("?")=HLP
  1. I $D(HLP) M DIR=HLP
  1. W $G(IOCUON) D ^DIR W $G(IOCUOFF)
  1. Q $S($D(DIROUT):U,$D(DIRUT):U,$D(DTOUT):U,$D(DUOUT):U,1:Y)
  1. PROMPT ; 'Message transmitted, message received...'
  1. I $$FMR("EA","Press <ENTER> to continue")
  1. Q