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