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