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

BSDX38.m

Go to the documentation of this file.
  1. BSDX38 ; IHS/OIT/HMW/MSC/SAT - WINDOWS SCHEDULING RPCS ;
  1. ;;3.0;IHS WINDOWS SCHEDULING;;DEC 09, 2010
  1. ;
  1. ; DAP = return appointment data for given patient - RPC
  1. ;
  1. ;return appointment data for given patient - RPC
  1. DAP(BSDXY,DFN) ;return appointment data for given patient - RPC
  1. ; RPC Name is BSDX APPT EVENT LOG
  1. ; .BSDXY = returned pointer to appointment data
  1. ; DFN = patient code - pointer to ^DPT(DFN)
  1. N AMN,AMT,AMU,APN,APT,BSDXI,BSDXTMP,CIN,CIT,CIU,COE,COF,CON,COT,COU,CRM,CRS
  1. N DPTS,DPTSR,NSN,NST,NSU,PAT,PN,RBD,RSD,S,SC,SDCL,SDCLS,SDCLSC,SDW
  1. D ^XBKVAR S X="ERROR^BSDXERR",@^%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 Patient
  1. I '+DFN D ERR^BSDXERR("Invalid Patient ID.") Q
  1. I '$D(^DPT(DFN,0)) D ERR^BSDXERR("Invalid Patient ID.") Q
  1. ; data header
  1. S BSDXTMP="T00020PATIENT_IEN^T00020PATIENT_NAME^T00020CLINIC_IEN^T00020WARD_IEN^T00020APPT_TIME^T00020APPT_NUMBER"
  1. S BSDXTMP=BSDXTMP_"^T00020APPT_MADE_TIME^T00020APPT_MADE_USER^T00020APPT_MADE_USER_NAME^T00020ROUT_SLIP_DATE"
  1. S BSDXTMP=BSDXTMP_"^T00020CHECKIN_TIME^T00020CHECKIN_USER^T00020CHECKIN_USER_NAME"
  1. S BSDXTMP=BSDXTMP_"^T00020CHECKOUT_TIME^T00020CHECKOUT_USER^T00020CHECKOUT_USER_NAME^T00020CHECKOUT_FILED_TIME"
  1. S BSDXTMP=BSDXTMP_"^T00020NO_SHO_CANCEL_TIME^T00020NO_SHO_CANCEL_USER^T00020NO_SHO_CANCEL_USER_NAME^T00020CHECKED_OUT"
  1. S BSDXTMP=BSDXTMP_"^T00020REBOOK_DATE^T00100CANCEL_REASON^T00100CANCEL_REMARK"_$C(30)
  1. S ^BSDXTMP($J,0)=BSDXTMP
  1. S PN=$$GET1^DIQ(2,DFN_",",.01)
  1. S APN=0
  1. S SDCLS=""
  1. S SDCLSC=""
  1. ;loop thru patient appointments
  1. S S=0 F S S=$O(^DPT(DFN,"S",S)) Q:S'>0 D
  1. . S DPTS=$G(^DPT(DFN,"S",S,0))
  1. . S DPTSR=$G(^DPT(DFN,"S",S,"R"))
  1. . S SDCL=$P(DPTS,U) ;get clinic
  1. . S PAT="",SC=0 F S SC=$O(^SC(SDCL,"S",S,1,SC)) Q:SC'>0 D Q:PAT=DFN ;get appt record from clinic
  1. . . S SDCLS=$G(^SC(SDCL,"S",S,1,SC,0))
  1. . . S SDCLSC=$G(^SC(SDCL,"S",S,1,SC,"C"))
  1. . . S PAT=$P(SDCLS,U)
  1. . . I PAT=DFN Q
  1. . S BSDXTMP=DFN_U ;01 PATIENT_IEN
  1. . S BSDXTMP=BSDXTMP_PN_U ;02 PATIENT_NAME
  1. . S BSDXTMP=BSDXTMP_SDCL_U ;03 CLINIC_IEN
  1. . S SDW=$S($D(^DPT(DFN,.1)):^(.1),1:"Outpatient") ;04 WARD_IEN
  1. . S BSDXTMP=BSDXTMP_SDW_U
  1. . S APT=$TR($$FMTE^XLFDT(S),"@"," ") ;05 APPT_TIME
  1. . S BSDXTMP=BSDXTMP_APT_U
  1. . S APN=APN+1 ;06 APPT_NUMBER
  1. . S BSDXTMP=BSDXTMP_APN_U
  1. . S AMT=$P(DPTS,U,19) ;07 APPT_MADE_TIME
  1. . S:AMT'="" AMT=$TR($$FMTE^XLFDT(AMT),"@"," ")
  1. . S BSDXTMP=BSDXTMP_AMT_U
  1. . S AMU=$P(DPTS,U,18) ;08 APPT_MADE_USER
  1. . S BSDXTMP=BSDXTMP_AMU_U
  1. . S AMN=$$GET1^DIQ(200,AMU_",",.01) ;09 APPT_MADE_USER_NAME
  1. . S BSDXTMP=BSDXTMP_AMN_U
  1. . S RSD=$P(DPTS,U,13) ;10 ROUT_SLIP_DATE
  1. . S:RSD'="" RSD=$TR($$FMTE^XLFDT(RSD),"@"," ")
  1. . S BSDXTMP=BSDXTMP_RSD_U
  1. . S CIT=$P(SDCLSC,U) ;11 CHECKIN_TIME
  1. . S:CIT'="" CIT=$TR($$FMTE^XLFDT(CIT),"@"," ")
  1. . S BSDXTMP=BSDXTMP_CIT_U
  1. . S CIU=$P(SDCLSC,U,2) ;12 CHECKIN_USER
  1. . S BSDXTMP=BSDXTMP_CIU_U
  1. . S CIN=$$GET1^DIQ(200,CIU_",",.01) ;13 CHECKIN_USER_NAME
  1. . S BSDXTMP=BSDXTMP_CIN_U
  1. . S COT=$P(SDCLSC,U,3) ;14 CHECKOUT_TIME
  1. . S:COT'="" COT=$TR($$FMTE^XLFDT(COT),"@"," ")
  1. . S BSDXTMP=BSDXTMP_COT_U
  1. . S COU=$P(SDCLSC,U,4) ;15 CHECKOUT_USER
  1. . S BSDXTMP=BSDXTMP_COU_U
  1. . S CON=$$GET1^DIQ(200,COU_",",.01) ;16 CHECKOUT_USER_NAME
  1. . S BSDXTMP=BSDXTMP_CON_U
  1. . S COE=$P(SDCLSC,U,6) ;17 CHECKOUT_FILED_TIME
  1. . S:COE'="" COE=$TR($$FMTE^XLFDT(COE),"@"," ")
  1. . S BSDXTMP=BSDXTMP_COE_U
  1. . S NST=$P(DPTS,U,14) ;18 NO_SHO_CANCEL_TIME
  1. . S:NST'="" NST=$TR($$FMTE^XLFDT(NST),"@"," ")
  1. . S BSDXTMP=BSDXTMP_NST_U
  1. . S NSU=$P(DPTS,U,12) ;19 NO_SHO_CANCEL_USER
  1. . S BSDXTMP=BSDXTMP_NSU_U
  1. . S NSN=$$GET1^DIQ(200,NSU_",",.01) ;20 NO_SHO_CANCEL_USER_NAME
  1. . S BSDXTMP=BSDXTMP_NSN_U
  1. . S COF=$S($P(SDCLSC,U,3)'="":"YES",SDCLSC'="":"NO",1:"") ;21 CHECKED_OUT
  1. . S BSDXTMP=BSDXTMP_COF_U
  1. . S RBD=$P(DPTS,U,10) ;22 REBOOK_DATE
  1. . S:RBD'="" RBD=$TR($$FMTE^XLFDT(RBD),"@"," ")
  1. . S BSDXTMP=BSDXTMP_RBD_U
  1. . S BSDXI=BSDXI+1
  1. . S ^BSDXTMP($J,BSDXI)=BSDXTMP
  1. . S CRS=$P(DPTS,U,15) ;23 CANCEL_REASON
  1. . S BSDXI=BSDXI+1
  1. . S ^BSDXTMP($J,BSDXI)=CRS_U
  1. . S CRM=$P(DPTSR,U) ;24 CANCEL_REMARK
  1. . S BSDXI=BSDXI+1
  1. . S ^BSDXTMP($J,BSDXI)=CRM
  1. . S BSDXI=BSDXI+1
  1. . S ^BSDXTMP($J,BSDXI)=$C(30)
  1. ;
  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^BSDXERR",@^%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^BSDXERR("Invalid Clinic ID.") Q
  1. I '$D(^SC(SDCL,0)) D ERR^BSDXERR("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