1 | MAGJMN1 ;WIRMFO/JHC VRad Maint functions ; 29 Jul 2003 4:02 PM
|
---|
2 | ;;3.0;IMAGING;**16,9,22,18,65,76**;Jun 22, 2007;Build 19
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;; +---------------------------------------------------------------+
|
---|
5 | ;; | Property of the US Government. |
|
---|
6 | ;; | No permission to copy or redistribute this software is given. |
|
---|
7 | ;; | Use of unreleased versions of this software requires the user |
|
---|
8 | ;; | to execute a written test agreement with the VistA Imaging |
|
---|
9 | ;; | Development Office of the Department of Veterans Affairs, |
|
---|
10 | ;; | telephone (301) 734-0100. |
|
---|
11 | ;; | |
|
---|
12 | ;; | The Food and Drug Administration classifies this software as |
|
---|
13 | ;; | a medical device. As such, it may not be changed in any way. |
|
---|
14 | ;; | Modifications to this software may result in an adulterated |
|
---|
15 | ;; | medical device under 21CFR820, the use of which is considered |
|
---|
16 | ;; | to be a violation of US Federal Statutes. |
|
---|
17 | ;; +---------------------------------------------------------------+
|
---|
18 | ;;
|
---|
19 | Q
|
---|
20 | ;
|
---|
21 | SVRLIST ;
|
---|
22 | W @IOF,!!?10,"Enter/Edit VistARad Exams List Definition",!!
|
---|
23 | N MAGIEN
|
---|
24 | K DIC S (DIC,DLAYGO)=2006.631,DIC(0)="ALMEQ"
|
---|
25 | D ^DIC I Y=-1 K DIC,DA,DR,DIE,DLAYGO Q
|
---|
26 | S X=$P(@(DIC_+Y_",0)"),U,2)
|
---|
27 | I X>9000 W !!,$C(7),"You may not edit System-Supplied files!" H 3 G SVRLIST
|
---|
28 | S DIE=2006.631,DA=+Y,DR="[MAGJ LIST EDIT]"
|
---|
29 | S MAGIEN=DA
|
---|
30 | D ^DIE I '$D(DA) G SVRLIST
|
---|
31 | D ENSRCH
|
---|
32 | D BLDDEF(MAGIEN)
|
---|
33 | S $P(^MAG(2006.631,MAGIEN,0),U,5)=$$NOW^XLFDT()
|
---|
34 | W !!,"List Definition complete!" R X:2
|
---|
35 | G SVRLIST
|
---|
36 | Q
|
---|
37 | ENSRCH ; Invoke Search for 2006.631 def'n
|
---|
38 | N GREF,GLIN,GO,CT,DIARI,DIC,FNOD,TNOD,NCOND,NODE0
|
---|
39 | ; GREF holds indirect ref to store search logic data:
|
---|
40 | ; @GREF@(3, ff -- conditional elements (fields/logic)
|
---|
41 | ; @GREF@(4, ff -- composite elements (ANDed conditions)
|
---|
42 | ; @GREF@(5, ff -- Human-readable search text
|
---|
43 | ; GLIN holds indirect ref to retrieve search logic data from ^DIBT
|
---|
44 | ; @GLIN@("DC", ff -- conditional elements
|
---|
45 | ; @GLIN@("DL", ff -- composite elements
|
---|
46 | ; @GLIN@("O", ff -- readable text
|
---|
47 | S GREF=$NA(^MAG(2006.631,MAGIEN,"DEF"))
|
---|
48 | S GO=1 I $D(@GREF@(5,1)) D ; show current logic
|
---|
49 | . W ! D DISPSRCH(GREF)
|
---|
50 | . S X=$$YN("Do you want to delete or re-enter the search logic?","NO")
|
---|
51 | . I X'="Y" S GO=0 Q
|
---|
52 | . W !!?7,"Re-entering the search logic requires first deleting the current",!?7,"definition, then entering the new definition from scratch."
|
---|
53 | . S X=$$YN("Are you sure you want to continue?","NO")
|
---|
54 | . I X'="Y" S GO=0 Q
|
---|
55 | I 'GO Q
|
---|
56 | W !!?7,"Now enter search logic for this List. To do this, the program"
|
---|
57 | W !?7,"will prompt you just as if you were going to run a Fileman Search."
|
---|
58 | W !?7,"When prompted STORE RESULTS OF SEARCH IN TEMPLATE:, answer with 'TEMP'"
|
---|
59 | W !?7,"If prompted ... OK TO PURGE? NO// answer 'YES'; don't bother specifying"
|
---|
60 | W !?7,"output print fields, but just RETURN through all the prompts to"
|
---|
61 | W !?7,"complete the process. The search definition will be saved as part"
|
---|
62 | W !?7,"of this List definition; you will test it out by running it from "
|
---|
63 | W !?7,"the workstation. If you need to modify the search logic, you will"
|
---|
64 | W !?7,"have to re-enter it in its entirety."
|
---|
65 | W !!?7,"NOTES: EXAM LOCK INDICATOR will not work for search logic;"
|
---|
66 | W !?14,"REMOTE CACHE INDICATOR only works for Null/Not Null logic."
|
---|
67 | S DIC=2006.634 D EN^DIS ; call Fman Search Logic routine. It will store search logic in ^DIBT
|
---|
68 | ; 2006.634 is intentional--don't change this!
|
---|
69 | I '$G(DIARI) W !!," Search logic NOT updated" D Q
|
---|
70 | . Q:'$D(@GREF@(5,1)) ; if no logic had existed, quit
|
---|
71 | . S X=$$YN("Do you want to DELETE the search logic?","NO")
|
---|
72 | . I X="Y" K @GREF@(3) K ^(4),^(5) W " -- Deleted!"
|
---|
73 | K @GREF@(3) K ^(4),^(5)
|
---|
74 | S GLIN=$NA(^DIBT(DIARI)) ; Copy logic to 2006.631 DEF nodes
|
---|
75 | S FNOD="DC",TNOD=3,CT=0 ; "DC" data--straight copy
|
---|
76 | S T=0 F S T=$O(@GLIN@(FNOD,T)) Q:T="" S X=^(T),CT=CT+1,@GREF@(TNOD,T)=X
|
---|
77 | S @GREF@(TNOD,0)=CT
|
---|
78 | S FNOD="DL",TNOD=4,CT=0 ; "DL" data--copy depends on storage scheme in DIBT:
|
---|
79 | ;Zero node null -- straight copy
|
---|
80 | ; Else 1) either only one condition is defined;
|
---|
81 | ; or, 2) the zero-node condition is ANDed with all defined conditions
|
---|
82 | ; Case 2: Var A -- Pre-pend zero node, then dup zero node
|
---|
83 | ; Var B -- Pre-pend zero node
|
---|
84 | S NCOND=+$G(@GLIN@(FNOD))
|
---|
85 | I $G(@GLIN@(FNOD,0))]"" S NODE0=^(0) D
|
---|
86 | . S T=0 F S T=$O(@GLIN@(FNOD,T)) Q:T="" S X=^(T) I X]"" S CT=CT+1,@GREF@(TNOD,CT)=NODE0_X
|
---|
87 | . I CT'=NCOND S CT=CT+1,@GREF@(TNOD,CT)=NODE0_$S(CT=1:"",1:"^")
|
---|
88 | E D
|
---|
89 | . S T=0 F S T=$O(@GLIN@(FNOD,T)) Q:T="" S X=^(T) I X]"" S CT=CT+1,@GREF@(TNOD,CT)=X
|
---|
90 | S @GREF@(TNOD,0)=CT
|
---|
91 | ; readable text--straight copy
|
---|
92 | S TNOD=5,T=0 F S T=$O(@GLIN@("O",T)) Q:T="" S @GREF@(TNOD,T)=^(T,0)
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | BLDDEF(LSTID) ; build DEF nodes for Column/Sort defs
|
---|
96 | N QX,SS,STR,LSTHDR,T,T0,T8,T6,HASCASE,XT,HASDATE
|
---|
97 | S SS=0,HASCASE=0,HASDATE=0
|
---|
98 | ; columns/hdrs: Order in T array by the Relative Column Order
|
---|
99 | F S SS=$O(^MAG(2006.631,LSTID,1,SS)) D Q:'SS
|
---|
100 | . I 'SS D Q
|
---|
101 | . . I 'HASCASE S X=1 D BLDDEF2(X) ; FORCE CASE#
|
---|
102 | . . I 'HASDATE S X=7 D BLDDEF2(X) ; DATE/TIME
|
---|
103 | . E S X=^MAG(2006.631,LSTID,1,SS,0)
|
---|
104 | . D BLDDEF2(X)
|
---|
105 | ; go thru T to build ordered field sequence for output columns
|
---|
106 | S QX="T",STR="",LSTHDR=""
|
---|
107 | F S QX=$Q(@QX) Q:QX="" S X=@QX D
|
---|
108 | . S STR=STR_$S(STR="":"",1:U)_$P(X,U)
|
---|
109 | . S LSTHDR=LSTHDR_$S(LSTHDR="":"",1:U)_$P(X,U,2)
|
---|
110 | S ^MAG(2006.631,LSTID,"DEF",.5)=LSTHDR,^(1)=STR
|
---|
111 | ; Sort values:
|
---|
112 | S SS=0,STR=""
|
---|
113 | F S SS=$O(^MAG(2006.631,LSTID,2,SS)) Q:'SS S X=^(SS,0) D
|
---|
114 | . S X=+X_$S($P(X,U,2):"-",1:"")
|
---|
115 | . S STR=STR_$S(STR="":"",1:U)_X
|
---|
116 | S ^MAG(2006.631,LSTID,"DEF",2)=STR
|
---|
117 | S $P(^MAG(2006.631,LSTID,"DEF",0),U)=$$NOW^XLFDT()
|
---|
118 | Q
|
---|
119 | ;
|
---|
120 | BLDDEF2(X) ;
|
---|
121 | S X=+X_$S($P(X,U,2):";"_+$P(X,U,2),1:"")
|
---|
122 | I 'HASCASE S HASCASE=(+X=1)
|
---|
123 | I 'HASDATE S HASDATE=(+X=7)
|
---|
124 | S T0=^MAG(2006.63,+X,0),T6=+$P(T0,U,6) S:'T6 T6=99
|
---|
125 | S T8=$P(T0,U,8) I T8]"" S T8="~"_T8
|
---|
126 | S XT=$S($P(T0,U,3)]"":$P(T0,U,3),1:$P(T0,U,2))_T8
|
---|
127 | S $P(XT,"~",3)=+X
|
---|
128 | S T(T6,+X)=X_U_XT
|
---|
129 | Q
|
---|
130 | ;
|
---|
131 | PRE ; init 2006.63 prior to KIDS install
|
---|
132 | N DIK,DA S DIK="^MAG(2006.63,",DA=0 F S DA=$O(@(DIK_DA_")")) Q:'DA D ^DIK
|
---|
133 | Q
|
---|
134 | ;
|
---|
135 | P18 ; Patch 18 inits
|
---|
136 | D BLDALL
|
---|
137 | D POST
|
---|
138 | Q
|
---|
139 | ;
|
---|
140 | BLDALL ; Create "DEF" nodes, Button labels List Def'ns
|
---|
141 | ; Updates all lists after s/w update list defs are installed
|
---|
142 | N SS,LSTDAT,LSTNUM,BUTTON,LSTTYP
|
---|
143 | S SS=0
|
---|
144 | F S SS=$O(^MAG(2006.631,SS)) Q:'SS S LSTDAT=$G(^(SS,0)) I LSTDAT]"" D
|
---|
145 | . S LSTNUM=$P(LSTDAT,U,2),BUTTON=$P(LSTDAT,U,7),LSTTYP=$P(LSTDAT,U,3)
|
---|
146 | . I LSTNUM>9900!$P(LSTDAT,U,6) D BLDDEF(SS) ; build DEF nodes for System Lists & any Enabled lists
|
---|
147 | . I BUTTON="",(LSTTYP]"") D ; Create Button Labels if needed
|
---|
148 | . . S BUTTON=$S(LSTTYP="U":"Unread #",LSTTYP="R":"Recent #",LSTTYP="A":"All Active #",LSTTYP="P":"Pending #",1:"List #")_LSTNUM
|
---|
149 | . . S $P(^MAG(2006.631,SS,0),U,7)=BUTTON
|
---|
150 | Q
|
---|
151 | ;
|
---|
152 | POST ; Install msg
|
---|
153 | D INS^MAGQBUT4(XPDNM,DUZ,$$NOW^XLFDT,XPDA)
|
---|
154 | Q
|
---|
155 | ;
|
---|
156 | YN(MSG,DFLT) ; get Yes/No reply
|
---|
157 | N X I $G(DFLT)="" S DFLT="N"
|
---|
158 | W !
|
---|
159 | S DFLT=$E(DFLT),DFLT=$S(DFLT="N":"NO",1:"YES")
|
---|
160 | YN1 W !,MSG_" "_DFLT_"// "
|
---|
161 | R X:DTIME S:X="" X=DFLT S X=$E(X),X=$TR(X,"ynYN","YNYN")
|
---|
162 | I "YN"'[X W " ??? Enter YES or NO",! G YN1
|
---|
163 | Q X
|
---|
164 | ;
|
---|
165 | LSTINQ ; Inq/Disp list def'n
|
---|
166 | N GREF,MAGIEN
|
---|
167 | W !!?15,"Display VistARad Exams List Definition",!!
|
---|
168 | N MAGIEN
|
---|
169 | S DIC=2006.631,DIC(0)="AMEQ"
|
---|
170 | D ^DIC I Y=-1 K DIC,DA,DR Q
|
---|
171 | K DR S DA=+Y,MAGIEN=DA
|
---|
172 | S GREF=$NA(^MAG(2006.631,MAGIEN,"DEF"))
|
---|
173 | W ! D EN^DIQ
|
---|
174 | R !,"Enter RETURN to display the Search Logic: ",X:DTIME W !
|
---|
175 | D DISPSRCH(GREF)
|
---|
176 | G LSTINQ
|
---|
177 | Q
|
---|
178 | ;
|
---|
179 | DISPSRCH(GREF) ; GREF holds indirect ref for global holding search logic data
|
---|
180 | I $D(@GREF@(5,1)) W !,"List Exams where:",! D
|
---|
181 | . F I=1:1 Q:'$D(@GREF@(5,I)) W !?3,^(I)
|
---|
182 | E W !?3,"NO Search Logic defined!"
|
---|
183 | Q
|
---|
184 | ;
|
---|
185 | VRSIT ;
|
---|
186 | W @IOF,!!?10,"Enter/Edit VistARad Site Parameters",!!
|
---|
187 | S DIC=2006.69,DIC(0)="ALMEQ"
|
---|
188 | I '$D(^MAG(DIC,1)) S DLAYGO=DIC
|
---|
189 | D ^DIC I Y=-1 K DIC,DA,DR,DIE,DLAYGO Q
|
---|
190 | S DIE=2006.69,DA=+Y,DR=".01:3.99;4.1:20"
|
---|
191 | D ^DIE
|
---|
192 | K DIC,DA,DR,DIE,DLAYGO
|
---|
193 | N PLACE S DA=""
|
---|
194 | S PLACE=$$PLACE^MAGBAPI(+$G(DUZ(2)))
|
---|
195 | S:PLACE DA=PLACE
|
---|
196 | I DA D
|
---|
197 | . W !!,"Editing VistARad Timeout for division #",DUZ(2),!
|
---|
198 | . S DIE=2006.1,DR="123" D ^DIE
|
---|
199 | K DA,DR,DIE
|
---|
200 | Q
|
---|
201 | ;
|
---|
202 | EEPREF ;
|
---|
203 | W @IOF,!!?10,"Enter/Edit VistARad Prefetch Logic",!!
|
---|
204 | N MAGIEN
|
---|
205 | K DIC S (DIC,DLAYGO)=2006.65,DIC(0)="ALMEQ"
|
---|
206 | D ^DIC I Y=-1 K DIC,DIE,DR,DLAYGO Q
|
---|
207 | S DIE=2006.65,DA=+Y,DR="[MAGJ PRIOR EDIT]"
|
---|
208 | S MAGIEN=DA
|
---|
209 | D ^DIE I '$D(DA) G EEPREF
|
---|
210 | G EEPREF
|
---|
211 | Q
|
---|
212 | INPREF ; Inquire VRad PreFetch
|
---|
213 | W @IOF,!!?10,"Inquire VistARad Prefetch Logic",!!
|
---|
214 | N MAGIEN,BY,FR,TO
|
---|
215 | S DIC=2006.65,DIC(0)="AMEQ"
|
---|
216 | D ^DIC I Y=-1 K DIC Q
|
---|
217 | S DA=+Y,(FR,TO)=$P(Y,U,2),MAGIEN=DA,L=0
|
---|
218 | S BY="[MAGJ PRIOR SORT]",DIS(0)="I D0=MAGIEN"
|
---|
219 | D EN^DIP
|
---|
220 | R !,"Enter RETURN to continue: ",X:DTIME W !
|
---|
221 | G INPREF
|
---|
222 | Q
|
---|
223 | PRPREF ;Print VRad Prefetch
|
---|
224 | N BY
|
---|
225 | W !! S DIC=2006.65,L=0,BY="[MAGJ PRIOR SORT]"
|
---|
226 | D EN1^DIP
|
---|
227 | R !,"Enter RETURN to continue: ",X:DTIME W !
|
---|
228 | Q
|
---|
229 | ;
|
---|
230 | END ;
|
---|