| 1 | PRSPSAP1 ;WOIFO/JAH - part time physician, supervisory approvals ;10/22/04
 | 
|---|
| 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 | HDRESR(PRSIEN,PPI,LINES) ; Display a Supervisor Header
 | 
|---|
| 6 |  ; PRSIEN - users 450 number
 | 
|---|
| 7 |  ; PPI - what pay period
 | 
|---|
| 8 |  N CO,NM,SSN,TL,PPE,PPTXT,INCD
 | 
|---|
| 9 |  Q:(PRSIEN'>0)
 | 
|---|
| 10 |  S C0=^PRSPC(PRSIEN,0)
 | 
|---|
| 11 |  S NM=$P(C0,U,1)
 | 
|---|
| 12 |  S SSN=$P(C0,U,9),SSN="XXX-XX-"_$E(SSN,6,9)
 | 
|---|
| 13 |  S TL=$P(C0,"^",8),TL="T&L: "_TL
 | 
|---|
| 14 |  I $G(PPI)>0 S PPE=$P($G(^PRST(458,PPI,0)),U)
 | 
|---|
| 15 |  I $G(PPE)="" S PPE="?????"
 | 
|---|
| 16 |  S PPTXT="Pay Per: "_PPE
 | 
|---|
| 17 |  S INCD=$$INCESRS^PRSPESR3(PRSIEN,PPI)
 | 
|---|
| 18 |  S INCD="Incomplete Days: "_INCD
 | 
|---|
| 19 |  W @IOF,"                           VA TIME & ATTENDANCE SYSTEM"
 | 
|---|
| 20 |  W !,PPTXT,?20,"Supervisory Review for Part Time Physicians in "_TL
 | 
|---|
| 21 |  W !,$E(NM,1,30),?32,SSN,?56,INCD
 | 
|---|
| 22 |  W ! D COLHDRS
 | 
|---|
| 23 |  W ! F I=1:1:(IOM-1) W "-"
 | 
|---|
| 24 |  S LINES=7
 | 
|---|
| 25 |  Q
 | 
|---|
| 26 | COLHDRS ; JUST THE COLUMN HEADERS
 | 
|---|
| 27 |  W !,"Item",?8,"Date",?17,"Scheduled Tour",?36,"Work/Leave Posted"
 | 
|---|
| 28 |  W ?61,"Hours",?67,"Meal",?73,"Status"
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 | PUSH(PPI,PRSIEN,PRSD,CNT) ; ADD record to approval list
 | 
|---|
| 31 |  ; set up a xref on the day.  This enables quick access to the
 | 
|---|
| 32 |  ; day number when the pick list has 4 items spread over the
 | 
|---|
| 33 |  ; pay period.  (e.g. the first item is day 4, the 2nd item
 | 
|---|
| 34 |  ; is day 12, etc.)
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  N NM
 | 
|---|
| 37 |  ; Set up name x-ref for alphabetical review
 | 
|---|
| 38 |  S NM=$P($G(^PRSPC(PRSIEN,0)),U)
 | 
|---|
| 39 |  S ^TMP($J,"PRSPSAP",PRSIEN,PPI,PRSD,0)=""
 | 
|---|
| 40 |  S ^TMP($J,"PRSPSAP","B",NM,PRSIEN)=""
 | 
|---|
| 41 |  S ^TMP($J,"PRSPSAP",PRSIEN,PPI,"B",CNT)=PRSD
 | 
|---|
| 42 |  Q
 | 
|---|
| 43 | GETESR(ESR,PPI,PRSIEN,PRSD) ; GET ESR RELATED DATA
 | 
|---|
| 44 |  ; RETURN DATA IN ESR ARRAY BY REFERENCE
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  N PRSN1,TOD,LSGN,METHOD,PRSN4
 | 
|---|
| 47 |  S PRSN1=$G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,1)) ; tour segmts node
 | 
|---|
| 48 |  S PRSN4=$G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,4)) ; 2ND tour segmts node
 | 
|---|
| 49 |  S TOD=$P($G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,0)),U,2)
 | 
|---|
| 50 |  S ESR("TOD")=TOD
 | 
|---|
| 51 |  S ESR("TODEXT")=$$GETTOUR^PRSPESR3(PRSIEN,PRSD,TOD,PRSN1,PRSN4)
 | 
|---|
| 52 |  S ESR("TOD2")=$P($G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,0)),U,13)
 | 
|---|
| 53 |  S ESR("WORK")=$G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,5))
 | 
