SCRPW74 ;BP-CIOFO/KEITH,ESW - Clinic appointment availability extract (cont.) ; 6/10/03 9:13am
;;5.3;Scheduling;**192,206,223,241,249,291**;AUG 13, 1993
;
MON(SDEX,SDT,SDMON) ;Determine month and date ranges for extracts
;Input: SDEX=extract type, '1' for prospective, '2' for retrospective
;Input: SDT=date of extract run
;Input: SDMON=array to return date information (pass by reference)
;Output: month/year of extract^begin date of report data
;Output: SDMON array as follows:
; SDMON("SDBDT")=begin date
; SDMON("SDDIV")=0
; SDMON("SDEDT")=end date
; SDMON("SDEX")=extract type ('1' or '2')
; SDMON("SDPAST")='1' for extract 2, '0' otherwise
; SDMON("SDPBDT")=begin date external value
; SDMON("SDPEDT")=end date external value
; SDMON("SDRPT")=month/year of extract^begin date of data
;
N SDPAR,Y,SDX,SDY,X1,X2
S SDMON("SDDIV")=0,SDMON("SDPAST")=$S(SDEX=1:0,1:1)
S SDMON("SDEX")=SDEX,SDPAR=$G(^SD(404.91,1,"PATCH192"))
I SDEX=1 D
.S Y=$S($E(SDT,4,5)=12:$E(SDT,1,3)+1_"0101",1:$E(SDT,1,5)+1_"01")
.S SDMON("SDBDT")=Y X ^DD("DD") S SDMON("SDPBDT")=Y
.S X1=SDMON("SDBDT"),X2=$P(SDPAR,U,2) S:X2<1 X2=180 S X2=X2-1
.D C^%DTC S (SDMON("SDEDT"),Y)=X X ^DD("DD") S SDMON("SDPEDT")=Y
.Q
I SDEX=2 D
.S Y=$S($E(SDT,4,5)="01":$E(SDT,1,3)-1_1201,1:$E(SDT,1,5)-1_"01")
.S SDMON("SDBDT")=Y X ^DD("DD") S SDMON("SDPBDT")=Y
.S X1=SDMON("SDBDT"),X2=$P(SDPAR,U,4) S:X2<1 X2=31 S X2=X2-1
.D C^%DTC I $E(X,1,5)>$E(SDMON("SDBDT"),1,5) D
..S X1=$E(X,1,5)_"01",X2=-1 D C^%DTC Q
.S (SDMON("SDEDT"),Y)=X X ^DD("DD") S SDMON("SDPEDT")=Y
.Q
S SDY=SDMON("SDBDT")
S:SDEX=2 SDY=$S($E(SDY,4,5)=12:$E(SDY,1,3)+1_"0101",1:$E(SDY,1,5)+1_"01") S SDX=+$E(SDY,4,5)
S SDX=$P("JANUARY^FEBRUARY^MARCH^APRIL^MAY^JUNE^JULY^AUGUST^SEPTEMBER^OCTOBER^NOVEMBER^DECEMBER",U,SDX)
S SDX=SDX_" "_(17+$E(SDY)_$E(SDY,2,3))_U_SDMON("SDBDT")
S SDMON("SDRPT")=SDX
Q SDX
;
QDIS(SDXTMP) ;Display extract queuing information
;Input: SDXTMP=array of data from ^XTMP("SD53P192")
N SDEX,Y
W !!?18,"*** Extract queuing information on file ***"
I '$D(SDXTMP) W !!,"==> No extract queuing data found" Q
F SDEX=1,2 D
.W !!?22,"Extract ",SDEX," report: ",$P($G(SDXTMP("EXTRACT",SDEX,"REPORT")),U)
.W !?24,"Extract ",SDEX," task: ",$G(SDXTMP("EXTRACT",SDEX,"TASK"))
.S Y=$G(SDXTMP("EXTRACT",SDEX,"DATE")) I Y X ^DD("DD")
.W !?20,"Extract ",SDEX," run date: ",Y
.Q
Q
;
DAYS(SDATE,SDAY) ;Adjust target day if necessary
;Input: SDATE=date
;Input: SDAY=target day
;Output: target SDAY for the month of SDATE, adjusted if necessary
N SDX,X,X1,X2
S X1=$S($E(SDATE,4,5)=12:($E(SDATE,1,3)+1)_"01",1:$E(SDATE,1,5)+1)_"01"
S X2=-1 D C^%DTC S SDX=$E(X,6,7)
Q $S(SDX<SDAY:SDX,1:SDAY)
;
WHEN(SDEX,SDNOW) ;Determine date for next run
;Input: SDEX=extract type
;Input: SDDT=date/time to calculate from (optional)
;Output: if success, date/time for next run
; if already scheduled, -1^date_scheduled^task_number
N SDPAR,SDAY,X1,X2,X,SDTIME,SDINT,SDT,SDDT
S SDNOW=$G(SDNOW) I SDNOW<1 S SDNOW=$$NOW^XLFDT()
S SDDT=$P(SDNOW,".")
;
;Quit if already scheduled
Q:$G(^XTMP("SD53P192","EXTRACT",SDEX,"DATE"))>SDNOW "-1^"_^XTMP("SD53P192","EXTRACT",SDEX,"DATE")_U_$G(^XTMP("SD53P192","EXTRACT",SDEX,"TASK"))
;
S SDPAR=$G(^SD(404.91,1,"PATCH192")),SDAY=$P(SDPAR,U) S:'SDAY SDAY=31
S SDINT=$P(SDPAR,U,5) I SDINT=""!("MQSA"'[SDINT) S SDINT="M"
S SDTIME=$P(SDPAR,U,6) I 'SDTIME!(SDTIME>.2359) S SDTIME=.22
S X1=$E(SDDT,1,5)_"01",X2=$$DAYS(SDDT,SDAY)-1 D C^%DTC
I (X+SDTIME)<SDNOW D
.S X1=$S($E(X,4,5)=12:($E(X,1,3)+1)_"01",1:$E(X,1,5)+1)_"01"
.S X2=$$DAYS(X1,SDAY)-1 D C^%DTC
.Q
;
;Values for monthly queuing
I SDINT="M" Q:SDEX=1 X+SDTIME Q $$WHEN2(X)
;
;Values for quarterly queuing
I SDINT="Q" D Q X
.S X1=+$E(X,4,5),X1=$S(X1<4:"03",X1<7:"06",X1<10:"09",1:12)
.S X1=$E(X,1,3)_X1_"01",X2=$$DAYS(X1,SDAY)-1 D C^%DTC
.I SDEX=1 S X=X+SDTIME Q
.S X=$$WHEN2(X) Q
;
;Values for semi-annual queuing
I SDINT="S" D Q X
.S X1=+$E(X,4,5) S:X1>9 X=$E(X,1,3)+1_$E(X,4,7)
.S X1=$S(X1<4:"03",X1<10:"09",1:"03")
.S X1=$E(X,1,3)_X1_"01",X2=$$DAYS(X1,SDAY)-1 D C^%DTC
.I SDEX=1 S X=X+SDTIME Q
.S X=$$WHEN2(X) Q
;
;Values for annual queuing
S X1=+$E(X,4,5) S:X1>9 X=$E(X,1,3)+1_$E(X,4,7)
S X=$E(X,1,3)_"0901",X2=$$DAYS(X1,SDAY)-1 D C^%DTC
Q:SDEX=1 X+SDTIME Q $$WHEN2(X)
;
WHEN2(X) ;Determine date for extract 2
;Input: X=date for extract 1
;Output: date/time for extract 2
S SDT=$S($E(X,4,5)=12:$E(X,1,3)+1_"0101",1:$E(X,1,5)+1_"01")
S SDAY=$P(SDPAR,U,3) S:'SDAY!SDAY>31 SDAY=5
S X1=SDT,X2=$$DAYS(SDT,SDAY)-1 D C^%DTC
S X=X+SDTIME Q X
;
SCHED(SDEX,SDT,SDRPT,SDMON,SDKID) ;Schedule repetitive extract run
;Input: SDEX=extract type
;Input: SDT=date/time to queue extract
;Input: SDRPT=month/year of report^begin date of report data
;Input: SDMON=report parameters from MON^SCRPW74 (pass by reference)
;Input: SDKID='1' if from KIDS install (optional)
N SDI,Y,ZTSK,ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSAVE
S ZTDTH=SDT,ZTSAVE("SDMON(")="",ZTRTN="RUN^SCRPW74(1)",ZTIO=""
S ZTDESC="Clinic Appointment Wait Time Extract ("_SDMON("SDEX")_")"
F SDI=1:1:20 D ^%ZTLOAD Q:$G(ZTSK)
;
QQ I '$G(ZTSK) D Q
.I $G(SDKID) D BMES^XPDUTL("Extract not queued!!!") Q
.W !!,"Extract not queued!!!",! Q
S Y=SDT X ^DD("DD")
I $G(SDKID) D BMES^XPDUTL("Extract "_SDEX_" queued for "_Y_", task number: "_ZTSK)
I '$G(SDKID) W !!,"Extract "_SDEX_" queued for "_Y_", task number: "_ZTSK,!
;
XTMP ;Service ^XTMP nodes
N X1,X2,X
S X1=$P($P(SDT,U),"."),X2=45 D C^%DTC S SDPGDT=X
I '$D(^XTMP("SD53P192",0)) D
.S ^XTMP("SD53P192",0)=SDPGDT_"^Patch SD*5.3*192 'Clinic Wait Time' extract repetitive queuing information. Created by user: "_DUZ
.Q
S:$P(^XTMP("SD53P192",0),U)<SDPGDT $P(^XTMP("SD53P192",0),U)=SDPGDT
S ^XTMP("SD53P192","EXTRACT",SDEX,"TASK")=ZTSK
S ^XTMP("SD53P192","EXTRACT",SDEX,"DATE")=SDT
S ^XTMP("SD53P192","EXTRACT",SDEX,"REPORT")=SDRPT
Q
;
RUN(SDR) ;Run extract (reschedule if requested)
;Input: SDR='1' if rescheduling is requested, '0' otherwise.
N SDV,SDBDT,SDDIV,SDEDT,SDEX,SDPAST,SDPBDT,SDPEDT,SDRPT
S SDV="" F S SDV=$O(SDMON(SDV)) Q:SDV="" S @SDV=SDMON(SDV)
I SDR=1 D
.I $G(^XTMP("SD53P192","EXTRACT",SDEX,"TASK"))=ZTSK K ^XTMP("SD53P192","EXTRACT",SDEX)
.N SDT,SDMON
.S SDT=$P(SDRPT,U,2)
.S:SDEX=2 SDT=$S($E(SDT,4,5)=12:$E(SDT,1,3)+1_"0101",1:$E(SDT,1,5)+1_"01")
.S SDT=$$WHEN(SDEX),SDRPT=$$MON(SDEX,SDT,.SDMON)
.D SCHED(SDEX,SDT,SDRPT,.SDMON)
.Q
D EXTRACT^SCRPW72
;
EXIT I $E(IOST)="C",'$G(SDOUT),'$G(SDXM) N DIR S DIR(0)="E" D ^DIR
F SDI="SD","SDS","SDTMP","SDTOT","SDXM","SDNAVA","SDNAVB","SDIP","SDPAT","SDORD","SDIPLST" K ^TMP(SDI,$J)
K ^TMP("SDPAT",+$G(SDJN))
K %,%DT,%H,%I,%T,%Y,CT,D,DA,DAY,DIC,DIE,DIR,DR,DTOUT,DUOUT,ENDATE
K I,J,MAX,MAXDT,SC,SC0,SCNA,SD,SDAY,SDBDT,SDBEG,SDC,SDFLEN,SDREPORT
K SDCAP,SDCCP,SDCNAM,SDCOL,SDCP,SDCT,SDDAY,SDDIV,SDDT,SDDV,SDDW
K SDEDT,SDEND,SDEX,SDEXDT,SDFAC,SDFMT,SDHD,SDI,SDIN,SDINT,SDIV
K SDKID,SDL,SDLINE,SDMAX,SDMD,SDMG,SDMON,SDMPDT,SDNOW,SDOE,SDOE0
K SDOUT,SDP,SDPAGE,SDPAR,SDPAST,SDPATT,SDPBDT,SDPCT,SDPEDT,SDPG
K SDPGDT,SDPNOW,SDQUIT,SDR,SDRE,SDRPT,SDS,SDSC1,SDSC2,SDSIZE,SDSL
K SDSOH,SDSORT,SDSSC,SDSTRTDT,SDT,SDTCAP,SDTIME,SDTIT,SDTITL,SDTOE
K SDTSL,SDTX,SDTY,SDV,SDX,SDXM,SDXTMP,SDY,SDZ,SI,SM,SS,X,X1,X2,Y
K SDJN,SDFMT,SDFMTS
D:$D(IOM) END^SCRPW50 Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCRPW74 7475 printed Nov 22, 2024@17:54:03 Page 2
SCRPW74 ;BP-CIOFO/KEITH,ESW - Clinic appointment availability extract (cont.) ; 6/10/03 9:13am
+1 ;;5.3;Scheduling;**192,206,223,241,249,291**;AUG 13, 1993
+2 ;
MON(SDEX,SDT,SDMON) ;Determine month and date ranges for extracts
+1 ;Input: SDEX=extract type, '1' for prospective, '2' for retrospective
+2 ;Input: SDT=date of extract run
+3 ;Input: SDMON=array to return date information (pass by reference)
+4 ;Output: month/year of extract^begin date of report data
+5 ;Output: SDMON array as follows:
+6 ; SDMON("SDBDT")=begin date
+7 ; SDMON("SDDIV")=0
+8 ; SDMON("SDEDT")=end date
+9 ; SDMON("SDEX")=extract type ('1' or '2')
+10 ; SDMON("SDPAST")='1' for extract 2, '0' otherwise
+11 ; SDMON("SDPBDT")=begin date external value
+12 ; SDMON("SDPEDT")=end date external value
+13 ; SDMON("SDRPT")=month/year of extract^begin date of data
+14 ;
+15 NEW SDPAR,Y,SDX,SDY,X1,X2
+16 SET SDMON("SDDIV")=0
SET SDMON("SDPAST")=$SELECT(SDEX=1:0,1:1)
+17 SET SDMON("SDEX")=SDEX
SET SDPAR=$GET(^SD(404.91,1,"PATCH192"))
+18 IF SDEX=1
Begin DoDot:1
+19 SET Y=$SELECT($EXTRACT(SDT,4,5)=12:$EXTRACT(SDT,1,3)+1_"0101",1:$EXTRACT(SDT,1,5)+1_"01")
+20 SET SDMON("SDBDT")=Y
XECUTE ^DD("DD")
SET SDMON("SDPBDT")=Y
+21 SET X1=SDMON("SDBDT")
SET X2=$PIECE(SDPAR,U,2)
if X2<1
SET X2=180
SET X2=X2-1
+22 DO C^%DTC
SET (SDMON("SDEDT"),Y)=X
XECUTE ^DD("DD")
SET SDMON("SDPEDT")=Y
+23 QUIT
End DoDot:1
+24 IF SDEX=2
Begin DoDot:1
+25 SET Y=$SELECT($EXTRACT(SDT,4,5)="01":$EXTRACT(SDT,1,3)-1_1201,1:$EXTRACT(SDT,1,5)-1_"01")
+26 SET SDMON("SDBDT")=Y
XECUTE ^DD("DD")
SET SDMON("SDPBDT")=Y
+27 SET X1=SDMON("SDBDT")
SET X2=$PIECE(SDPAR,U,4)
if X2<1
SET X2=31
SET X2=X2-1
+28 DO C^%DTC
IF $EXTRACT(X,1,5)>$EXTRACT(SDMON("SDBDT"),1,5)
Begin DoDot:2
+29 SET X1=$EXTRACT(X,1,5)_"01"
SET X2=-1
DO C^%DTC
QUIT
End DoDot:2
+30 SET (SDMON("SDEDT"),Y)=X
XECUTE ^DD("DD")
SET SDMON("SDPEDT")=Y
+31 QUIT
End DoDot:1
+32 SET SDY=SDMON("SDBDT")
+33 if SDEX=2
SET SDY=$SELECT($EXTRACT(SDY,4,5)=12:$EXTRACT(SDY,1,3)+1_"0101",1:$EXTRACT(SDY,1,5)+1_"01")
SET SDX=+$EXTRACT(SDY,4,5)
+34 SET SDX=$PIECE("JANUARY^FEBRUARY^MARCH^APRIL^MAY^JUNE^JULY^AUGUST^SEPTEMBER^OCTOBER^NOVEMBER^DECEMBER",U,SDX)
+35 SET SDX=SDX_" "_(17+$EXTRACT(SDY)_$EXTRACT(SDY,2,3))_U_SDMON("SDBDT")
+36 SET SDMON("SDRPT")=SDX
+37 QUIT SDX
+38 ;
QDIS(SDXTMP) ;Display extract queuing information
+1 ;Input: SDXTMP=array of data from ^XTMP("SD53P192")
+2 NEW SDEX,Y
+3 WRITE !!?18,"*** Extract queuing information on file ***"
+4 IF '$DATA(SDXTMP)
WRITE !!,"==> No extract queuing data found"
QUIT
+5 FOR SDEX=1,2
Begin DoDot:1
+6 WRITE !!?22,"Extract ",SDEX," report: ",$PIECE($GET(SDXTMP("EXTRACT",SDEX,"REPORT")),U)
+7 WRITE !?24,"Extract ",SDEX," task: ",$GET(SDXTMP("EXTRACT",SDEX,"TASK"))
+8 SET Y=$GET(SDXTMP("EXTRACT",SDEX,"DATE"))
IF Y
XECUTE ^DD("DD")
+9 WRITE !?20,"Extract ",SDEX," run date: ",Y
+10 QUIT
End DoDot:1
+11 QUIT
+12 ;
DAYS(SDATE,SDAY) ;Adjust target day if necessary
+1 ;Input: SDATE=date
+2 ;Input: SDAY=target day
+3 ;Output: target SDAY for the month of SDATE, adjusted if necessary
+4 NEW SDX,X,X1,X2
+5 SET X1=$SELECT($EXTRACT(SDATE,4,5)=12:($EXTRACT(SDATE,1,3)+1)_"01",1:$EXTRACT(SDATE,1,5)+1)_"01"
+6 SET X2=-1
DO C^%DTC
SET SDX=$EXTRACT(X,6,7)
+7 QUIT $SELECT(SDX<SDAY:SDX,1:SDAY)
+8 ;
WHEN(SDEX,SDNOW) ;Determine date for next run
+1 ;Input: SDEX=extract type
+2 ;Input: SDDT=date/time to calculate from (optional)
+3 ;Output: if success, date/time for next run
+4 ; if already scheduled, -1^date_scheduled^task_number
+5 NEW SDPAR,SDAY,X1,X2,X,SDTIME,SDINT,SDT,SDDT
+6 SET SDNOW=$GET(SDNOW)
IF SDNOW<1
SET SDNOW=$$NOW^XLFDT()
+7 SET SDDT=$PIECE(SDNOW,".")
+8 ;
+9 ;Quit if already scheduled
+10 if $GET(^XTMP("SD53P192","EXTRACT",SDEX,"DATE"))>SDNOW
QUIT "-1^"_^XTMP("SD53P192","EXTRACT",SDEX,"DATE")_U_$GET(^XTMP("SD53P192","EXTRACT",SDEX,"TASK"))
+11 ;
+12 SET SDPAR=$GET(^SD(404.91,1,"PATCH192"))
SET SDAY=$PIECE(SDPAR,U)
if 'SDAY
SET SDAY=31
+13 SET SDINT=$PIECE(SDPAR,U,5)
IF SDINT=""!("MQSA"'[SDINT)
SET SDINT="M"
+14 SET SDTIME=$PIECE(SDPAR,U,6)
IF 'SDTIME!(SDTIME>.2359)
SET SDTIME=.22
+15 SET X1=$EXTRACT(SDDT,1,5)_"01"
SET X2=$$DAYS(SDDT,SDAY)-1
DO C^%DTC
+16 IF (X+SDTIME)<SDNOW
Begin DoDot:1
+17 SET X1=$SELECT($EXTRACT(X,4,5)=12:($EXTRACT(X,1,3)+1)_"01",1:$EXTRACT(X,1,5)+1)_"01"
+18 SET X2=$$DAYS(X1,SDAY)-1
DO C^%DTC
+19 QUIT
End DoDot:1
+20 ;
+21 ;Values for monthly queuing
+22 IF SDINT="M"
if SDEX=1
QUIT X+SDTIME
QUIT $$WHEN2(X)
+23 ;
+24 ;Values for quarterly queuing
+25 IF SDINT="Q"
Begin DoDot:1
+26 SET X1=+$EXTRACT(X,4,5)
SET X1=$SELECT(X1<4:"03",X1<7:"06",X1<10:"09",1:12)
+27 SET X1=$EXTRACT(X,1,3)_X1_"01"
SET X2=$$DAYS(X1,SDAY)-1
DO C^%DTC
+28 IF SDEX=1
SET X=X+SDTIME
QUIT
+29 SET X=$$WHEN2(X)
QUIT
End DoDot:1
QUIT X
+30 ;
+31 ;Values for semi-annual queuing
+32 IF SDINT="S"
Begin DoDot:1
+33 SET X1=+$EXTRACT(X,4,5)
if X1>9
SET X=$EXTRACT(X,1,3)+1_$EXTRACT(X,4,7)
+34 SET X1=$SELECT(X1<4:"03",X1<10:"09",1:"03")
+35 SET X1=$EXTRACT(X,1,3)_X1_"01"
SET X2=$$DAYS(X1,SDAY)-1
DO C^%DTC
+36 IF SDEX=1
SET X=X+SDTIME
QUIT
+37 SET X=$$WHEN2(X)
QUIT
End DoDot:1
QUIT X
+38 ;
+39 ;Values for annual queuing
+40 SET X1=+$EXTRACT(X,4,5)
if X1>9
SET X=$EXTRACT(X,1,3)+1_$EXTRACT(X,4,7)
+41 SET X=$EXTRACT(X,1,3)_"0901"
SET X2=$$DAYS(X1,SDAY)-1
DO C^%DTC
+42 if SDEX=1
QUIT X+SDTIME
QUIT $$WHEN2(X)
+43 ;
WHEN2(X) ;Determine date for extract 2
+1 ;Input: X=date for extract 1
+2 ;Output: date/time for extract 2
+3 SET SDT=$SELECT($EXTRACT(X,4,5)=12:$EXTRACT(X,1,3)+1_"0101",1:$EXTRACT(X,1,5)+1_"01")
+4 SET SDAY=$PIECE(SDPAR,U,3)
if 'SDAY!SDAY>31
SET SDAY=5
+5 SET X1=SDT
SET X2=$$DAYS(SDT,SDAY)-1
DO C^%DTC
+6 SET X=X+SDTIME
QUIT X
+7 ;
SCHED(SDEX,SDT,SDRPT,SDMON,SDKID) ;Schedule repetitive extract run
+1 ;Input: SDEX=extract type
+2 ;Input: SDT=date/time to queue extract
+3 ;Input: SDRPT=month/year of report^begin date of report data
+4 ;Input: SDMON=report parameters from MON^SCRPW74 (pass by reference)
+5 ;Input: SDKID='1' if from KIDS install (optional)
+6 NEW SDI,Y,ZTSK,ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSAVE
+7 SET ZTDTH=SDT
SET ZTSAVE("SDMON(")=""
SET ZTRTN="RUN^SCRPW74(1)"
SET ZTIO=""
+8 SET ZTDESC="Clinic Appointment Wait Time Extract ("_SDMON("SDEX")_")"
+9 FOR SDI=1:1:20
DO ^%ZTLOAD
if $GET(ZTSK)
QUIT
+10 ;
QQ IF '$GET(ZTSK)
Begin DoDot:1
+1 IF $GET(SDKID)
DO BMES^XPDUTL("Extract not queued!!!")
QUIT
+2 WRITE !!,"Extract not queued!!!",!
QUIT
End DoDot:1
QUIT
+3 SET Y=SDT
XECUTE ^DD("DD")
+4 IF $GET(SDKID)
DO BMES^XPDUTL("Extract "_SDEX_" queued for "_Y_", task number: "_ZTSK)
+5 IF '$GET(SDKID)
WRITE !!,"Extract "_SDEX_" queued for "_Y_", task number: "_ZTSK,!
+6 ;
XTMP ;Service ^XTMP nodes
+1 NEW X1,X2,X
+2 SET X1=$PIECE($PIECE(SDT,U),".")
SET X2=45
DO C^%DTC
SET SDPGDT=X
+3 IF '$DATA(^XTMP("SD53P192",0))
Begin DoDot:1
+4 SET ^XTMP("SD53P192",0)=SDPGDT_"^Patch SD*5.3*192 'Clinic Wait Time' extract repetitive queuing information. Created by user: "_DUZ
+5 QUIT
End DoDot:1
+6 if $PIECE(^XTMP("SD53P192",0),U)<SDPGDT
SET $PIECE(^XTMP("SD53P192",0),U)=SDPGDT
+7 SET ^XTMP("SD53P192","EXTRACT",SDEX,"TASK")=ZTSK
+8 SET ^XTMP("SD53P192","EXTRACT",SDEX,"DATE")=SDT
+9 SET ^XTMP("SD53P192","EXTRACT",SDEX,"REPORT")=SDRPT
+10 QUIT
+11 ;
RUN(SDR) ;Run extract (reschedule if requested)
+1 ;Input: SDR='1' if rescheduling is requested, '0' otherwise.
+2 NEW SDV,SDBDT,SDDIV,SDEDT,SDEX,SDPAST,SDPBDT,SDPEDT,SDRPT
+3 SET SDV=""
FOR
SET SDV=$ORDER(SDMON(SDV))
if SDV=""
QUIT
SET @SDV=SDMON(SDV)
+4 IF SDR=1
Begin DoDot:1
+5 IF $GET(^XTMP("SD53P192","EXTRACT",SDEX,"TASK"))=ZTSK
KILL ^XTMP("SD53P192","EXTRACT",SDEX)
+6 NEW SDT,SDMON
+7 SET SDT=$PIECE(SDRPT,U,2)
+8 if SDEX=2
SET SDT=$SELECT($EXTRACT(SDT,4,5)=12:$EXTRACT(SDT,1,3)+1_"0101",1:$EXTRACT(SDT,1,5)+1_"01")
+9 SET SDT=$$WHEN(SDEX)
SET SDRPT=$$MON(SDEX,SDT,.SDMON)
+10 DO SCHED(SDEX,SDT,SDRPT,.SDMON)
+11 QUIT
End DoDot:1
+12 DO EXTRACT^SCRPW72
+13 ;
EXIT IF $EXTRACT(IOST)="C"
IF '$GET(SDOUT)
IF '$GET(SDXM)
NEW DIR
SET DIR(0)="E"
DO ^DIR
+1 FOR SDI="SD","SDS","SDTMP","SDTOT","SDXM","SDNAVA","SDNAVB","SDIP","SDPAT","SDORD","SDIPLST"
KILL ^TMP(SDI,$JOB)
+2 KILL ^TMP("SDPAT",+$GET(SDJN))
+3 KILL %,%DT,%H,%I,%T,%Y,CT,D,DA,DAY,DIC,DIE,DIR,DR,DTOUT,DUOUT,ENDATE
+4 KILL I,J,MAX,MAXDT,SC,SC0,SCNA,SD,SDAY,SDBDT,SDBEG,SDC,SDFLEN,SDREPORT
+5 KILL SDCAP,SDCCP,SDCNAM,SDCOL,SDCP,SDCT,SDDAY,SDDIV,SDDT,SDDV,SDDW
+6 KILL SDEDT,SDEND,SDEX,SDEXDT,SDFAC,SDFMT,SDHD,SDI,SDIN,SDINT,SDIV
+7 KILL SDKID,SDL,SDLINE,SDMAX,SDMD,SDMG,SDMON,SDMPDT,SDNOW,SDOE,SDOE0
+8 KILL SDOUT,SDP,SDPAGE,SDPAR,SDPAST,SDPATT,SDPBDT,SDPCT,SDPEDT,SDPG
+9 KILL SDPGDT,SDPNOW,SDQUIT,SDR,SDRE,SDRPT,SDS,SDSC1,SDSC2,SDSIZE,SDSL
+10 KILL SDSOH,SDSORT,SDSSC,SDSTRTDT,SDT,SDTCAP,SDTIME,SDTIT,SDTITL,SDTOE
+11 KILL SDTSL,SDTX,SDTY,SDV,SDX,SDXM,SDXTMP,SDY,SDZ,SI,SM,SS,X,X1,X2,Y
+12 KILL SDJN,SDFMT,SDFMTS
+13 if $DATA(IOM)
DO END^SCRPW50
QUIT