| 1 | PRSPEEM ;HISC/MGD - ESR EXCEPTIONS FOR ENTIRE MEMORANDA ;06/15/05
 | 
|---|
| 2 |  ;;4.0;PAID;**93**;Sep 21, 1995;Build 7
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 | PAY ; Payroll Entry
 | 
|---|
| 6 |  S PRSTLV=7,QUITX=0
 | 
|---|
| 7 |  D T0
 | 
|---|
| 8 |  Q
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | SUP ; Supervisor Entry
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  S PRSTLV=3,QUITX=0
 | 
|---|
| 13 | T0 K DIR,^TMP($J,"PRSPEEM"),^TMP($J,"PRSPEEM EMP")
 | 
|---|
| 14 |  D TOP ; print header
 | 
|---|
| 15 |  D OMIT ; Prompt to omit current Pay Period
 | 
|---|
| 16 |  I X="^" D EX Q
 | 
|---|
| 17 |  D TLCHK ; Check for Supervisor of just 1 or mult T&L
 | 
|---|
| 18 |  I MULT>1 D TL
 | 
|---|
| 19 |  I MULT=1 D
 | 
|---|
| 20 |  . S TL="ATL"_TLE
 | 
|---|
| 21 |  . D EMP
 | 
|---|
| 22 |  I '$D(^TMP($J,"PRSPEEM")) W !,"No exceptions found for input criteria." Q
 | 
|---|
| 23 |  D SCRN1
 | 
|---|
| 24 |  D EX
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 | OMIT ; Prompt for Omit current pay period
 | 
|---|
| 28 |  S DIR(0)="Y"
 | 
|---|
| 29 |  S DIR("A")="Would you like to omit the current pay period from this report"
 | 
|---|
| 30 |  D ^DIR K DIR
 | 
|---|
| 31 |  S OMIT=Y
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | TLCHK ; Check for Supervisor of just 1 or mult T&L
 | 
|---|
| 35 |  S MULT=0,I=""
 | 
|---|
| 36 |  F  S I=$O(^PRST(455.5,"AS",DUZ,I)) Q:'I  D
 | 
|---|
| 37 |  . S MULT=MULT+1,TLI=I,TLE=$P(^PRST(455.5,I,0),U,1)
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | TL ; Loop to enter T&Ls and employees
 | 
|---|
| 41 |  N SEL ; local array to hold selected t&ls and employees
 | 
|---|
| 42 |  S QUIT1=0
 | 
|---|
| 43 |  F  D  Q:QUIT1
 | 
|---|
| 44 |  . D ^PRSAUTL
 | 
|---|
| 45 |  . I 'TLI S QUIT1=1 Q
 | 
|---|
| 46 |  . I $D(SEL(TLI,"A")) D  Q
 | 
|---|
| 47 |  ..  W !!,?5,"You have already selected all the employees in T&L unit ",$G(TLE),"."
 | 
|---|
| 48 |  ..  W !,?5,"Select another T&L OR enter <return> to begin report."
 | 
|---|
| 49 |  . D EMP
 | 
|---|
| 50 |  Q
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  ; Loop for individual employees in a T&L
 | 
|---|
| 53 | EMP S QUIT2=0
 | 
|---|
| 54 |  S DIR(0)="SM^A:All PT Physicians in the T&L;I:Individual PT Physicians"
 | 
|---|
| 55 |  S DIR("A")="Enter Choice"
 | 
|---|
| 56 |  D ^DIR K DIR
 | 
|---|
| 57 |  ; Loop for All employee in a T&L
 | 
|---|
| 58 |  I Y="A" D  Q
 | 
|---|
| 59 |  . K SEL(TLI) S SEL(TLI,"A")=""
 | 
|---|
| 60 |  . K ^TMP($J,"PRSPEEM",TLI)
 | 
|---|
| 61 |  . S EMP="",TL="ATL"_TLE
 | 
