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