1 | SCMCQK2 ;ALB/REW - Single Pt Tm/Pt Tm Pos Assign and Discharge ; 07 Oct 2002 12:10 PM
|
---|
2 | ;;5.3;Scheduling;**297**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | DSPL ;
|
---|
5 | N LP,SCD,SCPOS
|
---|
6 | S SCTOK=$$TMPT^SCAPMC3(DFN,"SCDT","","SCD","SCER1")
|
---|
7 | S SCOK=$$TPPT^SCAPMC(DFN,"","","","","","","SCPOS","SCBKERR")
|
---|
8 | ;
|
---|
9 | ;loop through positions only getting the ones associated with the team
|
---|
10 | ;and that are active.
|
---|
11 | ;
|
---|
12 | F LP=0:0 S LP=$O(SCPOS(LP)) Q:'LP D
|
---|
13 | .I $P(SCPOS(LP),U,6)]"" K SCPOS(LP) Q
|
---|
14 | .S SCPOS("T",$P(SCPOS(LP),U,3),+SCPOS(LP))=SCPOS(LP)
|
---|
15 | S CNT=0,POS=0
|
---|
16 | F LP=0:0 S LP=$O(SCD(LP)) Q:'LP S A=SCD(LP) I '$P(A,U,8) D
|
---|
17 | .I 'CNT W !!,"NON PC ASSIGNMENTS",!
|
---|
18 | .S CNT=CNT+1 W !,CNT,?4,"Non-PC Team: "_$P(A,U,2),?48,"Phone: "_$P($G(^SCTM(404.51,+A,0)),U,2) S DATA(CNT)=+A
|
---|
19 | .F I=0:0 S I=$O(SCPOS("T",+A,I)) Q:'I D
|
---|
20 | ..I $P(DATA(CNT),U,2) S CNT=CNT+1
|
---|
21 | ..S B=SCPOS("T",+A,I)
|
---|
22 | ..S DATA(CNT)=(+A)_U_(+B),POS=1
|
---|
23 | ..S SCPR=$$GETPRTP^SCAPMCU2(+B,DT),RES=$$NEWPERSN^SCMCGU(+SCPR,"SCPR")
|
---|
24 | ..W:$X>76 !,CNT,?4,"Non-PC Team: "_$P(A,U,2),?48,"Phone: "_$P($G(^SCTM(404.51,+A,0)),U,2)
|
---|
25 | ..W !,?7,"Provider: "_$P(SCPR,U,2),?45,"Position: "_$P(B,U,2)_" "
|
---|
26 | ..W !,?10,"Pager: "_$P($G(SCPR(+SCPR)),U,5),?48,"Phone: ",$P($G(SCPR(+SCPR)),U,2),?77," "
|
---|
27 | I 'CNT W !,"No active NON PC ASSIGNMENTS for this patient",!
|
---|
28 | Q
|
---|
29 | NPC N SCDT,SCER1,SCD,SCPOS
|
---|
30 | D DSPL
|
---|
31 | S DIR(0)="SO^0:NONE;1:TEAM ASSIGNMENT;"_$S(CNT:"2:POSITION ASSIGNMENT;3:UNASSIGNMENT;",1:"")
|
---|
32 | S DIR("B")=1
|
---|
33 | D ^DIR
|
---|
34 | I Y=0 Q
|
---|
35 | I Y=U Q
|
---|
36 | I Y=1 D ASTM G NPC
|
---|
37 | READ S:CNT=1 X=1 I CNT>1 W !,"Select 1-"_CNT_": " R X:DTIME Q:X=U S X=+X I X>CNT!X<1 G READ
|
---|
38 | I Y=3 S DATA=DATA(+X) S SCTPSTAT=1,SCTP=+$P(DATA,U,2),SCTM=+DATA D UNTP:SCTP,UNTM:'SCTP G NPC
|
---|
39 | S DATA=DATA(+X),SCTM=+DATA S SCSELECT=$$SELPOS() G NPC:'$L(SCSELECT) D ASTP G NPC
|
---|
40 | Q
|
---|
41 | UNTP ;unassign patient from position
|
---|
42 | IF '$G(SCTP) W !,"No position defined" Q
|
---|
43 | N OK,SCER,SCCL,SCBEGIN,SCN,SCLIST,SCEND,SCINCL,SCLSEQ,SCDATES,SCDTS
|
---|
44 | S OK=0
|
---|
45 | W !,"About to Unassign "_$$NAME(DFN)_" from: ",!,?8,$$POSITION(SCTP)_" position ["_$P($$GETPRTP^SCAPMCU2(SCTP,DT),U,2)_"]"
|
---|
46 | S SCDISCH=$$DATE("D")
|
---|
47 | G:SCDISCH<1 QTUNTP
|
---|
48 | G:'$$CONFIRM() QTUNTP
|
---|
49 | S OK=$$INPTSCTP^SCAPMC22(DFN,SCTP,SCDISCH,.SCER)
|
---|
50 | G:OK'>0 QTUNTP
|
---|
51 | S SCCL=$P($G(^SCTM(404.57,+$G(SCTP),0)),U,9)
|
---|
52 | QTUNTP W !,"Position Unassignment "_$S(OK:"made.",1:"NOT made.")
|
---|
53 | Q
|
---|
54 | ;
|
---|
55 | ;
|
---|
56 | UNTM ;
|
---|
57 | ;assign patient from non pc team (and pc position if possible)
|
---|
58 | N OK,SCER,SCBEGIN,SCN,SCLIST,SCEND,SCINCL,SCLSEQ,SCDATES,SCDTS,OK2,OK3
|
---|
59 | S OK=0
|
---|
60 | W !!,"About to Unassign "_$$NAME(DFN)_" from "_$$TEAMNM(SCTM)_" team"
|
---|
61 | W:'SCTPSTAT !,?5,"AND from "_$$POSITION(SCTP)_" position ["_$$WRITETP^SCMCDD1(SCTP)_"]"
|
---|
62 | S SCDISCH=$$DATE("D")
|
---|
63 | G:SCDISCH<1 QTUNTM
|
---|
64 | G:'$$CONFIRM() QTUNTM
|
---|
65 | IF 'SCTPSTAT D G:OK2'>0 QTUNTM
|
---|
66 | .W !,"Unassigned."
|
---|
67 | .S OK2=$$INPTSCTP^SCAPMC22(DFN,SCTP,SCDISCH,.SCER)
|
---|
68 | .IF OK2>0 D
|
---|
69 | ..W "made."
|
---|
70 | ..S SCCL=$P(^SCTM(404.57,SCTP,0),U,9)
|
---|
71 | S OK3=$$ALLPOS^SCMCQK1()
|
---|
72 | IF $$OKINPTTM^SCMCTMU2(DFN,SCTM,SCDISCH) D
|
---|
73 | .S OK=$$INPTSCTM^SCAPMC7(DFN,SCTM,SCDISCH,.SCER)
|
---|
74 | ELSE D
|
---|
75 | . W !,"Future/Current Patient-Position Assignment exists"
|
---|
76 | QTUNTM W !,"Team Unassignment "_$S(OK:"made",1:"NOT made.")
|
---|
77 | Q
|
---|
78 | ;
|
---|
79 | ASTM ;assign patient to team
|
---|
80 | N DIC,Y,OK,SCTM,SCTMFLDS,SCER,SCBEGIN,SCN,SCLIST,SCEND,SCINCL,SCLSEQ,SCDATES,SCDTS
|
---|
81 | S OK=0
|
---|
82 | W !!,"About to Assign "_$$NAME(DFN)_" to a non primary care team"
|
---|
83 | I $$SC^SCMCQK1(DFN) W !!,"********** This patient is 50 percent or greater service-connected ************"
|
---|
84 | S DIC="^SCTM(404.51,"
|
---|
85 | S DIC(0)="AEMQZ"
|
---|
86 | S DIC("S")="IF $$ACTTM^SCMCTMU(Y,DT) I $$NEW^SCMCQK2()"
|
---|
87 | ; - select from active teams that can not be PC Teams
|
---|
88 | D ^DIC
|
---|
89 | G:Y<1 QTASTM
|
---|
90 | S SCTM=+Y
|
---|
91 | S SCASSDT=$$DATE("A")
|
---|
92 | G:SCASSDT<1 QTASTM
|
---|
93 | S SCTMCT=$$TEAMCNT^SCAPMCU1(SCTM)
|
---|
94 | S SCTMMAX=$P($$GETEAM^SCAPMCU3(SCTM),"^",8)
|
---|
95 | I SCTMCT'<SCTMMAX D G QTASTM:'$$YESNO2()
|
---|
96 | .W !,"This assignment will reach or exceeded the maximum set for this team."
|
---|
97 | .W !,"Currently assigned: "_SCTMCT
|
---|
98 | .W !,"Maximum set for team: "_SCTMMAX
|
---|
99 | I SCTMCT<SCTMMAX,'$$CONFIRM() G QTASTM
|
---|
100 | S SCTM=+Y
|
---|
101 | ;setup fields
|
---|
102 | ;S SCTMFLDS(.08)=1 ;primary care assignment
|
---|
103 | S SCTMFLDS(.11)=$G(DUZ,.5)
|
---|
104 | D NOW^%DTC S SCTMFLDS(.12)=%
|
---|
105 | IF $$ACPTTM^SCAPMC(DFN,SCTM,"SCTMFLDS",SCASSDT,"SCTPTME") D
|
---|
106 | .S SCSELECT=$$SELPOS()
|
---|
107 | .D:$L(SCSELECT) ASTP ;prompt for position prompt
|
---|
108 | .S OK=1
|
---|
109 | QTASTM W !,"Team Assignment "_$S(OK:"made",1:"NOT made.")
|
---|
110 | Q
|
---|
111 | ASTP ;assign patient to practitioner
|
---|
112 | N DIC,Y,OK,SCCL,X,SCTPFLDS,SCER,SCBEGIN,SCN,SCLIST,SCEND,SCINCL,SCLSEQ,SCDATES,SCDTS
|
---|
113 | S OK=0
|
---|
114 | W !!,"About to Assign "_$$NAME(DFN)_" to non PC Position Assignment"
|
---|
115 | I $$SC^SCMCQK1(DFN) W !!,"********** This patient is 50 percent or greater service-connected ************"
|
---|
116 | ;lookup to display only position and [practitioner]
|
---|
117 | IF SCSELECT="PRACT" D
|
---|
118 | .S DIC("W")="N SCP1 S SCP1=$G(^SCTM(404.52,Y,0)) W "" ["",$P($G(^VA(200,+$P(SCP1,U,3),0)),U,1),""]"""
|
---|
119 | .S DIC("A")="POSITION's Current PRACTITIONER: "
|
---|
120 | .S DIC="^SCTM(404.52,"
|
---|
121 | .;Must be from team, must be active,must not have future inactivation
|
---|
122 | .S DIC("S")="I $$PRACSCR^SCMCQK2(Y)"
|
---|
123 | .S D="C"
|
---|
124 | ELSE D
|
---|
125 | .S DIC="^SCTM(404.57,"
|
---|
126 | .S D="B"
|
---|
127 | .S DIC("A")="POSITION's Name: "
|
---|
128 | .S DIC("S")="I $$POSSCR^SCMCQK2(Y)"
|
---|
129 | S DIC(0)="AEMQZ"
|
---|
130 | D MIX^DIC1
|
---|
131 | G:Y<1 QTASTP
|
---|
132 | IF SCSELECT="PRACT" D
|
---|
133 | .S SCTP=$P(Y,U,2)
|
---|
134 | ELSE D
|
---|
135 | .S SCTP=$P(Y,U,1)
|
---|
136 | S SCASSDT=$$DATE("A")
|
---|
137 | G:SCASSDT<1 QTASTP
|
---|
138 | S SCTMCT=$$PCPOSCNT^SCAPMCU1(SCTP),SCTMMAX=+$P($G(^SCTM(404.57,SCTP,0)),U,8)
|
---|
139 | I SCTMCT'<SCTMMAX D G QTASTP:'$$YESNO2
|
---|
140 | .W !,"This assignment will reach or exceeded the maximum set for this position."
|
---|
141 | .W !,"Currently assigned: "_SCTMCT
|
---|
142 | .W !,"Maximum set for position: "_SCTMMAX
|
---|
143 | G:'$$CONFIRM() QTASTP
|
---|
144 | ;setup fields
|
---|
145 | S SCTPFLDS(.03)=SCASSDT
|
---|
146 | ;S SCTPFLDS(.05)=1 ;pc pract role
|
---|
147 | S SCTPFLDS(.06)=$G(DUZ,.5)
|
---|
148 | D NOW^%DTC S SCTPFLDS(.07)=%
|
---|
149 | IF $$ACPTTP^SCAPMC21(DFN,SCTP,"SCTPFLDS",SCASSDT,"SCTPTME",0) D
|
---|
150 | .S OK=1
|
---|
151 | .S SCCL=$P(^SCTM(404.57,SCTP,0),U,9)
|
---|
152 | QTASTP W !,"Position Assignment "_$S(OK:"made",1:"NOT made.")
|
---|
153 | Q
|
---|
154 | NAME(DFN) ;return patient name
|
---|
155 | Q $P($G(^DPT(DFN,0)),U,1)
|
---|
156 | ;
|
---|
157 | POSITION(SCTP) ;return position name
|
---|
158 | Q $P($G(^SCTM(404.57,SCTP,0)),U,1)
|
---|
159 | ;
|
---|
160 | TEAMNM(SCTM) ;return team name
|
---|
161 | Q $P($G(^SCTM(404.51,SCTM,0)),U,1)
|
---|
162 | ;
|
---|
163 | CLINIC(SCCL) ;return clinic name
|
---|
164 | Q $P($G(^SC(+SCCL,0)),U,1)
|
---|
165 | ;
|
---|
166 | YESNO() ;
|
---|
167 | N DIR,X,Y
|
---|
168 | S DIR(0)="Y",DIR("B")="YES"
|
---|
169 | D ^DIR
|
---|
170 | Q Y>0
|
---|
171 | ;
|
---|
172 | YESNO2() ;
|
---|
173 | N DIR,X,Y
|
---|
174 | S DIR(0)="Y",DIR("B")="NO"
|
---|
175 | S DIR("A")="Do you wish to continue with the assignment (Yes/No)?"
|
---|
176 | D ^DIR
|
---|
177 | Q Y>0
|
---|
178 | CONFIRM() ;confirmation call
|
---|
179 | N DIR,X,Y
|
---|
180 | S DIR("A")="Are you sure (Yes/No)"
|
---|
181 | S DIR(0)="Y"
|
---|
182 | D ^DIR
|
---|
183 | Q +Y=1
|
---|
184 | ;
|
---|
185 | SELPOS() ;return way to select position: 1=PRACT,2=POSIT,3=NONE
|
---|
186 | N DIR,X,Y
|
---|
187 | W !,"Choose way to select NON PC POSITION Assignment: "
|
---|
188 | S DIR(0)="SO^0:NONE;1:BY PRACTITIONER ASSIGNMENT;2:BY POSITION ASSIGNMENT"
|
---|
189 | S DIR("B")=1
|
---|
190 | D ^DIR
|
---|
191 | Q $S(Y'>0:"",+Y=1:"PRACT",1:"POSIT")
|
---|
192 | ;
|
---|
193 | DATE(TYPE) ;return date type=A or D
|
---|
194 | N DIR,X,Y
|
---|
195 | S DIR("A")=$S(TYPE="A":"Assignment",1:"Unassignment")_" date: "
|
---|
196 | S DIR(0)="DA^::EXP"
|
---|
197 | S Y=$S($D(SCDISCH):SCDISCH,$D(SCASSDT):SCASSDT,(TYPE="A"):"TODAY",1:"TODAY-1")
|
---|
198 | X ^DD("DD")
|
---|
199 | S DIR("B")=Y
|
---|
200 | D ^DIR
|
---|
201 | Q Y
|
---|
202 | ;
|
---|
203 | PRACSCR(SC40452) ;screen for for file 404.52
|
---|
204 | N SCP,SCNODE,OK
|
---|
205 | S SCP=$G(^SCTM(404.52,SC40452,0))
|
---|
206 | S OK=0
|
---|
207 | G:'SCP QTPP
|
---|
208 | S SCNODE=$G(^SCTM(404.57,+SCP,0))
|
---|
209 | S OK=$S($P(SCNODE,U,2)'=SCTM:0,$P(SCNODE,U,4):0,($O(^SCTM(404.52,"AIDT",+SCP,1,""))'=-$P(SCP,U,2)):0,($O(^SCTM(404.52,"AIDT",+SCP,0,-$P(SCP,U,2)),-1)):0,($$ACTTP^SCMCTPU(+SCP)>0):1,1:0)
|
---|
210 | QTPP Q OK
|
---|
211 | ;
|
---|
212 | POSSCR(SCTP) ;screen for file 404.57
|
---|
213 | N SCNODE
|
---|
214 | S SCNODE=$G(^SCTM(404.57,SCTP,0))
|
---|
215 | Q $S($P(SCNODE,U,2)'=SCTM:0,$P(SCNODE,U,4):0,($$ACTTP^SCMCTPU(SCTP)>0):1,1:0)
|
---|
216 | Q
|
---|
217 | NEW() ;
|
---|
218 | F I=0:0 S I=$O(SCD(I)) Q:'I I (+SCD(I))=(+Y) Q
|
---|
219 | Q 'I
|
---|