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
|
---|