1 | MAGCRPT ;WOIFO/EdM ; Report on inconsistencies ; [ 11/01/2001 11:27 ]
|
---|
2 | ;;3.0;IMAGING;;Mar 01, 2002
|
---|
3 | ;; +---------------------------------------------------------------+
|
---|
4 | ;; | Property of the US Government. |
|
---|
5 | ;; | No permission to copy or redistribute this software is given. |
|
---|
6 | ;; | Use of unreleased versions of this software requires the user |
|
---|
7 | ;; | to execute a written test agreement with the VistA Imaging |
|
---|
8 | ;; | Development Office of the Department of Veterans Affairs, |
|
---|
9 | ;; | telephone (301) 734-0100. |
|
---|
10 | ;; | |
|
---|
11 | ;; | The Food and Drug Administration classifies this software as |
|
---|
12 | ;; | a medical device. As such, it may not be changed in any way. |
|
---|
13 | ;; | Modifications to this software may result in an adulterated |
|
---|
14 | ;; | medical device under 21CFR820, the use of which is considered |
|
---|
15 | ;; | to be a violation of US Federal Statutes. |
|
---|
16 | ;; +---------------------------------------------------------------+
|
---|
17 | ;;
|
---|
18 | Q
|
---|
19 | ;
|
---|
20 | RPT(TYPE) ; This entry is called from the VistA Menu Option handler
|
---|
21 | ; The value of TYPE is equal to either
|
---|
22 | ; "QA" -- report for Quality Assurance (option MAG_IC_RPT_QA)
|
---|
23 | ; "CO" -- report for Central Office (option MAG_IC_RPT_CO)
|
---|
24 | ;
|
---|
25 | N OK,POP,X,Y,STOP,TODAY,STATUS,NUMBER,ERRTYPE,I,II,VA,VADM
|
---|
26 | S NUMBER=$O(^XTMP("MAGCHK",""))
|
---|
27 | I +NUMBER,$P(^XTMP("MAGCHK",NUMBER,0),"^",1)'?.N1".".N S NUMBER=0
|
---|
28 | ; Previous scans had the 1st piece as the scan status instead of the purge date for XTMP
|
---|
29 | S OUT=0
|
---|
30 | I +NUMBER D
|
---|
31 | . S STATUS=$P($G(^XTMP("MAGCHK",NUMBER,0)),"^",4)
|
---|
32 | . D NOW^%DTC S TODAY=%
|
---|
33 | . S START=$P($G(^XTMP("MAGCHK",NUMBER,0)),"^",5)
|
---|
34 | . S STOP=$P($G(^XTMP("MAGCHK",NUMBER,0)),"^",6)
|
---|
35 | I +NUMBER I STATUS'="COMPLETE" D
|
---|
36 | . S Y=$P(^XTMP("MAGCHK",NUMBER,0),"^",5) X ^DD("DD")
|
---|
37 | . N DIR
|
---|
38 | . S OK=1
|
---|
39 | . W !!,"Scanning appears to be active. It was started on: "_Y
|
---|
40 | . S DIR(0)="Y",DIR("B")="Y"
|
---|
41 | . S DIR("A")="Do you want to start it again?"
|
---|
42 | . D ^DIR S:'Y OK=0
|
---|
43 | . I 'OK W !,"Note: Report will be partial and not the complete report."
|
---|
44 | . I OK S NUMBER=0
|
---|
45 | . I Y["^" S OUT=1
|
---|
46 | . Q
|
---|
47 | I +OUT Q
|
---|
48 | ;check to see if scan is over 2 weeks old
|
---|
49 | I +NUMBER I STATUS="COMPLETE" S X1=TODAY,X2=STOP D ^%DTC I X>14 D
|
---|
50 | . S DAYS=+X
|
---|
51 | . N DIR
|
---|
52 | . S OK=1
|
---|
53 | . S DIR(0)="Y",DIR("B")="Y"
|
---|
54 | . S DIR("A",1)="The database scanner has not run in "_+X_" days"
|
---|
55 | . S DIR("A")="Do you want to start a new scan? "
|
---|
56 | . D ^DIR S:'Y OK=0
|
---|
57 | . I 'OK W !,"Note: You will get an old report."
|
---|
58 | . I OK S NUMBER=0
|
---|
59 | . I Y["^" S OUT=1
|
---|
60 | . Q
|
---|
61 | I +OUT Q
|
---|
62 | S OK=0 F D Q:POP>0 Q:OK
|
---|
63 | . D ^%ZIS Q:POP>0
|
---|
64 | . I IOM<132 W !!,"Report is formatted for 132 columns",!,"Try again" Q
|
---|
65 | . S OK=1
|
---|
66 | . I $E(IOST,1,1)'="P" D Q:'OK
|
---|
67 | . . N DIR
|
---|
68 | . . S DIR(0)="Y"
|
---|
69 | . . S DIR("A")="This is not a printer. Is this OK",DIR("B")="YES"
|
---|
70 | . . D ^DIR S:'Y OK=0
|
---|
71 | . . Q
|
---|
72 | . I $D(IO("Q")) D Q
|
---|
73 | . . S ZTRTN="WORK^MAGICRPT"
|
---|
74 | . . S ZTIO=ION_";132"
|
---|
75 | . . S ZTDESC="Imaging Integrity Check Report"
|
---|
76 | . . S ZTSAVE("TYPE")=TYPE
|
---|
77 | . . D ^%ZTLOAD,HOME^%ZIS
|
---|
78 | . . I '$D(ZTSK) S OK=0 W !!,$C(7),"Request canceled.",! Q
|
---|
79 | . . W !!,"Request queued." S OK=-1
|
---|
80 | . . Q
|
---|
81 | . Q
|
---|
82 | Q:OK<1 Q:POP>0
|
---|
83 | W !!,"Report being produced on ",IOST,!!
|
---|
84 | U IO D WORK D ^%ZISC,HOME^%ZIS
|
---|
85 | Q
|
---|
86 | ;
|
---|
87 | WORK N D0,ERR,H1,H2,I,LIN,N,PAG,PT,SQI,X
|
---|
88 | K ^TMP("MAGMAIL",$J)
|
---|
89 | S ^TMP("MAGMAIL",$J,1,0)="Image^DFN-1^Name-1^SS4-1^SS4-2^DFN-2^DFN-2^Package^D0/D1^Message"
|
---|
90 | D:'NUMBER RPT^MAGGSQI(.SQI,1E11) S NUMBER=$O(^XTMP("MAGCHK",""))
|
---|
91 | S H1=$P(^XTMP("MAGCHK",NUMBER,0),"^",5) S X=H1 D H^%DTC S H1=%H_","_%T
|
---|
92 | S H2=$P(^XTMP("MAGCHK",NUMBER,0),"^",6) S X=H2 D H^%DTC S H2=%H_","_%T
|
---|
93 | S PAG=0
|
---|
94 | S PT(3.9)="^XMB(3.9,PD0|MailMan||2|^XMB(3.9,PD0,2005,"
|
---|
95 | S PT(63)="^LR(PD0,GF,PD1|Aut (M)|AY|1|^LR(PD0,GF,PD1,2005,"
|
---|
96 | S PT(63.02)="^LR(PD0,GF,PD1|El-Micr|EM|1|^LR(PD0,GF,PD1,2005,"
|
---|
97 | S PT(63.08)="^LR(PD0,GF,PD1|SrgPath|SP|1|^LR(PD0,GF,PD1,2005,"
|
---|
98 | S PT(63.09)="^LR(PD0,GF,PD1|Cytol|CY|1|^LR(PD0,GF,PD1,2005,"
|
---|
99 | S PT(63.2)="^LR(PD0,GF,PD1|Aut (G)|AU|1|^LR(PD0,GF,PD1,2005,"
|
---|
100 | S PT(74)="^RARPT(PD0|Rad||2|^RARPT(PD0,2005,"
|
---|
101 | S PT(130)="^SRF(PD0|Surgery||1|^SRF(PD0,2005,"
|
---|
102 | S PT(691)="^MCAR(691,PD0|Echo||2|^MCAR(691,PD0,2005,"
|
---|
103 | S PT(691.1)="^MCAR(691.1,PD0|Cath||2|^MCAR(691.1,PD0,2005,"
|
---|
104 | S PT(691.5)="^MCAR(691.5,PD0|ECG||2|^MCAR(691.5,PD0,2005,"
|
---|
105 | S PT(694)="^MCAR(694,PD0|Hema||2|^MCAR(694,PD0,2005,"
|
---|
106 | S PT(699)="^MCAR(699,PD0|Endo||2|^MCAR(699,PD0,2005,"
|
---|
107 | S PT(699.5)="^MCAR(699.5,PD0|Med||2|^MCAR(699.5,PD0,2005,"
|
---|
108 | ;S PT(8925)="^TIU(8925,PD0|TIU||2|^TIU(8925.91,""ADI"",PD0,"
|
---|
109 | S PT(8925)="^TIU(8925,PD0|TIU||2|^TIU(8925.91,""ADI"",PD0,"
|
---|
110 | S ERR="" F S ERR=$O(^XTMP("MAGCHK",NUMBER,"B",ERR)) Q:ERR="" D
|
---|
111 | . I TYPE="CO" S X=1 D Q:X
|
---|
112 | . . S:ERR="Patient pointer mismatch between Image Group and Image" X=0
|
---|
113 | . . S:ERR="Image and associated report have different patient pointers" X=0
|
---|
114 | . . S:ERR="Associated report does not point back to Image" X=0
|
---|
115 | . . Q
|
---|
116 | . S ERRTYPE(ERR)=0 I ERR="Images only point to Patient." K ERRTYPE(ERR) Q
|
---|
117 | . D HDR(ERR)
|
---|
118 | . S N=0
|
---|
119 | . S D0="" F S D0=$O(^XTMP("MAGCHK",NUMBER,"B",ERR,D0)) Q:D0="" D
|
---|
120 | . . N ASITE,DFN,IDFN,IPN,ISS4,PD0,PD1,PDFN,PF,PK,PPN,PSS4,X0,X2
|
---|
121 | . . S N=N+1
|
---|
122 | . . S ASITE=$P($G(^MAG(2005,D0,100)),"^",3)
|
---|
123 | . . S X0=$G(^MAG(2005,D0,0))
|
---|
124 | . . S X2=$G(^MAG(2005,D0,2))
|
---|
125 | . . S IDFN=$P(X0,"^",7) S:'IDFN IDFN="-?-"
|
---|
126 | . . S PF=$P(X2,"^",6),PD0=$P(X2,"^",7),PD1=$P(X2,"^",10)
|
---|
127 | . . S X=$G(PT(+PF),"|Unknown")
|
---|
128 | . . S PK=$P(X,"|",2)
|
---|
129 | . . ;S DFN=IDFN D DEM^VADPT S IPN=VADM(1),ISS4=$E(IPN,1)_$G(VA("BID"))
|
---|
130 | . . S XX=+$$PTLKP(IDFN,.IPN,.ISS4)
|
---|
131 | . . S (PPN,PDFN,PSS4)=""
|
---|
132 | . . D:ERR="Image and associated report have different patient pointers"
|
---|
133 | . . . N GF,GP,GR,GR0,GT,P0,T
|
---|
134 | . . . Q:PK="Unknown"
|
---|
135 | . . . S GR=$P(PT(PF),"|",1),GR0=GR_",0)"
|
---|
136 | . . . S GP=$P(PT(PF),"|",4)
|
---|
137 | . . . S P0=$G(@GR0,"^not defined"),PDFN=$P(P0,"^",GP)
|
---|
138 | . . . I PF\1=63 S PDFN=PD0
|
---|
139 | . . . I 'PDFN,IPN=PDFN S PDFN=IDFN
|
---|
140 | . . . Q:IDFN=PDFN
|
---|
141 | . . . S XX=+$$PTLKP(PDFN,.PPN,.PSS4)
|
---|
142 | . . . ;S DFN=PDFN D DEM^VADPT S PPN=VADM(1),PSS4=$E(PPN,1)_$G(VA("BID"))
|
---|
143 | . . . Q
|
---|
144 | . . D:ERR="Patient pointer mismatch between Image Group and Image"
|
---|
145 | . . . N G0,P0
|
---|
146 | . . . S P0=$P(X0,"^",10)
|
---|
147 | . . . S X0=$G(^MAG(2005,D0,0))
|
---|
148 | . . . S X2=$G(^MAG(2005,D0,2))
|
---|
149 | . . . S PDFN=$P(X0,"^",7) D:IDFN=PDFN
|
---|
150 | . . . . S G0=0 F S G0=$O(^MAG(2005,P0,1,G0)) Q:'G0 D Q:'G0
|
---|
151 | . . . . . S X0=$G(^MAG(2005,+$P($G(^MAG(2005,P0,1,G0,0)),"^",1),0))
|
---|
152 | . . . . . S PDFN=$P(X0,"^",7) S:PDFN'=IDFN G0=0
|
---|
153 | . . . . . Q
|
---|
154 | . . . . Q
|
---|
155 | . . . Q:PDFN=IDFN
|
---|
156 | . . . S XX=+$$PTLKP(PDFN,.PPN,.PSS4)
|
---|
157 | . . . ;S DFN=PDFN D DEM^VADPT S PPN=VADM(1),PSS4=$E(PPN,1)_$G(VA("BID"))
|
---|
158 | . . . Q
|
---|
159 | . . S LIN=LIN+1 D:LIN>IOSL HDR(ERR)
|
---|
160 | . . S X=PD0 S:PD1 X=X_"/"_PD1
|
---|
161 | . . I TYPE="CO",PK'="Rad" Q
|
---|
162 | . . Q:ERR="Images only point to Patient."
|
---|
163 | . . S ERRTYPE(ERR)=$G(ERRTYPE(ERR))+1
|
---|
164 | . . W !,$J(D0,7)," ",$$L(IPN,31)," ",$$L(PPN,31)," "
|
---|
165 | . . W $$L(ISS4,5)," ",$$L(PSS4,5)," "
|
---|
166 | . . W $J(IDFN,8)," ",$J(PDFN,8)," ",$$L(PK,8)," ",$J(X,5)," ",$J(ASITE,5)
|
---|
167 | . . S I=$O(^TMP("MAGMAIL",$J," "),-1)+1
|
---|
168 | . . S ^TMP("MAGMAIL",$J,I,0)=D0_"^"_IPN_"^"_PPN_"^"_ISS4_"^"_PSS4_"^"_IDFN_"^"_PDFN_"^"_PK_"^"_X_"^"_ERR_"^"_ASITE
|
---|
169 | . . Q
|
---|
170 | . Q
|
---|
171 | ;
|
---|
172 | D PN
|
---|
173 | W !,"S u m m a r y"
|
---|
174 | ;S X=$G(SQI(0)) W !!,+X," ",$P(X,"^",2),!!
|
---|
175 | S X=$P($G(^XTMP("MAGCHK",NUMBER,0)),"^",8) W !!,X," entries scanned."
|
---|
176 | S II=$O(^TMP("MAGMAIL",$J," "),-1)+1
|
---|
177 | S ^TMP("MAGMAIL",$J,II,0)=+X_" entries scanned."
|
---|
178 | S I="" F S I=$O(ERRTYPE(I)) Q:I="" D
|
---|
179 | . W !,$J($G(ERRTYPE(I)),7)," occurrence" W:+$G(ERRTYPE(I))'=1 "s" W " of ",I
|
---|
180 | . S II=$O(^TMP("MAGMAIL",$J," "),-1)+1
|
---|
181 | . S ^TMP("MAGMAIL",$J,II,0)=$G(ERRTYPE(I))_" occurrence"_$S($G(ERRTYPE(I))'=1:"s",1:"")_" of "_I
|
---|
182 | . Q
|
---|
183 | I +H1 D
|
---|
184 | . S X=$P(H2,",",1)-$P(H1,",",1)*86400+$P(H2,",",2)-$P(H1,",",2)
|
---|
185 | . W !!,"Database scan took "
|
---|
186 | . S HRS=X\3600 I +HRS S HRS=+HRS_$S(HRS>1:" hours ",1:" hour ") W HRS
|
---|
187 | . S MIN=X\60#60 I +MIN S MIN=+MIN_$S(MIN>1:" minutes ",1:" minute ") W MIN
|
---|
188 | . S SEC=X#60 I +SEC S SEC=+SEC_$S(SEC>1:" seconds ",1:" second ") W SEC
|
---|
189 | . S II=$O(^TMP("MAGMAIL",$J," "),-1)+1
|
---|
190 | . S ^TMP("MAGMAIL",$J,II,0)="Database scan took "_HRS_" "_MIN_" "_SEC
|
---|
191 | . Q
|
---|
192 | N XMY,XMTEXT,XMSUB
|
---|
193 | S XMY("G.MAG SERVER")=""
|
---|
194 | S XMTEXT="^TMP(""MAGMAIL"","_$J_","
|
---|
195 | S XMSUB="Imaging Integrity Check ("_TYPE_")"
|
---|
196 | ;
|
---|
197 | I TYPE="CO" I $P(^XTMP("MAGCHK",NUMBER,0),"^",7)="" D
|
---|
198 | . D ^XMD
|
---|
199 | . S $P(^XTMP("MAGCHK",NUMBER,0),"^",7)="MAILED"
|
---|
200 | . Q
|
---|
201 | ;
|
---|
202 | I TYPE="QA" I $P(^XTMP("MAGCHK",NUMBER,0),"^",9)="" D
|
---|
203 | . D ^XMD
|
---|
204 | . S $P(^XTMP("MAGCHK",NUMBER,0),"^",9)="MAILED"
|
---|
205 | . Q
|
---|
206 | K ^TMP("MAGMAIL",$J)
|
---|
207 | Q
|
---|
208 | ;
|
---|
209 | L(X,N) Q $E(X_$J("",N),1,N)
|
---|
210 | ;
|
---|
211 | PTLKP(DFN,IPN,ISS4) ;
|
---|
212 | S IPN="Unknown"
|
---|
213 | S ISS4="Unk"
|
---|
214 | I DFN="" Q "0^NO_DFN"
|
---|
215 | D DEM^VADPT
|
---|
216 | S:'VAERR IPN=VADM(1),ISS4=$E(IPN,1)_$G(VA("BID"))
|
---|
217 | I 'VAERR Q "1^SUCCESS"
|
---|
218 | Q "0^FAILED"
|
---|
219 | ;
|
---|
220 | PN N X
|
---|
221 | S PAG=PAG+1,X="Page "_PAG,LIN=6
|
---|
222 | W:PAG'=1 @IOF
|
---|
223 | W DT#100," "
|
---|
224 | W $P("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"," ",DT\100#100)
|
---|
225 | W " ",DT\10000+1700,?(IOM-$L(X)),X
|
---|
226 | Q
|
---|
227 | ;
|
---|
228 | HDR(ERR) ;
|
---|
229 | D PN
|
---|
230 | S HEADING=$S(TYPE="CO":"**** Report on Inconsistencies Caused by Global Moves ****",1:"**** Report of All Image-Related Inconsistencies Detected ****")
|
---|
231 | W !?(IOM-$L(HEADING)\2),HEADING
|
---|
232 | W !?(IOM-$L(ERR)\2),ERR,!
|
---|
233 | W !,"Image Patient Name Patient Name SSN4 SSN4 DFN DFN Package"
|
---|
234 | W !,"Number (First one found) (Other one found) (fst) (oth) (fst) (oth) Package IEN SITE"
|
---|
235 | W !,"======= =============================== =============================== ===== ===== ======== ======== ======= ======= ====="
|
---|
236 | W !
|
---|
237 | Q
|
---|
238 | ;
|
---|
239 | QA ; Report for QA
|
---|
240 | D RPT("QA")
|
---|
241 | Q
|
---|
242 | ;
|
---|
243 | CO ; Report for CO
|
---|
244 | D RPT("CO")
|
---|
245 | Q
|
---|
246 | ;
|
---|
247 | TEST S IOSL=55,IOM=132,IO=$P,TYPE="QA" D WORK
|
---|
248 | Q
|
---|
249 | ;
|
---|
250 | DOCU ;
|
---|
251 | ;^XTMP("MAGCHK",$J,0)=PURGE DATE^CREATE DATE^DESCRIPTION^STATUS^SCAN START^SCAN STOP^C0 MAILED^#SCANNED^QA MAILED
|
---|
252 | Q
|
---|