1 | TMGRPC3B ;TMG/kst/Support Functions for GUI_Config ;08/31/08 ; 5/29/10 6:40pm
|
---|
2 | ;;1.0;TMG-LIB;**1**;08/31/08
|
---|
3 | ;
|
---|
4 | ;"TMG RPC FUNCTIONS for a GUI config program
|
---|
5 | ;
|
---|
6 | ;"Kevin Toppenberg MD
|
---|
7 | ;"GNU Lessor General Public License (LGPL) applies
|
---|
8 | ;"7/20/08
|
---|
9 | ;
|
---|
10 | ;"=======================================================================
|
---|
11 | ;" RPC -- Public Functions.
|
---|
12 | ;"=======================================================================
|
---|
13 | ;" <none>
|
---|
14 | ;"=======================================================================
|
---|
15 | ;"PRIVATE API FUNCTIONS
|
---|
16 | ;"=======================================================================
|
---|
17 | ;"GETUSRLT(TMGOUT,TMGPARAMS) -- fill list with users on the system.
|
---|
18 | ;"GETRECLT(TMGOUT,TMGPARAMS) -- fill list with records in file on the system
|
---|
19 | ;"GET1USER(TMGOUT,TMGIEN) -- Get one user's record
|
---|
20 | ;"GET1REC(TMGOUT,TMGPARAMS) -- get one record in file
|
---|
21 | ;"XTRCTFLD(TMGOUT,TMGARRAY,TMGFLAG) -- convert output from GETS^DIQ into another format
|
---|
22 | ;"GFLSUBST(TMGOUT,TMGPARAMS) -- return a subset of entries a file's .01 names
|
---|
23 | ;
|
---|
24 | ;"=======================================================================
|
---|
25 | ;"=======================================================================
|
---|
26 | ;"Dependencies:
|
---|
27 | ;" TMGRPC3* only
|
---|
28 | ;
|
---|
29 | ;"=======================================================================
|
---|
30 | ;"=======================================================================
|
---|
31 | ;
|
---|
32 | ;"=======================================================================
|
---|
33 | ;
|
---|
34 | GETUSRLT(TMGOUT,TMGPARAMS) ;"GET USER LIST
|
---|
35 | ;"Purpose: to fill list with users on the system.
|
---|
36 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
37 | ;" TMGPARAMS -- either "" or "NODISUSER" if not to return DISUSER=YES users
|
---|
38 | ;"Output: TMGOUT is filled as follows:
|
---|
39 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
40 | ;" TMGOUT(1)=Name^IEN^200^DISUSER DISUSER will be 1 for "Y" or 0 for "N"
|
---|
41 | ;" TMGOUT(2)=Name^IEN^200^DISUSER
|
---|
42 | ;"Results: none
|
---|
43 | ;
|
---|
44 | NEW TMGACTIVEONLY SET TMGACTIVEONLY=($GET(TMGPARAMS)="NODISUSER")
|
---|
45 | NEW TMGINDEX SET TMGINDEX=1
|
---|
46 | NEW TMGNAME SET TMGNAME=""
|
---|
47 | FOR SET TMGNAME=$ORDER(^VA(200,"B",TMGNAME)) QUIT:(TMGNAME="") DO
|
---|
48 | . NEW TMGIEN SET TMGIEN=""
|
---|
49 | . FOR SET TMGIEN=$ORDER(^VA(200,"B",TMGNAME,TMGIEN)) QUIT:(+TMGIEN'>0) DO
|
---|
50 | . . NEW TMGDISUSER SET TMGDISUSER=$PIECE($GET(^VA(200,TMGIEN,0)),"^",7)
|
---|
51 | . . IF (TMGACTIVEONLY)&(TMGDISUSER) QUIT
|
---|
52 | . . NEW TMGNAME SET TMGNAME=$PIECE($GET(^VA(200,TMGIEN,0)),"^",1)
|
---|
53 | . . SET TMGOUT(TMGINDEX)=TMGNAME_"^"_TMGIEN_"^200^"_TMGDISUSER
|
---|
54 | . . SET TMGINDEX=TMGINDEX+1
|
---|
55 | ;
|
---|
56 | SET TMGOUT(0)="1^Success"
|
---|
57 | ;
|
---|
58 | QUIT
|
---|
59 | ;
|
---|
60 | GETRECLT(TMGOUT,TMGPARAMS) ;"GET RECS LIST
|
---|
61 | ;"Purpose: to fill list with records in file on the system.
|
---|
62 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
63 | ;" TMGPARAMS -- Filenumber
|
---|
64 | ;"Output: TMGOUT is filled as follows:
|
---|
65 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
66 | ;" TMGOUT(1)=.01Value^IEN^FileNum
|
---|
67 | ;" TMGOUT(2)=.01Value^IEN^FileNum
|
---|
68 | ;"Results: none
|
---|
69 | ;
|
---|
70 | NEW TMGINDEX SET TMGINDEX=1
|
---|
71 | NEW TMGNAME SET TMGNAME=""
|
---|
72 | NEW TMGFNUM SET TMGFNUM=+$GET(TMGPARAMS)
|
---|
73 | IF TMGFNUM'>0 DO GOTO GRLDONE
|
---|
74 | . SET TMGOUT(0)="-1^Valid file number not found"
|
---|
75 | NEW TMGREF SET TMGREF=$GET(^DIC(TMGFNUM,0,"GL"))
|
---|
76 | SET TMGREF=$$CREF^DILF(TMGREF)
|
---|
77 | IF TMGREF="" DO GOTO GRLDONE
|
---|
78 | . SET TMGOUT(0)="-1^Unable to find global reference for file: "_TMGFNUM
|
---|
79 | NEW TMGLOC,TMGPIECE
|
---|
80 | SET TMGLOC=$PIECE(^DD(TMGFNUM,.01,0),"^",4)
|
---|
81 | SET TMGPIECE=$PIECE(TMGLOC,";",2)
|
---|
82 | SET TMGLOC=$PIECE(TMGLOC,";",1)
|
---|
83 | FOR SET TMGNAME=$ORDER(@TMGREF@("B",TMGNAME)) QUIT:(TMGNAME="") DO
|
---|
84 | . NEW TMGIEN SET TMGIEN=""
|
---|
85 | . FOR SET TMGIEN=$ORDER(@TMGREF@("B",TMGNAME,TMGIEN)) QUIT:(+TMGIEN'>0) DO
|
---|
86 | . . NEW TMGNAME SET TMGNAME=$PIECE($GET(@TMGREF@(TMGIEN,TMGLOC)),"^",TMGPIECE)
|
---|
87 | . . SET TMGOUT(TMGINDEX)=TMGNAME_"^"_TMGIEN_"^"_TMGFNUM
|
---|
88 | . . SET TMGINDEX=TMGINDEX+1
|
---|
89 | ;
|
---|
90 | SET TMGOUT(0)="1^Success"
|
---|
91 | GRLDONE ;
|
---|
92 | QUIT
|
---|
93 | ;
|
---|
94 | GET1USER(TMGOUT,TMGIEN) ;"GET ONE USER
|
---|
95 | ;"Purpose: to get record of one user
|
---|
96 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
97 | ;" TMGIEN -- the IEN in file 200 to get
|
---|
98 | ;"Output: TMGOUT is filled as follows:
|
---|
99 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
100 | ;" TMGOUT(1)=File^IENS^FieldNum^ExternalValue^DDInfo...
|
---|
101 | ;" TMGOUT(2)=File^IENS^FieldNum^ExternalValue^DDInfo...
|
---|
102 | ;"Note: the fields to return are decided HERE
|
---|
103 | ;"Results: none
|
---|
104 | ;
|
---|
105 | NEW TMGIENS SET TMGIENS=+$GET(TMGIEN)_","
|
---|
106 | DO GET1REC(.TMGOUT,"200^"_TMGIENS)
|
---|
107 | QUIT
|
---|
108 | ;
|
---|
109 | ;
|
---|
110 | GET1REC(TMGOUT,TMGPARAMS) ;
|
---|
111 | ;"Purpose: to get one record in file
|
---|
112 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
113 | ;" TMGPARAMS: File^IENS
|
---|
114 | ;" File -- the file or subfile to retrieve from
|
---|
115 | ;" IENS -- if File is a subfile, then IENS should be full IENS to get (e.g. '2,103,')
|
---|
116 | ;" if File is not a subfile, then IENS can be just IEN or IEN_","
|
---|
117 | ;"Output: TMGOUT is filled as follows:
|
---|
118 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
119 | ;" TMGOUT(1)=File^IENS^FieldNum^ExternalValue^DDInfo...
|
---|
120 | ;" TMGOUT(2)=File^IENS^FieldNum^ExternalValue^DDInfo...
|
---|
121 | ;"Note: the fields to return are decided HERE
|
---|
122 | ;"Results: none
|
---|
123 | ;
|
---|
124 | SET TMGOUT(0)="1^Success" ;"default to success
|
---|
125 | NEW TMGARRAY,TMGMSG
|
---|
126 | NEW TMGREF SET TMGREF="TMGARRAY"
|
---|
127 | SET TMGPARAMS=$GET(TMGPARAMS)
|
---|
128 | SET ^TMG("TMP","RPC","GET1REC")=TMGPARAMS
|
---|
129 | NEW TMGFILE SET TMGFILE=$PIECE(TMGPARAMS,"^",1)
|
---|
130 | IF +TMGFILE'>0 DO GOTO GORDONE
|
---|
131 | . SET TMGOUT(0)="-1^No file number supplied"
|
---|
132 | NEW TMGIENS SET TMGIENS=$PIECE(TMGPARAMS,"^",2)
|
---|
133 | IF TMGIENS="" DO GOTO GORDONE
|
---|
134 | . SET TMGOUT(0)="-1^No IENS supplied"
|
---|
135 | ;
|
---|
136 | DO GETS^DIQ(TMGFILE,TMGIENS,"**","IE",TMGREF,"TMGMSG")
|
---|
137 | ;
|
---|
138 | IF $DATA(TMGMSG("DIERR")) DO GOTO GORDONE
|
---|
139 | . SET TMGOUT(0)="-1^See Fileman message"
|
---|
140 | . SET TMGOUT(1)=$$GETERSTR^TMGRPC3G(.TMGMSG)
|
---|
141 | ;
|
---|
142 | DO XTRCTFLD(.TMGOUT,.TMGARRAY,"E")
|
---|
143 | ;
|
---|
144 | GORDONE ;
|
---|
145 | QUIT
|
---|
146 | ;
|
---|
147 | ;
|
---|
148 | XTRCTFLD(TMGOUT,TMGARRAY,TMGFLAG) ;"EXTRACT FIELDS
|
---|
149 | ;"Purpose: convert output from GETS^DIQ into another format
|
---|
150 | ;
|
---|
151 | NEW TMGINDEX SET TMGINDEX=1
|
---|
152 | NEW TMGFILE,TMGFIELD,TMGIENS
|
---|
153 | SET TMGFILE=""
|
---|
154 | FOR SET TMGFILE=$ORDER(TMGARRAY(TMGFILE)) QUIT:(TMGFILE="") DO
|
---|
155 | . SET TMGIENS=""
|
---|
156 | . FOR SET TMGIENS=$ORDER(TMGARRAY(TMGFILE,TMGIENS)) QUIT:(TMGIENS="") DO
|
---|
157 | . . SET TMGFIELD=0
|
---|
158 | . . FOR SET TMGFIELD=$ORDER(^DD(TMGFILE,TMGFIELD)) QUIT:(+TMGFIELD'>0) DO
|
---|
159 | . . . IF $GET(TMGARRAY(TMGFILE,TMGIENS,TMGFIELD,TMGFLAG))="" DO
|
---|
160 | . . . . SET TMGARRAY(TMGFILE,TMGIENS,TMGFIELD,TMGFLAG)=""
|
---|
161 | . . SET TMGFIELD=""
|
---|
162 | . . FOR SET TMGFIELD=$ORDER(TMGARRAY(TMGFILE,TMGIENS,TMGFIELD)) QUIT:(TMGFIELD="") DO
|
---|
163 | . . . NEW TMGVALUE SET TMGVALUE=$GET(TMGARRAY(TMGFILE,TMGIENS,TMGFIELD,TMGFLAG))
|
---|
164 | . . . NEW TMGDDINFO SET TMGDDINFO=$PIECE($GET(^DD(TMGFILE,TMGFIELD,0)),"^",1,4)
|
---|
165 | . . . IF $PIECE(TMGDDINFO,"^",2)["D" DO ;"convert data format to one Delphi can use
|
---|
166 | . . . . IF TMGFLAG="I" QUIT
|
---|
167 | . . . . NEW X SET X=$GET(TMGARRAY(TMGFILE,TMGIENS,TMGFIELD,"I"))
|
---|
168 | . . . . SET TMGVALUE=$$FMTE^XLFDT(X,5)
|
---|
169 | . . . SET TMGOUT(TMGINDEX)=TMGFILE_"^"_TMGIENS_"^"_TMGFIELD_"^"_TMGVALUE
|
---|
170 | . . . SET TMGOUT(TMGINDEX)=TMGOUT(TMGINDEX)_"^"_TMGDDINFO
|
---|
171 | . . . SET TMGINDEX=TMGINDEX+1
|
---|
172 | ;
|
---|
173 | QUIT
|
---|
174 | ;
|
---|
175 | GFLSUBST(TMGOUT,TMGPARAMS) ;"GET FILE SUBSET
|
---|
176 | ;"Purpose: to return a subset of entries a file's .01 names
|
---|
177 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
178 | ;" TMGPARAMS -- FileNum^StartFrom^Direction^maxCount
|
---|
179 | ;" TMGFNUM - filename file to traverse
|
---|
180 | ;" StartFrom -- text to $ORDER() from -- OPTIONAL
|
---|
181 | ;" Direction -- $ORDER(xx,Direction) direction (should be 1 or -1) -- OPTIONAL
|
---|
182 | ;" maxCt -- OPTIONAL -- the max number of entries to return.
|
---|
183 | ;"Output: TMGOUT is filled as follows:
|
---|
184 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
185 | ;" TMGOUT(1)=IEN^Value
|
---|
186 | ;" TMGOUT(2)=IEN^Value
|
---|
187 | ;" ...
|
---|
188 | ;"Results: none
|
---|
189 | ;"NOTE: does NOT work with sub files.
|
---|
190 | ;
|
---|
191 | NEW TMGFILE SET TMGFILE=+$PIECE(TMGPARAMS,"^",1)
|
---|
192 | IF TMGFILE'>0 DO GOTO GFSDONE
|
---|
193 | . SET TMGOUT(0)="-1^No file number supplied"
|
---|
194 | NEW TMGFROM SET TMGFROM=$PIECE(TMGPARAMS,"^",2)
|
---|
195 | NEW TMGDIR SET TMGDIR=$PIECE(TMGPARAMS,"^",3)
|
---|
196 | IF TMGDIR'=-1 SET TMGDIR=1
|
---|
197 | NEW TMGMAXCT SET TMGMAXCT=+$PIECE(TMGPARAMS,"^",4)
|
---|
198 | IF TMGMAXCT=0 SET TMGMAXCT=44
|
---|
199 | NEW TMGISPTR SET TMGISPTR=($PIECE($GET(^DD(TMGFILE,.01,0)),"^",2)["P")
|
---|
200 | NEW TMGSTARTIEN SET TMGSTARTIEN=""
|
---|
201 | IF TMGISPTR DO
|
---|
202 | . IF $LENGTH(TMGFROM,";")>2 SET TMGSTARTIEN=+$PIECE(TMGFROM,";",2)
|
---|
203 | . IF TMGFROM?1.N1";".E SET TMGFROM=+TMGFROM
|
---|
204 | ;
|
---|
205 | NEW TMGI SET TMGI=0
|
---|
206 | ;"NEW TMGLAST SET TMGLAST=""
|
---|
207 | ;"NEW prev SET prev=""
|
---|
208 | NEW TMGREF SET TMGREF=$GET(^DIC(TMGFILE,0,"GL"))
|
---|
209 | SET TMGREF=$$CREF^DILF(TMGREF) ;"convert open --> closed reference
|
---|
210 | IF TMGREF="" DO GOTO GFSDONE
|
---|
211 | . SET TMGOUT(0)="-1^Unable to obtain global ref for file #"_TMGFILE
|
---|
212 | ;
|
---|
213 | FOR SET TMGFROM=$ORDER(@TMGREF@("B",TMGFROM),TMGDIR) QUIT:(TMGFROM="")!(TMGI'<TMGMAXCT) DO
|
---|
214 | . NEW TMGIEN SET TMGIEN=TMGSTARTIEN
|
---|
215 | . FOR SET TMGIEN=$ORDER(@TMGREF@("B",TMGFROM,TMGIEN),TMGDIR) QUIT:(+TMGIEN'>0)!(TMGI'<TMGMAXCT) DO
|
---|
216 | . . SET TMGI=TMGI+1
|
---|
217 | . . SET TMGOUT(TMGI)=TMGIEN_"^"
|
---|
218 | . . IF TMGISPTR SET TMGOUT(TMGI)=TMGOUT(TMGI)_TMGFROM_";"_TMGIEN_";"
|
---|
219 | . . SET TMGOUT(TMGI)=TMGOUT(TMGI)_$$GET1^DIQ(TMGFILE,TMGIEN_",",.01)
|
---|
220 | . . ;"SET TMGOUT(TMGI)=$$GET1^DIQ(TMGFILE,IEN_",",.01)
|
---|
221 | ;
|
---|
222 | SET TMGOUT(0)="1^Success"
|
---|
223 | GFSDONE ;
|
---|
224 | QUIT
|
---|
225 | ;
|
---|
226 | ;
|
---|