| 1 | SDAMA304 ;BPOIFO/ACS-Filter API Apply Filters ; 6/21/05 1:50pm
|
---|
| 2 | ;;5.3;Scheduling;**301,347,508**;13 Aug 1993
|
---|
| 3 | ;PER VHA DIRECTIVE 2004-038, DO NOT MODIFY THIS ROUTINE
|
---|
| 4 | ;
|
---|
| 5 | ;*****************************************************************
|
---|
| 6 | ; CHANGE LOG
|
---|
| 7 | ;
|
---|
| 8 | ; DATE PATCH DESCRIPTION
|
---|
| 9 | ;-------- ---------- -----------------------------------------
|
---|
| 10 | ;12/04/03 SD*5.3*301 ROUTINE COMPLETED
|
---|
| 11 | ;08/06/04 SD*5.3*347 ADDITION OF A NEW FILTER - DATE APPOINTMENT
|
---|
| 12 | ; MADE (FIELD #16) AND 2 NEW FIELDS TO RETURN:
|
---|
| 13 | ; 1) AUTO-REBOOKED APPT DATE/TIME (FIELD #24)
|
---|
| 14 | ; 2) NO-SHOW/CANCEL APPT DATE/TIME (FIELD #25)
|
---|
| 15 | ;02/22/07 SD*5.3*508 SEE SDAMA301 FOR CHANGE LIST
|
---|
| 16 | ;*****************************************************************
|
---|
| 17 | ;
|
---|
| 18 | ;*****************************************************************
|
---|
| 19 | ;
|
---|
| 20 | ; APPLY FILTERS (Extrinsic call)
|
---|
| 21 | ;
|
---|
| 22 | ;INPUT
|
---|
| 23 | ; SDFTYPE Filter Type (P-patient or C-clinic)
|
---|
| 24 | ; SDARRAY Appointment Filter array
|
---|
| 25 | ; SDFLTR Filter Flags array
|
---|
| 26 | ; SDDV Appointment Data Values array
|
---|
| 27 | ;
|
---|
| 28 | ;OUTPUT
|
---|
| 29 | ; SDMATCH -1 if no match
|
---|
| 30 | ; 1 if match
|
---|
| 31 | ;*****************************************************************
|
---|
| 32 | MATCH(SDFTYPE,SDARRAY,SDFLTR,SDDV) ;
|
---|
| 33 | N SDMATCH,SDX,SDCLIEN
|
---|
| 34 | S SDMATCH=0
|
---|
| 35 | ;apply patient or clinic filters
|
---|
| 36 | I SDFTYPE="P" D PMATCH(.SDARRAY,.SDMATCH)
|
---|
| 37 | I SDFTYPE="C" D CMATCH(.SDARRAY,.SDMATCH)
|
---|
| 38 | Q SDMATCH
|
---|
| 39 | PMATCH(SDARRAY,SDMATCH) ;Apply ^DPT-related filters
|
---|
| 40 | S SDMATCH=1
|
---|
| 41 | ;Clinic
|
---|
| 42 | I SDFLTR(2) D
|
---|
| 43 | . S SDDV(2)=$P($G(SDARRAY("DPT0")),"^",1)
|
---|
| 44 | . I SDDV(2)']"" S SDMATCH=0 Q
|
---|
| 45 | . ;apply filter to list or global
|
---|
| 46 | . I SDARRAY("CLNGBL")=1 D
|
---|
| 47 | .. S SDX=SDARRAY(2),SDCLIEN=SDDV(2)
|
---|
| 48 | .. I '$D(@(SDX_"SDCLIEN)")) S SDMATCH=0
|
---|
| 49 | . I SDARRAY("CLNGBL")=0 D
|
---|
| 50 | .. I ((";"_$G(SDARRAY(2))_";")'[(";"_SDDV(2)_";")) S SDMATCH=0
|
---|
| 51 | Q:'SDMATCH
|
---|
| 52 | ;Appointment Status
|
---|
| 53 | I SDFLTR(3) D
|
---|
| 54 | . N SDSTAT,SDTEMP
|
---|
| 55 | . S SDTEMP=$P($G(SDARRAY("DPT0")),"^",2)
|
---|
| 56 | . S SDSTAT=$S($G(SDTEMP)="":"R",SDTEMP="I":"I",SDTEMP="C":"CC",1:"X")
|
---|
| 57 | . I SDSTAT="X" S SDSTAT=$S(SDTEMP="CA":"CCR",SDTEMP="PC":"CP",1:"X")
|
---|
| 58 | . I SDSTAT="X" S SDSTAT=$S(SDTEMP="PCA":"CPR",SDTEMP="N":"NS",1:"X")
|
---|
| 59 | . I SDSTAT="X" S SDSTAT=$S(SDTEMP="NA":"NSR",SDTEMP="NT":"NT",1:"X")
|
---|
| 60 | . S SDDV(3)=SDSTAT
|
---|
| 61 | . I ((";"_$G(SDARRAY(3))_";")'[(";"_SDDV(3)_";")) S SDMATCH=0
|
---|
| 62 | Q:'SDMATCH
|
---|
| 63 | ;Encounter Exists (DEPRECATED 11/10/06 JFW)
|
---|
| 64 | ;I SDFLTR(12) D
|
---|
| 65 | ;.;get appointment encounter information
|
---|
| 66 | ;.S SDDV(12)=$P($G(SDARRAY("DPT0")),"^",20)
|
---|
| 67 | ;.;compare encounter information to filter value
|
---|
| 68 | ;.; Y AND NULL match or N and NOT NULL match
|
---|
| 69 | ;.I (((SDARRAY("ENCTR")["Y")&(SDDV(12)']""))!((SDARRAY("ENCTR")["N")&(SDDV(12)]""))) D
|
---|
| 70 | ;..S SDMATCH=0
|
---|
| 71 | ;Date Appointment Made
|
---|
| 72 | I SDFLTR(16) D
|
---|
| 73 | .;get date appointment made from specific appt
|
---|
| 74 | .S SDDV(16)=$P($G(SDARRAY("DPT0")),"^",19)
|
---|
| 75 | .;compare date with range of dates specified
|
---|
| 76 | .I $S(+SDDV(16)=SDARRAY("DAMFR"):0,+SDDV(16)=SDARRAY("DAMTO"):0,1:1) D
|
---|
| 77 | ..I ((+SDDV(16)'>SDARRAY("DAMFR"))!(+SDDV(16)'<SDARRAY("DAMTO"))) D
|
---|
| 78 | ...S SDMATCH=0
|
---|
| 79 | Q
|
---|
| 80 | ;
|
---|
| 81 | CMATCH(SDARRAY,SDMATCH) ;Apply ^SC-related filters
|
---|
| 82 | N SDAMCLIN,SDSTOP
|
---|
| 83 | S SDMATCH=1
|
---|
| 84 | ;Primary Stop Code
|
---|
| 85 | I SDFLTR(13) D
|
---|
| 86 | . S SDAMCLIN=+$G(SDARRAY("DPT0"))
|
---|
| 87 | . I $G(SDAMCLIN)="" S SDMATCH=0 Q
|
---|
| 88 | . S SDSTOP=$P($G(^SC(SDAMCLIN,0)),"^",7)
|
---|
| 89 | . I $G(SDSTOP)="" S SDMATCH=0 Q
|
---|
| 90 | . S SDDV(13)=$P($G(^DIC(40.7,SDSTOP,0)),"^",2)
|
---|
| 91 | . I $G(SDDV(13))="" S SDMATCH=0 Q
|
---|
| 92 | . I ((";"_$G(SDARRAY(13))_";")'[(";"_SDDV(13)_";")) S SDMATCH=0
|
---|
| 93 | Q
|
---|