| 1 | HLEVREP1 ;O-OIFO/LJA - Event Monitor REPORTS ;02/04/2004 14:42 | 
|---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995 | 
|---|
| 3 | ; | 
|---|
| 4 | CTRL ; Menu map display... | 
|---|
| 5 | N CT,DATE,DATEFRST,DATELAST,DATENXT,DATESEL,IOINHI,IOINORM | 
|---|
| 6 | N LINE,NO,TXT,X,Y | 
|---|
| 7 | ; | 
|---|
| 8 | S X="IOINHI;IOINORM" D ENDR^%ZISS | 
|---|
| 9 | ; | 
|---|
| 10 | KILL ^TMP($J,"HLMAP") | 
|---|
| 11 | D HD("Event Monitor Display") | 
|---|
| 12 | D EX | 
|---|
| 13 | D PURGING | 
|---|
| 14 | W ! | 
|---|
| 15 | QUIT:$$BTE^HLCSMON("Press RETURN to collect data, or '^' to exit... ")  ;-> | 
|---|
| 16 | W !!,"Collecting..." | 
|---|
| 17 | D MAPALL | 
|---|
| 18 | D MONVALL^HLEVREP2 | 
|---|
| 19 | ; | 
|---|
| 20 | I '$D(^TMP($J,"HLMAP","S","D")) D  QUIT  ;-> | 
|---|
| 21 | .  D TELL^HLEVMST0("No data exists!","1^2^999") | 
|---|
| 22 | ; | 
|---|
| 23 | S DATEFRST=$O(^TMP($J,"HLMAP","S","D",0)) | 
|---|
| 24 | S (DATELAST,DATENXT)=$O(^TMP($J,"HLMAP","S","D",":"),-1) | 
|---|
| 25 | ; | 
|---|
| 26 | W !!,"Data found for ",$$FMTE^XLFDT(DATEFRST) | 
|---|
| 27 | I DATELAST=DATEFRST W "." | 
|---|
| 28 | I DATELAST'=DATEFRST W " to ",$$FMTE^XLFDT(DATELAST),"." | 
|---|
| 29 | W !!,"Loading most recent date..." | 
|---|
| 30 | ; | 
|---|
| 31 | H 2 | 
|---|
| 32 | ; | 
|---|
| 33 | S CT=0 | 
|---|
| 34 | F  D  QUIT:DATE']""  ;-> | 
|---|
| 35 | .  S CT=CT+1 | 
|---|
| 36 | .  S (DATE,DATESEL)=$S(CT=1:DATELAST,1:$$MAPDATE(DATENXT)) QUIT:DATE'?7N  ;-> | 
|---|
| 37 | .  S DATENXT=$$FMADD^XLFDT(DATE,-1) ; Next date to be prompted... | 
|---|
| 38 | .  S TXT="Event Monitor Map - "_$$FMTE^XLFDT(DATE) | 
|---|
| 39 | .  S LINE=$O(^TMP($J,"HLMAP","S","D",DATE,":"),-1) | 
|---|
| 40 | .  I LINE<22 D | 
|---|
| 41 | .  .  W @IOF,$$CJ^XLFSTR(TXT,IOM),!,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 42 | .  .  S NO=0 | 
|---|
| 43 | .  .  F  S NO=$O(^TMP($J,"HLMAP","S","D",DATE,NO)) Q:'NO  D | 
|---|
| 44 | .  .  .  W !,^TMP($J,"HLMAP","S","D",DATE,NO) | 
|---|
| 45 | .  I LINE'<22 D | 
|---|
| 46 | .  .  D BROWSE^DDBR("^TMP($J,""HLMAP"",""S"",""D"","_DATE_")","N",TXT) | 
|---|
| 47 | .  D CTRLMON^HLEVREP3 ; All user to call up individual monitor run info... | 
|---|
| 48 | .  I DATENXT<DATEFRST D  QUIT  ;-> | 
|---|
| 49 | .  .  W !!,"You just viewed the ",IOINHI,"earliest",IOINORM | 
|---|
| 50 | .  .  W " day on record.  (You must manually enter the" | 
|---|
| 51 | .  .  W !,"next date to view.)" | 
|---|
| 52 | .  .  W ! | 
|---|
| 53 | .  .  S DATENXT="" | 
|---|
| 54 | .  I DATENXT=DATEFRST D  QUIT  ;-> | 
|---|
| 55 | .  .  W !!,$$FMTE^XLFDT(DATENXT)," is the earliest date on record." | 
|---|
| 56 | .  .  W ! | 
|---|
| 57 | .  W !!,"The next earlier date is prompted below." | 
|---|
| 58 | .  W ! | 
|---|
| 59 | ; | 
|---|
| 60 | Q | 
|---|
| 61 | ; | 
|---|
| 62 | MAPDEVCE ; Just dump to screen... | 
|---|
| 63 | N ABRT,CT,DAY,NO,X | 
|---|
| 64 | S DAY=0,ABRT=0,CT=0 | 
|---|
| 65 | F  S DAY=$O(^TMP($J,"HLMAP","S","D",DAY)) Q:'DAY!(ABRT)  D | 
|---|
| 66 | .  W !!,$$CJ^XLFSTR(" Event Monitor Information - "_$$FMTE^XLFDT(DAY)_" ",IOM,"=") | 
|---|
| 67 | .  S CT=CT+2 | 
|---|
| 68 | .  S NO=0 | 
|---|
| 69 | .  F  S NO=$O(^TMP($J,"HLMAP","S","D",DAY,NO)) Q:NO'>0  D | 
|---|
| 70 | .  .  S CT=CT+1 | 
|---|
| 71 | .  .  W !,^TMP($J,"HLMAP","S","D",DAY,NO) | 
|---|
| 72 | .  .  QUIT:CT<22  ;-> | 
|---|
| 73 | .  .  R X:999 S CT=0 | 
|---|
| 74 | R:CT X:999 | 
|---|
| 75 | Q | 
|---|
| 76 | ; | 
|---|
| 77 | MAPDATE(DATEPMT) ; Select date... | 
|---|
| 78 | N ANS,DIR,DIRUT,DTOUT,DUOUT,X,Y | 
|---|
| 79 | S DIR(0)="DO^"_DATEFRST_":"_DATELAST_":EX" | 
|---|
| 80 | S DIR("A")="Select DATE",DIR("?")="Enter a report date, (but don't enter time of day.)" | 
|---|
| 81 | I $G(DATEPMT)?7N S DIR("B")=$$FMTE^XLFDT(DATEPMT) | 
|---|
| 82 | D ^DIR | 
|---|
| 83 | QUIT:+Y?7N +Y ;-> | 
|---|
| 84 | S ANS=Y | 
|---|
| 85 | I $$UP^XLFSTR($TR(X," ",""))["DUMP" D MAPDEVCE ;-> | 
|---|
| 86 | Q "" | 
|---|
| 87 | ; | 
|---|
| 88 | PURGING ; How for back does purging start? | 
|---|
| 89 | N DATA,PURGEHR | 
|---|
| 90 | S PURGEHR=$P($G(^HLEV(776.999,1,0)),U,4) | 
|---|
| 91 | S PURGEHR=$S(PURGEHR:PURGEHR,1:96) | 
|---|
| 92 | W !!,$$CJ^XLFSTR("--- Data before NOW-"_PURGEHR_" hours has been deleted ---",IOM) | 
|---|
| 93 | Q | 
|---|
| 94 | ; | 
|---|
| 95 | HD(TXT) W @IOF,$$CJ^XLFSTR(TXT,IOM) | 
|---|
| 96 | W !,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 97 | QUIT | 
|---|
| 98 | ; | 
|---|
| 99 | EX N I,T F I=1:1 S T=$T(EX+I) QUIT:T'[";;"  W !,$P(T,";;",2,99) | 
|---|
| 100 | ;;This option collects all existing event monitor information for review.  You | 
|---|
| 101 | ;;can view a "map" of each monitor that ran, showing hour-by-hour when the | 
|---|
| 102 | ;;"run" occurred.  You may also select individual monitors for a more detailed | 
|---|
| 103 | ;;display. | 
|---|
| 104 | QUIT | 
|---|
| 105 | ; | 
|---|
| 106 | MAPALL ; Do everything to get ^TMP($J,"HLMAP") data ready for printing... | 
|---|
| 107 | KILL ^TMP($J,"HLMAP") | 
|---|
| 108 | D MAPCOLLE ; Find events... | 
|---|
| 109 | D MAPCOLLM ; Find master job runs | 
|---|
| 110 | D MAPBUILD ; Build date array | 
|---|
| 111 | D MAPSCRN ;  Build daily screens | 
|---|
| 112 | Q | 
|---|
| 113 | ; | 
|---|
| 114 | MAPCOLLM ; Collect map ^TMP data - Master job runs... | 
|---|
| 115 | N DATA,IENM,MONM,STAT,TIME | 
|---|
| 116 | S IENM=0 | 
|---|
| 117 | F  S IENM=$O(^HLEV(776.2,IENM)) Q:'IENM  D | 
|---|
| 118 | .  S DATA=$G(^HLEV(776.2,IENM,0)) QUIT:$P(DATA,U)']""  ;-> | 
|---|
| 119 | .  S STAT=$P(DATA,U,4) QUIT:STAT'="F"  ;-> | 
|---|
| 120 | .  S TIME=$$ROUNDHR(+$P(DATA,U,2)) QUIT:TIME']""  ;-> | 
|---|
| 121 | .  S ^TMP($J,"HLMAP","T")=$G(^TMP($J,"HLMAP","T"))+1 | 
|---|
| 122 | .  S ^TMP($J,"HLMAP","T","M")=$G(^TMP($J,"HLMAP","T","M"))+1 | 
|---|
| 123 | .  S ^TMP($J,"HLMAP","D",TIME,"M")=$G(^TMP($J,"HLMAP","D",TIME,"M"))+1 | 
|---|
| 124 | .  S ^TMP($J,"HLMAP","D",TIME,"M",IENM)="" | 
|---|
| 125 | Q | 
|---|
| 126 | ; | 
|---|
| 127 | MAPCOLLE ; Collect map ^TMP data - Events... | 
|---|
| 128 | N DATA,IENM,IENMST,MONIEN,MONM,STAT,TIME | 
|---|
| 129 | S IENM=0 | 
|---|
| 130 | F  S IENM=$O(^HLEV(776,IENM)) Q:'IENM  D | 
|---|
| 131 | .  S DATA=$G(^HLEV(776,IENM,0)) QUIT:$P(DATA,U)']""  ;-> | 
|---|
| 132 | .  S STAT=$P(DATA,U,4) QUIT:STAT'="F" | 
|---|
| 133 | .  S TIME=$$ROUNDHR(+DATA) QUIT:TIME']""  ;-> | 
|---|
| 134 | .  S MONIEN=$P(DATA,U,3) QUIT:MONIEN'>0  ;-> | 
|---|
| 135 | .  S MONIEN=MONIEN QUIT:MONIEN'>0  ;-> | 
|---|
| 136 | .  S MONM=$P($G(^HLEV(776.1,+MONIEN,0)),U) QUIT:MONM']""  ;-> | 
|---|
| 137 | .  S MONM=MONM_"["_MONIEN_"]" | 
|---|
| 138 | .  S IENMST=$P(DATA,U,9),IENMST=$S(IENMST>0:IENMST,1:9999999) | 
|---|
| 139 | .  S ^TMP($J,"HLMAP","T")=$G(^TMP($J,"HLMAP","T"))+1 | 
|---|
| 140 | .  S ^TMP($J,"HLMAP","T","E")=$G(^TMP($J,"HLMAP","T","E"))+1 | 
|---|
| 141 | .  S ^TMP($J,"HLMAP","D",TIME,"E")=$G(^TMP($J,"HLMAP","D",TIME,"E"))+1 | 
|---|
| 142 | .  S ^TMP($J,"HLMAP","D",TIME,"E",MONM)=$G(^TMP($J,"HLMAP","D",TIME,"E",MONM))+1 | 
|---|
| 143 | .  S ^TMP($J,"HLMAP","D",TIME,"E",MONM,IENMST,IENM)="" | 
|---|
| 144 | .  S MONM=$P(MONM,"[") QUIT:MONM']""  ;-> | 
|---|
| 145 | .  S ^TMP($J,"HLMAP","E",+MONIEN,+TIME\1,+IENM)=MONM | 
|---|
| 146 | Q | 
|---|
| 147 | ; | 
|---|
| 148 | MAPBUILD ; Make lines for browsing report | 
|---|
| 149 | N EVNM,GBL,HOUR | 
|---|
| 150 | S GBL=$NA(^TMP($J,"HLMAP","D")) | 
|---|
| 151 | S HOUR="" | 
|---|
| 152 | F  S HOUR=$O(@GBL@(HOUR)) Q:HOUR']""  D | 
|---|
| 153 | .  I $O(@GBL@(HOUR,"M",0))>0 D MAPHOUR("MASTER JOB",HOUR) | 
|---|
| 154 | .  S EVNM="" | 
|---|
| 155 | .  F  S EVNM=$O(@GBL@(HOUR,"E",EVNM)) Q:EVNM']""  D | 
|---|
| 156 | .  .  D MAPHOUR(EVNM,HOUR) | 
|---|
| 157 | Q | 
|---|
| 158 | ; | 
|---|
| 159 | MAPHOUR(EVNM,HOUR) ; Store in display global... | 
|---|
| 160 | S ^TMP($J,"HLMAP","M",EVNM,+$P(HOUR,"."),+$P(HOUR,".",2))="" | 
|---|
| 161 | Q | 
|---|
| 162 | ; | 
|---|
| 163 | MAPSCRN ; Build screen for days... | 
|---|
| 164 | N DATA,DAY,EVNM,HOUR,HR,TXT,X | 
|---|
| 165 | ; | 
|---|
| 166 | S EVNM="" | 
|---|
| 167 | F  S EVNM=$O(^TMP($J,"HLMAP","M",EVNM)) Q:EVNM']""  D | 
|---|
| 168 | .  S DAY=0 | 
|---|
| 169 | .  F  S DAY=$O(^TMP($J,"HLMAP","M",EVNM,DAY)) Q:DAY'>0  D | 
|---|
| 170 | .  .  S TXT=$$EVNM(EVNM,31) | 
|---|
| 171 | .  .  F HOUR=1:1:24 D | 
|---|
| 172 | .  .  .  S DATA=$S($D(^TMP($J,"HLMAP","M",EVNM,DAY,HOUR_0)):1,1:0) | 
|---|
| 173 | .  .  .  S TXT=TXT_$S(DATA:"-X",1:"--") | 
|---|
| 174 | .  .  S ^TMP($J,"HLMAP","X",DAY,EVNM)=TXT | 
|---|
| 175 | ; | 
|---|
| 176 | S DAY=0 | 
|---|
| 177 | F  S DAY=$O(^TMP($J,"HLMAP","X",DAY)) Q:DAY'>0  D | 
|---|
| 178 | .  D ADDHDR(DAY) | 
|---|
| 179 | .  I $D(^TMP($J,"HLMAP","X",DAY,"MASTER JOB")) D | 
|---|
| 180 | .  .  D ADDLINE(DAY,^TMP($J,"HLMAP","X",DAY,"MASTER JOB")) | 
|---|
| 181 | .  S EVNM="" | 
|---|
| 182 | .  F  S EVNM=$O(^TMP($J,"HLMAP","X",DAY,EVNM)) Q:EVNM']""  D | 
|---|
| 183 | .  .  QUIT:EVNM="MASTER JOB"  ;-> | 
|---|
| 184 | .  .  D ADDLINE(DAY,^TMP($J,"HLMAP","X",DAY,EVNM)) | 
|---|
| 185 | ; | 
|---|
| 186 | Q | 
|---|
| 187 | ; | 
|---|
| 188 | ADDHDR(DAY) ; Add HDR code... | 
|---|
| 189 | D ADDLINE(DAY,$$CJ^XLFSTR(" "_$$FMTE^XLFDT(DAY)_" ",IOM,"=")) | 
|---|
| 190 | D ADDLINE(DAY,"                   |"_IOINHI_"  Hours "_IOINORM_"| - 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2") | 
|---|
| 191 | D ADDLINE(DAY,"Monitor            |"_IOINHI_" in Day "_IOINORM_"| - 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4") | 
|---|
| 192 | D ADDLINE(DAY,$$REPEAT^XLFSTR("=",IOM)) | 
|---|
| 193 | Q | 
|---|
| 194 | ; | 
|---|
| 195 | ADDLINE(DAY,TXT) ; Add one line of text to screen ^TMP global | 
|---|
| 196 | N NO | 
|---|
| 197 | S ^TMP($J,"HLMAP","S","D",DAY)=$G(^TMP($J,"HLMAP","S","D",DAY))+1 | 
|---|
| 198 | S NO=$O(^TMP($J,"HLMAP","S","D",DAY,":"),-1)+1 | 
|---|
| 199 | I '(NO#24) D  ; Mid-screen extra header | 
|---|
| 200 | .  S ^TMP($J,"HLMAP","S","D",DAY,NO)=$$REPEAT^XLFSTR("-",IOM) | 
|---|
| 201 | .  S NO=NO+1,^TMP($J,"HLMAP","S","D",DAY,NO)="                        Hours - 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2" | 
|---|
| 202 | .  S NO=NO+1,^TMP($J,"HLMAP","S","D",DAY,NO)="Monitor                in Day - 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4" | 
|---|
| 203 | .  S NO=NO+1,^TMP($J,"HLMAP","S","D",DAY,NO)=$$REPEAT^XLFSTR("-",IOM) | 
|---|
| 204 | .  S NO=NO+1 | 
|---|
| 205 | S ^TMP($J,"HLMAP","S","D",DAY,+NO)=TXT | 
|---|
| 206 | Q | 
|---|
| 207 | ; | 
|---|
| 208 | EVNM(EVNM,LEN) ; Convert event name[ien] to LENgth, truncating name part prn | 
|---|
| 209 | N IEN,NM,X | 
|---|
| 210 | I EVNM="MASTER JOB" QUIT $$REPEAT^XLFSTR("-",LEN-$L("MASTER JOB")-1)_"MASTER JOB-" ;-> | 
|---|
| 211 | S NM=$P(EVNM,"["),IEN="["_$P(EVNM,"[",2,99) | 
|---|
| 212 | S NM(1)=$E(NM,1,LEN-$L(IEN)) | 
|---|
| 213 | I NM'=NM(1) S NM(1)=$E(NM(1),1,$L(NM(1))-1)_"~" | 
|---|
| 214 | S NM=NM(1)_IEN | 
|---|
| 215 | S NM=$E(NM_$$REPEAT^XLFSTR("-",LEN),1,LEN) | 
|---|
| 216 | Q NM | 
|---|
| 217 | ; | 
|---|
| 218 | ROUNDHR(FM) ; | 
|---|
| 219 | N HR | 
|---|
| 220 | S FM=$G(FM) | 
|---|
| 221 | I FM'?7N&(FM'?7N1"."1.N) QUIT "" ;-> | 
|---|
| 222 | S:FM?7N FM=FM_"." S FM=$E(FM_"00",1,10) | 
|---|
| 223 | S HR=+$P(FM,".",2)+1 S:HR<10 HR=0_HR | 
|---|
| 224 | S FM=FM\1_"."_HR_0 | 
|---|
| 225 | Q FM | 
|---|
| 226 | ; | 
|---|
| 227 | EOR ;HLEVREP1 - Event Monitor REPORTS ;5/16/03 14:42 | 
|---|