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

SDES935P.m

Go to the documentation of this file.
SDES935P ;ALB/BLB - SD*5.3*935 Post Init Routine ; Sept 11, 2025
 ;;5.3;SCHEDULING;**935**;AUG 13, 1993;Build 2
  ;;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*935 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*935 Post Install Routine Task 1"
 D NOW^%DTC
 S ZTDTH=$P($H,",",1)_","_86399,ZTIO="",ZTRTN="REPORT^SDES935P",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 APPTIEN,CREATEDT,UPDATECNT,FDA
 K ^XTMP("SDES935P")
 S ^XTMP("SDES935P",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*935"
 K FDA
 S UPDATECNT=1
 S UPDATECNT=UPDATECNT+1
 ;ADD LOGIC HERE
 D SLOTS
 ;
 D MAIL
 K ^XTMP("SDES935P")
 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(""SDES935P"","
 S XMSUB=MESS1_"SD*5.3*935 - 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
 ;
SLOTS ;
 N CLINICIEN,FOUND,SLOTCOUNT,SLOTSTART,TIME,SUBIEN,INTERVAL,ORIGINALSLOTS,SCHEDULEDATE,COUNT,CURRENTSLOTS
 N DAYOFTHEWEEK,DIVISION,INSTITUTION,STATIONNUMBER,STOPCODE,STOPCODEIEN,SLOTS,DATE,SLOTCOUNTS,SLOTDATETIME,THIRTY,ONEEIGHTY,THREESIXTYFIVE,TYPE
 ;
 S STOPCODE=0,STOPCODEIEN=0
 F STOPCODE=322,323,350,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 STATIONNUMBER=$$GET1^DIQ(4,$$GET1^DIQ(40.8,$$GET1^DIQ(44,CLINICIEN,3.5,"I"),.07,"I"),99)
 ..;
 ..K @$NA(^TMP($J,"SLOTSEARCH"))
 ..D GETSLOTS^SDEC57($NA(^TMP($J,"SLOTSEARCH")),$$GETRES^SDES2UTIL1(CLINICIEN),$$FMADD^XLFDT(DT,-365),DT)
 ..;
 ..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)
 ...S DATE=$P(SLOTSTART,".")
 ...S TIME=$E(SLOTSTART,8,$L(SLOTSTART))
 ...S INTERVAL=$$FMDIFF^XLFDT(DT,DATE)
 ...S INTERVAL=$S(INTERVAL<=30:30,INTERVAL<=180:180,1:365)
 ...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 DAYOFTHEWEEK'="Saturday",DAYOFTHEWEEK'="Sunday",TIME>=.08,TIME<=.163 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=$$ISOTFM^SDAMUTDT($$FMTISO^SDAMUTDT(DATE_"."_$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",.01,"I"))) D
 .....S ORIGINALSLOTS=$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",1,"I")
 .....S SLOTCOUNTS(STATIONNUMBER,INTERVAL,"TOTAL SLOTS")=$G(SLOTCOUNTS(STATIONNUMBER,INTERVAL,"TOTAL SLOTS"))+ORIGINALSLOTS
 .....S SLOTCOUNTS(STATIONNUMBER,INTERVAL,"USED SLOTS")=$G(SLOTCOUNTS(STATIONNUMBER,INTERVAL,"USED SLOTS"))+ORIGINALSLOTS-CURRENTSLOTS
 .....S SLOTCOUNTS(STATIONNUMBER,INTERVAL,"UNUSED SLOTS")=$G(SLOTCOUNTS(STATIONNUMBER,INTERVAL,"TOTAL SLOTS"))-$G(SLOTCOUNTS(STATIONNUMBER,INTERVAL,"USED SLOTS"))
 .....S FOUND=1
 ;
 ;
 S COUNT=0
 S COUNT=COUNT+1
 S ^XTMP("SDES935P",COUNT)="**********************************SLOT REPORT**********************************"
 S COUNT=COUNT+1
 S ^XTMP("SDES935P",COUNT)="Station Number^TOTAL SLOTS 30 DAYS^TOTAL SLOTS 180 DAYS^TOTAL SLOTS 365 DAYS^USED SLOTS 30 DAYS^USED SLOTS 180 DAYS^USED SLOTS 365 DAYS^UNUSED SLOTS 30 DAYS^UNUSED SLOTS 180 DAYS^UNUSED SLOTS 365 DAYS"
 S COUNT=COUNT+1
  ;
 S STATIONNUMBER=0
 F  S STATIONNUMBER=$O(SLOTCOUNTS(STATIONNUMBER)) Q:'STATIONNUMBER  D
 .;
 .S ^XTMP("SDES935P",COUNT)=STATIONNUMBER
 .;
 .F TYPE="TOTAL SLOTS","USED SLOTS","UNUSED SLOTS" D
 ..;
 ..S THIRTY=$S($G(SLOTCOUNTS(STATIONNUMBER,30,TYPE))'="":$G(SLOTCOUNTS(STATIONNUMBER,30,TYPE)),1:0)
 ..S ONEEIGHTY=$G(SLOTCOUNTS(STATIONNUMBER,30,TYPE))+$G(SLOTCOUNTS(STATIONNUMBER,180,TYPE))
 ..S THREESIXTYFIVE=$G(SLOTCOUNTS(STATIONNUMBER,30,TYPE))+$G(SLOTCOUNTS(STATIONNUMBER,180,TYPE))+$G(SLOTCOUNTS(STATIONNUMBER,365,TYPE))
 ..;
 ..S ^XTMP("SDES935P",COUNT)=^XTMP("SDES935P",COUNT)_U_THIRTY_U_ONEEIGHTY_U_THREESIXTYFIVE
 .S COUNT=COUNT+1
 ;
 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
 ;