| 1 | SCMCCV1 ;ALB/JLU;PC Attending conversion;5/6/99 | 
|---|
| 2 | ;;5.3;Scheduling;**195**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | MAIN I $$XTMP() D XTMPW G MAINQ ;is there another conversion job? | 
|---|
| 5 | ; | 
|---|
| 6 | N SCMCTM,SCMCPOS,SCMCSTOP,SCMCFIX,SCMCTYPE | 
|---|
| 7 | S SCMCSTOP=0 | 
|---|
| 8 | ; | 
|---|
| 9 | S SCMCFIX=$$CNTFIX ;fix or check mode? | 
|---|
| 10 | I SCMCFIX=0 G MAINQ ;uparrowed out | 
|---|
| 11 | ; | 
|---|
| 12 | S SCMCSTOP=$$ASKQUEST ;how to sort for conversion? SETS SCMCTM, SCMCPOS | 
|---|
| 13 | I SCMCSTOP G MAIN Q | 
|---|
| 14 | ; | 
|---|
| 15 | D SUMARIZE ; display what was selected | 
|---|
| 16 | S SCMCSTOP=$$ASKCONT ;ask user if they wish to continue. | 
|---|
| 17 | I SCMCSTOP G MAINQ | 
|---|
| 18 | ; | 
|---|
| 19 | D QOFF ;queue off the conversion job | 
|---|
| 20 | ; | 
|---|
| 21 | MAINQ Q | 
|---|
| 22 | ; | 
|---|
| 23 | XTMPW ;writes to the user. | 
|---|
| 24 | ; | 
|---|
| 25 | N VAR | 
|---|
| 26 | S VAR=$O(^XTMP("SCMCATTCONV",0)) | 
|---|
| 27 | ; | 
|---|
| 28 | W *7,!!,"A conversion job (#"_VAR_") has already been started." | 
|---|
| 29 | W !,"You will not be able to start another conversion job until this one finishes.",!! | 
|---|
| 30 | D PAUSE^SCMCMU1 | 
|---|
| 31 | Q | 
|---|
| 32 | ; | 
|---|
| 33 | XTMP() ;checks to see if another job is running. | 
|---|
| 34 | ; | 
|---|
| 35 | Q $S($D(^XTMP("SCMCATTCONV")):1,1:0) | 
|---|
| 36 | ; | 
|---|
| 37 | CNTFIX() ;ask the user if they want to FIX(Convert) or CHECK | 
|---|
| 38 | ;Output  F for FIX mode | 
|---|
| 39 | ;        C for Check mode | 
|---|
| 40 | ; | 
|---|
| 41 | N DIR | 
|---|
| 42 | S DIR(0)="SM^C:CHECK;F:FIX" | 
|---|
| 43 | S DIR("?")="Check mode will only count the entries that could or could not be converted." | 
|---|
| 44 | S DIR("?",1)="Fix mode will actually convert these entries." | 
|---|
| 45 | S DIR("A")="In which mode would you like to run the conversion?" | 
|---|
| 46 | D ^DIR | 
|---|
| 47 | Q $S($D(DIRUT):0,1:Y) | 
|---|
| 48 | ; | 
|---|
| 49 | ASKQUEST() ;askes the user how they wish to sort or break up the conversion. | 
|---|
| 50 | ;Outputs | 
|---|
| 51 | ;sets up the SCMCTM and SCMCPOS arrays | 
|---|
| 52 | ;returns a 1 if to stop | 
|---|
| 53 | ;returns a zero to not stop | 
|---|
| 54 | ; | 
|---|
| 55 | N STOP | 
|---|
| 56 | S STOP=0 | 
|---|
| 57 | S SCMCTYPE=$$TYPE() ;gets the type of selection (team, position or all) | 
|---|
| 58 | I SCMCTYPE=0 S STOP=1 G ASKQSTQ | 
|---|
| 59 | ; | 
|---|
| 60 | I SCMCTYPE="T" D TMLP S:'$D(SCMCTM) STOP=1 ;team selection | 
|---|
| 61 | ; | 
|---|
| 62 | I SCMCTYPE="P" D POS S:'$D(SCMCTM)!('$D(SCMCPOS)) STOP=1 ;position selection | 
|---|
| 63 | ; | 
|---|
| 64 | I SCMCTYPE="A" K SCMCTM,SCMCPOS | 
|---|
| 65 | ; | 
|---|
| 66 | ASKQSTQ Q STOP | 
|---|
| 67 | ; | 
|---|
| 68 | ; | 
|---|
| 69 | TYPE() ;askes the user how they wish to sort or select the conversion. | 
|---|
| 70 | ;A for All teams and positions | 
|---|
| 71 | ;T for by selecting teams.  All positions for each team. | 
|---|
| 72 | ;P for by selection positions.  Only one team and specific positions. | 
|---|
| 73 | ; | 
|---|
| 74 | ;returns a zero to quit | 
|---|
| 75 | ;returns a one to continue | 
|---|
| 76 | ; | 
|---|
| 77 | N DIR | 
|---|
| 78 | S DIR(0)="SM^A:All teams and positions;T:Specific teams;P:One team, specifc positions" | 
|---|
| 79 | S DIR("?",1)="Select A for a conversion of all teams and all positions on those teams." | 
|---|
| 80 | S DIR("?",2)="Select T to select specific teams.  All positions for each team are reviewed." | 
|---|
| 81 | S DIR("?",3)="Select P to be able to select specific positions from a single team." | 
|---|
| 82 | S DIR("?")=" " | 
|---|
| 83 | ; | 
|---|
| 84 | D ^DIR | 
|---|
| 85 | Q $S($D(DIRUT):0,1:Y) | 
|---|
| 86 | ; | 
|---|
| 87 | ; | 
|---|
| 88 | TMLP ;allows the user to select which teams.  Allows the selection of | 
|---|
| 89 | ;multiple teams. | 
|---|
| 90 | ;sets up the SCMCTM array with the teams | 
|---|
| 91 | ;sets stop=1 if need to stop | 
|---|
| 92 | ; | 
|---|
| 93 | N SCSTOP | 
|---|
| 94 | S SCSTOP=0 | 
|---|
| 95 | F  D  I SCSTOP Q | 
|---|
| 96 | .N TM | 
|---|
| 97 | .S TM=$$TEAM^SCMCMU(DT) | 
|---|
| 98 | .I TM>0 S SCMCTM(TM)="" | 
|---|
| 99 | .E  S SCSTOP=1 | 
|---|
| 100 | .Q | 
|---|
| 101 | Q | 
|---|
| 102 | ; | 
|---|
| 103 | POSLP(TM) ;allows the user to select one team and multiple positions from that | 
|---|
| 104 | ;team. | 
|---|
| 105 | ;the SCMCTM and SCMCPOS arrays will be populated. | 
|---|
| 106 | ; | 
|---|
| 107 | N SCSTOP | 
|---|
| 108 | S SCSTOP=0 | 
|---|
| 109 | K SCMCPOS | 
|---|
| 110 | F  DO  I SCSTOP Q | 
|---|
| 111 | .N POS | 
|---|
| 112 | .S POS=$$POS^SCMCMU(TM,DT) ; get positions using today. | 
|---|
| 113 | .I POS>0 S SCMCPOS(POS)="" | 
|---|
| 114 | .E  S SCSTOP=1 | 
|---|
| 115 | .Q | 
|---|
| 116 | Q | 
|---|
| 117 | ; | 
|---|
| 118 | POS ;gets the team first then calls POSLP to get the positions | 
|---|
| 119 | ;populates the SCMCTM array | 
|---|
| 120 | ; | 
|---|
| 121 | N TTM | 
|---|
| 122 | K SCMCTM | 
|---|
| 123 | S TTM=$$TEAM^SCMCMU(DT) | 
|---|
| 124 | I TTM>0 DO | 
|---|
| 125 | .S SCMCTM(TTM)="" | 
|---|
| 126 | .D POSLP(TTM) | 
|---|
| 127 | .Q | 
|---|
| 128 | Q | 
|---|
| 129 | ; | 
|---|
| 130 | ; | 
|---|
| 131 | SUMARIZE ;presents the selections to the user. | 
|---|
| 132 | ; | 
|---|
| 133 | W !!!,"You have made the following selections." | 
|---|
| 134 | W !,"Please verify they are what you want:",! | 
|---|
| 135 | ; | 
|---|
| 136 | I SCMCTYPE="A" D TYPEA | 
|---|
| 137 | I SCMCTYPE="T" D TYPET | 
|---|
| 138 | I SCMCTYPE="P" D TYPEP | 
|---|
| 139 | ; | 
|---|
| 140 | W !!,*7,"** This job will be run in a ",$S(SCMCFIX="F":"FIX",1:"CHECK")," mode. **",! | 
|---|
| 141 | Q | 
|---|
| 142 | ; | 
|---|
| 143 | ; | 
|---|
| 144 | TYPEA ; | 
|---|
| 145 | W !,"You have selected to convert assignments in all teams and positions." | 
|---|
| 146 | Q | 
|---|
| 147 | ; | 
|---|
| 148 | ; | 
|---|
| 149 | TYPET ; | 
|---|
| 150 | N VAR | 
|---|
| 151 | W !,"You have selected to convert PC Attending assignments in the following teams:" | 
|---|
| 152 | ; | 
|---|
| 153 | S VAR=0 | 
|---|
| 154 | F  S VAR=$O(SCMCTM(VAR)) Q:VAR=""  W !,$P(^SCTM(404.51,VAR,0),U,1) | 
|---|
| 155 | ; | 
|---|
| 156 | W !!,"All position assignments for each team will be reviewed." | 
|---|
| 157 | Q | 
|---|
| 158 | ; | 
|---|
| 159 | ; | 
|---|
| 160 | TYPEP ; | 
|---|
| 161 | N LP,VAR | 
|---|
| 162 | S VAR=$O(SCMCTM(0)) Q:VAR="" | 
|---|
| 163 | ; | 
|---|
| 164 | W !,"You have selected to convert PC Attending assignments for team:" | 
|---|
| 165 | W !,$P(^SCTM(404.51,VAR,0),U,1) | 
|---|
| 166 | W !!,"The positions that were selected are:" | 
|---|
| 167 | ; | 
|---|
| 168 | S VAR=0 | 
|---|
| 169 | F  S VAR=$O(SCMCPOS(VAR)) Q:VAR=""  W !,$P(^SCTM(404.57,VAR,0),U,1) | 
|---|
| 170 | Q | 
|---|
| 171 | ; | 
|---|
| 172 | ; | 
|---|
| 173 | ASKCONT() ;ask the user if they wish to continue. | 
|---|
| 174 | ; | 
|---|
| 175 | N Y,DIR | 
|---|
| 176 | S DIR(0)="Y^" | 
|---|
| 177 | S DIR("A")="Are these selections correct?  Do you wish to continue" | 
|---|
| 178 | D ^DIR | 
|---|
| 179 | Q $S(Y=1:0,1:1) ; CHANGING TO MATCH STOP FORMAT. | 
|---|
| 180 | ; | 
|---|
| 181 | ; | 
|---|
| 182 | SETLOCK ; sets the global to lock out other attempted jobs | 
|---|
| 183 | ; | 
|---|
| 184 | S ^XTMP("SCMCATTCONV",0)=DT+1_"^"_DT | 
|---|
| 185 | Q | 
|---|
| 186 | ; | 
|---|
| 187 | ; | 
|---|
| 188 | QOFF ;queue the task off to be processed in the background. | 
|---|
| 189 | ; | 
|---|
| 190 | N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSAVE | 
|---|
| 191 | S ZTRTN="STRTQJOB^SCMCCV2" | 
|---|
| 192 | S ZTDESC="PCMM conversion of PC Attending assignments." | 
|---|
| 193 | S ZTDTH=$H | 
|---|
| 194 | S ZTIO="" | 
|---|
| 195 | S ZTSAVE("SCMCTM(")="" | 
|---|
| 196 | S ZTSAVE("SCMCPOS(")="" | 
|---|
| 197 | S ZTSAVE("SCMCFIX")="" | 
|---|
| 198 | S ZTSAVE("SCMCTYPE")="" | 
|---|
| 199 | D ^%ZTLOAD | 
|---|
| 200 | I $D(ZTSK) W !!,"Task queued. ",ZTSK D SETLOCK ;LOCKS FOR NEXT ATTEMPT | 
|---|
| 201 | E  W !!,"Task NOT queued." | 
|---|
| 202 | K ZTSK | 
|---|
| 203 | Q | 
|---|
| 204 | ; | 
|---|
| 205 | ; | 
|---|
| 206 | FUTURE ;checks if can make an assignment for today. | 
|---|
| 207 | ; | 
|---|
| 208 | N VARTWO | 
|---|
| 209 | K ERR | 
|---|
| 210 | S VARTWO=$$YSPTTPPC^SCMCTPU2(DFN,DT,1) | 
|---|
| 211 | I 'VARTWO S ERR="-"_$P(VARTWO,U,2) D SETERR^SCMCCV2(ERR) Q | 
|---|
| 212 | S REASSIGN=1 | 
|---|
| 213 | Q | 
|---|
| 214 | ; | 
|---|
| 215 | ; | 
|---|
| 216 | REOPEN ;reactivate old assignment. | 
|---|
| 217 | ; | 
|---|
| 218 | N DA,DR,DIE | 
|---|
| 219 | S DIE="^SCPT(404.43," | 
|---|
| 220 | S DA=POSASGN | 
|---|
| 221 | D NOW^%DTC | 
|---|
| 222 | S DR=".04///@;.08///"_$G(DUZ,.5)_";.09///"_% | 
|---|
| 223 | K X | 
|---|
| 224 | D ^DIE | 
|---|
| 225 | Q | 
|---|
| 226 | ; | 
|---|
| 227 | ; | 
|---|
| 228 | CHANGE(AIEN) ;the actual FM call to convert. | 
|---|
| 229 | N DIE,DA,DR | 
|---|
| 230 | S DIE="^SCPT(404.43," | 
|---|
| 231 | S DA=AIEN | 
|---|
| 232 | S DR=".05///1" | 
|---|
| 233 | D ^DIE | 
|---|
| 234 | Q | 
|---|
| 235 | ; | 
|---|
| 236 | ; | 
|---|
| 237 | INIT ;set up variables | 
|---|
| 238 | ; | 
|---|
| 239 | S XMDUZ=.5 | 
|---|
| 240 | S XMY($S($G(DUZ):DUZ,1:XMDUZ))="" | 
|---|
| 241 | S XMSUB="PC Attending conversion" | 
|---|
| 242 | S XMTEXT="^TMP(""SCMC"",$J,""MSG""," | 
|---|
| 243 | S CNTR=0 | 
|---|
| 244 | Q | 
|---|