1 | ORKCHK2 ; slc/CLA - Order Checking support routine to do OCX-related order checks ;8/8/96 [ 04/02/97 1:08 PM ]
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**6,32,74,123**;Dec 17, 1997
|
---|
3 | Q
|
---|
4 | ;
|
---|
5 | MLM(ORKS,ORKDFN,ORKA,ENT,ORKMODE) ;perform expert system-based order checking
|
---|
6 | ;ORKS - return sort array of order checks
|
---|
7 | ;ORKDFN - patient id
|
---|
8 | ;ORKA - order information
|
---|
9 | ;ENT - entity for parameter calls
|
---|
10 | ;ORKMODE - ordering mode
|
---|
11 | N ORKRTN,OCN,DNGR,ORKMSG,ORKTENT,ORNUM
|
---|
12 | S ORKTENT=ENT
|
---|
13 | S ORNUM=$P(ORKA,"|",5)
|
---|
14 | D EN^OCXOEPS(.ORKRTN,ORKDFN,ORKA,ORKMODE)
|
---|
15 | N ORKJ S ORKJ=""
|
---|
16 | F S ORKJ=$O(ORKRTN(ORKJ)) Q:ORKJ="" D
|
---|
17 | .S OCN=$P(ORKRTN(ORKJ),U,2)
|
---|
18 | .Q:+$G(OCN)<1
|
---|
19 | .S ENT=ORKTENT
|
---|
20 | .I $$GET^XPAR(ENT,"ORK PROCESSING FLAG",OCN,"I")'="D" D
|
---|
21 | ..I ORKMODE="DISPLAY" S DNGR=""
|
---|
22 | ..E S DNGR=$$GET^XPAR("DIV^SYS^PKG","ORK CLINICAL DANGER LEVEL",OCN,"I")
|
---|
23 | ..I ($P($G(^ORD(100.8,OCN,0)),U)="ERROR MESSAGE"),(ORKMODE="DISPLAY") D
|
---|
24 | ...S ORKMSG="CPRS Expert System disabled. Some order checks cannot be performed."
|
---|
25 | ..I $P($G(^ORD(100.8,OCN,0)),U)'="ERROR MESSAGE" S ORKMSG=$P(ORKRTN(ORKJ),U,4)
|
---|
26 | ..Q:'$L($G(ORKMSG))
|
---|
27 | ..S ORKS("ORK",DNGR_","_$G(ORNUM)_","_$E(ORKMSG,1,225))=ORNUM_U_OCN_U_DNGR_U_ORKMSG
|
---|
28 | Q
|
---|
29 | ;
|
---|
30 | OISESS(OI) ;check for Lab OI match in order array (ORA)
|
---|
31 | N ORI,LRID,LRIDX,LRIDY,LROI,ORQ,X
|
---|
32 | S ORQ=""
|
---|
33 | ;get lab id from orderable item (OI):
|
---|
34 | S LRID=$G(^ORD(101.43,OI,0)) Q:'$L(LRID) ORQ
|
---|
35 | S LRID=$P(LRID,U,2),LRID=$P(LRID,";")
|
---|
36 | S X=0 F S X=$O(^TMP("ORKA",$J,X)) Q:X="" D
|
---|
37 | .S ORI=^TMP("ORKA",$J,X)
|
---|
38 | .I $P(ORI,"|",2)="LR" D ;lab order
|
---|
39 | ..S LRIDX=$P($P(ORI,"|",3),U,4) I LRIDX=LRID S ORQ=1 Q ;match
|
---|
40 | ..S LROI=$P(ORI,"|")
|
---|
41 | ..;get children lab ids and check against ordered array ORL
|
---|
42 | ..S LRIDY="" F S LRIDY=$O(^ORD(101.43,LROI,10,"AID",LRIDY)) Q:LRIDY="" D
|
---|
43 | ...S LRIDX=$P(LRIDY,";") I LRIDX=LRID S ORQ=1 Q ;match
|
---|
44 | Q ORQ
|
---|