1 | SCRPW74 ;BP-CIOFO/KEITH,ESW - Clinic appointment availability extract (cont.) ; 6/10/03 9:13am
|
---|
2 | ;;5.3;Scheduling;**192,206,223,241,249,291**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | MON(SDEX,SDT,SDMON) ;Determine month and date ranges for extracts
|
---|
5 | ;Input: SDEX=extract type, '1' for prospective, '2' for retrospective
|
---|
6 | ;Input: SDT=date of extract run
|
---|
7 | ;Input: SDMON=array to return date information (pass by reference)
|
---|
8 | ;Output: month/year of extract^begin date of report data
|
---|
9 | ;Output: SDMON array as follows:
|
---|
10 | ; SDMON("SDBDT")=begin date
|
---|
11 | ; SDMON("SDDIV")=0
|
---|
12 | ; SDMON("SDEDT")=end date
|
---|
13 | ; SDMON("SDEX")=extract type ('1' or '2')
|
---|
14 | ; SDMON("SDPAST")='1' for extract 2, '0' otherwise
|
---|
15 | ; SDMON("SDPBDT")=begin date external value
|
---|
16 | ; SDMON("SDPEDT")=end date external value
|
---|
17 | ; SDMON("SDRPT")=month/year of extract^begin date of data
|
---|
18 | ;
|
---|
19 | N SDPAR,Y,SDX,SDY,X1,X2
|
---|
20 | S SDMON("SDDIV")=0,SDMON("SDPAST")=$S(SDEX=1:0,1:1)
|
---|
21 | S SDMON("SDEX")=SDEX,SDPAR=$G(^SD(404.91,1,"PATCH192"))
|
---|
22 | I SDEX=1 D
|
---|
23 | .S Y=$S($E(SDT,4,5)=12:$E(SDT,1,3)+1_"0101",1:$E(SDT,1,5)+1_"01")
|
---|
24 | .S SDMON("SDBDT")=Y X ^DD("DD") S SDMON("SDPBDT")=Y
|
---|
25 | .S X1=SDMON("SDBDT"),X2=$P(SDPAR,U,2) S:X2<1 X2=180 S X2=X2-1
|
---|
26 | .D C^%DTC S (SDMON("SDEDT"),Y)=X X ^DD("DD") S SDMON("SDPEDT")=Y
|
---|
27 | .Q
|
---|
28 | I SDEX=2 D
|
---|
29 | .S Y=$S($E(SDT,4,5)="01":$E(SDT,1,3)-1_1201,1:$E(SDT,1,5)-1_"01")
|
---|
30 | .S SDMON("SDBDT")=Y X ^DD("DD") S SDMON("SDPBDT")=Y
|
---|
31 | .S X1=SDMON("SDBDT"),X2=$P(SDPAR,U,4) S:X2<1 X2=31 S X2=X2-1
|
---|
32 | .D C^%DTC I $E(X,1,5)>$E(SDMON("SDBDT"),1,5) D
|
---|
33 | ..S X1=$E(X,1,5)_"01",X2=-1 D C^%DTC Q
|
---|
34 | .S (SDMON("SDEDT"),Y)=X X ^DD("DD") S SDMON("SDPEDT")=Y
|
---|
35 | .Q
|
---|
36 | S SDY=SDMON("SDBDT")
|
---|
37 | S:SDEX=2 SDY=$S($E(SDY,4,5)=12:$E(SDY,1,3)+1_"0101",1:$E(SDY,1,5)+1_"01") S SDX=+$E(SDY,4,5)
|
---|
38 | S SDX=$P("JANUARY^FEBRUARY^MARCH^APRIL^MAY^JUNE^JULY^AUGUST^SEPTEMBER^OCTOBER^NOVEMBER^DECEMBER",U,SDX)
|
---|
39 | S SDX=SDX_" "_(17+$E(SDY)_$E(SDY,2,3))_U_SDMON("SDBDT")
|
---|
40 | S SDMON("SDRPT")=SDX
|
---|
41 | Q SDX
|
---|
42 | ;
|
---|
43 | QDIS(SDXTMP) ;Display extract queuing information
|
---|
44 | ;Input: SDXTMP=array of data from ^XTMP("SD53P192")
|
---|
45 | N SDEX,Y
|
---|
46 | W !!?18,"*** Extract queuing information on file ***"
|
---|
47 | I '$D(SDXTMP) W !!,"==> No extract queuing data found" Q
|
---|
48 | F SDEX=1,2 D
|
---|
49 | .W !!?22,"Extract ",SDEX," report: ",$P($G(SDXTMP("EXTRACT",SDEX,"REPORT")),U)
|
---|
50 | .W !?24,"Extract ",SDEX," task: ",$G(SDXTMP("EXTRACT",SDEX,"TASK"))
|
---|
51 | .S Y=$G(SDXTMP("EXTRACT",SDEX,"DATE")) I Y X ^DD("DD")
|
---|
52 | .W !?20,"Extract ",SDEX," run date: ",Y
|
---|
53 | .Q
|
---|
54 | Q
|
---|
55 | ;
|
---|
56 | DAYS(SDATE,SDAY) ;Adjust target day if necessary
|
---|
57 | ;Input: SDATE=date
|
---|
58 | ;Input: SDAY=target day
|
---|
59 | ;Output: target SDAY for the month of SDATE, adjusted if necessary
|
---|
60 | N SDX,X,X1,X2
|
---|
61 | S X1=$S($E(SDATE,4,5)=12:($E(SDATE,1,3)+1)_"01",1:$E(SDATE,1,5)+1)_"01"
|
---|
62 | S X2=-1 D C^%DTC S SDX=$E(X,6,7)
|
---|
63 | Q $S(SDX<SDAY:SDX,1:SDAY)
|
---|
64 | ;
|
---|
65 | WHEN(SDEX,SDNOW) ;Determine date for next run
|
---|
66 | ;Input: SDEX=extract type
|
---|
67 | ;Input: SDDT=date/time to calculate from (optional)
|
---|
68 | ;Output: if success, date/time for next run
|
---|
69 | ; if already scheduled, -1^date_scheduled^task_number
|
---|
70 | N SDPAR,SDAY,X1,X2,X,SDTIME,SDINT,SDT,SDDT
|
---|
71 | S SDNOW=$G(SDNOW) I SDNOW<1 S SDNOW=$$NOW^XLFDT()
|
---|
72 | S SDDT=$P(SDNOW,".")
|
---|
73 | ;
|
---|
74 | ;Quit if already scheduled
|
---|
75 | Q:$G(^XTMP("SD53P192","EXTRACT",SDEX,"DATE"))>SDNOW "-1^"_^XTMP("SD53P192","EXTRACT",SDEX,"DATE")_U_$G(^XTMP("SD53P192","EXTRACT",SDEX,"TASK"))
|
---|
76 | ;
|
---|
77 | S SDPAR=$G(^SD(404.91,1,"PATCH192")),SDAY=$P(SDPAR,U) S:'SDAY SDAY=31
|
---|
78 | S SDINT=$P(SDPAR,U,5) I SDINT=""!("MQSA"'[SDINT) S SDINT="M"
|
---|
79 | S SDTIME=$P(SDPAR,U,6) I 'SDTIME!(SDTIME>.2359) S SDTIME=.22
|
---|
80 | S X1=$E(SDDT,1,5)_"01",X2=$$DAYS(SDDT,SDAY)-1 D C^%DTC
|
---|
81 | I (X+SDTIME)<SDNOW D
|
---|
82 | .S X1=$S($E(X,4,5)=12:($E(X,1,3)+1)_"01",1:$E(X,1,5)+1)_"01"
|
---|
83 | .S X2=$$DAYS(X1,SDAY)-1 D C^%DTC
|
---|
84 | .Q
|
---|
85 | ;
|
---|
86 | ;Values for monthly queuing
|
---|
87 | I SDINT="M" Q:SDEX=1 X+SDTIME Q $$WHEN2(X)
|
---|
88 | ;
|
---|
89 | ;Values for quarterly queuing
|
---|
90 | I SDINT="Q" D Q X
|
---|
91 | .S X1=+$E(X,4,5),X1=$S(X1<4:"03",X1<7:"06",X1<10:"09",1:12)
|
---|
92 | .S X1=$E(X,1,3)_X1_"01",X2=$$DAYS(X1,SDAY)-1 D C^%DTC
|
---|
93 | .I SDEX=1 S X=X+SDTIME Q
|
---|
94 | .S X=$$WHEN2(X) Q
|
---|
95 | ;
|
---|
96 | ;Values for semi-annual queuing
|
---|
97 | I SDINT="S" D Q X
|
---|
98 | .S X1=+$E(X,4,5) S:X1>9 X=$E(X,1,3)+1_$E(X,4,7)
|
---|
99 | .S X1=$S(X1<4:"03",X1<10:"09",1:"03")
|
---|
100 | .S X1=$E(X,1,3)_X1_"01",X2=$$DAYS(X1,SDAY)-1 D C^%DTC
|
---|
101 | .I SDEX=1 S X=X+SDTIME Q
|
---|
102 | .S X=$$WHEN2(X) Q
|
---|
103 | ;
|
---|
104 | ;Values for annual queuing
|
---|
105 | S X1=+$E(X,4,5) S:X1>9 X=$E(X,1,3)+1_$E(X,4,7)
|
---|
106 | S X=$E(X,1,3)_"0901",X2=$$DAYS(X1,SDAY)-1 D C^%DTC
|
---|
107 | Q:SDEX=1 X+SDTIME Q $$WHEN2(X)
|
---|
108 | ;
|
---|
109 | WHEN2(X) ;Determine date for extract 2
|
---|
110 | ;Input: X=date for extract 1
|
---|
111 | ;Output: date/time for extract 2
|
---|
112 | S SDT=$S($E(X,4,5)=12:$E(X,1,3)+1_"0101",1:$E(X,1,5)+1_"01")
|
---|
113 | S SDAY=$P(SDPAR,U,3) S:'SDAY!SDAY>31 SDAY=5
|
---|
114 | S X1=SDT,X2=$$DAYS(SDT,SDAY)-1 D C^%DTC
|
---|
115 | S X=X+SDTIME Q X
|
---|
116 | ;
|
---|
117 | SCHED(SDEX,SDT,SDRPT,SDMON,SDKID) ;Schedule repetitive extract run
|
---|
118 | ;Input: SDEX=extract type
|
---|
119 | ;Input: SDT=date/time to queue extract
|
---|
120 | ;Input: SDRPT=month/year of report^begin date of report data
|
---|
121 | ;Input: SDMON=report parameters from MON^SCRPW74 (pass by reference)
|
---|
122 | ;Input: SDKID='1' if from KIDS install (optional)
|
---|
123 | N SDI,Y,ZTSK,ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSAVE
|
---|
124 | S ZTDTH=SDT,ZTSAVE("SDMON(")="",ZTRTN="RUN^SCRPW74(1)",ZTIO=""
|
---|
125 | S ZTDESC="Clinic Appointment Wait Time Extract ("_SDMON("SDEX")_")"
|
---|
126 | F SDI=1:1:20 D ^%ZTLOAD Q:$G(ZTSK)
|
---|
127 | ;
|
---|
128 | QQ I '$G(ZTSK) D Q
|
---|
129 | .I $G(SDKID) D BMES^XPDUTL("Extract not queued!!!") Q
|
---|
130 | .W !!,"Extract not queued!!!",! Q
|
---|
131 | S Y=SDT X ^DD("DD")
|
---|
132 | I $G(SDKID) D BMES^XPDUTL("Extract "_SDEX_" queued for "_Y_", task number: "_ZTSK)
|
---|
133 | I '$G(SDKID) W !!,"Extract "_SDEX_" queued for "_Y_", task number: "_ZTSK,!
|
---|
134 | ;
|
---|
135 | XTMP ;Service ^XTMP nodes
|
---|
136 | N X1,X2,X
|
---|
137 | S X1=$P($P(SDT,U),"."),X2=45 D C^%DTC S SDPGDT=X
|
---|
138 | I '$D(^XTMP("SD53P192",0)) D
|
---|
139 | .S ^XTMP("SD53P192",0)=SDPGDT_"^Patch SD*5.3*192 'Clinic Wait Time' extract repetitive queuing information. Created by user: "_DUZ
|
---|
140 | .Q
|
---|
141 | S:$P(^XTMP("SD53P192",0),U)<SDPGDT $P(^XTMP("SD53P192",0),U)=SDPGDT
|
---|
142 | S ^XTMP("SD53P192","EXTRACT",SDEX,"TASK")=ZTSK
|
---|
143 | S ^XTMP("SD53P192","EXTRACT",SDEX,"DATE")=SDT
|
---|
144 | S ^XTMP("SD53P192","EXTRACT",SDEX,"REPORT")=SDRPT
|
---|
145 | Q
|
---|
146 | ;
|
---|
147 | RUN(SDR) ;Run extract (reschedule if requested)
|
---|
148 | ;Input: SDR='1' if rescheduling is requested, '0' otherwise.
|
---|
149 | N SDV,SDBDT,SDDIV,SDEDT,SDEX,SDPAST,SDPBDT,SDPEDT,SDRPT
|
---|
150 | S SDV="" F S SDV=$O(SDMON(SDV)) Q:SDV="" S @SDV=SDMON(SDV)
|
---|
151 | I SDR=1 D
|
---|
152 | .I $G(^XTMP("SD53P192","EXTRACT",SDEX,"TASK"))=ZTSK K ^XTMP("SD53P192","EXTRACT",SDEX)
|
---|
153 | .N SDT,SDMON
|
---|
154 | .S SDT=$P(SDRPT,U,2)
|
---|
155 | .S:SDEX=2 SDT=$S($E(SDT,4,5)=12:$E(SDT,1,3)+1_"0101",1:$E(SDT,1,5)+1_"01")
|
---|
156 | .S SDT=$$WHEN(SDEX),SDRPT=$$MON(SDEX,SDT,.SDMON)
|
---|
157 | .D SCHED(SDEX,SDT,SDRPT,.SDMON)
|
---|
158 | .Q
|
---|
159 | D EXTRACT^SCRPW72
|
---|
160 | ;
|
---|
161 | EXIT I $E(IOST)="C",'$G(SDOUT),'$G(SDXM) N DIR S DIR(0)="E" D ^DIR
|
---|
162 | F SDI="SD","SDS","SDTMP","SDTOT","SDXM","SDNAVA","SDNAVB","SDIP","SDPAT","SDORD","SDIPLST" K ^TMP(SDI,$J)
|
---|
163 | K ^TMP("SDPAT",+$G(SDJN))
|
---|
164 | K %,%DT,%H,%I,%T,%Y,CT,D,DA,DAY,DIC,DIE,DIR,DR,DTOUT,DUOUT,ENDATE
|
---|
165 | K I,J,MAX,MAXDT,SC,SC0,SCNA,SD,SDAY,SDBDT,SDBEG,SDC,SDFLEN,SDREPORT
|
---|
166 | K SDCAP,SDCCP,SDCNAM,SDCOL,SDCP,SDCT,SDDAY,SDDIV,SDDT,SDDV,SDDW
|
---|
167 | K SDEDT,SDEND,SDEX,SDEXDT,SDFAC,SDFMT,SDHD,SDI,SDIN,SDINT,SDIV
|
---|
168 | K SDKID,SDL,SDLINE,SDMAX,SDMD,SDMG,SDMON,SDMPDT,SDNOW,SDOE,SDOE0
|
---|
169 | K SDOUT,SDP,SDPAGE,SDPAR,SDPAST,SDPATT,SDPBDT,SDPCT,SDPEDT,SDPG
|
---|
170 | K SDPGDT,SDPNOW,SDQUIT,SDR,SDRE,SDRPT,SDS,SDSC1,SDSC2,SDSIZE,SDSL
|
---|
171 | K SDSOH,SDSORT,SDSSC,SDSTRTDT,SDT,SDTCAP,SDTIME,SDTIT,SDTITL,SDTOE
|
---|
172 | K SDTSL,SDTX,SDTY,SDV,SDX,SDXM,SDXTMP,SDY,SDZ,SI,SM,SS,X,X1,X2,Y
|
---|
173 | K SDJN,SDFMT,SDFMTS
|
---|
174 | D:$D(IOM) END^SCRPW50 Q
|
---|