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

BSDX13.m

Go to the documentation of this file.
  1. BSDX13 ; IHS/OIT/HMW/MSC/SAT - WINDOWS SCHEDULING RPCS ;
  1. ;;3.0;IHS WINDOWS SCHEDULING;;DEC 09, 2010
  1. ;
  1. ;
  1. Q
  1. AVDELDTD(BSDXY,BSDXRESD,BSDXSTART,BSDXEND) ;EP
  1. ;Entry point for debugging
  1. ;
  1. ;D DEBUG^%Serenji("AVDELDT^BSDX13(.BSDXY,BSDXRESD,BSDXSTART,BSDXEND)")
  1. Q
  1. ;
  1. AVDELDT(BSDXY,BSDXRESD,BSDXSTART,BSDXEND) ;EP
  1. ;Cancel availability in a date range
  1. ;Called by BSDX CANCEL AV BY DATE
  1. ;
  1. ;BSDXRESD is BSDX RESOURCE ien
  1. ;BSDXSTART and BSDXEND are external dates
  1. ;
  1. S X="ERROR^BSDX13",@^%ZOSF("TRAP")
  1. N BMXIEN,BSDXI
  1. S BSDXI=0
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. K ^BSDXTMP($J)
  1. S ^BSDXTMP($J,BSDXI)="I00020ERRORID^T00030ERRORTEXT"_$C(30)
  1. S X=BSDXSTART
  1. S %DT="X" D ^%DT
  1. I Y=-1 D ERR(0,"AVDELDT-BSDX13: Invalid Start Date") Q
  1. S BSDXSTART=$P(Y,".")
  1. S X=BSDXEND
  1. S %DT="X" D ^%DT
  1. I Y=-1 D ERR(0,"AVDELDT-BSDX13: Invalid End Date") Q
  1. S BSDXEND=$P(Y,".")_".99999"
  1. I '+BSDXRESD D ERR(0,"AVDELDT-BSDX13: Invalid Resource ID") Q
  1. ;
  1. F S BSDXSTART=$O(^BSDXAB("ARSCT",BSDXRESD,BSDXSTART)) Q:'+BSDXSTART Q:BSDXSTART>BSDXEND D
  1. . S BMXIEN=0
  1. . F S BMXIEN=$O(^BSDXAB("ARSCT",BSDXRESD,BSDXSTART,BMXIEN)) Q:'+BMXIEN D
  1. . . D CALLDIK(BMXIEN)
  1. ;
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)="-1^"_$C(30)_$C(31)
  1. Q
  1. ERROR ;
  1. D ^%ZTER
  1. I '+$G(BSDXI) N BSDXI S BSDXI=999999
  1. S BSDXI=BSDXI+1
  1. D ERR(0,"BSDX13 M Error: <"_$G(%ZTERROR)_">")
  1. Q
  1. ;
  1. ERR(BSDXERID,ERRTXT) ;Error processing
  1. S:'+$G(BSDXI) BSDXI=999999
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=BSDXERID_"^"_ERRTXT_$C(30)
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. AVDEL(BSDXY,BSDXAVID) ;EP
  1. ;Called by BSDX CANCEL AVAILABILITY
  1. ;Deletes Access block
  1. ;BSDXAVID is entry number in BSDX AVAILABILITY file
  1. ;Returns error code in recordset field ERRORID
  1. ;
  1. S X="ERROR^BSDX13",@^%ZOSF("TRAP")
  1. N BSDXNOD,BSDXSTART,DIK,DA,BSDXID,BSDXI,BSDXEND,BSDXRSID
  1. ;
  1. S BSDXI=0
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. K ^BSDXTMP($J)
  1. S ^BSDXTMP($J,0)="I00020ERRORID^T00030ERRORTEXT"_$C(30)
  1. I '+BSDXAVID D ERR(70) Q
  1. I '$D(^BSDXAB(BSDXAVID,0)) D ERR(70) Q
  1. ;
  1. ;
  1. ;TODO: Test for existing appointments in availability block
  1. ; (corresponds to old qryAppointmentBlocksOverlapC
  1. ; and AVBlockHasAppointments)
  1. ;
  1. ;I $$APTINBLK(BSDXAVID) D ERR(20) Q
  1. ;
  1. ;Delete AVAILABILITY entries
  1. D CALLDIK(BSDXAVID)
  1. ;
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)="-1^"_$C(30)_$C(31)
  1. Q
  1. ;
  1. CALLDIK(BSDXAVID) ;
  1. ;Delete AVAILABILITY entries
  1. ;
  1. S DIK="^BSDXAB("
  1. S DA=BSDXAVID
  1. D ^DIK
  1. ;
  1. Q
  1. ;
  1. APTINBLK(BSDXAVID) ;
  1. ;
  1. ;NOTE: This Subroutine Not called in current version. Keep code for later use.
  1. ;
  1. ;N BSDXS,BSDXID,BSDXHIT,BSDXNOD,BSDXE,BSDXSTART,BSDXEND,BSDXRSID
  1. ;S BSDXNOD=^BSDXAB(BSDXAVID,0)
  1. ;S BSDXSTART=$P(BSDXNOD,U,3)
  1. ;S BSDXEND=$P(BSDXNOD,U,4)
  1. ;S BSDXRSID=$P(BSDXNOD,U,1)
  1. ;I '$D(^BSDXDAPRS("ARSRC",BSDXRSID)) Q 0
  1. ;;If any appointments start at the AV block start time:
  1. ;I $D(^BSDXDAPRS("ARSRC",BSDXRSID,BSDXSTART)) Q 1
  1. ;;Find the first appt time BSDXS on the same day as the av block
  1. ;S BSDXS=$O(^BSDXDAPRS("ARSRC",BSDXRSID,$P(BSDXSTART,".")))
  1. ;I BSDXS>BSDXEND Q 0
  1. ;;For all the appts that day with start times less
  1. ;;than the av block's end time, find any whose end time is
  1. ;;greater than the av block's start time
  1. ;S BSDXHIT=0
  1. ;S BSDXS=BSDXS-.0001
  1. ;F S BSDXS=$O(^BSDXDAPRS("ARSRC",BSDXRSID,BSDXS)) Q:'+BSDXS Q:BSDXS'<BSDXEND D Q:BSDXHIT
  1. ;. S BSDXID=0 F S BSDXID=$O(^BSDXDAPRS("ARSRC",BSDXRSID,BSDXS,BSDXID)) Q:'+BSDXID D Q:BSDXHIT
  1. ;. . Q:'$D(^BSDXDAPT(BSDXID,0))
  1. ;. . S BSDXNOD=^BSDXDAPT(BSDXID,0)
  1. ;. . S BSDXE=$P(BSDXNOD,U,2)
  1. ;. . I BSDXE>BSDXSTART S BSDXHIT=1 Q
  1. ;;
  1. ;I BSDXHIT Q 1
  1. Q 0
  1. ;
  1. ;ERR(ERRNO) ;Error processing
  1. ;N BSDXERR
  1. ;S BSDXERR=ERRNO+134234112 ;vbObjectError
  1. ;S BSDXI=BSDXI+1
  1. ;S ^BSDXTMP($J,BSDXI)=BSDXERR_$C(30)
  1. ;S BSDXI=BSDXI+1
  1. ;S ^BSDXTMP($J,BSDXI)=$C(31)
  1. ;Q