| 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 | 
|---|