|---|
| 54 |  I $P(ESR("WORK"),U)="" D
 | 
|---|
| 55 |  .; get ESR DAY LAST SIGN METHOD
 | 
|---|
| 56 |  . S LSGN=$P($G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,7)),U,3)
 | 
|---|
| 57 |  . I LSGN'>0 S LSGN=1
 | 
|---|
| 58 |  . S METHOD=$$EXTERNAL^DILFD(458.02,149,"",LSGN,)
 | 
|---|
| 59 |  . S ESR("WORK")="No work:signed-"_METHOD
 | 
|---|
| 60 |  S ESR("RMK")=$P($G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,6)),U)
 | 
|---|
| 61 |  S ESR("ML")=$P($G(^PRST(457.1,TOD,0)),U,3)
 | 
|---|
| 62 |  ; esr status must be SIGNED initially to appear in this option
 | 
|---|
| 63 |  S ESR("STAT")=$P($G(^PRST(458,PPI,"E",PRSIEN,"D",PRSD,7)),"^",1)
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | ASALIST(OUT) ; ADD record to approval list
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  N PRSIEN,PPI,PRSD,MOVEON,OUT,ACT,ESRDTS,NM
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  ; MOVEON : flag to indicate superV is done with this PTP's pp ESR.
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  S OUT=0
 | 
|---|
| 73 |  S (ACT,NM)=""
 | 
|---|
| 74 |  F  S NM=$O(^TMP($J,"PRSPSAP","B",NM)) Q:NM=""!OUT  D
 | 
|---|
| 75 |  .  S PRSIEN=$O(^TMP($J,"PRSPSAP","B",NM,0))
 | 
|---|
| 76 |  .  I PRSIEN'>0 S OUT=1 Q
 | 
|---|
| 77 |  .  S PPI=0
 | 
|---|
| 78 |  .  F  S PPI=$O(^TMP($J,"PRSPSAP",PRSIEN,PPI)) Q:PPI'>0!OUT  D
 | 
|---|
| 79 |  ..;
 | 
|---|
| 80 |  ..;  REWORK THIS EMPLOYEE UNTIL WE'RE DONE
 | 
|---|
| 81 |  ..;
 | 
|---|
| 82 |  ..    S MOVEON=0
 | 
|---|
| 83 |  ..    F  D  Q:MOVEON
 | 
|---|
| 84 |  ...     D DISPLAY^PRSPSAPU(PRSIEN,PPI)
 | 
|---|
| 85 |  ...     D ESRDTS^PRSPSAPU(.ESRDTS,PRSIEN,PPI)
 | 
|---|
| 86 |  ...     S ACT=$$GETACT^PRSPSAP(.ESRDTS,PRSIEN,PPI)
 | 
|---|
| 87 |  ...; if user hit return and all days are marked w/status then moveon
 | 
|---|
| 88 |  ...     I ACT="" S MOVEON=$$MOVEON(PRSIEN,PPI) Q
 | 
|---|
| 89 |  ...;   did user type a caret to abort?
 | 
|---|
| 90 |  ...     I ACT=0 S (OUT,MOVEON)=1 Q
 | 
|---|
| 91 |  ...;   either mark a single day or mark remaining unmarked
 | 
|---|
| 92 |  ...;   days depending on ACT
 | 
|---|
| 93 |  ... ; ^ at second prompt should redisplay esr period
 | 
|---|
| 94 |  ...     Q:ACT<0
 | 
|---|
| 95 |  ...;    mark the action on the day
 | 
|---|
| 96 |  ...     D MARK^PRSPSAP3(ACT,PRSIEN,PPI)
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 | HDROPT ; MAIN OPTION HEADING
 | 
|---|
| 99 |  W:$E(IOST,1,2)="C-" @IOF
 | 
|---|
| 100 |  N TAB,TITLE
 | 
|---|
| 101 |  S TITLE="SUPERVISOR'S APPROVAL FOR PT PHYSICIAN'S ELECTRONIC SUBSIDIARY RECORDS"
 | 
|---|
| 102 |  S TAB=IOM-$L(TITLE)/2
 | 
|---|
| 103 |  W !?26,"VA TIME & ATTENDANCE SYSTEM",!?TAB,TITLE
 | 
|---|
| 104 |  Q
 | 
|---|
| 105 | ANYACT(ACTCNT) ; RETURN NUMBER OF ESR DAILY ACTIONS TO UPDATE
 | 
