[613] | 1 | HLDIEDB1 ;CIOFO-O/LJA - DEBUG Menu ;1/8/04 @ 01:28
|
---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995
|
---|
| 3 | ;
|
---|
| 4 | INIT ;
|
---|
| 5 | N A7UMENU,A7UOK,A7UOPT,NOMENU,I,T,X,Y
|
---|
| 6 | ;
|
---|
| 7 | CTRL ;
|
---|
| 8 | D HEADER
|
---|
| 9 | D M
|
---|
| 10 | D ASK I 'A7UOK QUIT ;->
|
---|
| 11 | D XEC
|
---|
| 12 | D BT QUIT:'A7UOK ;->
|
---|
| 13 | G CTRL ;->
|
---|
| 14 | ;
|
---|
| 15 | BT ;
|
---|
| 16 | N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
| 17 | W !
|
---|
| 18 | S A7UOK=0
|
---|
| 19 | N DIR
|
---|
| 20 | S DIR(0)="EA",DIR("A")="Press RETURN to continue, or '^' to exit... "
|
---|
| 21 | D ^DIR
|
---|
| 22 | QUIT:+Y'=1 ;->
|
---|
| 23 | S A7UOK=1
|
---|
| 24 | QUIT
|
---|
| 25 | ;
|
---|
| 26 | HEADER ;
|
---|
| 27 | N DEBUG,IOINHI,IOINORM,X
|
---|
| 28 | W @IOF,$$CJ^XLFSTR("HLDIE Debug Utility",IOM)
|
---|
| 29 | S DEBUG=$G(^XTMP("HLDIE-DEBUG","STATUS"))
|
---|
| 30 | I DEBUG]"" D ; Show debug string...
|
---|
| 31 | . S X="IOINORM;IOINHI" D ENDR^%ZISS
|
---|
| 32 | . S DEBUG="Pre-call: "_$$CD($P(DEBUG,U))_" Post-call: "_$$CD($P(DEBUG,U,2))_" Screen: "_$$CD($P(DEBUG,U,3))
|
---|
| 33 | . W !,?17,DEBUG
|
---|
| 34 | W !,$$REPEAT^XLFSTR("=",80)
|
---|
| 35 | QUIT
|
---|
| 36 | ;
|
---|
| 37 | CD(TXT) ; debug information
|
---|
| 38 | ; IOINORM,IOINHI -- req
|
---|
| 39 | QUIT:TXT']"" "OFF" ;->
|
---|
| 40 | QUIT IOINHI_"ON["_TXT_"]"_IOINORM ;->
|
---|
| 41 | ;
|
---|
| 42 | M KILL A7UMENU N I,T F I=1:1 S T=$T(M+I) QUIT:T'[";;" S T=$P(T,";;",2,99),A7UMENU(I)=$P(T,"~",2,99) W !,$J(I,2),". ",$P(T,"~") S NOMENU=I
|
---|
| 43 | ;;Display debug documentation~D DOC
|
---|
| 44 | ;;Display debug data - API~D API^HLDIEDB0
|
---|
| 45 | ;;Display debug data - FILE,IEN~D FILEIEN^HLDIEDB0
|
---|
| 46 | ;;Display debug data - SEARCH~D SEARCH^HLDIEDB0
|
---|
| 47 | ;;Display debug data - REALTIME~D REALTIME^HLDIEDB1
|
---|
| 48 | ;;Display debug data - JOB~D JOB^HLDIEDB3
|
---|
| 49 | ;;Set debug control string (Turn debugging on/off)~D SETDEBUG^HLDIEDBG
|
---|
| 50 | ;;Kill debug data~D KILLALL^HLDIEDBG
|
---|
| 51 | QUIT
|
---|
| 52 | ;
|
---|
| 53 | ASK ;
|
---|
| 54 | ; NOMENU -- req
|
---|
| 55 | N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
| 56 | W !
|
---|
| 57 | S A7UOK=0
|
---|
| 58 | N DIR
|
---|
| 59 | S DIR(0)="NO^1:"_NOMENU,DIR("A")="Select option"
|
---|
| 60 | D ^DIR
|
---|
| 61 | QUIT:'$D(A7UMENU(+Y)) ;->
|
---|
| 62 | S A7UOPT=+Y
|
---|
| 63 | S A7UOK=1
|
---|
| 64 | QUIT
|
---|
| 65 | ;
|
---|
| 66 | XEC ;
|
---|
| 67 | S X=A7UMENU(+A7UOPT) X X
|
---|
| 68 | QUIT
|
---|
| 69 | ;
|
---|
| 70 | REALTIME ; real-time monitoring...
|
---|
| 71 | N C2,C3,C4,C5,C6,C7,C8,CT,GBL,LAST,STOP,X
|
---|
| 72 | ;
|
---|
| 73 | S GBL="^XTMP(""HLDIE-DEBUGN"",""N"")",LAST=$G(@GBL)
|
---|
| 74 | S C2=7,C3=18,C4=30,C5=40,C6=52,C7=70,C8=75
|
---|
| 75 | ;
|
---|
| 76 | S CT=0
|
---|
| 77 | ;
|
---|
| 78 | D REALHDR
|
---|
| 79 | ;
|
---|
| 80 | F D Q:STOP
|
---|
| 81 | . S STOP=1,CT=CT+1
|
---|
| 82 | . D REALSHOW
|
---|
| 83 | . R X:60 QUIT:X]"" ;->
|
---|
| 84 | . S STOP=0
|
---|
| 85 | ;
|
---|
| 86 | Q
|
---|
| 87 | ;
|
---|
| 88 | REALHDR ; Header for real-time display...
|
---|
| 89 | ; Cn -- req
|
---|
| 90 | W !!,"#",?C2,"NOW",?C3,"File [#IEN]",?C4,"DataTM",?C5,"$J"
|
---|
| 91 | W ?C6,"Rtn",?C7,"LOC",?C8,"Edtor"
|
---|
| 92 | W !,$$REPEAT^XLFSTR("=",IOM)
|
---|
| 93 | Q
|
---|
| 94 | ;
|
---|
| 95 | REALSHOW ; Show information...
|
---|
| 96 | ;C2,C3,GBL,LAST -- req --> LAST
|
---|
| 97 | N DNO,NOW,NUM
|
---|
| 98 | ;
|
---|
| 99 | S NUM=$G(@GBL),NOW=$$TIME($$NOW^XLFDT)
|
---|
| 100 | ;
|
---|
| 101 | I CT=1 D QUIT ;->
|
---|
| 102 | . W !,?C2,NOW,?C3,"Collecting data..."
|
---|
| 103 | ;
|
---|
| 104 | I NUM=LAST D QUIT ;->
|
---|
| 105 | . W:$X>0 !
|
---|
| 106 | . W ?C2,NOW,?C3,"[No change]"
|
---|
| 107 | ;
|
---|
| 108 | F DNO=(LAST+1):1:NUM D REALONE(DNO)
|
---|
| 109 | ;
|
---|
| 110 | S LAST=NUM
|
---|
| 111 | ;
|
---|
| 112 | Q
|
---|
| 113 | ;
|
---|
| 114 | REALONE(DNO) ; Show one entry...
|
---|
| 115 | ; Cn -- req
|
---|
| 116 | N DATA,DATE,EDITOR,FILE,IEN,JOB,LOC,RTN,SNO,TIME
|
---|
| 117 | ;
|
---|
| 118 | S DATA=$G(@GBL@(DNO))
|
---|
| 119 | S FILE=$P(DATA,U),IEN=$P(DATA,U,2),TIME=$P(DATA,U,3),JOB=$P(DATA,U,4)
|
---|
| 120 | S RTN=$P(DATA,U,5),SNO=$P(DATA,U,6),EDITOR=$P(DATA,U,7)
|
---|
| 121 | ;
|
---|
| 122 | S TIME=$$TIME(TIME)
|
---|
| 123 | ;
|
---|
| 124 | W !,$J(DNO,5),?C2,NOW,?C3,FILE," [#",IEN,"]",?C4,TIME,?C5,JOB
|
---|
| 125 | W ?C6,RTN,?C7,SNO,?C8,$S(EDITOR["HLDIE":"HL",1:"FM")
|
---|
| 126 | ;
|
---|
| 127 | Q
|
---|
| 128 | ;
|
---|
| 129 | TIME(FMTIME) ; Return HH:MM:SS
|
---|
| 130 | S FMTIME=$P(FMTIME_"000000",".",2)
|
---|
| 131 | QUIT $E(FMTIME,1,2)_":"_$E(FMTIME,3,4)_":"_$E(FMTIME,5,6)
|
---|
| 132 | ;
|
---|
| 133 | ;
|
---|
| 134 | ;
|
---|
| 135 | DOC N C,I,IOINHI,IOINORM,T,X
|
---|
| 136 | S X="IOINHI;IOINORM" D ENDR^%ZISS
|
---|
| 137 | F I=4:1 S T=$T(DOC+I) QUIT:T'[";;"!($G(X)[U) D
|
---|
| 138 | . S T=$P(T,";;",2,99) S:$E(T,1,2)="[[" T=IOINHI_$TR(T,"[]","")_IOINORM W !,T
|
---|
| 139 | ;;[[OVERVIEW]]
|
---|
| 140 | ;; HLDIE debug data can be captured for evaluation by setting a "debug string."
|
---|
| 141 | ;; The debug string is stored on the ^XTMP("HLDIE-DEBUG","STATUS") node.
|
---|
| 142 | ;; This debug string should be set using the 'Set debug control string (Turn
|
---|
| 143 | ;; debugging on/off)' menu choice.
|
---|
| 144 | ;;
|
---|
| 145 | ;;
|
---|
| 146 | ;;[[DEBUG STRING DETAILS]]
|
---|
| 147 | ;; The "debug string" had three(3) pieces:
|
---|
| 148 | ;;
|
---|
| 149 | ;; * Piece 1 controls data capture prior to FILE^DIE or FILE^HLDIE call.
|
---|
| 150 | ;; - If set to 1, "select" data (see below) is captures.
|
---|
| 151 | ;; - If set to 2, all local variables are captures.
|
---|
| 152 | ;; - If set to "", no data is collected.
|
---|
| 153 | ;;
|
---|
| 154 | ;; * Piece 2 controls data capture after FILE^DIE or FILE^HLDIE call.
|
---|
| 155 | ;; - See piece 1 above for setting details.
|
---|
| 156 | ;;
|
---|
| 157 | ;; * Piece 3 activates data capture screening.
|
---|
| 158 | ;; - Piece 3 can be set to 1 to activate the data screen held in
|
---|
| 159 | ;; $$STORESCR^HLDIEDB2. This API holds no M code, but is a placeholder
|
---|
| 160 | ;; for M code that can evaluate the environment and on-the-fly turn on
|
---|
| 161 | ;; or off data storage. (It can also control whethere "select" or all
|
---|
| 162 | ;; data is captured.)
|
---|
| 163 | ;;
|
---|
| 164 | ;;
|
---|
| 165 | ;;[[PIECE 3 DATA SCREEN DETAILS]]
|
---|
| 166 | ;; If piece 3 of the debug control string equals 1, the following
|
---|
| 167 | ;; occurs:
|
---|
| 168 | ;;
|
---|
| 169 | ;; * $$STORESCR^HLDIEDB2 is called by debugging process in FILE^HLDIE.
|
---|
| 170 | ;; * The local variable STORE holds the value null, 1 or 2 (see above),
|
---|
| 171 | ;; specifying whether data should be captured, and if so, whether "select"
|
---|
| 172 | ;; or all local variables should be stored.
|
---|
| 173 | ;; * If M code has been added to $$STORESCR^HLDIEDB2, it may evaluate the
|
---|
| 174 | ;; environment and optionally reset STORE to null, 1 or 2.
|
---|
| 175 | ;; * The value of STORE after M code execution is returned to the debugging
|
---|
| 176 | ;; process. (And, if set to null, no data is captured.)
|
---|
| 177 | ;;
|
---|
| 178 | ;; The following variables are defined for use by the M code added to
|
---|
| 179 | ;; $$STORESCR^HLDIEDB2:
|
---|
| 180 | ;;
|
---|
| 181 | ;; * CT - The number occurences already stored for TODAY/JOB#/API.
|
---|
| 182 | ;; (When a job calls STATUS^HLTF0, a call is made to FILE^HLDIE which
|
---|
| 183 | ;; can result in the creation of a debug data capture entry. Every
|
---|
| 184 | ;; such call by the job to STATUS^HLTF0 results in the creation of
|
---|
| 185 | ;; another data capture. Twenty such calls can be made, after which
|
---|
| 186 | ;; the oldest capture is removed by the FIFO method. The value of CT
|
---|
| 187 | ;; holds the total number of data capture occurences.)
|
---|
| 188 | ;; * DEBUGNO - The sequential number to be used during data storage.
|
---|
| 189 | ;; * DEBUGNOW - The date/time that will be used during data storage.
|
---|
| 190 | ;; * HLFILE - The file being edited.
|
---|
| 191 | ;; * HLIEN - The file's IEN being edited.
|
---|
| 192 | ;; * LOC - 1 (before call) or 2 (after call).
|
---|
| 193 | ;; * RTN - RTN~SUBRTN (from the 4th & 5th FILE^HLDIE parameters.)
|
---|
| 194 | ;; * STORE - "" (don't store), 1 (store "select"), or 2 (store all.)
|
---|
| 195 | ;;
|
---|
| 196 | ;;
|
---|
| 197 | ;;[[DEBUGGING - ALL VARIABLE STORAGE]]
|
---|
| 198 | ;; Unrelated to the above debugging instructions, the
|
---|
| 199 | ;; LOG^HLDIEDBG(SUBSV,KEEP,STOP) API can be used by VistA HL7 developers to
|
---|
| 200 | ;; store all variables. (The DOLRO^%ZOSV API is used.) Data created by this
|
---|
| 201 | ;; call is stored in:
|
---|
| 202 | ;;
|
---|
| 203 | ;; ^XTMP("HLDIE-"_DT,SUBSV,#,VAR)=VALUE
|
---|
| 204 | ;;
|
---|
| 205 | ;; Entries in this global are sequential at the '#' subscript level. When a
|
---|
| 206 | ;; call is made to this API, all local variables are stored at the VAR
|
---|
| 207 | ;; subscript level.
|
---|
| 208 | ;;
|
---|
| 209 | ;; The LOG API has the following parameters:
|
---|
| 210 | ;;
|
---|
| 211 | ;; * SUBSV - The subscript to be used when storing data. (The value of this
|
---|
| 212 | ;; parameter is usually RTN~SUBRTN.)
|
---|
| 213 | ;; * KEEP - The number of entries to store. (The entry of this parameter is
|
---|
| 214 | ;; optional, defaulting to 20.)
|
---|
| 215 | ;; * STOP - If set to 1, after KEEP number of entries are stored, no more
|
---|
| 216 | ;; data is captured, (and no data is deleted.) If not set to 1,
|
---|
| 217 | ;; KEEP number of entries are stored, the first entry stored is
|
---|
| 218 | ;; deleted in FIFO manner, to ensure that no more than KEEP entries
|
---|
| 219 | ;; exist.
|
---|
| 220 | Q
|
---|
| 221 | ;
|
---|
| 222 | ERR ; If error occurs during screening...
|
---|
| 223 | ; The SENDUZ(DUZ)="" array *MUST* already be defined...
|
---|
| 224 | N C,DATA,ERRTXT,LP,NO,ST,STORERR,TEXT,TIME,X,XMDUZ,XMSUB,XMTEXT,XMZ
|
---|
| 225 | ;
|
---|
| 226 | ; Before continuing, specify that NOTHING should be stored...
|
---|
| 227 | ; This email message is ALL that will be stored or sent.
|
---|
| 228 | S STORE="" ; This variable is returned to FILE^HLDIE execution
|
---|
| 229 | ;
|
---|
| 230 | ; Also, turn off STORE capture!
|
---|
| 231 | S ^XTMP("HLDIE-DEBUG","STATUS")=""
|
---|
| 232 | ;
|
---|
| 233 | ; Record an error in logger...
|
---|
| 234 | S ERRTXT=$$EC^%ZOSV
|
---|
| 235 | S X=$$LOG^HLEVAPI2("FILE-HLDIE","ERRTXT")
|
---|
| 236 | ;
|
---|
| 237 | ; setup things...
|
---|
| 238 | S XMDUZ=.5,XMSUB="HLDIE $$STORESCR Error"
|
---|
| 239 | S XMTEXT="^TMP("_$J_",""HLMSG"","
|
---|
| 240 | KILL ^TMP($J,"HLMSG"),^TMP($J,"HLVAR")
|
---|
| 241 | S NO=0
|
---|
| 242 | ;
|
---|
| 243 | ; Add text...
|
---|
| 244 | D MAILADD("An error occurred in $$STORESCR^HLDIEDB2 that must be checked. The")
|
---|
| 245 | D MAILADD("variables that existed at the time of the error are listed below.")
|
---|
| 246 | D MAILADD("")
|
---|
| 247 | D MAILADD("The error was '"_$$EC^%ZOSV_"'.")
|
---|
| 248 | D MAILADD("")
|
---|
| 249 | D MAILADD("IMPORTANT!! All debugging was turned off. Please review the problem,")
|
---|
| 250 | D MAILADD(" then turn debugging back on.")
|
---|
| 251 | D MAILADD("")
|
---|
| 252 | D MAILADD("Local Variable List"),MAILADD("--------------------")
|
---|
| 253 | ;
|
---|
| 254 | S X="^TMP("_$J_",""HLVAR""," D DOLRO^%ZOSV
|
---|
| 255 | S LP="^TMP("_$J_",""HLVAR""",ST=LP_",",LP=LP_")",C=","
|
---|
| 256 | F S LP=$Q(@LP) Q:LP'[ST D
|
---|
| 257 | . S DATA=$TR($P($P(LP,ST,2),")"),"""","")
|
---|
| 258 | . I DATA[C S DATA=$P(DATA,C)_"("_$P(DATA,C,2,99)_")"
|
---|
| 259 | . D MAILADD(DATA_"="_@LP)
|
---|
| 260 | ;
|
---|
| 261 | MERGE XMY=SENDUZ
|
---|
| 262 | I $O(XMY(0))'>0 S XMY(+$G(DUZ))=""
|
---|
| 263 | ;
|
---|
| 264 | D ^XMD
|
---|
| 265 | ;
|
---|
| 266 | KILL ^TMP($J,"HLMSG"),^TMP($J,"HLVAR")
|
---|
| 267 | ;
|
---|
| 268 | D UNWIND^%ZTER
|
---|
| 269 | ;
|
---|
| 270 | Q
|
---|
| 271 | ;
|
---|
| 272 | MAILADD(T) S NO=$G(NO)+1,^TMP($J,"HLMSG",NO)=T
|
---|
| 273 | QUIT
|
---|
| 274 | ;
|
---|
| 275 | EOR ;HLDIEDB1 - DEBUG Menu ;1/8/04 @ 01:28
|
---|