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