| 1 | PSOORNE5 ;BIR/SAB - display orders from backdoor con't ;5/23/05 1:46pm
|
---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**11,27,32,46,78,99,117,131,146,171,180,210,222,268**;DEC 1997;Build 9
|
---|
| 3 | ;External reference to ^PSDRUG supported by DBIA 221
|
---|
| 4 | ;External references L and UL^PSSLOCK supported by DBIA 2789
|
---|
| 5 | ;External reference to ^PS(51.2 supported by DBIA 2226
|
---|
| 6 | ;External reference to ^PS(50.607 supported by DBIA 2221
|
---|
| 7 | ;External reference ^PS(55 supported by DBIA 2228
|
---|
| 8 | ;called from PSOORNE2
|
---|
| 9 | ;PSO*210 add call to WORDWRAP api
|
---|
| 10 | ;
|
---|
| 11 | PEN ;pending orders
|
---|
| 12 | K ^TMP("PSOPO",$J),PSORX("ISSUE DATE"),PSORX("FILL DATE") S ORSV=ORD,ORD=$P(PSOLST(ORN),"^",2)
|
---|
| 13 | I $P($G(^PS(52.41,ORD,0)),"^",3)="DC"!($P($G(^(0)),"^",3)="DE") S VALMBCK="R" Q
|
---|
| 14 | I $G(PSODFN)'=$P($G(^PS(52.41,ORD,0)),"^",2) S VALMBCK="" Q
|
---|
| 15 | I $G(PSOTPBFG) N PSOTPPEN,PSOTPPEX S PSOTPPEN=ORD,PSOTPPEX=0 D VOPNR^PSOTPCAN I PSOTPPEX K PSOTPPEX,PSOTPPEN S VALMBCK="R" Q
|
---|
| 16 | K PSOTPPEX,PSOTPPEN
|
---|
| 17 | ;I '$G(PSOTPBFG) D DSPL^PSOTPCAN(ORD)
|
---|
| 18 | ;S X=PSODFN_";DPT(" D LK^ORX2 I 'Y S VALMSG="Another person is entering orders for this patient.",VALMBCK="" Q
|
---|
| 19 | I '$G(PSOFIN) S PSOPLCK=$$L^PSSLOCK(PSODFN,0) I '$G(PSOPLCK) 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."),VALMBCK="" K PSOPLCK Q
|
---|
| 20 | K PSOPLCK ; D PSOL^PSSLOCK($P(PSOLST(ORN),"^",2)_"S") I '$G(PSOMSG) S VAMLSG=$S($P($G(PSOMSG),"^",2)'="":$P($G(PSOMSG),"^",2),1:"Another person is editing this order."),PSOACT="" K PSOMSG G OK ;VALMBCK="" Q
|
---|
| 21 | S PSODRG=+$P($G(^PS(52.41,ORD,0)),"^",9) I $G(^PSDRUG(PSODRG,"I"))]"",DT>$G(^("I")) S VALMSG="This Drug has been Inactivated."
|
---|
| 22 | K PSOMSG S PSOACT=$S($D(^XUSEC("PSORPH",DUZ)):"DEF",'$D(^XUSEC("PSORPH",DUZ))&($P($G(PSOPAR),"^",2)):"F",1:"")
|
---|
| 23 | OK S PAT=PSODFN,PSORNSV=ORN,PSORNLT=PSLST D ORD^PSOORFIN S PSLST=PSORNLT,ORD=ORSV,ORN=PSORNSV K ORSV,PSORNSV,PSORNLT,PSODRUG S VALMBCK="R"
|
---|
| 24 | K ORCHK,ORDRG,PSOFDR,SIGOK,PSONEW,PSORX("ISSUE DATE"),PSORX("FILL DATE"),PSORX("FN")
|
---|
| 25 | K:'$G(MEDP) PAT
|
---|
| 26 | D CLEAN^PSOVER1 ;S X=PSODFN_";DPT(" D ULK^ORX2
|
---|
| 27 | I '$G(PSOFIN) D UL^PSSLOCK(PSODFN)
|
---|
| 28 | Q
|
---|
| 29 | RXNCHK S PSOY=$O(PSONEW("OLD LAST RX#","")) I PSOY="" D AUTO^PSONRXN Q
|
---|
| 30 | S PSONRXN("TYPE")=$S('+$G(^PS(59,+PSOSITE,2)):8,PSODRUG("DEA")["A"&(+$G(^PS(59,+PSOSITE,2))):3,1:8)
|
---|
| 31 | S PSONEW("QFLG")=0 I PSOY'=PSONRXN("TYPE"),$P($G(PSOPAR),"^",7)=1 D
|
---|
| 32 | .S DIE="^PS(59,",DA=PSOSITE,PSOX=PSONEW("OLD LAST RX#",PSOY)
|
---|
| 33 | .L +^PS(59,+PSOSITE,PSOY):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
|
---|
| 34 | .S DR=$S(PSOY=8:"2003////"_PSOX,PSOY=3:"1002.1////"_PSOX,1:"2003////"_PSOX)
|
---|
| 35 | .D:PSOX<$P(^PS(59,+PSOSITE,PSOY),"^",3) ^DIE K DIE,X,Y L -^PS(59,+PSOSITE,PSOY)
|
---|
| 36 | .L +^PS(59,+PSOSITE,PSONRXN("TYPE")):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
|
---|
| 37 | .S PSOX1=^PS(59,+PSOSITE,PSONRXN("TYPE")),PSONRXN("LO")=$P(PSOX1,"^")
|
---|
| 38 | .S PSONRXN("HI")=$P(PSOX1,"^",2),PSOI=$P(PSOX1,"^",3),PSONEW("OLD LAST RX#",PSONRXN("TYPE"))=PSOI
|
---|
| 39 | .S:PSOI<PSONRXN("LO") PSOI=PSONRXN("LO")
|
---|
| 40 | .D LOOP2 I PSONEW("QFLG") L -^PS(59,+PSOSITE,PSONRXN("TYPE")),-^PSRX("B",PSOI) Q
|
---|
| 41 | .K DIC,DIE,DA S DIE=59,DA=PSOSITE
|
---|
| 42 | .S DR=$S(PSONRXN("TYPE")=8:"2003////"_PSOI,PSONRXN("TYPE")=3:"1002.1////"_PSOI,1:"2003////"_PSOI)
|
---|
| 43 | .S PSONEW("RX #")=PSOI D ^DIE K DIE,DIC,DR,DA L -^PS(59,+PSOSITE,PSONRXN("TYPE"))
|
---|
| 44 | .K PSOX1,PSONRXN,PSOI,X,Y
|
---|
| 45 | Q
|
---|
| 46 | LOOP2 F S PSOI=PSOI+1 D:PSOI>PSONRXN("HI") FATAL^PSONRXN Q:'$D(^PSRX("B",PSOI))!PSONEW("QFLG")
|
---|
| 47 | L +^PSRX("B",PSOI):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) I $D(^PSRX("B",PSOI))!'$T G LOOP2
|
---|
| 48 | L -^PSRX("B",PSOI)
|
---|
| 49 | Q
|
---|
| 50 | RDSPL S PSODIR("CS")=0
|
---|
| 51 | F DEA=1:1 Q:$E(PSODRUG("DEA"),DEA)="" I $E(+PSODRUG("DEA"),DEA)>1,$E(+PSODRUG("DEA"),DEA)<6 S $P(PSODIR("CS"),"^")=1 S:$E(+PSODRUG("DEA"),DEA)=2 $P(PSODIR("CS"),"^",2)=1
|
---|
| 52 | I $P($G(PSODIR("CS")),"^",2)=1 S (PSONEW("# OF REFILLS"),PSONEW("N# REF"))=0 Q
|
---|
| 53 | I '$D(CLOZPAT) I PSODRUG("DEA")["A"&(PSODRUG("DEA")'["B")!(PSODRUG("DEA")["F") S (PSONEW("# OF REFILLS"),PSONEW("N# REF"))=0 Q
|
---|
| 54 | I $D(CLOZPAT) S (PSONEW("# OF REFILLS"),PSONEW("N# REF"))=$S($G(CLOZPAT)=2&(PSONEW("DAYS SUPPLY")=14):1,$G(CLOZPAT)=2&(PSONEW("DAYS SUPPLY")=7):3,$G(CLOZPAT)=1&(PSONEW("DAYS SUPPLY")=7):1,1:0) Q
|
---|
| 55 | I PSODIR("CS") D
|
---|
| 56 | .S PSOX=5,PSOX1=$S($P($G(PSONEW("PTST NODE")),"^",4)>PSOX:PSOX,1:$P($G(PSONEW("PTST NODE")),"^",4)),PSOX=$S(PSOX1=5:PSOX,1:PSOX1)
|
---|
| 57 | .S PSOX=$S('PSOX:0,PSONEW("DAYS SUPPLY")=90:1,1:PSOX),PSDY=PSONEW("DAYS SUPPLY"),PSDY1=$S(PSDY<60:5,PSDY'<60&(PSDY'>89):2,PSDY=90:1,1:0) S PSOX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
|
---|
| 58 | .I PSONEW("# OF REFILLS")>PSOX S (PSONEW("# OF REFILLS"),PSONEW("N# REF"))=PSOX
|
---|
| 59 | E D
|
---|
| 60 | .S PSOX=11,PSOX1=$S($P($G(PSONEW("PTST NODE")),"^",4)>PSOX:PSOX,1:$P($G(PSONEW("PTST NODE")),"^",4)),PSOX=$S(PSOX1=11:PSOX,1:PSOX1)
|
---|
| 61 | .S PSDY=PSONEW("DAYS SUPPLY"),PSDY1=$S(PSDY<60:11,PSDY'<60&(PSDY'>89):5,PSDY=90:3,1:0) S PSOX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
|
---|
| 62 | .I PSONEW("# OF REFILLS")>PSOX S (PSONEW("# OF REFILLS"),PSONEW("N# REF"))=PSOX
|
---|
| 63 | Q
|
---|
| 64 | GET ;
|
---|
| 65 | I $P(PSODRUG0,"^",3)["2" S (ACTREF,ACTREN)=0 Q
|
---|
| 66 | S (ACTREF,ACTREN)=1
|
---|
| 67 | ;refills
|
---|
| 68 | I ST S ACTREF=0
|
---|
| 69 | I '$P(PSOPAR,"^",11),$G(^PSDRUG(PSODRG,"I"))]"",DT>$G(^("I")) S ACTREF=0,VALMSG="Inactive Drug, Non Refillable!"
|
---|
| 70 | ;I $P($G(^PSDRUG(PSODRG,2)),"^",3)'["O" S ACTREF=0
|
---|
| 71 | S PSORFRM=$P(RX0,"^",9) F PSOJ=0:0 S PSOJ=$O(^PSRX(RXN,1,PSOJ)) Q:'PSOJ S PSORFRM=PSORFRM-1
|
---|
| 72 | S:PSORFRM<0 PSORFRM=0 S:PSORFRM=0 ACTREF=0
|
---|
| 73 | I $G(RXFL(RXN))]"",'$P(PSOPAR,"^",6) S ACTREF=0
|
---|
| 74 | I $P(PSODRUG0,"^",3)["A"&($P(PSODRUG0,"^",3)'["B")!($P(PSODRUG0,"^",3)["F") S ACTREF=0
|
---|
| 75 | ;renews
|
---|
| 76 | I $P(PSOPAR,"^",4)=0 S ACTREN=0 Q
|
---|
| 77 | I $P($G(^PSDRUG(PSODRG,2)),"^",3)'["O" S ACTREN=0
|
---|
| 78 | I $G(^PSDRUG(PSODRG,"I"))]"",DT>$G(^("I")) S ACTREN=0,VALMSG="This Drug has been Inactivated."
|
---|
| 79 | I '$P($G(^PSDRUG(PSODRG,2)),"^"),'$P($G(^PSRX(RXN,"OR1")),"^") S ACTREN=0,VALMSG="Drug must be Matched to an Orderable Item!"
|
---|
| 80 | I $P(PSODRUG0,"^",3)["A",$P(PSODRUG0,"^",3)'["B" S ACTREN=0
|
---|
| 81 | I $P(PSODRUG0,"^",3)["W" S ACTREN=0
|
---|
| 82 | I $D(^PS(53,+$P(RX0,"^",3),0)),'$P(^(0),"^",5) S ACTREN=0
|
---|
| 83 | S PSOLC=$P(RX0,"^"),PSOLC=$E(PSOLC,$L(PSOLC)) I $A(PSOLC)'<90 S ACTREN=0
|
---|
| 84 | I ST,ST'=2,ST'=5,ST'=6,ST'=11,ST'=12 S ACTREN=0
|
---|
| 85 | K PSORFRM,PSOLC,PSODRG,PSODRUG0
|
---|
| 86 | Q
|
---|
| 87 | INST ;formats instruction from front door
|
---|
| 88 | D INST^PSOORNE6 Q
|
---|
| 89 | PC ;displays provider comments
|
---|
| 90 | D PC^PSOORNE6 Q
|
---|
| 91 | INST1 ;formats instruction from front door
|
---|
| 92 | D INST1^PSOORNE6 Q
|
---|
| 93 | PC1 ;displays provider comments
|
---|
| 94 | D PC1^PSOORNE6 Q
|
---|
| 95 | DOSE ;displays dosing instruction for both simple and complex backdoor Rxs.
|
---|
| 96 | I '$O(^PSRX(RXN,6,0)) S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" (3) Dosage: " Q
|
---|
| 97 | S DS=1 F I=0:0 S I=$O(^PSRX(RXN,6,I)) Q:'I S DOSE=^PSRX(RXN,6,I,0) D
|
---|
| 98 | .I '$P(DOSE,"^",2),$P(DOSE,"^",9)]"" S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" Verb: "_$P(DOSE,"^",9)
|
---|
| 99 | .I $G(DS)=1 S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" (3)"
|
---|
| 100 | .D DOSE1 S PSORXED("ENT")=$G(PSORXED("ENT"))+1
|
---|
| 101 | K DOSE,I
|
---|
| 102 | Q
|
---|
| 103 | DOSE1 ;
|
---|
| 104 | I $G(DS)=1 S ^TMP("PSOAO",$J,IEN,0)=^TMP("PSOAO",$J,IEN,0)_" *Dosage: "_$S($E($P(DOSE,"^"),1)="."&($P(DOSE,"^",2)):"0",1:"")_$P(DOSE,"^")_$S($P(DOSE,"^",3)]"":" ("_$P(^PS(50.607,$P(DOSE,"^",3),0),"^")_")",1:"") K DS G DU
|
---|
| 105 | S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" *Dosage: "_$S($E($P(DOSE,"^"),1)="."&($P(DOSE,"^",2)):"0",1:"")_$P(DOSE,"^")_$S($P(DOSE,"^",3)]"":" ("_$P(^PS(50.607,$P(DOSE,"^",3),0),"^")_")",1:"")
|
---|
| 106 | DU I '$P(DOSE,"^",2),$P($G(^PS(55,PSODFN,"LAN")),"^") S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" Oth. Lang. Dosage: "_$G(^PSRX(RXN,6,I,1))
|
---|
| 107 | I $P(DOSE,"^",2),$P(DOSE,"^",9)]"" D
|
---|
| 108 | .S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" Verb: "_$P(DOSE,"^",9)
|
---|
| 109 | .S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" Dispense Units: "_$S($E($P(DOSE,"^",2),1)=".":"0",1:"")_$P(DOSE,"^",2)
|
---|
| 110 | .S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" Noun: "_$P(DOSE,"^",4)
|
---|
| 111 | I $P(DOSE,"^",7) S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" *Route: "_$P(^PS(51.2,$P(DOSE,"^",7),0),"^")
|
---|
| 112 | S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" *Schedule: "_$P(DOSE,"^",8)
|
---|
| 113 | I $P(DOSE,"^",5)]"" D
|
---|
| 114 | .S DUR=$S($E($P(DOSE,"^",5),1)'?.N:$E($P(DOSE,"^",5),2,99)_$E($P(DOSE,"^",5),1),1:$P(DOSE,"^",5))
|
---|
| 115 | .S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" *Duration: "_DUR_" ("_$S($P(DOSE,"^",5)["M":"MINUTES",$P(DOSE,"^",5)["H":"HOURS",$P(DOSE,"^",5)["L":"MONTHS",$P(DOSE,"^",5)["W":"WEEKS",1:"DAYS")_")" K DUR
|
---|
| 116 | I $P(DOSE,"^",6)]"" S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" *Conjunction: "_$S($P(DOSE,"^",6)="A":"AND",$P(DOSE,"^",6)="T":"THEN",$P(DOSE,"^",6)="X":"EXCEPT",1:"")
|
---|
| 117 | Q
|
---|
| 118 | INS ;patient instructions ;PSO*210
|
---|
| 119 | I $G(^PSRX(RXN,"INS"))]"",'$O(^PSRX(RXN,"INS1",0)) D K SG G SPINS
|
---|
| 120 | .S PSORXED("SIG",1)=^PSRX(RXN,"INS")
|
---|
| 121 | .D WORDWRAP^PSOUTLA2(^PSRX(RXN,"INS"),.IEN,$NA(^TMP("PSOAO",$J)),21)
|
---|
| 122 | ;
|
---|
| 123 | I $O(^PSRX(RXN,"INS1",0)) D
|
---|
| 124 | .S T=0 F S T=$O(^PSRX(RXN,"INS1",T)) Q:'T D
|
---|
| 125 | .. S (PSORXED("SIG",T),MIG)=^PSRX(RXN,"INS1",T,0)
|
---|
| 126 | .. D WORDWRAP^PSOUTLA2(MIG,.IEN,$NA(^TMP("PSOAO",$J)),21)
|
---|
| 127 | SPINS K T,SG,MIG
|
---|
| 128 | I $P($G(^PS(55,PSODFN,"LAN")),"^") S IEN=IEN+1,^TMP("PSOAO",$J,IEN,0)=" Other Pat. Instruc: "_$S($G(^PSRX(RXN,"INSS"))]"":^PSRX(RXN,"INSS"),1:"")
|
---|
| 129 | Q
|
---|
| 130 | SV S VALMSG="Pre-POE Rx. Please Compare Dosing Fields with SIG!"
|
---|
| 131 | Q
|
---|