Ignore:
Timestamp:
Dec 4, 2009, 8:26:01 PM (14 years ago)
Author:
George Lilly
Message:

WorldVistAEHR overlayed on FOIAVistA

Location:
FOIAVistA/tag/r
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • FOIAVistA/tag/r/PAID-PRS/PRSATPE.m

    r628 r636  
    1 PRSATPE ;WOIFO/PLT - Find Exceptions ;12/3/07
    2  ;;4.0;PAID;**26,34,69,102,112,116**;Sep 21, 1995;Build 23
    3  ;;Per VHA Directive 2004-038, this routine should not be modified.
     1PRSATPE ;HISC/REL-Find Exceptions ;12/08/05
     2 ;;4.0;PAID;**26,34,69,102**;Sep 21, 1995
    43 K ER S (ECNT,FATAL)=0,X0=$G(^PRST(458,PPI,"E",DFN,"D",DAY,0)),STAT=$P($G(^(10)),"^",1)
    54 N MLTIME S MLTIME=0
    65 S TC=$P(X0,"^",2) I 'TC S ER(1)=$P($T(ERTX+1),";;",2),FATAL=1 G EX
    7  ;
    8  ;ensure Normal Hrs = tour hrs for hourly employees
    9  I DAY=14 I '$$HRSMATCH(PPI,DFN) S FATAL=1,ERR=21 D ERR3640 G EX
    10  ;
    116 I "1 3 4"'[TC,STAT="" S ER(1)=$P($T(ERTX+2),";;",2),FATAL=1 G EX
    12  ;
    13  ;  Validate NAWS 36/40 nurse tours--can't certify if errors
    14  N NAWSERR S NAWSERR=0
    15  I DAY=7!(DAY=14),$$NAWS3640(DFN,PPI) D
    16  .  I $$SAT2DAY(DAY/7,DFN,PPI) D
    17  ..    S FATAL=1 S ERR=16 D ERR3640 S ERR=17 D ERR3640
    18  ..    S NAWSERR=1
    19  .  I $$THREE12(DAY/7,DFN,PPI) D
    20  ..    S FATAL=1 I 'NAWSERR S ERR=16 D ERR3640
    21  ..    S ERR=$S(DAY=7:19,1:20) D ERR3640
    22  I DAY=1,$$NAWS3640(DFN,PPI),$$CARRYOVR(DFN,PPI) D
    23  .    S FATAL=1 S ERR=16 D ERR3640 S ERR=18 D ERR3640
    24  ;
    25  S X2=$G(^PRST(458,PPI,"E",DFN,"D",DAY,2)) G:X2="" EX S X1=$G(^(1)),X4=$G(^(4)),K=$P($G(^(10)),U,4)
    26  ;check recess entire day having un-unavailable posted for all scheduled on-on call
    27  I $E($G(PRSENT),5),K=2,X2["^RS" D
    28  . F K=1:3 QUIT:$P(X1,U,K,999)=""  S Z=$P(X1,U,K+2) I Z,$P($G(^PRST(457.2,Z,0)),"^",2)="ON",X2'[($P(X1,U,K,K+1)_"^UN") S PRSWOC=$G(PRSWOC)_DAY_"," QUIT
    29  . I $G(PRSWOC)'[(DAY_",") F K=1:3 QUIT:$P(X4,U,K,999)=""  S Z=$P(X4,U,K+2) I Z,$P($G(^PRST(457.2,Z,0)),"^",2)="ON",X2'[($P(X4,U,K,K+1)_"^UN") S PRSWOC=$G(PRSWOC)_DAY_"," QUIT
    30  . QUIT
    31  ;
     7 S X2=$G(^PRST(458,PPI,"E",DFN,"D",DAY,2)) G:X2="" EX S X1=$G(^(1)),X4=$G(^(4))
    328 K TM I X2["OT"!(X2["CT") D TM
    33  K T,TRS F K=1:3 Q:$P(X1,"^",K)=""  S Z=$P(X1,"^",K+2) I $S('Z:1,1:$P($G(^PRST(457.2,Z,0)),"^",2)="RG") D
     9 K T F K=1:3 Q:$P(X1,"^",K)=""  S Z=$P(X1,"^",K+2) I $S('Z:1,1:$P($G(^PRST(457.2,Z,0)),"^",2)="RG") D
    3410 .S X=$P(X1,"^",K,K+1) D CNV^PRSATIM S Z1=$P(Y,"^",1),Z2=$P(Y,"^",2) D V0
    3511 .I Z1'="",$G(T(Z1))="*" K T(Z1) S T(Z2)="*" Q
     
    4016 .S T(Z1)="",T(Z2)="*" Q
    4117 ;
    42  ;find rs-type of time segments of trs array in x2 posted string
    43  I X2["^RS" F K=1:4:25 QUIT:$P(X2,U,K,999)=""  S X=$P(X2,"^",K,K+1) I "^"'[X,$P(X2,"^",K+2)="RS" D
    44  . S TT=$P(X2,"^",K+2) D CNV^PRSATIM S Z1=$P(Y,"^",1),Z2=$P(Y,"^",2) D V1
    45  . I Z1'="",$G(TRS(Z1))="*" K TRS(Z1) S TRS(Z2)="*" QUIT
    46  . S TRS(Z1)="",TRS(Z2)="*"
    47  . QUIT
    4818 ; Checks for Daily employees
    4919 I "^"[$P(X2,"^",1,2) S TT=$P(X2,"^",3),K=1,DN=0,Y0="" G L0
    5020 F K=1:4:25 S X=$P(X2,"^",K,K+1) I "^"'[X D
    51  . N Z3,Z4
    52  . S TT=$P(X2,"^",K+2)
    53  . D CNV^PRSATIM S Y0=Y,Z1=$P(Y,"^",1),Z2=$P(Y,"^",2) D V1 S TIM=Z2-Z1/60
    54  . S Z3=Z1,Z4=Z2
    55  . I TT="ML" S MLTIME=MLTIME+TIM
    56  . S Z1=$O(T(Z1)) S:Z1'="" Z1=T(Z1)
    57  . S Z2=$O(T(Z2-1)) S:Z2'="" Z2=T(Z2)
    58  . ;trs=1 if absolute outside rs, 2 if absolute inside rs, 3 if overlap (in/outside) rs and inside tour of duty
    59  . ;if exception segment start/ending time outside tour of duty, reset z3 and z4
    60  . I Z1]""!(Z2]""),X2["^RS" S:Z1=""&(Z2="*") Z3=$O(T(Z3)) S:Z1="*"&(Z2="") Z4=$O(T(Z3)) S Z3=$O(TRS(Z3)) S:Z3]"" Z3=TRS(Z3) S Z4=$O(TRS(Z4-1)) S:Z4]"" Z4=TRS(Z4) S TRS=$S(Z3=""&(Z4=""):1,Z3="*"&(Z4="*"):2,1:3)
    61  . I TT="UN" D UN^PRSATPH QUIT
    62  . I "CT OT ON SB RG"[TT D OT QUIT
    63  . D LV QUIT
     21 .S TT=$P(X2,"^",K+2)
     22 .D CNV^PRSATIM S Y0=Y,Z1=$P(Y,"^",1),Z2=$P(Y,"^",2) D V1 S TIM=Z2-Z1/60
     23 .I TT="ML" S MLTIME=MLTIME+TIM
     24 .S Z1=$O(T(Z1)) S:Z1'="" Z1=T(Z1)
     25 .S Z2=$O(T(Z2-1)) S:Z2'="" Z2=T(Z2)
     26 .I TT="UN" D UN^PRSATPH Q
     27 .I "CT OT ON SB RG"[TT D OT Q
     28 .D LV Q
    6429 ;
    6530 ; Check for a minimum of 1 hour ML
     
    9560 I TT="ON"&(X2["HX") Q
    9661 ;I "OT CT"[TT,TIM'>1 Q
    97  ;none-leave hours are inside tour hours, but quit if inside rs hours
    98  QUIT:$G(TRS)=2!(TT="HW"&(X2["^RS"))  S ERR=6 QUIT
     62 S ERR=6 Q
    9963TM ; Get OT,CT request,approve times
    10064 S DTI=$P($G(^PRST(458,PPI,1)),"^",DAY),DA=0 Q:'DTI
     
    10872 I TC=3!(TC=4) Q
    10973 I TC=1,TT="HW" Q
    110  ;leave hours are (overlap) outside tour hours or (overlap) inside recess hours
    111  I ($G(TRS)'=1&(TT="HW")&$G(TRS)) QUIT
    112  I Z1'="*"!(Z2'="*")!($G(TRS)'=1&(TT'="RS")&$G(TRS)) S ERR=5,FATAL=1 D ERR
     74 I Z1'="*"!(Z2'="*") S ERR=5,FATAL=1 D ERR
    11375 ;
    11476L0 N REMARK S REMARK=$P(X2,"^",K+3)
    11577 Q:REMARK&(REMARK'=15&(REMARK'=16))
    11678 I "HX"[TT D HENCAP
    117  ;no leave request for non-leave hour and rs types
    118  QUIT:"RG CP NP HX HW TR TV RS"[TT
     79 Q:"RG CP NP HX HW TR TV"[TT
    11980 S DTI=$P($G(^PRST(458,PPI,1)),"^",DAY) Q:'DTI  S (DT1,DT2)=DTI
    12081 I DN D D2 S:DN=2 DT1=DT2
     
    142103 S ERR=15 D ERR Q  ; Holiday in current PP
    143104 Q
    144 NAWS3640(PRSEMP,PPI) ; return true if NAWS 36/40 Nurse for this PPI
    145  N EMPNODE,PAYPLAN,DTYBASIS,NORMHRS,S8
    146  S S8=$G(^PRST(458,PPI,"E",PRSEMP,5))
    147  I S8'="",($E(S8,26,27)'=72!("KM"'[$E(S8,28))!($E(S8,29)'=1)) Q 0
    148  S EMPNODE=$G(^PRSPC(PRSEMP,0))
    149  S PAYPLAN=$P(EMPNODE,U,21)
    150  S DTYBASIS=$P(EMPNODE,U,10)
    151  S NORMHRS=$P(EMPNODE,U,16)
    152  Q "KM"[PAYPLAN&(DTYBASIS=1)&(NORMHRS=72)
    153 SAT2DAY(WK,PRSIEN,PPI) ;
    154  N HRS,SUNTRHRS,SAT2DAY,PRSD
    155  S SAT2DAY=0
    156  S PRSD=$S(WK=1:7,1:14)
    157  S SAT2DAY=$P($G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,0)),"^",2)
    158  I SAT2DAY>0 S SAT2DAY=$P($G(^PRST(457.1,SAT2DAY,0)),U,5)="Y"
    159  Q SAT2DAY
    160 CARRYOVR(PRSIEN,PPI) ; true if hours are coming in from last pp
    161  N PRIORSAT,SAT2DAY
    162  S SAT2DAY=0
    163  S PRIORSAT=$P($G(^PRST(458,PPI-1,"E",PRSIEN,"D",14,0)),U,2)
    164  I PRIORSAT>0 S SAT2DAY=$P($G(^PRST(457.1,PRIORSAT,0)),U,5)="Y"
    165  Q SAT2DAY
    166 THREE12(WK,PRSIEN,PPI) ;
    167  N PRSD,TOURDTY,COUNT,ST,EN
    168  S COUNT=0
    169  S ST=$S(WK=1:1,1:8),EN=$S(WK=1:7,1:14)
    170  F PRSD=ST:1:EN D
    171  . S TOURDTY=$P($G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,0)),"^",2)
    172  . I $P($G(^PRST(457.1,TOURDTY,0)),U,6)=12 S COUNT=COUNT+1
    173  I COUNT'=3 Q 1
    174  N HRS
    175  D TOURHRS^PRSARC07(.HRS,PPI,PRSIEN)
    176  Q:(HRS($S(WK=1:"W1",1:"W2"))'=36) 1
    177  Q 0
    178 HRSMATCH(PPI,DFN) ; Return true if hourly employee tour hrs '= 8B normal hrs
    179  N MATCH,HRS,NH,ENT,ENTPTR
    180  I $G(PPI)'>0!($G(DFN)'>0) Q 1
    181  S MATCH=1
    182  S NH=-1
    183  S ENTPTR=$P($G(^PRST(458,PPI,"E",DFN,0)),U,5)
    184  I ENTPTR'="" D
    185  .  S ENT=$P($G(^PRST(457.5,ENTPTR,1)),U)
    186  .  S NH=$E($G(^PRST(458,PPI,"E",DFN,5)),26,27)
    187  .  Q:NH="00"
    188  .  I +NH'>0 S NH=$P($G(^PRSPC(DFN,0)),U,50)
    189  I $G(ENT)="" D ^PRSAENT
    190  I $G(ENT)'="",$E(ENT)'="D",($E(ENT,1,2)'="0D"),$G(NH)'=112 D
    191  .  D TOURHRS^PRSARC07(.HRS,PPI,DFN)
    192  .  I ($G(HRS("W1"))+$G(HRS("W2")))'=+$G(NH) S MATCH=0
    193  Q MATCH
    194105 ;
    195106ERR ; Set Error
    196107 S ECNT=ECNT+1,ER(ECNT)=TT_$P($T(ERTX+ERR),";;",2)_"^"_$P(X2,"^",K) Q
    197 ERR3640 ; Set NAWS (36/40) Errors and errors not related to a single segment
    198  S ECNT=ECNT+1,ER(ECNT)=$P($T(ERTX+ERR),";;",2) Q
    199108ERTX ;;
    2001091 ;;No Tour Entered^
     
    2021113 ;; not Requested
    2031124 ;; Requested but not Approved
    204 5 ;; Posted outside of Tour Hours or within Recess Hours
    205 6 ;; Posted within Tour Hours or outside of Recess Hours
     1135 ;; Posted outside of Tour Hours
     1146 ;; Posted within Tour Hours
    2061157 ;; Posted exceeds Requested Hours
    2071168 ;; Requested but pending Supervisor Approval
     
    21312214 ;; The minimum charge for Military Leave is one hour
    21412315 ;; was encapsulated by non-pay
    215 16 ;;36/40 AWS tours require
    216 17 ;; -no 2 day tours on Sat
    217 18 ;; -no prior pp carryover
    218 19 ;; -3 12 hr tours/wk 1
    219 20 ;; -3 12 hr tours/wk 2
    220 21 ;;Normal/Tour hrs unequal
Note: See TracChangeset for help on using the changeset viewer.