Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SDES929P

SDES929P.m

Go to the documentation of this file.
SDES929P ;ALB/BLB,LAB - SD*5.3*929 Post Init Routine ; Jan 30, 2026
 ;;5.3;SCHEDULING;**929**;AUG 13, 1993;Build 9
  ;;Per VHA Directive 6402, this routine should not be modified
 ;;
 Q
 ;
EN ;
 D TASK
 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*929 Post-Install to create utilization report for off hour clinics.")
 D MES^XPDUTL("")
 N ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE
 S ZTDESC="SD*5.3*929 Post Install Routine Task 1"
 D NOW^%DTC
 S ZTDTH=$P($H,",",1)_","_86399,ZTIO="",ZTRTN="REPORT^SDES929P",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
 K ^XTMP("SDES929P")
 S ^XTMP("SDES929P",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*929"
 S ^XTMP("SDES929P",1)="**********************************SLOT REPORT**********************************"
 S COUNT=4
 S ^XTMP("SDES929P",COUNT)="Clinic IEN^Clinic Name^Slot Date Time^Appointment Count^Original Count^Current Count"
 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)
 ...;
 ...I $$INACTIVE^SDES2UTIL(CLINICIEN,DATE) Q
 ...I 'SCHEDULEDATE Q
 ...;
 ...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
 .....F  S APPTSUBIEN=$O(^SC(CLINICIEN,"S",SLOTSTART,1,APPTSUBIEN)) Q:'APPTSUBIEN  D
 ......S:($$GET1^DIQ(44.003,APPTSUBIEN_","_SLOTSTART_","_CLINICIEN_",",310,"I")'="C") APPTCOUNT=APPTCOUNT+1
 .....;
 .....I (APPTCOUNT>0)&(APPTCOUNT'=(ORIGINALSLOTS-CURRENTSLOTS)) D
 ......S ISSUECOUNT=ISSUECOUNT+1
 ......;
 ......S ^XTMP("SDES929P",COUNT)=CLINICIEN_U_$$GET1^DIQ(44,CLINICIEN,.01)_U_$$FMTISO^SDAMUTDT(SLOTSTART)
 ......S ^XTMP("SDES929P",COUNT)=^XTMP("SDES929P",COUNT)_U_APPTCOUNT_U_ORIGINALSLOTS_U_CURRENTSLOTS
 ......S COUNT=COUNT+1
 ......S FOUND=1
 S ^XTMP("SDES929P",2)="Total Number of Clinics Searched : "_CLINICCOUNT
 S COUNT=COUNT+1
 S ^XTMP("SDES929P",3)="Total Number of Issues Found     : "_ISSUECOUNT
 ;
 D MAIL
 K ^XTMP("SDES929P")
 Q
 ;
MAIL     ;
 N STANUM,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ
 S STANUM=$$KSP^XUPARAM("INST")_","
 S STANUM=$$GET1^DIQ(4,STANUM,99)
 S MESS1="Station: "_STANUM_" - "
 S XMDUZ=DUZ
 S XMTEXT="^XTMP(""SDES929P"","
 S XMSUB=MESS1_"SD*5.3*929 - Post Install Data Report"
 S XMDUZ=.5,XMY(DUZ)="",XMY(XMDUZ)=""
 S XMY("BARBER.LORI@DOMAIN.EXT")=""
 S XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
 S XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
 S XMY("BUTLER.BRANDON@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
 ;