1 | PXDELENC ;BAY/RJV-CLEAN UP ENCOUNTERS POINTING TO VISITS THAT DO NOT EXIST. ;14-JUN-2005
|
---|
2 | ;;1.0;PCE;**153**;14-JUL-2004
|
---|
3 | EN ;Entry Point.
|
---|
4 | N DIR,DA,ZTRTN,ZTDESC,PXOPT,ZTSK,ZTQUEUED,ZTIO,POP
|
---|
5 | S DIR("?")="Please enter 1, 2, 3, or 4."
|
---|
6 | S DIR("?",1)="Please note: Options 1 -3 work directly from the temporary"
|
---|
7 | S DIR("?",2)="file created by date range under Option 1 - BUILD."
|
---|
8 | S DIR("?",3)="While Option 4 works with the individual patient selected."
|
---|
9 | S DIR("?",4)="Option 4 may show different results than the Build Report"
|
---|
10 | S DIR("?",5)="displays all existing problem encounters by patient."
|
---|
11 | S DIR("?",6)=""
|
---|
12 | S DIR(0)="SO^1:BUILD;2:REPORT;3:FIX ALL BUILD ERRORS;4:FIX INDIVIDUAL"
|
---|
13 | S DIR("L",1)="Select one of the following:"
|
---|
14 | S DIR("L",2)=""
|
---|
15 | S DIR("L",3)="1 Build 2 Report 3 Fix All Build Errors 4 Fix Individual"
|
---|
16 | D ^DIR
|
---|
17 | S PXOPT=Y
|
---|
18 | Q:PXOPT=""
|
---|
19 | K DIR,DA Q:$D(DIRUT)
|
---|
20 | I PXOPT=1 D ASKBLD
|
---|
21 | I PXOPT=2 D PRINT
|
---|
22 | I PXOPT=3 D FIXALL^PXDELFIX
|
---|
23 | I PXOPT=4 D FIXIND^PXDELFIX
|
---|
24 | Q
|
---|
25 | ASKBLD ;
|
---|
26 | N PXPAT,PXSDATE,PXENC,PXVISIT,PXPRIM,PXSTART,PXEND,PXCOUNT,PXSEC,PXPRI
|
---|
27 | N PXSDT,PXEDT,PXRANGE,PXREM,Y,%,DIRUT,PXPURGE,PXCREATE,X1,X2,PXATYP
|
---|
28 | D NOW^%DTC S (PXCREATE,X1)=%,X2=120 D C^%DTC S PXPURGE=X
|
---|
29 | S ^XTMP("PXDELENC",0)=PXPURGE_"^"_PXCREATE
|
---|
30 | S Y=$G(^XTMP("PXDELENC","START BUILD")) D DD^%DT S PXSTART=Y
|
---|
31 | S Y=$G(^XTMP("PXDELENC","END BUILD")) D DD^%DT S PXEND=Y
|
---|
32 | I PXEND="RUNNING" D Q
|
---|
33 | .W !!,"Build started on ",PXSTART," still running!"
|
---|
34 | .D WAIT
|
---|
35 | S PXSDT=$P($G(^XTMP("PXDELENC","PXENC",0)),"^",1)
|
---|
36 | S PXEDT=$P($G(^XTMP("PXDELENC","PXENC",0)),"^",2)
|
---|
37 | S Y=PXSDT D DD^%DT S PXSDT=Y
|
---|
38 | S Y=PXEDT D DD^%DT S PXEDT=Y
|
---|
39 | S PXREM=$G(^XTMP("PXDELENC","PXENC","PXCOUNT"))
|
---|
40 | I PXEND'="" D
|
---|
41 | .W !!,"Last Build completed on ",PXEND
|
---|
42 | .W !,"using a date range of ",PXSDT," thru ",PXEDT
|
---|
43 | .I PXREM>0 W !!,"This build contains ",PXREM," items to be fixed.",!
|
---|
44 | .I PXREM=0 W !!,"There are 0 remaining items to be fixed.",!
|
---|
45 | S DIR("A")="Do you wish to continue with NEW Build? "
|
---|
46 | S DIR(0)="Y",DIR("B")="NO"
|
---|
47 | D ^DIR
|
---|
48 | K DA,DIR Q:$D(DIRUT)
|
---|
49 | I Y=0 Q
|
---|
50 | ASKBDT ;
|
---|
51 | S %DT="AEPX",%DT("A")="Enter Begin date for build: "
|
---|
52 | D ^%DT S PXSDT=Y
|
---|
53 | I X="^" Q
|
---|
54 | I Y=-1 W !!,"Invalid Date!",! G ASKBDT
|
---|
55 | K %DT,Y
|
---|
56 | ASKEDT ;
|
---|
57 | S %DT="AEPX",%DT("A")="Enter Ending date for build: "
|
---|
58 | D ^%DT S PXEDT=Y
|
---|
59 | I X="^" Q
|
---|
60 | I Y=-1 W !!,"Invalid Date!",! G ASKEDT
|
---|
61 | K %DT,Y
|
---|
62 | K ^XTMP("PXDELENC","PXENC")
|
---|
63 | S $P(^XTMP("PXDELENC","PXENC",0),"^",1)=PXSDT
|
---|
64 | S $P(^XTMP("PXDELENC","PXENC",0),"^",2)=PXEDT
|
---|
65 | D CLEAR^VALM1
|
---|
66 | S ZTRTN="BUILD^PXDELENC"
|
---|
67 | S ZTDESC="UTILITY TO LOOK FOR MISSING VISITS"
|
---|
68 | S ZTSAVE("PX*")="",ZTSAVE("XM*")="",ZTIO=""
|
---|
69 | D ^%ZTLOAD
|
---|
70 | I $D(ZTSK) W !,"Request Queued!"
|
---|
71 | D WAIT
|
---|
72 | Q
|
---|
73 | BUILD ; Build missing visits enconters.
|
---|
74 | S PXPAT="",PXENC="",PXATYP=""
|
---|
75 | D NOW^%DTC S PXSTART=%
|
---|
76 | S ^XTMP("PXDELENC","START BUILD")=PXSTART
|
---|
77 | S ^XTMP("PXDELENC","END BUILD")="RUNNING"
|
---|
78 | S ^XTMP("PXDELENC",0)=$$FMADD^XLFDT(PXSTART,60)_"^"_PXSTART
|
---|
79 | S PXSDATE=PXSDT
|
---|
80 | F S PXSDATE=$O(^SCE("B",PXSDATE)) Q:PXSDATE=""!($P(PXSDATE,".")>PXEDT) D
|
---|
81 | .F S PXENC=$O(^SCE("B",PXSDATE,PXENC)) Q:PXENC="" D
|
---|
82 | ..S PXPAT=$P($G(^SCE(PXENC,0)),"^",2)
|
---|
83 | ..I $G(PXPAT)="" Q
|
---|
84 | ..S PXATYP=$P($G(^DPT(PXPAT,"S",PXSDATE,0)),"^",2)
|
---|
85 | ..I PXATYP["C" Q
|
---|
86 | ..S PXVISIT=$P($G(^SCE(PXENC,0)),"^",5)
|
---|
87 | ..S PXPRIM=$P($G(^SCE(PXENC,0)),"^",6)
|
---|
88 | ..S PXSEC="" I $P($G(^SCE(PXENC+1,0)),"^",6)=PXENC S PXSEC=PXENC+1
|
---|
89 | ..I $G(PXVISIT)'="" Q
|
---|
90 | ..I $G(PXVISIT)="",$G(PXPRIM)'="" Q
|
---|
91 | ..I $G(PXVISIT)="",$D(^DPT(PXPAT,"S",PXSDATE,0)) D
|
---|
92 | ...S ^XTMP("PXDELENC","PXENC",PXPAT,PXSDATE,PXENC)=$G(PXSEC)
|
---|
93 | D NOW^%DTC S PXEND=%
|
---|
94 | S ^XTMP("PXDELENC","PXENC","PXCOUNT")=$$COUNT()
|
---|
95 | S ^XTMP("PXDELENC","END BUILD")=PXEND
|
---|
96 | D PXMAIL
|
---|
97 | Q
|
---|
98 | PRINT ; Print report of missing visits.
|
---|
99 | N PXPAT,PXENC,PXSDATE,PXPATNM,PXNUMNM,%ZIS,PXSDTE,PXEND,PXPAGE
|
---|
100 | N PXPRIM,PXPRIX,PXWARN
|
---|
101 | S PXPAT=0,PXSDATE="",PXENC="",PXEND="",PXPAGE=0,PXWARN=0
|
---|
102 | I $G(^XTMP("PXDELENC","END BUILD"))="RUNNING" D Q
|
---|
103 | .W !!,"Build is running, please wait until complete!"
|
---|
104 | .D WAIT
|
---|
105 | I $G(^XTMP("PXDELENC","PXENC","PXCOUNT"))=0 D Q
|
---|
106 | .W !!,"No missing visits found!"
|
---|
107 | .D WAIT
|
---|
108 | S %ZIS="Q" D ^%ZIS
|
---|
109 | I POP Q
|
---|
110 | I $G(IO("Q"))=1 D Q
|
---|
111 | .N ZTRTN,ZTDESC,ZTSAVE
|
---|
112 | .S ZTRTN="PRINT1^PXDELENC",ZTDESC="MISSING VISIT REPORT"
|
---|
113 | .S ZTSAVE("PX*")=""
|
---|
114 | .D ^%ZTLOAD K IO("Q")
|
---|
115 | PRINT1 ;
|
---|
116 | U IO
|
---|
117 | D HDR
|
---|
118 | F S PXPAT=$O(^XTMP("PXDELENC","PXENC",PXPAT)) Q:PXPAT=""!(PXEND) D
|
---|
119 | .F S PXSDATE=$O(^XTMP("PXDELENC","PXENC",PXPAT,PXSDATE)) Q:PXSDATE=""!(PXEND) D
|
---|
120 | ..F S PXENC=$O(^XTMP("PXDELENC","PXENC",PXPAT,PXSDATE,PXENC)) Q:PXENC=""!(PXEND) D
|
---|
121 | ...S PXPRIX=""
|
---|
122 | ...S PXSDTE=PXSDATE
|
---|
123 | ...S Y=PXSDTE D DD^%DT S PXSDTE=Y
|
---|
124 | ...S PXPATNM=$P($G(^DPT(PXPAT,0)),"^",1)
|
---|
125 | ...S PXNUMNM=PXPAT_" - "_PXPATNM
|
---|
126 | ...S PXSEC=$G(^XTMP("PXDELENC","PXENC",PXPAT,PXSDATE,PXENC))
|
---|
127 | ...I '$D(^SCE(PXENC)),$G(PXSEC)'="" S PXPRIX="*",PXWARN=1
|
---|
128 | ...W !,?2,$E(PXNUMNM,1,32),?35,PXSDTE,?55,PXENC,?65,$G(PXSEC)_PXPRIX
|
---|
129 | ...D HDR:$Y+3>IOSL Q:PXEND
|
---|
130 | I PXWARN D
|
---|
131 | .W !!,?15,"* Secondary Encounter exists without Primary!"
|
---|
132 | .W !,?15,"Please note: Secondary Encounters can only be corrected"
|
---|
133 | .W !,?15,"by the FIX ALL option as the FIX INDIVIDUAL option requires"
|
---|
134 | .W !,?15,"the Primary Encounter to exist."
|
---|
135 | D:'PXEND WAIT
|
---|
136 | W @IOF
|
---|
137 | D ^%ZISC
|
---|
138 | Q
|
---|
139 | HDR ;
|
---|
140 | N PXSDT,PXEDT
|
---|
141 | S PXSDT=$P($G(^XTMP("PXDELENC","PXENC",0)),"^",1)
|
---|
142 | S PXEDT=$P($G(^XTMP("PXDELENC","PXENC",0)),"^",2)
|
---|
143 | S Y=PXSDT D DD^%DT S PXSDT=Y
|
---|
144 | S Y=PXEDT D DD^%DT S PXEDT=Y
|
---|
145 | I PXPAGE>0,$E(IOST,1,2)="C-" S PXEND=$$EOP() Q:PXEND
|
---|
146 | S PXPAGE=PXPAGE+1
|
---|
147 | W:PXPAGE'=1 @IOF
|
---|
148 | W !!,"Missing Visit Report for Date Range of ",$G(PXSDT)_" - "_$G(PXEDT),!!
|
---|
149 | W !,?2,"Patient IEN - Name",?35,"Appt Date",?55,"Prim Enc",?65,"2nd Enc"
|
---|
150 | W !,?2,"==================",?35,"=========",?55,"========",?65,"======="
|
---|
151 | Q
|
---|
152 | EOP() ; End of page check
|
---|
153 | N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
154 | I $E(IOST,1,2)'="C-" Q 0 ;NOT TERMINAL
|
---|
155 | S DIR(0)="E"
|
---|
156 | D ^DIR
|
---|
157 | Q 'Y
|
---|
158 | PXMAIL ;Send mail message when build complete.
|
---|
159 | N XMAIL,XMSUB,XMDUZ,XMTEXT,PXTEXT,Y,XMY,XMMG,XMZ
|
---|
160 | S Y=$G(PXSTART) D DD^%DT S PXSTART=Y
|
---|
161 | S Y=$G(PXEND) D DD^%DT S PXEND=Y
|
---|
162 | S Y=$G(PXSDT) D DD^%DT S PXSDT=Y
|
---|
163 | S Y=$G(PXEDT) D DD^%DT S PXEDT=Y
|
---|
164 | S ZTQUEUED=1
|
---|
165 | S PXTEXT(1)="PCE DELETE ENCOUNTER W/O VISIT is ready to report & fix."
|
---|
166 | S PXTEXT(2)="Build (PXDELENC) for range of "_$G(PXSDT)_"-"_$G(PXEDT)_" has completed"
|
---|
167 | S PXTEXT(3)="Start time: "_$G(PXSTART)_" End time: "_$G(PXEND)
|
---|
168 | S XMSUB="PCE Delete Encounters W/O Visit...Build Completed.."
|
---|
169 | S XMTEXT="PXTEXT(",XMDUZ=.5,XMY(DUZ)=""
|
---|
170 | D ^XMD
|
---|
171 | S ^XTMP("PXDELENC","PXENC","PXMAIL")=$G(XMZ)_"^"_DUZ_"^"_$G(XMMG)
|
---|
172 | K XMSUB,XMTEXT,XMY
|
---|
173 | Q
|
---|
174 | WAIT ;
|
---|
175 | Q:IO'=$G(IO("HOME"))
|
---|
176 | N DIR,X,Y,DIRUT,DUOUT,DTOUT,DIROUT
|
---|
177 | W ! S DIR(0)="E" S DIR("A")="Enter RETURN to continue" D ^DIR W !
|
---|
178 | Q
|
---|
179 | COUNT() ;
|
---|
180 | N PXCOUNT,PXPAT,PXSDATE,PXENC
|
---|
181 | S PXCOUNT=0,PXPAT="",PXSDATE="",PXENC=""
|
---|
182 | F S PXPAT=$O(^XTMP("PXDELENC","PXENC",PXPAT)) Q:PXPAT="" D
|
---|
183 | .F S PXSDATE=$O(^XTMP("PXDELENC","PXENC",PXPAT,PXSDATE)) Q:PXSDATE="" D
|
---|
184 | ..F S PXENC=$O(^XTMP("PXDELENC","PXENC",PXPAT,PXSDATE,PXENC)) Q:PXENC="" D
|
---|
185 | ...S PXCOUNT=PXCOUNT+1
|
---|
186 | Q PXCOUNT
|
---|
187 | ;
|
---|