1 | ORB3F1 ; slc/CLA - Extrinsic functions to support OE/RR 3 notifications ;5/8/95 15:16 [2/24/05 1:23pm]
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**9,74,139,190,220**;Dec 17, 1997
|
---|
3 | ;
|
---|
4 | XQAKILL(ORN) ;extrinsic function to return the delete mechanism for the notification based on definition in PARAM DEF file
|
---|
5 | N ORBKILL S ORBKILL=1
|
---|
6 | Q:$G(ORN)="" ORBKILL
|
---|
7 | S ORBKILL=$$GET^XPAR("DIV^SYS^PKG","ORB DELETE MECHANISM",ORN,"I")
|
---|
8 | I ORBKILL="A" S ORBKILL=0 ;delete for all recipients
|
---|
9 | E S ORBKILL=1 ;default for delete mechanism is 1 (delete only for this recipient)
|
---|
10 | Q ORBKILL
|
---|
11 | SITEORD(ORNUM,IOPT) ;Extrinsic function returns 1 (Yes) if the site has flagged the
|
---|
12 | ; orderable item (determined from the order number ORNUM) to trigger a
|
---|
13 | ; notification when ordered
|
---|
14 | N ORBFLAG,OI,ORBLST,ORBERR,ORBI,ORBE
|
---|
15 | S ORBFLAG=0,OI="",ORBE="",ORBERR=""
|
---|
16 | Q:+$G(ORNUM)<1 ORBFLAG
|
---|
17 | S OI=$$OI^ORQOR2(ORNUM)
|
---|
18 | Q:+$G(OI)<1 ORBFLAG
|
---|
19 | I IOPT="I" D
|
---|
20 | .D ENVAL^XPAR(.ORBLST,"ORB OI ORDERED - INPT","`"_OI,.ORBERR)
|
---|
21 | .Q:$G(ORBLST)>0
|
---|
22 | .D ENVAL^XPAR(.ORBLST,"ORB OI ORDERED - INPT PR","`"_OI,.ORBERR)
|
---|
23 | I IOPT="O" D
|
---|
24 | .D ENVAL^XPAR(.ORBLST,"ORB OI ORDERED - OUTPT","`"_OI,.ORBERR)
|
---|
25 | .Q:$G(ORBLST)>0
|
---|
26 | .D ENVAL^XPAR(.ORBLST,"ORB OI ORDERED - OUTPT PR","`"_OI,.ORBERR)
|
---|
27 | I 'ORBERR,$G(ORBLST)>0 D
|
---|
28 | .F ORBI=1:1:ORBLST Q:ORBFLAG=1 D
|
---|
29 | ..S ORBE=$O(ORBLST(ORBE))
|
---|
30 | ..I $D(ORBLST(ORBE,OI)) S ORBFLAG=1
|
---|
31 | Q ORBFLAG
|
---|
32 | SITERES(ORNUM,IOPT) ;Extrinsic function returns 1 (Yes) if the site has flagged the
|
---|
33 | ; orderable item (determined from the order number ORNUM) to trigger a
|
---|
34 | ; notification when resulted
|
---|
35 | N ORBFLAG,OI,ORBLST,ORBERR,ORBI,ORBE
|
---|
36 | S ORBFLAG=0,OI="",ORBE="",ORBERR=""
|
---|
37 | Q:+$G(ORNUM)<1 ORBFLAG
|
---|
38 | S OI=$$OI^ORQOR2(ORNUM)
|
---|
39 | Q:+$G(OI)<1 ORBFLAG
|
---|
40 | I IOPT="I" D ENVAL^XPAR(.ORBLST,"ORB OI RESULTS - INPT","`"_OI,.ORBERR)
|
---|
41 | I IOPT="O" D ENVAL^XPAR(.ORBLST,"ORB OI RESULTS - OUTPT","`"_OI,.ORBERR)
|
---|
42 | I 'ORBERR,$G(ORBLST)>0 D
|
---|
43 | .F ORBI=1:1:ORBLST Q:ORBFLAG=1 D
|
---|
44 | ..S ORBE=$O(ORBLST(ORBE))
|
---|
45 | ..I $D(ORBLST(ORBE,OI)) S ORBFLAG=1
|
---|
46 | Q ORBFLAG
|
---|
47 | LRRAD(OI) ;Extrinsic function returns 1 (true) if Orderable Item is a
|
---|
48 | ;Chemistry Lab ("S.CH") or Imaging ("S.XRAY") proc or Consult ("S.CSLT")
|
---|
49 | N OITEXT,ORBFLAG
|
---|
50 | S ORBFLAG=""
|
---|
51 | Q:+$G(OI)<1 ORBFLAG
|
---|
52 | Q:'$L($G(^ORD(101.43,OI,0))) ORBFLAG
|
---|
53 | S OITEXT=$P(^ORD(101.43,OI,0),U)
|
---|
54 | S OITEXT=$$UP^XLFSTR(OITEXT)
|
---|
55 | Q:$D(^ORD(101.43,"S.CH",OITEXT)) 1
|
---|
56 | Q:$D(^ORD(101.43,"S.XRAY",OITEXT)) 1
|
---|
57 | Q:$D(^ORD(101.43,"S.CSLT",OITEXT)) 1
|
---|
58 | Q ORBFLAG
|
---|
59 | ;
|
---|
60 | EXP(ORDT,ORNUM) ;set up ^XTMP("ORAE" to store expired orders
|
---|
61 | N ORNOW,X0
|
---|
62 | S ORNOW=$$NOW^XLFDT
|
---|
63 | S ^XTMP("ORAE",0)=$$FMADD^XLFDT(ORNOW,30,"","","")_U_ORNOW
|
---|
64 | S X0=^OR(100,ORNUM,0)
|
---|
65 | S ^XTMP("ORAE",$P(X0,U,2),$P(X0,U,11),ORDT,ORNUM)=""
|
---|
66 | Q
|
---|
67 | ;
|
---|
68 | DELEXP ; delete ^XTMP("ORAE" entries older than param value + 48 hours
|
---|
69 | ; or have been replaced by another order
|
---|
70 | N ORNOW,OREXDT,OREXPAR,ORDELDT,ORPT,ORDG,ORN,ORREP
|
---|
71 | S ORNOW=$$NOW^XLFDT
|
---|
72 | S OREXPAR=$$GET^XPAR("ALL","ORWOR EXPIRED ORDERS",1,"I")
|
---|
73 | S OREXPAR=$S($G(OREXPAR):OREXPAR,1:72)
|
---|
74 | S ORDELDT=$$FMADD^XLFDT(ORNOW,"",-(OREXPAR+48),"","")
|
---|
75 | S ORPT=0 F S ORPT=$O(^XTMP("ORAE",ORPT)) Q:'ORPT D
|
---|
76 | .S ORDG=0 F S ORDG=$O(^XTMP("ORAE",ORPT,ORDG)) Q:'ORDG D
|
---|
77 | ..S OREXDT=0 F S OREXDT=$O(^XTMP("ORAE",ORPT,ORDG,OREXDT)) Q:'OREXDT D
|
---|
78 | ...I OREXDT<ORDELDT K ^XTMP("ORAE",ORPT,ORDG,OREXDT) Q
|
---|
79 | ...S ORN=0 F S ORN=$O(^XTMP("ORAE",ORPT,ORDG,OREXDT,ORN)) Q:'ORN D
|
---|
80 | ....Q:'$D(^OR(100,ORN,3))
|
---|
81 | ....S ORREP=$P(^OR(100,ORN,3),U,6)
|
---|
82 | ....I +$G(ORREP)>0 K ^XTMP("ORAE",ORPT,ORDG,OREXDT,ORN)
|
---|
83 | Q
|
---|