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