| [613] | 1 | QACEMPE ;WCIOFO/VAD-Report By Employee ;02/10/1999 | 
|---|
|  | 2 | ;;2.0;Patient Representative;**9**;07/25/1995 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | MAIN ; | 
|---|
|  | 5 | D INIT | 
|---|
|  | 6 | D DATDIV^QACUTL0 G:QAQPOP EXIT | 
|---|
|  | 7 | I +$G(QAC1DIV) D INST^QACUTL0(QAC1DIV,.QACDVNAM)  ; If reporting for one division get the division name to be reported. | 
|---|
|  | 8 | ; | 
|---|
|  | 9 | D GTEMP G:QAQPOP EXIT | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | K %ZIS,IOP S %ZIS="MQ" W ! D ^%ZIS I POP D EXIT Q | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | I $D(IO("Q")) D  Q | 
|---|
|  | 14 | . S ZTDESC=QACDESC | 
|---|
|  | 15 | . S ZTRTN="PROCESS^QACEMPE" | 
|---|
|  | 16 | . S ZTSAVE("QACALL")="",ZTSAVE("QACDESC")="" | 
|---|
|  | 17 | . S ZTSAVE("QAC1DIV")="",ZTSAVE("QACDVNAM")="" | 
|---|
|  | 18 | . S ZTSAVE("QACESEL")="",ZTSAVE("QACINFO")="",ZTSAVE("QACRTN")="" | 
|---|
|  | 19 | . S ZTSAVE("QAQRANG")="" | 
|---|
|  | 20 | . D TASK^QACUTL0 | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | D PROCESS | 
|---|
|  | 23 | Q | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | INIT ; | 
|---|
|  | 26 | S (QACINFO,QAQPOP)=0,QACDVNAM="" | 
|---|
|  | 27 | S QACRTN="QACEMPE" | 
|---|
|  | 28 | S QACDESC="Report by Employee" | 
|---|
|  | 29 | Q | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | GTEMP ; Get the Employee Selection. | 
|---|
|  | 32 | S QACESEL="",QACALL=0 | 
|---|
|  | 33 | W !!,"Enter an Employee Name or <CR> for ALL: " R QACESEL:DTIME | 
|---|
|  | 34 | I QACESEL="^" S QAQPOP=1 Q | 
|---|
|  | 35 | I QACESEL="" S QACALL=1 Q | 
|---|
|  | 36 | I QACESEL'?.AP W !,$C(7),"INVALID NAME...RE-ENTER NAME!" G GTEMP | 
|---|
|  | 37 | S QACESEL=$$TRANS(QACESEL) | 
|---|
|  | 38 | ; | 
|---|
|  | 39 | ; Select one Employee. | 
|---|
|  | 40 | S QACFIL=200,QACFLDS=.01,QACFLGS="O",QACDATA="^TMP(QACRTN,$J,""DATA"")",QACERR="^TMP(QACRTN,$J,""ERR"")" | 
|---|
|  | 41 | D FIND^DIC(QACFIL,,.QACFLDS,QACFLGS,QACESEL,,,,,QACDATA,QACERR) | 
|---|
|  | 42 | S QACFOUND=+$G(^TMP(QACRTN,$J,"DATA","DILIST",0)) | 
|---|
|  | 43 | I 'QACFOUND D  G GTEMP | 
|---|
|  | 44 | . W !!,$C(7),"EMPLOYEE SELECTION NOT FOUND...<CR> to Continue" R R:DTIME | 
|---|
|  | 45 | ; | 
|---|
|  | 46 | S QACOK=0 | 
|---|
|  | 47 | I QACFOUND=1 D GTEMP1 Q:QACOK  G GTEMP | 
|---|
|  | 48 | D GTEMP2 Q:QACOK  G GTEMP | 
|---|
|  | 49 | Q | 
|---|
|  | 50 | ; | 
|---|
|  | 51 | GTEMP1 ; | 
|---|
|  | 52 | S QACREC=^TMP(QACRTN,$J,"DATA","DILIST",1,1) | 
|---|
|  | 53 | W !!?5,QACREC | 
|---|
|  | 54 | W !!?5,"Is the above Employee the correct one? <Y> " R R:DTIME | 
|---|
|  | 55 | S R=$$TRANS(R) | 
|---|
|  | 56 | I R="" S R="Y" | 
|---|
|  | 57 | I R="Y" S QACESEL=QACREC,QACOK=1 Q | 
|---|
|  | 58 | I R'="N" D  G GTEMP1 | 
|---|
|  | 59 | . W !!,"PLEASE ENTER 'Y' or 'N'...<CR> to Continue" R R:DTIME | 
|---|
|  | 60 | Q | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | GTEMP2 ; | 
|---|
|  | 63 | F I=1:1:QACFOUND D | 
|---|
|  | 64 | . S QACREC=^TMP(QACRTN,$J,"DATA","DILIST",1,I) | 
|---|
|  | 65 | . W !?5,I,".)  ",QACREC | 
|---|
|  | 66 | ; | 
|---|
|  | 67 | W !!?5,"Select one of the above: " R QACNUM:DTIME | 
|---|
|  | 68 | I '$L(QACNUM) Q | 
|---|
|  | 69 | I QACNUM>QACFOUND D  G GTEMP2 | 
|---|
|  | 70 | . W !!,"MUST SELECT A NUMBER FROM 1-",QACFOUND,"...<CR> to Continue" R R:DTIME | 
|---|
|  | 71 | S QACESEL=^TMP(QACRTN,$J,"DATA","DILIST",1,QACNUM) | 
|---|
|  | 72 | S QACOK=1 | 
|---|
|  | 73 | Q | 
|---|
|  | 74 | ; | 
|---|
|  | 75 | PROCESS ; | 
|---|
|  | 76 | D SETUP,SORT,RPT | 
|---|
|  | 77 | I 'QACINFO D HEADER W !!?26,"* * * NO DATA TO PRINT * * *",!! | 
|---|
|  | 78 | D EXIT | 
|---|
|  | 79 | Q | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | SETUP ; | 
|---|
|  | 82 | K ^TMP(QACRTN,$J) | 
|---|
|  | 83 | K QACEMPNM | 
|---|
|  | 84 | S (QACQUIT,QACPAGE)=0 | 
|---|
|  | 85 | S QACHDR2="Date "_QAQRANG | 
|---|
|  | 86 | S $P(QACUNDL,"-",78)="-" | 
|---|
|  | 87 | S QACDTIM=$$HTE^XLFDT($H,1) | 
|---|
|  | 88 | S QACTIME=$P(QACDTIM,"@",2) | 
|---|
|  | 89 | S QACTODAY=$P(QACDTIM,"@")_"  "_$E(QACTIME,1,5) | 
|---|
|  | 90 | Q | 
|---|
|  | 91 | ; | 
|---|
|  | 92 | SORT ; Sort thru the data to accumulate results based upon selection criteria | 
|---|
|  | 93 | S QACDATE1=QAQNBEG-1  ; Initialize the starting point for the Date of Contacts. | 
|---|
|  | 94 | I '$D(QAC1DIV) S QACDVNAM="NON-DIVISIONAL" | 
|---|
|  | 95 | ; | 
|---|
|  | 96 | ; Loop thru ROCs by "Date of Contact" | 
|---|
|  | 97 | F  S QACDATE1=$O(^QA(745.1,"D",QACDATE1)) Q:(QACDATE1>QAQNEND)!('$L(QACDATE1))  D | 
|---|
|  | 98 | . S QACD0="" | 
|---|
|  | 99 | . F  S QACD0=$O(^QA(745.1,"D",QACDATE1,QACD0)) Q:'$L(QACD0)  D | 
|---|
|  | 100 | . . K QACOUT | 
|---|
|  | 101 | . . D GETS^DIQ(745.1,QACD0,".01;1;2;37","NIE","QACOUT") | 
|---|
|  | 102 | . . S QACD0X=QACD0_"," | 
|---|
|  | 103 | . . S QACROCNO=$G(QACOUT(745.1,QACD0X,.01,"E"))  ; Contact Number | 
|---|
|  | 104 | . . S QACROCDT=$G(QACOUT(745.1,QACD0X,1,"E"))  ; Date of Contact - External | 
|---|
|  | 105 | . . S QACPTNO=$G(QACOUT(745.1,QACD0X,2,"I"))  ; Patient # | 
|---|
|  | 106 | . . S QACPTNAM=$G(QACOUT(745.1,QACD0X,2,"E"))  ; Patient Name | 
|---|
|  | 107 | . . S QACDOK=1 | 
|---|
|  | 108 | . . ; | 
|---|
|  | 109 | . . ; If site is Multi-divisional set up for the division name. | 
|---|
|  | 110 | . . I $D(QAC1DIV) D  Q:'QACDOK | 
|---|
|  | 111 | . . . S QACDVNO=$G(QACOUT(745.1,QACD0X,37,"I"))  ; Division # | 
|---|
|  | 112 | . . . I +QAC1DIV,+QAC1DIV'=+QACDVNO S QACDOK=0 Q  ; Not the selected Division | 
|---|
|  | 113 | . . . S QACDVNAM=$G(QACOUT(745.1,QACD0X,37,"E"))  ; Division Name | 
|---|
|  | 114 | . . . I '$L(QACDVNAM) S QACDVNAM="  EMPTY" | 
|---|
|  | 115 | . . ; | 
|---|
|  | 116 | . . ; Get array of Service/Disciplines for an ROC. | 
|---|
|  | 117 | . . K QAC3ARAY | 
|---|
|  | 118 | . . S QACD1=0 | 
|---|
|  | 119 | . . F  S QACD1=$O(^QA(745.1,QACD0,3,QACD1)) Q:'$L(QACD1)  D | 
|---|
|  | 120 | . . . I '$D(^QA(745.1,QACD0,3,QACD1,3,"B")) Q | 
|---|
|  | 121 | . . . S QACD2="" | 
|---|
|  | 122 | . . . F  S QACD2=$O(^QA(745.1,QACD0,3,QACD1,3,"B",QACD2)) Q:'$L(QACD2)  D | 
|---|
|  | 123 | . . . . S QACSVDP=$P($G(^QA(745.55,QACD2,0)),U,1)  ; Serv/Disp Name | 
|---|
|  | 124 | . . . . S QACD3="" | 
|---|
|  | 125 | . . . . F  S QACD3=$O(^QA(745.1,QACD0,3,QACD1,3,"B",QACD2,QACD3)) Q:'$L(QACD3)  D | 
|---|
|  | 126 | . . . . . S QACSEQ=0 F QACSEQ=QACSEQ:1 I '$D(QAC3ARAY(QACSVDP,QACSEQ)) Q | 
|---|
|  | 127 | . . . . . S QAC3ARAY(QACSVDP,QACSEQ)="" | 
|---|
|  | 128 | . . ; | 
|---|
|  | 129 | . . ; Get each Employee for an ROC. | 
|---|
|  | 130 | . . S QACD1=0 | 
|---|
|  | 131 | . . F  S QACD1=$O(^QA(745.1,QACD0,8,QACD1)) Q:'$L(QACD1)!(QACD1'?.N)  D | 
|---|
|  | 132 | . . . S QACENO=$G(^QA(745.1,QACD0,8,QACD1,0))  ; Employee Internal # | 
|---|
|  | 133 | . . . S QACENOX=QACENO_"," | 
|---|
|  | 134 | . . . I '$D(QACEMPNM(200,QACENOX)) D  ; If Employee Name not previously accessed get the name. | 
|---|
|  | 135 | . . . . D GETS^DIQ(200,QACENO,".01","NE","QACEMPNM") | 
|---|
|  | 136 | . . . . I $G(QACEMPNM(200,QACENOX,.01,"E"))="" S ^("E")="Unknown Employee" | 
|---|
|  | 137 | . . . S QACENAM=QACEMPNM(200,QACENOX,.01,"E")  ; Employee Name | 
|---|
|  | 138 | . . . D STORIT | 
|---|
|  | 139 | Q | 
|---|
|  | 140 | ; | 
|---|
|  | 141 | STORIT ; Store sorted ROC data in the ^TMP global for reporting purposes. | 
|---|
|  | 142 | I 'QACALL,(QACENAM'=QACESEL) Q  ; Not selected Employee. | 
|---|
|  | 143 | I '$D(^TMP(QACRTN,$J,"ROC",QACROCNO)) D | 
|---|
|  | 144 | . S ^TMP(QACRTN,$J,"ROC",QACROCNO)=QACD0_U_QACROCDT_U_QACPTNAM | 
|---|
|  | 145 | ; Store record for reporting purposes | 
|---|
|  | 146 | S (QACSVDP,QACSEQ)="" | 
|---|
|  | 147 | F  S QACSVDP=$O(QAC3ARAY(QACSVDP)) Q:'$L(QACSVDP)  D | 
|---|
|  | 148 | . F  S QACSEQ=$O(QAC3ARAY(QACSVDP,QACSEQ)) Q:'$L(QACSEQ)  D | 
|---|
|  | 149 | . . S ^TMP(QACRTN,$J,"RPT",QACDVNAM,QACENAM,QACSVDP,QACROCNO,QACSEQ)="" | 
|---|
|  | 150 | Q | 
|---|
|  | 151 | ; | 
|---|
|  | 152 | RPT ; Print the report | 
|---|
|  | 153 | U IO | 
|---|
|  | 154 | ; | 
|---|
|  | 155 | ; Loop through the Sorted data. | 
|---|
|  | 156 | S (QACDVNAM,QACEMPNM,QACSVDP,QACROCNO,QACSEQ)="" | 
|---|
|  | 157 | F  S QACDVNAM=$O(^TMP(QACRTN,$J,"RPT",QACDVNAM)) Q:QACDVNAM=""  D  Q:QACQUIT | 
|---|
|  | 158 | . F  S QACEMPNM=$O(^TMP(QACRTN,$J,"RPT",QACDVNAM,QACEMPNM)) Q:QACEMPNM=""  D  Q:QACQUIT | 
|---|
|  | 159 | . . ; | 
|---|
|  | 160 | . . ; New Employee | 
|---|
|  | 161 | . . D HEADER Q:QACQUIT | 
|---|
|  | 162 | . . F  S QACSVDP=$O(^TMP(QACRTN,$J,"RPT",QACDVNAM,QACEMPNM,QACSVDP)) Q:QACSVDP=""  D  Q:QACQUIT | 
|---|
|  | 163 | . . . F  S QACROCNO=$O(^TMP(QACRTN,$J,"RPT",QACDVNAM,QACEMPNM,QACSVDP,QACROCNO)) Q:QACROCNO=""  D  Q:QACQUIT | 
|---|
|  | 164 | . . . . ; | 
|---|
|  | 165 | . . . . ; Get an array of Issue Text for an ROC. | 
|---|
|  | 166 | . . . . K QACITXT | 
|---|
|  | 167 | . . . . S QACREC=^TMP(QACRTN,$J,"ROC",QACROCNO) | 
|---|
|  | 168 | . . . . S QACD0=$P(QACREC,U),QACROCDT=$P(QACREC,U,2),QACPTNAM=$P(QACREC,U,3) | 
|---|
|  | 169 | . . . . I $D(^QA(745.1,QACD0,4,0)) D | 
|---|
|  | 170 | . . . . . S DIC=745.1,DA=QACD0,DR=22,DIQ="QACITXT" | 
|---|
|  | 171 | . . . . . D EN^DIQ1 | 
|---|
|  | 172 | . . . . ; | 
|---|
|  | 173 | . . . . ; Print the Contact #, Date of Contact and Patient Name | 
|---|
|  | 174 | . . . . I $Y>(IOSL-6) D HEADER Q:QACQUIT | 
|---|
|  | 175 | . . . . W !!,QACROCNO,?25,QACROCDT,?45,QACPTNAM | 
|---|
|  | 176 | . . . . ; | 
|---|
|  | 177 | . . . . ; Print the Issue Text if there is any. | 
|---|
|  | 178 | . . . . I $D(QACITXT) D  Q:QACQUIT | 
|---|
|  | 179 | . . . . . S QACD1="" | 
|---|
|  | 180 | . . . . . F  S QACD1=$O(QACITXT(745.1,QACD0,DR,QACD1)) Q:'$L(QACD1)  D  Q:QACQUIT | 
|---|
|  | 181 | . . . . . . I $Y>(IOSL-6) D HEADER Q:QACQUIT | 
|---|
|  | 182 | . . . . . . W !?3,QACITXT(745.1,QACD0,DR,QACD1) | 
|---|
|  | 183 | . . . . ; | 
|---|
|  | 184 | . . . . F  S QACSEQ=$O(^TMP(QACRTN,$J,"RPT",QACDVNAM,QACEMPNM,QACSVDP,QACROCNO,QACSEQ)) Q:QACSEQ=""  D  Q:QACQUIT | 
|---|
|  | 185 | . . . . . ; | 
|---|
|  | 186 | . . . . . ; Print a Serv/Sect or Discipline line. | 
|---|
|  | 187 | . . . . . I $Y>(IOSL-6) D HEADER Q:QACQUIT | 
|---|
|  | 188 | . . . . . W !?6,QACSVDP | 
|---|
|  | 189 | Q | 
|---|
|  | 190 | ; | 
|---|
|  | 191 | HEADER ; | 
|---|
|  | 192 | S QACPAGE=QACPAGE+1 | 
|---|
|  | 193 | I QACPAGE>1 D  Q:QACQUIT | 
|---|
|  | 194 | . W $C(7) | 
|---|
|  | 195 | . I $E(IOST)="C" K DIR S DIR(0)="E" D ^DIR S QACQUIT=$S(Y'>0:1,1:0) | 
|---|
|  | 196 | ; | 
|---|
|  | 197 | W:$E(IOST)="C"!(QACPAGE>1) @IOF | 
|---|
|  | 198 | W !,QACDESC,?48,QACTODAY,?70,"PAGE ",QACPAGE | 
|---|
|  | 199 | W !?(80-$L(QACHDR2))/2,QACHDR2 | 
|---|
|  | 200 | W !,"Contact #",?25,"Date of Contact",?45,"Patient Name" | 
|---|
|  | 201 | W !?3,"Issue Text",!?6,"Serv/Sect or Discipline" | 
|---|
|  | 202 | W !,QACUNDL | 
|---|
|  | 203 | ; | 
|---|
|  | 204 | I $D(QAC1DIV) D    ; Print the division if site is Multi-divisional. | 
|---|
|  | 205 | . S QACDVTXT="Division: "_$S(QACDVNAM="  EMPTY":"EMPTY",1:QACDVNAM) | 
|---|
|  | 206 | . I $L(QACDVNAM) W !?(80-$L(QACDVTXT))/2,QACDVTXT S QACINFO=1 | 
|---|
|  | 207 | ; | 
|---|
|  | 208 | S QACEMTXT="Employee: "_QACEMPNM | 
|---|
|  | 209 | I $L(QACEMPNM) W !?(80-$L(QACEMTXT))/2,QACEMTXT,! S QACINFO=1 | 
|---|
|  | 210 | Q | 
|---|
|  | 211 | ; | 
|---|
|  | 212 | TRANS(X) ; Module to transform lower-case into uppercase. | 
|---|
|  | 213 | S X=$TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ") | 
|---|
|  | 214 | Q X | 
|---|
|  | 215 | ; | 
|---|
|  | 216 | EXIT ; | 
|---|
|  | 217 | W ! D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
|  | 218 | D K^QAQDATE | 
|---|
|  | 219 | K ^TMP(QACRTN,$J) | 
|---|
|  | 220 | K DA,DIC,DIQ,DIR,DR | 
|---|
|  | 221 | K QAC1DIV,QAC3ARAY,QAC4ARAY,QACALL,QACCONT,QACCREC0,QACD0,QACD0X | 
|---|
|  | 222 | K QACD1,QACD2,QACD3,QACDATA,QACDATE1,QACDESC,QACDOK,QACDTIM,QACDV | 
|---|
|  | 223 | K QACDVNAM,QACDVNO,QACDVTXT,QACEMPNM,QACEMTXT,QACENAM,QACENO,QACENOX | 
|---|
|  | 224 | K QACERR,QACESEL,QACFIL,QACFLDS,QACFLGS,QACFOUND,QACHDR2,QACINFO,QACITXT | 
|---|
|  | 225 | K QACNUM,QACOK,QACOUT,QACPAGE,QACPTNAM,QACPTNO,QACQUIT,QACREC | 
|---|
|  | 226 | K QACROCNO,QACROCDT,QACRTN,QACSEQ,QACSNO,QACSVDP,QACTIME,QACTODAY | 
|---|
|  | 227 | K QACUNDL,QAQDTOUT,QAQNBEG,QAQNEND,QAQPOP,QAQRANG | 
|---|
|  | 228 | K I,POP,R,X,Y,ZTDESC,ZTRTN,ZTSAVE | 
|---|
|  | 229 | Q | 
|---|