1 | ORQOR2 ; slc/CLA - Extrinsic functions which return order information ;6/14/96 10:15 [ 04/02/97 1:35 PM ]
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**6,32,92,122,144,190,251**;Dec 17, 1997
|
---|
3 | STATUS(ORN) ;extrinsic function returns the current status of an order in
|
---|
4 | ;the format: status ien^external text
|
---|
5 | ;DBIA #3458 supported api for outpt pharmacy
|
---|
6 | Q:'$L($G(ORN)) ""
|
---|
7 | Q:'$L($G(^OR(100,ORN,3))) ""
|
---|
8 | N ORSTATUS
|
---|
9 | S ORSTATUS=$P(^OR(100,ORN,3),U,3)
|
---|
10 | S ORSTATUS=ORSTATUS_U_$G(^ORD(100.01,+ORSTATUS,0))
|
---|
11 | Q ORSTATUS
|
---|
12 | RECENT(PT,OI,ST) ;extrinsic funct returns pt's most recent order for an orderable item and status in format:
|
---|
13 | ; order number^order text (truncated to 60 chars)^start d/t^status
|
---|
14 | N INDT,ORN,CDT,ORSTATUS,ORTEXT,RESULT S RESULT="",ORN="",INDT=""
|
---|
15 | F S INDT=$O(^OR(100,"AOI",OI,PT_";DPT(",INDT)) Q:INDT=""!(RESULT'="") D
|
---|
16 | .F S ORN=$O(^OR(100,"AOI",OI,PT_";DPT(",INDT,ORN)) Q:ORN="" D
|
---|
17 | ..S ORSTATUS=$P(^OR(100,ORN,3),U,3)
|
---|
18 | ..I '$L($G(ST))!($G(ORSTATUS)=ST) D
|
---|
19 | ...S ORSTATUS=$G(^ORD(100.01,ORSTATUS,0)),CDT=9999999-INDT
|
---|
20 | ...S ORTEXT=$P($$TEXT^ORKOR(ORN,60),U,2)
|
---|
21 | ...S RESULT=ORN_U_ORTEXT_U_CDT_U_ORSTATUS
|
---|
22 | Q RESULT
|
---|
23 | DUPRANGE(OI,DG,ODT,ORPT) ;extrinsic funct returns duplicate order range beginning date in the format:
|
---|
24 | ;fileman d/t^inverse fileman d/t
|
---|
25 | ;OI = orderable item ien
|
---|
26 | ;DG = display group abbrev. (e.g. 'LR')
|
---|
27 | ;ODT = order effective/start date/time in FM format
|
---|
28 | ;ORPT = patient dfn
|
---|
29 | N DHRS,BDT,INBDT,ORSRV,ORLOC
|
---|
30 | S BDT="",INBDT=""
|
---|
31 | ;
|
---|
32 | ;get patient's location flag (INPATIENT ONLY - outpt locations cannot be
|
---|
33 | ;reliably determined, and many simultaneous outpt locations can occur):
|
---|
34 | I +$G(ORPT)>0 D
|
---|
35 | .N DFN S DFN=ORPT,VA200="" D OERR^VADPT
|
---|
36 | .I +$G(VAIN(4))>0 S ORLOC=+$G(^DIC(42,+$G(VAIN(4)),44))
|
---|
37 | .K VA200,VAIN
|
---|
38 | ;
|
---|
39 | S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
|
---|
40 | S DHRS=$$GET^XPAR("LOC.`"_$G(ORLOC)_"^SRV.`"_$G(ORSRV)_"^DIV^SYS","ORK DUP ORDER RANGE OI",OI,"I")
|
---|
41 | Q:$G(DHRS)=0 "0^0" ;quit if number of hours for this OI is zero
|
---|
42 | I +$G(DHRS)<1 D
|
---|
43 | .I DG="LR" S DHRS=$$GET^XPAR("LOC.`"_$G(ORLOC)_"^SRV.`"_$G(ORSRV)_"^DIV^SYS^PKG","ORK DUP ORDER RANGE LAB",1,"I")
|
---|
44 | .I DG="RA" S DHRS=$$GET^XPAR("LOC.`"_$G(ORLOC)_"^SRV.`"_$G(ORSRV)_"^DIV^SYS^PKG","ORK DUP ORDER RANGE RADIOLOGY",1,"I")
|
---|
45 | I +$G(DHRS)<1 S DHRS=48 ;non-lab and non-radiology default is 48 hrs
|
---|
46 | S BDT=$$FMADD^XLFDT(ODT,"","-"_DHRS,"",""),INBDT=9999999-BDT
|
---|
47 | Q BDT_U_INBDT
|
---|
48 | ORDERER(ORNUM) ;ext. funct. gets ordering provider DUZ from ORDER File (#100)
|
---|
49 | Q:'$L($G(ORNUM)) ""
|
---|
50 | S ORNUM=+$G(ORNUM)
|
---|
51 | N ORQDUZ,ORQI S ORQDUZ=""
|
---|
52 | I $L($G(^OR(100,ORNUM,8,0))) D
|
---|
53 | .S ORQI=0,ORQI=$O(^OR(100,ORNUM,8,"C","NW",ORQI)) ;8 node for New order
|
---|
54 | Q:+$G(ORQI)<1 ""
|
---|
55 | S ORQDUZ=$P(^OR(100,ORNUM,8,ORQI,0),U,3)
|
---|
56 | Q ORQDUZ
|
---|
57 | UNSIGNOR(ORNUM) ;ext. funct. gets ordering provider DUZ from ORDER File (#100)
|
---|
58 | ; based on order action number (8 node)
|
---|
59 | ; if no action number return orderer for New order
|
---|
60 | ;ORNUM in format: <order ien>;<action number>
|
---|
61 | Q:'$L(+$G(ORNUM)) ""
|
---|
62 | N ORQDUZ,ORQI S ORQDUZ=""
|
---|
63 | S ORQI=$P(ORNUM,";",2)
|
---|
64 | S ORNUM=$P(ORNUM,";")
|
---|
65 | Q:+$G(ORNUM)<1 ""
|
---|
66 | I +$G(ORQI)<1 S ORQI=$P($G(^OR(100,ORNUM,8,0)),U,3)
|
---|
67 | I $L(ORQI),$L($G(^OR(100,ORNUM,8,ORQI,0))) D
|
---|
68 | .S ORQDUZ=$P(^OR(100,ORNUM,8,ORQI,0),U,3)
|
---|
69 | Q ORQDUZ
|
---|
70 | OI(ORNUM) ;ext. funct. gets Orderable Item ien from ORDER File (#100)
|
---|
71 | Q:+$G(ORNUM)<1 ""
|
---|
72 | N OI S OI=""
|
---|
73 | S OI=+$G(^OR(100,+$G(ORNUM),.1,1,0))
|
---|
74 | Q OI
|
---|
75 | DG(ORNUM) ;ext. funct. gets Display Group ien from ORDER File (#100)
|
---|
76 | Q:'$L($G(ORNUM)) ""
|
---|
77 | N DG S DG=""
|
---|
78 | S DG=$G(^OR(100,ORNUM,0))
|
---|
79 | I $L(DG) S DG=$P(DG,U,11)
|
---|
80 | Q DG
|
---|
81 | DGRX(ORNUM) ;ext. funct. determines if order is pharmacy order
|
---|
82 | Q:+$G(ORNUM)<1 ""
|
---|
83 | N DG,DGNAME,RXDG
|
---|
84 | S DG=$$DG(ORNUM)
|
---|
85 | S DGNAME=$P($G(^ORD(100.98,+DG,0)),U) Q:'$L(DGNAME) ""
|
---|
86 | F RXDG="PHARMACY","INPATIENT MEDICATIONS","OUTPATIENT MEDICATIONS","UNIT DOSE MEDICATIONS","IV MEDICATIONS","NON-VA MEDICATIONS","CLINIC ORDERS","" Q:(DGNAME=RXDG)
|
---|
87 | Q RXDG
|
---|
88 | PT(ORNUM) ;ext. funct. gets Patient dfn from ORDER File (#100)
|
---|
89 | Q:'$L($G(ORNUM)) ""
|
---|
90 | N PT S PT=""
|
---|
91 | S PT=$G(^OR(100,ORNUM,0))
|
---|
92 | I $L(PT) S PT=$P(PT,U,2),PT=$P(PT,";DPT")
|
---|
93 | Q PT
|
---|
94 | RSLTFLG(ORNUM) ;ext. funct. returns duz of user to receive alert if order was
|
---|
95 | ; flagged to alert when resulted
|
---|
96 | Q:'$L($G(ORNUM)) ""
|
---|
97 | N FLG S FLG=""
|
---|
98 | S FLG=$G(^OR(100,+ORNUM,3))
|
---|
99 | I $L(FLG) S FLG=$P(FLG,U,10)
|
---|
100 | Q FLG
|
---|