|---|
| 62 |  . F  S EMP=$O(^PRSPC(TL,EMP)) Q:EMP=""  D
 | 
|---|
| 63 |  . . S PRSIEN=$O(^PRSPC(TL,EMP,0))
 | 
|---|
| 64 |  . . Q:'PRSIEN
 | 
|---|
| 65 |  . . D MEM ; Check for memos w/ status = ACTIVE or RECONCILIATION STARTED
 | 
|---|
| 66 |  . . S QUIT2=1
 | 
|---|
| 67 |  Q:QUIT2
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  S PPI=+$G(^PRST(458,"AD",DT)),PRSDT=DT,PTPF=1
 | 
|---|
| 70 |  F  D  Q:QUIT2
 | 
|---|
| 71 |  . K DIC
 | 
|---|
| 72 |  . S DIC("A")=$S('$D(SEL(TLI)):"Select EMPLOYEE: ",1:"Select Another EMPLOYEE: ")
 | 
|---|
| 73 |  . S DIC(0)="AEQM",DIC="^PRSPC(",D="ATL"_TLE
 | 
|---|
| 74 |  . S DIC("S")="I $P(^(0),""^"",8)=TLE,$D(^PRST(458.7,""B"",+Y)),'$D(SEL(TLI,+Y))"
 | 
|---|
| 75 |  . W !
 | 
|---|
| 76 |  . D IX^DIC S PRSIEN=+Y
 | 
|---|
| 77 |  . I X=""!(X="^") S QUIT2=1 Q
 | 
|---|
| 78 |  . S SEL(TLI,PRSIEN)=""
 | 
|---|
| 79 |  . D MEM
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | MEM ; Check for memos w/ status of ACTIVE (2) or RECONCILIATION STARTED (3)
 | 
|---|
| 83 |  N PPI
 | 
|---|
| 84 |  S MIEN=""
 | 
|---|
| 85 |  F  S MIEN=$O(^PRST(458.7,"B",PRSIEN,MIEN)) Q:'MIEN  D
 | 
|---|
| 86 |  . S DATA0=$G(^PRST(458.7,MIEN,0))
 | 
|---|
| 87 |  . S STATUS=$P(DATA0,U,6)
 | 
|---|
| 88 |  . Q:STATUS'=2&(STATUS'=3)
 | 
|---|
| 89 |  . S TDAT=$P($G(^PRST(458.7,MIEN,4)),U,1)
 | 
|---|
| 90 |  . I TDAT S TDAT=+$G(^PRST(458,"AD",TDAT)) ; IEN of termination PP 
 | 
|---|
| 91 |  . ; Loop to check for any incomplete days in any PP of the memo
 | 
|---|
| 92 |  . S PP=0
 | 
|---|
| 93 |  . F I=1:1:26 S PPE=$P($G(^PRST(458.7,MIEN,9,I,0)),U) Q:PPE=""  D
 | 
|---|
| 94 |  . . S PPI=$O(^PRST(458,"B",PPE,0))
 | 
|---|
| 95 |  . . Q:'PPI
 | 
|---|
| 96 |  . . ; If the memo was terminated, only check ESRs up to and
 | 
|---|
| 97 |  . . ; including the Termination Date
 | 
|---|
| 98 |  . . Q:TDAT&(PPI>TDAT)  ; Don't look past termination PP
 | 
|---|
| 99 |  . . S PP=PP+1
 | 
|---|
| 100 |  . . S DATA1=$G(^PRST(458,PPI,1)) ; FileMan Dates
 | 
|---|
| 101 |  . . Q:'+$$MIEN^PRSPUT1(PRSIEN,$P(DATA1,U,I))
 | 
|---|
| 102 |  . . F DAY=1:1:14 D
 | 
|---|
| 103 |  . . . S ESRSTAT=$P($G(^PRST(458,PPI,"E",PRSIEN,"D",DAY,7)),U,1)
 | 
