1 | IBCNBOE ;ALB/ARH-Ins Buffer: Employee Report ;1 Jun 97
|
---|
2 | ;;2.0;INTEGRATED BILLING;**82**;21-MAR-94
|
---|
3 | ;
|
---|
4 | EN ;get parameters then run the report
|
---|
5 | N IBX S IBX=$$WR Q:'IBX I IBX=1 G ^IBCNBOF ; WHICH REPORT? entered or processed
|
---|
6 | ;
|
---|
7 | ;
|
---|
8 | K ^TMP($J) D HOME^%ZIS S IBHDR="INSURANCE BUFFER INSURANCE EMPLOYEE REPORT" W @IOF,!!,?17,IBHDR
|
---|
9 | W !!,"This report produces counts and time statistics for Insurance Employees that",!,"have either Verified or Processed (Accept/Reject) an Insurance Buffer entry.",!!
|
---|
10 | ;
|
---|
11 | S IBEMPL=$$EMPL G:IBEMPL="" EXIT W !!
|
---|
12 | ;
|
---|
13 | I +IBEMPL S IBEMPL=$$SELEMPL("Verifies or Processes") G:IBEMPL="" EXIT W !!
|
---|
14 | ;
|
---|
15 | S IBBEG=$$DATES("Beginning") G:'IBBEG EXIT
|
---|
16 | S IBEND=$$DATES("Ending",IBBEG) G:'IBEND EXIT W !!
|
---|
17 | ;
|
---|
18 | S IBMONTH=$$MONTH G:IBMONTH="" EXIT W !!
|
---|
19 | ;
|
---|
20 | DEV ;get the device
|
---|
21 | S %ZIS="QM",%ZIS("A")="OUTPUT DEVICE: " D ^%ZIS G:POP EXIT
|
---|
22 | I $D(IO("Q")) S ZTRTN="RPT^IBCNBOE",ZTDESC=IBHDR,ZTSAVE("IB*")="" D ^%ZTLOAD K IO("Q") G EXIT
|
---|
23 | U IO
|
---|
24 | ;
|
---|
25 | RPT ; run report
|
---|
26 | S IBQUIT=0
|
---|
27 | ;
|
---|
28 | D SEARCH(IBBEG,IBEND,IBMONTH,IBEMPL) G:IBQUIT EXIT
|
---|
29 | D PRINT(IBBEG,IBEND,IBEMPL)
|
---|
30 | ;
|
---|
31 | EXIT K ^TMP($J),IBHDR,IBBEG,IBEND,IBMONTH,IBQUIT,IBEMPL
|
---|
32 | Q:$D(ZTQUEUED)
|
---|
33 | D ^%ZISC
|
---|
34 | Q
|
---|
35 | ;
|
---|
36 | SEARCH(IBBEG,IBEND,IBMONTH,IBEMPL) ; search/sort statistics for activity report
|
---|
37 | N IBXST,IBXDT,IBBUFDA,IBB0,IBDATE,IBEMP,IBTIME,IBSTAT,IBDT2,IBVER,IBS3 S IBQUIT=""
|
---|
38 | S IBBEG=$G(IBBEG)-.01,IBEND=$S('$G(IBEND):9999999,1:$P(IBEND,".")+.9)
|
---|
39 | ;
|
---|
40 | F IBXST="A","R","V" D Q:IBQUIT
|
---|
41 | . S IBXDT=IBBEG F S IBXDT=$O(^IBA(355.33,"AFST",IBXST,IBXDT)) Q:'IBXDT!(IBXDT>IBEND) D S IBQUIT=$$STOP Q:IBQUIT
|
---|
42 | .. S IBBUFDA=0 F S IBBUFDA=$O(^IBA(355.33,"AFST",IBXST,IBXDT,IBBUFDA)) Q:'IBBUFDA D
|
---|
43 | ... ;
|
---|
44 | ... S IBB0=$G(^IBA(355.33,IBBUFDA,0))
|
---|
45 | ... ;
|
---|
46 | ... ; verified
|
---|
47 | ... I IBXST="V" S IBDATE=+$P(IBB0,U,10) I +IBDATE,IBDATE>IBBEG,IBDATE<IBEND D
|
---|
48 | .... S IBEMP=+$P(IBB0,U,11) I +IBEMPL,IBEMPL'=IBEMP Q
|
---|
49 | .... S IBTIME=$$FMDIFF^XLFDT(IBDATE,+IBB0,2),IBSTAT="VERIFIED",IBS3=1
|
---|
50 | .... D SET(IBSTAT,IBEMP,$E(IBDATE,1,5),IBS3,IBTIME,IBB0,$G(IBMONTH))
|
---|
51 | ... ;
|
---|
52 | ... ; processed
|
---|
53 | ... I IBXST="A"!(IBXST="R") S IBDATE=+$P(IBB0,U,5) I +IBDATE,IBDATE>IBBEG,IBDATE<IBEND D
|
---|
54 | .... S IBEMP=+$P(IBB0,U,6) I +IBEMPL,IBEMPL'=IBEMP Q
|
---|
55 | .... S IBVER=$P(IBB0,U,10),IBSTAT="UNKNOWN",IBS3=6
|
---|
56 | .... S IBDT2=$S(+IBVER:+IBVER,1:+IBB0),IBTIME=$$FMDIFF^XLFDT(IBDATE,+IBDT2,2)
|
---|
57 | .... ;
|
---|
58 | .... I $P(IBB0,U,4)="A" S IBS3=2,IBSTAT="ACCEPTED" I 'IBVER S IBS3=3,IBSTAT=IBSTAT_" (&V)"
|
---|
59 | .... I $P(IBB0,U,4)="R" S IBS3=4,IBSTAT="REJECTED" I +IBVER S IBS3=5,IBSTAT=IBSTAT_" (V)"
|
---|
60 | .... D SET(IBSTAT,IBEMP,$E(IBDATE,1,5),IBS3,IBTIME,IBB0,$G(IBMONTH))
|
---|
61 | ;
|
---|
62 | Q
|
---|
63 | ;
|
---|
64 | SET(STAT,IBEMP,IBDATE,S3,TIME,IBB0,IBMONTH) ;
|
---|
65 | I +$G(IBMONTH) D SET1(IBSTAT,IBEMP,$E(IBDATE,1,5),S3,IBTIME,IBB0)
|
---|
66 | D SET1(IBSTAT,IBEMP,99999,S3,IBTIME,IBB0)
|
---|
67 | D SET1(IBSTAT,"~",99999,S3,IBTIME,IBB0)
|
---|
68 | Q
|
---|
69 | ;
|
---|
70 | SET1(STAT,S1,S2,S3,TIME,IBB0) ;
|
---|
71 | ;
|
---|
72 | D TMP("IBCNBOE",S1,S2,S3,TIME,STAT)
|
---|
73 | D TMP("IBCNBOE",S1,S2,9,TIME,"TOTAL")
|
---|
74 | ;
|
---|
75 | Q:$E(STAT)'="A"
|
---|
76 | ;
|
---|
77 | D TMP1("IBCNBOEC",S1,S2,+$P(IBB0,U,7),+$P(IBB0,U,8),+$P(IBB0,U,9))
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | TMP(XREF,S1,S2,S3,TIME,NAME) ;
|
---|
81 | S ^TMP($J,XREF,S1,S2,S3)=NAME
|
---|
82 | S ^TMP($J,XREF,S1,S2,S3,"CNT")=$G(^TMP($J,XREF,S1,S2,S3,"CNT"))+1
|
---|
83 | S ^TMP($J,XREF,S1,S2,S3,"TM")=$G(^TMP($J,XREF,S1,S2,S3,"TM"))+TIME
|
---|
84 | I '$G(^TMP($J,XREF,S1,S2,S3,"HG"))!($G(^TMP($J,XREF,S1,S2,S3,"HG"))<TIME) S ^TMP($J,XREF,S1,S2,S3,"HG")=TIME
|
---|
85 | I '$G(^TMP($J,XREF,S1,S2,S3,"LS"))!($G(^TMP($J,XREF,S1,S2,S3,"LS"))>TIME) S ^TMP($J,XREF,S1,S2,S3,"LS")=TIME
|
---|
86 | Q
|
---|
87 | ;
|
---|
88 | TMP1(XREF,S1,S2,IC,GC,PC) ;
|
---|
89 | I +IC S ^TMP($J,XREF,S1,S2,"I")=$G(^TMP($J,XREF,S1,S2,"I"))+1
|
---|
90 | I +GC S ^TMP($J,XREF,S1,S2,"G")=$G(^TMP($J,XREF,S1,S2,"G"))+1
|
---|
91 | I +PC S ^TMP($J,XREF,S1,S2,"P")=$G(^TMP($J,XREF,S1,S2,"P"))+1
|
---|
92 | S ^TMP($J,XREF,S1,S2,"CNT")=$G(^TMP($J,XREF,S1,S2,"CNT"))+1
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | ;
|
---|
96 | ;
|
---|
97 | PRINT(IBBEG,IBEND,IBEMPL) ;
|
---|
98 | N IBXREF,IBLABLE,IBS1,IBS2,IBS3,IBINS,IBGRP,IBPOL,IBCNT,IBIP,IBGP,IBPP,IBRDT,IBPGN,IBRANGE,IBLN,IBI
|
---|
99 | ;
|
---|
100 | S IBRANGE=$$FMTE^XLFDT(IBBEG)_" - "_$$FMTE^XLFDT(IBEND)
|
---|
101 | S IBRDT=$$FMTE^XLFDT($J($$NOW^XLFDT,0,4),2),IBRDT=$TR(IBRDT,"@"," "),IBPGN=0
|
---|
102 | D HDR
|
---|
103 | ;
|
---|
104 | S IBXREF="IBCNBOE",IBS1="" F S IBS1=$O(^TMP($J,IBXREF,IBS1)) Q:IBS1="" D
|
---|
105 | . ;
|
---|
106 | . S IBS2=0 F S IBS2=$O(^TMP($J,IBXREF,IBS1,IBS2)) Q:IBS2="" D:IBLN>(IOSL-15) HDR Q:IBQUIT D S IBLN=IBLN+8
|
---|
107 | .. S IBLABLE=$S(IBS2=99999:"TOTALS",($E(IBBEG,1,5)<IBS2)&($E(IBEND,1,5)>IBS2):$$FMTE^XLFDT(IBS2_"00"),1:"")
|
---|
108 | .. I IBLABLE="" S IBLABLE=$$FMTE^XLFDT($S($E(IBBEG,1,5)<IBS2:IBS2_1,1:IBBEG))_" - "_$$FMTE^XLFDT($S($E(IBEND,1,5)>IBS2:$$SCH^XLFDT("1M(L)",IBS2_11),1:IBEND))
|
---|
109 | .. S IBLABLE=$P($G(^VA(200,IBS1,0)),U,1)_" "_IBLABLE
|
---|
110 | .. W !,?(40-($L(IBLABLE)/2)),IBLABLE,!
|
---|
111 | .. W !,?43,"AVERAGE",?56,"LONGEST",?68,"SHORTEST"
|
---|
112 | .. W !,"STATUS",?22,"COUNT",?30,"PERCENT",?43,"# DAYS",?56,"# DAYS",?68,"# DAYS"
|
---|
113 | .. W !,"-----------------------------------------------------------------------------"
|
---|
114 | .. ;
|
---|
115 | .. S IBS3="" F S IBS3=$O(^TMP($J,IBXREF,IBS1,IBS2,IBS3)) Q:'IBS3 D PRTLN S IBLN=IBLN+1
|
---|
116 | .. ;
|
---|
117 | .. S IBINS=+$G(^TMP($J,"IBCNBOEC",IBS1,IBS2,"I")),IBGRP=+$G(^TMP($J,"IBCNBOEC",IBS1,IBS2,"G"))
|
---|
118 | .. S IBPOL=+$G(^TMP($J,"IBCNBOEC",IBS1,IBS2,"P")),IBCNT=+$G(^TMP($J,"IBCNBOEC",IBS1,IBS2,"CNT"))
|
---|
119 | .. S (IBIP,IBGP,IBPP)=0 I IBCNT'=0 S IBIP=((IBINS/IBCNT)*100)\1,IBGP=((IBGRP/IBCNT)*100)\1,IBPP=((IBPOL/IBCNT)*100)\1
|
---|
120 | .. W !!,?2,IBINS," New Compan",$S(IBINS=1:"y",1:"ies")," (",IBIP,"%), "
|
---|
121 | .. W IBGRP," New Group/Plan",$S(IBGRP=1:"",1:"s")," (",IBGP,"%), "
|
---|
122 | .. W IBPOL," New Patient Polic",$S(IBPOL=1:"y",1:"ies")," (",IBPP,"%)",!
|
---|
123 | ;
|
---|
124 | S IBI=$$PAUSE
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | PRTLN ;
|
---|
128 | N IBSTX,IBCNT,IBTM,IBHG,IBLS,IBTCNT
|
---|
129 | ;
|
---|
130 | S IBSTX=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3))
|
---|
131 | S IBCNT=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"CNT")) Q:'IBCNT
|
---|
132 | S IBTM=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"TM"))
|
---|
133 | S IBHG=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"HG"))
|
---|
134 | S IBLS=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"LS"))
|
---|
135 | S IBTCNT=$G(^TMP($J,IBXREF,IBS1,IBS2,9,"CNT")) Q:'IBTCNT
|
---|
136 | ;
|
---|
137 | W !,IBSTX,?20,$J($FN(IBCNT,","),7),?30,$J(((IBCNT/IBTCNT)*100),6,1),"%",?43,$J($$STD((IBTM/IBCNT)),6,1),?56,$J($$STD(IBHG),6,1),?68,$J($$STD(IBLS),6,1)
|
---|
138 | Q
|
---|
139 | ;
|
---|
140 | STD(SEC) ; convert seconds to days
|
---|
141 | N IBX,IBD,IBS,IBH,DAYS S DAYS="" G:'$G(SEC) STDQ
|
---|
142 | S IBD=(SEC/86400),IBD=+$P(IBD,".")
|
---|
143 | S IBS=SEC-(IBD*86400)
|
---|
144 | S IBH=((IBS/60)/60),IBH=+$J(IBH,0,2)
|
---|
145 | S DAYS=IBD+(IBH/24)
|
---|
146 | STDQ Q DAYS
|
---|
147 | ;
|
---|
148 | HDR ;print the report header
|
---|
149 | S IBQUIT=$$STOP Q:IBQUIT
|
---|
150 | I IBPGN>0 S IBQUIT=$$PAUSE Q:IBQUIT
|
---|
151 | S IBPGN=IBPGN+1,IBLN=5 I IBPGN>1!($E(IOST,1,2)["C-") W @IOF
|
---|
152 | W !,"INSURANCE BUFFER EMPLOYEE REPORT ",IBRANGE," "
|
---|
153 | W ?(IOM-22),IBRDT,?(IOM-7)," PAGE ",IBPGN,!
|
---|
154 | I +$G(IBEMPL) W !,"EMPLOYEE: ",$P($G(^VA(200,+IBEMPL,0)),U,1),!
|
---|
155 | S IBI="",$P(IBI,"-",IOM+1)="" W IBI,!
|
---|
156 | Q
|
---|
157 | ;
|
---|
158 | PAUSE() ;pause at end of screen if beeing displayed on a terminal
|
---|
159 | N IBX,DIR,DIRUT,X,Y S IBX=0
|
---|
160 | I $E(IOST,1,2)["C-" W !! S DIR(0)="E" D ^DIR K DIR I $D(DUOUT)!($D(DIRUT)) S IBX=1
|
---|
161 | Q IBX
|
---|
162 | ;
|
---|
163 | STOP() ;determine if user has requested the queued report to stop
|
---|
164 | I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1 K ZTREQ I +$G(IBPGN) W !,"***TASK STOPPED BY USER***"
|
---|
165 | Q +$G(ZTSTOP)
|
---|
166 | ;
|
---|
167 | WR() ; which report
|
---|
168 | N DIR,X,Y,DIRUT,DUOUT,IBX S IBX=""
|
---|
169 | S DIR("?")="Enter 'V' for a report based on employees that verify or process (accept/reject) buffer entries."
|
---|
170 | S DIR("?",5)="Enter 'E' for a report based on employees that create new buffer entries."
|
---|
171 | S DIR("?",1)="This report may be printed for those employees that create Buffer entries,"
|
---|
172 | S DIR("?",2)="primarily non-Insurance personnel or for those employees that verify and process",DIR("?",3)="(accept/reject) Buffer entries, primarily Insurance Personnel.",DIR("?",4)=" "
|
---|
173 | S DIR("A")="Include which Type of Employee",DIR(0)="SO^1:Entered By;2:Verified/Processed By" D ^DIR
|
---|
174 | S IBX=$S(Y>0:+Y,1:"")
|
---|
175 | Q IBX
|
---|
176 | ;
|
---|
177 | EMPL() ; print a single or all employees?
|
---|
178 | N DIR,X,Y,DIRUT,DUOUT,IBX S IBX=""
|
---|
179 | S DIR("?",1)="Report of activity in the Buffer file by Employee and date range."
|
---|
180 | S DIR("?",2)="Enter 'S' to include only a single employee in the report."
|
---|
181 | S DIR("?")="Enter 'A' to include all employees in the report."
|
---|
182 | S DIR("A")="Include Selected or All Employees"
|
---|
183 | S DIR("B")="All",DIR(0)="SO^A:All Employees;S:Selected Employee" D ^DIR
|
---|
184 | S IBX=$S(Y="S":1,Y="A":0,1:"")
|
---|
185 | Q IBX
|
---|
186 | ;
|
---|
187 | SELEMPL(TYPE) ; get the name of an employee
|
---|
188 | N DIC,X,Y,DTOUT,DUOUT,IBX S IBX=""
|
---|
189 | S DIC("A")="Select an Employee that "_TYPE_" Buffer entries: "
|
---|
190 | S DIC="^VA(200,",DIC(0)="AEMQ" D ^DIC S IBX=+Y I $D(DTOUT)!$D(DUOUT)!(Y<1) S IBX=""
|
---|
191 | Q IBX
|
---|
192 | ;
|
---|
193 | DATES(LABLE,IBBEG) ;
|
---|
194 | N DIR,X,Y,DIRUT,DUOUT,IBX,IBB,IBD S IBX="",IBB=$P($S(+$G(IBBEG):IBBEG,1:+$O(^IBA(355.33,"B",0))),"."),IBD=$S(+$G(IBBEG):DT,1:IBB)
|
---|
195 | S DIR("?")="Enter the "_LABLE_" date to include in the report."
|
---|
196 | S DIR("?",1)="Enter a date from the date of the first Buffer entry to today."
|
---|
197 | S DIR("A")=LABLE_" Date",DIR("B")=$$FMTE^XLFDT(IBD)
|
---|
198 | S DIR(0)="DO^"_IBB_":"_DT_":EX" D ^DIR S IBX=Y I $D(DIRUT)!$D(DUOUT) S IBX=""
|
---|
199 | Q IBX
|
---|
200 | ;
|
---|
201 | MONTH() ;
|
---|
202 | N DIR,X,Y,DIRUT,DUOUT,IBX S IBX=""
|
---|
203 | S DIR("?")="Enter No if only totals for the date range should be reported."
|
---|
204 | S DIR("?",1)="Enter Yes if the report should be broken down by month."
|
---|
205 | S DIR("A")="Report By Month",DIR(0)="Y",DIR("B")="No" D ^DIR
|
---|
206 | S IBX=$S(Y=1:Y,Y=0:Y,1:"")
|
---|
207 | Q IBX
|
---|