1 | SCMCMU1 ;ALB/MJK - PCMM Mass Team/Position List Manager ; 10-JUL-1998
|
---|
2 | ;;5.3;Scheduling;**148**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | EN(SCTEAM,SCPOS,SCTPDIS,SCMUTYPE,SCDATE) ; -- main entry point for SCMC MU MASS TEAM UNASSIGNMENT
|
---|
5 | D EN^VALM("SCMC MU MASS TEAM UNASSIGNMENT")
|
---|
6 | Q
|
---|
7 | ;
|
---|
8 | HDR ; -- header code
|
---|
9 | N X,SCTEAM0
|
---|
10 | S SCTEAM0=$G(^SCTM(404.51,+SCTEAM,0),"Unknown")
|
---|
11 | S X=$E(" Team: "_$P(SCTEAM0,U),1,40)
|
---|
12 | S X=$$SETSTR^VALM1(" Total: "_+$G(SCALLCNT)_" Selected: "_+$G(SCSELCNT),X,45,35)
|
---|
13 | S VALMHDR(1)=X
|
---|
14 | ;
|
---|
15 | S X=""
|
---|
16 | IF SCMUTYPE="P" D
|
---|
17 | . S SCPOS0=$G(^SCTM(404.57,+SCPOS,0),"Unknown")
|
---|
18 | . S X=$E("Position: "_$P(SCPOS0,U),1,40)
|
---|
19 | . IF '$G(SCTPDIS(+SCPOS)) Q
|
---|
20 | . S X=$$SETSTR^VALM1("Clinic: "_$P($G(^SC(+$P(SCPOS0,U,9),0),"Unknown"),U),X,45,35)
|
---|
21 | .Q
|
---|
22 | ;
|
---|
23 | S VALMHDR(2)=X
|
---|
24 | S X="Proposed Effective Date: "_$$FMTE^XLFDT($E(SCDATE,1,7),"5Z")
|
---|
25 | S X=$$SETSTR^VALM1(" View: "_SCVIEW_$S(SCVIEW="ALL":"",1:"ED"),X,45,35)
|
---|
26 | S VALMHDR(3)=X
|
---|
27 | Q
|
---|
28 | ;
|
---|
29 | INIT ; -- init variables and list array
|
---|
30 | N SCPATS,SCI,SCALPHA,SCX,SCDTE
|
---|
31 | S SCPATS=$NA(^TMP("SCMU",$J,"PATIENTS"))
|
---|
32 | S SCALPHA=$NA(^TMP("SCMU",$J,"PATS ALPHA"))
|
---|
33 | K @SCPATS,@SCALPHA
|
---|
34 | ;
|
---|
35 | ; -- set up persistent structures
|
---|
36 | S SCPTINFO=$NA(^TMP("SCMU",$J,"PATIENT INFO")) ; useful patient data
|
---|
37 | S SCPTSEL=$NA(^TMP("SCMU",$J,"SELECTED")) ; patients selected
|
---|
38 | S SCPTALL=$NA(^TMP("SCMU",$J,"PATIENT ALL")) ; listman data
|
---|
39 | ;
|
---|
40 | K @SCPTINFO,@SCPTSEL,@SCPTALL
|
---|
41 | S (SCALLCNT,SCSELCNT,SCMSG)=0
|
---|
42 | S SCVIEW="ALL"
|
---|
43 | ;
|
---|
44 | W ! D WAIT^DICD
|
---|
45 | ;
|
---|
46 | ; -- change title is appropriate
|
---|
47 | IF SCMUTYPE="P" S VALM("TITLE")="Mass Position Unassignment"
|
---|
48 | ;
|
---|
49 | ; -- get patients
|
---|
50 | D DATE(SCDATE,.SCDTE)
|
---|
51 | IF SCMUTYPE="T",'$$PTTM^SCAPMC(SCTEAM,SCDTE,SCPATS) G INITQ
|
---|
52 | IF SCMUTYPE="P",'$$PTTP^SCAPMC(SCPOS,SCDTE,SCPATS) G INITQ
|
---|
53 | ;
|
---|
54 | ; -- build list for display
|
---|
55 | S SCI=0
|
---|
56 | F S SCI=$O(@SCPATS@(SCI)) Q:'SCI D
|
---|
57 | . S SCX=@SCPATS@(SCI)
|
---|
58 | . S @SCALPHA@($P(SCX,U,2)_SCI)=SCI
|
---|
59 | . Q
|
---|
60 | ;
|
---|
61 | S SCNT=0
|
---|
62 | S SCI=""
|
---|
63 | F S SCI=$O(@SCALPHA@(SCI)) Q:SCI="" D
|
---|
64 | . S SCX=$G(@SCPATS@(+@SCALPHA@(SCI)))
|
---|
65 | . IF '$$FILTER(SCX,SCDATE) Q
|
---|
66 | . S SCNT=SCNT+1
|
---|
67 | . S Y=$$SETSTR^VALM1(SCNT,"",1,4) ; number
|
---|
68 | . S Y=$$SETSTR^VALM1($P(SCX,U,2),Y,15,25) ; pt name
|
---|
69 | . S Y=$$SETSTR^VALM1($P(SCX,U,6),Y,42,12) ; pt id
|
---|
70 | . S Y=$$SETSTR^VALM1($$FMTE^XLFDT($P(SCX,U,4),"5Z"),Y,56,10) ; assigned
|
---|
71 | . S Y=$$SETSTR^VALM1($$FMTE^XLFDT($P(SCX,U,5),"5Z"),Y,69,10) ; unassigned
|
---|
72 | . ;
|
---|
73 | . ; -- flag if this is a future assignment
|
---|
74 | . IF $P(SCX,U,4)>DT D
|
---|
75 | . . S Y=$$SETSTR^VALM1("*",Y,55,1)
|
---|
76 | . . IF 'SCMSG S SCMSG=1 D MSG
|
---|
77 | . ;
|
---|
78 | . ; -- flag if this is a future unassignment
|
---|
79 | . IF $P(SCX,U,5)>DT D
|
---|
80 | . . S Y=$$SETSTR^VALM1("*",Y,68,1)
|
---|
81 | . . IF 'SCMSG S SCMSG=1 D MSG
|
---|
82 | . ;
|
---|
83 | . S @SCPTALL@(SCNT,0)=Y
|
---|
84 | . S @SCPTALL@("IDX",SCNT,SCNT)=SCNT
|
---|
85 | . S @SCPTINFO@(SCNT)=SCX
|
---|
86 | . Q
|
---|
87 | K @SCPATS,@SCALPHA
|
---|
88 | S SCALLCNT=SCNT
|
---|
89 | ;
|
---|
90 | ; -- set up lm array
|
---|
91 | D BLD
|
---|
92 | ;
|
---|
93 | INITQ Q
|
---|
94 | ;
|
---|
95 | FILTER(SCX,SCDATE) ; -- apply filter criteria
|
---|
96 | N SCOK
|
---|
97 | S SCOK=1
|
---|
98 | ; -- if inactivation date is =< effective then don't use
|
---|
99 | IF $P(SCX,U,5),$P(SCX,U,5)'>SCDATE S SCOK=0
|
---|
100 | Q SCOK
|
---|
101 | ;
|
---|
102 | BLD ; -- build VALMAR
|
---|
103 | K @VALMAR
|
---|
104 | ;
|
---|
105 | IF SCVIEW="ALL" D
|
---|
106 | . M @VALMAR=@SCPTALL
|
---|
107 | . S VALMCNT=SCALLCNT
|
---|
108 | . Q
|
---|
109 | ;
|
---|
110 | ELSE D
|
---|
111 | . N SCNT
|
---|
112 | . S (SCNT,VALMCNT)=0
|
---|
113 | . F S SCNT=$O(@SCPTALL@(SCNT)) Q:'SCNT D
|
---|
114 | . . ; -- if in select view and patient not selected then don't use
|
---|
115 | . . IF SCVIEW="SELECT",'$D(@SCPTSEL@(SCNT)) Q
|
---|
116 | . . ; -- if in de-select view and patient selected then don't use
|
---|
117 | . . IF SCVIEW="DE-SELECT",$D(@SCPTSEL@(SCNT)) Q
|
---|
118 | . . ;
|
---|
119 | . . S VALMCNT=VALMCNT+1
|
---|
120 | . . S Y=@SCPTALL@(SCNT,0)
|
---|
121 | . . S @VALMAR@(VALMCNT,0)=$$SETSTR^VALM1(VALMCNT,Y,1,4)
|
---|
122 | . . ;
|
---|
123 | . . ; -- set idx to pointer back to SCPTALL (this is key!)
|
---|
124 | . . S @VALMAR@("IDX",VALMCNT,VALMCNT)=SCNT
|
---|
125 | . . Q
|
---|
126 | . Q
|
---|
127 | ;
|
---|
128 | IF '$O(@VALMAR@(0)) D
|
---|
129 | . S @VALMAR@(1,0)=" "
|
---|
130 | . S @VALMAR@(2,0)=" "
|
---|
131 | . S @VALMAR@(3,0)=" No patients to list."
|
---|
132 | . Q
|
---|
133 | IF $G(VALMBG),'$D(@VALMAR@(VALMBG,0)) S VALMBG=1
|
---|
134 | K VALMHDR
|
---|
135 | D BACK("R")
|
---|
136 | Q
|
---|
137 | ;
|
---|
138 | SETSEL(FLAG,SCNT) ; -- set selected flag indicator
|
---|
139 | N Y,SCPTCNT
|
---|
140 | ;
|
---|
141 | ; -- get pointer back to SCPTALL
|
---|
142 | S SCPTCNT=+$G(@VALMAR@("IDX",SCNT,SCNT))
|
---|
143 | IF FLAG="DE-SELECT",$D(@SCPTSEL@(SCPTCNT)) D
|
---|
144 | . K @SCPTSEL@(SCPTCNT)
|
---|
145 | . S SCSELCNT=$S(SCSELCNT=0:0,1:SCSELCNT-1)
|
---|
146 | ;
|
---|
147 | IF FLAG="SELECT",'$D(@SCPTSEL@(SCPTCNT)) D
|
---|
148 | . S @SCPTSEL@(SCPTCNT)=""
|
---|
149 | . S SCSELCNT=$S(SCSELCNT=SCALLCNT:SCALLCNT,1:SCSELCNT+1)
|
---|
150 | ;
|
---|
151 | S Y=$G(@VALMAR@(SCNT,0))
|
---|
152 | S Y=$$SETSTR^VALM1($S(FLAG="SELECT":"Yes",1:""),Y,8,3)
|
---|
153 | S @VALMAR@(SCNT,0)=Y
|
---|
154 | ;
|
---|
155 | ; -- need to do SCPTALL separately because of potential for differnt #'s
|
---|
156 | S Y=$G(@SCPTALL@(SCPTCNT,0))
|
---|
157 | S Y=$$SETSTR^VALM1($S(FLAG="SELECT":"Yes",1:""),Y,8,3)
|
---|
158 | S @SCPTALL@(SCPTCNT,0)=Y
|
---|
159 | Q
|
---|
160 | ;
|
---|
161 | HELP ; -- help code
|
---|
162 | S X="?" D DISP^XQORM1 W !!
|
---|
163 | Q
|
---|
164 | ;
|
---|
165 | EXIT ; -- exit code
|
---|
166 | D CLEAR^VALM1
|
---|
167 | K @VALMAR,SCSELCNT,SCVIEW,SCALLCNT,SCMSG
|
---|
168 | K @SCPTALL,@SCPTSEL,@SCPTINFO
|
---|
169 | K SCPTALL,SCPTSEL,SCPTINFO
|
---|
170 | Q
|
---|
171 | ;
|
---|
172 | EXPND ; -- expand code
|
---|
173 | Q
|
---|
174 | ;
|
---|
175 | ALL(SCACT) ; -- entry point for SCMC SELECT ALL & SCMC DESELECT ALL protocols
|
---|
176 | IF SCVIEW=SCACT D Q
|
---|
177 | . W !!,"All patients in current view are already '"_SCACT_"ED'."
|
---|
178 | . D PAUSE
|
---|
179 | . D BACK("")
|
---|
180 | . Q
|
---|
181 | D ACT(SCACT,SCPTALL)
|
---|
182 | Q
|
---|
183 | ;
|
---|
184 | SOME(SCACT) ; -- entry point for SCMC SELECT SOME & SCMC DESELECT SOME protocols
|
---|
185 | IF SCVIEW=SCACT D Q
|
---|
186 | . W !!,"All patients in current view are already '"_SCACT_"ED'."
|
---|
187 | . D PAUSE
|
---|
188 | . D BACK("")
|
---|
189 | . Q
|
---|
190 | D EN^VALM2(XQORNOD(0),"O")
|
---|
191 | D ACT(SCACT,"VALMY")
|
---|
192 | Q
|
---|
193 | ;
|
---|
194 | ACT(SCACT,SCLIST) ; -- change select flag
|
---|
195 | N SCNT
|
---|
196 | S SCNT=0
|
---|
197 | F S SCNT=$O(@SCLIST@(SCNT)) Q:'SCNT D SETSEL(SCACT,SCNT)
|
---|
198 | W !
|
---|
199 | D WAIT^DICD,BLD
|
---|
200 | Q
|
---|
201 | ;
|
---|
202 | VIEW(SCVW) ; -- change view
|
---|
203 | S SCVIEW=SCVW
|
---|
204 | W !
|
---|
205 | D WAIT^DICD,BLD
|
---|
206 | Q
|
---|
207 | ;
|
---|
208 | BACK(ACTION) ; -- return to lm processing
|
---|
209 | IF $G(SCMSG) D MSG
|
---|
210 | S VALMBCK=ACTION
|
---|
211 | Q
|
---|
212 | ;
|
---|
213 | MSG ; -- set message var
|
---|
214 | S VALMSG="* Future date"
|
---|
215 | Q
|
---|
216 | ;
|
---|
217 | DATE(SCDATE,SCDTE) ; -- setup date array
|
---|
218 | S SCDTE="SCDTE"
|
---|
219 | S SCDTE("BEGIN")=SCDATE
|
---|
220 | S SCDTE("END")=9999999
|
---|
221 | S SCDTE("INCL")=0
|
---|
222 | Q
|
---|
223 | ;
|
---|
224 | PAUSE ; -- pause
|
---|
225 | N DIR,Y
|
---|
226 | S DIR(0)="EA"
|
---|
227 | S DIR("A")="Enter RETURN to continue:"
|
---|
228 | D ^DIR
|
---|
229 | Q
|
---|