|---|
| 104 |  . . . Q:ESRSTAT>3
 | 
|---|
| 105 |  . . . S ESRSTATX=$$EXTERNAL^DILFD(458.02,146,"",ESRSTAT)
 | 
|---|
| 106 |  . . . I ESRSTATX="" S ESRSTATX="UNKNOWN"
 | 
|---|
| 107 |  . . . S Y=$P(DATA1,U,DAY)
 | 
|---|
| 108 |  . . . D DD^%DT
 | 
|---|
| 109 |  . . . S ^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,PP,DAY)=Y_U_ESRSTATX
 | 
|---|
| 110 |  . . I $D(^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,PP)) D
 | 
|---|
| 111 |  . . . S ^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,PP)=PPI_U_PPE
 | 
|---|
| 112 |  . ; if no exceptions found set up first pay pereiod with no data message
 | 
|---|
| 113 |  .   I '$D(^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN)) D
 | 
|---|
| 114 |  ..     S PPE=$P($G(^PRST(458.7,MIEN,9,1,0)),U)
 | 
|---|
| 115 |  ..     S PPI=$O(^PRST(458,"B",PPE,0))
 | 
|---|
| 116 |  ..     S ^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,1)=PPI_U_PPE_U_"*"
 | 
|---|
| 117 |  ..     S ^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,1,0)="no exceptions found fo r entire memo"
 | 
|---|
| 118 |  Q
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 | TOP W:$E(IOST,1,2)="C-" @IOF
 | 
|---|
| 121 |  W !?26,"VA TIME & ATTENDANCE SYSTEM"
 | 
|---|
| 122 |  W !?22,"ESR EXCEPTIONS FOR ENTIRE MEMORANDA",!!
 | 
|---|
| 123 |  Q
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 | TOP1 W:$E(IOST,1,2)="C-" @IOF W !?26,"VA TIME & ATTENDANCE SYSTEM"
 | 
|---|
| 126 |  S SCRTTLX="ESR EXCEPTIONS FOR ENTIRE MEMORANDA"
 | 
|---|
| 127 |  I OMIT S SCRTTLX=SCRTTLX_" - CURRENT PP OMITTED"
 | 
|---|
| 128 |  S $E(SCRTTL,$S(OMIT:12,1:22))=""
 | 
|---|
| 129 |  S SCRTTL=SCRTTL_SCRTTLX
 | 
|---|
| 130 |  W !,SCRTTL
 | 
|---|
| 131 |  Q
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 | SCRN1 ; Loop through employees and display data
 | 
|---|
| 134 |  W:$E(IOST,1,2)="C-" @IOF
 | 
|---|
| 135 |  S TLI="",QUITX=0
 | 
|---|
| 136 |  F  S TLI=$O(^TMP($J,"PRSPEEM",TLI)) Q:'TLI  D  Q:QUITX
 | 
|---|
| 137 |  . S PRSIEN="",INDEX=1
 | 
|---|
| 138 |  . F  S PRSIEN=$O(^TMP($J,"PRSPEEM",TLI,PRSIEN)) Q:'PRSIEN  D  Q:QUITX
 | 
|---|
| 139 |  . . K ^TMP($J,"PRSPEEM EMP") ; Kill temporary employee array
 | 
|---|
| 140 |  . . S MIEN="",(EMPQT,LIST)=0
 | 
|---|
| 141 |  . . F  S MIEN=$O(^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN)) Q:'MIEN  D  Q:QUITX
 | 
|---|
| 142 |  . . . S PP="",DAYCNT=0
 | 
|---|
| 143 |  . . . F  S PP=$O(^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,PP)) Q:'PP  D  Q:QUITX
 | 
|---|
| 144 |  . . . . S DATA=^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,PP),LIST=LIST+1
 | 
|---|
| 145 |  . . . . S PPI=$P(DATA,U,1),PPE=$P(DATA,U,2)
 | 
