[613] | 1 | PRSPSAP ;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 | ; T&A supervisor of PTP employee is required to review and take
|
---|
| 6 | ; one of the following actions on each signed day of the PTP's ESR:
|
---|
| 7 | ; 1. approve, 2. request resubmission or 3. bypass.
|
---|
| 8 | ; When the T&A Supervisor approves a signed day we attempt to
|
---|
| 9 | ; update the PTP's timecard for that day. Updates to the
|
---|
| 10 | ; timecard will be screened based on the status of the timecard
|
---|
| 11 | ; and the effect of any potential update.
|
---|
| 12 | ;
|
---|
| 13 | ; MAIN entry point called from option Approve Signed ESRs.
|
---|
| 14 | ;
|
---|
| 15 | MAIN ;
|
---|
| 16 | K ^TMP($J,"PRSPSAP")
|
---|
| 17 | N PRSTLV,TLI,TLE,PRSIEN,ANYACT,AVAIL,OUT,DCNT,APRWHO
|
---|
| 18 | ; Make sure we have a signature code before continuing
|
---|
| 19 | I '$$ESIGC^PRSPUT2(1) W !! S OUT=$$ASK^PRSLIB00(1) Q
|
---|
| 20 | D HDROPT^PRSPSAP1
|
---|
| 21 | ; Prompt supervisor to pick one T&L unit for which they are assigned.
|
---|
| 22 | S PRSTLV=3
|
---|
| 23 | D ^PRSAUTL
|
---|
| 24 | Q:TLI<1
|
---|
| 25 | ;
|
---|
| 26 | ; Check if they only want to look at one employee
|
---|
| 27 | S APRWHO=$$ONEPTP^PRSPSAPU(TLE)
|
---|
| 28 | Q:APRWHO<0
|
---|
| 29 | ; ---------------------------------------------------
|
---|
| 30 | I APRWHO>0 D
|
---|
| 31 | . S NN=$P($G(^PRSPC(APRWHO,0)),U)
|
---|
| 32 | . D BLDLST(.OUT,TLE,NN)
|
---|
| 33 | E D
|
---|
| 34 | .; Loop thru supervisor's selected T&L
|
---|
| 35 | . S NN=""
|
---|
| 36 | . F S NN=$O(^PRSPC("ATL"_TLE,NN)) Q:NN=""!($G(OUT)>0) D
|
---|
| 37 | .. D BLDLST(.OUT,TLE,NN)
|
---|
| 38 | ;
|
---|
| 39 | ; display all the ASA records for action.
|
---|
| 40 | S OUT=0
|
---|
| 41 | D ASALIST^PRSPSAP1(.OUT)
|
---|
| 42 | ; check if there are any updates and then prompt for signature
|
---|
| 43 | ;
|
---|
| 44 | D ANYACT^PRSPSAP1(.ANYACT)
|
---|
| 45 | I ANYACT>0 D
|
---|
| 46 | . D SUMMARY(.ANYACT)
|
---|
| 47 | . D SIG^XUSESIG
|
---|
| 48 | .; update the timecard and ESR status for all actions when
|
---|
| 49 | .; a valid signature is applied
|
---|
| 50 | . I X1="" D
|
---|
| 51 | .. W @IOF,!!!,?10,"TIMECARD AND ESR WERE NOT UPDATED."
|
---|
| 52 | .E D
|
---|
| 53 | .. D TRANSACT^PRSPSAP2
|
---|
| 54 | ; remove any remaining PTP timecard locks held in this option
|
---|
| 55 | ; D EX^PRSASR
|
---|
| 56 | K ^TMP($J,"PRSPSAP")
|
---|
| 57 | Q
|
---|
| 58 | ;
|
---|
| 59 | BLDLST(OUT,TLE,NN) ; BUILD LIST OF ALL APPROVAL ACTIONS FOR SINGLE EMPLOYEE
|
---|
| 60 | N PRSIEN,PPE,PPI,AVAIL,DCNT,PRSD,GLOB,DFN
|
---|
| 61 | S PRSIEN=0
|
---|
| 62 | S PRSIEN=$O(^PRSPC("ATL"_TLE,NN,PRSIEN)) Q:PRSIEN<1!($G(OUT)>0) D
|
---|
| 63 | . S PPE=""
|
---|
| 64 | . F S PPE=$O(^PRST(458,"ASA",PRSIEN,PPE)) Q:PPE=""!($G(OUT)>0) D
|
---|
| 65 | .. S PPI=$O(^PRST(458,"B",PPE,0))
|
---|
| 66 | ..; get lock for PTP's entire PP, then add record (PUSH) that
|
---|
| 67 | ..; requires supervisor action to the list
|
---|
| 68 | .. S DFN=PRSIEN
|
---|
| 69 | ..;
|
---|
| 70 | ..; $$availrec() locks PTP ESR node.
|
---|
| 71 | ..; unlock if supervisor bybasses unlock otherwise they
|
---|
| 72 | ..; are not unlocked until they are processed thru temp global
|
---|
| 73 | ..; & their status' are updated.
|
---|
| 74 | .. S AVAIL=$$AVAILREC^PRSLIB00("",.GLOB,.OUT)
|
---|
| 75 | .. Q:'AVAIL
|
---|
| 76 | .. ;
|
---|
| 77 | ..; add item to list and set up a day cross ref with count of days
|
---|
| 78 | .. S (DCNT,PRSD)=0
|
---|
| 79 | .. F S PRSD=$O(^PRST(458,"ASA",PRSIEN,PPE,PRSD)) Q:PRSD'>0 D
|
---|
| 80 | ... S DCNT=DCNT+1
|
---|
| 81 | ... D PUSH^PRSPSAP1(PPI,PRSIEN,PRSD,DCNT)
|
---|
| 82 | ;
|
---|
| 83 | Q
|
---|
| 84 | ;
|
---|
| 85 | SUMMARY(AA) ;
|
---|
| 86 | W @IOF,!!!,"Supervisory Action Summary"
|
---|
| 87 | W !!,$J(AA,6)," actions require your electronic signature before being"
|
---|
| 88 | W !,?(6-$L(AA))," committed to the database."
|
---|
| 89 | I AA("A")>0 W !,$J(AA("A"),6)," ESR record marked for approval. (signature required)"
|
---|
| 90 | I AA("R")>0 W !,$J(AA("R"),6)," ESR records marked for resubmission. (signature required)"
|
---|
| 91 | I AA("B")>0 W !,$J(AA("B"),6)," ESR records explicitly bypassed."
|
---|
| 92 | I AA("N")>0 W !,$J(AA("N"),6)," ESR records with no action."
|
---|
| 93 | Q
|
---|
| 94 | GETACT(ESRDTS,PRSIEN,PPI) ; return user choice of # (1-ACTCNT) or action
|
---|
| 95 | ; return 0 for ^ at first action prompt
|
---|
| 96 | ; return null for no response (user hit return)
|
---|
| 97 | ; return -1 if ^ at 2nd prompt (action on single day prompt)
|
---|
| 98 | N DIR,DIRUT,ACT,CT,NUMS
|
---|
| 99 | ;
|
---|
| 100 | ; get total items + marked items CT CT(1)
|
---|
| 101 | D MARKCNT^PRSPSAP1(.CT,PRSIEN,PPI)
|
---|
| 102 | I CT>1 D
|
---|
| 103 | . S NUMS=";"
|
---|
| 104 | . F I=1:1:CT D
|
---|
| 105 | .. S NUMS=NUMS_I_":"_$P(ESRDTS(I),U,2)_";"
|
---|
| 106 | ;
|
---|
| 107 | ; status already marked on all days
|
---|
| 108 | I (CT>1)&(CT=CT(1)) D
|
---|
| 109 | . S DIR(0)="SAO^"_NUMS
|
---|
| 110 | . S DIR("A")="Select an item #: "
|
---|
| 111 | . S DIR("?",1)="Enter an item from the left column to change status for that day"
|
---|
| 112 | E D
|
---|
| 113 | .; if all days don't have a superV action (marked) then prompt for
|
---|
| 114 | .; action on remaining days or pick a day (item)
|
---|
| 115 | . I CT>1 D
|
---|
| 116 | .. S DIR(0)="SAO^A:Approve;B:Bypass;R:Resubmit"_NUMS
|
---|
| 117 | .. S DIR("A")="(A)pprove, (B)ypass, (R)esubmit or enter an item #: "
|
---|
| 118 | .. S DIR("?",1)="Enter an action for all records without a status or enter an item #"
|
---|
| 119 | .. S DIR("?",2)="to then pick an action for that day."
|
---|
| 120 | .. S DIR("?",3)=" Type R for Resubmit when the part-time physician needs to correct an ESR day."
|
---|
| 121 | .. S DIR("?",4)=" Type B for Bypass to skip the day(s) for now and approve at a later time."
|
---|
| 122 | .. S DIR("?",5)=" Type A for Approve when the ESR day(s) appears correct."
|
---|
| 123 | .E D
|
---|
| 124 | ..; if only one item to pick, don't ask for item #
|
---|
| 125 | .. S DIR(0)="SAO^A:Approve;B:Bypass;R:Resubmit"
|
---|
| 126 | .. S DIR("A")="(A)pprove, (B)ypass, (R)esubmit: "
|
---|
| 127 | .. S DIR("?",1)="Enter an action for all records without a status"
|
---|
| 128 | .. S DIR("?",2)=" Type R for Resubmit when the part-time physician needs to correct an ESR day."
|
---|
| 129 | .. S DIR("?",3)=" Type B for Bypass to skip the day(s) for now and approve at a later time."
|
---|
| 130 | .. S DIR("?",4)=" Type A for Approve when the ESR day(s) appears correct."
|
---|
| 131 | ;
|
---|
| 132 | S DIR("?")=" Press [enter] to move to the next part time physician."
|
---|
| 133 | D ^DIR
|
---|
| 134 | S PICK=$G(Y)
|
---|
| 135 | I $G(Y)="" Q ""
|
---|
| 136 | ; if there was only one item then set pick to 1 plus action
|
---|
| 137 | I CT=1 S PICK=PICK_"^1"
|
---|
| 138 | I $G(DIRUT) S PICK=0
|
---|
| 139 | ;
|
---|
| 140 | ; item was picked
|
---|
| 141 | I PICK>0,(PICK<(CT+1)) D
|
---|
| 142 | . N DAYLNS,DIR,DIRUT,ESR,HPL
|
---|
| 143 | . D GETESR^PRSPSAP1(.ESR,PPI,PRSIEN,+ESRDTS(PICK))
|
---|
| 144 | . N COUNT S COUNT=PICK,COUNT(1)=0
|
---|
| 145 | . W ! D DAY^PRSPSAPU(.DAYLNS,ESRDTS(COUNT),.ESR,PRSIEN,PPI)
|
---|
| 146 | . S ACT=PICK
|
---|
| 147 | . S DIR(0)="SA^A:Approve;B:Bypass;R:Resubmit"
|
---|
| 148 | . S DIR("A")="(A)pprove, (B)ypass, (R)esubmit: "
|
---|
| 149 | . S DIR("?")="Select an action for the ESR day above."
|
---|
| 150 | . S DIR("?",1)=" Type R for Resubmit when the part-time physician needs to correct an ESR day."
|
---|
| 151 | . S DIR("?",2)=" Type B for Bypass to skip the day(s) for now and approve at a later time."
|
---|
| 152 | . S DIR("?",3)=" Type A for Approve when the ESR day(s) appears correct."
|
---|
| 153 | . S DIR("?",4)=" Type ^ to redisplay the current part time physician."
|
---|
| 154 | . D GETDAY^PRSPSAPU(.DAYLNS,.ESRDTS,.ESR,PICK,PRSIEN,PPI)
|
---|
| 155 | . S HPL=0
|
---|
| 156 | . F S HPL=$O(DAYLNS(HPL)) Q:HPL'>0 D
|
---|
| 157 | .. S DIR("?",HPL+4)=$G(DAYLNS(HPL))
|
---|
| 158 | . D ^DIR
|
---|
| 159 | . S PICK=$G(Y)_"^"_ACT
|
---|
| 160 | . I $G(DIRUT) S PICK=-1
|
---|
| 161 | Q PICK
|
---|
| 162 | ;
|
---|