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

BSDX02.m

Go to the documentation of this file.
  1. BSDX02 ; IHS/OIT/HMW/MSC/SAT - WINDOWS SCHEDULING RPCS ;
  1. ;;3.0;IHS WINDOWS SCHEDULING;;DEC 09, 2010
  1. ;
  1. ;
  1. CRSCHD(BSDXY,BSDXRES,BSDXSTART,BSDXEND) ;EP
  1. ;Entry point for debugging
  1. ;
  1. ;D DEBUG^%Serenji("CRSCH^BSDX02(.BSDXY,BSDXRES,BSDXSTART,BSDXEND)")
  1. Q
  1. ;
  1. CRSCH(BSDXY,BSDXRES,BSDXSTART,BSDXEND,BSDXWKIN) ;
  1. ;Called by BSDX CREATE APPT SCHEDULE
  1. ;Create Resource Appointment Schedule recordset
  1. ;On error, returns 0 in APPOINTMENTID field and error text in NOTE field
  1. ;
  1. ;$O Thru ^BSDXAPPT("ARSRC", RESOURCE, STARTTIME, APPTID)
  1. ;BMXRES is a | delimited list of resource names
  1. ;BSDXWKIN - If 1, then return walkins, otherwise skip them
  1. ;9-27-2004 Added walkin to returned datatable
  1. ;TODO: Change BSDXRES from names to IDs
  1. ;
  1. N BSDXERR,BSDXIEN,BSDXDEPD,BSDXDEPN,BSDXRESD,BSDXI,BSDXJ,BSDXRESN,BSDXS,BSDXAD,BSDXZ,BSDXQ,BSDXNOD,BSDXTMP
  1. N BSDXPAT,BSDXNOT,BSDXZPCD,BSDXPCD
  1. K ^BSDXTMP($J)
  1. S BSDXERR=""
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. S BSDXTMP="I00020APPOINTMENTID^D00030START_TIME^D00030END_TIME^D00030CHECKIN^D00030AUXTIME^I00020PATIENTID^"
  1. S BSDXTMP=BSDXTMP_"T00030PATIENTNAME^T00030RESOURCENAME^I00005NOSHOW^T00020HRN^I00005ACCESSTYPEID^I00005WALKIN^"
  1. S BSDXTMP=BSDXTMP_"D00030CHECKOUT^I00020VPROVIDER^T00020CANCELLED^T00250NOTE"_$C(30)
  1. S ^BSDXTMP($J,0)=BSDXTMP
  1. D ^XBKVAR S X="ETRAP^BSDX02",@^%ZOSF("TRAP")
  1. ;
  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. ;
  1. S BSDXI=0
  1. D STRES
  1. ;
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. STRES ;
  1. F BSDXJ=1:1:$L(BSDXRES,"|") S BSDXRESN=$P(BSDXRES,"|",BSDXJ) D
  1. . Q:BSDXRESN=""
  1. . Q:'$D(^BSDXRES("B",BSDXRESN))
  1. . S BSDXRESD=$O(^BSDXRES("B",BSDXRESN,0))
  1. . Q:'+BSDXRESD
  1. . Q:'$D(^BSDXAPPT("ARSRC",BSDXRESD))
  1. . S BSDXS=BSDXSTART-.0001
  1. . F S BSDXS=$O(^BSDXAPPT("ARSRC",BSDXRESD,BSDXS)) Q:'+BSDXS Q:BSDXS>BSDXEND D
  1. . . S BSDXAD=0 F S BSDXAD=$O(^BSDXAPPT("ARSRC",BSDXRESD,BSDXS,BSDXAD)) Q:'+BSDXAD D STCOMM(BSDXAD,BSDXRESN)
  1. Q
  1. ;
  1. STCOMM(BSDXAD,BSDXRESN) ;
  1. ;BSDXAD is the appointment IEN
  1. N BSDXC,BSDXCAN,BSDXQ,BSDXZ,BSDXSUBC,BSDXHRN,BSDXPATD,BSDXATID,BSDXISWK
  1. Q:'$D(^BSDXAPPT(BSDXAD,0))
  1. S BSDXNOD=^BSDXAPPT(BSDXAD,0)
  1. S BSDXCAN=($P(BSDXNOD,U,12)]"") ;CANCELLED flag 1=cancelled; 0=not cancelled
  1. S BSDXISWK=0
  1. S:$P(BSDXNOD,U,13)="y" BSDXISWK=1
  1. I +$G(BSDXWKIN) Q:BSDXISWK ;Don't return walkins if appt is WALKIN and BSDXWKIN is 1
  1. S BSDXCO=$TR($$FMTE^XLFDT($P(BSDXNOD,U,14)),"@"," ") ;APPOINTMENT CHECKOUT TIME
  1. S BSDXVPRV=$P(BSDXNOD,U,16) ;POINTER TO V PROVIDER TABLE ^AUPNVPRV
  1. S BSDXZ=BSDXAD_"^"
  1. F BSDXQ=1:1:4 D
  1. . S Y=$P(BSDXNOD,U,BSDXQ)
  1. . X ^DD("DD") S Y=$TR(Y,"@"," ")
  1. . S BSDXZ=BSDXZ_Y_"^"
  1. S BSDXPATD=$P(BSDXNOD,U,5)
  1. S BSDXZ=BSDXZ_BSDXPATD_"^" ;PATIENT ID
  1. S BSDXPAT=""
  1. I BSDXPATD]"",$D(^DPT(BSDXPATD,0)) S BSDXPAT=$P(^DPT(BSDXPATD,0),U)
  1. S BSDXZ=BSDXZ_BSDXPAT_"^" ;PATIENT NAME
  1. S BSDXZ=BSDXZ_BSDXRESN_"^" ;RESOURCENAME
  1. S BSDXZ=BSDXZ_+$P(BSDXNOD,U,10)_"^" ;NOSHOW
  1. S BSDXHRN=""
  1. I $D(DUZ(2)),DUZ(2)>0 S BSDXHRN=$P($G(^AUPNPAT(BSDXPATD,41,DUZ(2),0)),U,2) ;HRN
  1. S BSDXZ=BSDXZ_BSDXHRN_"^"
  1. S BSDXATID=$P(BSDXNOD,U,6)
  1. S:'+BSDXATID BSDXATID=0 ;UNKNOWN TYPE
  1. S BSDXZ=BSDXZ_BSDXATID_"^"_BSDXISWK_"^"
  1. S BSDXZ=BSDXZ_BSDXCO_"^" ;CHECKOUT TIME
  1. S BSDXZ=BSDXZ_BSDXVPRV_"^" ;POINTER TO NEW PERSON
  1. S BSDXZ=BSDXZ_BSDXCAN_"^" ;CANCELLED
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=BSDXZ
  1. ;NOTE
  1. S BSDXNOT="",BSDXQ=0 F S BSDXQ=$O(^BSDXAPPT(BSDXAD,1,BSDXQ)) Q:'+BSDXQ D
  1. . S BSDXNOT=$G(^BSDXAPPT(BSDXAD,1,BSDXQ,0))
  1. . S:$E(BSDXNOT,$L(BSDXNOT)-1,$L(BSDXNOT))'=" " BSDXNOT=BSDXNOT_" "
  1. . S BSDXI=BSDXI+1
  1. . S ^BSDXTMP($J,BSDXI)=BSDXNOT
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(30)
  1. Q
  1. ;
  1. ERR(BSDXI,BSDXERR) ;Error processing
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)="0^^^^^^^^^^^"_BSDXERR_$C(30)
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. ETRAP ;EP Error trap entry
  1. D ^%ZTER
  1. I '$D(BSDXI) N BSDXI S BSDXI=999999
  1. S BSDXI=BSDXI+1
  1. D ERR(BSDXI,"BSDX31 Error: "_$G(%ZTERROR))
  1. Q