1 | DGREGARP ;ALB/DW-Address audit reports; 6/2/2003
|
---|
2 | ;;5.3;Registration;**522,560**;Aug 13, 1993
|
---|
3 | EN(TYPE) ;Entry point
|
---|
4 | N DGRNG,XMY,XMSUB,XMDUZ,XMTEXT,DGSRT,DGTOTAL
|
---|
5 | K ^TMP($J,"DG ADD CHNG RPRT")
|
---|
6 | K ^TMP($J,"DG ADDRESS BEFORE")
|
---|
7 | I ($G(TYPE)'="ALL")&($G(TYPE)'="RX") Q
|
---|
8 | ;If mail group has no member or remote-member
|
---|
9 | I '$$MEMBER() D Q
|
---|
10 | . I '$D(ZTQUEUED) W !!,"DG DAILY ADDRESS CHANGE does not have a member. Report not sent." D EOP^DGREGAED
|
---|
11 | ;Entry from TaskMan
|
---|
12 | I $D(ZTQUEUED) D Q
|
---|
13 | . D PRINT
|
---|
14 | ;User runs the option
|
---|
15 | I '$D(ZTQUEUED) D
|
---|
16 | . W !!,"The report will be sent to mail group DG DAILY ADDRESS CHANGE."
|
---|
17 | . D QUE
|
---|
18 | . W !! D EOP^DGREGAED
|
---|
19 | Q
|
---|
20 | MEMBER() ;Return 0 if mail group has no local or remote member
|
---|
21 | N RESULT,DGIEN,DGRMT
|
---|
22 | S RESULT=1
|
---|
23 | S DGIEN=$$FIND1^DIC(3.8,"","X","DG DAILY ADDRESS CHANGE")
|
---|
24 | D LIST^DIC(3.812,","_DGIEN_",",.01,"P","","","","","","","DGRMT")
|
---|
25 | I ($P($G(DGRMT("DILIST",0)),U)'>0),('$$GOTLOCAL^XMXAPIG("DG DAILY ADDRESS CHANGE")) S RESULT=0
|
---|
26 | Q RESULT
|
---|
27 | QUE ;Que the task if user invokes option
|
---|
28 | N ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK,ZUSR,POP,X,ERR,IOP
|
---|
29 | W !
|
---|
30 | S ZTIO=""
|
---|
31 | S ZTSAVE("TYPE")=""
|
---|
32 | S ZTRTN="PRINT^DGREGARP"
|
---|
33 | S ZTDESC="DG "_$G(TYPE)_" ADDRESS CHANGE REPORT"
|
---|
34 | D ^%ZTLOAD
|
---|
35 | D ^%ZISC,HOME^%ZIS
|
---|
36 | W !,$S($D(ZTSK):"REQUEST QUEUED AS TASK#"_ZTSK,1:"REQUEST CANCELLED!")
|
---|
37 | Q
|
---|
38 | PRESORT ;Sort for the report
|
---|
39 | N DGRNG
|
---|
40 | D RANGE(.DGRNG)
|
---|
41 | I DGRNG=-1 Q
|
---|
42 | D SORT(.DGRNG,TYPE)
|
---|
43 | Q
|
---|
44 | PRINT ;Create the email message.
|
---|
45 | N DGLINE,DFN,SSN,IEN
|
---|
46 | S (DGLINE,DFN,SSN,IEN)=0
|
---|
47 | D CHKPAR
|
---|
48 | D HEADER
|
---|
49 | D PRESORT
|
---|
50 | D REPORT
|
---|
51 | D TOTAL
|
---|
52 | D EMAIL(TYPE)
|
---|
53 | Q
|
---|
54 | ;
|
---|
55 | REPORT ;Create the address change report body
|
---|
56 | N DGNAME,DGSSN,DGDFN
|
---|
57 | N DGR,DGUSER,DGDATE,DGSRC,DG12
|
---|
58 | N DGOADD1,DGOADD2,DGOADD3,DGOCITY,DGOST,DGOZIP,DGOCNTY
|
---|
59 | N DGNADD1,DGNADD2,DGNADD3,DGNCITY,DGNST,DGNZIP,DGNCNTY,DGOPHN,DGHPHN
|
---|
60 | N DGPRSCRP
|
---|
61 | S (DGNAME,DGSSN,DGDFN)=""
|
---|
62 | F S DGNAME=$O(^TMP($J,"DG ADDRESS BEFORE",DGNAME)) Q:DGNAME="" D
|
---|
63 | . S DGSSN=""
|
---|
64 | . F S DGSSN=$O(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN)) Q:DGSSN="" D
|
---|
65 | .. S DGDFN=""
|
---|
66 | .. F S DGDFN=$O(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN)) Q:DGDFN="" D
|
---|
67 | ... D GEN(DGNAME,DGSSN,DGDFN)
|
---|
68 | ... D OLD(DGNAME,DGSSN,DGDFN)
|
---|
69 | ... D NEW(DGNAME,DGSSN,DGDFN)
|
---|
70 | ... D PRSCPT(DGDFN)
|
---|
71 | Q
|
---|
72 | GEN(DGNAME,DGSSN,DGDFN) ;General information for each patient
|
---|
73 | K DGR
|
---|
74 | D GETS^DIQ(2,DGDFN_",",".122;.118;.119;.12","E","DGR")
|
---|
75 | S DGUSER=$G(DGR(2,DGDFN_",",.122,"E"))
|
---|
76 | S DGDATE=$G(DGR(2,DGDFN_",",.118,"E"))
|
---|
77 | S DGSRC=$G(DGR(2,DGDFN_",",.119,"E"))
|
---|
78 | S DG12=$G(DGR(2,DGDFN_",",.12,"E"))
|
---|
79 | D
|
---|
80 | . D LNPLUS
|
---|
81 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=""
|
---|
82 | . D LNPLUS
|
---|
83 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" PATIENT: "_DGNAME_" SSN: "_$E(DGSSN,6,10)
|
---|
84 | . D LNPLUS
|
---|
85 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" USER: "_DGUSER_" DATE: "_DGDATE
|
---|
86 | . D LNPLUS
|
---|
87 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" SOURCE: "_DGSRC_" "_DG12
|
---|
88 | Q
|
---|
89 | OLD(DGNAME,DGSSN,DGDFN) ;Get address as of 24 hours ago, assuming audits are on for all
|
---|
90 | S DGOADD1=$G(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,.111))
|
---|
91 | S DGOADD2=$G(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,.112))
|
---|
92 | S DGOADD3=$G(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,.113))
|
---|
93 | S DGOCITY=$G(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,.114))
|
---|
94 | S DGOST=$G(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,.115))
|
---|
95 | S DGOZIP=$G(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,.1112))
|
---|
96 | S DGOCNTY=$G(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,.117))
|
---|
97 | D
|
---|
98 | . D LNPLUS
|
---|
99 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" BEFORE: "_DGOADD1
|
---|
100 | . I $G(DGOADD2)'="" D
|
---|
101 | .. D LNPLUS
|
---|
102 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_DGOADD2
|
---|
103 | . I $G(DGOADD3)'="" D
|
---|
104 | .. D LNPLUS
|
---|
105 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_DGOADD3
|
---|
106 | . I (DGOCITY'="")!(DGOST'="") D
|
---|
107 | .. D LNPLUS
|
---|
108 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_DGOCITY_","_DGOST_" "_DGOZIP
|
---|
109 | . I (DGOCNTY'="") D
|
---|
110 | .. D LNPLUS
|
---|
111 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_"COUNTY CODE: "_DGOCNTY
|
---|
112 | Q
|
---|
113 | NEW(DGNAME,DGSSN,DGDFN) ;Get current address
|
---|
114 | K DGCURR
|
---|
115 | D GETS^DIQ(2,DGDFN_",",".111;.112;.113;.114;.115;.116;.117;.119;.12;.1112;.131;.132","E","DGCURR")
|
---|
116 | S DGNADD1=$G(DGCURR(2,DGDFN_",",.111,"E"))
|
---|
117 | S DGNADD2=$G(DGCURR(2,DGDFN_",",.112,"E"))
|
---|
118 | S DGNADD3=$G(DGCURR(2,DGDFN_",",.113,"E"))
|
---|
119 | S DGNCITY=$G(DGCURR(2,DGDFN_",",.114,"E"))
|
---|
120 | S DGNST=$G(DGCURR(2,DGDFN_",",.115,"E"))
|
---|
121 | S DGNZIP=$G(DGCURR(2,DGDFN_",",.1112,"E"))
|
---|
122 | S DGNCNTY=$G(DGCURR(2,DGDFN_",",.117,"E"))
|
---|
123 | S DGOPHN=$G(DGCURR(2,DGDFN_",",.132,"E"))
|
---|
124 | S DGHPHN=$G(DGCURR(2,DGDFN_",",.131,"E"))
|
---|
125 | D
|
---|
126 | . D LNPLUS
|
---|
127 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" AFTER: "_DGNADD1
|
---|
128 | . I $G(DGNADD2)'="" D
|
---|
129 | .. D LNPLUS
|
---|
130 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_DGNADD2
|
---|
131 | . I $G(DGNADD3)'="" D
|
---|
132 | .. D LNPLUS
|
---|
133 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_DGNADD3
|
---|
134 | . I (DGNCITY'="")!(DGNST'="") D
|
---|
135 | .. D LNPLUS
|
---|
136 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_DGNCITY_","_DGNST_" "_DGNZIP
|
---|
137 | . I (DGNCNTY'="") D
|
---|
138 | .. D LNPLUS
|
---|
139 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_"COUNTY CODE: "_DGNCNTY
|
---|
140 | . D LNPLUS
|
---|
141 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_"PHONE(H): "_DGHPHN
|
---|
142 | . D LNPLUS
|
---|
143 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" "_"PHONE(O): "_DGOPHN
|
---|
144 | Q
|
---|
145 | PRSCPT(DGDFN) ;Display if the patient has active prescription
|
---|
146 | S DGPRSCRP=$$EN^PSSRXACT(DGDFN)
|
---|
147 | I $G(DGPRSCRP)=1 D
|
---|
148 | . D LNPLUS
|
---|
149 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)="Patient has active pharmacy prescription(s)"
|
---|
150 | Q
|
---|
151 | EXIT S:$D(ZTQUEUED) ZTREQ="@"
|
---|
152 | K ^TMP($J,"DG ADD CHNG RPRT")
|
---|
153 | K ^TMP($J,"DG ADDRESS BEFORE")
|
---|
154 | Q
|
---|
155 | CHKPAR ;Check if audit is on for the fields
|
---|
156 | N DGR,DGN,DGFLD
|
---|
157 | F DGN=.111,.112,.113,.114,.115,.116,.117,.1112 D
|
---|
158 | . K DGR
|
---|
159 | . D FIELD^DID(2,DGN,"","LABEL;AUDIT","DGR")
|
---|
160 | . I $D(DGR("DIERR")) Q
|
---|
161 | . I ($G(DGR("AUDIT"))'["YES")&($G(DGR("AUDIT"))'["EDITED OR DELETED") D
|
---|
162 | .. D LNPLUS^DGREGARP
|
---|
163 | .. S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)="Audit is off for the "_$G(DGR("LABEL"))_" field"
|
---|
164 | Q
|
---|
165 | RANGE(RESULT) ;Get the range of the reports
|
---|
166 | K RESULT
|
---|
167 | N DGBEGIN,DGEND,DGNOW,DGAGO
|
---|
168 | N X,X1,X2
|
---|
169 | D NOW^%DTC
|
---|
170 | S DGNOW=%
|
---|
171 | S X1=%,X2="-1" D C^%DTC
|
---|
172 | S DGAGO=X
|
---|
173 | S DGNOW=$O(^DIA(2,"C",DGNOW),-1)
|
---|
174 | S DGAGO=$O(^DIA(2,"C",DGAGO))
|
---|
175 | I ($G(DGNOW)="")!($G(DGAGO)="") S RESULT=-1 Q
|
---|
176 | S (DGBEGIN,DGEND)=""
|
---|
177 | S DGBEGIN=$O(^DIA(2,"C",DGNOW,DGBEGIN),-1)
|
---|
178 | S DGEND=$O(^DIA(2,"C",DGAGO,DGEND))
|
---|
179 | I $G(DGBEGIN)=""!$G(DGEND)="" S RESULT=-1 Q
|
---|
180 | S DGBEGIN=DGBEGIN+1
|
---|
181 | S RESULT=DGBEGIN_U_DGEND
|
---|
182 | Q
|
---|
183 | SORT(RANGE,TYPE) ;Build the temp global to display
|
---|
184 | N DGBEGIN,DGEND,DGIEN,DGDFN,DGFLD
|
---|
185 | S DGIEN=$P($G(RANGE),U)
|
---|
186 | S DGEND=$P($G(RANGE),U,2)
|
---|
187 | F S DGIEN=$O(^DIA(2,DGIEN),-1) Q:DGIEN<DGEND D:$$SCRN(TYPE,DGIEN)
|
---|
188 | . D BUILD(TYPE,DGIEN)
|
---|
189 | Q
|
---|
190 | SCRN(TYPE,DGIEN) ;Screen Audit file to find address changes.
|
---|
191 | N DGFLD
|
---|
192 | S DGFLD=$P($G(^DIA(2,DGIEN,0)),U,3)
|
---|
193 | I (DGFLD=.114)!(DGFLD=.116)!(DGFLD=.117)!(DGFLD=.1112)!(DGFLD=.115) Q 1
|
---|
194 | I (DGFLD=.111)!(DGFLD=.112)!(DGFLD=.113) Q 1
|
---|
195 | Q 0
|
---|
196 | BUILD(TYPE,DGIEN) ;Build temp global
|
---|
197 | N DGDFN,DGFLD,DGNAME,DGSSN,DGCURR,DGN
|
---|
198 | S DGDFN=$P($G(^DIA(2,DGIEN,0)),U)
|
---|
199 | I $G(TYPE)="RX" Q:'$$EN^PSSRXACT(DGDFN)
|
---|
200 | D GETS^DIQ(2,DGDFN_",",".01;.09","E","DGCURR")
|
---|
201 | S DGNAME=$G(DGCURR(2,DGDFN_",",.01,"E"))
|
---|
202 | S DGSSN=$G(DGCURR(2,DGDFN_",",.09,"E"))
|
---|
203 | I ($G(DGNAME)="")!($G(DGSSN)="")!($G(DGDFN)="") Q
|
---|
204 | S DGFLD=$P($G(^DIA(2,DGIEN,0)),U,3)
|
---|
205 | I '$D(^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN)) D
|
---|
206 | . ;Get current address
|
---|
207 | . K DGCURR,DGN
|
---|
208 | . D GETS^DIQ(2,DGDFN_",",".111;.112;.113;.114;.115;.116;.117;.1112","E","DGCURR")
|
---|
209 | . F DGN=.111,.112,.113,.114,.115,.116,.117,.1112 D
|
---|
210 | .. S ^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,DGN)=$G(DGCURR(2,DGDFN_",",DGN,"E"))
|
---|
211 | . S DGTOTAL=$G(DGTOTAL)+1
|
---|
212 | S ^TMP($J,"DG ADDRESS BEFORE",DGNAME,DGSSN,DGDFN,DGFLD)=$P($G(^DIA(2,DGIEN,2)),U)
|
---|
213 | Q
|
---|
214 | LNPLUS ;Increase line number for the email text
|
---|
215 | S DGLINE=$G(DGLINE)+1
|
---|
216 | Q
|
---|
217 | HEADER ;Report header
|
---|
218 | N RDT,Y
|
---|
219 | I $G(TYPE)="ALL" D
|
---|
220 | . D LNPLUS
|
---|
221 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=""
|
---|
222 | . D LNPLUS
|
---|
223 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" ALL ADDRESS CHANGE REPORT"
|
---|
224 | I $G(TYPE)="RX" D
|
---|
225 | . D LNPLUS
|
---|
226 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=""
|
---|
227 | . D LNPLUS
|
---|
228 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" ALL ADDRESS CHANGE FOR PATIENTS WITH ACTIVE PRESCRIPTIONS REPORT"
|
---|
229 | D NOW^%DTC S Y=% X ^DD("DD")
|
---|
230 | S RDT=$P(Y,"@",1)_"@"_$P($P(Y,"@",2),":",1,2)
|
---|
231 | D
|
---|
232 | . D LNPLUS
|
---|
233 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" The BEFORE address shown may not be accurate."
|
---|
234 | . D LNPLUS
|
---|
235 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" It is only valid as of 24 hours prior to running the report."
|
---|
236 | . D LNPLUS
|
---|
237 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" Changes within the last 24 hours will not be shown."
|
---|
238 | . D LNPLUS^DGREGARP
|
---|
239 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=" Date/Time Report Run: "_RDT
|
---|
240 | . D LNPLUS^DGREGARP
|
---|
241 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)="-----------------------------------------------------------------------------"
|
---|
242 | Q
|
---|
243 | TOTAL ;Get the total of the patients
|
---|
244 | N DGCNT
|
---|
245 | ;S DGCNT=$G(^TMP($J,"DG ADDRESS BEFORE","TOTAL"))
|
---|
246 | S DGCNT=$G(DGTOTAL)
|
---|
247 | I $G(DGCNT)>0 D
|
---|
248 | . D LNPLUS
|
---|
249 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)=""
|
---|
250 | . D LNPLUS
|
---|
251 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)="TOTAL RECORD(S): "_DGCNT
|
---|
252 | Q
|
---|
253 | EMAIL(TYPE) ;Email the report to mailgroup.
|
---|
254 | ;If called within a task, protect variables
|
---|
255 | I $D(ZTQUEUED) N %,DIFROM
|
---|
256 | N RDT
|
---|
257 | D NOW^%DTC S Y=% X ^DD("DD")
|
---|
258 | S RDT=$P(Y,"@",1)_"@"_$P($P(Y,"@",2),":",1,2)
|
---|
259 | S XMSUB="DG "_$G(TYPE)_" ADDRESS CHANGE ("_RDT_")"
|
---|
260 | S XMY("G.DG DAILY ADDRESS CHANGE")=""
|
---|
261 | I $G(DGTOTAL)'>0 D
|
---|
262 | . D LNPLUS
|
---|
263 | . S ^TMP($J,"DG ADD CHNG RPRT",DGLINE)="*** NO RECORDS TO PRINT ***"
|
---|
264 | S XMTEXT="^TMP($J,""DG ADD CHNG RPRT"","
|
---|
265 | D ^XMD
|
---|
266 | Q
|
---|