1 | ORTASK01 ; SLC/RJS - Look for orders to purge; [1/2/01 11:44am]
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**98**;Dec 17, 1997
|
---|
3 | ;
|
---|
4 | ; QUIT added below by PKS (SLC) on 11/27/2000 to prevent potential
|
---|
5 | ; for any sites using unfinished ORTASK PURGE as scheduled option:
|
---|
6 | ;
|
---|
7 | Q
|
---|
8 | ;
|
---|
9 | S ;
|
---|
10 | N ORCNT,ORT0,ORT3,ORTERR,ORTGRC,ORTNOW,ORTORD,ORTPDT,ORTRUN,X,%DT
|
---|
11 | ;
|
---|
12 | I '$G(ZTSK) D HELP S ORTRUN=$$READ("Y","Want to run the purge now ","NO") Q:(ORTRUN[U) Q:('ORTRUN)
|
---|
13 | ;
|
---|
14 | S ORTORD=$$GET^XPAR("ALL","ORPF LAST ORDER PURGED") S:(ORTORD<1) ORTORD=0
|
---|
15 | S ORTGRC=$$GET^XPAR("ALL","ORPF GRACE DAYS BEFORE PURGE") S:(ORTGRC<1) ORTGRC=90
|
---|
16 | S %DT="",X="T-"_ORTGRC D ^%DT S ORTPDT=+Y
|
---|
17 | S %DT="",X="T" D ^%DT S ORTNOW=+Y
|
---|
18 | ;
|
---|
19 | S ORTERR=0 D F ORCNT=0:1 S ORTORD=$O(^OR(100,ORTORD)) Q:'ORTORD D Q:ORTERR
|
---|
20 | .Q:'ORTORD Q:ORTERR
|
---|
21 | .;
|
---|
22 | .D EN^XPAR("SYS","ORPF LAST ORDER PURGED",1,"`"_ORTORD,.ORTERR) Q:ORTERR
|
---|
23 | .;
|
---|
24 | .S ORT0=$G(^OR(100,ORTORD,0))
|
---|
25 | .S ORT3=$G(^OR(100,ORTORD,3))
|
---|
26 | .;
|
---|
27 | .Q:(ORTPDT<ORT3) ; DATE OF LAST ACTIVITY IS AFTER PURGE DATE
|
---|
28 | .;
|
---|
29 | .Q:(ORTNOW<$P(ORT0,U,8)) ; ORDER START DATE IS IN THE FUTURE
|
---|
30 | .;
|
---|
31 | .Q:'("^0^1^2^7^12^13^14^"[("^"_(+$P(ORT3,U,3))_"^")) ; LAST ACTIVITY STATUS IS NOT TERMINAL
|
---|
32 | .;
|
---|
33 | .Q:$P(ORT3,U,9) ; CHILD ORDER
|
---|
34 | .;
|
---|
35 | .D PURGE^ORMEVNT(ORTORD)
|
---|
36 | .;
|
---|
37 | ;
|
---|
38 | D EN^XPAR("SYS","ORPF LAST ORDER PURGED",1,"",.ORTERR) Q:ORTERR
|
---|
39 | D PUT^XPAR("SYS","ORPF LAST PURGE DATE",1,DT,.ORTERR) Q:ORTERR
|
---|
40 | ;
|
---|
41 | D:$G(ZTSK) KILL^%ZTLOAD
|
---|
42 | ;
|
---|
43 | Q
|
---|
44 | ;
|
---|
45 | HELP ;
|
---|
46 | N LINE,TEXT
|
---|
47 | W !!
|
---|
48 | F LINE=1:1:999 S TEXT=$P($T(HELPTEXT+LINE),";",2,999) Q:TEXT W !,$P(TEXT,";",2,999)
|
---|
49 | W !!
|
---|
50 | Q
|
---|
51 | ;
|
---|
52 | HELPTEXT ;;
|
---|
53 | ;; Option: ORTASK PURGE (Old Orders Batch Purge)
|
---|
54 | ;;
|
---|
55 | ;; This is a purge of all orders that have a 'Last Activity Date' of more
|
---|
56 | ;; than the number of 'Grace days' ago. It also checks to make sure the
|
---|
57 | ;; orders that are purged are 'Child' orders, have an order start date in
|
---|
58 | ;; the past, and have a 'Terminal' status.
|
---|
59 | ;;
|
---|
60 | ;; As this option scans the entire Orders file, it should be sheduled to
|
---|
61 | ;; run after hours.
|
---|
62 | ;1;
|
---|
63 | ;
|
---|
64 | READ(OCXZ0,OCXZA,OCXZB,OCXZL) ;
|
---|
65 | N OCXLINE,DIR,DTOUT,DUOUT,DIRUT,DIROUT
|
---|
66 | Q:'$L($G(OCXZ0)) U
|
---|
67 | S DIR(0)=OCXZ0
|
---|
68 | S:$L($G(OCXZA)) DIR("A")=OCXZA
|
---|
69 | S:$L($G(OCXZB)) DIR("B")=OCXZB
|
---|
70 | F OCXLINE=1:1:($G(OCXZL)-1) W !
|
---|
71 | D ^DIR
|
---|
72 | I $D(DTOUT)!$D(DUOUT)!$D(DIRUT)!$D(DIROUT) Q U
|
---|
73 | Q Y
|
---|
74 | ;
|
---|