|---|
| 146 |  . . . . S ITEM(LIST)=DATA
 | 
|---|
| 147 |  . . . . I DAYCNT=0 D  ; Display header prior to 1st PP in a memo
 | 
|---|
| 148 |  . . . . . S ARRAY="^TMP($J,""PRSPEEM EMP"","
 | 
|---|
| 149 |  . . . . . S SCRTTL="ESR EXCEPTIONS FOR ENTIRE MEMORANDA"
 | 
|---|
| 150 |  . . . . . D HDR^PRSPUT1(PRSIEN,SCRTTL,ARRAY,INDEX,PPI)
 | 
|---|
| 151 |  . . . . . D MEM^PRSPUT1(PRSIEN,MIEN,ARRAY)
 | 
|---|
| 152 |  . . . . . D AL^PRSPUT3(PRSIEN,ARRAY)
 | 
|---|
| 153 |  . . . . . S INDEX="",INDEX=$O(^TMP($J,"PRSPEEM EMP",INDEX),-1)
 | 
|---|
| 154 |  . . . . . S TEXT="",INDEX=INDEX+1
 | 
|---|
| 155 |  . . . . . D A1^PRSPUT1 ; Blank Line
 | 
|---|
| 156 |  . . . . . S TEXT=" #  Pay Period  Date          Status"
 | 
|---|
| 157 |  . . . . . D A1^PRSPUT1
 | 
|---|
| 158 |  . . . . . S TEXT="------------------------------------"
 | 
|---|
| 159 |  . . . . . D A1^PRSPUT1
 | 
|---|
| 160 |  . . . . I $P(DATA,U,3)="*" S TEXT="No exceptions found for entire memo" D A1^PRSPUT1 Q
 | 
|---|
| 161 |  . . . . S TEXT=$J(PP,2),$E(TEXT,5)="",TEXT=TEXT_PPE
 | 
|---|
| 162 |  . . . . F DAY=1:1:14 D  Q:QUITX
 | 
|---|
| 163 |  . . . . . Q:'$D(^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,PP,DAY))
 | 
|---|
| 164 |  . . . . . S DATA=^TMP($J,"PRSPEEM",TLI,PRSIEN,MIEN,PP,DAY)
 | 
|---|
| 165 |  . . . . . S $E(TEXT,17)="",TEXT=TEXT_$P(DATA,U,1) ; External Date
 | 
|---|
| 166 |  . . . . . S $E(TEXT,31)="",TEXT=TEXT_$P(DATA,U,2) ; External Status
 | 
|---|
| 167 |  . . . . . S DAYCNT=DAYCNT+1
 | 
|---|
| 168 |  . . . . . D A1^PRSPUT1
 | 
|---|
| 169 |  . . . . . I $Y>(IOSL-3) D PSE
 | 
|---|
| 170 |  . . . Q:QUITX
 | 
|---|
| 171 |  . . . S $E(TEXT,31,36)="------",INDEX=INDEX+1
 | 
|---|
| 172 |  . . . D A1^PRSPUT1
 | 
|---|
| 173 |  . . . S $E(TEXT,20)="",TEXT=TEXT_"Total Days: "_DAYCNT
 | 
|---|
| 174 |  . . . D A1^PRSPUT1
 | 
|---|
| 175 |  . . . I $P(DATA,U,3)="*" D
 | 
|---|
| 176 |  . . . .  S QUITX=$$ASK^PRSLIB00(1)
 | 
|---|
| 177 |  . . . E  D
 | 
|---|
| 178 |  . . . .  D ACTION
 | 
|---|
| 179 |  . . . I $E(IOST,1,2)="C-" W @IOF
 | 
|---|
| 180 |  Q
 | 
|---|
| 181 |  ;
 | 
|---|
| 182 | ACTION ; Prompt for action
 | 
