| 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
 | 
|---|