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

BSDX06.m

Go to the documentation of this file.
  1. BSDX06 ; IHS/OIT/HMW/MSC/SAT - WINDOWS SCHEDULING RPCS ;
  1. ;;3.0;IHS WINDOWS SCHEDULING;;DEC 09, 2010
  1. ;
  1. ;
  1. TPBLKOV(BSDXY,BSDXSTART,BSDXEND,BSDXRES) ;EP
  1. ;Called by BSDXD TYPE BLOCKS OVERLAP
  1. ;(Duplicates old qryTypeBlocksOverlapB)
  1. ;BSDXRES is resource name
  1. ;
  1. ;Test lines:
  1. ;D TPBLKOV^BSDX06(.RES,"5-12-2003","5-16-2003","REMILLARD,MIKE") ZW RES
  1. ;BSDX TYPE BLOCKS OVERLAP^1-1-2000^12-14-2004^REMILLARD,MIKE
  1. ;S ^HW("BSDXD06")=BSDXSTART_U_BSDXEND_U_BSDXRES
  1. ;
  1. N BSDXERR,BSDXIEN,BSDXDEP,BSDXBS,BSDXI,BSDXNEND,BSDXNSTART,BSDXPEND,BSDXRESD,BSDXRESN,BSDXS,BSDXTPID,BSDXNOD,BSDXAD
  1. K ^BSDXTMP($J)
  1. S BSDXERR=""
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. S ^BSDXTMP($J,0)="D00030StartTime^D00030EndTime^I00010AppointmentTypeID^I00010AvailabilityID^T00030ResourceName"_$C(30)
  1. S BSDXI=0
  1. D
  1. . S BSDXBS=0
  1. . S:BSDXSTART["@0000" BSDXSTART=$P(BSDXSTART,"@")
  1. . S:BSDXEND["@0000" BSDXEND=$P(BSDXEND,"@")
  1. . S %DT="T",X=BSDXSTART D ^%DT S BSDXSTART=Y
  1. . I BSDXSTART=-1 S ^BSDXTMP($J,1)=$C(31) Q
  1. . S %DT="T",X=BSDXEND D ^%DT S BSDXEND=Y
  1. . I BSDXEND=-1 S ^BSDXTMP($J,1)=$C(31) Q
  1. . I $L(BSDXEND,".")=1 S BSDXEND=BSDXEND+.9999 ;Go to end of day
  1. . S BSDXRESN=BSDXRES
  1. . Q:BSDXRESN=""
  1. . Q:'$D(^BSDXRES("B",BSDXRESN))
  1. . S BSDXRESD=$O(^BSDXRES("B",BSDXRESN,0))
  1. . Q:'+BSDXRESD
  1. . D STCOMM(BSDXRESN,BSDXRESD)
  1. . Q
  1. ;
  1. S BSDXI=$G(BSDXI)+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. STCOMM(BSDXRESN,BSDXRESD) ;EP
  1. ;
  1. Q:'$D(^BSDXAB("ARSCT",BSDXRESD))
  1. Q:'$D(^BSDXRES(BSDXRESD,0))
  1. ;$O THRU "ARSCT" XREF OF ^BSDXAB
  1. S BSDXNEND=0,BSDXNSTART=0,BSDXPEND=0
  1. ;Start at the beginning of the day -- AV Blocks can't overlap days
  1. S BSDXS=$P(BSDXSTART,"."),BSDXS=BSDXS-.0001
  1. F S BSDXS=$O(^BSDXAB("ARSCT",BSDXRESD,BSDXS)) Q:'+BSDXS Q:BSDXS>BSDXEND D
  1. . S BSDXAD=0 F S BSDXAD=$O(^BSDXAB("ARSCT",BSDXRESD,BSDXS,BSDXAD)) Q:'+BSDXAD D
  1. . . Q:'$D(^BSDXAB(BSDXAD,0))
  1. . . S BSDXNOD=^BSDXAB(BSDXAD,0)
  1. . . S BSDXNSTART=$P(BSDXNOD,U,2)
  1. . . S BSDXNEND=$P(BSDXNOD,U,3)
  1. . . I BSDXNEND'>BSDXSTART Q
  1. . . S Y=BSDXNSTART X ^DD("DD") S BSDXNSTART=$TR(Y,"@"," ")
  1. . . S Y=BSDXNEND X ^DD("DD") S BSDXNEND=$TR(Y,"@"," ")
  1. . . S BSDXTPID=$P(BSDXNOD,U,5)
  1. . . S BSDXI=BSDXI+1
  1. . . S ^BSDXTMP($J,BSDXI)=BSDXNSTART_U_BSDXNEND_U_BSDXTPID_U_BSDXAD_U_BSDXRESN_$C(30)
  1. . . Q
  1. . Q
  1. Q