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

BSDX37.m

Go to the documentation of this file.
  1. BSDX37 ; IHS/OIT/HMW/MSC/SAT - WINDOWS SCHEDULING RPCS ;
  1. ;;3.0;IHS WINDOWS SCHEDULING;;DEC 09, 2010
  1. ;
  1. ; NS = RETURN NO-SHOW DATA FOR GIVEN PATIENT - RPC
  1. ; VAL = return boolean to represent that a clinic allows variable appointment length - RPC
  1. ;
  1. ;RETURN NO-SHOW DATA FOR GIVEN PATIENT - RPC
  1. NS(BSDXY,DFN,SDCL) ;COLLECT NO-SHOW DATA
  1. ; .BSDXY = returned pointer to NO SHOW data
  1. ; DFN = patient code - pointer to ^DPT(DFN)
  1. ; SDCL = clinic code - pointer to Hospital Location file ^SC
  1. N BSDXI,NSC,SD2,SDCLN,SDT,SDTN
  1. D ^XBKVAR S X="ERROR^BSDX37",@^%ZOSF("TRAP")
  1. S BSDXI=0
  1. K ^BSDXTMP($J)
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. S ^BSDXTMP($J,0)="T00020ERRORID"_$C(30)
  1. ;check for valid resource
  1. I '+DFN D ERR("Invalid Patient ID.") Q
  1. I '$D(^DPT(DFN,0)) D ERR("Invalid Patient ID.") Q
  1. ; data header
  1. ; TOO_MANY = flag 0=OK; 1=too many no shows
  1. S ^BSDXTMP($J,0)="I00020PATIENT_IEN^I00020CLINIC_IEN^I00020TOO_MANY^I00020ALLOWED_NO_SHOWS^I00020TOTAL_NO_SHOWS"_$C(30)
  1. ;get allowed number of no shows for clinic
  1. S SDCLN=$G(^SC(SDCL,"SDP"))
  1. ;loop thru schedule
  1. S NSC=0 ;no show counter
  1. S SDT=0
  1. F S SDT=$O(^DPT(DFN,"S",SDT)) Q:SDT'>0 D
  1. . S SDTN=^DPT(DFN,"S",SDT,0)
  1. . I ($P(SDTN,U)=SDCL) D
  1. . . S SD2=$P(SDTN,U,2)
  1. . . I SD2["N",$$NOSHOW(DFN,SDT,$P(SDTN,U),SDTN) S NSC=NSC+1
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=DFN_U_SDCL_U_($P(SDCLN,U,1)<=NSC)_U_$P(SDCLN,U)_U_NSC
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(30)
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. NOSHOW(DFN,SDT,CIFN,PAT) ;Input: DFN=Patient IFN, SDT=Appointment D/T
  1. ; CIFN=Clinic IFN, PAT=Zero node of pat. appt., DA=Clinic appt. IFN
  1. ; Output: 1 or 0 for noshow yes/no
  1. N NSQUERY,NS S NS=1,NSQUERY=$$STATUS^SDAM1(DFN,SDT,CIFN,PAT)
  1. I $P(NSQUERY,";",3)["ACTION REQ" S NS=0
  1. NOSHOWQ Q NS
  1. ;
  1. ;return boolean to represent that a clinic allows variable appointment length - RPC
  1. VAL(BSDXY,SDCL) ;return boolean to represent that a clinic allows variable appointment length - RPC
  1. ; BSDX CLINIC VAR APPT
  1. N BSDXI
  1. D ^XBKVAR S X="ERROR^BSDX37",@^%ZOSF("TRAP")
  1. S BSDXI=0
  1. K ^BSDXTMP($J)
  1. S BSDXY="^BSDXTMP("_$J_")"
  1. S ^BSDXTMP($J,0)="T00020ERRORID"_$C(30)
  1. ;check for valid clinic ID
  1. I '+SDCL D ERR("Invalid Clinic ID.") Q
  1. I '$D(^SC(SDCL,0)) D ERR("Invalid Clinic ID.") Q
  1. ; data header
  1. ; VAR_APPT_FLAG = flag 0=Clinic does not Allow Variable Appointment; 1=Clinic Allows Variable Appointment
  1. S ^BSDXTMP($J,0)="I00020VAR_APPT_FLAG"_$C(30)
  1. ;get VARIABLE APPOINTMENT FLAG for clinic
  1. S VAL=$$GET1^DIQ(44,SDCL_",",1913) ;Variable Appointment Length
  1. S VAL=$S(VAL["YES":1,1:0)
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=VAL
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(30)
  1. S BSDXI=BSDXI+1
  1. S ^BSDXTMP($J,BSDXI)=$C(31)
  1. Q
  1. ;
  1. ERROR ;
  1. D ERR("RPMS Error")
  1. Q
  1. ;
  1. ERR(BSDXERR) ;Error processing
  1. I +BSDXERR 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
  1. ;