|---|
| 106 |  ;  THIS IS A COUNT OF ALL THE RESUBMITS AND APPROVES
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 |  N PRSIEN,PPI,PRSD,ACT
 | 
|---|
| 109 |  S (ACTCNT,ACTCNT("R"),ACTCNT("A"),ACTCNT("B"),ACTCNT("N"))=0
 | 
|---|
| 110 |  S PRSIEN=0
 | 
|---|
| 111 |  F  S PRSIEN=$O(^TMP($J,"PRSPSAP",PRSIEN)) Q:PRSIEN'>0  D
 | 
|---|
| 112 |  .  S PPI=0
 | 
|---|
| 113 |  .  F  S PPI=$O(^TMP($J,"PRSPSAP",PRSIEN,PPI)) Q:PPI'>0  D
 | 
|---|
| 114 |  ..   S PRSD=0
 | 
|---|
| 115 |  ..  F  S PRSD=$O(^TMP($J,"PRSPSAP",PRSIEN,PPI,PRSD)) Q:PRSD'>0  D
 | 
|---|
| 116 |  ...   S ACT=$G(^TMP($J,"PRSPSAP",PRSIEN,PPI,PRSD,1))
 | 
|---|
| 117 |  ...   I ACT="A" S ACTCNT=ACTCNT+1,ACTCNT("A")=ACTCNT("A")+1 Q
 | 
|---|
| 118 |  ...   I ACT="R" S ACTCNT=ACTCNT+1,ACTCNT("R")=ACTCNT("R")+1 Q
 | 
|---|
| 119 |  ...   I ACT="B" S ACTCNT("B")=ACTCNT("B")+1 Q
 | 
|---|
| 120 |  ...   S ACTCNT("N")=ACTCNT("N")+1
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 | MARKCNT(MC,PRSIEN,PPI) ; return items marked AND total items in MC array
 | 
|---|
| 123 |  ;  MC = items marked with any status
 | 
|---|
| 124 |  ;  MC(1) = available items to mark count
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 |  N ACT,PRSD
 | 
|---|
| 127 |  S (MC,MC(1))=0
 | 
|---|
| 128 |  Q:(PRSIEN'>0)!(PPI'>0)
 | 
|---|
| 129 |  S PRSD=0
 | 
|---|
| 130 |  F  S PRSD=$O(^TMP($J,"PRSPSAP",PRSIEN,PPI,PRSD)) Q:PRSD'>0  D
 | 
|---|
| 131 |  .   S ACT=$G(^TMP($J,"PRSPSAP",PRSIEN,PPI,PRSD,1))
 | 
|---|
| 132 |  . ; increment the counter for days marked by the supervisor already
 | 
|---|
| 133 |  .   I "^A^B^R^"[(U_ACT_U) S MC(1)=MC(1)+1
 | 
|---|
| 134 |  .   S MC=MC+1
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 | MOVEON(PRSIEN,PPI) ; return users choice (MOVE ON OR REDISPLAY CURR PTP)
 | 
|---|
| 138 |  ; return 0 for abort
 | 
|---|
| 139 |  ; if the number of days available for approval matches the number
 | 
|---|
| 140 |  ; of days that have some status marked then we will not ask the
 | 
|---|
| 141 |  ; user whether they want to move on or not.
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  N CT,MOVEON
 | 
|---|
| 144 |  S MOVEON=1
 | 
|---|
| 145 |  D MARKCNT^PRSPSAP1(.CT,PRSIEN,PPI)
 | 
|---|
| 146 |  Q:$G(CT)=$G(CT(1)) MOVEON
 | 
|---|
| 147 |  N DIR,DIRUT
 | 
|---|
| 148 |  S MOVEON=0
 | 
|---|
| 149 |  S DIR(0)="Y"
 | 
|---|
| 150 |  S DIR("?")="Enter NO to continue editing this part-time physician."
 | 
|---|
| 151 |  S DIR("?",1)="Not all days are marked with a status.  Answer YES to"
 | 
|---|
| 152 |  S DIR("?",2)="ignore these days and move past this part-time physician."
 | 
|---|
| 153 |  S DIR("A")="Are you done with this employee"
 | 
|---|
| 154 |  D ^DIR
 | 
|---|
| 155 |  S MOVEON=$G(Y)
 | 
|---|
| 156 |  I $G(DIRUT) S MOVEON=1
 | 
|---|
| 157 |  Q MOVEON
 | 
|---|