SDES949P ;ALB/LAB,JAS - SD*5.3*949 Post Init Routine ; Jun 18, 2026
;;5.3;SCHEDULING;**949**;AUG 13, 1993;Build 4
;;Per VHA Directive 6402, this routine should not be modified
;;
Q
;
EN ;
D TASK,TASK2,TASK3
Q
;
TASK ; tasks off process to update the direct patient schedule field in the hospital location file
D MES^XPDUTL("")
D MES^XPDUTL(" SD*5.3*949 Post-Install to identify clinics with slot decrement issues")
D MES^XPDUTL("")
N ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE,%,%H,%I
S ZTDESC="SD*5.3*949 Post Install Routine Task 1"
D NOW^%DTC
S ZTDTH=$P($H,",",1)_","_86399,ZTIO="",ZTRTN="REPORT^SDES949P",ZTSAVE("*")=""
D ^%ZTLOAD
I $D(ZTSK) D
. D MES^XPDUTL(" >>>Task "_ZTSK_" has been queued.")
. D MES^XPDUTL("")
I '$D(ZTSK) D
. D MES^XPDUTL(" UNABLE TO QUEUE THIS JOB.")
. D MES^XPDUTL(" Please contact the National Help Desk to report this issue.")
Q
;
REPORT ;
N COUNT,STOPCODEIEN,CLINICCOUNT,ISSUECOUNT,STOPCODE,CLINICIEN,SLOTCOUNT,SLOTSTART,CURRENTSLOTS,DATE,TIME
N DAYOFTHEWEEK,SCHEDULEDATE,SUBIEN,ORIGINALSLOTS,APPTSUBIEN,APPTCOUNT,FOUND,SLOTDATETIME,DFN,DFNLIST,%,%DT,I
K ^XTMP("SDES949P")
S ^XTMP("SDES949P",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*949"
S ^XTMP("SDES949P",1)="**********************************SLOT REPORT**********************************"
S COUNT=4
S ^XTMP("SDES949P",COUNT)="Clinic IEN^Clinic Name^Slot Date Time^Appointment Count^Original Count^Current Count^Patient DFN*Appointment IEN (|list)"
S COUNT=COUNT+1
S STOPCODEIEN=0,CLINICCOUNT=0,ISSUECOUNT=0
F STOPCODE=342,303,502 D
.S STOPCODEIEN=$O(^DIC(40.7,"C",STOPCODE,""))
.;
.S CLINICIEN=0
.F S CLINICIEN=$O(^SC("AST",STOPCODEIEN,CLINICIEN)) Q:'CLINICIEN D
..S CLINICCOUNT=CLINICCOUNT+1
..;
..K @$NA(^TMP($J,"SLOTSEARCH"))
..D GETSLOTS^SDEC57($NA(^TMP($J,"SLOTSEARCH")),$$GETRES^SDES2UTIL1(CLINICIEN),$$FMADD^XLFDT(DT-365),$$FMADD^XLFDT(DT,390))
..;
..S SLOTCOUNT=0
..F S SLOTCOUNT=$O(^TMP($J,"SLOTSEARCH",SLOTCOUNT)) Q:'SLOTCOUNT D
...;
...S SLOTSTART=+$P($G(^TMP($J,"SLOTSEARCH",SLOTCOUNT)),U,2)
...S CURRENTSLOTS=$P($G(^TMP($J,"SLOTSEARCH",SLOTCOUNT)),U,4)
...I CURRENTSLOTS?1A S CURRENTSLOTS=$F("abcdefghijklmnopqrstuvwxyz",CURRENTSLOTS)-1
...S DATE=$P(SLOTSTART,".")
...;quit if holiday and clinic doesn't meet on holiday
...Q:$D(^HOLIDAY(DATE,0))&($$GET1^DIQ(44,CLINICIEN,1918.5,"E")'="YES")
...Q:$G(^SC(CLINICIEN,"ST",DATE,1))["CANCELLED"
...Q:CURRENTSLOTS="X" ;cancelled time slot
...S TIME=$E(SLOTSTART,8,$L(SLOTSTART))
...S DAYOFTHEWEEK=$$DOW^XLFDT(DATE)
...S SCHEDULEDATE=$S('$D(^SC(CLINICIEN,"T",DATE)):$$GETINDEFSLOTDATE(CLINICIEN,$$FMADD^XLFDT(DATE,1),"T"_$$UP^XLFSTR($$DOW^XLFDT(DATE,1))),1:DATE)
...;
...Q:$$INACTIVE^SDES2UTIL(CLINICIEN,DATE)
...Q:'(SCHEDULEDATE)
...;
...S SUBIEN=0,SLOTDATETIME=0,FOUND=0
...F S SUBIEN=$O(^SC(CLINICIEN,"T",SCHEDULEDATE,2,SUBIEN)) Q:'SUBIEN!(FOUND=1) D
....I SLOTSTART=$$HTFM^XLFDT($$FMTH^XLFDT(DATE_"."_$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",.01,"I"))) D
.....;
.....S ORIGINALSLOTS=$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",1,"I")
.....;
.....S APPTSUBIEN=0,APPTCOUNT=0
.....S DFNLIST=""
.....F S APPTSUBIEN=$O(^SC(CLINICIEN,"S",SLOTSTART,1,APPTSUBIEN)) Q:'APPTSUBIEN D
......I $$GET1^DIQ(44.003,APPTSUBIEN_","_SLOTSTART_","_CLINICIEN_",",310,"I")'="C" D
.......S APPTCOUNT=APPTCOUNT+1
.......S DFN=$$GET1^DIQ(44.003,APPTSUBIEN_","_SLOTSTART_","_CLINICIEN_",",.01,"I")
.......S DFNLIST=DFNLIST_DFN_"*"_$O(^SDEC(409.84,"APTDT",DFN,SLOTSTART,""),-1)_"|"
.....;
.....I (APPTCOUNT>0)&((ORIGINALSLOTS-APPTCOUNT)<CURRENTSLOTS) D
......S ISSUECOUNT=ISSUECOUNT+1
......;
......S ^XTMP("SDES949P",COUNT)=CLINICIEN_U_$$GET1^DIQ(44,CLINICIEN,.01)_U_$$FMTISO^SDAMUTDT(SLOTSTART)
......S ^XTMP("SDES949P",COUNT)=^XTMP("SDES949P",COUNT)_U_APPTCOUNT_U_ORIGINALSLOTS_U_CURRENTSLOTS_U_DFNLIST
......S COUNT=COUNT+1
......S FOUND=1
S ^XTMP("SDES949P",2)="Total Number of Clinics Searched : "_CLINICCOUNT
S COUNT=COUNT+1
S ^XTMP("SDES949P",3)="Total Number of Issues Found : "_ISSUECOUNT
;
D MAIL
Q
;
MAIL ;
N SITENUMBER,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ,TESTORPROD
S SITENUMBER=+$$STA^XUAF4($$KSP^XUPARAM("INST"))
S TESTORPROD=$$PROD^XUPROD
S MESS1="Station: "_SITENUMBER_" ("_$S(TESTORPROD:"PROD",1:"TEST")_") - "
S XMDUZ=DUZ
S XMTEXT="^XTMP(""SDES949P"","
S XMSUB=MESS1_"SD*5.3*949 - Post Install Data Report"
S XMDUZ=.5,XMY(DUZ)="",XMY(XMDUZ)=""
S XMY("BARBER.LORI@DOMAIN.EXT")=""
I $G(TESTORPROD)="PROD" D
. S XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
. S XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
D ^XMD
Q
;
GETINDEFSLOTDATE(CLINICIEN,DATE,TNODE) ;
N TDATE,INDEFDATE
;
S INDEFDATE=0
F S DATE=$O(^SC(CLINICIEN,"T",DATE),-1) Q:'DATE!($G(INDEFDATE)) D
.I $$DOW^XLFDT(DATE,1)=$E(TNODE,2) D
..I $D(^SC(CLINICIEN,"OST",DATE)) Q
..S INDEFDATE=DATE
Q INDEFDATE
;
TASK2 ;
D MES^XPDUTL("")
D MES^XPDUTL(" SD*5.3*949 Post-Install to create report of instances of ghost availability.")
D MES^XPDUTL("")
N ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE
S ZTDESC="SD*5.3*949 Post Install Routine Task 2"
D NOW^%DTC
S ZTDTH=$P($H,",",1)_","_86399,ZTIO="",ZTRTN="REPORT2^SDES949P",ZTSAVE("*")=""
D ^%ZTLOAD
I $D(ZTSK) D Q
. D MES^XPDUTL(" >>>Task "_ZTSK_" has been queued.")
. D MES^XPDUTL("")
I '$D(ZTSK) D
. D MES^XPDUTL(" UNABLE TO QUEUE THIS JOB.")
. D MES^XPDUTL(" Please contact the National Help Desk to report this issue.")
Q
;
REPORT2 ;
N CREATEDT,UPDATECNT
K ^XTMP("SDES949P-2")
S ^XTMP("SDES949P-2",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*949"
S UPDATECNT=1
S UPDATECNT=UPDATECNT+1
;
D IDENTIFYGHOST
;
D MAIL2
Q
;
MAIL2 ;
N SITENUMBER,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ,TESTORPROD
S SITENUMBER=+$$STA^XUAF4($$KSP^XUPARAM("INST"))
S TESTORPROD=$$PROD^XUPROD
S MESS1="Station: "_SITENUMBER_" ("_$S(TESTORPROD:"PROD",1:"TEST")_") - "
S XMDUZ=DUZ
S XMTEXT="^XTMP(""SDES949P-2"","
S XMSUB=MESS1_"SD*5.3*949 - Ghost Availability Data Report"
S XMDUZ=.5,XMY(DUZ)="",XMY(XMDUZ)=""
S XMY("BARBER.LORI@DOMAIN.EXT")=""
S XMY("BUTLER.BRANDON@DOMAIN.EXT")=""
S XMY("SWESKY.JEFFREY@DOMAIN.EXT")=""
I $G(TESTORPROD)="PROD" D
. S XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
. S XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
D ^XMD
Q
;
IDENTIFYGHOST() ;
N CLINICIEN,GHOST,CLINICIEN,CLINICNAME,COUNT,NONSTDDATE,INDEFDATE,STARTDATE,ORPHANDATE
;
S CLINICIEN=0
F S CLINICIEN=$O(^SC(CLINICIEN)) Q:'CLINICIEN D
.I $$INACTIVE^SDESUTIL(CLINICIEN) Q
.;
.S STARTDATE=$$FMADD^XLFDT(DT,-$$GET1^DIQ(44,CLINICIEN,2002))
.;
.D INDEFOVERWRITES(.GHOST,CLINICIEN,STARTDATE)
.D ORPHANEDOSTDAYS(.GHOST,CLINICIEN)
;
K ^XTMP("SDES949P-2")
S COUNT=1
S ^XTMP("SDES949P-2",COUNT)="**********************************GHOST AVAILABILITY REPORT**********************************"
S COUNT=COUNT+1
S ^XTMP("SDES949P-2",COUNT)="CLINIC^ISSUE DESCRIPTION^DATE"
;
S CLINICIEN=0
F S CLINICIEN=$O(GHOST(CLINICIEN)),CLINICNAME=$$GET1^DIQ(44,CLINICIEN,.01) Q:'CLINICIEN D
.;
.S INDEFDATE=0
.F S INDEFDATE=$O(GHOST(CLINICIEN,"INDEFINITE OVERWRITE",INDEFDATE)) Q:'INDEFDATE D
..S COUNT=COUNT+1
..S ^XTMP("SDES949P-2",COUNT)=CLINICNAME_U
..S ^XTMP("SDES949P-2",COUNT)=^XTMP("SDES949P-2",COUNT)_"Indefinite Availability is overlaid with Special Availability"_U_$$FMTISO^SDAMUTDT(INDEFDATE)
.;
.S ORPHANDATE=0
.F S ORPHANDATE=$O(GHOST(CLINICIEN,"ORPHANED OST",ORPHANDATE)) Q:'ORPHANDATE D
..S COUNT=COUNT+1
..S ^XTMP("SDES949P-2",COUNT)=CLINICNAME_U
..S ^XTMP("SDES949P-2",COUNT)=^XTMP("SDES949P-2",COUNT)_"Unable to define precise time for special availability defined"_U_$$FMTISO^SDAMUTDT(ORPHANDATE)
;
Q
;
INDEFOVERWRITES(GHOST,CLINICIEN,DATE) ;
N TNODE
;
F TNODE=0:1:6 I $D(^SC(CLINICIEN,"T"_TNODE)) D
.;
.I $O(^SC(CLINICIEN,"T"_TNODE,0))=9999999,$D(^SC(CLINICIEN,"OST")) D Q
..S DATE=$$FMADD^XLFDT(DT,-14)
..F S DATE=$O(^SC(CLINICIEN,"OST",DATE)) Q:'DATE D
...Q:'$D(^SC(CLINICIEN,"OST",DATE,1))
...Q:^SC(CLINICIEN,"OST",DATE,1)'["["
...I TNODE=($$FMTH^XLFDT(DATE)+4#7) D
....S GHOST(CLINICIEN,"INDEFINITE OVERWRITE",DATE)=""
.;
.S DATE=$$FMADD^XLFDT(DT,-14)
.F S DATE=$O(^SC(CLINICIEN,"T"_TNODE,DATE)) Q:'DATE D
..;
..I $O(^SC(CLINICIEN,"T"_TNODE,DATE))=9999999,$D(^SC(CLINICIEN,"OST",DATE)) D
...Q:'$D(^SC(CLINICIEN,"OST",DATE,1))
...Q:^SC(CLINICIEN,"OST",DATE,1)'["["
...S GHOST(CLINICIEN,"INDEFINITE OVERWRITE",DATE)=""
Q
;
ORPHANEDOSTDAYS(GHOST,CLINICIEN) ;
N DATE
;
S DATE=$$FMADD^XLFDT(DT,-14)
F S DATE=$O(^SC(CLINICIEN,"OST",DATE)) Q:'DATE D
.Q:'$D(^SC(CLINICIEN,"OST",DATE,1))
.Q:^SC(CLINICIEN,"OST",DATE,1)'["["
.I '$D(^SC(CLINICIEN,"T",DATE)) D
..S GHOST(CLINICIEN,"ORPHANED OST",DATE)=""
Q
;
TASK3 ;
D MES^XPDUTL("")
D MES^XPDUTL(" SD*5.3*949 Post-Install to identify potential disappearing grid scenarios prior to remap.")
D MES^XPDUTL("")
N ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE
S ZTDESC="SD*5.3*949 Post Install Routine Task 3"
D NOW^%DTC
S ZTDTH=$P($H,",",1)_","_86399,ZTIO="",ZTRTN="REPORT3^SDES949P",ZTSAVE("*")=""
D ^%ZTLOAD
I $D(ZTSK) D Q
. D MES^XPDUTL(" >>>Task "_ZTSK_" has been queued.")
. D MES^XPDUTL("")
I '$D(ZTSK) D Q
. D MES^XPDUTL(" UNABLE TO QUEUE THIS JOB.")
. D MES^XPDUTL(" Please contact the National Help Desk to report this issue.")
Q
;
REPORT3 ;
N CREATEDT,UPDATECNT
K ^XTMP("SDES949P-3")
S ^XTMP("SDES949P-3",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*949"
S UPDATECNT=1
S UPDATECNT=UPDATECNT+1
;ADD LOGIC HERE
D DISPGRIDS
;
D MAIL3
Q
;
MAIL3 ;
N SITENUMBER,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ,TESTORPROD
S SITENUMBER=+$$STA^XUAF4($$KSP^XUPARAM("INST"))
S TESTORPROD=$$PROD^XUPROD
S MESS1="Station: "_SITENUMBER_" ("_$S(TESTORPROD:"PROD",1:"TEST")_") - "
S XMDUZ=DUZ
S XMTEXT="^XTMP(""SDES949P-3"","
S XMSUB=MESS1_"SD*5.3*949 - Potential Disappearing Grid Report"
S XMDUZ=.5,XMY(DUZ)="",XMY(XMDUZ)=""
S XMY("BARBER.LORI@DOMAIN.EXT")=""
S XMY("SWESKY.JEFFREY@DOMAIN.EXT")=""
I $G(TESTORPROD)="PROD" D
. S XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
. S XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
D ^XMD
Q
;
DISPGRIDS() ;
;
N CLINICIEN,CLINICNAME,COUNT,ENDDATE,GRIDDATE,HOLSCHED,PATTERN,STARTDATE,TNODE
;
K ^XTMP("SDES949P-3")
S COUNT=1
S ^XTMP("SDES949P-3",COUNT)="*****************************POTENTIAL DISAPPEARING GRIDS REPORT*****************************"
S COUNT=COUNT+1
S ^XTMP("SDES949P-3",COUNT)="CLINIC IEN^CLINIC NAME^DESCRIPTION OF ISSUE//LIST OF APPTS ON SEPARATE ROWS"
;
S CLINICIEN=0
F S CLINICIEN=$O(^SC(CLINICIEN)) Q:'CLINICIEN D
. Q:$$INACTIVE^SDESUTIL(CLINICIEN)
. Q:$$GET1^DIQ(44,CLINICIEN,2,"I")'="C"
. ;
. S CLINICNAME=$$GET1^DIQ(44,CLINICIEN,.01)
. S HOLSCHED=$S($$GET1^DIQ(44,CLINICIEN,1918.5,"I")="Y":1,1:0)
. ;
. F TNODE=0:1:6 I $D(^SC(CLINICIEN,"T"_TNODE)) D
. . S STARTDATE=$$FMADD^XLFDT(DT,+1)
. . S STARTDATE=$O(^SC(CLINICIEN,"T"_TNODE,STARTDATE),-1)
. . I STARTDATE=0 S STARTDATE=$O(^SC(CLINICIEN,"T"_TNODE,STARTDATE))
. . Q:'STARTDATE
. . S ENDDATE=$O(^SC(CLINICIEN,"T"_TNODE,STARTDATE))
. . I ENDDATE="" S ENDDATE=STARTDATE
. . S PATTERN=^SC(CLINICIEN,"T"_TNODE,ENDDATE,1)
. . I PATTERN="" D CHECKGRID(CLINICIEN,STARTDATE,ENDDATE,HOLSCHED,TNODE)
. . F S STARTDATE=$O(^SC(CLINICIEN,"T"_TNODE,STARTDATE)) Q:'STARTDATE!(ENDDATE=9999999) D
. . . S ENDDATE=$O(^SC(CLINICIEN,"T"_TNODE,STARTDATE))
. . . I ENDDATE="" S ENDDATE=STARTDATE
. . . S PATTERN=^SC(CLINICIEN,"T"_TNODE,ENDDATE,1)
. . . I PATTERN="" D CHECKGRID(CLINICIEN,STARTDATE,ENDDATE,HOLSCHED,TNODE)
Q
;
CHECKGRID(CLINICIEN,GRIDDATE,ENDDATE,HOLSCHED,TNODE) ;
N FOUND
S FOUND=0
I GRIDDATE=9999999 S GRIDDATE=DT
I GRIDDATE<DT S GRIDDATE=DT
S GRIDDATE=GRIDDATE-.0001
F S GRIDDATE=$O(^SC(CLINICIEN,"ST",GRIDDATE)) Q:'GRIDDATE!(GRIDDATE>ENDDATE) D
. Q:($$FMTH^XLFDT(GRIDDATE)+4#7)'=TNODE
. Q:($D(^HOLIDAY(GRIDDATE))&('HOLSCHED))
. Q:$G(^SC(CLINICIEN,"ST",GRIDDATE,1))'["["
. Q:$G(^SC(CLINICIEN,"OST",GRIDDATE,1))["["
. ;
. I 'FOUND D
. . S COUNT=COUNT+1,FOUND=1
. . S ^XTMP("SDES949P-3",COUNT)=CLINICIEN_U_CLINICNAME_U_"The T"_TNODE_" node pattern from "_$$FMTE^XLFDT(STARTDATE,5)_" to "_$$FMTE^XLFDT(ENDDATE,5)
. . S ^XTMP("SDES949P-3",COUNT)=^XTMP("SDES949P-3",COUNT)_" has been removed, but there is ST node availability starting on "_$$FMTE^XLFDT(GRIDDATE,5)
. ;
. N APPTDTTM,APPTIEN,HASAPPTS
. S APPTDTTM=GRIDDATE-.0001,HASAPPTS=0
. F S APPTDTTM=$O(^SC(CLINICIEN,"S",APPTDTTM)) Q:HASAPPTS!('APPTDTTM)!($P(APPTDTTM,".")>GRIDDATE) D
. . S APPTIEN=0 F S APPTIEN=$O(^SC(CLINICIEN,"S",APPTDTTM,1,APPTIEN)) Q:'APPTIEN D
. . . Q:$P($G(^SC(CLINICIEN,"S",APPTDTTM,1,APPTIEN,0)),"^",9)="C"
. . . Q:'$D(^SC(CLINICIEN,"S",APPTDTTM,1,APPTIEN,0))
. . . S COUNT=COUNT+1,HASAPPTS=1
. . . S ^XTMP("SDES949P-3",COUNT)=" ... and appointments are scheduled on: "_$$FMTE^XLFDT($P(APPTDTTM,"."),5)
;
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES949P 13169 printed Sep 17, 2026@21:42:33 Page 2
SDES949P ;ALB/LAB,JAS - SD*5.3*949 Post Init Routine ; Jun 18, 2026
+1 ;;5.3;SCHEDULING;**949**;AUG 13, 1993;Build 4
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;;
+4 QUIT
+5 ;
EN ;
+1 DO TASK
DO TASK2
DO TASK3
+2 QUIT
+3 ;
TASK ; tasks off process to update the direct patient schedule field in the hospital location file
+1 DO MES^XPDUTL("")
+2 DO MES^XPDUTL(" SD*5.3*949 Post-Install to identify clinics with slot decrement issues")
+3 DO MES^XPDUTL("")
+4 NEW ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE,%,%H,%I
+5 SET ZTDESC="SD*5.3*949 Post Install Routine Task 1"
+6 DO NOW^%DTC
+7 SET ZTDTH=$PIECE($HOROLOG,",",1)_","_86399
SET ZTIO=""
SET ZTRTN="REPORT^SDES949P"
SET ZTSAVE("*")=""
+8 DO ^%ZTLOAD
+9 IF $DATA(ZTSK)
Begin DoDot:1
+10 DO MES^XPDUTL(" >>>Task "_ZTSK_" has been queued.")
+11 DO MES^XPDUTL("")
End DoDot:1
+12 IF '$DATA(ZTSK)
Begin DoDot:1
+13 DO MES^XPDUTL(" UNABLE TO QUEUE THIS JOB.")
+14 DO MES^XPDUTL(" Please contact the National Help Desk to report this issue.")
End DoDot:1
+15 QUIT
+16 ;
REPORT ;
+1 NEW COUNT,STOPCODEIEN,CLINICCOUNT,ISSUECOUNT,STOPCODE,CLINICIEN,SLOTCOUNT,SLOTSTART,CURRENTSLOTS,DATE,TIME
+2 NEW DAYOFTHEWEEK,SCHEDULEDATE,SUBIEN,ORIGINALSLOTS,APPTSUBIEN,APPTCOUNT,FOUND,SLOTDATETIME,DFN,DFNLIST,%,%DT,I
+3 KILL ^XTMP("SDES949P")
+4 SET ^XTMP("SDES949P",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*949"
+5 SET ^XTMP("SDES949P",1)="**********************************SLOT REPORT**********************************"
+6 SET COUNT=4
+7 SET ^XTMP("SDES949P",COUNT)="Clinic IEN^Clinic Name^Slot Date Time^Appointment Count^Original Count^Current Count^Patient DFN*Appointment IEN (|list)"
+8 SET COUNT=COUNT+1
+9 SET STOPCODEIEN=0
SET CLINICCOUNT=0
SET ISSUECOUNT=0
+10 FOR STOPCODE=342,303,502
Begin DoDot:1
+11 SET STOPCODEIEN=$ORDER(^DIC(40.7,"C",STOPCODE,""))
+12 ;
+13 SET CLINICIEN=0
+14 FOR
SET CLINICIEN=$ORDER(^SC("AST",STOPCODEIEN,CLINICIEN))
if 'CLINICIEN
QUIT
Begin DoDot:2
+15 SET CLINICCOUNT=CLINICCOUNT+1
+16 ;
+17 KILL @$NAME(^TMP($JOB,"SLOTSEARCH"))
+18 DO GETSLOTS^SDEC57($NAME(^TMP($JOB,"SLOTSEARCH")),$$GETRES^SDES2UTIL1(CLINICIEN),$$FMADD^XLFDT(DT-365),$$FMADD^XLFDT(DT,390))
+19 ;
+20 SET SLOTCOUNT=0
+21 FOR
SET SLOTCOUNT=$ORDER(^TMP($JOB,"SLOTSEARCH",SLOTCOUNT))
if 'SLOTCOUNT
QUIT
Begin DoDot:3
+22 ;
+23 SET SLOTSTART=+$PIECE($GET(^TMP($JOB,"SLOTSEARCH",SLOTCOUNT)),U,2)
+24 SET CURRENTSLOTS=$PIECE($GET(^TMP($JOB,"SLOTSEARCH",SLOTCOUNT)),U,4)
+25 IF CURRENTSLOTS?1A
SET CURRENTSLOTS=$FIND("abcdefghijklmnopqrstuvwxyz",CURRENTSLOTS)-1
+26 SET DATE=$PIECE(SLOTSTART,".")
+27 ;quit if holiday and clinic doesn't meet on holiday
+28 if $DATA(^HOLIDAY(DATE,0))&($$GET1^DIQ(44,CLINICIEN,1918.5,"E")'="YES")
QUIT
+29 if $GET(^SC(CLINICIEN,"ST",DATE,1))["CANCELLED"
QUIT
+30 ;cancelled time slot
if CURRENTSLOTS="X"
QUIT
+31 SET TIME=$EXTRACT(SLOTSTART,8,$LENGTH(SLOTSTART))
+32 SET DAYOFTHEWEEK=$$DOW^XLFDT(DATE)
+33 SET SCHEDULEDATE=$SELECT('$DATA(^SC(CLINICIEN,"T",DATE)):$$GETINDEFSLOTDATE(CLINICIEN,$$FMADD^XLFDT(DATE,1),"T"_$$UP^XLFSTR($$DOW^XLFDT(DATE,1))),1:DATE)
+34 ;
+35 if $$INACTIVE^SDES2UTIL(CLINICIEN,DATE)
QUIT
+36 if '(SCHEDULEDATE)
QUIT
+37 ;
+38 SET SUBIEN=0
SET SLOTDATETIME=0
SET FOUND=0
+39 FOR
SET SUBIEN=$ORDER(^SC(CLINICIEN,"T",SCHEDULEDATE,2,SUBIEN))
if 'SUBIEN!(FOUND=1)
QUIT
Begin DoDot:4
+40 IF SLOTSTART=$$HTFM^XLFDT($$FMTH^XLFDT(DATE_"."_$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",.01,"I")))
Begin DoDot:5
+41 ;
+42 SET ORIGINALSLOTS=$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",1,"I")
+43 ;
+44 SET APPTSUBIEN=0
SET APPTCOUNT=0
+45 SET DFNLIST=""
+46 FOR
SET APPTSUBIEN=$ORDER(^SC(CLINICIEN,"S",SLOTSTART,1,APPTSUBIEN))
if 'APPTSUBIEN
QUIT
Begin DoDot:6
+47 IF $$GET1^DIQ(44.003,APPTSUBIEN_","_SLOTSTART_","_CLINICIEN_",",310,"I")'="C"
Begin DoDot:7
+48 SET APPTCOUNT=APPTCOUNT+1
+49 SET DFN=$$GET1^DIQ(44.003,APPTSUBIEN_","_SLOTSTART_","_CLINICIEN_",",.01,"I")
+50 SET DFNLIST=DFNLIST_DFN_"*"_$ORDER(^SDEC(409.84,"APTDT",DFN,SLOTSTART,""),-1)_"|"
End DoDot:7
End DoDot:6
+51 ;
+52 IF (APPTCOUNT>0)&((ORIGINALSLOTS-APPTCOUNT)<CURRENTSLOTS)
Begin DoDot:6
+53 SET ISSUECOUNT=ISSUECOUNT+1
+54 ;
+55 SET ^XTMP("SDES949P",COUNT)=CLINICIEN_U_$$GET1^DIQ(44,CLINICIEN,.01)_U_$$FMTISO^SDAMUTDT(SLOTSTART)
+56 SET ^XTMP("SDES949P",COUNT)=^XTMP("SDES949P",COUNT)_U_APPTCOUNT_U_ORIGINALSLOTS_U_CURRENTSLOTS_U_DFNLIST
+57 SET COUNT=COUNT+1
+58 SET FOUND=1
End DoDot:6
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+59 SET ^XTMP("SDES949P",2)="Total Number of Clinics Searched : "_CLINICCOUNT
+60 SET COUNT=COUNT+1
+61 SET ^XTMP("SDES949P",3)="Total Number of Issues Found : "_ISSUECOUNT
+62 ;
+63 DO MAIL
+64 QUIT
+65 ;
MAIL ;
+1 NEW SITENUMBER,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ,TESTORPROD
+2 SET SITENUMBER=+$$STA^XUAF4($$KSP^XUPARAM("INST"))
+3 SET TESTORPROD=$$PROD^XUPROD
+4 SET MESS1="Station: "_SITENUMBER_" ("_$SELECT(TESTORPROD:"PROD",1:"TEST")_") - "
+5 SET XMDUZ=DUZ
+6 SET XMTEXT="^XTMP(""SDES949P"","
+7 SET XMSUB=MESS1_"SD*5.3*949 - Post Install Data Report"
+8 SET XMDUZ=.5
SET XMY(DUZ)=""
SET XMY(XMDUZ)=""
+9 SET XMY("BARBER.LORI@DOMAIN.EXT")=""
+10 IF $GET(TESTORPROD)="PROD"
Begin DoDot:1
+11 SET XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
+12 SET XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
End DoDot:1
+13 DO ^XMD
+14 QUIT
+15 ;
GETINDEFSLOTDATE(CLINICIEN,DATE,TNODE) ;
+1 NEW TDATE,INDEFDATE
+2 ;
+3 SET INDEFDATE=0
+4 FOR
SET DATE=$ORDER(^SC(CLINICIEN,"T",DATE),-1)
if 'DATE!($GET(INDEFDATE))
QUIT
Begin DoDot:1
+5 IF $$DOW^XLFDT(DATE,1)=$EXTRACT(TNODE,2)
Begin DoDot:2
+6 IF $DATA(^SC(CLINICIEN,"OST",DATE))
QUIT
+7 SET INDEFDATE=DATE
End DoDot:2
End DoDot:1
+8 QUIT INDEFDATE
+9 ;
TASK2 ;
+1 DO MES^XPDUTL("")
+2 DO MES^XPDUTL(" SD*5.3*949 Post-Install to create report of instances of ghost availability.")
+3 DO MES^XPDUTL("")
+4 NEW ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE
+5 SET ZTDESC="SD*5.3*949 Post Install Routine Task 2"
+6 DO NOW^%DTC
+7 SET ZTDTH=$PIECE($HOROLOG,",",1)_","_86399
SET ZTIO=""
SET ZTRTN="REPORT2^SDES949P"
SET ZTSAVE("*")=""
+8 DO ^%ZTLOAD
+9 IF $DATA(ZTSK)
Begin DoDot:1
+10 DO MES^XPDUTL(" >>>Task "_ZTSK_" has been queued.")
+11 DO MES^XPDUTL("")
End DoDot:1
QUIT
+12 IF '$DATA(ZTSK)
Begin DoDot:1
+13 DO MES^XPDUTL(" UNABLE TO QUEUE THIS JOB.")
+14 DO MES^XPDUTL(" Please contact the National Help Desk to report this issue.")
End DoDot:1
+15 QUIT
+16 ;
REPORT2 ;
+1 NEW CREATEDT,UPDATECNT
+2 KILL ^XTMP("SDES949P-2")
+3 SET ^XTMP("SDES949P-2",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*949"
+4 SET UPDATECNT=1
+5 SET UPDATECNT=UPDATECNT+1
+6 ;
+7 DO IDENTIFYGHOST
+8 ;
+9 DO MAIL2
+10 QUIT
+11 ;
MAIL2 ;
+1 NEW SITENUMBER,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ,TESTORPROD
+2 SET SITENUMBER=+$$STA^XUAF4($$KSP^XUPARAM("INST"))
+3 SET TESTORPROD=$$PROD^XUPROD
+4 SET MESS1="Station: "_SITENUMBER_" ("_$SELECT(TESTORPROD:"PROD",1:"TEST")_") - "
+5 SET XMDUZ=DUZ
+6 SET XMTEXT="^XTMP(""SDES949P-2"","
+7 SET XMSUB=MESS1_"SD*5.3*949 - Ghost Availability Data Report"
+8 SET XMDUZ=.5
SET XMY(DUZ)=""
SET XMY(XMDUZ)=""
+9 SET XMY("BARBER.LORI@DOMAIN.EXT")=""
+10 SET XMY("BUTLER.BRANDON@DOMAIN.EXT")=""
+11 SET XMY("SWESKY.JEFFREY@DOMAIN.EXT")=""
+12 IF $GET(TESTORPROD)="PROD"
Begin DoDot:1
+13 SET XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
+14 SET XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
End DoDot:1
+15 DO ^XMD
+16 QUIT
+17 ;
IDENTIFYGHOST() ;
+1 NEW CLINICIEN,GHOST,CLINICIEN,CLINICNAME,COUNT,NONSTDDATE,INDEFDATE,STARTDATE,ORPHANDATE
+2 ;
+3 SET CLINICIEN=0
+4 FOR
SET CLINICIEN=$ORDER(^SC(CLINICIEN))
if 'CLINICIEN
QUIT
Begin DoDot:1
+5 IF $$INACTIVE^SDESUTIL(CLINICIEN)
QUIT
+6 ;
+7 SET STARTDATE=$$FMADD^XLFDT(DT,-$$GET1^DIQ(44,CLINICIEN,2002))
+8 ;
+9 DO INDEFOVERWRITES(.GHOST,CLINICIEN,STARTDATE)
+10 DO ORPHANEDOSTDAYS(.GHOST,CLINICIEN)
End DoDot:1
+11 ;
+12 KILL ^XTMP("SDES949P-2")
+13 SET COUNT=1
+14 SET ^XTMP("SDES949P-2",COUNT)="**********************************GHOST AVAILABILITY REPORT**********************************"
+15 SET COUNT=COUNT+1
+16 SET ^XTMP("SDES949P-2",COUNT)="CLINIC^ISSUE DESCRIPTION^DATE"
+17 ;
+18 SET CLINICIEN=0
+19 FOR
SET CLINICIEN=$ORDER(GHOST(CLINICIEN))
SET CLINICNAME=$$GET1^DIQ(44,CLINICIEN,.01)
if 'CLINICIEN
QUIT
Begin DoDot:1
+20 ;
+21 SET INDEFDATE=0
+22 FOR
SET INDEFDATE=$ORDER(GHOST(CLINICIEN,"INDEFINITE OVERWRITE",INDEFDATE))
if 'INDEFDATE
QUIT
Begin DoDot:2
+23 SET COUNT=COUNT+1
+24 SET ^XTMP("SDES949P-2",COUNT)=CLINICNAME_U
+25 SET ^XTMP("SDES949P-2",COUNT)=^XTMP("SDES949P-2",COUNT)_"Indefinite Availability is overlaid with Special Availability"_U_$$FMTISO^SDAMUTDT(INDEFDATE)
End DoDot:2
+26 ;
+27 SET ORPHANDATE=0
+28 FOR
SET ORPHANDATE=$ORDER(GHOST(CLINICIEN,"ORPHANED OST",ORPHANDATE))
if 'ORPHANDATE
QUIT
Begin DoDot:2
+29 SET COUNT=COUNT+1
+30 SET ^XTMP("SDES949P-2",COUNT)=CLINICNAME_U
+31 SET ^XTMP("SDES949P-2",COUNT)=^XTMP("SDES949P-2",COUNT)_"Unable to define precise time for special availability defined"_U_$$FMTISO^SDAMUTDT(ORPHANDATE)
End DoDot:2
End DoDot:1
+32 ;
+33 QUIT
+34 ;
INDEFOVERWRITES(GHOST,CLINICIEN,DATE) ;
+1 NEW TNODE
+2 ;
+3 FOR TNODE=0:1:6
IF $DATA(^SC(CLINICIEN,"T"_TNODE))
Begin DoDot:1
+4 ;
+5 IF $ORDER(^SC(CLINICIEN,"T"_TNODE,0))=9999999
IF $DATA(^SC(CLINICIEN,"OST"))
Begin DoDot:2
+6 SET DATE=$$FMADD^XLFDT(DT,-14)
+7 FOR
SET DATE=$ORDER(^SC(CLINICIEN,"OST",DATE))
if 'DATE
QUIT
Begin DoDot:3
+8 if '$DATA(^SC(CLINICIEN,"OST",DATE,1))
QUIT
+9 if ^SC(CLINICIEN,"OST",DATE,1)'["["
QUIT
+10 IF TNODE=($$FMTH^XLFDT(DATE)+4#7)
Begin DoDot:4
+11 SET GHOST(CLINICIEN,"INDEFINITE OVERWRITE",DATE)=""
End DoDot:4
End DoDot:3
End DoDot:2
QUIT
+12 ;
+13 SET DATE=$$FMADD^XLFDT(DT,-14)
+14 FOR
SET DATE=$ORDER(^SC(CLINICIEN,"T"_TNODE,DATE))
if 'DATE
QUIT
Begin DoDot:2
+15 ;
+16 IF $ORDER(^SC(CLINICIEN,"T"_TNODE,DATE))=9999999
IF $DATA(^SC(CLINICIEN,"OST",DATE))
Begin DoDot:3
+17 if '$DATA(^SC(CLINICIEN,"OST",DATE,1))
QUIT
+18 if ^SC(CLINICIEN,"OST",DATE,1)'["["
QUIT
+19 SET GHOST(CLINICIEN,"INDEFINITE OVERWRITE",DATE)=""
End DoDot:3
End DoDot:2
End DoDot:1
+20 QUIT
+21 ;
ORPHANEDOSTDAYS(GHOST,CLINICIEN) ;
+1 NEW DATE
+2 ;
+3 SET DATE=$$FMADD^XLFDT(DT,-14)
+4 FOR
SET DATE=$ORDER(^SC(CLINICIEN,"OST",DATE))
if 'DATE
QUIT
Begin DoDot:1
+5 if '$DATA(^SC(CLINICIEN,"OST",DATE,1))
QUIT
+6 if ^SC(CLINICIEN,"OST",DATE,1)'["["
QUIT
+7 IF '$DATA(^SC(CLINICIEN,"T",DATE))
Begin DoDot:2
+8 SET GHOST(CLINICIEN,"ORPHANED OST",DATE)=""
End DoDot:2
End DoDot:1
+9 QUIT
+10 ;
TASK3 ;
+1 DO MES^XPDUTL("")
+2 DO MES^XPDUTL(" SD*5.3*949 Post-Install to identify potential disappearing grid scenarios prior to remap.")
+3 DO MES^XPDUTL("")
+4 NEW ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE
+5 SET ZTDESC="SD*5.3*949 Post Install Routine Task 3"
+6 DO NOW^%DTC
+7 SET ZTDTH=$PIECE($HOROLOG,",",1)_","_86399
SET ZTIO=""
SET ZTRTN="REPORT3^SDES949P"
SET ZTSAVE("*")=""
+8 DO ^%ZTLOAD
+9 IF $DATA(ZTSK)
Begin DoDot:1
+10 DO MES^XPDUTL(" >>>Task "_ZTSK_" has been queued.")
+11 DO MES^XPDUTL("")
End DoDot:1
QUIT
+12 IF '$DATA(ZTSK)
Begin DoDot:1
+13 DO MES^XPDUTL(" UNABLE TO QUEUE THIS JOB.")
+14 DO MES^XPDUTL(" Please contact the National Help Desk to report this issue.")
End DoDot:1
QUIT
+15 QUIT
+16 ;
REPORT3 ;
+1 NEW CREATEDT,UPDATECNT
+2 KILL ^XTMP("SDES949P-3")
+3 SET ^XTMP("SDES949P-3",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*949"
+4 SET UPDATECNT=1
+5 SET UPDATECNT=UPDATECNT+1
+6 ;ADD LOGIC HERE
+7 DO DISPGRIDS
+8 ;
+9 DO MAIL3
+10 QUIT
+11 ;
MAIL3 ;
+1 NEW SITENUMBER,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ,TESTORPROD
+2 SET SITENUMBER=+$$STA^XUAF4($$KSP^XUPARAM("INST"))
+3 SET TESTORPROD=$$PROD^XUPROD
+4 SET MESS1="Station: "_SITENUMBER_" ("_$SELECT(TESTORPROD:"PROD",1:"TEST")_") - "
+5 SET XMDUZ=DUZ
+6 SET XMTEXT="^XTMP(""SDES949P-3"","
+7 SET XMSUB=MESS1_"SD*5.3*949 - Potential Disappearing Grid Report"
+8 SET XMDUZ=.5
SET XMY(DUZ)=""
SET XMY(XMDUZ)=""
+9 SET XMY("BARBER.LORI@DOMAIN.EXT")=""
+10 SET XMY("SWESKY.JEFFREY@DOMAIN.EXT")=""
+11 IF $GET(TESTORPROD)="PROD"
Begin DoDot:1
+12 SET XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
+13 SET XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
End DoDot:1
+14 DO ^XMD
+15 QUIT
+16 ;
DISPGRIDS() ;
+1 ;
+2 NEW CLINICIEN,CLINICNAME,COUNT,ENDDATE,GRIDDATE,HOLSCHED,PATTERN,STARTDATE,TNODE
+3 ;
+4 KILL ^XTMP("SDES949P-3")
+5 SET COUNT=1
+6 SET ^XTMP("SDES949P-3",COUNT)="*****************************POTENTIAL DISAPPEARING GRIDS REPORT*****************************"
+7 SET COUNT=COUNT+1
+8 SET ^XTMP("SDES949P-3",COUNT)="CLINIC IEN^CLINIC NAME^DESCRIPTION OF ISSUE//LIST OF APPTS ON SEPARATE ROWS"
+9 ;
+10 SET CLINICIEN=0
+11 FOR
SET CLINICIEN=$ORDER(^SC(CLINICIEN))
if 'CLINICIEN
QUIT
Begin DoDot:1
+12 if $$INACTIVE^SDESUTIL(CLINICIEN)
QUIT
+13 if $$GET1^DIQ(44,CLINICIEN,2,"I")'="C"
QUIT
+14 ;
+15 SET CLINICNAME=$$GET1^DIQ(44,CLINICIEN,.01)
+16 SET HOLSCHED=$SELECT($$GET1^DIQ(44,CLINICIEN,1918.5,"I")="Y":1,1:0)
+17 ;
+18 FOR TNODE=0:1:6
IF $DATA(^SC(CLINICIEN,"T"_TNODE))
Begin DoDot:2
+19 SET STARTDATE=$$FMADD^XLFDT(DT,+1)
+20 SET STARTDATE=$ORDER(^SC(CLINICIEN,"T"_TNODE,STARTDATE),-1)
+21 IF STARTDATE=0
SET STARTDATE=$ORDER(^SC(CLINICIEN,"T"_TNODE,STARTDATE))
+22 if 'STARTDATE
QUIT
+23 SET ENDDATE=$ORDER(^SC(CLINICIEN,"T"_TNODE,STARTDATE))
+24 IF ENDDATE=""
SET ENDDATE=STARTDATE
+25 SET PATTERN=^SC(CLINICIEN,"T"_TNODE,ENDDATE,1)
+26 IF PATTERN=""
DO CHECKGRID(CLINICIEN,STARTDATE,ENDDATE,HOLSCHED,TNODE)
+27 FOR
SET STARTDATE=$ORDER(^SC(CLINICIEN,"T"_TNODE,STARTDATE))
if 'STARTDATE!(ENDDATE=9999999)
QUIT
Begin DoDot:3
+28 SET ENDDATE=$ORDER(^SC(CLINICIEN,"T"_TNODE,STARTDATE))
+29 IF ENDDATE=""
SET ENDDATE=STARTDATE
+30 SET PATTERN=^SC(CLINICIEN,"T"_TNODE,ENDDATE,1)
+31 IF PATTERN=""
DO CHECKGRID(CLINICIEN,STARTDATE,ENDDATE,HOLSCHED,TNODE)
End DoDot:3
End DoDot:2
End DoDot:1
+32 QUIT
+33 ;
CHECKGRID(CLINICIEN,GRIDDATE,ENDDATE,HOLSCHED,TNODE) ;
+1 NEW FOUND
+2 SET FOUND=0
+3 IF GRIDDATE=9999999
SET GRIDDATE=DT
+4 IF GRIDDATE<DT
SET GRIDDATE=DT
+5 SET GRIDDATE=GRIDDATE-.0001
+6 FOR
SET GRIDDATE=$ORDER(^SC(CLINICIEN,"ST",GRIDDATE))
if 'GRIDDATE!(GRIDDATE>ENDDATE)
QUIT
Begin DoDot:1
+7 if ($$FMTH^XLFDT(GRIDDATE)+4#7)'=TNODE
QUIT
+8 if ($DATA(^HOLIDAY(GRIDDATE))&('HOLSCHED))
QUIT
+9 if $GET(^SC(CLINICIEN,"ST",GRIDDATE,1))'["["
QUIT
+10 if $GET(^SC(CLINICIEN,"OST",GRIDDATE,1))["["
QUIT
+11 ;
+12 IF 'FOUND
Begin DoDot:2
+13 SET COUNT=COUNT+1
SET FOUND=1
+14 SET ^XTMP("SDES949P-3",COUNT)=CLINICIEN_U_CLINICNAME_U_"The T"_TNODE_" node pattern from "_$$FMTE^XLFDT(STARTDATE,5)_" to "_$$FMTE^XLFDT(ENDDATE,5)
+15 SET ^XTMP("SDES949P-3",COUNT)=^XTMP("SDES949P-3",COUNT)_" has been removed, but there is ST node availability starting on "_$$FMTE^XLFDT(GRIDDATE,5)
End DoDot:2
+16 ;
+17 NEW APPTDTTM,APPTIEN,HASAPPTS
+18 SET APPTDTTM=GRIDDATE-.0001
SET HASAPPTS=0
+19 FOR
SET APPTDTTM=$ORDER(^SC(CLINICIEN,"S",APPTDTTM))
if HASAPPTS!('APPTDTTM)!($PIECE(APPTDTTM,".")>GRIDDATE)
QUIT
Begin DoDot:2
+20 SET APPTIEN=0
FOR
SET APPTIEN=$ORDER(^SC(CLINICIEN,"S",APPTDTTM,1,APPTIEN))
if 'APPTIEN
QUIT
Begin DoDot:3
+21 if $PIECE($GET(^SC(CLINICIEN,"S",APPTDTTM,1,APPTIEN,0)),"^",9)="C"
QUIT
+22 if '$DATA(^SC(CLINICIEN,"S",APPTDTTM,1,APPTIEN,0))
QUIT
+23 SET COUNT=COUNT+1
SET HASAPPTS=1
+24 SET ^XTMP("SDES949P-3",COUNT)=" ... and appointments are scheduled on: "_$$FMTE^XLFDT($PIECE(APPTDTTM,"."),5)
End DoDot:3
End DoDot:2
End DoDot:1
+25 ;
+26 QUIT