1 | PSSLOCK ;BIR/RSB-Pharmacy patient lock ;09/15/97 13:30
|
---|
2 | ;;1.0;PHARMACY DATA MANAGEMENT;**26,58,125**;9/30/97;Build 2
|
---|
3 | ;
|
---|
4 | ; Reference to ^ORX2 supported by DBIA #867
|
---|
5 | ; Reference to ^PS(53.1 supported by DBIA #2140
|
---|
6 | ; Reference to ^PS(52.41 supported by DBIA #2844
|
---|
7 | ; Reference to ^PSRX supported by DBIA #2845
|
---|
8 | ; Reference to ^PS(55 supported by DBIA #2191
|
---|
9 | ;
|
---|
10 | L(DFN,DIS) ;
|
---|
11 | I $G(PSONOLCK) Q 1
|
---|
12 | N FLAG S ^XTMP("PSSLOCK",0)=$$PDATE
|
---|
13 | I '$D(^XTMP("PSSLOCK",DFN)) D Q FLAG
|
---|
14 | . D NOW^%DTC S ^XTMP("PSSLOCK",DFN)=DUZ_"^"_%
|
---|
15 | . L +^XTMP("PSSLOCK",DFN):$S($G(DILOCKTM)>0:DILOCKTM,1:3) S FLAG=$S($T=1:$T,1:0)
|
---|
16 | I $D(^XTMP("PSSLOCK",DFN)) Q $$R
|
---|
17 | UL(DFN) ; unlock
|
---|
18 | I $G(PSONOLCK) Q
|
---|
19 | L -^XTMP("PSSLOCK",DFN) K ^XTMP("PSSLOCK",DFN)
|
---|
20 | Q
|
---|
21 | ;
|
---|
22 | R() ; check lock on node
|
---|
23 | ;if user has same patient already locked, Q 1, will only lock once
|
---|
24 | I $P($G(^XTMP("PSSLOCK",DFN)),"^")=DUZ Q 1
|
---|
25 | L +^XTMP("PSSLOCK",DFN):$S($G(DILOCKTM)>0:DILOCKTM,1:3)
|
---|
26 | I $T=1 D NOW^%DTC S ^XTMP("PSSLOCK",DFN)=DUZ_"^"_% Q 1
|
---|
27 | I $T=0 W:DIS=1 !,$$WHO(DFN) S Y=$P($G(^XTMP("PSSLOCK",DFN)),"^",2) X ^DD("DD") Q $S(DIS=0:0_"^"_$P($G(^VA(200,+$P($G(^XTMP("PSSLOCK",DFN)),"^"),0)),"^")_"^"_Y,1:0)
|
---|
28 | ;
|
---|
29 | PDATE() ;
|
---|
30 | N X1,X2 S X1=DT,X2=+14 D C^%DTC
|
---|
31 | Q X_"^"_DT_"^Pharmacy patient locks"
|
---|
32 | ;
|
---|
33 | WHO(DFN) ;
|
---|
34 | S Y=$P($G(^XTMP("PSSLOCK",DFN)),"^",2) X ^DD("DD")
|
---|
35 | Q $P($G(^VA(200,+$P($G(^XTMP("PSSLOCK",DFN)),"^"),0)),"^")_" is editing orders for this patient ("_Y_")"
|
---|
36 | ;
|
---|
37 | ;
|
---|
38 | LS(DFN,X) ;
|
---|
39 | ;LOCK CPRS ORDER
|
---|
40 | ;DFN is patient #, X is PSJORD OR PSGORD
|
---|
41 | N OR100 S OR100=$$ORD(DFN,X) I OR100=0 Q 1
|
---|
42 | N L S L=$$LOCK1^ORX2(OR100)
|
---|
43 | I L Q 1
|
---|
44 | I 'L W !,$P(L,"^",2),$C(7) D PAUSE^VALM1 Q 0
|
---|
45 | Q 0
|
---|
46 | ;
|
---|
47 | UNL(DFN,X) ;
|
---|
48 | ; unlocks order in file 100
|
---|
49 | ; DFN is patient #, X is PSJORD OR PSGORD
|
---|
50 | D UNLK1^ORX2($$ORD(DFN,X))
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | ORD(DFN,X) ;
|
---|
54 | ; return order number in file 100 from entry in 53.1 or 55.
|
---|
55 | ; DFN is patient #, X is PSJORD OR PSGORD
|
---|
56 | N ORD100
|
---|
57 | S ORD100=$S(X["N"!(X["P"):"^PS(53.1,"_+X_",0)",X["V":"^PS(55,"_DFN_",""IV"","_+X_",0)",1:"^PS(55,"_DFN_",5,"_+X_",0)",1:"NA")
|
---|
58 | Q +$P(@ORD100,"^",21)
|
---|
59 | ;
|
---|
60 | PSOL(X) ;
|
---|
61 | S PSOMSG=1
|
---|
62 | I X["S" D Q
|
---|
63 | .S X=+$P($G(^PS(52.41,+$G(X),0)),"^") I X S PSOMSG=$$LOCK1^ORX2(X)
|
---|
64 | S X=+$P($G(^PSRX(+$G(X),"OR1")),"^",2) I X S PSOMSG=$$LOCK1^ORX2(X)
|
---|
65 | Q
|
---|
66 | PSOUL(X) ;
|
---|
67 | I X["S" D Q
|
---|
68 | .S X=+$P($G(^PS(52.41,+$G(X),0)),"^") I X D UNLK1^ORX2(X)
|
---|
69 | S X=+$P($G(^PSRX(+$G(X),"OR1")),"^",2) I X D UNLK1^ORX2(X)
|
---|
70 | Q
|
---|