1 | ECRPCLS ;ALB/JAP - Event Capture Invalid Provider Report ; 13 Aug 97
|
---|
2 | ;;2.0; EVENT CAPTURE ;**5,47**;8 May 96
|
---|
3 | ;
|
---|
4 | EN ;entry point from menu option
|
---|
5 | W !
|
---|
6 | D RANGE
|
---|
7 | I '$G(ECLOOP)!'$G(ECBEGIN)!'$G(ECEND) G EXIT
|
---|
8 | W !
|
---|
9 | D SORT
|
---|
10 | I $G(DIRUT) G EXIT
|
---|
11 | I "PR"'[$G(ECSORT) G EXIT
|
---|
12 | K DIR,DIRUT,DUOUT
|
---|
13 | W !
|
---|
14 | D DEVICE
|
---|
15 | I POP G EXIT
|
---|
16 | I $G(ZTSK) G EXIT
|
---|
17 | I $G(IO("Q")),'$G(ZTSK) G EXIT
|
---|
18 | D START
|
---|
19 | D HOME^%ZIS
|
---|
20 | G EXIT
|
---|
21 | ;
|
---|
22 | START ;queued entry point or continuation
|
---|
23 | D PROCESS
|
---|
24 | U IO D PRINT
|
---|
25 | I $D(ECGUI) D EXIT Q
|
---|
26 | I IO'=IO(0) D ^%ZISC
|
---|
27 | I $D(ZTQUEUED) S ZTREQ="@" D EXIT
|
---|
28 | Q
|
---|
29 | ;
|
---|
30 | RANGE ;get any date range between T and T-365
|
---|
31 | N X1,X2,ECSTDT,ECENDDT
|
---|
32 | W !,?5,"Enter a Begin Date and End Date for this Event Capture "
|
---|
33 | W !,?5,"provider report -- both dates must be within the past "
|
---|
34 | W !,?5,"365 days.",!
|
---|
35 | S (ECBEGIN,ECEND)=0
|
---|
36 | F D Q:ECBEGIN>0 Q:'$G(ECLOOP)
|
---|
37 | .S ECLOOP=$$STDT^ECRUTL() I 'ECLOOP Q
|
---|
38 | .S ECBEGIN=ECSTDT
|
---|
39 | .S X1=DT,X2=ECBEGIN D ^%DTC I X>365 D
|
---|
40 | ..W !!,?15,"The Begin Date for this report may not be"
|
---|
41 | ..W !,?15,"more than 365 days ago. Try again...",!
|
---|
42 | ..S ECBEGIN=0
|
---|
43 | Q:'$G(ECLOOP)!'$G(ECBEGIN)
|
---|
44 | F D Q:ECEND>0 Q:'$G(ECLOOP)
|
---|
45 | .S ECLOOP=$$ENDDT^ECRUTL(ECSTDT) I 'ECLOOP Q
|
---|
46 | .S ECEND=ECENDDT
|
---|
47 | .I ECEND>(DT+1) D
|
---|
48 | ..W !!,?15,"The End Date for this report may not be"
|
---|
49 | ..W !,?15,"a future date. Try again...",!
|
---|
50 | ..S ECEND=0
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | SORT ;ask user if report should be alpha by patient (P) or
|
---|
54 | ; alpha by provider (R)
|
---|
55 | K DIR
|
---|
56 | S DIR(0)="SAXB^P:PATIENT;R:PROVIDER"
|
---|
57 | S DIR("?")="Enter an uppercase 'P' or 'R'."
|
---|
58 | S DIR("A")="Select sorting by Patient or pRovider (P/R): "
|
---|
59 | S DIR("A",1)=" "
|
---|
60 | S DIR("A",2)="If you want the report to show Patient name in the 1st column,"
|
---|
61 | S DIR("A",3)="enter a 'P'. The listing will be alphabetical by Patient name."
|
---|
62 | S DIR("A",4)=" "
|
---|
63 | S DIR("A",5)="If you want the report to show Provider name in the 1st column,"
|
---|
64 | S DIR("A",6)="enter an 'R'. The listing will be alphabetical by Provider name."
|
---|
65 | S DIR("A",7)=" "
|
---|
66 | D ^DIR
|
---|
67 | Q:$G(DIRUT)
|
---|
68 | S ECSORT=Y
|
---|
69 | Q
|
---|
70 | ;
|
---|
71 | DEVICE ;get device and queue
|
---|
72 | K IOP S %ZIS="QM" D ^%ZIS
|
---|
73 | I POP W !!,"No device selected. Exiting...",!! S DIR(0)="E" W ! D ^DIR K DIR Q
|
---|
74 | I $D(IO("Q")) D
|
---|
75 | .S ZTRTN="START^ECRPCLS",ZTDESC="EC Invalid Provider Report"
|
---|
76 | .S ZTSAVE("ECBEGIN")="",ZTSAVE("ECEND")="",ZTSAVE("ECSORT")=""
|
---|
77 | .D ^%ZTLOAD
|
---|
78 | .I '$G(ZTSK) W !,"Report canceled..." S DIR(0)="E" W ! D ^DIR K DIR Q
|
---|
79 | .W !,"Report queued as Task #: ",ZTSK S DIR(0)="E" W ! D ^DIR K DIR
|
---|
80 | Q
|
---|
81 | ;
|
---|
82 | PROCESS ;process the "AC" x-ref in file #721
|
---|
83 | ;^ECH("AC",date,file#721 ien)=""
|
---|
84 | ;$ORDER from begindate to enddate
|
---|
85 | ;use $$GET^XUA4A72(provider ien,date)
|
---|
86 | ;if return is >0 then get next x-ref entry
|
---|
87 | ;
|
---|
88 | N ECD,ECDATA,ECDATE,ECDDT,ECDT,ECERR,ECIEN,ECPIEN,ECPRDT,ECPRIEN,ECPRVN,ECPT,ECPTN,ECS,ECSSN,ECT,ECU,ECU2,ECU3
|
---|
89 | K ^TMP("ECRPCLS",$J) S ECDT=ECBEGIN
|
---|
90 | F S ECDT=$O(^ECH("AC",ECDT)) Q:ECDT>ECEND Q:ECDT="" D
|
---|
91 | .S ECIEN=""
|
---|
92 | .F S ECIEN=$O(^ECH("AC",ECDT,ECIEN)) Q:ECIEN="" D
|
---|
93 | ..S ECDATA=$G(^ECH(ECIEN,0)) I '+ECDATA Q ;file problem
|
---|
94 | ..S ECPRDT=$P(ECDT,".",1),ECDDT=$P(ECDATA,"^",3) I ECDDT'=ECDT S ECPRDT=$P(ECDDT,".",1) ;there's a problem in the x-ref
|
---|
95 | ..I ECPRDT<ECBEGIN!(ECPRDT>ECEND) Q
|
---|
96 | ..S ECU=$P(ECDATA,"^",11),ECU2=$P(ECDATA,"^",15),ECU3=$P(ECDATA,"^",17)
|
---|
97 | ..F ECPIEN=ECU,ECU2,ECU3 D
|
---|
98 | ...Q:'+ECPIEN
|
---|
99 | ...S ECERR=$$GET^XUA4A72(ECPIEN,ECPRDT) Q:+ECERR>0
|
---|
100 | ...S ECD=$P(ECDDT,".",1),ECT=$P(ECDDT,".",2)
|
---|
101 | ...S ECDATE=$E(ECD,4,5)_"/"_$E(ECD,6,7)_"/"_$E(ECD,2,3) I +ECT S ECT=$$LJ^XLFSTR(ECT,4,0),ECDATE=ECDATE_" "_$E(ECT,1,2)_":"_$E(ECT,3,4)
|
---|
102 | ...S ECPT=$P(ECDATA,"^",2),ECPTN=$P($G(^DPT(ECPT,0)),"^",1) Q:ECPTN=""
|
---|
103 | ...S ECS=$P(^(0),"^",9),ECS=$E(ECS,1,9),ECSSN=$E(ECS,6,9)
|
---|
104 | ...S ECPRVN=$P($G(^VA(200,ECPIEN,0)),"^",1) Q:ECPRVN=""
|
---|
105 | ...S ECPRIEN="("_ECPIEN_")",ECPRIEN=$$RJ^XLFSTR(ECPRIEN,10," ")
|
---|
106 | ...;if sort by patient then patient name is 3rd subscript
|
---|
107 | ...I ECSORT="P" S ^TMP("ECRPCLS",$J,ECPTN,ECPRVN,ECIEN)=ECERR_"^"_ECPRIEN_"^"_ECSSN_"^"_ECDATE
|
---|
108 | ...;if sort by provider then provider name is 3rd subscript
|
---|
109 | ...I ECSORT="R" S ^TMP("ECRPCLS",$J,ECPRVN,ECPTN,ECIEN)=ECERR_"^"_ECPRIEN_"^"_ECSSN_"^"_ECDATE
|
---|
110 | Q
|
---|
111 | ;
|
---|
112 | PRINT ;output report
|
---|
113 | ;
|
---|
114 | N X1,X2,PROVIDER,PATIENT,PAGE,PRNTDT,QFLAG,DASH,JJ,SS
|
---|
115 | N ECDATA,ECDATE,ECERR,ECIEN,ECPRIEN,ECPRVN,ECPTN,ECSSN
|
---|
116 | S (PAGE,QFLAG)=0 S $P(DASH,"-",80)=""
|
---|
117 | S Y=$P(ECBEGIN,".",1)+1 D DD^%DT S ECBEGIN=Y S Y=$P(ECEND,".",1) D DD^%DT S ECEND=Y
|
---|
118 | D NOW^%DTC S Y=$E(%,1,12) D DD^%DT S PRNTDT=Y
|
---|
119 | D HEAD
|
---|
120 | I '$D(^TMP("ECRPCLS",$J)) D Q
|
---|
121 | .W !!,?12,"No invalid providers found for date range specified."
|
---|
122 | .I $E(IOST)="C"&('QFLAG) S DIR(0)="E" D D ^DIR K DIR
|
---|
123 | ..S SS=22-$Y F JJ=1:1:SS W !
|
---|
124 | .W:$E(IOST)'="C" @IOF
|
---|
125 | S X1="" F S X1=$O(^TMP("ECRPCLS",$J,X1)) Q:X1="" D
|
---|
126 | .S:ECSORT="P" ECPTN=X1 S:ECSORT="R" ECPRVN=X1
|
---|
127 | .S X2="" F S X2=$O(^TMP("ECRPCLS",$J,X1,X2)) Q:X2="" D
|
---|
128 | ..S:ECSORT="P" ECPRVN=X2 S:ECSORT="R" ECPTN=X2
|
---|
129 | ..S ECIEN="",ECIEN=$O(^TMP("ECRPCLS",$J,X1,X2,ECIEN)),ECDATA=^(ECIEN)
|
---|
130 | ..S ECERR=$P(ECDATA,"^",1),ECPRIEN=$P(ECDATA,"^",2),ECSSN=$P(ECDATA,"^",3),ECDATE=$P(ECDATA,"^",4)
|
---|
131 | ..S PROVIDER=$$LJ^XLFSTR($E(ECPRVN,1,20),20," ")_" "_ECPRIEN_" "_ECERR
|
---|
132 | ..S PATIENT=$$LJ^XLFSTR($E(ECPTN,1,20),20," ")_" "_ECSSN_" "_ECDATE
|
---|
133 | ..D:($Y+3>IOSL) HEAD
|
---|
134 | ..I ECSORT="P" W !,PATIENT_" "_PROVIDER
|
---|
135 | ..I ECSORT="R" W !,PROVIDER_" "_PATIENT
|
---|
136 | I $E(IOST)="C"&('QFLAG) S DIR(0)="E" D D ^DIR W @IOF
|
---|
137 | .S SS=22-$Y F JJ=1:1:SS W !
|
---|
138 | W:$E(IOST)'="C" @IOF
|
---|
139 | Q
|
---|
140 | ;
|
---|
141 | HEAD ;report header
|
---|
142 | ;write the header line with page # and print date and explanation
|
---|
143 | I $E(IOST)="C" S SS=22-$Y F JJ=1:1:SS W !
|
---|
144 | I $E(IOST)="C",PAGE>0 S DIR(0)="E" W ! D ^DIR K DIR I 'Y S QFLAG=1 Q
|
---|
145 | W:$Y!($E(IOST)="C") @IOF
|
---|
146 | S PAGE=PAGE+1
|
---|
147 | W !,?12,"Event Capture Providers with Inactive/Missing Person Class"
|
---|
148 | W !,?12,"for the Date Range "_ECBEGIN_" through "_ECEND
|
---|
149 | W !!,"Printed: "_PRNTDT,?65,"Page: "_PAGE,!
|
---|
150 | I PAGE=1 D
|
---|
151 | .W !,?12,"The following entries in the Event Capture Patient file (#721)"
|
---|
152 | .W !,?12,"are associated with a provider who meets one of the following"
|
---|
153 | .W !,?12,"criteria:",!
|
---|
154 | .W !,?22,"(a) The provider has no Person Class"
|
---|
155 | .W !,?22," specified in file #200. (Error=-1)"
|
---|
156 | .W !,?22,"(b) The provider does not have an active"
|
---|
157 | .W !,?22," Person Class in file #200 for the"
|
---|
158 | .W !,?22," date of procedure. (Error=-2)",!
|
---|
159 | .W !,?12,"The provider's record number in file #200 is shown in parentheses"
|
---|
160 | .W !,?12,"after the provider name.",!
|
---|
161 | I ECSORT="P" D SUBHDA
|
---|
162 | I ECSORT="R" D SUBHDB
|
---|
163 | Q
|
---|
164 | ;
|
---|
165 | SUBHDA ;subheader for sort by patient
|
---|
166 | W !,?27,"Date of"
|
---|
167 | W !,"Patient",?21,"SSN",?27,"Procedure",?43,"Provider",?75,"Err."
|
---|
168 | W !,DASH,!
|
---|
169 | Q
|
---|
170 | ;
|
---|
171 | SUBHDB ;subheader for sort by provider
|
---|
172 | W !,?65,"Date of"
|
---|
173 | W !,"Provider",?32,"Err.",?38,"Patient",?59,"SSN",?65,"Procedure"
|
---|
174 | W !,DASH,!
|
---|
175 | Q
|
---|
176 | ;
|
---|
177 | EXIT ;common exit point & clean-up
|
---|
178 | D ^ECKILL
|
---|
179 | D:'$D(ECGUI) ^%ZISC
|
---|
180 | K ^TMP("ECRPCLS",$J)
|
---|
181 | K DIR,DIRUT,DTOUT,DUOUT,ECBEGIN,ECEND,ECSORT,ECLOOP
|
---|
182 | K IO("Q"),POP,X,Y,ZTSK,ZTRTN,ZTDESC,ZTSAVE
|
---|
183 | Q
|
---|