1 | BSDX18 ; IHS/OIT/HMW - WINDOWS SCHEDULING RPCS ; 4/28/11 10:20am
|
---|
2 | ;;1.7;BSDX;;Jun 01, 2013;Build 24
|
---|
3 | ; Licensed under LGPL
|
---|
4 | ;
|
---|
5 | ;
|
---|
6 | DELRUD(BSDXY,BSDXIEN) ;EP
|
---|
7 | ;Entry point for debugging
|
---|
8 | ;
|
---|
9 | ;D DEBUG^%Serenji("DELRU^BSDX18(.BSDXY,BSDXIEN)")
|
---|
10 | Q
|
---|
11 | ;
|
---|
12 | DELRU(BSDXY,BSDXIEN) ;EP
|
---|
13 | ;Deletes entry BSDXIEN from RESOURCE USERS file
|
---|
14 | ;Return recordset containing error message or "" if no error
|
---|
15 | ;Called by BSDX DELETE RESOURCEUSER
|
---|
16 | ;Test Line:
|
---|
17 | ;D DELRU^BSDX18(.RES,99)
|
---|
18 | ;
|
---|
19 | N BSDXI,DIK,DA
|
---|
20 | S BSDXI=0
|
---|
21 | S BSDXY="^BSDXTMP("_$J_")"
|
---|
22 | S ^BSDXTMP($J,0)="I00020RESOURCEUSERID^I00020ERRORID"_$C(30)
|
---|
23 | I '+BSDXIEN D ERR(BSDXI,BSDXIEN,70) Q
|
---|
24 | I '$D(^BSDXRSU(BSDXIEN,0)) D ERR(BSDXI,BSDXIEN,70) Q
|
---|
25 | ;Delete entry BSDXIEN
|
---|
26 | S DIK="^BSDXRSU("
|
---|
27 | S DA=BSDXIEN
|
---|
28 | D ^DIK
|
---|
29 | ;
|
---|
30 | S BSDXI=BSDXI+1
|
---|
31 | S ^BSDXTMP($J,BSDXI)=BSDXIEN_"^"_"-1"_$C(30)_$C(31)
|
---|
32 | Q
|
---|
33 | ;
|
---|
34 | ADDRUD(BSDXY,BSDXVAL) ;EP
|
---|
35 | ;Entry point for debugging
|
---|
36 | ;
|
---|
37 | ;D DEBUG^%Serenji("ADDRU^BSDX18(.BSDXY,BSDXVAL)")
|
---|
38 | Q
|
---|
39 | ;
|
---|
40 | ADDRU(BSDXY,BSDXVAL) ;EP
|
---|
41 | ;
|
---|
42 | ;Called by BSDX ADD/EDIT RESOURCEUSER
|
---|
43 | ;Add/Edit BSDX RESOURCEUSER entry
|
---|
44 | ;BSDXVAL is sResourceUserID|sOverbook|sModifySchedule|ResourceID|UserID|sModifyAppointments
|
---|
45 | ;If IEN=0 Then this is a new ResourceUser entry
|
---|
46 | ;Test Line:
|
---|
47 | ;D ADDRU^BSDX18(.RES,"sResourceUserID|sOverbook|sModifySchedule|sResourceID|sUserID|sModifyAppointments")
|
---|
48 | ;
|
---|
49 | N BSDXIENS,BSDXFDA,BSDXIEN,BSDXMSG,BSDX,BSDXOVB,BSDXMOD,BSDXI,BSDXUID,BSDXRID
|
---|
50 | N BSDXRES,BSDXRSU,BSDXF,BSDXAPPT
|
---|
51 | S BSDXY="^BSDXTMP("_$J_")"
|
---|
52 | S BSDXI=0
|
---|
53 | S ^BSDXTMP($J,BSDXI)="I00020RESOURCEID^I00020ERRORID"_$C(30)
|
---|
54 | S BSDXIEN=$P(BSDXVAL,"|")
|
---|
55 | I +BSDXIEN D
|
---|
56 | . S BSDX="EDIT"
|
---|
57 | . S BSDXIENS=BSDXIEN_","
|
---|
58 | E D
|
---|
59 | . S BSDX="ADD"
|
---|
60 | . S BSDXIENS="+1,"
|
---|
61 | ;
|
---|
62 | I '+$P(BSDXVAL,"|",4) D ERR(BSDXI,BSDXIEN,70) Q
|
---|
63 | I '+$P(BSDXVAL,"|",5) D ERR(BSDXI,BSDXIEN,70) Q
|
---|
64 | ;
|
---|
65 | S BSDXRID=$P(BSDXVAL,"|",4) ;ResourceID
|
---|
66 | S BSDXUID=$P(BSDXVAL,"|",5) ;UserID
|
---|
67 | S BSDXRSU=0 ;ResourceUserID
|
---|
68 | S BSDXF=0 ;flag
|
---|
69 | ;If this is an add, check if the user is already assigned to the resource.
|
---|
70 | ;If so, then change to an edit
|
---|
71 | I BSDX="ADD" F S BSDXRSU=$O(^BSDXRSU("AC",BSDXUID,BSDXRSU)) Q:'+BSDXRSU D Q:BSDXF
|
---|
72 | . S BSDXRES=$G(^BSDXRSU(BSDXRSU,0))
|
---|
73 | . S BSDXRES=$P(BSDXRES,U) ;ResourceID
|
---|
74 | . S:BSDXRES=BSDXRID BSDXF=1
|
---|
75 | I BSDXF S BSDX="EDIT",BSDXIEN=BSDXRSU,BSDXIENS=BSDXIEN_","
|
---|
76 | ;
|
---|
77 | S BSDXOVB=$P(BSDXVAL,"|",2)
|
---|
78 | S BSDXOVB=$S(BSDXOVB="YES":1,1:0)
|
---|
79 | S BSDXMOD=$P(BSDXVAL,"|",3)
|
---|
80 | S BSDXMOD=$S(BSDXMOD="YES":1,1:0)
|
---|
81 | S BSDXAPPT=$P(BSDXVAL,"|",6)
|
---|
82 | S BSDXAPPT=$S(BSDXAPPT="YES":1,1:0)
|
---|
83 | ;
|
---|
84 | S BSDXFDA(9002018.15,BSDXIENS,.01)=$P(BSDXVAL,"|",4) ;RESOURCE ID
|
---|
85 | S BSDXFDA(9002018.15,BSDXIENS,.02)=$P(BSDXVAL,"|",5) ;USERID
|
---|
86 | S BSDXFDA(9002018.15,BSDXIENS,.03)=BSDXOVB ;OVERBOOK
|
---|
87 | S BSDXFDA(9002018.15,BSDXIENS,.04)=BSDXMOD ;MODIFY SCHEDULE
|
---|
88 | S BSDXFDA(9002018.15,BSDXIENS,.05)=BSDXAPPT ;ADD, EDIT, DELETE APPOINMENTS
|
---|
89 | K BSDXMSG
|
---|
90 | I BSDX="ADD" D
|
---|
91 | . K BSDXIEN
|
---|
92 | . D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
|
---|
93 | . S BSDXIEN=+$G(BSDXIEN(1))
|
---|
94 | E D
|
---|
95 | . D FILE^DIE("","BSDXFDA","BSDXMSG")
|
---|
96 | S ^BSDXTMP($J,1)=$G(BSDXIEN)_"^-1"_$C(31)
|
---|
97 | Q
|
---|
98 | ;
|
---|
99 | ERR(BSDXI,BSDXID,BSDXERR) ;Error processing
|
---|
100 | S BSDXERR=BSDXERR+134234112 ;vbObjectError
|
---|
101 | S BSDXI=BSDXI+1
|
---|
102 | S ^BSDXTMP($J,BSDXI)=BSDXID_"^"_BSDXERR_$C(30)
|
---|
103 | S BSDXI=BSDXI+1
|
---|
104 | S ^BSDXTMP($J,BSDXI)=$C(31)
|
---|
105 | Q
|
---|
106 | ;
|
---|
107 | MADERR(BSDXMSG) ;
|
---|
108 | W !,BSDXMSG
|
---|
109 | Q
|
---|
110 | ;
|
---|
111 | MADSCR(BSDXDUZ,BSDXZMGR,BSDXZMENU,BSDXZPROG) ;EP - File 200 screening code for MADDRU
|
---|
112 | ;Called from DIR to screen for scheduling users
|
---|
113 | I $D(^VA(200,BSDXDUZ,51,"B",BSDXZMENU)) Q 1
|
---|
114 | I $D(^VA(200,BSDXDUZ,51,"B",BSDXZMGR)) Q 1
|
---|
115 | I $D(^VA(200,BSDXDUZ,51,"B",BSDXZPROG)) Q 1
|
---|
116 | Q 0
|
---|
117 | ;
|
---|
118 | MADDRU ;EP -Command line utility to bulk-add users and set access rights IHS/HMW 20060420 **1**
|
---|
119 | ;Main entry point
|
---|
120 | ;
|
---|
121 | N BSDX,BSDXZMENU,BSDXZMGR,BSDXZPROG,DIR
|
---|
122 | ;
|
---|
123 | ;INIT
|
---|
124 | K ^TMP($J)
|
---|
125 | S BSDXZMENU=$O(^DIC(19.1,"B","BSDXZMENU",0)) I '+BSDXZMENU D MADERR("Error: BSDXZMENU KEY NOT FOUND.") Q
|
---|
126 | S BSDXZMGR=$O(^DIC(19.1,"B","BSDXZMGR",0)) I '+BSDXZMGR D MADERR("Error: BSDXZMGR KEY NOT FOUND.") Q
|
---|
127 | S BSDXZPROG=$O(^DIC(19.1,"B","XUPROGMODE",0)) I '+BSDXZPROG D MADERR("Error: XUPROGMODE KEY NOT FOUND.") Q
|
---|
128 | ;
|
---|
129 | D MADUSR
|
---|
130 | I '$D(^TMP($J,"BSDX MADDRU","USER")) D MADERR("Cancelled: No Users selected.") Q
|
---|
131 | D MADRES
|
---|
132 | I '$D(^TMP($J,"BSDX MADDRU","RESOURCE")) D MADERR("Cancelled: No Resources selected.") Q
|
---|
133 | I '$$MADACC(.BSDX) ;D MADERR("Selected users will have no access to the selected clinics.")
|
---|
134 | I '$$MADCONF(.BSDX) W ! D MADERR("--Cancelled") Q
|
---|
135 | D MADASS(.BSDX)
|
---|
136 | W ! D MADERR("--Done")
|
---|
137 | ;
|
---|
138 | Q
|
---|
139 | ;
|
---|
140 | MADUSR ;Prompt for users from file 200 who have BSDXUSER key
|
---|
141 | ;Store results in ^TMP($J,"BSDX MADDRU","USER",DUZ) array
|
---|
142 | N DIRUT,Y,DIR
|
---|
143 | S DIR(0)="PO^200:EMZ",DIR("S")="I $$MADSCR^BSDX18(Y,BSDXZMGR,BSDXZMENU,BSDXZPROG)"
|
---|
144 | S Y=0
|
---|
145 | K ^TMP($J,"BSDX MADDRU","USER")
|
---|
146 | W !!,"-------Select Users-------"
|
---|
147 | F D ^DIR Q:$G(DIRUT) Q:'Y D
|
---|
148 | . S ^TMP($J,"BSDX MADDRU","USER",+Y)=""
|
---|
149 | Q
|
---|
150 | ;
|
---|
151 | MADRES ;Prompt for Resources
|
---|
152 | ;Store results in ^TMP($J,"BSDX MADDRU","RESOURCE",ResourceID) array
|
---|
153 | N DIRUT,Y,DIR
|
---|
154 | S DIR(0)="PO^9002018.1:EMZ"
|
---|
155 | S Y=0
|
---|
156 | K ^TMP($J,"BSDX MADDRU","RESOURCE")
|
---|
157 | W !!,"-------Select Resources-------"
|
---|
158 | F D ^DIR Q:$G(DIRUT) Q:'Y D
|
---|
159 | . S ^TMP($J,"BSDX MADDRU","RESOURCE",+Y)=""
|
---|
160 | Q
|
---|
161 | ;
|
---|
162 | MADACC(BSDX) ;Prompt for access level.
|
---|
163 | ;Start with Overbook and go to read-only access.
|
---|
164 | ;Store results in variables for:
|
---|
165 | ;sOverbook, sModifySchedule, sModifyAppointments
|
---|
166 | ;
|
---|
167 | N DIRUT,Y,DIR,J
|
---|
168 | W !!,"-------Select Access Level-------"
|
---|
169 | S Y=0
|
---|
170 | F J="MODIFY","OVERBOOK","WRITE","READ" S BSDX(J)=1
|
---|
171 | S DIR(0)="Y"
|
---|
172 | ;
|
---|
173 | S DIR("A")="Allow users to Modify Clinic Availability"
|
---|
174 | D ^DIR
|
---|
175 | Q:$G(DIRUT) 0
|
---|
176 | Q:Y 1
|
---|
177 | S BSDX("MODIFY")=0
|
---|
178 | ;
|
---|
179 | S DIR("A")="Allow users to Overbook the selected clinics"
|
---|
180 | D ^DIR
|
---|
181 | Q:$G(DIRUT) 0
|
---|
182 | Q:Y 1
|
---|
183 | S BSDX("OVERBOOK")=0
|
---|
184 | ;
|
---|
185 | S DIR("A")="Allow users to Add, Edit and Delete appointments in the selected resources"
|
---|
186 | D ^DIR
|
---|
187 | Q:$G(DIRUT)
|
---|
188 | Q:Y 1
|
---|
189 | S BSDX("WRITE")=0
|
---|
190 | ;
|
---|
191 | S DIR("A")="Allow users to View appointments in the selected resources"
|
---|
192 | D ^DIR
|
---|
193 | Q:$G(DIRUT)
|
---|
194 | Q:Y 1
|
---|
195 | S BSDX("READ")=0
|
---|
196 | ;
|
---|
197 | Q 0
|
---|
198 | ;
|
---|
199 | MADCONF(BSDX) ;Confirm selections
|
---|
200 | N DIR,DIRUT,Y
|
---|
201 | S DIR(0)="Y"
|
---|
202 | W !!,"-------Confirm Selections-------"
|
---|
203 | I BSDX("READ")=0 D
|
---|
204 | . S DIR("A")="Are you sure you want to remove all access to these clinics for these users"
|
---|
205 | E D
|
---|
206 | . W !,"Selected users will be assigned the following access:"
|
---|
207 | . W !,"Modify clinic availability: ",?50,BSDX("MODIFY")
|
---|
208 | . W !,"Overbook Appointments: ",?50,BSDX("OVERBOOK")
|
---|
209 | . W !,"Add, Edit and Delete Appointments: ",?50,BSDX("WRITE")
|
---|
210 | . W !,"View Clinic Appointments: ",?50,BSDX("READ")
|
---|
211 | . S DIR("A")="Are you sure you want to assign these access rights to the selected users"
|
---|
212 | D ^DIR
|
---|
213 | Q:$G(DIRUT) 0
|
---|
214 | Q:$G(Y) 1
|
---|
215 | Q 0
|
---|
216 | ;
|
---|
217 | MADASS(BSDX) ;
|
---|
218 | ;Assign access level to selected users and resources
|
---|
219 | ;Loop through selected users
|
---|
220 | ;. Loop through selected resources
|
---|
221 | ; . . If an entry in ^BSDXRSU for this user/resource combination exists, then
|
---|
222 | ; . . . S sResourceUserID = to it
|
---|
223 | ; . . Else
|
---|
224 | ; . . . S sResourceUserID = 0
|
---|
225 | ; . . Call MADFILE
|
---|
226 | N BSDXU,BSDXR,BSDXRUID,BSDXVAL
|
---|
227 | S BSDXU=0
|
---|
228 | F S BSDXU=$O(^TMP($J,"BSDX MADDRU","USER",BSDXU)) Q:'+BSDXU D
|
---|
229 | . S BSDXR=0 F S BSDXR=$O(^TMP($J,"BSDX MADDRU","RESOURCE",BSDXR)) Q:'+BSDXR D
|
---|
230 | . . S BSDXRUID=$$MADEXST(BSDXU,BSDXR)
|
---|
231 | . . S BSDXVAL=BSDXRUID_"|"_BSDX("OVERBOOK")_"|"_BSDX("MODIFY")_"|"_BSDXR_"|"_BSDXU_"|"_BSDX("WRITE")
|
---|
232 | . . I +BSDXRUID,BSDX("READ")=0 D MADDEL(BSDXRUID)
|
---|
233 | . . Q:BSDX("READ")=0
|
---|
234 | . . D MADFILE(BSDXVAL)
|
---|
235 | . . Q
|
---|
236 | . Q
|
---|
237 | Q
|
---|
238 | ;
|
---|
239 | MADDEL(BSDXRUID) ;
|
---|
240 | ;Delete entry BSDXRUID from BSDX RESOURCE USER file
|
---|
241 | N DIK,DA
|
---|
242 | Q:'+BSDXRUID
|
---|
243 | Q:'$D(^BSDXRSU(BSDXRUID))
|
---|
244 | S DIK="^BSDXRSU("
|
---|
245 | S DA=BSDXRUID
|
---|
246 | D ^DIK
|
---|
247 | Q
|
---|
248 | ;
|
---|
249 | MADFILE(BSDXVAL) ;
|
---|
250 | ;
|
---|
251 | ;Add/Edit BSDX RESOURCEUSER entry
|
---|
252 | ;BSDXVAL is sResourceUserID|sOverbook|sModifySchedule|ResourceID|UserID|sModifyAppointments
|
---|
253 | ;If sResourceUserID=0 Then this is a new ResourceUser entry
|
---|
254 | ;
|
---|
255 | N BSDXIENS,BSDXFDA,BSDXIEN,BSDXMSG,BSDX,BSDXOVB,BSDXMOD,BSDXI,BSDXUID,BSDXRID
|
---|
256 | N BSDXRES,BSDXRSU,BSDXF,BSDXAPPT
|
---|
257 | S BSDXIEN=$P(BSDXVAL,"|")
|
---|
258 | I +BSDXIEN D
|
---|
259 | . S BSDX="EDIT"
|
---|
260 | . S BSDXIENS=BSDXIEN_","
|
---|
261 | E D
|
---|
262 | . S BSDX="ADD"
|
---|
263 | . S BSDXIENS="+1,"
|
---|
264 | ;
|
---|
265 | I '+$P(BSDXVAL,"|",4) D MADERR("Error in MADFILE^BSDX18: No Resource ID") Q
|
---|
266 | I '+$P(BSDXVAL,"|",5) D MADERR("Error in MADFILE^BSDX18: No User ID") Q
|
---|
267 | ;
|
---|
268 | S BSDXRID=$P(BSDXVAL,"|",4) ;ResourceID
|
---|
269 | S BSDXUID=$P(BSDXVAL,"|",5) ;UserID
|
---|
270 | S BSDXRSU=0 ;ResourceUserID
|
---|
271 | S BSDXF=0 ;flag
|
---|
272 | ;If this is an add, check if the user is already assigned to the resource.
|
---|
273 | ;If so, then change to an edit
|
---|
274 | I BSDX="ADD" F S BSDXRSU=$O(^BSDXRSU("AC",BSDXUID,BSDXRSU)) Q:'+BSDXRSU D Q:BSDXF
|
---|
275 | . S BSDXRES=$G(^BSDXRSU(BSDXRSU,0))
|
---|
276 | . S BSDXRES=$P(BSDXRES,U) ;ResourceID
|
---|
277 | . S:BSDXRES=BSDXRID BSDXF=1
|
---|
278 | I BSDXF S BSDX="EDIT",BSDXIEN=BSDXRSU,BSDXIENS=BSDXIEN_","
|
---|
279 | ;
|
---|
280 | S BSDXOVB=$P(BSDXVAL,"|",2)
|
---|
281 | S BSDXMOD=$P(BSDXVAL,"|",3)
|
---|
282 | S BSDXAPPT=$P(BSDXVAL,"|",6)
|
---|
283 | ;
|
---|
284 | S BSDXFDA(9002018.15,BSDXIENS,.01)=$P(BSDXVAL,"|",4) ;RESOURCE ID
|
---|
285 | S BSDXFDA(9002018.15,BSDXIENS,.02)=$P(BSDXVAL,"|",5) ;USERID
|
---|
286 | S BSDXFDA(9002018.15,BSDXIENS,.03)=BSDXOVB ;OVERBOOK
|
---|
287 | S BSDXFDA(9002018.15,BSDXIENS,.04)=BSDXMOD ;MODIFY SCHEDULE
|
---|
288 | S BSDXFDA(9002018.15,BSDXIENS,.05)=BSDXAPPT ;ADD, EDIT, DELETE APPOINMENTS
|
---|
289 | K BSDXMSG
|
---|
290 | I BSDX="ADD" D
|
---|
291 | . K BSDXIEN
|
---|
292 | . D UPDATE^DIE("","BSDXFDA","BSDXIEN","BSDXMSG")
|
---|
293 | . S BSDXIEN=+$G(BSDXIEN(1))
|
---|
294 | E D
|
---|
295 | . D FILE^DIE("","BSDXFDA","BSDXMSG")
|
---|
296 | Q
|
---|
297 | ;
|
---|
298 | MADEXST(BSDXU,BSDXR) ;
|
---|
299 | ;Returns BSDX RESOURCE USER ID
|
---|
300 | ;if there is a BSDX RESOURCE USER entry for
|
---|
301 | ;user BSDXU and resource BSDXR
|
---|
302 | ;Otherwise, returns 0
|
---|
303 | ;
|
---|
304 | N BSDXID,BSDXFOUND,BSDXNOD
|
---|
305 | I '$D(^BSDXRSU("AC",BSDXU)) Q 0
|
---|
306 | S BSDXID=0,BSDXFOUND=0
|
---|
307 | F S BSDXID=$O(^BSDXRSU("AC",BSDXU,BSDXID)) Q:'+BSDXID D Q:BSDXFOUND
|
---|
308 | . S BSDXNOD=$G(^BSDXRSU(BSDXID,0))
|
---|
309 | . I +BSDXNOD=BSDXR S BSDXFOUND=BSDXID
|
---|
310 | . Q
|
---|
311 | Q BSDXFOUND
|
---|