PXRMSXRM ; SLC/PKR - Main driver for building indexes. ;29-Apr-2015 12:46;DU
;;2.0;CLINICAL REMINDERS;**6,1001,17,26,1005**;Feb 04, 2005;Build 23
;IHS/MSC/MGH Patch 1001 Add indexes for V files
;
;==========================================
ADDERROR(GLOBAL,IDEN,NERROR) ;Add to the error list.
S NERROR=NERROR+1
S ^TMP("PXRMERROR",$J,NERROR,0)="GLOBAL: "_GLOBAL_" ENTRY: "_IDEN
Q
;
;==========================================
ASKTASK() ;See if this should be tasked.
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
S DIR(0)="YO"
S DIR("A")="Do you want this to be tasked"
S DIR("B")="Y"
D ^DIR
I $D(DIROUT)!$D(DIRUT) Q ""
I $D(DUOUT)!$D(DTOUT) Q ""
Q Y
;
;==========================================
COMMSG(GLOBAL,START,END,NE,NERROR) ;Send a MailMan message providing
;notification that the indexing completed.
N FROM,MGIEN,MGROUP,TO,XMSUB
K ^TMP("PXRMXMZ",$J)
S XMSUB="Index for global "_GLOBAL_" successfully built"
S ^TMP("PXRMXMZ",$J,1,0)="Build of Clinical Reminders index for global "_GLOBAL_" completed."
S ^TMP("PXRMXMZ",$J,2,0)="Build finished at "_$$FMTE^XLFDT($$NOW^XLFDT,"5Z")
S ^TMP("PXRMXMZ",$J,3,0)=NE_" entries were created."
S ^TMP("PXRMXMZ",$J,4,0)=$$ETIME(START,END)
S ^TMP("PXRMXMZ",$J,5,0)=NERROR_" errors were encountered."
I NERROR>0 S ^TMP("PXRMXMZ",$J,6,0)="Another MailMan message will contain the error information."
S FROM=$$GET1^DIQ(200,DUZ,.01)
S TO(DUZ)=""
S MGIEN=$G(^PXRM(800,1,"MGFE"))
I MGIEN'="" D
. S MGROUP="G."_$$GET1^DIQ(3.8,MGIEN,.01)
. S TO(MGROUP)=""
D SEND^PXRMMSG("PXRMXMZ",XMSUB,.TO,FROM)
Q
;
;==========================================
DETIME(START,END) ;Write out the elapsed time.
;START and END are $H times.
N TEXT
S TEXT=$$ETIME(START,END)
D MES^XPDUTL(TEXT)
Q
;
;==========================================
ERRMSG(NERROR,GLOBAL) ;If there were errors send an error message.
N END,FROM,IND,MAXERR,MGIEN,MGROUP,NE,TO,XMSUB
I NERROR=0 Q
;Return the last MAXERR errors
S MAXERR=+$G(^PXRM(800,1,"MIERR"))
I MAXERR=0 S MAXERR=200
K ^TMP("PXRMXMZ",$J)
S END=$S(NERROR'>MAXERR:NERROR,1:MAXERR)
S NE=NERROR+1
F IND=1:1:END S NE=NE-1,^TMP("PXRMXMZ",$J,IND,0)=^TMP("PXRMERROR",$J,NE,0)
I END=MAXERR S ^TMP("PXRMXMZ",$J,MAXERR+1,0)="GLOBAL: "_GLOBAL_"- Maximum number of errors reached, will not report any more."
K ^TMP("PXRMERROR",$J)
S XMSUB="CLINICAL REMINDER INDEX BUILD ERROR(S) FOR GLOBAL "_GLOBAL
S FROM=$$GET1^DIQ(200,DUZ,.01)
S TO(DUZ)=""
S MGIEN=$G(^PXRM(800,1,"MGFE"))
I MGIEN'="" D
. S MGROUP="G."_$$GET1^DIQ(3.8,MGIEN,.01)
. S TO(MGROUP)=""
D SEND^PXRMMSG("PXRMXMZ",XMSUB,.TO,FROM)
Q
;
;==========================================
ETIME(START,END) ;Calculate and format the elapsed time.
;START and END are $H times.
N ETIME,TEXT
S ETIME=$$HDIFF^XLFDT(END,START,2)
I ETIME>90 D
. S ETIME=$$HDIFF^XLFDT(END,START,3)
. S TEXT="Elapsed time: "_ETIME
E S TEXT="Elapsed time: "_ETIME_" secs"
Q TEXT
;
;==========================================
INDEX ;Driver for building the various indexes.
N ANS,GBL,LIST,ROUTINE,TASKIT
S ROUTINE(45)="INDEX^DGPTDDCR" ;DBIA #4521
S ROUTINE(52)="PSRX^PSOPXRMI" ;DBIA #4522
S ROUTINE(55)="PSPA^PSSSXRD" ;DBIA #4172
S ROUTINE(63)="LAB^LRPXSXRL" ;DBIA #4247
S ROUTINE(70)="RAD^RAPXRM" ;DBIA #3731
S ROUTINE(100)="INDEX^ORPXRM" ;DBIA #4498
;IHS/MSC/MGH Patch 1001 120.5 and mental health not used by IHS
;S ROUTINE(120.5)="VITALS^GMVPXRM" ;DBIA #3647
;S ROUTINE(601.2)="INDEX^YTPXRM" ;DBIA #4523
S ROUTINE(601.84)="INDEX^YTQPXRM" ;DBIA #5055
S ROUTINE(9000011)="INDEX^GMPLPXRM" ;DBIA #4516
S ROUTINE(9000010.07)="VPOV^PXPXRMI2" ;DBIA #4520
S ROUTINE(9000010.11)="VIMM^PXPXRMI1" ;DBIA #4519
S ROUTINE(9000010.12)="VSK^PXPXRMI2" ;DBIA #4520
S ROUTINE(9000010.13)="VXAM^PXPXRMI2" ;DBIA #4520
S ROUTINE(9000010.16)="VPED^PXPXRMI2" ;DBIA #4520
S ROUTINE(9000010.18)="VCPT^PXPXRMI1" ;DBIA #4519
S ROUTINE(9000010.23)="VHF^PXPXRMI1" ;DBIA #4519
;IHS/MSC/MGH Patch 1001 added indices for non-VA V files
S ROUTINE(9000010.01)="VMEA^BPXRMDX1"
S ROUTINE(9000010.08)="VPRC^BPXRMDX1"
W !,"Rebuilding an index will stop all evaluation, dialogs,"
W !,"reminder order checks, and anything using reminder evaluation!"
W !,"Are you sure you want to proceed?"
S ANS=$$ASKYN^PXRMEUT("N","Rebuild index and disable reminder evaluation")
I 'ANS Q
;Get the list
W !,"Which indexes do you want to (re)build?"
D SEL(.LIST,.GBL)
I LIST="" Q
;See if this should be tasked.
S TASKIT=$$ASKTASK
I TASKIT="" Q
;Disable some PXRM options and protocols.
D OPTIONS^PXRMDIEV("index rebuild")
D PROTCOLS^PXRMDIEV("index rebuild")
I TASKIT D
. W !,"Queue the Clinical Reminders index job."
. D TASKIT(LIST,.GBL,.ROUTINE)
E D RUNNOW(LIST,.GBL,.ROUTINE)
Q
;
;==========================================
RUNNOW(LIST,GBL,ROUTINE) ;Run the routines now.
N IND,LI,NUM,RTN
S NUM=$L(LIST,",")-1
F IND=1:1:NUM D
. S LI=$P(LIST,",",IND)
. S RTN=ROUTINE(GBL(LI))
. D @RTN
. D INDEXD^PXRMDIEV(GBL(LI))
;Enable some PXRM options and protocols.
D OPTIONS^PXRMDIEV("")
D PROTCOLS^PXRMDIEV("")
Q
;
;==========================================
SEL(LIST,GBL) ;Select global list
;IHS/MSC/MGH Add and remove selections for IHS
N ALIST,DIR,DIROUT,DIRUT,DTOUT,DUOUT,INUM,X,Y
S INUM=1,ALIST(INUM)=" "_INUM_" - LABORATORY TEST (CH, Anatomic Path, Micro)",GBL(INUM)=63
;S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - MENTAL HEALTH",GBL(INUM)=601.2
;S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - MENTAL HEALTH (MHA3)",GBL(INUM)=601.84
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - ORDER",GBL(INUM)=100
;S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - PTF",GBL(INUM)=45
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - PHARMACY PATIENT",GBL(INUM)=55
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - PRESCRIPTION",GBL(INUM)=52
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - PROBLEM LIST",GBL(INUM)=9000011
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - RADIOLOGY",GBL(INUM)=70
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V CPT",GBL(INUM)=9000010.18
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V EXAM",GBL(INUM)=9000010.13
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V HEALTH FACTORS",GBL(INUM)=9000010.23
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V IMMUNIZATION",GBL(INUM)=9000010.11
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V PATIENT ED",GBL(INUM)=9000010.16
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V POV",GBL(INUM)=9000010.07
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V SKIN TEST",GBL(INUM)=9000010.12
;S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - VITAL MEASUREMENT",GBL(INUM)=120.5
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V MEASUREMENT",GBL(INUM)=9000010.01
S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - V PROCEDURE",GBL(INUM)=9000010.08
M DIR("A")=ALIST
S DIR("A")="Enter your list"
S DIR(0)="LO^1:"_INUM
D ^DIR
I $D(DIROUT)!$D(DIRUT) S LIST="" Q
I $D(DUOUT)!$D(DTOUT) S LIST="" Q
S LIST=Y
Q
;
;==========================================
TASKIT(LIST,GBL,ROUTINE) ;Build the indexes as a tasked job.
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,MINDT,SDTIME,X,Y
S MINDT=$$NOW^XLFDT
S DIR("A",1)="Enter the date and time you want the job to start."
S DIR("A",2)="It must be after "_$$FMTE^XLFDT(MINDT,"5Z")
S DIR("A")="Start the task at: "
S DIR(0)="DAU"_U_MINDT_"::RSX"
D ^DIR
I $D(DIROUT)!$D(DIRUT) Q
I $D(DUOUT)!$D(DTOUT) Q
S SDTIME=Y
;Put the task into the queue.
K ZTSAVE
S ZTSAVE("LIST")=""
S ZTSAVE("GBL(")=""
S ZTSAVE("ROUTINE(")=""
S ZTRTN="TASKJOB^PXRMSXRM"
S ZTDESC="Clinical Reminders index build"
S ZTDTH=SDTIME
S ZTIO=""
D ^%ZTLOAD
W !,"Task number ",ZTSK," queued."
Q
;
;==========================================
TASKJOB ;Execute as tasked job. LIST, GBL, and ROUTINE come through
;ZTSAVE.
N IND,LI,NUM,RTN
S ZTREQ="@"
S ZTSTOP=0
S NUM=$L(LIST,",")-1
F IND=1:1:NUM D
.;Check to see if the task has had a stop request
. I $$S^%ZTLOAD S ZTSTOP=1,IND=NUM Q
. S LI=$P(LIST,",",IND)
. S RTN=ROUTINE(GBL(LI))
. D @RTN
. D INDEXD^PXRMDIEV(GBL(LI))
Q
;
PXRMSXRM ; SLC/PKR - Main driver for building indexes. ;29-Apr-2015 12:46;DU
+1 ;;2.0;CLINICAL REMINDERS;**6,1001,17,26,1005**;Feb 04, 2005;Build 23
+2 ;IHS/MSC/MGH Patch 1001 Add indexes for V files
+3 ;
+4 ;==========================================
ADDERROR(GLOBAL,IDEN,NERROR) ;Add to the error list.
+1 SET NERROR=NERROR+1
+2 SET ^TMP("PXRMERROR",$JOB,NERROR,0)="GLOBAL: "_GLOBAL_" ENTRY: "_IDEN
+3 QUIT
+4 ;
+5 ;==========================================
ASKTASK() ;See if this should be tasked.
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
+2 SET DIR(0)="YO"
+3 SET DIR("A")="Do you want this to be tasked"
+4 SET DIR("B")="Y"
+5 DO ^DIR
+6 IF $DATA(DIROUT)!$DATA(DIRUT)
QUIT ""
+7 IF $DATA(DUOUT)!$DATA(DTOUT)
QUIT ""
+8 QUIT Y
+9 ;
+10 ;==========================================
COMMSG(GLOBAL,START,END,NE,NERROR) ;Send a MailMan message providing
+1 ;notification that the indexing completed.
+2 NEW FROM,MGIEN,MGROUP,TO,XMSUB
+3 KILL ^TMP("PXRMXMZ",$JOB)
+4 SET XMSUB="Index for global "_GLOBAL_" successfully built"
+5 SET ^TMP("PXRMXMZ",$JOB,1,0)="Build of Clinical Reminders index for global "_GLOBAL_" completed."
+6 SET ^TMP("PXRMXMZ",$JOB,2,0)="Build finished at "_$$FMTE^XLFDT($$NOW^XLFDT,"5Z")
+7 SET ^TMP("PXRMXMZ",$JOB,3,0)=NE_" entries were created."
+8 SET ^TMP("PXRMXMZ",$JOB,4,0)=$$ETIME(START,END)
+9 SET ^TMP("PXRMXMZ",$JOB,5,0)=NERROR_" errors were encountered."
+10 IF NERROR>0
SET ^TMP("PXRMXMZ",$JOB,6,0)="Another MailMan message will contain the error information."
+11 SET FROM=$$GET1^DIQ(200,DUZ,.01)
+12 SET TO(DUZ)=""
+13 SET MGIEN=$GET(^PXRM(800,1,"MGFE"))
+14 IF MGIEN'=""
Begin DoDot:1
+15 SET MGROUP="G."_$$GET1^DIQ(3.8,MGIEN,.01)
+16 SET TO(MGROUP)=""
End DoDot:1
+17 DO SEND^PXRMMSG("PXRMXMZ",XMSUB,.TO,FROM)
+18 QUIT
+19 ;
+20 ;==========================================
DETIME(START,END) ;Write out the elapsed time.
+1 ;START and END are $H times.
+2 NEW TEXT
+3 SET TEXT=$$ETIME(START,END)
+4 DO MES^XPDUTL(TEXT)
+5 QUIT
+6 ;
+7 ;==========================================
ERRMSG(NERROR,GLOBAL) ;If there were errors send an error message.
+1 NEW END,FROM,IND,MAXERR,MGIEN,MGROUP,NE,TO,XMSUB
+2 IF NERROR=0
QUIT
+3 ;Return the last MAXERR errors
+4 SET MAXERR=+$GET(^PXRM(800,1,"MIERR"))
+5 IF MAXERR=0
SET MAXERR=200
+6 KILL ^TMP("PXRMXMZ",$JOB)
+7 SET END=$SELECT(NERROR'>MAXERR:NERROR,1:MAXERR)
+8 SET NE=NERROR+1
+9 FOR IND=1:1:END
SET NE=NE-1
SET ^TMP("PXRMXMZ",$JOB,IND,0)=^TMP("PXRMERROR",$JOB,NE,0)
+10 IF END=MAXERR
SET ^TMP("PXRMXMZ",$JOB,MAXERR+1,0)="GLOBAL: "_GLOBAL_"- Maximum number of errors reached, will not report any more."
+11 KILL ^TMP("PXRMERROR",$JOB)
+12 SET XMSUB="CLINICAL REMINDER INDEX BUILD ERROR(S) FOR GLOBAL "_GLOBAL
+13 SET FROM=$$GET1^DIQ(200,DUZ,.01)
+14 SET TO(DUZ)=""
+15 SET MGIEN=$GET(^PXRM(800,1,"MGFE"))
+16 IF MGIEN'=""
Begin DoDot:1
+17 SET MGROUP="G."_$$GET1^DIQ(3.8,MGIEN,.01)
+18 SET TO(MGROUP)=""
End DoDot:1
+19 DO SEND^PXRMMSG("PXRMXMZ",XMSUB,.TO,FROM)
+20 QUIT
+21 ;
+22 ;==========================================
ETIME(START,END) ;Calculate and format the elapsed time.
+1 ;START and END are $H times.
+2 NEW ETIME,TEXT
+3 SET ETIME=$$HDIFF^XLFDT(END,START,2)
+4 IF ETIME>90
Begin DoDot:1
+5 SET ETIME=$$HDIFF^XLFDT(END,START,3)
+6 SET TEXT="Elapsed time: "_ETIME
End DoDot:1
+7 IF '$TEST
SET TEXT="Elapsed time: "_ETIME_" secs"
+8 QUIT TEXT
+9 ;
+10 ;==========================================
INDEX ;Driver for building the various indexes.
+1 NEW ANS,GBL,LIST,ROUTINE,TASKIT
+2 ;DBIA #4521
SET ROUTINE(45)="INDEX^DGPTDDCR"
+3 ;DBIA #4522
SET ROUTINE(52)="PSRX^PSOPXRMI"
+4 ;DBIA #4172
SET ROUTINE(55)="PSPA^PSSSXRD"
+5 ;DBIA #4247
SET ROUTINE(63)="LAB^LRPXSXRL"
+6 ;DBIA #3731
SET ROUTINE(70)="RAD^RAPXRM"
+7 ;DBIA #4498
SET ROUTINE(100)="INDEX^ORPXRM"
+8 ;IHS/MSC/MGH Patch 1001 120.5 and mental health not used by IHS
+9 ;S ROUTINE(120.5)="VITALS^GMVPXRM" ;DBIA #3647
+10 ;S ROUTINE(601.2)="INDEX^YTPXRM" ;DBIA #4523
+11 ;DBIA #5055
SET ROUTINE(601.84)="INDEX^YTQPXRM"
+12 ;DBIA #4516
SET ROUTINE(9000011)="INDEX^GMPLPXRM"
+13 ;DBIA #4520
SET ROUTINE(9000010.07)="VPOV^PXPXRMI2"
+14 ;DBIA #4519
SET ROUTINE(9000010.11)="VIMM^PXPXRMI1"
+15 ;DBIA #4520
SET ROUTINE(9000010.12)="VSK^PXPXRMI2"
+16 ;DBIA #4520
SET ROUTINE(9000010.13)="VXAM^PXPXRMI2"
+17 ;DBIA #4520
SET ROUTINE(9000010.16)="VPED^PXPXRMI2"
+18 ;DBIA #4519
SET ROUTINE(9000010.18)="VCPT^PXPXRMI1"
+19 ;DBIA #4519
SET ROUTINE(9000010.23)="VHF^PXPXRMI1"
+20 ;IHS/MSC/MGH Patch 1001 added indices for non-VA V files
+21 SET ROUTINE(9000010.01)="VMEA^BPXRMDX1"
+22 SET ROUTINE(9000010.08)="VPRC^BPXRMDX1"
+23 WRITE !,"Rebuilding an index will stop all evaluation, dialogs,"
+24 WRITE !,"reminder order checks, and anything using reminder evaluation!"
+25 WRITE !,"Are you sure you want to proceed?"
+26 SET ANS=$$ASKYN^PXRMEUT("N","Rebuild index and disable reminder evaluation")
+27 IF 'ANS
QUIT
+28 ;Get the list
+29 WRITE !,"Which indexes do you want to (re)build?"
+30 DO SEL(.LIST,.GBL)
+31 IF LIST=""
QUIT
+32 ;See if this should be tasked.
+33 SET TASKIT=$$ASKTASK
+34 IF TASKIT=""
QUIT
+35 ;Disable some PXRM options and protocols.
+36 DO OPTIONS^PXRMDIEV("index rebuild")
+37 DO PROTCOLS^PXRMDIEV("index rebuild")
+38 IF TASKIT
Begin DoDot:1
+39 WRITE !,"Queue the Clinical Reminders index job."
+40 DO TASKIT(LIST,.GBL,.ROUTINE)
End DoDot:1
+41 IF '$TEST
DO RUNNOW(LIST,.GBL,.ROUTINE)
+42 QUIT
+43 ;
+44 ;==========================================
RUNNOW(LIST,GBL,ROUTINE) ;Run the routines now.
+1 NEW IND,LI,NUM,RTN
+2 SET NUM=$LENGTH(LIST,",")-1
+3 FOR IND=1:1:NUM
Begin DoDot:1
+4 SET LI=$PIECE(LIST,",",IND)
+5 SET RTN=ROUTINE(GBL(LI))
+6 DO @RTN
+7 DO INDEXD^PXRMDIEV(GBL(LI))
End DoDot:1
+8 ;Enable some PXRM options and protocols.
+9 DO OPTIONS^PXRMDIEV("")
+10 DO PROTCOLS^PXRMDIEV("")
+11 QUIT
+12 ;
+13 ;==========================================
SEL(LIST,GBL) ;Select global list
+1 ;IHS/MSC/MGH Add and remove selections for IHS
+2 NEW ALIST,DIR,DIROUT,DIRUT,DTOUT,DUOUT,INUM,X,Y
+3 SET INUM=1
SET ALIST(INUM)=" "_INUM_" - LABORATORY TEST (CH, Anatomic Path, Micro)"
SET GBL(INUM)=63
+4 ;S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - MENTAL HEALTH",GBL(INUM)=601.2
+5 ;S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - MENTAL HEALTH (MHA3)",GBL(INUM)=601.84
+6 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - ORDER"
SET GBL(INUM)=100
+7 ;S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - PTF",GBL(INUM)=45
+8 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - PHARMACY PATIENT"
SET GBL(INUM)=55
+9 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - PRESCRIPTION"
SET GBL(INUM)=52
+10 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - PROBLEM LIST"
SET GBL(INUM)=9000011
+11 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - RADIOLOGY"
SET GBL(INUM)=70
+12 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V CPT"
SET GBL(INUM)=9000010.18
+13 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V EXAM"
SET GBL(INUM)=9000010.13
+14 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V HEALTH FACTORS"
SET GBL(INUM)=9000010.23
+15 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V IMMUNIZATION"
SET GBL(INUM)=9000010.11
+16 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V PATIENT ED"
SET GBL(INUM)=9000010.16
+17 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V POV"
SET GBL(INUM)=9000010.07
+18 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V SKIN TEST"
SET GBL(INUM)=9000010.12
+19 ;S INUM=INUM+1,ALIST(INUM)=" "_INUM_" - VITAL MEASUREMENT",GBL(INUM)=120.5
+20 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V MEASUREMENT"
SET GBL(INUM)=9000010.01
+21 SET INUM=INUM+1
SET ALIST(INUM)=" "_INUM_" - V PROCEDURE"
SET GBL(INUM)=9000010.08
+22 MERGE DIR("A")=ALIST
+23 SET DIR("A")="Enter your list"
+24 SET DIR(0)="LO^1:"_INUM
+25 DO ^DIR
+26 IF $DATA(DIROUT)!$DATA(DIRUT)
SET LIST=""
QUIT
+27 IF $DATA(DUOUT)!$DATA(DTOUT)
SET LIST=""
QUIT
+28 SET LIST=Y
+29 QUIT
+30 ;
+31 ;==========================================
TASKIT(LIST,GBL,ROUTINE) ;Build the indexes as a tasked job.
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,MINDT,SDTIME,X,Y
+2 SET MINDT=$$NOW^XLFDT
+3 SET DIR("A",1)="Enter the date and time you want the job to start."
+4 SET DIR("A",2)="It must be after "_$$FMTE^XLFDT(MINDT,"5Z")
+5 SET DIR("A")="Start the task at: "
+6 SET DIR(0)="DAU"_U_MINDT_"::RSX"
+7 DO ^DIR
+8 IF $DATA(DIROUT)!$DATA(DIRUT)
QUIT
+9 IF $DATA(DUOUT)!$DATA(DTOUT)
QUIT
+10 SET SDTIME=Y
+11 ;Put the task into the queue.
+12 KILL ZTSAVE
+13 SET ZTSAVE("LIST")=""
+14 SET ZTSAVE("GBL(")=""
+15 SET ZTSAVE("ROUTINE(")=""
+16 SET ZTRTN="TASKJOB^PXRMSXRM"
+17 SET ZTDESC="Clinical Reminders index build"
+18 SET ZTDTH=SDTIME
+19 SET ZTIO=""
+20 DO ^%ZTLOAD
+21 WRITE !,"Task number ",ZTSK," queued."
+22 QUIT
+23 ;
+24 ;==========================================
TASKJOB ;Execute as tasked job. LIST, GBL, and ROUTINE come through
+1 ;ZTSAVE.
+2 NEW IND,LI,NUM,RTN
+3 SET ZTREQ="@"
+4 SET ZTSTOP=0
+5 SET NUM=$LENGTH(LIST,",")-1
+6 FOR IND=1:1:NUM
Begin DoDot:1
+7 ;Check to see if the task has had a stop request
+8 IF $$S^%ZTLOAD
SET ZTSTOP=1
SET IND=NUM
QUIT
+9 SET LI=$PIECE(LIST,",",IND)
+10 SET RTN=ROUTINE(GBL(LI))
+11 DO @RTN
+12 DO INDEXD^PXRMDIEV(GBL(LI))
End DoDot:1
+13 QUIT
+14 ;