1 | MAGGTIG ;WOIFO/GEK - MAGGT Image Get. Callbacks to Get Image lists ; [ 11/08/2001 17:18 ]
|
---|
2 | ;;3.0;IMAGING;**8,48**;Jan 11, 2005
|
---|
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 | GRPCOUNT(MAGRY,MAGIEN) ;
|
---|
20 | S MAGRY=+$P($G(^MAG(2005,MAGIEN,1,0)),U,4)
|
---|
21 | Q
|
---|
22 | IMAGES(MAGRY,MAGDFN) ;RPC [MAGG PAT IMAGES]
|
---|
23 | ; Call to return a list of images for a patient.
|
---|
24 | ; We are returning all images for a patient, Groups are returned
|
---|
25 | ; as one Image.
|
---|
26 | ; The Images are returned in Rev Chronological Order, latest image
|
---|
27 | ; first, oldest image last.
|
---|
28 | ; User can reorder at the workstation level.
|
---|
29 | K MAGRY
|
---|
30 | N Y,RDT,PRX,CT,IEN,GBLRET
|
---|
31 | N $ETRAP,$ESTACK S $ETRAP="D ERRA^MAGGTERR"
|
---|
32 | S MAGDFN=+MAGDFN
|
---|
33 | ; if no Images for the patient, then quit.
|
---|
34 | I '$D(^MAG(2005,"APDTPX",MAGDFN)) S MAGRY(0)="1^0" Q
|
---|
35 | ; the "APDTPX" cross reference is :
|
---|
36 | ; "APDTPX",DFN,Rev Date,Procedure,MAGIEN )
|
---|
37 | ;
|
---|
38 | ; we'll use @ notation, this'll work if an Array or a Global Array is begin returned
|
---|
39 | S GBLRET=0
|
---|
40 | S MAGRY="MAGRY"
|
---|
41 | S CT=0,RDT=""
|
---|
42 | F S RDT=$O(^MAG(2005,"APDTPX",MAGDFN,RDT)) Q:'RDT D
|
---|
43 | . S PRX="" F S PRX=$O(^MAG(2005,"APDTPX",MAGDFN,RDT,PRX)) Q:PRX="" D
|
---|
44 | . . S IEN=""
|
---|
45 | . . F S IEN=$O(^MAG(2005,"APDTPX",MAGDFN,RDT,PRX,IEN)) Q:'IEN D
|
---|
46 | . . . Q:$P($G(^MAG(2005,IEN,0)),"^",10) ; CHILD OF GROUP
|
---|
47 | . . . S CT=CT+1
|
---|
48 | . . . I (CT>100),'GBLRET D ARY2GLB
|
---|
49 | . . . S MAGXX=IEN D INFO^MAGGTII
|
---|
50 | . . . S @MAGRY@(CT)="B2^"_MAGFILE
|
---|
51 | S @MAGRY@(0)="1^"_CT
|
---|
52 | Q
|
---|
53 | PHOTOS(MAGRY,MAGDFN) ;RPC [MAGG PAT PHOTOS]
|
---|
54 | ; Call to return list of all Photo ID's on file for a patient.
|
---|
55 | ; We are returning all Photo ID images for a patient.
|
---|
56 | ; The Images are returned in Rev Chronological Order, latest image
|
---|
57 | ; first, oldest image last.
|
---|
58 | K MAGRY
|
---|
59 | N Y,RDT,PRX,CT,IEN,IENS,GBLRET,MAGXX
|
---|
60 | N $ETRAP,$ESTACK S $ETRAP="D ERRA^MAGGTERR"
|
---|
61 | S MAGDFN=+MAGDFN
|
---|
62 | ; if no Photo ID Images for the patient, then quit.
|
---|
63 | I '$D(^MAG(2005,"APPXDT",MAGDFN,"PHOTO ID")) S MAGRY(0)="1^0" Q
|
---|
64 | ; the "APPXDT" cross reference is :
|
---|
65 | ; "APPXDT",DFN,Procedure,Rev Date,MAGIEN )
|
---|
66 | ;
|
---|
67 | ; we'll use @ notation, this'll work if an Array or a Global Array is begin returned
|
---|
68 | S GBLRET=0
|
---|
69 | S MAGRY="MAGRY"
|
---|
70 | S CT=0
|
---|
71 | S RDT="" F S RDT=$O(^MAG(2005,"APPXDT",MAGDFN,"PHOTO ID",RDT)) Q:RDT="" D
|
---|
72 | . S IEN=""
|
---|
73 | . F S IEN=$O(^MAG(2005,"APPXDT",MAGDFN,"PHOTO ID",RDT,IEN)) Q:'IEN D
|
---|
74 | . . ;Q:$P($G(^MAG(2005,IEN,0)),"^",10) ; CHILD OF GROUP
|
---|
75 | . . S IENS(IEN)=""
|
---|
76 | . . Q
|
---|
77 | . Q
|
---|
78 | S IEN="" F S IEN=$O(IENS(IEN),-1) Q:'IEN D
|
---|
79 | . S CT=CT+1
|
---|
80 | . S MAGXX=IEN D INFO^MAGGTII
|
---|
81 | . S @MAGRY@(CT)="B2^"_MAGFILE
|
---|
82 | . Q
|
---|
83 | S @MAGRY@(0)="1^"_CT
|
---|
84 | Q
|
---|
85 | EACHIMG(MAGRY,MAGDFN,MAX) ;RPC [MAGG PAT EACH IMAGE]
|
---|
86 | ; Call Returns list of recent Patient images.
|
---|
87 | ; MAX = maximum number of images to return
|
---|
88 | ; MAGDFN = patient DFN
|
---|
89 | ; We are returning all images for a patient, and listing each image.
|
---|
90 | ; This is called from Capture Window where groups aren't listed.
|
---|
91 | ; The Images are returned in Rev Chronological Order, latest image
|
---|
92 | ; first, oldest image last.
|
---|
93 | ; User can decide how many of the most recent they want to list.
|
---|
94 | K MAGRY
|
---|
95 | N Y,RDT,PRX,CT,IEN,GBLRET
|
---|
96 | S MAX=$S($G(MAX)>0:MAX,1:50) ; 50 IS DEFAULT
|
---|
97 | N $ETRAP,$ESTACK S $ETRAP="D ERRG^MAGGTERR"
|
---|
98 | S MAGDFN=+MAGDFN
|
---|
99 | ; if no Images for the patient, then quit.
|
---|
100 | I '$D(^MAG(2005,"AC",MAGDFN)) S MAGRY(0)="1^0" Q
|
---|
101 | ; the "AC" cross reference is :
|
---|
102 | ; "AC",DFN,IEN )
|
---|
103 | ;
|
---|
104 | ; we'll use @ notation, this'll work if an Array or a Global Array is begin returned
|
---|
105 | S GBLRET=0
|
---|
106 | S MAGRY="MAGRY"
|
---|
107 | S CT=0,IEN=""
|
---|
108 | F S IEN=$O(^MAG(2005,"AC",MAGDFN,IEN),-1) Q:'IEN D Q:(CT>MAX)
|
---|
109 | . Q:$P($G(^MAG(2005,IEN,0)),U,6)=11 ; NOT LISTING GROUP ENTRIES
|
---|
110 | . S CT=CT+1
|
---|
111 | . I (CT>100),'GBLRET D ARY2GLB
|
---|
112 | . S @MAGRY@(CT)=$$CAPINFO(IEN)
|
---|
113 | S @MAGRY@(0)="1^"_CT
|
---|
114 | Q
|
---|
115 | CAPINFO(IEN) ; RETURN A STRING OF INFORMATION ABOUT THE IMAGE
|
---|
116 | ; This is for Capture App
|
---|
117 | N RETY,N2
|
---|
118 | S MAGXX=IEN D INFO^MAGGTII
|
---|
119 | S RETY=$P(MAGFILE,U,1,7)_U
|
---|
120 | S N2=$G(^MAG(2005,IEN,2))
|
---|
121 | S RETY=RETY_$$FMTE^XLFDT($P(N2,U,1),"5P")_U
|
---|
122 | S X=$P(RETY,U,5),X=$$FMTE^XLFDT(X,"5"),X=$P(X,"@")
|
---|
123 | S $P(RETY,U,5)=X
|
---|
124 | Q RETY
|
---|
125 | Q
|
---|
126 | ARY2GLB ; Image count is getting big, switch from array to Global return type
|
---|
127 | S GBLRET=1
|
---|
128 | K ^TMP("MAGGTIG",$J)
|
---|
129 | S MAGRY=""
|
---|
130 | M ^TMP("MAGGTIG",$J)=MAGRY
|
---|
131 | K MAGRY
|
---|
132 | S X=$$RTRNFMT^XWBLIB("GLOBAL ARRAY",1)
|
---|
133 | S MAGRY=$NA(^TMP("MAGGTIG",$J))
|
---|
134 | Q
|
---|
135 | GROUP(MAGRY,MAGIEN,NOCHK) ;RPC [MAGG GROUP IMAGES]
|
---|
136 | ; CalL to Return image list of a Group.
|
---|
137 | ; MAGIEN = the entry in MAG(2005 we assume it is a group.
|
---|
138 | ; NOCHK = flag - Do (or) Not Do QI Check.
|
---|
139 | N Y,MAGDFN,I,MAGCHILD,MAGCT,MAGTMPAR,MSGX,MAGQI,MAGY
|
---|
140 | N MAGNOCHK
|
---|
141 | ;
|
---|
142 | ;Test BigGroup S BKG=+$G(BKG)
|
---|
143 | ;Test BigGroup K ^TMP("MAGBGRP")
|
---|
144 | S MAGIEN=+MAGIEN,MSGX=""
|
---|
145 | S NOCHK=+$G(NOCHK)
|
---|
146 | I '$D(^MAG(2005,MAGIEN,0)) S MAGRY(0)="0^ERROR: Image entry "_MAGIEN_" Doesn't exist" Q
|
---|
147 | I $O(^MAG(2005,MAGIEN,1,0))="" S MAGRY(0)="0^ERROR: There are NO Images defined for this Group" Q
|
---|
148 | ;
|
---|
149 | ; we'll use @ notation, this'll work if an Array or a Global Array is being returned
|
---|
150 | S MAGRY="MAGRY"
|
---|
151 | ;
|
---|
152 | ; if we are switching to a Global Array because too many images,
|
---|
153 | ; then set MAGRY and clean it up first
|
---|
154 | ;I +$P($G(^MAG(2005,MAGIEN,1,0)),U,4)>100
|
---|
155 | D
|
---|
156 | . S X=$$RTRNFMT^XWBLIB("GLOBAL ARRAY",1)
|
---|
157 | . S MAGRY=$NA(^TMP("MAGGTIG",$J))
|
---|
158 | . K @MAGRY
|
---|
159 | N $ETRAP,$ESTACK S $ETRAP="D ERRA^MAGGTERR"
|
---|
160 | ;
|
---|
161 | ;Test BigGroup I $D(^TMP("MAGBGRP",MAGIEN)) D Q
|
---|
162 | ;Test BigGroup . M ^TMP("MAGGTIG",$J)=^TMP("MAGBGRP",MAGIEN)
|
---|
163 | ;Test BigGroup . Q
|
---|
164 | ; integrity check, stop if group entry is questionable
|
---|
165 | ; NOCHK is sent from Image Delete window (so user with DELETE and SYSTEM keys)
|
---|
166 | ; can see group abstracts before the group is deleted.
|
---|
167 | I 'NOCHK D CHK^MAGGSQI(.MAGQI,MAGIEN) I 'MAGQI(0) D Q
|
---|
168 | . S @MAGRY@(0)=MAGQI(0)
|
---|
169 | ;
|
---|
170 | S MAGNOCHK=1
|
---|
171 | S I=0,MAGCT=0,MAGDFN=$P(^MAG(2005,MAGIEN,0),"^",7)
|
---|
172 | I $D(^MAG(2005,MAGIEN,1,"ADCM")) D
|
---|
173 | . N INUM,SNUM
|
---|
174 | . S INUM="" ; GEK 4/3/00 changed Q:'INUM to Q:INUM="" below
|
---|
175 | . F S INUM=$O(^MAG(2005,MAGIEN,1,"ADCM",INUM)) Q:INUM="" D
|
---|
176 | . . S SNUM=""
|
---|
177 | . . F S SNUM=$O(^MAG(2005,MAGIEN,1,"ADCM",INUM,SNUM)) Q:SNUM="" D
|
---|
178 | . . . S MAGCHILD=""
|
---|
179 | . . . F S MAGCHILD=$O(^MAG(2005,MAGIEN,1,"ADCM",INUM,SNUM,MAGCHILD)) Q:'MAGCHILD D
|
---|
180 | . . . . S MAGCT=MAGCT+1
|
---|
181 | . . . . I '$D(^MAG(2005,MAGCHILD)) D INVALID(MAGCHILD,.MSGX) S @MAGRY@(MAGCT)=MSGX Q
|
---|
182 | . . . . ; Added for MAGQI integrity check
|
---|
183 | . . . . K MAGY
|
---|
184 | . . . . D CHKGRPCH^MAGGSQI(.MAGY,MAGIEN,MAGDFN,MAGCHILD) I 'MAGY D INVCH(.MAGY,MAGCHILD) S @MAGRY@(MAGCT)=MAGY Q
|
---|
185 | . . . . S MAGXX=MAGCHILD
|
---|
186 | . . . . S MAGTMPAR(MAGXX)=""
|
---|
187 | . . . . D INFO^MAGGTII
|
---|
188 | . . . . S $P(MAGFILE,U,12,13)=INUM_U_SNUM
|
---|
189 | . . . . S @MAGRY@(MAGCT)="B2^"_MAGFILE
|
---|
190 | . . . . ;Test BigGroup I 'BKG S @MAGRY@(MAGCT)="B2^"_MAGFILE
|
---|
191 | . . . . ;Test BigGroup E S ^TMP("MAGBGRP",MAGIEN,MAGCT)="B2^"_MAGFILE
|
---|
192 | ;GEK 4/8/99 MODIFIED, because now we have groups, that some entries
|
---|
193 | ; have dicom numbers and some don't. So we have to go through the group again.
|
---|
194 | ;Test BigGroup - Need a Pre/Post init, that fixes Groups where some entries have Dicom values, and some
|
---|
195 | ; don't. In such a group, we will make Dicom values for the images that don't have them.
|
---|
196 | ; Testing in Washington - this will take hours.
|
---|
197 | ;
|
---|
198 | S I=0
|
---|
199 | F S I=$O(^MAG(2005,MAGIEN,1,I)) Q:'I D
|
---|
200 | . S MAGCHILD=+^MAG(2005,MAGIEN,1,I,0)
|
---|
201 | . I $D(MAGTMPAR(MAGCHILD)) Q
|
---|
202 | . S MAGCT=MAGCT+1
|
---|
203 | . I '$D(^MAG(2005,MAGCHILD)) D INVALID(MAGCHILD,.MSGX) S @MAGRY@(MAGCT)=MSGX Q
|
---|
204 | . ;Added for MAGQI integrity check
|
---|
205 | . K MAGY
|
---|
206 | . D CHKGRPCH^MAGGSQI(.MAGY,MAGIEN,MAGDFN,MAGCHILD) I 'MAGY D INVCH(.MAGY,MAGCHILD) S @MAGRY@(MAGCT)=MAGY Q
|
---|
207 | . S MAGXX=MAGCHILD
|
---|
208 | . D INFO^MAGGTII
|
---|
209 | . S @MAGRY@(MAGCT)="B2^"_MAGFILE
|
---|
210 | . ;Test BigGroup I 'BKG S @MAGRY@(MAGCT)="B2^"_MAGFILE
|
---|
211 | . ;Test BigGroup E S ^TMP("MAGBGRP",MAGIEN,MAGCT)="B2^"_MAGFILE
|
---|
212 | S @MAGRY@(0)="1^"_MAGCT
|
---|
213 | Q
|
---|
214 | INVALID(MAGX,MAGZ) ;
|
---|
215 | ;
|
---|
216 | I $D(^MAG(2005.1,MAGX,0)) S MAGZ="B2^"_MAGX_"^^^INVALID Reference to Deleted Image^^66^^^^^^^^"
|
---|
217 | E S MAGZ="B2^"_MAGX_"^^^INVALID Image ID (IEN)^^67^^^^^^^^"
|
---|
218 | ;Added with MAGQI integrity check,
|
---|
219 | S MAGTMPAR(MAGX)=""
|
---|
220 | Q
|
---|
221 | INVCH(MSG,CHILD) ;Added for MAGQI integrity check
|
---|
222 | ; MSG is passed by reference, we create a MAGFILE equivalent and pass it back.
|
---|
223 | N EMSG
|
---|
224 | S EMSG=$P(MSG,U,2)
|
---|
225 | K MSG
|
---|
226 | S $P(MSG,U)=CHILD
|
---|
227 | ; remove dependency on c:\program files. with .\bmp\
|
---|
228 | S $P(MSG,U,2,3)="-1~Questionable Data Integrity^.\bmp\imageQA.bmp"
|
---|
229 | S $P(MSG,U,4)=$P($G(^MAG(2005,CHILD,2)),U,4)
|
---|
230 | S $P(MSG,U,6)=$S(($P(MSG,U,6)'=11):"99",1:11)
|
---|
231 | ;this stops Delphi App from changing Abstract BMP to OFFLINE IMAGE
|
---|
232 | S $P(MSG,U,10)="M"
|
---|
233 | ;Send the error message
|
---|
234 | S $P(MSG,U,17)=EMSG
|
---|
235 | S MSG="B2^"_MSG
|
---|
236 | S MAGTMPAR(CHILD)=""
|
---|
237 | Q
|
---|