1 | TMGRPC6A ;TMG/kst/Support Functions for tmg-messenger ;09/17/09
|
---|
2 | ;;1.0;TMG-LIB;**1**;09/17/09
|
---|
3 | ;
|
---|
4 | ;"TMG RPC FUNCTIONS for TMG-Messenger program
|
---|
5 | ;
|
---|
6 | ;"Kevin Toppenberg MD
|
---|
7 | ;"GNU Lessor General Public License (LGPL) applies
|
---|
8 | ;"9/17/09
|
---|
9 | ;
|
---|
10 | ;"=======================================================================
|
---|
11 | ;" RPC -- Public Functions.
|
---|
12 | ;"=======================================================================
|
---|
13 | ;"GETEMULT(TMGOUT,TMGPARAMS) ;"GET USERS OF EMAIL ADDRESS
|
---|
14 | ;"GETUEMA(TMGOUT,TMGPARAMS) ;"GET MULT USERS EMAIL ADDRESSES
|
---|
15 | ;"SETUEMA(TMGOUT,TMGPARAMS) ;"SET ONE USER'S EMAIL ADDRESS
|
---|
16 | ;"KILLUEMA(TMGOUT,TMGPARAMS) ;"REMOVE ONE EMAIL ADDRESS FROM A USER
|
---|
17 | ;"SETUSEM(TMGOUT,TMGPARAMS) ;"SET MULTIPLE USERS EMAIL ADDRESSES
|
---|
18 | ;"GFLSUBST(TMGOUT,TMGPARAMS) ;"GET FILE SUBSET
|
---|
19 | ;"GETIEN8925(TMGOUT,TMGUID) ;"GET IEN 8925 FOR IMAP UID
|
---|
20 | ;"SETUID(TMGOUT,TMGPARAMS) ;"SET IMAP UID FOR IEN 8925
|
---|
21 | ;"GETEMDOC(TMGOUT,TMGPARAMS) ;"GET IEN OF 'EMAIL' DOC IN 8925.1
|
---|
22 | ;"
|
---|
23 | ;"=======================================================================
|
---|
24 | ;"PRIVATE API FUNCTIONS
|
---|
25 | ;"=======================================================================
|
---|
26 | ;
|
---|
27 | ;"=======================================================================
|
---|
28 | ;"=======================================================================
|
---|
29 | ;"Dependencies:
|
---|
30 | ;" TMGDEBUG
|
---|
31 | ;"=======================================================================
|
---|
32 | ;"=======================================================================
|
---|
33 | ;
|
---|
34 | ;"=======================================================================
|
---|
35 | ;
|
---|
36 | GETEMULT(TMGOUT,TMGPARAMS) ;"GET USERS OF EMAIL ADDRESS
|
---|
37 | ;"Purpose: to fill list with users with matching email address
|
---|
38 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
39 | ;" TMGPARAMS -- email address, e.g. 'Someuser@gmail.com'
|
---|
40 | ;"Output: TMGOUT is filled as follows:
|
---|
41 | ;" TMGOUT(0)="#Found^Success" or "-1^Message"
|
---|
42 | ;" e.g. 1^Success --> 1 match found
|
---|
43 | ;" 2^Success --> 2 matches found
|
---|
44 | ;" 0^Success --> no errors, but no matches found.
|
---|
45 | ;" TMGOUT(1)=Name^DOB^IEN2
|
---|
46 | ;" TMGOUT(2)=Name^DOB^IEN2
|
---|
47 | ;"
|
---|
48 | ;"Results: none
|
---|
49 | ;
|
---|
50 | MERGE ^TMG("TMP","RPC","GETEMULT","TMGPARAMS")=TMGPARAMS
|
---|
51 | NEW TMGINDEX SET TMGINDEX=1
|
---|
52 | NEW TMGEMAIL SET TMGEMAIL=$$LOW^XLFSTR($EXTRACT($GET(TMGPARAMS),1,128))
|
---|
53 | IF TMGEMAIL="" DO QUIT
|
---|
54 | . SET TMGOUT(0)="-1^No email address passed for lookup"
|
---|
55 | NEW TMGIEN SET TMGIEN=""
|
---|
56 | KILL TMGOUT
|
---|
57 | FOR SET TMGIEN=$ORDER(^DPT("ATMGEMAIL",TMGEMAIL,TMGIEN)) QUIT:(+TMGIEN'>0) DO
|
---|
58 | . NEW TMGNAME SET TMGNAME=$PIECE($GET(^DPT(TMGIEN,0)),"^",1)
|
---|
59 | . NEW TMGDOB SET TMGDOB=$PIECE($GET(^DPT(TMGIEN,0)),"^",3)
|
---|
60 | . SET TMGDOB=$$FMTE^XLFDT(TMGDOB,"5D") ;"MM/DD/YYY format
|
---|
61 | . SET TMGOUT(TMGINDEX)=TMGNAME_"^"_TMGDOB_"^"_TMGIEN
|
---|
62 | . SET TMGINDEX=TMGINDEX+1
|
---|
63 | FOR SET TMGIEN=$ORDER(^DPT("ATMGALTEMAIL",TMGEMAIL,TMGIEN)) QUIT:(+TMGIEN'>0) DO
|
---|
64 | . NEW TMGNAME SET TMGNAME=$PIECE($GET(^DPT(TMGIEN,0)),"^",1)
|
---|
65 | . NEW TMGDOB SET TMGDOB=$PIECE($GET(^DPT(TMGIEN,0)),"^",3)
|
---|
66 | . SET TMGDOB=$$FMTE^XLFDT(TMGDOB,"5D") ;"MM/DD/YYY format
|
---|
67 | . SET TMGOUT(TMGINDEX)=TMGNAME_"^"_TMGDOB_"^"_TMGIEN
|
---|
68 | . SET TMGINDEX=TMGINDEX+1
|
---|
69 | ;
|
---|
70 | SET TMGOUT(0)=(TMGINDEX-1)_"^Success"
|
---|
71 | ;
|
---|
72 | QUIT
|
---|
73 | ;
|
---|
74 | GETUEMA(TMGOUT,TMGPARAMS) ;"GET MULT USERS EMAIL ADDRESSES
|
---|
75 | ;"Purpose: to fill list of email address for requested users.
|
---|
76 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
77 | ;" TMGPARAMS -- list of DFN's e.g. 1234;2345;234
|
---|
78 | ;"Output: TMGOUT is filled as follows:
|
---|
79 | ;" TMGOUT(0)="#Found^Success" or "-1^Message"
|
---|
80 | ;" e.g. 1^Success --> 1 match found
|
---|
81 | ;" 2^Success --> 2 matches found
|
---|
82 | ;" 0^Success --> no errors, but no matches found.
|
---|
83 | ;" TMGOUT(1)=DFN1^EmailAddress
|
---|
84 | ;" TMGOUT(2)=DFN1^;ALT;AltEmail1
|
---|
85 | ;" TMGOUT(3)=DFN1^;ALT;AltEmail2
|
---|
86 | ;" TMGOUT(4)=DFN2^EmailAddress
|
---|
87 | ;" NOTE: So if a user has 1 primary and 2 secondary
|
---|
88 | ;" email addresses, then there will be 3 entries
|
---|
89 | ;" starting with the same DFN
|
---|
90 | ;"
|
---|
91 | ;"Results: none
|
---|
92 | ;
|
---|
93 | MERGE ^TMG("TMP","RPC","GETUEMA","TMGPARAMS")=TMGPARAMS
|
---|
94 | NEW TMGINDEX SET TMGINDEX=1
|
---|
95 | NEW TMGI
|
---|
96 | NEW TMGEMAIL
|
---|
97 | NEW TMGIEN SET TMGIEN=""
|
---|
98 | SET TMGPARAMS=$GET(TMGPARAMS)
|
---|
99 | KILL TMGOUT
|
---|
100 | FOR TMGI=1:1:$LENGTH(TMGPARAMS,";") DO
|
---|
101 | . SET TMGIEN=+$PIECE(TMGPARAMS,";",TMGI)
|
---|
102 | . QUIT:(TMGIEN'>0)
|
---|
103 | . SET TMGEMAIL=$PIECE($GET(^DPT(TMGIEN,.13)),"^",3)
|
---|
104 | . SET TMGOUT(TMGINDEX)=TMGIEN_"^"_TMGEMAIL
|
---|
105 | . SET TMGINDEX=TMGINDEX+1
|
---|
106 | . NEW TMGIEN2 SET TMGIEN2=0
|
---|
107 | . FOR SET TMGIEN2=$ORDER(^DPT(TMGIEN,"TMGALTEMAIL",TMGIEN2)) QUIT:(+TMGIEN2'>0) DO
|
---|
108 | . . NEW TMGALTEMAIL SET TMGALTEMAIL=""
|
---|
109 | . . SET TMGALTEMAIL=$PIECE($GET(^DPT(TMGIEN,"TMGALTEMAIL",TMGIEN2,0)),"^",1)
|
---|
110 | . . SET TMGOUT(TMGINDEX)=TMGIEN_"^;ALT;"_TMGALTEMAIL
|
---|
111 | . . SET TMGINDEX=TMGINDEX+1
|
---|
112 | ;
|
---|
113 | SET TMGOUT(0)=(TMGINDEX-1)_"^Success"
|
---|
114 | ;
|
---|
115 | QUIT
|
---|
116 | ;
|
---|
117 | SETUEMA(TMGOUT,TMGPARAMS) ;"SET ONE USER EMAIL ADDRESS
|
---|
118 | ;"Purpose: to store a new email address for 1 user.
|
---|
119 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
120 | ;" TMGPARAMS -- DFN^NewEMailAddress^AltEMail1^AltEMail2^...
|
---|
121 | ;" e.g. 1234^MyEMail@server.com
|
---|
122 | ;" NOTE: NewEMailAddress is optional
|
---|
123 | ;"Output: TMGOUT is filled as follows:
|
---|
124 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
125 | ;"
|
---|
126 | ;"Results: none
|
---|
127 | ;
|
---|
128 | MERGE ^TMG("TMP","RPC","SETUEMA","TMGPARAMS")=TMGPARAMS
|
---|
129 | KILL TMGOUT
|
---|
130 | SET TMGOUT(0)="1^Success"
|
---|
131 | SET TMGPARAMS=$GET(TMGPARAMS)
|
---|
132 | NEW TMGDFN SET TMGDFN=$PIECE(TMGPARAMS,"^",1)
|
---|
133 | IF +TMGDFN'>0 SET TMGOUT(0)="-1^Patient IEN not provided (Got '"_TMGDFN_"')" QUIT
|
---|
134 | NEW TMGEMAIL SET TMGEMAIL=$PIECE(TMGPARAMS,"^",2)
|
---|
135 | NEW TMGFDA,TMGMSG
|
---|
136 | IF TMGEMAIL'="" do
|
---|
137 | . SET TMGFDA(2,TMGDFN_",",".133")=TMGEMAIL
|
---|
138 | . DO FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
139 | . IF $DATA(TMGMSG("DIERR")) DO
|
---|
140 | . . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
|
---|
141 | NEW TMGI,TMGALTEMAIL
|
---|
142 | FOR TMGI=3:1:$LENGTH(TMGPARAMS,"^") DO QUIT:(TMGALTEMAIL="")
|
---|
143 | . SET TMGALTEMAIL=$PIECE(TMGPARAMS,"^",TMGI)
|
---|
144 | . IF TMGALTEMAIL="" QUIT
|
---|
145 | . IF +$ORDER(^DPT(TMGDFN,"ATMGALTEMAIL",$$LOW^XLFSTR(TMGALTEMAIL),""))>0 QUIT
|
---|
146 | . KILL TMGFDA NEW TMGIEN
|
---|
147 | . SET TMGFDA(2.022703,"+1,"_TMGDFN_",",.01)=TMGALTEMAIL
|
---|
148 | . DO UPDATE^DIE("E","TMGFDA","TMGIEN","TMGMSG")
|
---|
149 | . IF $DATA(TMGMSG("DIERR")) DO
|
---|
150 | . . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG) ;"Only will store LAST error.
|
---|
151 | ;
|
---|
152 | QUIT
|
---|
153 | ;
|
---|
154 | KILLUEMA(TMGOUT,TMGPARAMS) ;"REMOVE ONE EMAIL ADDRESS FROM A USER
|
---|
155 | ;"Purpose: Remove an email address, either primary or alternative
|
---|
156 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
157 | ;" TMGPARAMS -- DFN^BAD-EMailAddress^Bademail2^bademail3^...
|
---|
158 | ;" e.g. 1234^MyBadEMail@server.com
|
---|
159 | ;"Output: TMGOUT is filled as follows:
|
---|
160 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
161 | ;"
|
---|
162 | ;"Results: none
|
---|
163 | ;
|
---|
164 | MERGE ^TMG("TMP","RPC","KILLUEMA","TMGPARAMS")=TMGPARAMS
|
---|
165 | SET TMGOUT(0)="1^Success"
|
---|
166 | SET TMGPARAMS=$GET(TMGPARAMS)
|
---|
167 | NEW TMGDFN SET TMGDFN=$PIECE(TMGPARAMS,"^",1)
|
---|
168 | IF +TMGDFN'>0 SET TMGOUT(0)="-1^Patient IEN not provided (Got '"_TMGDFN_"')" QUIT
|
---|
169 | NEW TMGI,TMGEMAIL
|
---|
170 | FOR TMGI=2:1:$LENGTH(TMGPARAMS,"^") DO QUIT:(TMGEMAIL="")!(+TMGOUT(0)=-1)
|
---|
171 | . NEW TMGFOUND SET TMGFOUND=0
|
---|
172 | . SET TMGEMAIL=$$LOW^XLFSTR($PIECE(TMGPARAMS,"^",TMGI))
|
---|
173 | . IF TMGEMAIL="" QUIT
|
---|
174 | . NEW TMGIEN SET TMGIEN=""
|
---|
175 | . FOR SET TMGIEN=$ORDER(^DPT("ATMGEMAIL",TMGEMAIL,TMGIEN)) QUIT:(+TMGIEN'>0)!(+TMGOUT(0)=-1) DO
|
---|
176 | . . IF TMGIEN'=TMGDFN QUIT
|
---|
177 | . . SET TMGFOUND=1
|
---|
178 | . . NEW TMGFDA,TMGMSG
|
---|
179 | . . SET TMGFDA(2,TMGDFN_",",".133")="@"
|
---|
180 | . . DO FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
181 | . . IF $DATA(TMGMSG("DIERR")) DO
|
---|
182 | . . . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
|
---|
183 | . SET TMGIEN=""
|
---|
184 | . FOR SET TMGIEN=$ORDER(^DPT(TMGDFN,"TMGALTEMAIL","B",TMGEMAIL,TMGIEN)) QUIT:(+TMGIEN'>0)!(+TMGOUT(0)=-1) DO
|
---|
185 | . . SET TMGFOUND=1
|
---|
186 | . . NEW TMGFDA,TMGMSG
|
---|
187 | . . SET TMGFDA(2.022703,TMGIEN_","_TMGDFN_",",".01")="@"
|
---|
188 | . . DO FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
189 | . . IF $DATA(TMGMSG("DIERR")) DO
|
---|
190 | . . . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
|
---|
191 | . IF TMGFOUND=0 DO ;"only will retain LAST message...
|
---|
192 | . . SET TMGOUT(0)="-1^Couldn't locate email to delete: "+TMGEMAIL
|
---|
193 | ;
|
---|
194 | QUIT
|
---|
195 | ;
|
---|
196 | ALTEREMA(TMGOUT,TMGPARAMS) ;"ALTER USER EMAIL ADDRESS
|
---|
197 | ;"Purpose: Change the value for an email address
|
---|
198 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
199 | ;" TMGPARAMS -- DFN^OldEMailAddress^NewEmailAddress
|
---|
200 | ;" e.g. 1234^OldEMail@server.com^NewEmail@server2.com
|
---|
201 | ;" NOTE: If old value is the value for primary email address, then that will be changed
|
---|
202 | ;" Otherwise, alternative emails will be searched. Search is case insensitive
|
---|
203 | ;"Output: TMGOUT is filled as follows:
|
---|
204 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
205 | ;"
|
---|
206 | ;"Results: none
|
---|
207 | ;
|
---|
208 | MERGE ^TMG("TMP","RPC","ALTEREMA","TMGPARAMS")=TMGPARAMS
|
---|
209 | SET TMGOUT(0)="1^Success"
|
---|
210 | NEW TMGFOUND SET TMGFOUND=0
|
---|
211 | SET TMGPARAMS=$GET(TMGPARAMS)
|
---|
212 | NEW TMGDFN SET TMGDFN=$PIECE(TMGPARAMS,"^",1)
|
---|
213 | IF +TMGDFN'>0 SET TMGOUT(0)="-1^Patient IEN not provided (Got '"_TMGDFN_"')" QUIT
|
---|
214 | NEW TMGI,TMGOLDEMAIL,TMGNEWEMAIL
|
---|
215 | SET TMGOLDEMAIL=$$LOW^XLFSTR($PIECE(TMGPARAMS,"^",2))
|
---|
216 | IF TMGOLDEMAIL="" DO QUIT
|
---|
217 | . SET TMGOUT(0)="-1^Old email value not provided."
|
---|
218 | SET TMGNEWEMAIL=$PIECE(TMGPARAMS,"^",3)
|
---|
219 | IF TMGNEWEMAIL="" DO QUIT
|
---|
220 | . SET TMGOUT(0)="-1^New email value not provided."
|
---|
221 | NEW TMGIEN SET TMGIEN=""
|
---|
222 | FOR SET TMGIEN=$ORDER(^DPT("ATMGEMAIL",TMGOLDEMAIL,TMGIEN)) QUIT:(+TMGIEN'>0) DO
|
---|
223 | . IF TMGIEN'=TMGDFN QUIT
|
---|
224 | . SET TMGFOUND=1
|
---|
225 | . NEW TMGFDA,TMGMSG
|
---|
226 | . SET TMGFDA(2,TMGDFN_",",".133")=TMGNEWEMAIL
|
---|
227 | . DO FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
228 | . IF $DATA(TMGMSG("DIERR")) DO
|
---|
229 | . . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
|
---|
230 | IF TMGFOUND=1 QUIT
|
---|
231 | SET TMGIEN=""
|
---|
232 | FOR SET TMGIEN=$ORDER(^DPT(TMGDFN,"TMGALTEMAIL","B",TMGOLDEMAIL,TMGIEN)) QUIT:(+TMGIEN'>0) DO
|
---|
233 | . NEW TMGFDA,TMGMSG
|
---|
234 | . SET TMGFDA(2.022703,TMGIEN_","_TMGDFN_",",".01")=TMGNEWEMAIL
|
---|
235 | . DO FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
236 | . IF $DATA(TMGMSG("DIERR")) DO
|
---|
237 | . . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
|
---|
238 | ;
|
---|
239 | QUIT
|
---|
240 | ;
|
---|
241 | SETUSEM(TMGOUT,TMGPARAMS) ;"SET MULTIPLE USERS EMAIL ADDRESSES
|
---|
242 | ;"Purpose: to store a new email address for more than 1 user.
|
---|
243 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
244 | ;" TMGPARAMS -- DFN=NewEMailAddress;DFN=NewEMailAddress;DFN=NewEMailAddress....
|
---|
245 | ;"Output: TMGOUT is filled as follows:
|
---|
246 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
247 | ;"
|
---|
248 | ;"Results: none
|
---|
249 | ;"Note: If error encountered, then no further attempts to file others in list tried.
|
---|
250 | ;
|
---|
251 | MERGE ^TMG("TMP","RPC","SETUSEM","TMGPARAMS")=TMGPARAMS
|
---|
252 | KILL TMGOUT
|
---|
253 | SET TMGOUT(0)="1^Success"
|
---|
254 | SET TMGPARAMS=$GET(TMGPARAMS)
|
---|
255 | NEW TMGFDA,TMGMSG,TMGI,TMGERR
|
---|
256 | SET TMGERR=0
|
---|
257 | FOR TMGI=1:1:$LENGTH(TMGPARAMS,";") DO QUIT:TMGERR
|
---|
258 | . KILL TMGFDA,TMGMSG
|
---|
259 | . NEW TMG1PARAM SET TMG1PARAM=$PIECE(TMGPARAMS,";",TMGI)
|
---|
260 | . NEW TMGIEN SET TMGIEN=$PIECE(TMG1PARAM,"=",1)
|
---|
261 | . IF +TMGIEN'>0 SET TMGOUT(0)="-1^Patient IEN not provided (Got '"_TMGIEN_"')" SET TMGERR=1 QUIT
|
---|
262 | . NEW TMGEMAIL SET TMGEMAIL=$PIECE(TMG1PARAM,"=",2)
|
---|
263 | . IF TMGEMAIL="" SET TMGOUT(0)="-1^Email address not provided" SET TMGERR=1 QUIT
|
---|
264 | . SET TMGFDA(2,TMGIEN_",",".133")=TMGEMAIL
|
---|
265 | . DO FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
266 | . IF $DATA(TMGMSG("DIERR")) DO
|
---|
267 | . . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
|
---|
268 | . . SET TMGERR=1
|
---|
269 | ;
|
---|
270 | QUIT
|
---|
271 | ;
|
---|
272 | GFLSUBST(TMGOUT,TMGPARAMS) ;"GET FILE SUBSET
|
---|
273 | ;"Purpose: to return a subset of entries a file's .01 names
|
---|
274 | ;"Input: TMGOUT -- an OUT PARAMETER, PASS BY REFERENCE.
|
---|
275 | ;" TMGPARAMS -- FileNum^StartFrom^Direction^maxCount
|
---|
276 | ;" TMGFNUM - filename file to traverse
|
---|
277 | ;" StartFrom -- text to $ORDER() from -- OPTIONAL
|
---|
278 | ;" Direction -- $ORDER(xx,Direction) direction (should be 1 or -1) -- OPTIONAL
|
---|
279 | ;" maxCt -- OPTIONAL -- the max number of entries to return.
|
---|
280 | ;"Output: TMGOUT is filled as follows:
|
---|
281 | ;" TMGOUT(0)="1^Success" or "-1^Message"
|
---|
282 | ;" TMGOUT(1)=IEN^Value
|
---|
283 | ;" TMGOUT(2)=IEN^Value
|
---|
284 | ;" ...
|
---|
285 | ;"Results: none
|
---|
286 | ;"NOTE: does NOT work with sub files.
|
---|
287 | ;" Also, originally copied from TMGRPC3B to remove dependancies to that file
|
---|
288 | ;
|
---|
289 | NEW TMGFILE SET TMGFILE=+$PIECE(TMGPARAMS,"^",1)
|
---|
290 | IF TMGFILE'>0 DO GOTO GFSDONE
|
---|
291 | . SET TMGOUT(0)="-1^No file number supplied"
|
---|
292 | NEW TMGFROM SET TMGFROM=$PIECE(TMGPARAMS,"^",2)
|
---|
293 | NEW TMGDIR SET TMGDIR=$PIECE(TMGPARAMS,"^",3)
|
---|
294 | IF TMGDIR'=-1 SET TMGDIR=1
|
---|
295 | NEW TMGMAXCT SET TMGMAXCT=+$PIECE(TMGPARAMS,"^",4)
|
---|
296 | IF TMGMAXCT=0 SET TMGMAXCT=44
|
---|
297 | ;
|
---|
298 | NEW TMGI SET TMGI=0
|
---|
299 | ;"NEW TMGLAST SET TMGLAST=""
|
---|
300 | ;"NEW prev SET prev=""
|
---|
301 | NEW TMGREF SET TMGREF=$GET(^DIC(TMGFILE,0,"GL"))
|
---|
302 | SET TMGREF=$$CREF^DILF(TMGREF) ;"convert open --> closed reference
|
---|
303 | IF TMGREF="" DO GOTO GFSDONE
|
---|
304 | . SET TMGOUT(0)="-1^Unable to obtain global ref for file #"_TMGFILE
|
---|
305 | ;
|
---|
306 | FOR SET TMGFROM=$ORDER(@TMGREF@("B",TMGFROM),TMGDIR) QUIT:(TMGFROM="")!(TMGI=TMGMAXCT) DO
|
---|
307 | . NEW TMGIEN SET TMGIEN=""
|
---|
308 | . FOR SET TMGIEN=$ORDER(@TMGREF@("B",TMGFROM,TMGIEN),TMGDIR) QUIT:(+TMGIEN'>0) DO
|
---|
309 | . . SET TMGI=TMGI+1
|
---|
310 | . . SET TMGOUT(TMGI)=TMGIEN_"^"_$$GET1^DIQ(TMGFILE,TMGIEN_",",.01)
|
---|
311 | . . ;"SET TMGOUT(TMGI)=$$GET1^DIQ(TMGFILE,IEN_",",.01)
|
---|
312 | ;
|
---|
313 | SET TMGOUT(0)="1^Success"
|
---|
314 | GFSDONE ;
|
---|
315 | QUIT
|
---|
316 | ;
|
---|
317 | GETIEN8925(TMGOUT,TMGUID) ;"GET IEN 8925 FOR IMAP UID
|
---|
318 | ;"Purpose: To retrieve the IEN from file 8925 that is linked to UID (if any)
|
---|
319 | ;"Input: TMGOUT -- An OUT PARAMETER. PASS BY REFERENCE.
|
---|
320 | ;" TMGPARAMS -- UID
|
---|
321 | ;"Output: TMGOUT is filled as follows:
|
---|
322 | ;" TMGOUT(0)="-1^Message" or TMG(0)=IEN or TMG(0)=0 if not found.
|
---|
323 | ;"Results: none
|
---|
324 | NEW TMGIEN
|
---|
325 | IF $GET(TMGUID)="" DO QUIT
|
---|
326 | . SET TMGOUT(0)="-1^No UID passed"
|
---|
327 | SET TMGIEN=+$ORDER(^TIU(8925,"TMGUID",TMGUID,""))
|
---|
328 | SET TMGOUT(0)=TMGIEN
|
---|
329 | ;
|
---|
330 | QUIT
|
---|
331 | ;
|
---|
332 | SETUID(TMGOUT,TMGPARAMS) ;"SET IMAP UID FOR IEN 8925
|
---|
333 | ;"Purpose: To store an IMAP UID (identifier) for a given TIU Document
|
---|
334 | ;"Input: TMGOUT -- An OUT PARAMETER. PASS BY REFERENCE.
|
---|
335 | ;" TMGPARAMS -- IEN8925^UID
|
---|
336 | ;" IEN8925 -- The IEN in file 8925 to be altered.
|
---|
337 | ;" UID -- The UID to be stored in the above document.
|
---|
338 | ;"Output: TMGOUT(0) = 1^Success, or -1^Error Message
|
---|
339 | ;"Results: none
|
---|
340 | SET TMGOUT(0)="1^Success" ;"Default to success
|
---|
341 | NEW TMGIEN,TMGUID,TMGFDA,TMGMSG
|
---|
342 | SET TMGIEN=$PIECE(TMGPARAMS,"^",1)
|
---|
343 | IF +TMGIEN'>0 DO QUIT
|
---|
344 | . SET TMGOUT(0)="-1^Bad IEN passed: "_TMGIEN
|
---|
345 | SET TMGUID=$PIECE(TMGPARAMS,"^",2)
|
---|
346 | IF TMGUID="" DO QUIT
|
---|
347 | . SET TMGOUT(0)="-1^No UID passed."
|
---|
348 | SET TMGFDA(8925,TMGIEN_",",22710)=TMGUID
|
---|
349 | DO FILE^DIE("EK","TMGFDA","TMGMSG")
|
---|
350 | IF $DATA(TMGMSG("DIERR")) DO
|
---|
351 | . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
|
---|
352 | ;
|
---|
353 | QUIT
|
---|
354 | ;
|
---|
355 | GETEMDOC(TMGOUT,TMGPARAMS) ;"
|
---|
356 | ;"Purpose: GET IEN OF 'EMAIL' DOC IN 8925.1
|
---|
357 | ;"Input: TMGOUT -- An OUT PARAMETER. PASS BY REFERENCE.
|
---|
358 | ;" TMGPARAMS -- Not used, so data ignored.
|
---|
359 | ;"Output: TMGOUT is filled as follows:
|
---|
360 | ;" TMGOUT(0)="-1^Message" or TMG(0)=IEN^Name
|
---|
361 | ;"Results: none
|
---|
362 | ;"
|
---|
363 | NEW X,Y,DIC
|
---|
364 | SET DIC=8925.1
|
---|
365 | SET DIC(0)="M"
|
---|
366 | SET X="EMAIL"
|
---|
367 | DO ^DIC
|
---|
368 | IF +Y>0 DO
|
---|
369 | . SET TMGOUT(0)=Y
|
---|
370 | ELSE DO
|
---|
371 | . SET TMGOUT(0)="-1^Unique title EMAIL not found"
|
---|
372 | ;
|
---|
373 | QUIT
|
---|
374 | ;
|
---|
375 | GETCONSNT(TMGOUT,TMGPARAMS) ;
|
---|
376 | ;"Purpose: Get status of HIPPA consent documented in patient chart
|
---|
377 | ;"Input: TMGOUT -- An OUT PARAMETER. PASS BY REFERENCE.
|
---|
378 | ;" TMGPARAMS -- PatientIEN^
|
---|
379 | ;"Results: TMGOUT(0) = 1^Codes, or -1^Error Message
|
---|
380 | ;" Codes are E - Email consented;
|
---|
381 | ;" EC - email & cell msg consented;
|
---|
382 | ;" C - just cell msg consented.
|
---|
383 | ;" N - NOT CONSENTED, or no code found
|
---|
384 | ;"Results : none
|
---|
385 | ;"Note: This field is a multiple, and allows status to change over time
|
---|
386 | ;" This routine will return the status for NOW.
|
---|
387 | NEW TMGDFN SET TMGDFN=$PIECE(TMGPARAMS,"^",1)
|
---|
388 | IF +TMGDFN'>0 DO QUIT
|
---|
389 | . SET TMGOUT(0)="-1^Valid Patient IEN Not Found. Got: "_TMGDFN
|
---|
390 | SET TMGDFN=+TMGDFN
|
---|
391 | NEW TMGDT,%,X
|
---|
392 | DO NOW^%DTC SET TMGDT=% ;"Get NOW into TMGDT
|
---|
393 | NEW TMGLASTDT
|
---|
394 | SET TMGLASTDT=$ORDER(^DPT(TMGDFN,"TMGHIPPA","TMGDATE",TMGDT),-1)
|
---|
395 | IF TMGLASTDT="" DO QUIT
|
---|
396 | . SET TMGOUT(0)="-1^NO Current Status for Current Date-Time"
|
---|
397 | NEW TMGIEN
|
---|
398 | SET TMGIEN=$ORDER(^DPT(TMGDFN,"TMGHIPPA","TMGDATE",TMGLASTDT,""))
|
---|
399 | NEW TMGSTATUS
|
---|
400 | SET TMGSTATUS=$PIECE($GET(^DPT(TMGDFN,"TMGHIPPA",TMGIEN,0)),"^",1)
|
---|
401 | IF TMGSTATUS="" SET TMGSTATUS="N"
|
---|
402 | SET TMGOUT(0)="1^"_TMGSTATUS
|
---|
403 | QUIT
|
---|
404 | ;
|
---|
405 | SETCONSNT(TMGOUT,TMGPARAMS) ;
|
---|
406 | ;"PURPOSE: Set status of HIPPA consent documented in patient chart
|
---|
407 | ;"Input TMGOUT -- An OUT PARAMETER. PASS BY REFERENCE.
|
---|
408 | ;" TMGPARAMS -- PatientIEN^StatusCodes
|
---|
409 | ;" Codes should be E - Email consented;
|
---|
410 | ;" EC - email & cell msg consented;
|
---|
411 | ;" C - just cell msg consented.
|
---|
412 | ;" N - NOT CONSENTED
|
---|
413 | ;" (Note, codes ARE case sensitive)
|
---|
414 | ;"Results: TMGOUT(0) = 1^Success, or -1^Error Message
|
---|
415 | NEW TMGDFN SET TMGDFN=$PIECE(TMGPARAMS,"^",1)
|
---|
416 | IF +TMGDFN'>0 DO QUIT
|
---|
417 | . SET TMGOUT(0)="-1^Valid Patient IEN Not Found. Got: "_TMGDFN
|
---|
418 | SET TMGDFN=+TMGDFN
|
---|
419 | NEW TMGCODE SET TMGCODE=$PIECE(TMGPARAMS,"^",2)
|
---|
420 | NEW TMGVCODES SET TMGVCODES=$PIECE($GET(^DD(2.22704,.01,0)),"^",3)
|
---|
421 | NEW TMGOK,TMGI SET TMGOK=0
|
---|
422 | FOR TMGI=1:1:$LENGTH(TMGVCODES,";") DO QUIT:(TMGOK=1)
|
---|
423 | . NEW ONECODE SET ONECODE=$PIECE(TMGVCODES,";",TMGI)
|
---|
424 | . IF $PIECE(ONECODE,":",1)=TMGCODE SET TMGOK=1 QUIT
|
---|
425 | . ;"IF $PIECE(ONECODE,":",2)=TMGCODE SET TMGOK=1 QUIT
|
---|
426 | IF TMGOK'=1 DO QUIT
|
---|
427 | . SET TMGOUT(0)="-1^Invalid code. Got: "_TMGCODE
|
---|
428 | NEW TMGDT,%,X
|
---|
429 | DO NOW^%DTC SET TMGDT=% ;"Get NOW into TMGDT
|
---|
430 | NEW TMGFDA,TMGMSG,TMGIEN,TMGIENS
|
---|
431 | SET TMGIENS="+1,"_TMGDFN_","
|
---|
432 | SET TMGFDA(2.22704,TMGIENS,.01)=TMGCODE
|
---|
433 | SET TMGFDA(2.22704,TMGIENS,.02)=TMGDT
|
---|
434 | SET TMGFDA(2.22704,TMGIENS,.03)=DUZ
|
---|
435 | DO UPDATE^DIE("S","TMGFDA","TMGIEN","TMGMSG")
|
---|
436 | IF $DATA(TMGMSG("DIERR")) DO
|
---|
437 | . SET TMGOUT(0)="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
|
---|
438 | ELSE DO
|
---|
439 | . SET TMGOUT(0)="1^Success"
|
---|
440 | ;
|
---|
441 | QUIT
|
---|
442 | ;
|
---|