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

HLEVREP3.m

Go to the documentation of this file.
  1. HLEVREP3 ;O-OIFO/LJA - Event Monitor REPORTS ;02/04/2004 14:42
  1. ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
  1. ;
  1. REMREQO ; Remote Requestable printout - [HLEV REMOTE REQUESTABLE LIST]
  1. N BY,DIC,DIOEND,FLDS,HLEVRRQ
  1. W @IOF,$$CJ^XLFSTR("Remote Requestable Monitors Report",IOM)
  1. W !,$$REPEAT^XLFSTR("=",IOM)
  1. W !,"Some monitors may be activated by remote server request. This option sorts"
  1. W !,"all monitors by whether they are ""remote requestable""."
  1. W !
  1. S L="",DIC=776.1,BY="[HLEV REPORT MONITOR]",DIOEND="D RRQSUMM^HLEVREP3"
  1. S FLDS="[HLEV REMOTE REQUESTABLE]"
  1. D EN1^DIP
  1. Q
  1. ;
  1. RRQSUMM ; Remote request summary...
  1. QUIT:'$D(HLEVRRQ("[NO]")) ;->
  1. W !,"Fields having [NO] in the remote requestable field are not answered YES or"
  1. W !,"NO. But, since the default action is NO, these blank fields are actually"
  1. W !,"an implied NO (no remote requesting allowed.)"
  1. I '$D(ZTQUEUED) D TELL^HLEVMST0("","0^0^0")
  1. Q
  1. ;
  1. REMREQ() ; Called by [HLEV REMOTE REQUESTABLE] print template
  1. ; Return whether entry is remote requestable
  1. ; HLEVRRQ newed at top of print template run...
  1. S HLEVRRQ=$S(X=1:"YES",X=0:"NO",1:"[NO]")
  1. S HLEVRRQ(HLEVRRQ)=$G(HLEVRRQ(HLEVRRQ))+1
  1. Q HLEVRRQ
  1. ;
  1. MONLOAD(HLEVIENJ) ; Load data into ^TMP...
  1. N DATA,EXPL,LEN,MIEN,NO,PAGE,REF,SUB,SUM,SUMX,SUMY,TITLE,VAR
  1. ;
  1. KILL ^TMP($J,"HLMON",+HLEVIENJ)
  1. ;
  1. ; Zero node
  1. S DATA=$G(^HLEV(776,+$G(HLEVIENJ),0)) QUIT:DATA']"" ;->
  1. D SET("START","Start",$$SDT^HLEVX001($P(DATA,U)))
  1. D SET("DONE","Finish",$$SDT^HLEVX001($P(DATA,U,2)))
  1. D SET("MONM","Monitor",$P($G(^HLEV(776.1,+$P(DATA,U,3),0)),U))
  1. D SET("STATR","Status",$$STAT776($P(DATA,U,4)))
  1. D SET("STATA","Appl",$P(DATA,U,5))
  1. D SET("TIME","T-Stamp",$$SDT^HLEVX001($P(DATA,U,6)))
  1. D SET("MAIL","Mail",$P(DATA,U,7))
  1. D SET("ZTSK","Task",$P(DATA,U,8))
  1. D SET("MST","Master",$P(DATA,U,9))
  1. ;
  1. ; Run Diary and Message Text...
  1. F SUB=50,51 D
  1. . S TITLE=$S(SUB=50:"RUN",1:"MSG")
  1. . S MIEN=0
  1. . F S MIEN=$O(^HLEV(776,+HLEVIENJ,SUB,MIEN)) Q:MIEN'>0 D
  1. . . S NO=$O(^TMP($J,"HLMON",+HLEVIENJ,TITLE,":"),-1)+1
  1. . . S ^TMP($J,"HLMON",+HLEVIENJ,TITLE,+NO)=^HLEV(776,+HLEVIENJ,SUB,MIEN,0)
  1. ;
  1. ; Variables...
  1. S MIEN=0,SUMX="",SUMY=""
  1. F S MIEN=$O(^HLEV(776,+HLEVIENJ,52,MIEN)) Q:MIEN'>0 D
  1. . S REF=$G(^HLEV(776,+HLEVIENJ,52,+MIEN,0)) QUIT:$P(REF,U)']"" ;->
  1. . S VAR=$P(REF,U),EXPL=$P(REF,U,2),EXPL=$S(EXPL]"":EXPL,1:REF)
  1. . S DATA=$G(^HLEV(776,+HLEVIENJ,52,+MIEN,52))
  1. . S ^TMP($J,"HLMON",+HLEVIENJ,"VD",VAR,EXPL)=DATA
  1. .
  1. . S LEN=$L(DATA) ; Length of data
  1. . S LEN(1)=$L(EXPL) ; Length column header
  1. . S LEN(2)=$S(LEN>LEN(1):LEN,1:LEN(1))+2 ; Largest length-data or header
  1. . S LEN(3)=LEN+LEN(1)+3 ; Length - data + header
  1. .
  1. . S ^TMP($J,"HLMON",+HLEVIENJ,"VX",LEN(2),VAR,EXPL)=""
  1. . S ^TMP($J,"HLMON",+HLEVIENJ,"VY",+LEN(3),VAR,EXPL)=""
  1. .
  1. . S $P(SUMX,U)=$P(SUMX,U)+1 ; # variables...
  1. . S $P(SUMX,U,2)=$P(SUMX,U,2)+LEN(2)+2 ; Total columns required...
  1. . I $P(SUMX,U,3)<(LEN(2)+1) S $P(SUMX,U,3)=LEN(2) ; Largest column
  1. .
  1. . S $P(SUMY,U)=$P(SUMY,U)+1
  1. . S $P(SUMY,U,2)=$P(SUMY,U,2)+1
  1. . I $P(SUMY,U,3)<(LEN(3)+1) S $P(SUMY,U,3)=LEN(3)
  1. ;
  1. ; # Var header, Line and Var data "pages"...
  1. S LEN=0,PAGE=0,SUM=0
  1. F S LEN=$O(^TMP($J,"HLMON",+HLEVIENJ,"VX",LEN)) Q:LEN'>0 D
  1. . S:PAGE=0 PAGE=1
  1. . I (SUM+LEN)>80 D
  1. . . S PAGE=PAGE+1,SUM=0
  1. . S SUM=SUM+LEN
  1. S:PAGE $P(SUMX,U,4)=PAGE
  1. ;
  1. I SUMX]"" S ^TMP($J,"HLMON",+HLEVIENJ,"VX")=SUMX
  1. I SUMY]"" S ^TMP($J,"HLMON",+HLEVIENJ,"VY")=SUMY
  1. ;
  1. Q
  1. ;
  1. ;
  1. SET(STORE,TAG,VAL) ; Store value to be displayed...
  1. S ^TMP($J,"HLMON",HLEVIENJ,STORE)=$S(VAL]"":1,1:"")_U_TAG_U_VAL
  1. Q
  1. ;
  1. STAT776(STAT) ; Return status for use on report...
  1. QUIT STAT_U_$S(STAT="E":"Error",STAT="F":"Finish",STAT="Q":"Que'd",STAT="R":"Running",1:"")
  1. ;
  1. CTRLMON ; Re/ask for monitor to display...
  1. N IEN776,IENDATE,IENONE,IOINHI,IOINORM,LASTONE,WORK,X
  1. S X="IOINHI;IOINORM" D ENDR^%ZISS
  1. S WORK=0
  1. W !
  1. S IEN776=$$ASKMON QUIT:IEN776'>0 ;->
  1. S WORK=1
  1. S IENDATE=$$ASKDATE(IEN776) QUIT:IENDATE'>0 ;->
  1. CTRLMON1 ; Reask entry point...
  1. S IENONE=$$ASKONE(IEN776,IENDATE) I IENONE'>0 D QUIT ;->
  1. . W !!!!,IOINHI,"Returning to display of daily map views...",IOINORM
  1. . W !!
  1. D SHOW^HLEVREP2(+IENONE)
  1. I $P(IENONE,U,2)>1 D G CTRLMON1 ;->
  1. . D TELL^HLEVMST0("","0^0^999","Press RETURN to continue... ")
  1. G CTRLMON ;->
  1. ;
  1. ASKMON() ; Ask user for a monitor to show...
  1. N DIC,X,Y
  1. S DIC=776.1,DIC(0)="AEMQ",DIC("A")="Select monitor to view, or RETURN to continue: "
  1. S DIC("S")="I $D(^TMP($J,""HLMAP"",""E"",+Y))"
  1. D ^DIC
  1. Q $S(+Y>0:+Y,1:"")
  1. ;
  1. ASKDATE(IEN776) ;
  1. ; DATESEL -- req
  1. N DATE,DIR,DIRUT,DTOUT,DUOUT,X,Y
  1. S DIR(0)="DA",DIR("A")="Select monitor RUN DATE: "
  1. S X=$$FMTE^XLFDT($O(^TMP($J,"HLMAP","E",+IEN776,DATESEL-.000001))) I X]"" S DIR("B")=X
  1. ASKDATE1 ;
  1. S DIR("?")="Enter one of the ""run dates"" for this monitor. (Enter ?? to see list of run dates.)"
  1. S DIR("??")="^D ASKDHELP^HLEVREP1"
  1. D ^DIR
  1. QUIT:$D(DIRUT)!($D(DTOUT))!($D(DUOUT)) "" ;->
  1. QUIT:$D(^TMP($J,"HLMAP","E",+IEN776,+Y)) +Y ;->
  1. D ASKDHELP
  1. G ASKDATE1 ;->
  1. ;
  1. ASKDHELP ; Help for $$ASKDATE...
  1. W !!,"You must enter one of the following dates. Data exists for... "
  1. W !!
  1. S DATE=0
  1. F S DATE=$O(^TMP($J,"HLMAP","E",IEN776,DATE)) Q:DATE'>0 D
  1. . S DATE(1)=$$FMTE^XLFDT(DATE)
  1. . W:$X>70 !
  1. . W $J(DATE(1),15)
  1. W !
  1. Q
  1. ;
  1. ASKONE(IEN776,IENDATE) ;
  1. ; Defines and returns LASTONE...
  1. N DATA,DATE,DIR,DIRUT,DTOUT,DUOUT,HOLD,IEN,LAST,NEXT,NO,STAT,X,Y
  1. ;
  1. ; Find entries and build DIR string...
  1. S NO=0,IEN=0,DIR(0)="SO^"
  1. F S IEN=$O(^TMP($J,"HLMAP","E",+IEN776,+IENDATE,IEN)) Q:'IEN D
  1. . S DATA=$G(^HLEV(776,+IEN,0)) QUIT:DATA']"" ;->
  1. . S NO=NO+1
  1. . S DATE=$P(DATA,U),STAT=$$STAT776^HLEVREP3($P(DATA,U,4))
  1. . S HOLD(NO)=IEN_U_DATE
  1. . S DATE(DATE)=IEN_U_STAT
  1. . S DIR(0)=DIR(0)_$S(DIR(0)'="SO^":";",1:"")_NO_":"_$TR($$FMTE^XLFDT(DATE),":",".")_" ["_$P(STAT,U,2)_"]"
  1. QUIT:NO'>0 "" ;->
  1. QUIT:NO=1 +HOLD(1)_U_1 ;->
  1. ;
  1. W !!,"This monitor was run more than once on the date you selected. Please select"
  1. W !,"specific run time now..."
  1. S NEXT=$S($G(LASTONE)'>0:1,1:LASTONE+1),NEXT=$S($D(HOLD(NEXT)):NEXT,1:"")
  1. S DIR("A")="Select RUN TIME"
  1. I NEXT S DIR("B")=NEXT
  1. D ^DIR
  1. ;
  1. QUIT:'$D(HOLD(+$G(X))) "" ;-> User answered by entering number...
  1. ;
  1. S LASTONE=+X ; Used for DIR("B") later...
  1. ;
  1. Q +HOLD(+X)_U_NO
  1. ;
  1. EOR ;HLEVREP3 - Event Monitor REPORTS ;5/16/03 14:42