|---|
| 183 |  S EMPQT=0
 | 
|---|
| 184 |  F  D  Q:QUITX!(EMPQT)
 | 
|---|
| 185 |  . S TEXT="(P)rint list, (S)elect Item or press Enter to "
 | 
|---|
| 186 |  . S TEXT=TEXT_"continue to next employee"
 | 
|---|
| 187 |  . W !!,TEXT
 | 
|---|
| 188 |  . W !!,"Enter Choice: "
 | 
|---|
| 189 |  . R CHOICE:DT
 | 
|---|
| 190 |  . S CHOICE=$$UPPER^PRSRUTL(CHOICE)
 | 
|---|
| 191 |  . I CHOICE="" S EMPQT=1 Q   ; Go to next employee
 | 
|---|
| 192 |  . I CHOICE="^" S QUITX=1 Q  ; Terminate report
 | 
|---|
| 193 |  . I CHOICE'="P"&(CHOICE'="S") D  Q
 | 
|---|
| 194 |  . . W !!,"Enter P, S or ^ to Quit or press Enter to continue to next employee."
 | 
|---|
| 195 |  . I CHOICE="P" D  Q:EMPQT
 | 
|---|
| 196 |  . . D DVC1
 | 
|---|
| 197 |  . . I POP S EMPQT=1
 | 
|---|
| 198 |  . I CHOICE="S" D
 | 
|---|
| 199 |  . . F  D  Q:EMPQT!(QUITX)
 | 
|---|
| 200 |  . . . I $E(IOST,1,2)="C-" W @IOF
 | 
|---|
| 201 |  . . . F I=1:1 Q:'$D(ITEM(I))  W !,I,?5,$P(ITEM(I),U,2)
 | 
|---|
| 202 |  . . . W !!,"Select a number between 1 and ",LIST_" : "
 | 
|---|
| 203 |  . . . R ITEM:DT
 | 
|---|
| 204 |  . . . S ITEM=$$UPPER^PRSRUTL(ITEM)
 | 
|---|
| 205 |  . . . I ITEM="" S EMPQT=1 Q   ; Go to next employee
 | 
|---|
| 206 |  . . . I ITEM="^" S QUITX=1 Q  ; Terminate report
 | 
|---|
| 207 |  . . . Q:'$D(ITEM(ITEM))
 | 
|---|
| 208 |  . . . S PPI=+ITEM(ITEM)
 | 
|---|
| 209 |  . . . D DVC2
 | 
|---|
| 210 |  ;
 | 
|---|
| 211 |  Q
 | 
|---|
| 212 |  ;
 | 
|---|
| 213 | LOOP1 ; Loop to display Summary Screen with list of outstanding ESRs
 | 
|---|
| 214 |  I '$D(^TMP($J,"PRSPEEM EMP")) W !,"No part-time physician ESR Exceptions found for selected criteria." Q
 | 
|---|
| 215 |  S INDX=""
 | 
|---|
| 216 |  F  S INDX=$O(^TMP($J,"PRSPEEM EMP",INDX)) Q:'INDX  D
 | 
|---|
| 217 |  . S TEXT=^TMP($J,"PRSPEEM EMP",INDX)
 | 
|---|
| 218 |  . W !,TEXT
 | 
|---|
| 219 |  Q
 | 
|---|
| 220 |  ;
 | 
|---|
| 221 | DVC1 ; Display Summary Screen with list of outstanding ESRs
 | 
|---|
| 222 |  W !
 | 
|---|
| 223 |  K IOP,%ZIS
 | 
|---|
| 224 |  S %ZIS("A")="Select Device: ",%ZIS="MQ"
 | 
|---|
| 225 |  D ^%ZIS K %ZIS,IOP
 | 
|---|
| 226 |  Q:POP
 | 
|---|
| 227 |  I $D(IO("Q")) D  Q
 | 
|---|
| 228 |  .  S ZTRTN="LOOP1^PRSPEEM"
 | 
