1 | GMTSPNJ ;SLC/JER - Nightly Job to Queue HS Batch Print-by-Loc ; 08/27/2002
|
---|
2 | ;;2.7;Health Summary;**5,56**;Oct 20, 1995
|
---|
3 | ;
|
---|
4 | ; External References
|
---|
5 | ; DBIA 10000 C^%DTC
|
---|
6 | ; DBIA 10000 NOW^%DTC
|
---|
7 | ; DBIA 10063 ^%ZTLOAD
|
---|
8 | ; DBIA 10006 ^DIC
|
---|
9 | ; DBIA 2051 FIND^DIC
|
---|
10 | ; DBIA 10103 $$DOW^XLFDT
|
---|
11 | ;
|
---|
12 | ; Sets GMTSSC=location pointer
|
---|
13 | ; If clinic, sets GMTSCDT=desired appt day
|
---|
14 | ;
|
---|
15 | ; Summaries are considered ready Today if GMTSPNJ
|
---|
16 | ; run time is today between 24:00 and 12:00, ready
|
---|
17 | ; Tomorrow if run time is today between 12:00 and
|
---|
18 | ; 24:00.
|
---|
19 | ;
|
---|
20 | MAIN ; Controls branching
|
---|
21 | N GMTSTYP,GMTSCL,GMW,X
|
---|
22 | S GMTSTYP=0 F S GMTSTYP=$O(^GMT(142,GMTSTYP)) Q:+GMTSTYP'>0 D
|
---|
23 | . S GMTSCL=0 F S GMTSCL=$O(^GMT(142,GMTSTYP,20,GMTSCL)) Q:+GMTSCL'>0 D QUEUE
|
---|
24 | Q
|
---|
25 | QUEUE ; Queues HS batch print for HS Type and Location
|
---|
26 | N DIC,GMPSAP,GMTSLOC,GMTSSC,GMTSIO,GMTSDYS,GMV,QUEQIT,X,Y,DAY,NEWDAY
|
---|
27 | N GMTSQ,BEGDT,ENDDT,PDATE
|
---|
28 | S QUEQIT=0
|
---|
29 | S GMTSLOC=$G(^GMT(142,GMTSTYP,20,GMTSCL,0))
|
---|
30 | S X=+GMTSLOC,DIC=44,DIC(0)="NXZ" D ^DIC
|
---|
31 | I $S(+Y'>0:1,"WCOR"'[$P($G(Y(0)),U,3):1,1:0) Q
|
---|
32 | S GMTSSC=Y_U_$P(Y(0),U,3)
|
---|
33 | I "COR"[$P(GMTSSC,U,3) D Q
|
---|
34 | . S DAY=+$P(GMTSLOC,U,4)
|
---|
35 | . ; Don't print in advance
|
---|
36 | . I DAY'>0 S $P(GMTSSC,U,4)=$$GETDATE(DAY) D QCONT Q
|
---|
37 | . S BEGDT=$$GETDATE(0),ENDDT=$$GETDATE(DAY)
|
---|
38 | . Q:$$NONWDAY(BEGDT)
|
---|
39 | . S NEWDAY=$$WKEND(DAY,BEGDT,ENDDT)
|
---|
40 | . ; Get last date to be printed
|
---|
41 | . S PDATE=$$GETDATE(+NEWDAY)
|
---|
42 | . F D Q:+$G(GMTSQ)
|
---|
43 | . . ; Set variable before doing QCONT
|
---|
44 | . . S $P(GMTSSC,U,4)=PDATE
|
---|
45 | . . D QCONT
|
---|
46 | . . ; Decrement to get previous day
|
---|
47 | . . S NEWDAY=NEWDAY-1
|
---|
48 | . . ; Quit For Loop when non-workdays data has been printed
|
---|
49 | . . I DAY>NEWDAY S GMTSQ=1 Q
|
---|
50 | . . ; Get date
|
---|
51 | . . S PDATE=$$GETDATE(+NEWDAY)
|
---|
52 | . . ; Quit For Loop if there's a work
|
---|
53 | . . ; day between Holiday and Weekend.
|
---|
54 | . . ; Don't print weekend data twice.
|
---|
55 | . . I +$$NONWDAY(PDATE)'>0 S GMTSQ=1 Q
|
---|
56 | ;
|
---|
57 | QCONT ; Used so following can be done for
|
---|
58 | ; multiple dates for Clinics and ORs.
|
---|
59 | I $$CKPAT^GMTSPD(GMTSSC)'>0 Q
|
---|
60 | S GMPSAP=$S($P(GMTSLOC,U,3)="Y":1,1:0)
|
---|
61 | S ZTIO=$$GETIO($P(GMTSLOC,U,2)) Q:'$L(ZTIO)
|
---|
62 | S ZTDTH=$H,ZTRTN="MAIN^GMTSPL",ZTDESC="Health Summary"
|
---|
63 | F GMV="GMTSTYP","GMTSSC","GMPSAP" S ZTSAVE(GMV)=""
|
---|
64 | D ^%ZTLOAD
|
---|
65 | Q
|
---|
66 | ;
|
---|
67 | GETDATE(DAYS) ; Gets desired Visit/Surgery date
|
---|
68 | ; Receives: DAYS=Print Days ahead
|
---|
69 | ; Returns: FileMan Date/time
|
---|
70 | N %,%H,%I,%T,GMTSDT,GMTSPM,X1,X2,X
|
---|
71 | D NOW^%DTC S GMTSDT=$P(%,"."),GMTSPM=$S(+$E($P(%,".",2),1,2)>12:1,1:0)
|
---|
72 | S X1=GMTSDT,X2=DAYS+GMTSPM D C^%DTC
|
---|
73 | Q X
|
---|
74 | ;
|
---|
75 | NONWDAY(GMTSDT) ; Determines if non work day (i.e. Sat., Sun., or Holiday)
|
---|
76 | ; Returns 1 if print day is weekend or holiday
|
---|
77 | N DAYNAME
|
---|
78 | S DAYNAME=$$DOW^XLFDT(GMTSDT)
|
---|
79 | Q $S(DAYNAME="Saturday":1,DAYNAME="Sunday":1,$$HOLIDAY(GMTSDT):1,1:0)
|
---|
80 | ;
|
---|
81 | WKEND(DAY,BEGDT,ENDDT) ; Updates days in advance for weekend and holiday dates
|
---|
82 | N GMI,X1,X2,X,%H,DAYNAME
|
---|
83 | F GMI=1:1 S X1=BEGDT,X2=GMI D C^%DTC Q:X>ENDDT D
|
---|
84 | . S DAYNAME=$$DOW^XLFDT(X)
|
---|
85 | . I DAYNAME="Saturday"!(DAYNAME="Sunday")!($$HOLIDAY(X)) S DAY=DAY+1,ENDDT=$$GETDATE(DAY)
|
---|
86 | . ; If one of days is Saturday, Sunday, or holiday,
|
---|
87 | . ; up days by one and recalculate ending date
|
---|
88 | Q DAY
|
---|
89 | ;
|
---|
90 | HOLIDAY(GMDT) ; Determines if a date is a Holiday.
|
---|
91 | ; Requires that the Holiday (#40.5) file is updated
|
---|
92 | ; to determine if a date is a holiday.
|
---|
93 | N GMDATE
|
---|
94 | D FIND^DIC(40.5,"",.01,"QX",GMDT,1,"","","","GMDATE")
|
---|
95 | Q +$G(GMDATE("DILIST",0))
|
---|
96 | ;
|
---|
97 | GETIO(X) ; Get device for queueing
|
---|
98 | N %,%Y,C,DIC,Y
|
---|
99 | S DIC=3.5,DIC(0)="NXZ" D ^DIC S Y=$S(+Y'>0:"",1:$P(Y(0),U))
|
---|
100 | Q Y
|
---|