1 | IVMADDRP ;ALB/PHH,EG - IVM ADDRESS UPLOAD LOG REPORT ; 03/29/2006
|
---|
2 | ;;2.0;INCOME VERIFICATION MATCH;**108,106**; 21-OCT-94
|
---|
3 | ;
|
---|
4 | ; This routine list veterans who have had more than one address
|
---|
5 | ; change in the past 90 days.
|
---|
6 | ;
|
---|
7 | N SDATE,EDATE,HDR,MSG,%ZIS,ZTRTN,ZTDESC,ZTSAVE,PAGE,ZTSK,ZTREQ,POP,X
|
---|
8 | N BDT,U,DFN,SO
|
---|
9 | S U="^",DFN="",SO=""
|
---|
10 | S DOS=$$DOS
|
---|
11 | I DOS="^" Q
|
---|
12 | S X=$$ENDDATE
|
---|
13 | I X="" Q
|
---|
14 | S BDT=$P(X,"^",1)
|
---|
15 | I DOS="D" D I DFN="" Q
|
---|
16 | . S DFN=$$GETPAT
|
---|
17 | . Q
|
---|
18 | I DOS="S" S SO=$$SORTORD I SO="^" Q
|
---|
19 | S (SDATE,EDATE,HDR)=""
|
---|
20 | S EDATE=$$FMADD^XLFDT(BDT) I EDATE="" Q
|
---|
21 | S SDATE=$$FMADD^XLFDT(EDATE,-90)
|
---|
22 | ;
|
---|
23 | ; Get report device. Queue report if requested
|
---|
24 | S MSG(1)=""
|
---|
25 | S MSG(2)="This report may take a long time to generate. It is recommended that the report"
|
---|
26 | S MSG(3)="be queued to print."
|
---|
27 | S MSG(4)=""
|
---|
28 | D BMES^XPDUTL(.MSG)
|
---|
29 | K IOP,%ZIS
|
---|
30 | S %ZIS="MQ"
|
---|
31 | D ^%ZIS I POP W !!,"Report Cancelled!" Q
|
---|
32 | I $D(IO("Q")) D Q
|
---|
33 | . S ZTRTN="START^IVMADDRP"
|
---|
34 | . S ZTDESC="IVM Address Change Log Report"
|
---|
35 | . S (ZTSAVE("PAGE"),ZTSAVE("SDATE"),ZTSAVE("EDATE"))=""
|
---|
36 | . S (ZTSAVE("DOS"),ZTSAVE("DFN"),ZTSAVE("SO"))=""
|
---|
37 | . D ^%ZTLOAD
|
---|
38 | . W !!,"Report "_$S($D(ZTSK):"Queued!",1:"Cancelled!")
|
---|
39 | . D HOME^%ZIS
|
---|
40 | . Q
|
---|
41 | D START,^%ZISC
|
---|
42 | Q
|
---|
43 | DOS() ;detail or summary
|
---|
44 | N DIR,Y,X
|
---|
45 | S DIR(0)="SA^D:Detail;S:Summary"
|
---|
46 | S DIR("A")="Select Type of Report to Run: "
|
---|
47 | D ^DIR
|
---|
48 | Q Y
|
---|
49 | ;
|
---|
50 | GETPAT() ;get a patient
|
---|
51 | N DIC,Y,X,U
|
---|
52 | S DIC="^DPT(",DIC(0)="AEQZM" D ^DIC
|
---|
53 | Q $S($P(Y,U,1)>0:$P(Y,U,1),1:"")
|
---|
54 | ;
|
---|
55 | ENDDATE() ;get an end date, default to TODAY
|
---|
56 | N DIR,Y,X
|
---|
57 | S DIR(0)="D^::EX",DIR("?")="^D HELP^%DTC",DIR("B")=$$FMTE^XLFDT(DT)
|
---|
58 | S DIR("A")="Enter End Date of 90 Day Window: "
|
---|
59 | D ^DIR
|
---|
60 | Q $S('Y:"",1:Y)
|
---|
61 | ;
|
---|
62 | SORTORD() ;get sort order for summary
|
---|
63 | N DIR,Y,X
|
---|
64 | S DIR(0)="SA^S:Social Security Number;N:Name then SSN"
|
---|
65 | S DIR("A")="What Order Do You Want to See Output: "
|
---|
66 | D ^DIR
|
---|
67 | Q Y
|
---|
68 | ;
|
---|
69 | START ; Generate Report
|
---|
70 | N CRT,X
|
---|
71 | K ^XTMP("IVMADDRP",$J)
|
---|
72 | S CRT=$S($E(IOST,1,2)="C-":1,1:0)
|
---|
73 | S X=$$BUILD(SDATE,EDATE,DOS,DFN,SO)
|
---|
74 | U IO W ! D REPORT W ! U 0
|
---|
75 | K ^XTMP("IVMADDRP",$J)
|
---|
76 | I $G(ZTSK) S ZTREQ="@"
|
---|
77 | Q
|
---|
78 | BUILD(SDATE,EDATE,DOS,DFN,SO) ; Build the Report
|
---|
79 | ;use C index if you are only looking for one DFN
|
---|
80 | I $L(DFN) D C Q 1
|
---|
81 | N CHDTTM
|
---|
82 | S CHDTTM=SDATE
|
---|
83 | F S CHDTTM=$O(^IVM(301.7,"B",CHDTTM)) Q:CHDTTM=""!(CHDTTM>(EDATE+1)) D ADDIEN
|
---|
84 | Q 1
|
---|
85 | ADDIEN ;
|
---|
86 | N ADDIEN
|
---|
87 | S ADDIEN=0
|
---|
88 | F S ADDIEN=$O(^IVM(301.7,"B",CHDTTM,ADDIEN)) Q:ADDIEN="" D GETINF
|
---|
89 | Q
|
---|
90 | C N ADDIEN,CHDTTM
|
---|
91 | S ADDIEN=""
|
---|
92 | F S ADDIEN=$O(^IVM(301.7,"C",DFN,ADDIEN)) Q:ADDIEN="" D
|
---|
93 | . S CHDTTM=$P($G(^IVM(301.7,ADDIEN,0)),"^",1)
|
---|
94 | . I (CHDTTM>SDATE),(CHDTTM<(EDATE+1)) D GETINF
|
---|
95 | . Q
|
---|
96 | Q
|
---|
97 | GETINF ;
|
---|
98 | N NODE0,NODE1,DFN,SSN,NAME,ADDR1,ADDR2,CITY,STATE,ZIP,SORT1,SORT2,U,SOURCE,SIEN,SITE
|
---|
99 | S U="^",SITE=""
|
---|
100 | S NODE0=$G(^IVM(301.7,ADDIEN,0))
|
---|
101 | S NODE1=$G(^IVM(301.7,ADDIEN,1))
|
---|
102 | S DFN=$P(NODE0,"^",2)
|
---|
103 | Q:DFN=""
|
---|
104 | Q:'$D(^DPT(DFN))
|
---|
105 | S SSN=$P($G(^DPT(DFN,0)),"^",9)
|
---|
106 | Q:SSN=""
|
---|
107 | S NAME=$P($G(^DPT(DFN,0)),"^",1)
|
---|
108 | S SOURCE=$P(NODE1,"^",4),SIEN=$P(NODE1,"^",3)
|
---|
109 | I SIEN S SITE=$P($G(^DIC(4,SIEN,0)),"^",1)
|
---|
110 | S ADDR1=$P(NODE1,"^",6)
|
---|
111 | S ADDR2=$P(NODE1,"^",7)
|
---|
112 | S CITY=$P(NODE1,"^",8)
|
---|
113 | S STATE=$P(NODE1,"^",10)
|
---|
114 | I STATE'="",$D(^DIC(5,STATE,0)) S STATE=$P(^DIC(5,STATE,0),"^",2)
|
---|
115 | S ZIP=$P(NODE1,"^",11)
|
---|
116 | I DOS="D" D Q
|
---|
117 | . S ^XTMP("IVMADDRP",$J,SSN,CHDTTM)=ADDIEN_"^"_DFN_"^"_NAME_"^"_ADDR1_"^"_ADDR2_"^"_CITY_"^"_STATE_"^"_ZIP_"^"_SOURCE_"^"_SITE
|
---|
118 | . S ^XTMP("IVMADDRP",$J,SSN)=$G(^XTMP("IVMADDRP",$J,SSN))+1
|
---|
119 | . Q
|
---|
120 | I DOS="S" D
|
---|
121 | . S SORT1=$S(SO="S":SSN,1:NAME) I NAME="" S SORT1="UNKNOWN"
|
---|
122 | . S SORT2=$S(SO="S":0,1:SSN)
|
---|
123 | . S ^XTMP("IVMADDRP",$J,SORT1,SORT2,"INF")=NAME_U_SSN
|
---|
124 | . S ^XTMP("IVMADDRP",$J,SORT1,SORT2,"DATE",CHDTTM)=""
|
---|
125 | . S ^XTMP("IVMADDRP",$J,SORT1,SORT2)=$G(^XTMP("IVMADDRP",$J,SORT1,SORT2))+1
|
---|
126 | . Q
|
---|
127 | Q
|
---|
128 | REPORT ; Display the Report
|
---|
129 | D HEADER
|
---|
130 | I '$D(^XTMP("IVMADDRP",$J)) D Q
|
---|
131 | . N X S X="****** NOTHING TO REPORT ******" W !?80-$L(X)\2,X,!
|
---|
132 | . Q
|
---|
133 | I DOS="S" D SUMMARY Q
|
---|
134 | N SSN
|
---|
135 | ;
|
---|
136 | S SSN=""
|
---|
137 | F S SSN=$O(^XTMP("IVMADDRP",$J,SSN)) Q:SSN="" D DETAIL
|
---|
138 | Q
|
---|
139 | DETAIL N NAME,CHDTTM,ADDR,ADDR2,CITY,STATE,ZIP,CSZ
|
---|
140 | N ADDR1,ADDR2,X,U,QUIT,CNT,SITE,SOURCE
|
---|
141 | S CHDTTM="",U="^",QUIT=0,CNT=0
|
---|
142 | I $G(^XTMP("IVMADDRP",$J,SSN))'>1 Q
|
---|
143 | F S CHDTTM=$O(^XTMP("IVMADDRP",$J,SSN,CHDTTM)) Q:CHDTTM=""!(QUIT) D
|
---|
144 | . S X=$G(^XTMP("IVMADDRP",$J,SSN,CHDTTM))
|
---|
145 | . S NAME=$P(X,U,3)
|
---|
146 | . S ADDR1=$P(X,U,4)
|
---|
147 | . S ADDR2=$P(X,U,5)
|
---|
148 | . S CITY=$P(X,U,6)
|
---|
149 | . S STATE=$P(X,U,7)
|
---|
150 | . S ZIP=$P(X,U,8)
|
---|
151 | . S SOURCE=$P(X,U,9)
|
---|
152 | . S SITE=$P(X,U,10)
|
---|
153 | . I ($Y+6)>IOSL D HEADER I QUIT Q
|
---|
154 | . W !,$$FSSN(SSN),?12,$E(NAME,1,20)
|
---|
155 | . W ?35,$$FMTE^XLFDT($P(CHDTTM,".",1))
|
---|
156 | . S CSZ=$$CSZ(CITY,STATE,ZIP)
|
---|
157 | . W ?49,$E(ADDR1,1,30),!
|
---|
158 | . I $L(ADDR2) W ?49,$E(ADDR2,1,30),!
|
---|
159 | . I $L(CSZ) W ?49,$E(CSZ,1,30),!
|
---|
160 | . I $L(SOURCE) W ?49,"SOURCE: ",SOURCE,!
|
---|
161 | . I $L(SITE) W ?49,"SITE: ",SITE
|
---|
162 | . S CNT=CNT+1
|
---|
163 | . Q
|
---|
164 | I 'QUIT D TOTAL(CNT)
|
---|
165 | Q
|
---|
166 | SUMMARY N SORT1,QUIT,CNT
|
---|
167 | S SORT1="",QUIT=0,CNT=0
|
---|
168 | F S SORT1=$O(^XTMP("IVMADDRP",$J,SORT1)) Q:SORT1=""!(QUIT) D SORT2
|
---|
169 | I 'QUIT D TOTAL(CNT)
|
---|
170 | Q
|
---|
171 | SORT2 N NAME,SSN
|
---|
172 | S SORT2=""
|
---|
173 | F S SORT2=$O(^XTMP("IVMADDRP",$J,SORT1,SORT2)) Q:SORT2=""!(QUIT) D
|
---|
174 | . I $G(^XTMP("IVMADDRP",$J,SORT1,SORT2))'>1 Q
|
---|
175 | . D SUMPR S CNT=CNT+1
|
---|
176 | . Q
|
---|
177 | Q
|
---|
178 | SUMPR N X,U
|
---|
179 | S U="^"
|
---|
180 | S X=$G(^XTMP("IVMADDRP",$J,SORT1,SORT2,"INF"))
|
---|
181 | S NAME=$P(X,U,1),SSN=$P(X,U,2)
|
---|
182 | I ($Y+2)>IOSL D HEADER I QUIT Q
|
---|
183 | W !,$$FSSN(SSN),?12,$E(NAME,1,20)
|
---|
184 | W ?35,$$FMTE^XLFDT($O(^XTMP("IVMADDRP",$J,SORT1,SORT2,"DATE",""),-1))
|
---|
185 | S X=$G(^XTMP("IVMADDRP",$J,SORT1,SORT2))
|
---|
186 | W ?73,$J($FN(X,","),5)
|
---|
187 | Q
|
---|
188 | TOTAL(CNT) ;
|
---|
189 | I ($Y+2)>IOSL D HEADER
|
---|
190 | W !!,"Total records found meeting criteria: ",CNT,!
|
---|
191 | Q
|
---|
192 | CSZ(CITY,STATE,ZIP) ;format city, state and zip into one line
|
---|
193 | N X
|
---|
194 | S X=""
|
---|
195 | I $L(CITY) S X=CITY
|
---|
196 | I $L(STATE) D
|
---|
197 | . I $L(X) S X=X_", "_STATE Q
|
---|
198 | . S X=STATE
|
---|
199 | . Q
|
---|
200 | I $L(ZIP) D
|
---|
201 | . I $L(X) S X=X_" "_ZIP Q
|
---|
202 | . S X=ZIP
|
---|
203 | . Q
|
---|
204 | Q X
|
---|
205 | FSSN(SSN) ; Format the SSN
|
---|
206 | N FMTSSN
|
---|
207 | I SSN="NO SSN" Q SSN
|
---|
208 | I $L(SSN)=9 S FMTSSN=SSN
|
---|
209 | I $L(SSN)>9 S FMTSSN=$E(SSN,1,10) ; Account for pseudo-SSN
|
---|
210 | I $L(SSN)<9 D
|
---|
211 | . S FMTSSN=""
|
---|
212 | . F FMTSSN=$L(SSN):1:9 S FMTSSN=FMTSSN_"0"
|
---|
213 | . S FMTSSN=FMTSSN_SSN
|
---|
214 | . Q
|
---|
215 | Q FMTSSN
|
---|
216 | HEADER ; Print the header
|
---|
217 | N IDX,PGHDR
|
---|
218 | S QUIT=0
|
---|
219 | I $G(CRT),($G(PAGE)>0) I $$PAUSE(0) S QUIT=1 Q
|
---|
220 | S PAGE=$G(PAGE,0),PAGE=PAGE+1,PGHDR="Page: "_$J(PAGE,3)
|
---|
221 | W #
|
---|
222 | I $G(CRT) W $C(27,91,72,27,91,74) ; Additional $C to clear screen in Cache'
|
---|
223 | S IDX="",IDX=$O(HDR(IDX))
|
---|
224 | W "IVM ADDRESS CHANGE LOG REPORT",?71,PGHDR
|
---|
225 | W !,$$FMTE^XLFDT(SDATE)_" THRU "_$$FMTE^XLFDT(EDATE)
|
---|
226 | I DOS="D" D
|
---|
227 | . W !!,"SSN",?12,"NAME",?35,"CHANGE DATE",?49,"PRIOR ADDRESS"
|
---|
228 | . W !,"---",?12,"----",?35,"-----------",?49,"--------------"
|
---|
229 | . Q
|
---|
230 | I DOS="S" D
|
---|
231 | . W !!,"SSN",?12,"NAME",?35,"LAST UPDATED",?69,"# ENTRIES"
|
---|
232 | . W !,"---",?12,"----",?35,"------------",?69,"---------"
|
---|
233 | . Q
|
---|
234 | Q
|
---|
235 | PAUSE(RESP) ; Prompt user for next page or quit
|
---|
236 | N DIR,DIRUT,DUOUT,DTOUT,U,X,Y
|
---|
237 | W !
|
---|
238 | S DIR(0)="E"
|
---|
239 | D ^DIR
|
---|
240 | I 'Y S RESP=1
|
---|
241 | Q RESP
|
---|