1 | PSOCAN3 ;BIR/RTR/SAB - auto dc rxs due to death ; 9/18/06 2:59pm
|
---|
2 | ;;7.0;OUTPATIENT PHARMACY;**15,24,27,32,36,94,88,117,131,146,139,132,223,235,148,249**;DEC 1997;Build 9
|
---|
3 | ;External reference to File #55 supported by DBIA 2228
|
---|
4 | ;External references to L, UL, PSOL, and PSOUL^PSSLOCK supported by DBIA 2789
|
---|
5 | Q
|
---|
6 | APSOD(PSODFN) ;called from file #2 date of death xref 'APOSD'
|
---|
7 | N D,DA,DB,DC,DE,DG,DH,DI,DIC,DIE,DIG,DIH,DIK,DIR,DIQ,DIU,DIV,DIW,DK,DL,DM,DP,DQ,DU,DV,DW,DR
|
---|
8 | S PSODEATH=1 D CAN K PSODEATH
|
---|
9 | Q
|
---|
10 | CAN ;discontinued rxs due to death
|
---|
11 | I $G(PSODFN),$D(^PS(52.91,PSODFN,0)) D
|
---|
12 | .I '$P($G(^PS(52.91,PSODFN,0)),"^",3)!($P($G(^(0)),"^",3)>DT) S $P(^PS(52.91,PSODFN,0),"^",3)=DT,$P(^PS(52.91,PSODFN,0),"^",4)=5,^PS(52.91,"AX",DT,PSODFN)="" D SET^PSOTPCAN(PSODFN)
|
---|
13 | F PSORXJ=0:0 S PSORXJ=$O(^PS(55,PSODFN,"P",PSORXJ)) Q:'PSORXJ I $D(^(PSORXJ,0)) S PSORX=^(0) S STA=$S($P($G(^PSRX(PSORX,"STA")),"^")<11:1,$P($G(^("STA")),"^")=16:1,1:0) D:STA
|
---|
14 | .I $D(^PSRX(PSORX,0)),$P($G(^PSRX(PSORX,"STA")),"^")="" D SETC
|
---|
15 | .D REVERSE^PSOBPSU1(PSORX,,"DC",7)
|
---|
16 | .I $D(^PSRX(PSORX,0)),$P($G(^PSRX(PSORX,2)),"^",6)'<DT S PSO0=^(0),PSO2=$G(^(2)) D
|
---|
17 | ..S ^PSRX(PSORX,"DDSTA")="52;"_$P(^PSRX(PSORX,"STA"),"^")
|
---|
18 | ..;remove from hold
|
---|
19 | ..I $G(^PSRX(PSORX,"H"))]"" D
|
---|
20 | ...S ^PSRX(PSORX,"DDSTA")="52;"_$P(^PSRX(PSORX,"STA"),"^")_"^"_^PSRX(PSORX,"H")
|
---|
21 | ...K:$P(^PSRX(PSORX,"H"),"^") ^PSRX("AH",$P(^PSRX(PSORX,"H"),"^"),PSORX) S ^PSRX(PSORX,"H")=""
|
---|
22 | ...I '$P($G(^PSRX(PSORX,2)),"^",2),$P($G(^(3)),"^") S $P(^PSRX(PSORX,2),"^",2)=$P(^(3),"^")
|
---|
23 | ...I $G(PSODEATH),$P(^PSRX(PSORX,0),"^",2) S ^PSRX("APSOD",$P(^PSRX(PSORX,0),"^",2),PSORX)=""
|
---|
24 | ..;delete from non-verified file
|
---|
25 | ..I $G(^PS(52.4,PSORX,0))]"" S ^PSRX(PSORX,"DDSTA")="52.4;"_$P(^PSRX(PSORX,"STA"),"^")_"^"_^PS(52.4,PSORX,0),DIK="^PS(52.4,",DA=PSORX D ^DIK K DIK
|
---|
26 | ..I $G(PSODEATH),$P(^PSRX(PSORX,0),"^",2) S ^PSRX("APSOD",$P(^PSRX(PSORX,0),"^",2),PSORX)=""
|
---|
27 | ..;delete from suspense
|
---|
28 | ..D:$O(^PS(52.5,"B",PSORX,0))
|
---|
29 | ...S DA=$O(^PS(52.5,"B",PSORX,0)) I '$G(^PS(52.5,DA,"P")),$G(PSODEATH) S ^PSRX(PSORX,"DDSTA")="52.5;5^"_^PS(52.5,DA,0),^PSRX("APSOD",$P(^PSRX(PSORX,0),"^",2),PSORX)=""
|
---|
30 | ...I $O(^PSRX(PSORX,1,0)),'$G(PSODEATH) S DA=PSORX,SUSD=$P($G(^PS(52.5,$O(^PS(52.5,"B",PSORX,0)),0)),"^",2) D:'$G(^PS(52.5,$O(^PS(52.5,"B",PSORX,0)),"P")) REF^PSOCAN2
|
---|
31 | ...S DA=$O(^PS(52.5,"B",PSORX,0)),DIK="^PS(52.5," D ^DIK K DIK
|
---|
32 | ..D SETC
|
---|
33 | ..;activity record
|
---|
34 | ..S (COM,ACOM)=$S($G(PSODEATH):"Date of Death Entered by MAS",1:"Discontinued by Pharmacy")_"."
|
---|
35 | ..S ACNT=0 F SUB=0:0 S SUB=$O(^PSRX(PSORX,"A",SUB)) Q:'SUB S ACNT=SUB
|
---|
36 | ..S RFCNT=0 F RF=0:0 S RF=$O(^PSRX(PSORX,1,RF)) Q:'RF S RFCNT=RF
|
---|
37 | ..D NOW^%DTC S ACNT=ACNT+1,^PSRX(PSORX,"A",0)="^52.3DA^"_ACNT_"^"_ACNT
|
---|
38 | ..S ^PSRX(PSORX,"A",ACNT,0)=%_"^"_"C"_"^^"_RFCNT_"^"_"Auto Discontinued Due to Death. "_ACOM
|
---|
39 | ..;check for label/release/pending release
|
---|
40 | ..D FIL
|
---|
41 | ..S STAT="OD",PHARMST="" D EN^PSOHLSN1(PSORX,STAT,PHARMST,COM,"A") K COMM,PHARMST,STAT
|
---|
42 | ;dc pending orders
|
---|
43 | F PDA=0:0 S PDA=$O(^PS(52.41,"P",PSODFN,PDA)) Q:'PDA I $P(^PS(52.41,PDA,0),"^",3)'="DC"&($P(^(0),"^",3)'="DE") D
|
---|
44 | .I $G(PSODEATH) D
|
---|
45 | ..S ^PS(52.41,PDA,"DDSTA")=$P(^PS(52.41,PDA,0),"^",3)_";"_+$P($G(^PS(52.41,PDA,"INI")),"^"),^PS(52.41,"APSOD",PSODFN,PDA)=""
|
---|
46 | ..S $P(^PS(52.41,PDA,4),"^")="Date of Death Entered by MAS."
|
---|
47 | .S $P(^PS(52.41,PDA,0),"^",3)="DC"
|
---|
48 | .K ^PS(52.41,"AOR",PSODFN,+$P($G(^PS(52.41,PDA,"INI")),"^"),PDA)
|
---|
49 | .S COM=$S($G(PSODEATH):"Date of Death Entered by MAS.",1:""),PL=$P(^PS(52.41,PDA,0),"^"),$P(^(0),"^",3)="DC"
|
---|
50 | .D EN^PSOHLSN(PL,"OC",COM,"A") K COM,PL
|
---|
51 | ;dc non-va meds
|
---|
52 | D APSOD^PSONVNEW
|
---|
53 | KILL K %,%H,%T,ACNT,DA,PDA,DIRUT,DTOUT,PSO,PSO0,PSO2,PSOD,PSOD0,PSODFN,PSODL,PSORX,PSORXJ,PSOSD,RF,RFCNT,SUB,TM,TSKDT,X,X1,X2,Y,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
|
---|
54 | D KVAR^VADPT S:$D(ZTQUEUED) ZTREQ="@"
|
---|
55 | Q
|
---|
56 | CAN1 Q:$G(DODR)
|
---|
57 | S PSOMGDFN=$G(PSODFN) ; SAVE IN CASE CANCELING RX THAT WAS MERGED TO ANOTHER DFN
|
---|
58 | I $G(^PSRX(DA,"H"))]"" D HLD^PSOCAN2
|
---|
59 | D REVERSE^PSOBPSU1(DA,,"DC",7)
|
---|
60 | S PSCANVAR=0,RXDA=DA,DA=$O(^PS(52.5,"B",DA,0)) I DA,'$G(^PS(52.5,DA,"P")) S PSCANVAR=1 D
|
---|
61 | .S SUSD=$P($G(^PS(52.5,DA,0)),"^",2)
|
---|
62 | .S:+$G(^PS(52.5,DA,"P"))'=1 ACOM=$S(REA="C":"Discontinued",1:"Reinstated")_" while suspended. "_$G(COM)
|
---|
63 | .S DIK="^PS(52.5," D ^DIK K DIK S DA=RXDA,RXREF=0,PSODFN=+$P(^PSRX(DA,0),"^",2)
|
---|
64 | .D AREC^PSOCAN1 S DA=RXDA I $O(^PSRX(DA,1,0)) D REF^PSOCAN2
|
---|
65 | I $G(REA)="C" S DA=$O(^PS(52.5,"B",RXDA,0)) I DA S DIK="^PS(52.5," D ^DIK K DIK
|
---|
66 | I 'PSCANVAR S:$D(SPCANC) ACOM=$S(REA="C":"Discontinued",1:"Reinstated")_" during Rx cancel. "
|
---|
67 | ADD S DA=RXDA,RXREF=0,PSODFN=+$P(^PSRX(DA,0),"^",2) S:$G(PSOOPT)=3 REA="L"
|
---|
68 | D:'$G(PSCANVAR) AREC^PSOCAN1 S:REA="L" REA="C" S:REA'="C" $P(^PSRX(DA,"STA"),"^")=0
|
---|
69 | N PSOTPCNZ S PSOTPCNZ=0 I $P(^PSRX(DA,"STA"),"^")'=12 S PSOTPCNZ=1
|
---|
70 | S:REA="C"&($P(^PSRX(DA,"STA"),"^")<12)!($P(^("STA"),"^")=16) $P(^PSRX(DA,"STA"),"^")=12 I $P($G(^PSRX(DA,"STA")),"^")=12,$G(PSOTPCNZ) D CAN^PSOTPCAN(DA)
|
---|
71 | K PSOTPCNZ
|
---|
72 | I REA="R" D
|
---|
73 | .I $P(^PSRX(DA,3),"^",8) S $P(^PSRX(DA,3),"^",2)=$P(^PSRX(DA,3),"^",8),$P(^(3),"^",8)=""
|
---|
74 | .S $P(^PSRX(DA,3),"^")=$S($P(^PSRX(DA,3),"^",10):$P(^(3),"^",10),$G(PSOCANHD):PSOCANHD,$P(^(3),"^",5):$P(^(3),"^",5),1:$P(^(3),"^")),$P(^(3),"^",5)="",$P(^(3),"^",10)=""
|
---|
75 | I REA="C" D
|
---|
76 | .S $P(^PSRX(DA,3),"^",10)=$P(^PSRX(DA,3),"^")
|
---|
77 | .S:'$P(^PSRX(DA,3),"^",5) $P(^PSRX(DA,3),"^",5)=DT
|
---|
78 | .I $O(^PS(52.41,"ARF",DA,0)),'$O(^PS(52.41,"APSOD",PSODFN,0)) S HLDDA=DA,DA=$O(^PS(52.41,"ARF",DA,0)),DIK="^PS(52.41," D ^DIK S DA=HLDDA K HLDDA
|
---|
79 | .;check for label/release/pending release
|
---|
80 | .I $G(PSOOPT)'=3 D FILX
|
---|
81 | S PSONOOR=$S($D(PSONOOR):PSONOOR,1:"D"),STAT=$S(REA="C":"OD",1:"SC"),PHARMST=$S(REA="C":"",1:"CM")
|
---|
82 | S COM=$S(REA="C":$S($G(PSOOPT)=3&('$G(DUP)):"Renewed",1:"Discontinued")_" by Pharmacy",1:"Reinstated by Pharmacy")
|
---|
83 | D EN^PSOHLSN1(DA,STAT,PHARMST,COM,$S($G(PSOOPT)=3&('$G(DUP)):"",1:PSONOOR)) K COM,STAT,PHARMST,PSCANVAR
|
---|
84 | I REA="C" D
|
---|
85 | .I $G(^PS(52.4,DA,0))]"" S PSCDA=DA,DIK="^PS(52.4," D ^DIK S DA=PSCDA K DIK,PSCDA
|
---|
86 | I $G(PSOMGDFN)'="" S PSODFN=PSOMGDFN K PSOMGDFN
|
---|
87 | Q:(REA="C")!('$P($G(PSOPAR),"^",2))!($P(^PSRX(DA,2),"^",10)]"")
|
---|
88 | Q:$D(^XUSEC("PSORPH",DUZ)) S PSVC=$P(^PSRX(DA,0),"^",16) F JJ=0:0 S JJ=$O(^PS(55,PSODFN,"P",JJ)) Q:'JJ I $D(^(JJ,0)),+^(0)=DA Q
|
---|
89 | Q:'JJ S PSRXIN=DA,DIC="^PS(52.4,",DLAYGO=52.4,(X,DINUM)=PSRXIN,DIC(0)="ML"
|
---|
90 | S DIC("DR")="1////"_$G(PSODFN)_";2////"_DUZ_";4////"_DT
|
---|
91 | K DD,DO D FILE^DICN K DD,DO,DIC,DLAYGO,DINUM
|
---|
92 | K DA,DIK S DA=PSRXIN K PSRXIN S $P(^PSRX(DA,"STA"),"^")=1 D NVER^PSOCAN2
|
---|
93 | W !,"Rx # "_$P(^PSRX(DA,0),"^")_" is still non-verified!"
|
---|
94 | Q
|
---|
95 | OERR I '$D(^XUSEC("PSORPH",DUZ)),'$P($G(PSOPAR),"^",2) S VALMSG="Invalid Action Selection!",VALMBCK="" Q
|
---|
96 | S PSOPLCK=$$L^PSSLOCK(PSODFN,0) I '$G(PSOPLCK) D LOCK^PSOORCPY S VALMSG=$S($P($G(PSOPLCK),"^",2)'="":$P($G(PSOPLCK),"^",2)_" is working on this patient.",1:"Another person is entering orders for this patient.") K PSOPLCK S VALMBCK="" Q
|
---|
97 | K PSOPLCK S PSOCANRD=+$P($G(^PSRX($P(PSOLST(ORN),"^",2),0)),"^",4),PSOCANRA=1
|
---|
98 | I $P(^PSRX($P(PSOLST(ORN),"^",2),"STA"),"^"),$P(^("STA"),"^")=1!($P(^("STA"),"^")=4) S:$G(SPEED) PSONOORS=$G(PSONOOR) D DEL^PSOCAN4 S:$G(PSONOORS)'="" PSONOOR=$G(PSONOORS) K PSONOORS D KCAN D ULP Q
|
---|
99 | D PSOL^PSSLOCK($P(PSOLST(ORN),"^",2)) I '$G(PSOMSG) S VALMSG=$S($P($G(PSOMSG),"^",2)'="":$P($G(PSOMSG),"^",2),1:"Another person is editing this order."),VALMBCK="" K PSOMSG D KCAN D ULP Q
|
---|
100 | I '+^PSRX($P(PSOLST(ORN),"^",2),"OR1"),$P(^("STA"),"^")=12 S VALMSG="Rx Cannot be Reinstated. No Orderable Item." D KCAN D ULP D PSOUL^PSSLOCK($P(PSOLST(ORN),"^",2)) Q
|
---|
101 | I $P($G(^PSRX($P(PSOLST(ORN),"^",2),"STA")),"^")=12,$P($G(^("PKI")),"^") S VALMSG="Cannot be Reinstated - Digitally Signed" D KCAN D ULP D PSOUL^PSSLOCK($P(PSOLST(ORN),"^",2)) Q
|
---|
102 | I $P($G(^PSRX($P(PSOLST(ORN),"^",2),"STA")),"^")=12 S PSOCANRZ=1
|
---|
103 | D HLDHDR^PSOLMUTL S X=$P(^PSRX($P(PSOLST(ORN),"^",2),0),"^"),PS=$S($P(^PSRX($P(PSOLST(ORN),"^",2),"STA"),"^")=12:"Reinstate: ",1:"Discontinue: ")
|
---|
104 | S POERR=1,DFNHLD=PSODFN,DA=$P(PSOLST(ORN),"^",2)
|
---|
105 | I $P(^PSRX(DA,3),"^",5) S PSOCANHD=$P(^PSRX(DA,3),"^",5)
|
---|
106 | D LMNO D:$P($G(^PSRX($P(PSOLST(ORN),"^",2),"STA")),"^")=12 RMP
|
---|
107 | D PSOUL^PSSLOCK($P(PSOLST(ORN),"^",2))
|
---|
108 | K POERR,PSCAN,PSI,PSL S PSODFN=DFNHLD K DFNHLD D ULP
|
---|
109 | D KCAN
|
---|
110 | Q
|
---|
111 | Q
|
---|
112 | ULP D UL^PSSLOCK(+$G(PSODFN))
|
---|
113 | Q
|
---|
114 | ;
|
---|
115 | LMNO ; Calls LMNO^PSOCAN
|
---|
116 | N PSODFN,PSORX,RXN,RX0
|
---|
117 | S PSPOP=0,RXNUM=X S PSODFN=+$P(^PSRX(DA,0),"^",2) D LMNO^PSOCAN
|
---|
118 | Q
|
---|
119 | ;
|
---|
120 | KCAN ;
|
---|
121 | K PSOCANRA,PSOCANRC,PSOCANRD,PSOCANRN,PSOCANRP,PSOCANRZ,PSOMSG,PSOCANHD
|
---|
122 | Q
|
---|
123 | ;
|
---|
124 | KCAN1 ;
|
---|
125 | K PSOCANRC,PSOCANRD,PSOCANRN,PSOCANRP,PSOCANRZ
|
---|
126 | Q
|
---|
127 | ;
|
---|
128 | RMP ;remove Rx if found in array PSORX("PSOL") (Label Queue)
|
---|
129 | Q:'$D(PSORX("PSOL")) S:'$G(DA) DA=$P(PSOLST(ORN),"^",2)
|
---|
130 | N I,J,FND,ST1,ST2,ST3 S I=0
|
---|
131 | F S I=$O(PSORX("PSOL",I)) Q:'I D
|
---|
132 | . S ST1=PSORX("PSOL",I) Q:ST1'[(DA_",")
|
---|
133 | . S ST3="",FND=0
|
---|
134 | . F J=1:1 S ST2=$P(ST1,",",J) Q:'ST2 D
|
---|
135 | . . I ST2=DA S FND=1 Q
|
---|
136 | . . S ST3=ST3_$S('ST3:"",1:",")_ST2
|
---|
137 | . I FND D
|
---|
138 | . . S:ST3]"" PSORX("PSOL",I)=ST3_","
|
---|
139 | . . K:ST3="" PSORX("PSOL",I)
|
---|
140 | . . D:$D(BBRX(I)) RMB^PSOCAN2(I)
|
---|
141 | Q
|
---|
142 | ;
|
---|
143 | FIL Q:'$G(PSORX)
|
---|
144 | S PSOFC=PSORX G FILC
|
---|
145 | FILX Q:'$G(DA)
|
---|
146 | S PSOFC=DA
|
---|
147 | FILC ;
|
---|
148 | N PFC,PSOFFLAG
|
---|
149 | I $P($G(^PSRX(PSOFC,2)),"^",13) G FILQ
|
---|
150 | S PSOFFLAG=0 F PFC=0:0 S PFC=$O(^PSRX(PSOFC,1,PFC)) Q:'PFC!(PSOFFLAG) I $P($G(^PSRX(PSOFC,1,PFC,0)),"^",18) S PSOFFLAG=1
|
---|
151 | I PSOFFLAG G FILQ
|
---|
152 | F PFC=0:0 S PFC=$O(^PSRX(PSOFC,"L",PFC)) Q:'PFC!(PSOFFLAG) I $D(^PSRX(PSOFC,"L",PFC,0)),'$P($G(^(0)),"^",5) S PSOFFLAG=1
|
---|
153 | I PSOFFLAG G FILQ
|
---|
154 | S PSOFCSUS=$O(^PS(52.5,"B",PSOFC,0))
|
---|
155 | I $G(PSOFCSUS),$P($G(^PS(52.5,PSOFCSUS,0)),"^",7)="L"!($P($G(^(0)),"^",7)="X") G FILQ
|
---|
156 | S $P(^PSRX(PSOFC,3),"^",8)=$P($G(^PSRX(PSOFC,3)),"^",2)
|
---|
157 | S $P(^PSRX(PSOFC,3),"^",2)=$P($G(^PSRX(PSOFC,2)),"^",2)
|
---|
158 | I $P($G(^PSRX(PSOFC,"OR1")),"^",3) S $P(^PSRX(PSOFC,3),"^")=$P($G(^PSRX($P(^PSRX(PSOFC,"OR1"),"^",3),3)),"^")
|
---|
159 | FILQ K PSOFC,PSOFCSUS
|
---|
160 | Q
|
---|
161 | ;
|
---|
162 | SETC ;Called from Date of Death
|
---|
163 | S $P(^PSRX(PSORX,"STA"),"^")=12,$P(^PSRX(PSORX,3),"^",5)=DT,$P(^PSRX(PSORX,3),"^",10)=$P(^PSRX(PSORX,3),"^") D CAN^PSOTPCAN(PSORX)
|
---|
164 | Q
|
---|