SCMCCV1 ;ALB/JLU;PC Attending conversion;5/6/99 ;;5.3;Scheduling;**195**;AUG 13, 1993 ; MAIN I $$XTMP() D XTMPW G MAINQ ;is there another conversion job? ; N SCMCTM,SCMCPOS,SCMCSTOP,SCMCFIX,SCMCTYPE S SCMCSTOP=0 ; S SCMCFIX=$$CNTFIX ;fix or check mode? I SCMCFIX=0 G MAINQ ;uparrowed out ; S SCMCSTOP=$$ASKQUEST ;how to sort for conversion? SETS SCMCTM, SCMCPOS I SCMCSTOP G MAIN Q ; D SUMARIZE ; display what was selected S SCMCSTOP=$$ASKCONT ;ask user if they wish to continue. I SCMCSTOP G MAINQ ; D QOFF ;queue off the conversion job ; MAINQ Q ; XTMPW ;writes to the user. ; N VAR S VAR=$O(^XTMP("SCMCATTCONV",0)) ; W *7,!!,"A conversion job (#"_VAR_") has already been started." W !,"You will not be able to start another conversion job until this one finishes.",!! D PAUSE^SCMCMU1 Q ; XTMP() ;checks to see if another job is running. ; Q $S($D(^XTMP("SCMCATTCONV")):1,1:0) ; CNTFIX() ;ask the user if they want to FIX(Convert) or CHECK ;Output F for FIX mode ; C for Check mode ; N DIR S DIR(0)="SM^C:CHECK;F:FIX" S DIR("?")="Check mode will only count the entries that could or could not be converted." S DIR("?",1)="Fix mode will actually convert these entries." S DIR("A")="In which mode would you like to run the conversion?" D ^DIR Q $S($D(DIRUT):0,1:Y) ; ASKQUEST() ;askes the user how they wish to sort or break up the conversion. ;Outputs ;sets up the SCMCTM and SCMCPOS arrays ;returns a 1 if to stop ;returns a zero to not stop ; N STOP S STOP=0 S SCMCTYPE=$$TYPE() ;gets the type of selection (team, position or all) I SCMCTYPE=0 S STOP=1 G ASKQSTQ ; I SCMCTYPE="T" D TMLP S:'$D(SCMCTM) STOP=1 ;team selection ; I SCMCTYPE="P" D POS S:'$D(SCMCTM)!('$D(SCMCPOS)) STOP=1 ;position selection ; I SCMCTYPE="A" K SCMCTM,SCMCPOS ; ASKQSTQ Q STOP ; ; TYPE() ;askes the user how they wish to sort or select the conversion. ;A for All teams and positions ;T for by selecting teams. All positions for each team. ;P for by selection positions. Only one team and specific positions. ; ;returns a zero to quit ;returns a one to continue ; N DIR S DIR(0)="SM^A:All teams and positions;T:Specific teams;P:One team, specifc positions" S DIR("?",1)="Select A for a conversion of all teams and all positions on those teams." S DIR("?",2)="Select T to select specific teams. All positions for each team are reviewed." S DIR("?",3)="Select P to be able to select specific positions from a single team." S DIR("?")=" " ; D ^DIR Q $S($D(DIRUT):0,1:Y) ; ; TMLP ;allows the user to select which teams. Allows the selection of ;multiple teams. ;sets up the SCMCTM array with the teams ;sets stop=1 if need to stop ; N SCSTOP S SCSTOP=0 F D I SCSTOP Q .N TM .S TM=$$TEAM^SCMCMU(DT) .I TM>0 S SCMCTM(TM)="" .E S SCSTOP=1 .Q Q ; POSLP(TM) ;allows the user to select one team and multiple positions from that ;team. ;the SCMCTM and SCMCPOS arrays will be populated. ; N SCSTOP S SCSTOP=0 K SCMCPOS F DO I SCSTOP Q .N POS .S POS=$$POS^SCMCMU(TM,DT) ; get positions using today. .I POS>0 S SCMCPOS(POS)="" .E S SCSTOP=1 .Q Q ; POS ;gets the team first then calls POSLP to get the positions ;populates the SCMCTM array ; N TTM K SCMCTM S TTM=$$TEAM^SCMCMU(DT) I TTM>0 DO .S SCMCTM(TTM)="" .D POSLP(TTM) .Q Q ; ; SUMARIZE ;presents the selections to the user. ; W !!!,"You have made the following selections." W !,"Please verify they are what you want:",! ; I SCMCTYPE="A" D TYPEA I SCMCTYPE="T" D TYPET I SCMCTYPE="P" D TYPEP ; W !!,*7,"** This job will be run in a ",$S(SCMCFIX="F":"FIX",1:"CHECK")," mode. **",! Q ; ; TYPEA ; W !,"You have selected to convert assignments in all teams and positions." Q ; ; TYPET ; N VAR W !,"You have selected to convert PC Attending assignments in the following teams:" ; S VAR=0 F S VAR=$O(SCMCTM(VAR)) Q:VAR="" W !,$P(^SCTM(404.51,VAR,0),U,1) ; W !!,"All position assignments for each team will be reviewed." Q ; ; TYPEP ; N LP,VAR S VAR=$O(SCMCTM(0)) Q:VAR="" ; W !,"You have selected to convert PC Attending assignments for team:" W !,$P(^SCTM(404.51,VAR,0),U,1) W !!,"The positions that were selected are:" ; S VAR=0 F S VAR=$O(SCMCPOS(VAR)) Q:VAR="" W !,$P(^SCTM(404.57,VAR,0),U,1) Q ; ; ASKCONT() ;ask the user if they wish to continue. ; N Y,DIR S DIR(0)="Y^" S DIR("A")="Are these selections correct? Do you wish to continue" D ^DIR Q $S(Y=1:0,1:1) ; CHANGING TO MATCH STOP FORMAT. ; ; SETLOCK ; sets the global to lock out other attempted jobs ; S ^XTMP("SCMCATTCONV",0)=DT+1_"^"_DT Q ; ; QOFF ;queue the task off to be processed in the background. ; N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSAVE S ZTRTN="STRTQJOB^SCMCCV2" S ZTDESC="PCMM conversion of PC Attending assignments." S ZTDTH=$H S ZTIO="" S ZTSAVE("SCMCTM(")="" S ZTSAVE("SCMCPOS(")="" S ZTSAVE("SCMCFIX")="" S ZTSAVE("SCMCTYPE")="" D ^%ZTLOAD I $D(ZTSK) W !!,"Task queued. ",ZTSK D SETLOCK ;LOCKS FOR NEXT ATTEMPT E W !!,"Task NOT queued." K ZTSK Q ; ; FUTURE ;checks if can make an assignment for today. ; N VARTWO K ERR S VARTWO=$$YSPTTPPC^SCMCTPU2(DFN,DT,1) I 'VARTWO S ERR="-"_$P(VARTWO,U,2) D SETERR^SCMCCV2(ERR) Q S REASSIGN=1 Q ; ; REOPEN ;reactivate old assignment. ; N DA,DR,DIE S DIE="^SCPT(404.43," S DA=POSASGN D NOW^%DTC S DR=".04///@;.08///"_$G(DUZ,.5)_";.09///"_% K X D ^DIE Q ; ; CHANGE(AIEN) ;the actual FM call to convert. N DIE,DA,DR S DIE="^SCPT(404.43," S DA=AIEN S DR=".05///1" D ^DIE Q ; ; INIT ;set up variables ; S XMDUZ=.5 S XMY($S($G(DUZ):DUZ,1:XMDUZ))="" S XMSUB="PC Attending conversion" S XMTEXT="^TMP(""SCMC"",$J,""MSG""," S CNTR=0 Q