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

SDAMA304.m

Go to the documentation of this file.
  1. SDAMA304 ;BPOIFO/ACS-Filter API Apply Filters ; 6/21/05 1:50pm
  1. ;;5.3;Scheduling;**301,347,508,1015**;13 Aug 1993;Build 21
  1. ;PER VHA DIRECTIVE 2004-038, DO NOT MODIFY THIS ROUTINE
  1. ;
  1. ;*****************************************************************
  1. ; CHANGE LOG
  1. ;
  1. ; DATE PATCH DESCRIPTION
  1. ;-------- ---------- -----------------------------------------
  1. ;12/04/03 SD*5.3*301 ROUTINE COMPLETED
  1. ;08/06/04 SD*5.3*347 ADDITION OF A NEW FILTER - DATE APPOINTMENT
  1. ; MADE (FIELD #16) AND 2 NEW FIELDS TO RETURN:
  1. ; 1) AUTO-REBOOKED APPT DATE/TIME (FIELD #24)
  1. ; 2) NO-SHOW/CANCEL APPT DATE/TIME (FIELD #25)
  1. ;02/22/07 SD*5.3*508 SEE SDAMA301 FOR CHANGE LIST
  1. ;*****************************************************************
  1. ;
  1. ;*****************************************************************
  1. ;
  1. ; APPLY FILTERS (Extrinsic call)
  1. ;
  1. ;INPUT
  1. ; SDFTYPE Filter Type (P-patient or C-clinic)
  1. ; SDARRAY Appointment Filter array
  1. ; SDFLTR Filter Flags array
  1. ; SDDV Appointment Data Values array
  1. ;
  1. ;OUTPUT
  1. ; SDMATCH -1 if no match
  1. ; 1 if match
  1. ;*****************************************************************
  1. MATCH(SDFTYPE,SDARRAY,SDFLTR,SDDV) ;
  1. N SDMATCH,SDX,SDCLIEN
  1. S SDMATCH=0
  1. ;apply patient or clinic filters
  1. I SDFTYPE="P" D PMATCH(.SDARRAY,.SDMATCH)
  1. I SDFTYPE="C" D CMATCH(.SDARRAY,.SDMATCH)
  1. Q SDMATCH
  1. PMATCH(SDARRAY,SDMATCH) ;Apply ^DPT-related filters
  1. S SDMATCH=1
  1. ;Clinic
  1. I SDFLTR(2) D
  1. . S SDDV(2)=$P($G(SDARRAY("DPT0")),"^",1)
  1. . I SDDV(2)']"" S SDMATCH=0 Q
  1. . ;apply filter to list or global
  1. . I SDARRAY("CLNGBL")=1 D
  1. .. S SDX=SDARRAY(2),SDCLIEN=SDDV(2)
  1. .. I '$D(@(SDX_"SDCLIEN)")) S SDMATCH=0
  1. . I SDARRAY("CLNGBL")=0 D
  1. .. I ((";"_$G(SDARRAY(2))_";")'[(";"_SDDV(2)_";")) S SDMATCH=0
  1. Q:'SDMATCH
  1. ;Appointment Status
  1. I SDFLTR(3) D
  1. . N SDSTAT,SDTEMP
  1. . S SDTEMP=$P($G(SDARRAY("DPT0")),"^",2)
  1. . S SDSTAT=$S($G(SDTEMP)="":"R",SDTEMP="I":"I",SDTEMP="C":"CC",1:"X")
  1. . I SDSTAT="X" S SDSTAT=$S(SDTEMP="CA":"CCR",SDTEMP="PC":"CP",1:"X")
  1. . I SDSTAT="X" S SDSTAT=$S(SDTEMP="PCA":"CPR",SDTEMP="N":"NS",1:"X")
  1. . I SDSTAT="X" S SDSTAT=$S(SDTEMP="NA":"NSR",SDTEMP="NT":"NT",1:"X")
  1. . S SDDV(3)=SDSTAT
  1. . I ((";"_$G(SDARRAY(3))_";")'[(";"_SDDV(3)_";")) S SDMATCH=0
  1. Q:'SDMATCH
  1. ;Encounter Exists (DEPRECATED 11/10/06 JFW)
  1. ;I SDFLTR(12) D
  1. ;.;get appointment encounter information
  1. ;.S SDDV(12)=$P($G(SDARRAY("DPT0")),"^",20)
  1. ;.;compare encounter information to filter value
  1. ;.; Y AND NULL match or N and NOT NULL match
  1. ;.I (((SDARRAY("ENCTR")["Y")&(SDDV(12)']""))!((SDARRAY("ENCTR")["N")&(SDDV(12)]""))) D
  1. ;..S SDMATCH=0
  1. ;Date Appointment Made
  1. I SDFLTR(16) D
  1. .;get date appointment made from specific appt
  1. .S SDDV(16)=$P($G(SDARRAY("DPT0")),"^",19)
  1. .;compare date with range of dates specified
  1. .I $S(+SDDV(16)=SDARRAY("DAMFR"):0,+SDDV(16)=SDARRAY("DAMTO"):0,1:1) D
  1. ..I ((+SDDV(16)'>SDARRAY("DAMFR"))!(+SDDV(16)'<SDARRAY("DAMTO"))) D
  1. ...S SDMATCH=0
  1. Q
  1. ;
  1. CMATCH(SDARRAY,SDMATCH) ;Apply ^SC-related filters
  1. N SDAMCLIN,SDSTOP
  1. S SDMATCH=1
  1. ;Primary Stop Code
  1. I SDFLTR(13) D
  1. . S SDAMCLIN=+$G(SDARRAY("DPT0"))
  1. . I $G(SDAMCLIN)="" S SDMATCH=0 Q
  1. . S SDSTOP=$P($G(^SC(SDAMCLIN,0)),"^",7)
  1. . I $G(SDSTOP)="" S SDMATCH=0 Q
  1. . S SDDV(13)=$P($G(^DIC(40.7,SDSTOP,0)),"^",2)
  1. . I $G(SDDV(13))="" S SDMATCH=0 Q
  1. . I ((";"_$G(SDARRAY(13))_";")'[(";"_SDDV(13)_";")) S SDMATCH=0
  1. Q