1 | HLEVAPI0 ;O-OIFO/LJA - Event Monitor APIs ;02/04/2004 14:42
|
---|
2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
|
---|
3 | ;
|
---|
4 | ONOFFM(HLEVIENE,STATUS) ;Turn on/off event monitor...
|
---|
5 | D DEBUG^HLEVAPI2("ONOFFM") ; Debug data created conditionally
|
---|
6 | ;
|
---|
7 | ; Stop all event monitoring to enable on-site debugging...
|
---|
8 | QUIT:$G(^TMP("HLEVFLAG",$J))["STOP" ;->
|
---|
9 | ;
|
---|
10 | QUIT $$ONOFF(776.1,+HLEVIENE,STATUS)
|
---|
11 | ;
|
---|
12 | ONOFFS(HLEVIEN,STATUS) ; Turn on/off system...
|
---|
13 | QUIT $$ONOFF(776.999,+HLEVIEN,STATUS)
|
---|
14 | ;
|
---|
15 | ONOFF(FILE,HLEVIENE,STATUS) ; Turn on/off event monitor or system...
|
---|
16 | ; FILE can = 776.1 or 776.999
|
---|
17 | ; Actually, HLEVIENE can be the IEN of the monitor, or the system.
|
---|
18 | ; If STATUS="A", sets status to ACTIVE.
|
---|
19 | ; If STATUS="I", sets status to INACTIVE.
|
---|
20 | ; If STATUS=null or undefined (not passed), present status returned...
|
---|
21 | ;
|
---|
22 | N DA,DATA,DIE,DR,STAT,X,Y
|
---|
23 | ;
|
---|
24 | ; Find entry and IEN and zero node data...
|
---|
25 | S FILE=+$G(FILE) I FILE'=776.1&(FILE'=776.999) QUIT "^Invalid file number" ;->
|
---|
26 | S HLEVIENE=$G(HLEVIENE)
|
---|
27 | S:FILE=776.999 HLEVIENE=1 ; Just overwrite anything passed by user...
|
---|
28 | I $L($G(STATUS))>1 QUIT "^Invalid STATUS passed" ;->
|
---|
29 | S STATUS=$$UP^XLFSTR($E($G(STATUS)_" "))
|
---|
30 | I " AI"'[STATUS QUIT "^Invalid STATUS passed" ;->
|
---|
31 | ;
|
---|
32 | ; If they passed the name of the entry...
|
---|
33 | I HLEVIENE'=+HLEVIENE D QUIT:HLEVIENE'>0 "^Couldn't find entry" ;->
|
---|
34 | . I $TR(HLEVIENE," ","")']"" QUIT ;->
|
---|
35 | . S HLEVIENE(1)=$O(^HLEV(FILE,"B",HLEVIENE,0)) ; Must have passed in name
|
---|
36 | . I HLEVIENE(1)'>0 D
|
---|
37 | . . S HLEVIENE(1)=$O(^HLEV(FILE,"B",$$UP^XLFSTR(HLEVIENE),0))
|
---|
38 | . S HLEVIENE=HLEVIENE(1)
|
---|
39 | ;
|
---|
40 | ; Get zero node...
|
---|
41 | S DATA=$G(^HLEV(FILE,+HLEVIENE,0)) QUIT:DATA']"" "^Couldn't find entry" ;->
|
---|
42 | ;
|
---|
43 | ; Get current status...
|
---|
44 | S STAT=$E($P(DATA,U,2)_" ")
|
---|
45 | ;
|
---|
46 | ; If current status not yet entered in field...
|
---|
47 | I " AI"'[STAT D QUIT STAT ;->
|
---|
48 | . ; Passed-in STATUS not A or I, so just tell them value of status...
|
---|
49 | . I "AI"'[STATUS S STAT="^Status not entered yet" QUIT ;->
|
---|
50 | . ; User passed in a value to set the status to, so set it for them...
|
---|
51 | . S DA=+HLEVIENE,DIE=FILE,DR="2///"_STATUS
|
---|
52 | . D ^DIE
|
---|
53 | . S STAT=STATUS
|
---|
54 | ;
|
---|
55 | ; If all they want is the status...
|
---|
56 | I STATUS=" " QUIT STAT ;->
|
---|
57 | ;
|
---|
58 | ; Status entered in field before call...
|
---|
59 | ;
|
---|
60 | ; If passed-in status is the same as the current status in entry...
|
---|
61 | I STAT=STATUS QUIT STATUS ;-> Already set...
|
---|
62 | ;
|
---|
63 | ; Change status of field to passed-in value...
|
---|
64 | S DA=+HLEVIENE,DIE=FILE,DR="2///"_STATUS
|
---|
65 | D ^DIE
|
---|
66 | ;
|
---|
67 | Q STATUS
|
---|
68 | ;
|
---|
69 | ONOFFEV ; Turn on/off event monitor
|
---|
70 | N CHG
|
---|
71 | ;
|
---|
72 | N DATA,DIC,IEN,IENR
|
---|
73 | D HDR^HLEVREP("Turn on/off Event Monitors")
|
---|
74 | ;
|
---|
75 | S7761 KILL DATA,DIC,IEN,IENR
|
---|
76 | W !
|
---|
77 | S IEN=$$ASKIEN^HLEVREP(776.1) QUIT:IEN'>0 ;->
|
---|
78 | D HDR^HLEVREP("Turn on/off Event Monitors",IEN)
|
---|
79 | D VIEW7761(+IEN)
|
---|
80 | D RUNS7761^HLEVREP(+IEN)
|
---|
81 | I $D(^TMP($J,"HLRUNS")) D
|
---|
82 | . W !!,"Recent Checks of the Monitor by Master Job"
|
---|
83 | . W !,$$REPEAT^XLFSTR("-",IOM)
|
---|
84 | . W !,"Check-time",?18,"Results"
|
---|
85 | . W !,$$REPEAT^XLFSTR("-",IOM)
|
---|
86 | . S IENR=0
|
---|
87 | . F S IENR=$O(^TMP($J,"HLRUNS",IENR)) Q:IENR'>0 D
|
---|
88 | . . S DATA=$G(^TMP($J,"HLRUNS",IENR)) QUIT:DATA']"" ;->
|
---|
89 | . . W !,$$SDT^HLEVX001($P(DATA,U,2)),?18,$$STAT2M^HLEVX001($P(DATA,U))
|
---|
90 | W !
|
---|
91 | S CHG=$$ACTINACT(776.1,+IEN,2,"Event monitor status")
|
---|
92 | I CHG D
|
---|
93 | . D HDR^HLEVREP("Turn on/off Event Monitors",IEN)
|
---|
94 | . D VIEW7761(+IEN)
|
---|
95 | F Q:(IOSL-$Y)<4 W !
|
---|
96 | ;S X=$$BTE^HLCSMON("Press RETURN to continue... ")
|
---|
97 | G S7761 ;->
|
---|
98 | ;
|
---|
99 | VIEW7761(IEN) ; Actual display code for entry...
|
---|
100 | N NODE,P1,P2,P3,P4,P5,P6,PAR,PCE
|
---|
101 | ;
|
---|
102 | S NODE=$G(^HLEV(776.1,+IEN,0))
|
---|
103 | F PCE=1:1:6 S @("P"_PCE)=$P(NODE,U,PCE)
|
---|
104 | ;
|
---|
105 | ; Store under field number...
|
---|
106 | F PCE=1:1:8 S PAR(PCE)=$P($G(^HLEV(776.1,+IEN,40)),U,PCE)
|
---|
107 | ;
|
---|
108 | D SH7761("Description",$S(P3]"":P3,1:"---"))
|
---|
109 | D SH7761("Status",$S(P2="A":"ACTIVE",1:"INACTIVE"))
|
---|
110 | D SH7761("Requeue minutes",$S(P4:P4_"min",P4=0:"0 [Immediate Run]",1:"---"))
|
---|
111 | D SH7761("Notification mail group",$S(P5:$P($G(^XMB(3.8,+P5,0)),U),1:"---"))
|
---|
112 | D SH7761("M startup",$S(P6]"":P6,1:"---"))
|
---|
113 | W !,$$CJ^XLFSTR(" Parameter ""Variable"" Descriptors ",IOM,"-")
|
---|
114 | F PCE=1:1:8 I PAR(PCE)]"" D
|
---|
115 | . W !,?25,"Parameter - "_PCE_" = ",PAR(PCE)
|
---|
116 | ;
|
---|
117 | Q
|
---|
118 | ;
|
---|
119 | SH7761(TAG,VAL) ;
|
---|
120 | W !,?(35-$L(TAG)-2),TAG,":",?45,VAL
|
---|
121 | Q
|
---|
122 | ;
|
---|
123 | ONOFFPAR ; Turn on/off parameters...
|
---|
124 | N CHG
|
---|
125 | ;
|
---|
126 | D VIEW7769^HLEVREP(0)
|
---|
127 | ;
|
---|
128 | W !
|
---|
129 | ;
|
---|
130 | S CHG=0
|
---|
131 | S X=$$ACTINACT(776.999,1,2,"STATUS-MASTER JOB") I X=1 S CHG=1
|
---|
132 | S X=$$ACTINACT(776.999,1,6,"STATUS-EVENT MONITORING") I X=1 S CHG=1
|
---|
133 | ;
|
---|
134 | I CHG D VIEW7769^HLEVREP(0)
|
---|
135 | ;
|
---|
136 | W !
|
---|
137 | F Q:(IOSL-$Y)<3 W !
|
---|
138 | S X=$$BTE^HLCSMON("Press RETURN to exit... ")
|
---|
139 | ;
|
---|
140 | Q
|
---|
141 | ;
|
---|
142 | ACTINACT(FILE,IEN,FLD,TAG) ; Turn on/off status fields...
|
---|
143 | N DA,DIE,DR,STAT,X,Y
|
---|
144 | S STAT=$P($G(^HLEV(FILE,IEN,0)),U,+FLD)
|
---|
145 | S X=$$YN^HLCSRPT4("Change '"_TAG_"' to "_$S(STAT="A":"INACTIVE",1:"ACTIVE"),"No") I X'=1 D QUIT "" ;->
|
---|
146 | . W " ... nothing changed ..."
|
---|
147 | S DA=IEN,DIE=FILE,DR=FLD_"///"_$S(STAT="A":"I",1:"A")
|
---|
148 | D ^DIE
|
---|
149 | W " changed!"
|
---|
150 | Q 1
|
---|
151 | ;
|
---|
152 | EVENTCHK(HLEVIENM) ; Loop thru all MONITORs...
|
---|
153 | ; NOEVCHK,ZTSKMST -- req
|
---|
154 | N HLEVIENE,HLEVNM
|
---|
155 | ;
|
---|
156 | ; Check STATUS-EVENT...
|
---|
157 | S NO=$O(^HLEV(776.999,":"),-1) QUIT:$P($G(^HLEV(776.999,+NO,0)),U,6)'="A" ;->
|
---|
158 | ;
|
---|
159 | S HLEVNM=0
|
---|
160 | F S HLEVNM=$O(^HLEV(776.1,"B",HLEVNM)) Q:HLEVNM']"" D
|
---|
161 | . S HLEVIENE=0
|
---|
162 | . F S HLEVIENE=$O(^HLEV(776.1,"B",HLEVNM,HLEVIENE)) Q:'HLEVIENE D
|
---|
163 | . . D EVENTONE^HLEVAPI3(HLEVIENM,HLEVNM,HLEVIENE)
|
---|
164 | . . S NOEVCHK=$G(NOEVCHK)+1
|
---|
165 | ;
|
---|
166 | Q
|
---|
167 | ;
|
---|
168 | EVRES(HLEVIENM,HLEVIENE,RES,HLEVIENJ) ; Record result of queued task...
|
---|
169 | ; ZTSK -- req
|
---|
170 | N MIEN,NODE,STATUS
|
---|
171 | ;
|
---|
172 | ; Initial sets...
|
---|
173 | S STATUS=$P($G(^HLEV(776,+$G(HLEVIENJ),0)),U,4)
|
---|
174 | S RES=$E($$UP^XLFSTR($G(RES)))
|
---|
175 | ;
|
---|
176 | ; If any call made here, the job is running by definition...
|
---|
177 | I $G(^HLEV(776,+$G(HLEVIENJ),0))]"" D
|
---|
178 | . ; ABORT^HLEVAPI might have set status to ERROR. Don't override!
|
---|
179 | . S $P(^HLEV(776,+$G(HLEVIENJ),0),U,4)=$S(STATUS="E":"E",RES="X":"E",RES="F":"F",1:"R")
|
---|
180 | ;
|
---|
181 | ; If no master job, or RUNNING, quit...
|
---|
182 | I HLEVIENM=9999999!(RES="R") QUIT ;->
|
---|
183 | ;
|
---|
184 | ; Store results in 776.2...
|
---|
185 | S MIEN=$O(^HLEV(776.2,+HLEVIENM,51,"B",+HLEVIENE,0)) QUIT:MIEN'>0 ;->
|
---|
186 | S NODE=$G(^HLEV(776.2,+HLEVIENM,51,+MIEN,0)) QUIT:NODE']"" ;->
|
---|
187 | ; Various jobs will set... QUIT:$P(NODE,U,4)'=$G(ZTSK) ;->
|
---|
188 | S $P(NODE,U,5)=$G(RES),$P(NODE,U,6)=$$NOW^XLFDT
|
---|
189 | S ^HLEV(776.2,+HLEVIENM,51,+MIEN,0)=NODE
|
---|
190 | ;
|
---|
191 | Q
|
---|
192 | ;
|
---|
193 | RUNEV(LASTRUN,LAPSE) ; Is LASTRUN (FM) LAPSE(min) before NOW?
|
---|
194 | N WHENRUN
|
---|
195 | QUIT:LASTRUN']"" "" ;->
|
---|
196 | S WHENRUN=$$FMADD^XLFDT($$NOW^XLFDT,0,0,-LAPSE)
|
---|
197 | Q $S(WHENRUN>LASTRUN:1,1:"")
|
---|
198 | ;
|
---|
199 | OKMCODE(MREF) ; Is this a valid M subrtn^rtn reference?
|
---|
200 | N TXT
|
---|
201 | QUIT:MREF'?1.8E1"^"1.8E "" ;->
|
---|
202 | S TXT=$T(@MREF)
|
---|
203 | Q $S(TXT]"":1,1:"")
|
---|
204 | ;
|
---|
205 | Q1TIME(HLEVIENE,OVERRIDE,QTIME,XTMP) ; Start a one-time run of event monitor (w/no master job)
|
---|
206 | N DATA,HLEVIENJ,HLEVNM,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
|
---|
207 | ;
|
---|
208 | ; Override inactive entry?
|
---|
209 | S OVERRIDE=$S($G(OVERRIDE):1,1:0)
|
---|
210 | ;
|
---|
211 | ; Queue to future time?
|
---|
212 | S QTIME=$G(QTIME)
|
---|
213 | ;
|
---|
214 | ; Is event active?
|
---|
215 | S DATA=$G(^HLEV(776.1,+$G(HLEVIENE),0)) QUIT:DATA']"" "^Entry not found" ;->
|
---|
216 | I $P(DATA,U,2)'="A",'OVERRIDE QUIT "^Event not active" ;->
|
---|
217 | ;
|
---|
218 | ; More variable sets...
|
---|
219 | S HLEVNM=$P(DATA,U)
|
---|
220 | S HLEVIENM=9999999 ; A one-time, no master job, run...
|
---|
221 | ;
|
---|
222 | ; Create a monitor stub entry...
|
---|
223 | S HLEVIENJ=$$NEWEVENT^HLEVAPI(HLEVIENE,QTIME)
|
---|
224 | I HLEVIENJ'>0 QUIT "^Entry creation failure" ;->
|
---|
225 | ;
|
---|
226 | ; Queue a new job w/stub entry's IEN...
|
---|
227 | S ZTIO="",ZTDTH=$S(QTIME?7N1"."1.N:$$FMTH^XLFDT(QTIME),1:$H)
|
---|
228 | S ZTDESC="HL Event Monitor - #"_HLEVIENE
|
---|
229 | S ZTRTN="QUEUEV^HLEVAPI3"
|
---|
230 | S ZTSAVE("HLEVIENJ")="",ZTSAVE("HLEVIENE")=""
|
---|
231 | S ZTSAVE("HLEVNM")="",ZTSAVE("HLEVIENM")=""
|
---|
232 | I $G(XTMP)]"" S ZTSAVE("XTMP")=""
|
---|
233 | D ^%ZTLOAD
|
---|
234 | ;
|
---|
235 | I $G(^HLEV(776,+$G(HLEVIENJ),0))]"",$G(ZTSK)>0 D
|
---|
236 | . N DA,DIE,DR
|
---|
237 | . S DA=+HLEVIENJ,DIE=776,DR="8///"_ZTSK
|
---|
238 | . D ^DIE
|
---|
239 | ;
|
---|
240 | Q $G(ZTSK)_U_$G(HLEVIENJ)
|
---|
241 | ;
|
---|
242 | EOR ;HLEVAPI0 - Event Monitor APIs ;5/16/03 14:42
|
---|