| 1 | SDAMA306 ;BPOIFO/ACS-Filter API Utilities ; 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 |  ;*****************************************************************
 | 
|---|
| 7 |  ;              CHANGE LOG
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  ;  DATE      PATCH       DESCRIPTION
 | 
|---|
| 10 |  ;--------  ----------    -----------------------------------------
 | 
|---|
| 11 |  ;12/04/03  SD*5.3*301    ROUTINE COMPLETED
 | 
|---|
| 12 |  ;08/06/04  SD*5.3*347    ADDITION OF A NEW FILTER - DATE APPOINTMENT
 | 
|---|
| 13 |  ;                        MADE (FIELD #16) AND 2 NEW FIELDS TO RETURN:
 | 
|---|
| 14 |  ;                        1) AUTO-REBOOKED APPT DATE/TIME (FIELD #24)
 | 
|---|
| 15 |  ;                        2) NO-SHOW/CANCEL APPT DATE/TIME (FIELD #25)
 | 
|---|
| 16 |  ;02/22/07  SD*5.3*508    SEE SDAMA301 FOR CHANGE LIST
 | 
|---|
| 17 |  ;*****************************************************************
 | 
|---|
| 18 |  ;*****************************************************************
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;INPUT
 | 
|---|
| 21 |  ;  SDARRAY   Appointment Filter array (by reference)
 | 
|---|
| 22 |  ;  
 | 
|---|
| 23 |  ;*****************************************************************
 | 
|---|
| 24 | INITAE(SDARRAY) ;Initialize Array Entries as needed
 | 
|---|
| 25 |  ;Initialize Appointment "From" and "To" dates if null
 | 
|---|
| 26 |  N SDI
 | 
|---|
| 27 |  F SDI=1,16  D INITDTS(SDI)
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  ;Initialize Fields Array if ALL Fields Requested
 | 
|---|
| 30 |  D:($$UPCASE(SDARRAY("FLDS"))="ALL") INITFLDS(.SDARRAY)
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ;Remove leading and trailing semi-colons from filter lists if present
 | 
|---|
| 33 |  N SDNODE
 | 
|---|
| 34 |  F SDNODE=2,3,4,13,"FLDS" D
 | 
|---|
| 35 |  . I $L($G(SDARRAY(SDNODE)))>0 D
 | 
|---|
| 36 |  .. I $E(SDARRAY(SDNODE),$L(SDARRAY(SDNODE)))=";" D
 | 
|---|
| 37 |  ... S SDARRAY(SDNODE)=$E(SDARRAY(SDNODE),1,($L(SDARRAY(SDNODE))-1))
 | 
|---|
| 38 |  .. I $E(SDARRAY(SDNODE),1)=";" D
 | 
|---|
| 39 |  ... S SDARRAY(SDNODE)=$E(SDARRAY(SDNODE),2,$L(SDARRAY(SDNODE)))
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ;If the patient list is in a global, add comma at end if needed
 | 
|---|
| 42 |  S SDARRAY("PATGBL")=0
 | 
|---|
| 43 |  I $G(SDARRAY(4))["(" D
 | 
|---|
| 44 |  . ;flag as patient global input
 | 
|---|
| 45 |  . S SDARRAY("PATGBL")=1
 | 
|---|
| 46 |  . ;add comma to end of global root if needed
 | 
|---|
| 47 |  . N SDLCHAR S SDLCHAR=$E(SDARRAY(4),$L(SDARRAY(4)))
 | 
|---|
| 48 |  . I SDLCHAR="," Q
 | 
|---|
| 49 |  . E  I SDLCHAR'="(" S SDARRAY(4)=SDARRAY(4)_","
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ;If the clinic list is in a global, add comma at end if needed
 | 
|---|
| 52 |  S SDARRAY("CLNGBL")=0
 | 
|---|
| 53 |  I $G(SDARRAY(2))["(" D
 | 
|---|
| 54 |  . ;flag as clinic global input
 | 
|---|
| 55 |  . S SDARRAY("CLNGBL")=1
 | 
|---|
| 56 |  . ;add comma to end of global root if needed
 | 
|---|
| 57 |  . N SDLCHAR S SDLCHAR=$E(SDARRAY(2),$L(SDARRAY(2)))
 | 
|---|
| 58 |  . I SDLCHAR="," Q
 | 
|---|
| 59 |  . E  I SDLCHAR'="(" S SDARRAY(2)=SDARRAY(2)_","
 | 
|---|
| 60 |  ;Initialize Encounter Filter
 | 
|---|
| 61 |  S SDARRAY("ENCTR")=$$UPCASE($G(SDARRAY(12)))
 | 
|---|
| 62 |  Q
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  ;***************************************************
 | 
|---|
| 65 |  ;INPUT
 | 
|---|
| 66 |  ;      SDFLTR    Filter to initialize
 | 
|---|
| 67 |  ;***************************************************
 | 
|---|
| 68 | INITDTS(SDFLTR) ;initialize Appt Date/Time and Date Appt Made
 | 
|---|
| 69 |  N SDFROM,SDTO,SDYR,SDDAY,SDMNTH,SDTIME,SDVAR
 | 
|---|
| 70 |  ;initialize variables to passed in values
 | 
|---|
| 71 |  S SDFROM=$P($G(SDARRAY(SDFLTR)),";",1)
 | 
|---|
| 72 |  S SDTO=$P($G(SDARRAY(SDFLTR)),";",2)
 | 
|---|
| 73 |  ;replace day and month to Jan 01 (0101) if 0s or "" are passed
 | 
|---|
| 74 |  ;replace time with 2359 if time is greater than 2359
 | 
|---|
| 75 |  F SDVAR="SDFROM","SDTO"  D
 | 
|---|
| 76 |  .I @SDVAR'="" D
 | 
|---|
| 77 |  ..S SDYR=$E(@SDVAR,1,3),SDMNTH=$E(@SDVAR,4,5),SDDAY=$E(@SDVAR,6,7)
 | 
|---|
| 78 |  ..S SDTIME=$P(@SDVAR,".",2) S:(SDTIME'="") SDTIME="."_SDTIME
 | 
|---|
| 79 |  ..S:(+SDDAY'>0) SDDAY="01"
 | 
|---|
| 80 |  ..S:(+SDMNTH'>0) SDMNTH="01"
 | 
|---|
| 81 |  ..S:((+SDTIME'=0)&(+SDTIME>.2359)) SDTIME=.2359
 | 
|---|
| 82 |  ..S @SDVAR=SDYR_SDMNTH_SDDAY
 | 
|---|
| 83 |  ..S:(SDTIME'="") @SDVAR=@SDVAR_SDTIME
 | 
|---|
| 84 |  ;initialize SDTO to default if null
 | 
|---|
| 85 |  I $G(SDTO)="" D
 | 
|---|
| 86 |  .S:SDFLTR=1 SDTO="9999999.9999"
 | 
|---|
| 87 |  .S:SDFLTR=16 SDTO="9999999"
 | 
|---|
| 88 |  ;if date passed in without time for Appt Date/Time filter add time
 | 
|---|
| 89 |  I SDFLTR=1,SDTO'["." S SDTO=SDTO_".2359"
 | 
|---|
| 90 |  ;create new variables to reference Date(/Time)s
 | 
|---|
| 91 |  I SDFLTR=1 D
 | 
|---|
| 92 |  .S SDARRAY("FR")=$G(SDFROM)
 | 
|---|
| 93 |  .S SDARRAY("TO")=$G(SDTO)
 | 
|---|
| 94 |  I SDFLTR=16 D
 | 
|---|
| 95 |  .S SDARRAY("DAMFR")=$G(SDFROM)
 | 
|---|
| 96 |  .S SDARRAY("DAMTO")=$G(SDTO)
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  ;*****************************************************************
 | 
|---|
| 100 |  ;INPUT
 | 
|---|
| 101 |  ;  SDARRAY   Appointment Filter array (by reference)
 | 
|---|
| 102 |  ;*****************************************************************
 | 
|---|
| 103 | INITFLDS(SDARRAY) ;initialize Fields Requested
 | 
|---|
| 104 |  N SDFLD
 | 
|---|
| 105 |  S SDARRAY("FLDS")=""  ;Reset Field Array
 | 
|---|
| 106 |  ;add all available fields to Field Request
 | 
|---|
| 107 |  F SDFLD=1:1:26,28:1:SDARRAY("FC") S SDARRAY("FLDS")=SDARRAY("FLDS")_SDFLD_";"
 | 
|---|
| 108 |  Q
 | 
|---|
| 109 | UPCASE(SDDATA) ;ensure RSA text is upper case
 | 
|---|
| 110 |  Q $TR(SDDATA,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 | 
|---|