1 | ORLP3U2 ; SLC/PKS - Team List routines. [3/27/00 4:01pm]
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**63**;Dec 17, 1997
|
---|
3 | ;
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | DEL ; Called by option: ORLP3M DELETE USER TEAMS.
|
---|
7 | ; Allows CAC menu deletion of personal Team Lists.
|
---|
8 | ;
|
---|
9 | ; Variables used:
|
---|
10 | ;
|
---|
11 | ; DIC = Fileman lookup routine.
|
---|
12 | ; DIK = Fileman deletion routine.
|
---|
13 | ; ORPTEAM = Personal Team to delete.
|
---|
14 | ; ORQUIT = Flag for quitting input loop.
|
---|
15 | ; ORUSER = Temporary user IEN holder.
|
---|
16 | ; ORHEAD = Flag for user list heading.
|
---|
17 | ; ORNAME = User name holder.
|
---|
18 | ; ORNODEL = Flag for no confirmation of deletion.
|
---|
19 | ;
|
---|
20 | N ORPQUIT,ORPTEAM,ORQUIT,ORUSER,ORHEAD,ORNAME,ORNODEL
|
---|
21 | ;
|
---|
22 | ; Set up loop to control action:
|
---|
23 | S ORPQUIT=1
|
---|
24 | F D Q:'ORPQUIT
|
---|
25 | .K DIC,DIK
|
---|
26 | .S DIC="^OR(100.21,"
|
---|
27 | .S DIC(0)="AEQM"
|
---|
28 | .S DIC("S")="I $P(^OR(100.21,+Y,0),U,2)=""P"""
|
---|
29 | .S DIC("A")="Select Personal Patient List to delete: "
|
---|
30 | .W !
|
---|
31 | .D ^DIC
|
---|
32 | .K DIC
|
---|
33 | .I Y<1 S ORPQUIT=0 Q ; Punt if no selection made.
|
---|
34 | .S ORPTEAM=Y
|
---|
35 | .;
|
---|
36 | .; Display any users currently on team:
|
---|
37 | .S ORHEAD=1 ; Set flag for heading.
|
---|
38 | .S ORUSER=0
|
---|
39 | .F S ORUSER=$O(^OR(100.21,+ORPTEAM,1,ORUSER)) Q:+ORUSER=0 D
|
---|
40 | ..I ORHEAD D ; First time through, print heading.
|
---|
41 | ...S ORHEAD=0 ; Reset flag.
|
---|
42 | ...W !!," Users currently on team ",$P(ORPTEAM,U,2),":",! ; Display heading.
|
---|
43 | ..S ORNAME=$P($G(^VA(200,ORUSER,0)),U) ; Get user's name.
|
---|
44 | ..W !," ",ORNAME
|
---|
45 | .I 'ORHEAD W !
|
---|
46 | .;
|
---|
47 | .; Get confirmation before deleting the Team List:
|
---|
48 | .S ORNODEL=0 ; Preset flag.
|
---|
49 | .S ORQUIT=0
|
---|
50 | .F Q:ORQUIT=1 D ; Loop to control user entry.
|
---|
51 | ..S %=1
|
---|
52 | ..W !,"Are you ready to delete list "_$PIECE(ORPTEAM,U,2)
|
---|
53 | ..D YN^DICN ; Fileman call for user input.
|
---|
54 | ..I %=2 S (ORNODEL,ORQUIT)=1 Q ; Set flags if user enters "NO."
|
---|
55 | ..I %=1 S ORQUIT=1 Q ; "YES" confirmation.
|
---|
56 | ..W !,"Enter YES to delete the list, NO to quit." ; For inappropriate entries, loop will repeat.
|
---|
57 | .I ORNODEL=1 Q ; Delete not confirmed.
|
---|
58 | .W !,"Working..." ; Keep user informed.
|
---|
59 | .L +^OR(100.21,+ORPTEAM):3 ; Handle file locking.
|
---|
60 | .S DIK="^OR(100.21,"
|
---|
61 | .S DA=+ORPTEAM
|
---|
62 | .D ^DIK ; Delete the Team List.
|
---|
63 | .K DIC,DIK,DA,Y,%
|
---|
64 | .L -^OR(100.21,+ORPTEAM) ; Unlock the file.
|
---|
65 | .W !,"Searching for/removing Consults pointers to deleted team..."
|
---|
66 | .D CLNLIST^GMRCTU(+ORPTEAM,0) ; Dump team pointers in file 123.5.
|
---|
67 | .; Leave success message:
|
---|
68 | .W !,"List deletion completed."
|
---|
69 | ;
|
---|
70 | Q
|
---|
71 | ;
|
---|
72 | AR ; Called by option: ORLP3U ON/OFF A/L TEAMS.
|
---|
73 | ; Allows users to add/remove themselves from Autolinked Team Lists.
|
---|
74 | ; (Thanks to Rebecca Bates, Dayton VAMC, for head start on this.)
|
---|
75 | ;
|
---|
76 | ; Variables used:
|
---|
77 | ;
|
---|
78 | ; DIR = Fileman user input routine.
|
---|
79 | ; DIC = Fileman lookup routine.
|
---|
80 | ; DIE = Fileman edit routine.
|
---|
81 | ; DIK = Fileman deletion routine.
|
---|
82 | ; ORTEAM = Holder for team IEN.
|
---|
83 | ; ORNAME = Holder for team name.
|
---|
84 | ; ORCNT = Counter variable.
|
---|
85 | ; ORNONE = Flag; if true there are no current team assignments.
|
---|
86 | ; ORACT = User input holder.
|
---|
87 | ; ORRESULT = Result of file locking call.
|
---|
88 | ;
|
---|
89 | ; Set up outer control loop for this option's menu function:
|
---|
90 | N ORACT
|
---|
91 | S ORACT=0
|
---|
92 | F Q:ORACT=3 D ; Overall control loop.
|
---|
93 | .;
|
---|
94 | .N DIR,DIC,DIE,DIK,ORTEAM,ORNAME,ORNONE,ORRESULT
|
---|
95 | .W ! ; Leave a blank line on the screen for clarity.
|
---|
96 | .S ORNONE=1
|
---|
97 | .I $D(^OR(100.21,"C",DUZ)) S ORNONE=0 D ; Current team assignments display control loop.
|
---|
98 | ..;
|
---|
99 | ..; Get list of currently-assigned Teams:
|
---|
100 | ..S ORTEAM="" ; Initialize.
|
---|
101 | ..F S ORTEAM=$O(^OR(100.21,"C",DUZ,ORTEAM)) Q:ORTEAM="" D ; Each Team where user is asociated.
|
---|
102 | ...;
|
---|
103 | ...; Next two lines of executable code create ^TMP entries as:
|
---|
104 | ...; ^TMP("ORLPAR",$J,228)="TEAM ABC"
|
---|
105 | ...; where 228 is a Team List IEN and "TEAM ABC" is a Team name,
|
---|
106 | ...; and the Team is an autolink type and subscribable (i.e.,
|
---|
107 | ...; the SUBSCRIBE field has a "Y" entry in it):
|
---|
108 | ...I $P(^OR(100.21,ORTEAM,0),"^",2)["A",$P($G(^OR(100.21,ORTEAM,0)),"^",6)="Y" S ^TMP("ORLPAR",$J,ORTEAM)=$P(^OR(100.21,ORTEAM,0),"^")
|
---|
109 | ..;
|
---|
110 | ..; If still no valid data, reset ORNONE and punt:
|
---|
111 | ..I '$D(^TMP("ORLPAR",$J)) S ORNONE=1 Q
|
---|
112 | ..;
|
---|
113 | ..; Display currently-associated Teams:
|
---|
114 | ..W !,"You are associated with the following autolinked teams:",!
|
---|
115 | ..S ORTEAM="" ; Initialize.
|
---|
116 | ..F S ORTEAM=$O(^TMP("ORLPAR",$J,ORTEAM)) Q:ORTEAM="" D ; Each team name.
|
---|
117 | ...S ORNAME=^TMP("ORLPAR",$J,ORTEAM) ; Assign name variable.
|
---|
118 | ...W !," "_ORNAME ; Print to screen.
|
---|
119 | .;
|
---|
120 | .; If no current associations, indicate same:
|
---|
121 | .I ORNONE W !,"You are not currently assigned to any teams."
|
---|
122 | .W ! ; Whether current assignments or not, leave a blank line for clarity.
|
---|
123 | .;
|
---|
124 | .; Set up call to DIR and get user input:
|
---|
125 | .S DIR("A")="Next action"
|
---|
126 | .S DIR("B")="Quit"
|
---|
127 | .S DIR("0")="SET^1:Add;2:Delete;3:Quit"
|
---|
128 | .S DIR("?")="Enter 1, 2, or 3: "
|
---|
129 | .I ORNONE D ; Change menu choices if deletions not appropriate.
|
---|
130 | ..S DIR("0")="S^1:Add;3:Quit"
|
---|
131 | ..S DIR("?")="Enter either 1 or 3: "
|
---|
132 | .D ^DIR
|
---|
133 | .K DIR
|
---|
134 | .I Y<0!$D(DIRUT)!$D(DTOUT)!$D(DUOUT) S ORACT=3 Q ; Quit on errors.
|
---|
135 | .I (+Y'=1)&(+Y'=2)&(+Y'=3) S ORACT=3 Q ; Quit if no acceptable response.
|
---|
136 | .S ORACT=+Y ; Assign user's response.
|
---|
137 | .I ORACT=3 Q ; Quit if user doesn't want any changes.
|
---|
138 | .;
|
---|
139 | .; Process deletions:
|
---|
140 | .I ORACT=2 D ; Deletion control loop.
|
---|
141 | ..;
|
---|
142 | ..; Get user input on Team List for removal:
|
---|
143 | ..S DIC(0)="AEMQZ"
|
---|
144 | ..S DIC="^OR(100.21,"
|
---|
145 | ..S DIC("S")="I $D(^TMP(""ORLPAR"",$J,+Y))"
|
---|
146 | ..S DIC("A")="Autolinked team for removal of yourself as user/provider: "
|
---|
147 | ..D ^DIC
|
---|
148 | ..I $D(DTOUT)!$D(DUOUT) Q ; Entry error.
|
---|
149 | ..I +Y<1 Q ; No selection made or bad selection.
|
---|
150 | ..S ORTEAM=+Y ; Assign team IEN variable.
|
---|
151 | ..S ORNAME=Y(0,0) ; Assign team name variable.
|
---|
152 | ..K DIC
|
---|
153 | ..;
|
---|
154 | ..; Remove the user from the list:
|
---|
155 | ..S ORRESULT=$$ARLOCK
|
---|
156 | ..I 'ORRESULT Q ; Quit if there's a locking problem.
|
---|
157 | ..S DA=DUZ
|
---|
158 | ..S DA(1)=ORTEAM
|
---|
159 | ..S DIK="^OR(100.21,"_DA(1)_","_1_","
|
---|
160 | ..D ^DIK
|
---|
161 | ..K DIK
|
---|
162 | ..L -^OR(100.21,ORTEAM) ; Clean up file lock.
|
---|
163 | ..Q
|
---|
164 | .;
|
---|
165 | .; Process additions:
|
---|
166 | .I ORACT=1 D ; Addition control loop.
|
---|
167 | ..;
|
---|
168 | ..; Get user input on Team List for addition:
|
---|
169 | ..S DIC="^OR(100.21,"
|
---|
170 | ..S DIC(0)="AEMQZ"
|
---|
171 | ..S DIC("S")="I $P(^OR(100.21,+Y,0),""^"",2)[""A"",$P($G(^OR(100.21,+Y,0)),""^"",6)=""Y"",'$D(^TMP(""ORLPAR"",$J,+Y))"
|
---|
172 | ..S DIC("A")="Autolinked team for addition of yourself as user/provider: "
|
---|
173 | ..D ^DIC
|
---|
174 | ..K DIC
|
---|
175 | ..I $D(DTOUT)!$D(DUOUT) Q ; Entry error.
|
---|
176 | ..I Y<1 Q ; No selection made or bad selection.
|
---|
177 | ..S ORTEAM=+Y ; Assign Team IEN variable.
|
---|
178 | ..;
|
---|
179 | ..; Add user to selected Team List:
|
---|
180 | ..S ORRESULT=$$ARLOCK
|
---|
181 | ..I 'ORRESULT Q ; Quit if there's a locking problem.
|
---|
182 | ..K Y,X
|
---|
183 | ..S DIC("P")=$P(^DD(100.21,2,0),"^",2)
|
---|
184 | ..S DIC(0)="LM"
|
---|
185 | ..S DA=DUZ
|
---|
186 | ..S DA(1)=ORTEAM
|
---|
187 | ..S DLAYGO=100.212
|
---|
188 | ..S X=$P($G(^VA(200,DUZ,0)),"^",1)
|
---|
189 | ..S DIC="^OR(100.21,"_DA(1)_",1,"
|
---|
190 | ..D ^DIC
|
---|
191 | ..K DIC,DLAYGO
|
---|
192 | ..L -^OR(100.21,ORTEAM) ; Clean up file lock.
|
---|
193 | ..Q
|
---|
194 | .;
|
---|
195 | .K ^TMP("ORLPAR",$J) ; Cleanup each time through.
|
---|
196 | ;
|
---|
197 | K ^TMP("ORLPAR",$J) ; Cleanup at end to be sure.
|
---|
198 | K DIRUT,DTOUT,DUOUT ; Cleanup error variables.
|
---|
199 | Q
|
---|
200 | ;
|
---|
201 | ARLOCK(ORTEST) ; Handle locking of select Team List before editing.
|
---|
202 | ;
|
---|
203 | ; Variable used:
|
---|
204 | ;
|
---|
205 | ; ORTEST = Result of locking call.
|
---|
206 | ;
|
---|
207 | L +^OR(100.21,ORTEAM):5
|
---|
208 | S ORTEST=$TEST
|
---|
209 | I 'ORTEST W !,"Another user is editing this team.",!
|
---|
210 | Q ORTEST
|
---|
211 | ;
|
---|