[613] | 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
|
---|