1 | MAGDGL ;WOIFO/EdM - Global Lister ; 05/27/2005 09:23
|
---|
2 | ;;3.0;IMAGING;**11,51**;26-August-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 | ; Call Global Variable Lister
|
---|
19 | N DTIME,I,MAX,N,WILD,OUT,T,X
|
---|
20 | S DTIME=$G(DTIME,300),MAX=20
|
---|
21 | F D Q:WILD=""
|
---|
22 | . W !,"Global Variable name: ^" R WILD:DTIME E S WILD=""
|
---|
23 | . S:WILD="^" WILD=""
|
---|
24 | . Q:WILD=""
|
---|
25 | . S:$E(WILD,1)'="^" WILD="^"_WILD
|
---|
26 | . S (N,START)=0 F D Q:N<MAX Q:X["^"
|
---|
27 | . . K OUT
|
---|
28 | . . D LIST(.OUT,WILD,MAX,START)
|
---|
29 | . . I OUT(1)<0 D Q
|
---|
30 | . . . W !,"Error in processing:",!,OUT(1),!
|
---|
31 | . . . W !,"Enter a ""wildcard"" that indicates what part of which"
|
---|
32 | . . . W !,"global variable is to be displayed."
|
---|
33 | . . . W !,"The following examples show the options:"
|
---|
34 | . . . W !," ^MAG(2005,0) - one single node"
|
---|
35 | . . . W !," ^MAG(2005,,100) - 2nd subscript may have any value"
|
---|
36 | . . . W !," ^MAG(2005,50:200,100) - 2nd subscript must be between 50 and 200"
|
---|
37 | . . . W !," ^MAG(2005,""B"",::%S[""JOHN"" - third subscript must contain specific text"
|
---|
38 | . . . W !," ^MAG(2005,,0:0:%D[""JOHN"" - data must contain specific text"
|
---|
39 | . . . S X="^"
|
---|
40 | . . . Q
|
---|
41 | . . S I=1,N=0 F S I=$O(OUT(I)) Q:I="" D
|
---|
42 | . . . S N=N+2
|
---|
43 | . . . W !,OUT(I) S T=$O(OUT(I)) Q:T=""
|
---|
44 | . . . W " = ",OUT(T) S I=T
|
---|
45 | . . . F D Q:T=""
|
---|
46 | . . . . S T=$O(OUT(T)) Q:T="" I OUT(T)'="" S T="" Q
|
---|
47 | . . . . S T=$O(OUT(T)) Q:T="" W OUT(T) S I=T
|
---|
48 | . . . . Q
|
---|
49 | . . . Q
|
---|
50 | . . I N<MAX S X="^" Q
|
---|
51 | . . W !!,"More? YES// " R X:DTIME E S X="^"
|
---|
52 | . . I X="" S X="YES" W X
|
---|
53 | . . I "Yy"'[$E(X_"^",1) S X="^" Q
|
---|
54 | . . S START=OUT(1)
|
---|
55 | . . Q
|
---|
56 | . Q
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | LIST(OUT,WILD,MAX,START) ; RPC = MAG DICOM LIST GLOBAL VARIABLE
|
---|
60 | N %D,E,I,L,M,N,NODE,OK,Q,REF,X
|
---|
61 | I $D(RPC0) D Q:'OK
|
---|
62 | . N KEY,LIST,RET
|
---|
63 | . S KEY="MAG SYSTEM",LIST(1)=KEY D OWNSKEY^XUSRB(.RET,.LIST,DUZ)
|
---|
64 | . S OK=$G(RET(1))
|
---|
65 | . S:'OK OUT(1)="-13,Calling user does not have security key "_KEY
|
---|
66 | . Q
|
---|
67 | I $E($G(WILD),1)'="^" S OUT(1)="-1,Invalid wild-card: "_WILD Q
|
---|
68 | S NODE=0,START=$G(START)\1 S:START<1 START=0
|
---|
69 | S (N,M)=1,Q=0,REF(1,1,1)="" F I=1:1:$L(WILD) D
|
---|
70 | . S E=$E(WILD,I)
|
---|
71 | . I Q S REF(1,N,M)=REF(1,N,M)_E S:E="""" Q=0 Q
|
---|
72 | . I E="""" S Q=1,REF(1,N,M)=REF(1,N,M)_E Q
|
---|
73 | . I "()"[E S N=N+1,REF(1,N)=E,N=N+1,M=1,REF(1,N,1)="" Q
|
---|
74 | . I E="," D Q
|
---|
75 | . . I N=1 S M=M+1,REF(1,1,M)=E,M=M+1,REF(1,1,M)="" Q
|
---|
76 | . . S N=N+1,REF(1,N)=E,N=N+1,M=1,REF(1,N,1)=""
|
---|
77 | . . Q
|
---|
78 | . I N=1,"[|]"[E S M=M+1,REF(1,N,M)=E,M=M+1,REF(1,N,M)="" Q
|
---|
79 | . I " :"[E S M=M+1,REF(1,N,M)=E,M=M+1,REF(1,N,M)="" Q
|
---|
80 | . S REF(1,N,M)=REF(1,N,M)_E
|
---|
81 | . Q
|
---|
82 | K:REF(1,N,M)="" REF(1,N,M)
|
---|
83 | S REF="",I="" F S I=$O(REF(1,1,I)) Q:I="" S REF=REF_REF(1,1,I)
|
---|
84 | S X="-2,Invalid Global Variable Name "_REF D
|
---|
85 | . N $ET
|
---|
86 | . S $ET="S X=X_$EC,$EC="""" Q"
|
---|
87 | . S X=$D(@REF)
|
---|
88 | . Q
|
---|
89 | I X<0 S OUT(1)=X Q
|
---|
90 | S N=0 D TRAVERSE(3,REF_"(")
|
---|
91 | S OUT(1)=NODE
|
---|
92 | Q
|
---|
93 | ;
|
---|
94 | TRAVERSE(LEV,ROOT) N FROM,IF,NAME,%S,SEP,TO
|
---|
95 | S NAME=ROOT_"%S)",(FROM,TO,IF)=""
|
---|
96 | I $O(REF(1,LEV,1))="",$G(REF(1,LEV,1))="" D Q
|
---|
97 | . S %S="" F S %S=$O(@NAME) Q:%S="" D SHOW Q:N'<MAX
|
---|
98 | . Q
|
---|
99 | I $O(REF(1,LEV,1))="" D Q
|
---|
100 | . S %S=REF(1,LEV,1)
|
---|
101 | . D:%S'=""
|
---|
102 | . . N $ET
|
---|
103 | . . S $ET="S OK=""-6,Error in subscript-value ""_%S_"": ""_$EC,$EC="""" Q"
|
---|
104 | . . X "S %S="_%S
|
---|
105 | . . Q
|
---|
106 | . D SHOW
|
---|
107 | . Q
|
---|
108 | F SEP=2:2 D Q:'SEP
|
---|
109 | . I '$O(REF(1,LEV,SEP-2)) S SEP=0 Q
|
---|
110 | . S (FROM,TO,IF)=""
|
---|
111 | . I $G(REF(1,LEV,SEP)," ")=" " S %S=REF(1,LEV,SEP-1) D SHOW Q
|
---|
112 | . S FROM=$G(REF(1,LEV,SEP-1)),TO=$G(REF(1,LEV,SEP+1)),SEP=SEP+2
|
---|
113 | . S IF="" I $G(REF(1,LEV,SEP))=":" S IF=$G(REF(1,LEV,SEP+1)),SEP=SEP+2
|
---|
114 | . D:FROM'=""
|
---|
115 | . . N $ET
|
---|
116 | . . S $ET="S OK=""-4,Error in from-value ""_FROM_"": ""_$EC,$EC="""" Q"
|
---|
117 | . . X "S FROM="_FROM
|
---|
118 | . . Q
|
---|
119 | . D:TO'=""
|
---|
120 | . . N $ET
|
---|
121 | . . S $ET="S OK=""-5,Error in to-value ""_TO_"": ""_$EC,$EC="""" Q"
|
---|
122 | . . X "S TO="_TO
|
---|
123 | . . Q
|
---|
124 | . S %S=FROM F D SHOW S %S=$O(@NAME) Q:%S="" I TO'="" Q:%S]]TO
|
---|
125 | . Q
|
---|
126 | Q
|
---|
127 | ;
|
---|
128 | Q(X) I +X=X Q X
|
---|
129 | N E,I,R
|
---|
130 | S R="" F I=1:1:$L(X) S E=$E(X,I),R=R_E S:E="""" R=R_E
|
---|
131 | Q """"_R_""""
|
---|
132 | ;
|
---|
133 | SHOW N A,C,I,NM,OK,X
|
---|
134 | Q:%S=""
|
---|
135 | S OK='$L(IF)
|
---|
136 | I IF["%S",IF'["%D" D Q:'OK
|
---|
137 | . N $ET
|
---|
138 | . S $ET="S OK=""-3,Error in ""_IF_"": ""_$EC,$EC="""" Q"
|
---|
139 | . X "I "_IF_" S OK=1"
|
---|
140 | . Q
|
---|
141 | D:$D(@NAME)#2
|
---|
142 | . S %D=@NAME I IF'="" D Q:'OK
|
---|
143 | . . N $ET
|
---|
144 | . . S $ET="S OK=""-3,Error in ""_IF_"": ""_$EC,$EC="""" Q"
|
---|
145 | . . X "I "_IF_" S OK=1"
|
---|
146 | . . Q
|
---|
147 | . I OK<0 W !,OK Q
|
---|
148 | . S NODE=NODE+1 I START>0 S START=START-1 Q
|
---|
149 | . S NM=$NA(@NAME)
|
---|
150 | . S X="""",C=0 F I=1:1:$L(%D) D
|
---|
151 | . . S A=$A(%D,I)
|
---|
152 | . . I A>31,A<127,'C S X=X_$C(A) S:A=34 X=X_$C(A) Q
|
---|
153 | . . I A>31,A<127 S C=0,X=X_")_"""_$C(A) S:A=34 X=X_$C(A) Q
|
---|
154 | . . I X="""" S X="$C("_A,C=1 Q
|
---|
155 | . . I C S X=X_","_A Q
|
---|
156 | . . S X=X_"""_$C("_A,C=1
|
---|
157 | . . Q
|
---|
158 | . S X=X_$S(C:")",1:"""")
|
---|
159 | . F D Q:X=""
|
---|
160 | . . S N=N+1,OUT(N+1)=NM,NM=""
|
---|
161 | . . S N=N+1,OUT(N+1)=$E(X,1,250),X=$E(X,251,$L(X))
|
---|
162 | . . Q
|
---|
163 | . Q
|
---|
164 | Q:N'<MAX
|
---|
165 | Q:$G(REF(1,LEV+1))=")"
|
---|
166 | D:OK TRAVERSE(LEV+2,ROOT_$$Q(%S)_",")
|
---|
167 | Q
|
---|
168 | ;
|
---|