|---|
| 229 |  .  S ZTSAVE("^TMP($J,""PRSPEEM EMP"",")=""
 | 
|---|
| 230 |  .  S ZTDESC="PRS PTP EXCEPTS"
 | 
|---|
| 231 |  .  D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued!",1:"Request Canceled!")
 | 
|---|
| 232 |  .  K ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
 | 
|---|
| 233 |  .  D HOME^%ZIS
 | 
|---|
| 234 |  U IO D LOOP1
 | 
|---|
| 235 |  D ^%ZISC K %ZIS,IOP
 | 
|---|
| 236 |  D H1 ; pause screen
 | 
|---|
| 237 |  Q
 | 
|---|
| 238 |  ;
 | 
|---|
| 239 | DVC2 ; Display PP ESR
 | 
|---|
| 240 |  W !
 | 
|---|
| 241 |  K IOP,%ZIS
 | 
|---|
| 242 |  S %ZIS("A")="Select Device: ",%ZIS="MQ"
 | 
|---|
| 243 |  D ^%ZIS K %ZIS,IOP
 | 
|---|
| 244 |  Q:POP
 | 
|---|
| 245 |  I $D(IO("Q")) D  Q
 | 
|---|
| 246 |  .  S ZTRTN="DIS^PRSPDESR"
 | 
|---|
| 247 |  .  S ZTSAVE("PRSIEN")="",ZTSAVE("PPI")="",ZTSAVE("PPE")=""
 | 
|---|
| 248 |  .  S ZTDESC="PRS PTP DISPLAY ESR"
 | 
|---|
| 249 |  .  D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued!",1:"Request Canceled!")
 | 
|---|
| 250 |  .  K ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
 | 
|---|
| 251 |  .  D HOME^%ZIS
 | 
|---|
| 252 |  .  N HOLD S HOLD=$$ASK^PRSLIB00(1)
 | 
|---|
| 253 |  U IO D DIS^PRSPDESR
 | 
|---|
| 254 |  D ^%ZISC K %ZIS,IOP
 | 
|---|
| 255 |  D H1 ; pause screen
 | 
|---|
| 256 |  Q
 | 
|---|
| 257 |  ;
 | 
|---|
| 258 |  ;====================================================================
 | 
|---|
| 259 |  ;
 | 
|---|
| 260 | PSE ; Pause for screen breaks
 | 
|---|
| 261 |  W !
 | 
|---|
| 262 |  S DIR(0)="E",DIR("A")="Press RETURN to continue"
 | 
|---|
| 263 |  D ^DIR
 | 
|---|
| 264 |  I X="^" S QUITX=1 Q
 | 
|---|
| 265 |  W @IOF
 | 
|---|
| 266 |  Q
 | 
|---|
| 267 |  ; 
 | 
|---|
| 268 | H1 I $E(IOST,1,2)="C-" R !!,"Press RETURN to Continue.",X:DTIME S:'$T!(X["^") QT=1
 | 
|---|
| 269 |  Q
 | 
|---|
| 270 | EX ; Clean up variables
 | 
|---|
| 271 |  K ARRAY,CHOICE,D,DASH,DATA,DATA0,DATA1,DAY,DAYCNT,DFN
 | 
|---|
| 272 |  K EMP,EMPQT,ESRSTAT,ESRSTATX,I,IDAYS,INDEX,INDX,ITEM,LIST,MIEN
 | 
|---|
| 273 |  K MULT,OMIT,POP,PP,PPE,PPI,PRSAPGM,PRSDT,PRSIEN,PRSTLV,PTPF
 | 
|---|
| 274 |  K QT,QUIT1,QUIT2,QUITX,SCRTTL,SCRTTLX,STATUS,TDAT,TEXT,TL,TLE,TLI,X,Y
 | 
|---|
| 275 |  Q
 | 
|---|