| 1 | HLEVREP2 ;O-OIFO/LJA - Event Monitor REPORTS ;02/04/2004 14:42 | 
|---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995 | 
|---|
| 3 | ; | 
|---|
| 4 | CTRL ; Called by 'Display monitor details [HLEV MONITOR DETAILS]' | 
|---|
| 5 | N MONM | 
|---|
| 6 | ; | 
|---|
| 7 | KILL ^TMP($J) | 
|---|
| 8 | ; | 
|---|
| 9 | D HD | 
|---|
| 10 | D EX | 
|---|
| 11 | W ! | 
|---|
| 12 | QUIT:$$BTE^HLCSMON("Press RETURN to collect data, or enter '^' to exit... ")  ;-> | 
|---|
| 13 | D MONVALL | 
|---|
| 14 | ; | 
|---|
| 15 | F  D  QUIT:MONM']"" | 
|---|
| 16 | .  D MONLIST | 
|---|
| 17 | .  W ! | 
|---|
| 18 | .  S MONM=$$ASKMON QUIT:MONM']""  ;-> | 
|---|
| 19 | .  S WAY=$$ORDER I WAY'?1N S MONM="" QUIT  ;-> | 
|---|
| 20 | .  I WAY=1 D SHOWR(MONM) | 
|---|
| 21 | .  I WAY=2 D SHOWF(MONM) | 
|---|
| 22 | .  D HD | 
|---|
| 23 | ; | 
|---|
| 24 | KILL ^TMP($J) | 
|---|
| 25 | ; | 
|---|
| 26 | Q | 
|---|
| 27 | ; | 
|---|
| 28 | SHOWF(MONM) ; Show monitors from oldest to newest | 
|---|
| 29 | N ABRT,HLEVIENJ,PMT | 
|---|
| 30 | W ! | 
|---|
| 31 | S ABRT=0,HLEVIENJ=0 | 
|---|
| 32 | F  S HLEVIENJ=$O(^TMP($J,"HLMONL",MONM,HLEVIENJ)) Q:'HLEVIENJ!(ABRT)  D | 
|---|
| 33 | .  S X=$$NEXT,ABRT=$P(X,U,2),PRINT=+X QUIT:ABRT  ;-> | 
|---|
| 34 | .  I PRINT D SHOW(HLEVIENJ) W ! | 
|---|
| 35 | Q | 
|---|
| 36 | ; | 
|---|
| 37 | SHOWR(MONM) ; Show monitors from newest to oldest | 
|---|
| 38 | N ABRT,HLEVIENJ,PRINT,X | 
|---|
| 39 | W ! | 
|---|
| 40 | S ABRT=0,HLEVIENJ=":" | 
|---|
| 41 | F  S HLEVIENJ=$O(^TMP($J,"HLMONL",MONM,HLEVIENJ),-1) Q:'HLEVIENJ!(ABRT)  D | 
|---|
| 42 | .  S X=$$NEXT,ABRT=$P(X,U,2),PRINT=+X QUIT:ABRT  ;-> | 
|---|
| 43 | .  I PRINT D SHOW(HLEVIENJ) W ! | 
|---|
| 44 | Q | 
|---|
| 45 | ; | 
|---|
| 46 | NEXT() ; Show next entry? | 
|---|
| 47 | N ANS | 
|---|
| 48 | S ANS=$$YN^HLEVUTIL("Display monitor ""run"" started at "_$P(^TMP($J,"HLMON",+HLEVIENJ,"START"),U,3),"No") | 
|---|
| 49 | I ANS=1 QUIT "1^0" ;-> Display^Abort | 
|---|
| 50 | I ANS="" QUIT "0^0" ;-> | 
|---|
| 51 | Q "0^1" | 
|---|
| 52 | ; | 
|---|
| 53 | SHOW(HLEVIENJ) ; Ask if want to view... | 
|---|
| 54 | N GBL,LINES,MONM | 
|---|
| 55 | ; | 
|---|
| 56 | S GBL=$NA(^TMP($J,"HLMON",HLEVIENJ)) | 
|---|
| 57 | ; | 
|---|
| 58 | ; | 
|---|
| 59 | S LINES=$O(@GBL@("VIEW",":"),-1) | 
|---|
| 60 | S MONM=$P($G(@GBL@("MONM")),U,3) QUIT:MONM']""  ;-> | 
|---|
| 61 | S MONM=MONM_"[#"_HLEVIENJ_"]" | 
|---|
| 62 | ; | 
|---|
| 63 | I LINES<22 D  QUIT  ;-> | 
|---|
| 64 | .  W @IOF,$$CJ^XLFSTR(MONM,IOM),!,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 65 | .  S NO=0 | 
|---|
| 66 | .  F  S NO=$O(^TMP($J,"HLMON",+HLEVIENJ,"VIEW",NO)) Q:NO'>0  D | 
|---|
| 67 | .  .  W !,^TMP($J,"HLMON",+HLEVIENJ,"VIEW",NO) | 
|---|
| 68 | ; | 
|---|
| 69 | D BROWSE^DDBR($NA(^TMP($J,"HLMON",+HLEVIENJ,"VIEW")),"N",MONM) | 
|---|
| 70 | ; | 
|---|
| 71 | Q | 
|---|
| 72 | ; | 
|---|
| 73 | ORDER() ; $ORDER direction... | 
|---|
| 74 | N DIR,DIRUT,DTOUT,DUOUT | 
|---|
| 75 | S DIR(0)="S^1:Show entries from newest to oldest;2:Show entries from oldest to newest;3:Exit" | 
|---|
| 76 | S DIR("A")="Select display direction" | 
|---|
| 77 | S DIR("B")=1 | 
|---|
| 78 | D ^DIR | 
|---|
| 79 | Q $S(+Y=1!(+Y=2):+Y,1:"") | 
|---|
| 80 | ; | 
|---|
| 81 | ASKMON() ; Ask user to select a monitor... | 
|---|
| 82 | N DIC,X,Y | 
|---|
| 83 | S DIC=776.1,DIC(0)="AEMQ",DIC("A")="Select MONITOR: " | 
|---|
| 84 | S DIC("S")="S HLEV=$P($G(^HLEV(776.1,+Y,0)),U) I HLEV]"""",$D(^TMP($J,""HLMONL"",HLEV))" | 
|---|
| 85 | D ^DIC | 
|---|
| 86 | Q $S(+Y>0:$P(Y,U,2),1:"") | 
|---|
| 87 | ; | 
|---|
| 88 | HD W @IOF,$$CJ^XLFSTR("Display Monitor Details",IOM) | 
|---|
| 89 | W !,$$REPEAT^XLFSTR("=",IOM) | 
|---|
| 90 | QUIT | 
|---|
| 91 | ; | 
|---|
| 92 | EX N I,T F I=1:1 S T=$T(EX+I) QUIT:T'[";;"  W !,$P(T,";;",2,99) | 
|---|
| 93 | ;;This option displays a detailed view of monitor run-time data.  You can loop | 
|---|
| 94 | ;;through all occurrences of a monitor from oldest to most recent, or from most | 
|---|
| 95 | ;;recent to oldest. | 
|---|
| 96 | QUIT | 
|---|
| 97 | ; | 
|---|
| 98 | MONLIST ; Create and print list of monitors... | 
|---|
| 99 | N DATA,HLEVIENJ | 
|---|
| 100 | ; | 
|---|
| 101 | I '$D(^TMP($J,"HLMONL")) D  QUIT:'$D(^TMP($J,"HLMONL"))  ;-> | 
|---|
| 102 | .  S HLEVIENJ=0 | 
|---|
| 103 | .  F  S HLEVIENJ=$O(^TMP($J,"HLMON",HLEVIENJ)) Q:'HLEVIENJ  D | 
|---|
| 104 | .  .  S MONM=$P($G(^TMP($J,"HLMON",+HLEVIENJ,"MONM")),U,3) QUIT:MONM']""  ;-> | 
|---|
| 105 | .  .  S ^TMP($J,"HLMONL",MONM)=$G(^TMP($J,"HLMONL",MONM))+1 | 
|---|
| 106 | .  .  S ^TMP($J,"HLMONL",MONM,+HLEVIENJ)="" | 
|---|
| 107 | ; | 
|---|
| 108 | W !!,"""Runs"" for the following monitors have been found..." | 
|---|
| 109 | W !! | 
|---|
| 110 | ; | 
|---|
| 111 | S MONM="" | 
|---|
| 112 | F  S MONM=$O(^TMP($J,"HLMONL",MONM)) Q:MONM']""  D | 
|---|
| 113 | .  S CT=^TMP($J,"HLMONL",MONM),MONM(1)=MONM_"[#"_CT_"]" | 
|---|
| 114 | .  W:$X>40 ! W:$X>1 ?40 | 
|---|
| 115 | .  W MONM(1) | 
|---|
| 116 | ; | 
|---|
| 117 | Q | 
|---|
| 118 | ; | 
|---|
| 119 | MONVALL ; Collect and build screens for all HLEVIENJs... | 
|---|
| 120 | N CT,HLEVIENJ | 
|---|
| 121 | ; | 
|---|
| 122 | KILL ^TMP($J,"HLMON") | 
|---|
| 123 | ; | 
|---|
| 124 | ; Load here... | 
|---|
| 125 | S HLEVIENJ=0,CT=0 | 
|---|
| 126 | F  S HLEVIENJ=$O(^HLEV(776,HLEVIENJ)) Q:HLEVIENJ'>0  D | 
|---|
| 127 | .  D MONALL(+HLEVIENJ) | 
|---|
| 128 | .  S CT=CT+1 W:'(CT#50) "." | 
|---|
| 129 | ; | 
|---|
| 130 | Q | 
|---|
| 131 | ; | 
|---|
| 132 | MONALL(HLEVIENJ) ; Build screen for one entry... | 
|---|
| 133 | N GBL | 
|---|
| 134 | ; | 
|---|
| 135 | S GBL=$NA(^TMP($J,"HLMON",+HLEVIENJ)) | 
|---|
| 136 | KILL @GBL | 
|---|
| 137 | ; | 
|---|
| 138 | D MONLOAD^HLEVREP3(+HLEVIENJ) QUIT:'$D(^TMP($J,"HLMON",+HLEVIENJ))  ;-> | 
|---|
| 139 | D MONHHDR(+HLEVIENJ) ; Build HEADER portion of screen | 
|---|
| 140 | D MONVVAR(+HLEVIENJ) ; Build VARIABLE portion of screen | 
|---|
| 141 | D MONRRD(+HLEVIENJ) ; Build RUN DIARY portion of screen | 
|---|
| 142 | D MONMMT(+HLEVIENJ) ; Build MSG TEXT portion of screen | 
|---|
| 143 | ; | 
|---|
| 144 | Q | 
|---|
| 145 | ; | 
|---|
| 146 | ; | 
|---|
| 147 | MONHHDR(HLEVIENJ) ; Build header... | 
|---|
| 148 | ; ^TMP($J,"HLMON",+HLEVIENJ) -- req | 
|---|
| 149 | N TXT | 
|---|
| 150 | ; | 
|---|
| 151 | D ADDLINE("Start        Timestamp    Finish       Status   Appl        Mail") | 
|---|
| 152 | D ADDLINE($$REPEAT^XLFSTR("=",IOM)) | 
|---|
| 153 | ; | 
|---|
| 154 | S TXT="" | 
|---|
| 155 | D ADD("START",11),ADD("TIME",11),ADD("DONE",11),ADD("STATR",7) | 
|---|
| 156 | D ADD("MAIL",14) | 
|---|
| 157 | D ADDLINE(TXT) | 
|---|
| 158 | ; | 
|---|
| 159 | Q | 
|---|
| 160 | ; | 
|---|
| 161 | MONVVAR(HLEVIENJ) ; Create screens in ^TMP | 
|---|
| 162 | ; GBL,^TMP($J,"HLMON",+HLEVIENJ) -- req | 
|---|
| 163 | ; | 
|---|
| 164 | ; | 
|---|
| 165 | N NOPG,NOVAR | 
|---|
| 166 | ; | 
|---|
| 167 | S X=$G(@GBL@("VX")),NOVAR=$P(X,U),NOPG=$P(X,U,4) | 
|---|
| 168 | ; | 
|---|
| 169 | ; Vertical alignment? | 
|---|
| 170 | I NOPG>1!(NOVAR<6) D MVSCRNV QUIT  ;-> | 
|---|
| 171 | ; | 
|---|
| 172 | ; Horizontal alignment... | 
|---|
| 173 | D MVSCRNH | 
|---|
| 174 | ; | 
|---|
| 175 | Q | 
|---|
| 176 | ; | 
|---|
| 177 | MVSCRNV ; Create variable screen VERTICALly... | 
|---|
| 178 | ; Called by MONVSCRN - GBL,HLEVIENJ -- req | 
|---|
| 179 | N COL,DATA,EXPL,LEN,TXT,VAR,VARX | 
|---|
| 180 | ; | 
|---|
| 181 | ; Get widest variable... | 
|---|
| 182 | S COL=$O(@GBL@("VY",":"),-1) QUIT:COL'>0  ;-> | 
|---|
| 183 | S VAR=$O(@GBL@("VY",+COL,"ZZZZZZZZZ"),-1) QUIT:VAR']""  ;-> | 
|---|
| 184 | S EXPL=$O(@GBL@("VY",+COL,VAR,"ZZZZZZZZZ"),-1) QUIT:EXPL']""  ;-> | 
|---|
| 185 | S DATA=@GBL@("VD",VAR,EXPL) | 
|---|
| 186 | S VARX=$S(VAR'=EXPL:EXPL,1:VAR) | 
|---|
| 187 | ; | 
|---|
| 188 | ; Find where 'legend: ' should be... | 
|---|
| 189 | S TXT=$$CJ^XLFSTR(VARX_"~^~"_DATA,IOM) | 
|---|
| 190 | S LEN=$L($P(TXT,"~^~"))-2 ; this is critical number... | 
|---|
| 191 | ; | 
|---|
| 192 | D ADDLINE("") | 
|---|
| 193 | D ADDLINE($$CJ^XLFSTR("-------------------- Variables ----------------------",IOM)) | 
|---|
| 194 | ; | 
|---|
| 195 | ; Loop thru fields now... | 
|---|
| 196 | S VAR="" | 
|---|
| 197 | F  S VAR=$O(@GBL@("VD",VAR)) Q:VAR']""  D | 
|---|
| 198 | .  S EXPL="" | 
|---|
| 199 | .  F  S EXPL=$O(@GBL@("VD",VAR,EXPL)) Q:EXPL']""  D | 
|---|
| 200 | .  .  S DATA=@GBL@("VD",VAR,EXPL) | 
|---|
| 201 | .  .  S TXT=$$PAD($S(EXPL=VAR:VAR,1:EXPL),LEN)_DATA | 
|---|
| 202 | .  .  D ADDLINE(TXT) | 
|---|
| 203 | ; | 
|---|
| 204 | Q | 
|---|
| 205 | ; | 
|---|
| 206 | MVSCRNH ; Create variable screen HORIZONTALly... (Only called if PAGE=1) | 
|---|
| 207 | ; Called by MONVSCRN - GBL,HLEVIENJ -- req | 
|---|
| 208 | N DATA,EXPL,HDR,NO,TXTHDR,TXTVAR | 
|---|
| 209 | ; | 
|---|
| 210 | D ADDLINE("") | 
|---|
| 211 | D ADDLINE($$CJ^XLFSTR("-------------------- Variables ----------------------",IOM)) | 
|---|
| 212 | ; | 
|---|
| 213 | ; Header | 
|---|
| 214 | S VAR="",TXTHDR="",NO=0 | 
|---|
| 215 | F  S VAR=$O(@GBL@("VD",VAR)) Q:VAR']""  D | 
|---|
| 216 | .  S EXPL="" | 
|---|
| 217 | .  F  S EXPL=$O(@GBL@("VD",VAR,EXPL)) Q:EXPL']""  D | 
|---|
| 218 | .  .  S HDR=$S(EXPL'=VAR:EXPL,1:VAR) | 
|---|
| 219 | .  .  S DATA=@GBL@("VD",VAR,EXPL) | 
|---|
| 220 | .  .  S X=$L(HDR),Y=$L(DATA),LEN=$S(X>Y:X,1:Y) | 
|---|
| 221 | .  .  S NO=NO+1,NO(NO)=LEN_U_HDR_U_DATA | 
|---|
| 222 | ; | 
|---|
| 223 | ; Header line... | 
|---|
| 224 | S NO=0,TXTHDR="" | 
|---|
| 225 | F  S NO=$O(NO(NO)) Q:NO'>0  D | 
|---|
| 226 | .  S DATA=NO(+NO) | 
|---|
| 227 | .  S LEN=+DATA,DATA=$P(DATA,U,2) | 
|---|
| 228 | .  S TXTHDR=TXTHDR_$S(TXTHDR]"":"  ",1:"") | 
|---|
| 229 | .  S TXTHDR=TXTHDR_$E(DATA_$$REPEAT^XLFSTR(" ",LEN),1,LEN) | 
|---|
| 230 | D ADDLINE(TXTHDR) | 
|---|
| 231 | ; | 
|---|
| 232 | D ADDLINE($$REPEAT^XLFSTR("=",IOM)) | 
|---|
| 233 | ; | 
|---|
| 234 | ; Variables... | 
|---|
| 235 | S NO=0,TXTVAR="" | 
|---|
| 236 | F  S NO=$O(NO(NO)) Q:NO'>0  D | 
|---|
| 237 | .  S DATA=NO(+NO) | 
|---|
| 238 | .  S LEN=+DATA,DATA=$P(DATA,U,3) | 
|---|
| 239 | .  S TXTVAR=TXTVAR_$S(TXTVAR]"":"  ",1:"") | 
|---|
| 240 | .  S TXTVAR=TXTVAR_$E(DATA_$$REPEAT^XLFSTR(" ",LEN),1,LEN) | 
|---|
| 241 | D ADDLINE(TXTVAR) | 
|---|
| 242 | ; | 
|---|
| 243 | Q | 
|---|
| 244 | ; | 
|---|
| 245 | MONRRD(HLEVIENJ) ; Build RUN DIARY... | 
|---|
| 246 | ; GBL,^TMP($J,"HLMON",+HLEVIENJ) -- req | 
|---|
| 247 | N NO | 
|---|
| 248 | ; | 
|---|
| 249 | QUIT:'$D(@GBL@("RUN"))  ;-> | 
|---|
| 250 | ; | 
|---|
| 251 | D ADDLINE("") | 
|---|
| 252 | D ADDLINE($$CJ^XLFSTR("---------------------- Run Diary ------------------------",IOM)) | 
|---|
| 253 | ; | 
|---|
| 254 | S NO=0 | 
|---|
| 255 | S NO=$O(@GBL@("RUN",NO)) Q:NO'>0  D | 
|---|
| 256 | .  D ADDLINE(@GBL@("RUN",+NO)) | 
|---|
| 257 | ; | 
|---|
| 258 | Q | 
|---|
| 259 | ; | 
|---|
| 260 | ; | 
|---|
| 261 | MONMMT(HLEVIENJ) ; Build MSG TEXT... | 
|---|
| 262 | ; ^TMP($J,"HLMON",+HLEVIENJ) -- req | 
|---|
| 263 | N NO | 
|---|
| 264 | ; | 
|---|
| 265 | QUIT:'$D(@GBL@("MSG"))  ;-> | 
|---|
| 266 | ; | 
|---|
| 267 | D ADDLINE("") | 
|---|
| 268 | D ADDLINE($$CJ^XLFSTR("-------------------- Message Text ----------------------",IOM)) | 
|---|
| 269 | ; | 
|---|
| 270 | S NO=0 | 
|---|
| 271 | S NO=$O(@GBL@("MSG",NO)) Q:NO'>0  D | 
|---|
| 272 | .  D ADDLINE(@GBL@("MSG",+NO)) | 
|---|
| 273 | ; | 
|---|
| 274 | Q | 
|---|
| 275 | ; | 
|---|
| 276 | ; | 
|---|
| 277 | PAD(VAR,COL) ; Make  "    var: " | 
|---|
| 278 | QUIT:$L(VAR)>(COL-3) VAR_":  " ;-> | 
|---|
| 279 | Q $$REPEAT^XLFSTR(" ",COL-$L(VAR))_VAR_":  " | 
|---|
| 280 | ; | 
|---|
| 281 | ADDLINE(TXT) ; Add line of text... | 
|---|
| 282 | N NO | 
|---|
| 283 | S NO=$O(@GBL@("VIEW",":"),-1)+1 | 
|---|
| 284 | S @GBL@("VIEW",+NO)=TXT | 
|---|
| 285 | Q | 
|---|
| 286 | ; | 
|---|
| 287 | ; | 
|---|
| 288 | ADD(VAR,COL) ; Add to TXT... | 
|---|
| 289 | N VAL | 
|---|
| 290 | S VAL=$P($G(@GBL@(VAR)),U,$S(VAR="STATR":4,1:3)) | 
|---|
| 291 | S TXT=TXT_$S(TXT]"":"  ",1:"")_$E(VAL_$$REPEAT^XLFSTR(" ",COL),1,COL) | 
|---|
| 292 | Q | 
|---|
| 293 | ; | 
|---|
| 294 | EOR ;HLEVREP2 - Event Monitor REPORTS ;5/16/03 14:42 | 
|---|