| 1 | PRSEEMP3 ;WIRMFO/JAH-STUDENT TRAINING REPORT BY SERVICE ;7/2/97 | 
|---|
| 2 | ;;4.0;PAID;**25**;Sep 21, 1995 | 
|---|
| 3 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|---|
| 4 | EN1 ; | 
|---|
| 5 | N PRSE132,CCORG,PRSERV,ZZ,SERVIEN,CLOCK,HWIDE,X,DATSEL,POUT | 
|---|
| 6 | N CEU,PRESEL,SERCNT,EMPCNT,CCOCNT,YRST,YREND,REPDT | 
|---|
| 7 | ;set spin clock counter | 
|---|
| 8 | S CLOCK=1 | 
|---|
| 9 | ; | 
|---|
| 10 | ;If user has PRSE CORD key/programmer continue | 
|---|
| 11 | I '(+$$EN4^PRSEUTL3($G(DUZ))!(DUZ(0)["@")) D MSG22^PRSEMSG S ZZ=$$ASK^PRSLIB00(1) Q | 
|---|
| 12 | ; | 
|---|
| 13 | ;Check 2 make sure Educ. Track. is Online | 
|---|
| 14 | S X=$G(^PRSE(452.7,1,"OFF")) | 
|---|
| 15 | I X=""!(X=1) D MSG6^PRSEMSG S ZZ=$$ASK^PRSLIB00(1) Q | 
|---|
| 16 | ; | 
|---|
| 17 | S (POUT,NPC,NSW1)=0,HOLD=1 | 
|---|
| 18 | ; | 
|---|
| 19 | ;Ask date range/fiscal/calender year.  YRST, YREND returned as range. | 
|---|
| 20 | W ! S DATSEL="N+" | 
|---|
| 21 | D DATSEL^PRSEUTL G:$G(POUT) EXIT^PRSEEMP4 | 
|---|
| 22 | ; | 
|---|
| 23 | ;Ask type of training 2 search. Code 4 search returned in PRSESEL. | 
|---|
| 24 | ;M:Mandatory  C:Continuing Educ  O:Other  W:Ward/Unit-Locat | 
|---|
| 25 | ;A:All      ;L:All without Mandatory | 
|---|
| 26 | D INS2^PRSEUTL G EXIT^PRSEEMP4:$G(POUT) | 
|---|
| 27 | ; | 
|---|
| 28 | ;set flag when selection contains CEU type classes. | 
|---|
| 29 | S CEU=0 | 
|---|
| 30 | I PRSESEL="C"!(PRSESEL="A")!(PRSESEL="L")!(PRSESEL="H") S CEU=1 | 
|---|
| 31 | ; | 
|---|
| 32 | ; find hospital wide classes 2 screen out of report | 
|---|
| 33 | I PRSESEL="H" D HWLIST^PRSEEMP4,HASHLIST^PRSEEMP4 | 
|---|
| 34 | ; | 
|---|
| 35 | ;call 2 select 1,many,all services. | 
|---|
| 36 | N DIC,Y | 
|---|
| 37 | S DIC="^PRSP(454.1," | 
|---|
| 38 | S VAUTSTR="Service" | 
|---|
| 39 | S VAUTNI=2,VAUTVB="PRSERV" | 
|---|
| 40 | D FIRST^VAUTOMA | 
|---|
| 41 | ; | 
|---|
| 42 | ;quit if user ^ at service prompt | 
|---|
| 43 | Q:Y<0 | 
|---|
| 44 | ; | 
|---|
| 45 | W ! S ZTRTN="START^PRSEEMP3",ZTDESC="TRAINING REPORT BY SERVICE" D L,DEV^PRSEUTL G:POP!($D(ZTSK)) EXIT^PRSEEMP4 | 
|---|
| 46 | START ; | 
|---|
| 47 | U IO | 
|---|
| 48 | ;initialize temp global and set unknown entry in job table. | 
|---|
| 49 | K ^TMP($J),^TMP("JOBS",$J) | 
|---|
| 50 | S ^TMP("JOBS",$J,0)="unknown" | 
|---|
| 51 | ; | 
|---|
| 52 | I $E(IOST,1,2)="C-" D | 
|---|
| 53 | . D MSSG^PRSLIB00(.MSG) | 
|---|
| 54 | . D MONOGRPH^PRSLIB00(MSG) | 
|---|
| 55 | S (PHRS,PHRS("CEU"),PHRS("CON"),PCOUNT)=0,PRSE132=$S(IOM'<132:132,1:0) | 
|---|
| 56 | ; | 
|---|
| 57 | ;If user selects all services then fill up PRSERV array | 
|---|
| 58 | I PRSERV=1 D ALLSERV(.PRSERV) | 
|---|
| 59 | ; | 
|---|
| 60 | ;Drive thru services user has selected. They may select 1,many,all | 
|---|
| 61 | ;or abort. If user selects 1 or 1+, PRSERV(ien)=selection(s), | 
|---|
| 62 | ;PRSERV=0.  If user selects ALL, PRSERV=1 | 
|---|
| 63 | N SERVICE,SERVIEN,EMPIEN,EMPNAME,CCIEN,CCORG | 
|---|
| 64 | S (SERVIEN,POUT,SRVCNT)=0 | 
|---|
| 65 | F  S SERVIEN=$O(PRSERV(SERVIEN))  Q:SERVIEN=""!(POUT)  D | 
|---|
| 66 | . S SRVCNT=SRVCNT+1 | 
|---|
| 67 | . S SERVICE=PRSERV(SERVIEN) | 
|---|
| 68 | .; | 
|---|
| 69 | .;There r many Cost Ctrs 4 each service.  Use cost ctrs | 
|---|
| 70 | .;2 find all employees in service. | 
|---|
| 71 | . S CCIEN=0 | 
|---|
| 72 | . F  S CCIEN=$O(^PRSP(454,1,"ORG","C",SERVIEN,CCIEN))  Q:CCIEN=""!(POUT)  D | 
|---|
| 73 | ..  S CCORG=$P(^PRSP(454,1,"ORG",CCIEN,0),"^",1) | 
|---|
| 74 | ..  S CCORG=$P(CCORG,":",1)_$P(CCORG,":",2) | 
|---|
| 75 | ..; | 
|---|
| 76 | ..; Get employees w/in cost ctr | 
|---|
| 77 | ..  S EMPIEN=0 | 
|---|
| 78 | ..  F  S EMPIEN=$O(^PRSPC("ACC",CCORG,EMPIEN))  Q:EMPIEN=""!(POUT)  D | 
|---|
| 79 | ...   S EMPNAME=$P($G(^PRSPC(EMPIEN,0)),"^",1) | 
|---|
| 80 | ...   S EMPOINT=$G(^PRSPC(EMPIEN,200)) | 
|---|
| 81 | ...   I EMPOINT'="" D SORT^PRSEEMP4(EMPOINT) | 
|---|
| 82 | ; | 
|---|
| 83 | S (SERCNT,EMPCNT,CCOCNT)=0 | 
|---|
| 84 | ;get date for report | 
|---|
| 85 | S X="T" D ^%DT S REPDT=+Y | 
|---|
| 86 | ;Drive thru services & cost ctr/orgs 2 print output 4 employees | 
|---|
| 87 | S SERVIEN=0 | 
|---|
| 88 | F  S SERVIEN=$O(^TMP($J,SERVIEN))  Q:SERVIEN'>0!(POUT)  D | 
|---|
| 89 | . S SERVICE=PRSERV(SERVIEN) | 
|---|
| 90 | . S SERCNT=SERCNT+1 | 
|---|
| 91 | .;Initialize cost ctr global & counters | 
|---|
| 92 | . D INITCC(.CCORG) | 
|---|
| 93 | . F  S CCORG=$O(^TMP($J,SERVIEN,CCORG))  Q:CCORG=""!(POUT)  D | 
|---|
| 94 | ..  S CCOCNT=CCOCNT+1 | 
|---|
| 95 | ..  S EMPIEN="" | 
|---|
| 96 | ..  F  S EMPIEN=$O(^TMP($J,SERVIEN,CCORG,EMPIEN))  Q:EMPIEN=""!(POUT)  D | 
|---|
| 97 | ...   D INITEMP^PRSEEMP3 ;initialize course counters 4 employee | 
|---|
| 98 | ...   S EMPCNT=EMPCNT+1 | 
|---|
| 99 | ...   S EMPNODE=^TMP($J,SERVIEN,CCORG,EMPIEN,0) | 
|---|
| 100 | ...   S DATA=$P(EMPNODE,"^",1) | 
|---|
| 101 | ...   S JOBCODE=$P(EMPNODE,"^",2) | 
|---|
| 102 | ...   S EMPNAME=$P(EMPNODE,"^",3) | 
|---|
| 103 | ...   D OUTPUT^PRSEEMP4(EMPIEN,.POUT,JOBCODE,EMPNAME) | 
|---|
| 104 | I POUT S ^TMP("EORM",$J,2)="- Incomplete report.  User aborted." | 
|---|
| 105 | D STATS,MSSGS | 
|---|
| 106 | D EXIT^PRSEEMP4 | 
|---|
| 107 | Q | 
|---|
| 108 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|---|
| 109 | STATS ; | 
|---|
| 110 | N HDR,UND,TAB1,PTAB | 
|---|
| 111 | S HDR="END OF TRAINING REPORT BY SERVICE" | 
|---|
| 112 | S UND="=================================" | 
|---|
| 113 | S PTAB=(IOM-9) | 
|---|
| 114 | S TAB1=($G(IOM)/2-($L(HDR)/2)) ;center hdr on page | 
|---|
| 115 | W @IOF,?PTAB,"PAGE ",NPC+1 | 
|---|
| 116 | W !,?TAB1,HDR,!,?TAB1,UND | 
|---|
| 117 | W !,"Employees counted:     ",EMPCNT | 
|---|
| 118 | W !,"Services counted:      ",SERCNT | 
|---|
| 119 | W !,"Cost Centers counted:  ",CCOCNT | 
|---|
| 120 | Q | 
|---|
| 121 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|---|
| 122 | MSSGS ;Write any messages that we've created during processing. | 
|---|
| 123 | N EOR | 
|---|
| 124 | W !,"----------------",! | 
|---|
| 125 | ; | 
|---|
| 126 | S EOR="" F  S EOR=$O(^TMP("EORM",$J,EOR))  Q:EOR=""  D | 
|---|
| 127 | .W !,^TMP("EORM",$J,EOR) | 
|---|
| 128 | W ! | 
|---|
| 129 | Q | 
|---|
| 130 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|---|
| 131 | ALLSERV(PRSERV) ; Put all services in PAID COST CTR/ORGANIZATION file | 
|---|
| 132 | ;in2 PRSERV() array, subscripted by IEN = "service name". | 
|---|
| 133 | S SERVICE="" | 
|---|
| 134 | F  S SERVICE=$O(^PRSP(454.1,"B",SERVICE))  Q:SERVICE=""  D | 
|---|
| 135 | .S SERVIEN=0,SERVIEN=$O(^PRSP(454.1,"B",SERVICE,SERVIEN)) | 
|---|
| 136 | .I SERVIEN'="",$G(^PRSP(454.1,SERVIEN,0))'="" S PRSERV(SERVIEN)=SERVICE | 
|---|
| 137 | Q | 
|---|
| 138 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|---|
| 139 | INITCC(CCORG) ;INITIALIZE COST CTR STUFF | 
|---|
| 140 | K ^TMP($J,"CC") | 
|---|
| 141 | S CCORG="" | 
|---|
| 142 | Q | 
|---|
| 143 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|---|
| 144 | INITEMP ;initialize all counters 4 an employee | 
|---|
| 145 | S (PCOUNT,PHRS,PHRS("CEU"),PHRS("CON"))=0 | 
|---|
| 146 | Q | 
|---|
| 147 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|---|
| 148 | L F X="PHRS*","PCOUNT","PYR","PRDA","YRST","YREND","HOLD","PRSECLS","PRSESEL","POUT","NPC","NSW1","TYP","PRSERV*","PRSERV(","CEU" S ZTSAVE(X)="" | 
|---|
| 149 | Q | 
|---|
| 150 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|---|