1 | PRSARC01 ;WOIFO/JAH - Recess Tracking ListManger Action Protocols ;10/17/06
|
---|
2 | ;;4.0;PAID;**112**;Sep 21, 1995;Build 54
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ; ^TMP("PRSSW",$J) index of user selected weeks.
|
---|
6 | ; ^TMP("PRSRW",$J) index of recess weeks with hours.
|
---|
7 | ;
|
---|
8 | EDITSTRT ; action protocol-edit AWS Start Date
|
---|
9 | ;
|
---|
10 | N RWREC
|
---|
11 | S VALMBCK="R"
|
---|
12 | I $G(PRSVIEW) D VWMSG^PRSARC03(1) Q
|
---|
13 | N OUT
|
---|
14 | D FULL^VALM1
|
---|
15 | W @IOF,!
|
---|
16 | ;
|
---|
17 | W !," WARNING: Changing the AWS start date will remove recess hours"
|
---|
18 | W !," that are earlier than the new AWS start date.",!
|
---|
19 | S OUT=$$ASK^PRSLIB00()
|
---|
20 | S VALMBCK="R"
|
---|
21 | Q:OUT
|
---|
22 | N PRSDTTMP
|
---|
23 | S PRSDTTMP=PRSDT
|
---|
24 | D NEWSTART^PRSARC03(.OUT,.PRSDT)
|
---|
25 | I OUT S PRSDT=PRSDTTMP Q
|
---|
26 | ;
|
---|
27 | S RWREC=$P(PRSFY,U,9)
|
---|
28 | I RWREC>0 D GETFLWKS^PRSARC03(RWREC,PRSDT)
|
---|
29 | S PRSRWHRS=$$GETAVHRS^PRSARC04(.FMWKS,PRSDT)
|
---|
30 | N FIRSTRW
|
---|
31 | S FIRSTRW=$O(^TMP("PRSRW",$J,0))
|
---|
32 | I $G(FIRSTRW)>0 S FIRSTRW=+^TMP("PRSRW",$J,FIRSTRW)
|
---|
33 | S VALMBG=$S($G(FIRSTRW)>3:FIRSTRW-1,1:1)
|
---|
34 | Q
|
---|
35 | ;
|
---|
36 | SETWKHRS(OUT) ;set hrs for selected weeks
|
---|
37 | ;
|
---|
38 | N RH1,RH2,OTHERHRS,UOH,CTRH1,CTRH2,UCTH
|
---|
39 | S VALMBCK="R"
|
---|
40 | D FULL^VALM1
|
---|
41 | W @IOF,!
|
---|
42 | I '$D(^TMP("PRSSW",$J)) D Q
|
---|
43 | . W !,"No weeks have been selected."
|
---|
44 | . S OUT=$$ASK^PRSLIB00(1)
|
---|
45 | . S VALMBCK="R"
|
---|
46 | ;
|
---|
47 | D WHATHRS(.OUT,.RH1,.RH2,.OTHERHRS,.UOH,.CTRH1,.CTRH2,.UCTH)
|
---|
48 | I $G(OUT) S VALMBCK="R" Q
|
---|
49 | ;
|
---|
50 | D SETWKSLM(.OOPSWKS,RH1,RH2,OTHERHRS,UOH,CTRH1,CTRH2,UCTH)
|
---|
51 | ;
|
---|
52 | I $G(OOPSWKS)'="" S VALMSG="No tour data for the following weeks: "_$P(OOPSWKS,1,$L(OOPSWKS,",")-1)
|
---|
53 | ;
|
---|
54 | D DSELALL
|
---|
55 | S VALMBCK="R"
|
---|
56 | Q
|
---|
57 | WHATHRS(OUT,RH1,RH2,OTHERHRS,UOH,CTRH1,CTRH2,UCTH) ;Ask user-which hours
|
---|
58 | ; to use.
|
---|
59 | ;
|
---|
60 | ; UCTH-use current tour hours flag
|
---|
61 | ; get current ToD hrs for week 1,2-ask whether to use hrs for recess.
|
---|
62 | ;
|
---|
63 | N DIR,Y,I
|
---|
64 | S (CTRH1,CTRH2,RH1,RH2,OTHERHRS,UOH,UCTH)=0
|
---|
65 | N PPI S PPI=$O(^PRST(458,999999),-1)
|
---|
66 | N TH D TOURHRS^PRSARC07(.TH,PPI,+PRSNURSE,"")
|
---|
67 | S CTRH1=TH("W1"),CTRH2=TH("W2")
|
---|
68 | I CTRH1>0!(CTRH2>0) D
|
---|
69 | . S UOH=1
|
---|
70 | . S OTHERHRS=$$OTHERHRS^PRSARC03(CTRH1,CTRH2,+PRSNURSE)
|
---|
71 | . I OTHERHRS D
|
---|
72 | .. S DIR("A")="Set recess to match tour hours from the timecard (Recommended)"
|
---|
73 | .. S DIR("?",1)=" You have selected weeks in the past that have tour hours"
|
---|
74 | .. S DIR("?",2)=" on the nurses' timecard that are different than the"
|
---|
75 | .. S DIR("?",3)=" current tour hours."
|
---|
76 | .. S DIR("?",4)=""
|
---|
77 | .. S DIR("?",5)="Current tour of duty hours are as follows:"
|
---|
78 | .. S DIR("?",6)=" Week 1 of pay period: "_TH("W1")
|
---|
79 | .. S DIR("?",7)=" Week 2 of pay period: "_TH("W2")
|
---|
80 | .. S I=0 F S I=$O(DIR("?",I)) Q:I'>0 W !,DIR("?",I)
|
---|
81 | .. S DIR("B")="YES"
|
---|
82 | .. S DIR(0)="Y"
|
---|
83 | .. D ^DIR
|
---|
84 | .. S (UOH,UCTH)=+Y
|
---|
85 | . I 'OTHERHRS!(UOH=0) D
|
---|
86 | .. S DIR("A")="Set recess hours to current tour of duty hours"
|
---|
87 | .. S DIR("?",1)="Current tour of duty hours are as follows:"
|
---|
88 | .. S DIR("?",2)=" Week 1 of pay period: "_TH("W1")
|
---|
89 | .. S DIR("?",3)=" Week 2 of pay period: "_TH("W2")
|
---|
90 | .. S DIR("?",4)=""
|
---|
91 | .. S DIR("?",5)="Choose yes to mark recess weeks with current tour of duty hours"
|
---|
92 | .. S DIR("?",6)="for week 1 and 2."
|
---|
93 | .. S DIR("?")="Enter yes or no."
|
---|
94 | .. S DIR("B")="YES"
|
---|
95 | .. S DIR(0)="Y"
|
---|
96 | .. S I=0 F S I=$O(DIR("?",I)) Q:I'>0 W !,DIR("?",I)
|
---|
97 | .. D ^DIR
|
---|
98 | .. S UCTH=Y
|
---|
99 | E D
|
---|
100 | . W !,"There are no tour hours in the current pay period."
|
---|
101 | . S UCTH=0
|
---|
102 | ;
|
---|
103 | I $D(DIRUT) Q
|
---|
104 | ;
|
---|
105 | N ODD,EVEN
|
---|
106 | I 'UCTH D
|
---|
107 | . ; return true if there are odd or even pp weeks in the selection
|
---|
108 | . D EVEODDWK^PRSARC03(.ODD,.EVEN)
|
---|
109 | . I ODD D
|
---|
110 | .. K DIR,Y
|
---|
111 | .. S DIR("B")=40
|
---|
112 | .. S DIR("A")="Enter recess hours for the 1st week of the pay period"
|
---|
113 | .. S DIR("?")="Pay period week 1 hours. Enter the recess hours for selected weeks."
|
---|
114 | .. S DIR(0)="N^0:72:2"
|
---|
115 | .. N VALID S (VALID,OUT)=0
|
---|
116 | .. F D Q:VALID!OUT
|
---|
117 | ... D ^DIR
|
---|
118 | ... I (+Y#.25)=0 S VALID=1
|
---|
119 | ... I +Y=0 S Y=""
|
---|
120 | ... I $D(DIRUT) S OUT=1
|
---|
121 | ... S RH1=Y
|
---|
122 | . Q:$G(OUT)
|
---|
123 | . I EVEN D
|
---|
124 | .. K DIR,Y
|
---|
125 | .. S DIR("B")=80-$S($G(RH1)>0:RH1,1:40)
|
---|
126 | .. S DIR("A")="Enter recess hours for the 2nd week of the pay period"
|
---|
127 | .. S DIR("?")="Pay period week 2 hours. Enter the recess hours for selected weeks."
|
---|
128 | .. S DIR(0)="N^0:72:2"
|
---|
129 | .. N VALID S (VALID,OUT)=0
|
---|
130 | .. F D Q:VALID!OUT
|
---|
131 | ... D ^DIR
|
---|
132 | ... I (+Y#.25)=0 S VALID=1
|
---|
133 | ... I +Y=0 S Y=""
|
---|
134 | ... I $D(DIRUT) S OUT=1
|
---|
135 | ... S RH2=Y
|
---|
136 | Q
|
---|
137 | SETWKSLM(OOPSWKS,RH1,RH2,OTHERHRS,UOH,CTRH1,CTRH2,UCTH) ;
|
---|
138 | ; Set weeks RECESS HOURS in listmanager display
|
---|
139 | ;
|
---|
140 | N ITEM,LSTITEM
|
---|
141 | N OOPSWKS S OOPSWKS=""
|
---|
142 | S ITEM=0
|
---|
143 | F S ITEM=$O(^TMP("PRSSW",$J,ITEM)) Q:ITEM'>0 D
|
---|
144 | . ; Get item out of selectable items index
|
---|
145 | . S RH=$S(ITEM#2:$G(RH1),1:$G(RH2))
|
---|
146 | . I $G(OTHERHRS),$G(UOH) D
|
---|
147 | .. N D1,DAY,PPI,PPE S D1=$G(WKSFM(ITEM)) D PP^PRSAPPU
|
---|
148 | .. I $G(PPI)>0 D
|
---|
149 | ... K TH D TOURHRS^PRSARC07(.TH,PPI,+PRSNURSE,"")
|
---|
150 | ... S RH=$S(ITEM#2:TH("W1"),1:TH("W2"))
|
---|
151 | . I RH'>0,UCTH S RH=$S(ITEM#2:CTRH1,1:CTRH2)
|
---|
152 | . S LSTITEM=$G(^TMP("PRSSW",$J,ITEM))
|
---|
153 | . D FLDTEXT^VALM10(LSTITEM,"RECESS HOURS",$J(RH,15,2))
|
---|
154 | .;
|
---|
155 | .; set hours for selected weeks, remove from array if 0
|
---|
156 | .;
|
---|
157 | . I RH'>0 D
|
---|
158 | .. I UCTH S OOPSWKS=OOPSWKS_ITEM_","
|
---|
159 | .. K ^TMP("PRSRW",$J,ITEM)
|
---|
160 | . E D
|
---|
161 | .. S $P(^TMP("PRSRW",$J,ITEM),U,2)=RH
|
---|
162 | .. S $P(^TMP("PRSRW",$J,ITEM),U,3)=$G(WKSFM(ITEM))
|
---|
163 | .. ;S $P(^TMP("PRSRW",$J,ITEM),U,4)=REW
|
---|
164 | Q
|
---|
165 | SELRWK(PR,OUT) ;PROMPT USER TO SELECT WEEKS FOR RECESS
|
---|
166 | ;
|
---|
167 | ; INPUT: PR-prompt flag are they setting recess hours or removing
|
---|
168 | ; recess hours
|
---|
169 | ; OUTPUT: OUT - user aborted or timed out
|
---|
170 | S VALMBCK="R"
|
---|
171 | I $G(PRSVIEW) D VWMSG^PRSARC03(1) Q
|
---|
172 | N DIR,DIRUT,LISTI,ITEM,Y
|
---|
173 | S OUT=1
|
---|
174 | ;
|
---|
175 | ; clear out current selections
|
---|
176 | ;
|
---|
177 | D DSELALL
|
---|
178 | N PRESEL
|
---|
179 | S PRESEL=+$P($P($G(XQORNOD(0)),U,4),"=",2)
|
---|
180 | I PRESEL,(PRESEL'=$P($P($G(XQORNOD(0)),U,4),"=",2))!((PRESEL'>PRSWKLST)&(PRESEL'<PRSLSTRT)) S Y=$$PARSE^PRSARC08(XQORNOD(0),PRSLSTRT,PRSWKLST)
|
---|
181 | I '(+$G(Y))!(+$G(Y)<PRSLSTRT)!(+$G(Y)>PRSWKLST) D
|
---|
182 | .S DIR(0)="L^"_PRSLSTRT_":"_PRSWKLST
|
---|
183 | .I $G(PR)="Z" D
|
---|
184 | .. S DIR("A")="Enter week numbers to set back to work weeks"
|
---|
185 | .E D
|
---|
186 | .. S DIR("A")="Enter week numbers to set to recess"
|
---|
187 | .;
|
---|
188 | .D ^DIR
|
---|
189 | S VALMBCK="R"
|
---|
190 | Q:$D(DIRUT)
|
---|
191 | F I=1:1:$L(Y,",") D
|
---|
192 | . S ITEM=+$P(Y,",",I)
|
---|
193 | . Q:ITEM'>0
|
---|
194 | . ; Get item out of selectable items index
|
---|
195 | . S LISTI=$G(^TMP("PRSLI",$J,ITEM))
|
---|
196 | .;
|
---|
197 | .; set selection week, recess
|
---|
198 | .;
|
---|
199 | . S $P(^TMP("PRSRW",$J,ITEM),U)=LISTI
|
---|
200 | . S ^TMP("PRSSW",$J,ITEM)=LISTI
|
---|
201 | S OUT=0
|
---|
202 | I "ZX"'[PR D SETWKHRS(.OUT)
|
---|
203 | S VALMBCK="R"
|
---|
204 | Q
|
---|
205 | FLRECESS ; save recess schedule hrs to file
|
---|
206 | S VALMBCK="Q"
|
---|
207 | N SURE S SURE=0
|
---|
208 | ;
|
---|
209 | N CANADD,HASREC,OUT,CHANGE
|
---|
210 | S CANADD=$P(PRSNURSE,U,3)
|
---|
211 | S HASREC=$P(PRSFY,U,9)
|
---|
212 | ;
|
---|
213 | N DIR,Y,DIRUT
|
---|
214 | I $G(PRSOUT)=1 D
|
---|
215 | . S CHANGE=$$CHANGE^PRSARC03(HASREC)
|
---|
216 | . I 'HASREC!CHANGE D
|
---|
217 | .. S SURE=1
|
---|
218 | .. S DIR("A")="Changes will be lost. Are you sure you want to quit"
|
---|
219 | .. S DIR(0)="Y",DIR("B")="NO" D ^DIR
|
---|
220 | I SURE,(Y=0!$D(DIRUT)) S VALMBCK="R",PRSOUT=0 Q
|
---|
221 | I $G(PRSOUT)=1 S VALMBCK="Q" D:CHANGE VWMSG^PRSARC03(2) Q
|
---|
222 | ;
|
---|
223 | ;If new record add it. Nurse must be current AWS 9-month
|
---|
224 | ;
|
---|
225 | N PRSFDA,IEN,IENS,HOURS,WEEK
|
---|
226 | D FULL^VALM1
|
---|
227 | ;
|
---|
228 | I CANADD,'HASREC D
|
---|
229 | . K PRSFDA
|
---|
230 | . S PRSFDA(458.8,"+1,",.01)=+PRSNURSE
|
---|
231 | . S PRSFDA(458.8,"+1,",1)=+PRSFY
|
---|
232 | . S PRSFDA(458.8,"+1,",1.1)=PRSDT
|
---|
233 | . D UPDATE^DIE("","PRSFDA","IEN"),MSG^DIALOG()
|
---|
234 | . S HASREC=$G(IEN(1))
|
---|
235 | . S $P(PRSFY,U,9)=HASREC
|
---|
236 | . S $P(PRSFY,U,10)=$E(PRSDT,4,5)_"/"_$E(PRSDT,6,7)_"/"_$E(PRSDT,2,3)
|
---|
237 | . S $P(PRSFY,U,11)=PRSDT
|
---|
238 | ;
|
---|
239 | I HASREC D
|
---|
240 | .; start date changed?
|
---|
241 | . I $P($G(^PRST(458.8,HASREC,3)),U,2)'=PRSDT D
|
---|
242 | .. K PRSFDA,IENS
|
---|
243 | .. S IENS=HASREC_","
|
---|
244 | .. S PRSFDA(458.8,IENS,1.1)=PRSDT
|
---|
245 | .. D UPDATE^DIE("","PRSFDA","IEN"),MSG^DIALOG()
|
---|
246 | .. S $P(PRSFY,U,10)=$E(PRSDT,4,5)_"/"_$E(PRSDT,6,7)_"/"_$E(PRSDT,2,3)
|
---|
247 | .. S $P(PRSFY,U,11)=PRSDT
|
---|
248 | . I $$CHANGE^PRSARC03(HASREC) D
|
---|
249 | .. ; clean out old recess week records
|
---|
250 | .. N WKIEN S WKIEN=0
|
---|
251 | .. F S WKIEN=$O(^PRST(458.8,HASREC,1,WKIEN)) Q:WKIEN'>0 D
|
---|
252 | ... S IENS=WKIEN_","_HASREC_","
|
---|
253 | ... S PRSFDA(458.82,IENS,.01)="@"
|
---|
254 | .. D FILE^DIE("E","PRSFDA")
|
---|
255 | ..;
|
---|
256 | .. S WEEK=0
|
---|
257 | .. F S WEEK=$O(^TMP("PRSRW",$J,WEEK)) Q:WEEK'>0 D
|
---|
258 | ... S HOURS=$P(^TMP("PRSRW",$J,WEEK),U,2)
|
---|
259 | ... Q:HOURS'>0
|
---|
260 | ... K PRSFDA,IENS
|
---|
261 | ... S IENS="+1,"_HASREC_","
|
---|
262 | ... S PRSFDA(458.82,IENS,.01)=WEEK
|
---|
263 | ... S PRSFDA(458.82,IENS,1)=HOURS
|
---|
264 | ... S PRSFDA(458.82,IENS,2)=$G(WKSFM(WEEK))
|
---|
265 | ... S PRSFDA(458.82,IENS,3)=$P(^TMP("PRSRW",$J,WEEK),U,4)
|
---|
266 | ... D UPDATE^DIE("","PRSFDA","IENS"),MSG^DIALOG()
|
---|
267 | ..;
|
---|
268 | ..; update user edit date time
|
---|
269 | ..;
|
---|
270 | .. N %,%H,%I,X D NOW^%DTC
|
---|
271 | .. K PRSFDA,IENS
|
---|
272 | .. S IENS="+1,"_HASREC_","
|
---|
273 | .. S PRSFDA(458.83,IENS,.01)=%
|
---|
274 | .. S PRSFDA(458.83,IENS,1)=DUZ
|
---|
275 | .. D UPDATE^DIE("","PRSFDA","IENS"),MSG^DIALOG()
|
---|
276 | . S VALMSG="Changes Saved."
|
---|
277 | . E D
|
---|
278 | .. S VALMSG="Recess schedule has not changed since last save."
|
---|
279 | ;
|
---|
280 | I '$G(PRSVONLY) D
|
---|
281 | . W !,VALMSG
|
---|
282 | . S VALMBCK="Q"
|
---|
283 | E D
|
---|
284 | . S VALMBCK="R"
|
---|
285 | Q
|
---|
286 | ;
|
---|
287 | DSELWK ;DESELECT WEEKS
|
---|
288 | ;
|
---|
289 | S VALMBCK="R"
|
---|
290 | I $G(PRSVIEW) D VWMSG^PRSARC03(1) Q
|
---|
291 | N OUT,ITEM,REW,RH,RDATA
|
---|
292 | S VALMBCK="R"
|
---|
293 | D SELRWK("Z",.OUT)
|
---|
294 | Q:OUT
|
---|
295 | ;
|
---|
296 | ; remove selections from recess array
|
---|
297 | S (ITEM,RH)=0
|
---|
298 | F S ITEM=$O(^TMP("PRSSW",$J,ITEM)) Q:ITEM'>0 D
|
---|
299 | . S LSTITEM=$G(^TMP("PRSSW",$J,ITEM))
|
---|
300 | . D FLDTEXT^VALM10(LSTITEM,"RECESS HOURS","")
|
---|
301 | . S RDATA=^TMP("PRSRW",$J,ITEM)
|
---|
302 | . I $P(RDATA,U,5)'>0 D
|
---|
303 | .. K ^TMP("PRSRW",$J,ITEM)
|
---|
304 | . E D
|
---|
305 | .. S $P(^TMP("PRSRW",$J,ITEM),U,2)=""
|
---|
306 | ;
|
---|
307 | D DSELALL
|
---|
308 | S VALMBCK="R"
|
---|
309 | Q
|
---|
310 | DSELALL ; procedure removes items from selected items index w/no effect
|
---|
311 | ; on ListMan display.
|
---|
312 | ;
|
---|
313 | N ITEM,LISTI
|
---|
314 | S ITEM=0
|
---|
315 | F S ITEM=$O(^TMP("PRSSW",$J,ITEM)) Q:ITEM'>0 D
|
---|
316 | . S LISTI=$G(^TMP("PRSSW",$J,ITEM))
|
---|
317 | . K ^TMP("PRSSW",$J,ITEM)
|
---|
318 | Q
|
---|