PSOOREDT ;BIR/SAB - edit orders from backdoor ;10-Jun-2013 22:29;DU
;;7.0;OUTPATIENT PHARMACY;**4,20,27,37,57,46,78,102,104,119,1002,1008,1013,143,148,260,281,304,289,1015,1016,1017**;DEC 1997;Build 40
;External reference to ^PSDRUG supported by DBIA 221
;External reference to PSSLOCK supported by DBIA 2789
;External reference to ^VA(200 supported by DBIA 10060
; Modified - IHS/CIA/PLS - 01/15/04 - Lines SEL+3
; - 12/13/04 - Line EDT+13
; IHS/MSC/PLS - 01/27/09 - Line EDT+20, EDT+21
; 02/15/12 - Line PROV+1
; IHS/MSC/PB - 01/22/13 - Line SEL+1 modified to screen for external Rx and not allow it to be edited.
; IHS/MSC/PLS - 06/04/13 - Line EDT+23
SEL ;
;IHS/MSC/PB start code to screen for external Rx to be edited 1/22/13
I $E($P($G(^PSRX($P(PSOLST(ORN),"^",2),0)),"^",1))="X" D Q
.W !,"An external Rx can't be Edited in RPMS Prescription Processing."
.W !,"Use Copy to create a new internal Rx from this external Rx."
.S DIR("A")="Press Return to continue",DIR(0)="E",DIR("?")="Press Return to continue" D ^DIR K DIR
;ISH/MSC/PB end changes for screen of external Rx for editing
K PSOISLKD,PSOLOKED S PSOPLCK=$$L^PSSLOCK(PSODFN,0) I '$G(PSOPLCK) D LOCK^PSOORCPY D SVAL K PSOPLCK S VALMBCK="" Q
K PSOPLCK D PSOL^PSSLOCK($P(PSOLST(ORN),"^",2)) I '$G(PSOMSG) D UL^PSSLOCK(+$G(PSODFN)) D SVALO K PSOMSG S VALMBCK="" Q
K PSOMSG S PSOLOKED=1
K PSORX("DFLG"),DIR,DUOUT,DIRUT S DIR("A")="Select fields by number"
;IHS/CIA/PLS - 01/15/04 - Commented out next line and modified the numeric range
;S DIR(0)="LO^1:"_$S($$STATUS^PSOBPSUT($P(PSOLST(ORN),"^",2))'="":21,$G(REF):20,1:19)
S DIR(0)="LO^0:"_$S($$STATUS^PSOBPSUT($P(PSOLST(ORN),"^",2))'="":21,$G(REF):20,1:19)
D ^DIR I $D(DIRUT) K DIR,DIRUT,DTOUT S VALMBCK="" D UL K PSOLOKED Q
EDTSEL ;N VALMCNT K PSOISLKD,PSORX("DFLG"),PSOOIFLG,PSOMRFLG,DIR,DIRUT,DTOUT,DTOUT,ZONE S (PSOEDIT,PSORXED)=1 I +Y S FST=Y D HLDHDR^PSOLMUTL D G EX ;PSO LM SELECT MENU protocol
N VALMCNT K PSOISLKD,PSORX("DFLG"),PSOOIFLG,PSOMRFLG,DIR,DIRUT,DTOUT,ZONE S (PSOEDIT,PSORXED)=1 I $L(Y) S FST=Y D HLDHDR^PSOLMUTL D G EX ;PSO LM SELECT MENU protocol
.I '$G(PSOLOKED) S PSOPLCK=$$L^PSSLOCK(PSODFN,0) I '$G(PSOPLCK) D LOCK^PSOORCPY D SVAL K PSOPLCK S VALMBCK="",(PSOISLKD,PSODE)=1 Q
.I '$G(PSOLOKED) K PSOPLCK D PSOL^PSSLOCK($P(PSOLST(ORN),"^",2)) I '$G(PSOMSG) D UL^PSSLOCK(+$G(PSODFN)) D SVALO K PSOMSG S VALMBCK="",(PSOISLKD,PSODE)=1 Q
.K PSOMSG,PSOPLCK S (NEWEDT,PSOLOKED)=1 D EDT
E S VALMBCK="",PSODE=1
EX I $G(PSOISLKD) D UL K PSOISLKD G EX2
I '$G(PSOSIGFL),'$G(PSORXED("DFLG")) D UPDATE^PSOORED6 D LOG^PSORXED,POST^PSORXED G EX1
I $G(PSOSIGFL)=1 D Q:$G(PSORX("FN"))
.N PSOTMP
.S PSOTMP=$G(PSOFROM),PSOFROM="NEW"
.S VALMSG="This change will create a new prescription!",NCPDPFLG=1
.D EN^PSOORED1(.PSORXED)
.I $G(PSORX("FN")) D Q
..D ^PSOBUILD
..K QUIT,PSORX("DFLG"),FST,FLD,IEN,FLN,INCOM,PSOI,PSODRUG,PSOEDIT
..K PSORENW,PSOSIGFL,PSOOIFLG,PSOMRFLG,PSODIR,CHK,PSORX("SIG"),PSODE
..K PSOTRN,PSORX("EDIT"),PSORXED("FLD"),NEWEDT
..D EOJ^PSONEW
..D UL K PSOLOKED S VALMBCK="Q"
.S PSOFROM=PSOTMP I PSOFROM="" K PSOFROM
;
EX1 I '$G(PSODE)!('$G(ZONE)) I $G(PSORENW("OIRXN")) D EN^PSOHLSN1(PSORENW("OIRXN"),"XX","","Order edited")
QUIT D UL K PSOLOKED D ^PSOBUILD,ACT^PSOORNE2 D:+^PSRX($P(PSOLST(ORN),"^",2),"STA")=5 EN^PSOCMOPC($P(PSOLST(ORN),"^",2))
K:'$O(^PSRX($P(PSOLST(ORN),"^",2),1,0)) REF
EX2 S VALMBCK=$S($G(PSORX("FN")):"Q",$G(ZONE):"Q",1:"R") K PSORXED,FST,FLD,IEN,FLN,INCOM,PSOI,PSODRUG,PSOEDIT,PSORENW,PSOSIGFL,PSODIR,CHK,PSORX("SIG"),PSODE,PSOTRN,PSORX("DFLG"),RFED,ZONE,PSORX("EDIT"),PSOOIFLG,PSOMRFLG,SIG,QUIT
K NEWEDT I $G(VALMBCK)="R" W ! D CLEAN^PSOVER1 H 2
Q
;
EDT ; Rx Edit (Backdoor)
K NCPDPFLG
I '$D(PSODRUG) NEW PSOY S PSOY=$P(RX0,U,6),PSOY(0)=^PSDRUG(PSOY,0) D SET^PSODRG
S I=0 F S I=$O(^PSRX($P(PSOLST(ORN),"^",2),1,I)) Q:'I S PSORXED("RX1")=^PSRX($P(PSOLST(ORN),"^",2),1,I,0)
S (RX0,PSORXED("RX0"))=^PSRX($P(PSOLST(ORN),"^",2),0),PSORXED("RX2")=$G(^(2)),PSORXED("RX3")=$G(^(3)),PSOSIG=$P(^("SIG"),"^")
F FLD=1:1:$L(FST,",") Q:$P(FST,",",FLD)']""!($G(PSORXED("DFLG")))!($G(PSORX("DFLG"))) S FLN=+$P(FST,",",FLD) D
.S PSORXED("DFLG")=0,(DA,PSORXED("IRXN"),PSORENW("OIRXN"))=$P(PSOLST(ORN),"^",2),RX0=^PSRX(PSORXED("IRXN"),0) S:$G(PSOSIG)="" PSOSIG=$P(^("SIG"),"^")
.I '$G(PSOSIGFL) D
..S PSOI=+^PSRX(DA,"OR1"),PSODAYS=$P(RX0,"^",8),PSORXST=+$P($G(^PS(53,$P(RX0,"^",3),0)),"^",7)
..I 'PSOI S PSOI=+^PSDRUG($P(RX0,"^",6),2),$P(^PSRX(DA,"OR1"),"^")=PSOI
..S:'$G(PSODRUG("IEN")) PSODRUG("IEN")=$P(RX0,"^",6),PSODRUG("NAME")=$P(^PSDRUG($P(RX0,"^",6),0),"^")
..S PSODRUG("OI")=PSOI
.S PSORX("PROVIDER")=$P(RX0,"^",4),PSORX("PROVIDER NAME")=$P(^VA(200,$P(RX0,"^",4),0),"^"),PSOTRN=$G(^PSRX(DA,"TN"))
.D:'$G(CHK) POP^PSOSIGNO(DA),CHK Q:$G(PSORXED("DFLG"))
.; IHS/CIA/PLS - 03/14/04 - Edit IHS specific Fields
.I FLN=0 D Q
..S PSORXED("CM")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.02,"I") ; IHS/CIA/PLS - 12/13/04 - Added internal flag
..S PSORXED("MANUFACTURER")=$$GET1^DIQ(52,PSORXED("IRXN"),28)
..S PSORXED("EXPIRATION DATE")=$$GET1^DIQ(52,PSORXED("IRXN"),29,"I")
..S PSORXED("TRIP")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.14)
..S PSORXED("LOT #")=$$GET1^DIQ(52,PSORXED("IRXN"),24)
..S PSORXED("DAW")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.25,"I")
..S PSORXED("CASH DUE")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.26)
..S PSORXED("DSCMED")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.28,"I") ;IHS/MSC/PLS - 06/04/13
..D IHSFLDS^APSPDIR(.PSORXED,1)
.S FDR="39.2^"_$S($P(PSOPAR,"^",3):"6",1:"")_";6.5^113^114^3^1^22R^24^8^7^9^4^11;"_$S($P(RX0,"^",11)="W"&($P(PSOPAR,"^",12)):"35;",1:"")_"^10.6^5^20^23^12^PSOCOU^RF^81"
.I $G(ST)=11!($G(ST)=12)!($G(ST)=14)!($G(ST)=15) D NDCDAWDE^PSOORED7(ST,FLN,$G(RXN)) Q
.I FLN=20,'$G(REF) S VALMSG="There is no Refill Data to be edited." Q
.S DR=$P(FDR,"^",FLN) I DR="RF" D REF^PSOORED2 Q
.I DR="PSOCOU" D PSOCOU^PSOORED6 Q
.I FLN=2,'$P(PSOPAR,"^",3),$$RXRLDT^PSOBPSUT(RXN,0),$$STATUS^PSOBPSUT(RXN,0)'="" D Q
..N NDC D NDC^PSODRG(RXN,0,,.NDC) I $G(NDC)="^"!($G(NDC)="") Q
..S (PSODRUG("NDC"),PSORXED("FLD",27))=NDC
.I FLN'>2,'$P(PSOPAR,"^",3) S VALMSG="Check site parameters, Drug data is not editable." Q
.I FLN=3 D EDTDOSE^PSOORED2,FULL^VALM1,POST^PSODRG S:$G(PSORX("DFLG")) PSOISLKD=1,PSORX("FN")=1 Q
.I FLN=4 D INS^PSOORED1 Q
.I FLN=1 D PSOI^PSOORED6 N PSOX S PSORXED=1,PSOX("IRXN")=$S($D(DA):DA,$D(PSORXED("IRXN")):PSORXED("IRXN"),$D(PSORENW("OIRXN")):PSORENW("OIRXN")) D:'$G(PSORXED("DFLG")) EN^PSODIAG Q
.I FLN=2 D DRG^PSOORED6 N PSOX S PSORXED=1,PSOX("IRXN")=PSORXED("IRXN") D:'$G(PSORXED("DFLG")) EN^PSODIAG S:$O(^PSRX(PSORXED("IRXN"),1,0)) REF=1 Q
.I FLN=12 D PROV Q
.I FLN=6 D ISDT^PSOORED2 Q
.I FLN=7 D FLDT^PSOORED2 Q
.I FLN=21,$$STATUS^PSOBPSUT(RXN,0)="" S VALMSG="Invalid selection!" Q
.I FLN=21 D Q
..N DAW D EDTDAW^PSODAWUT(RXN,0,.DAW) I $G(DAW)="^" Q
..S (PSODRUG("DAW"),PSORXED("FLD",81))=DAW
.I FLN=9!(FLN=10)!(FLN=11) D NOCHG^PSOORED7 Q
.S DR=+DR
.K DIR,DIRUT,DIROUT ;S DIE=52 D ^DIE I $D(Y) S PSORXED("DFLG")=1
.K DIC,DIQ S DIC=52,DA=PSORXED("IRXN"),DIQ="PSORXED" D EN^DIQ1 K DIC,DIQ
.S DIR("B")=$S($G(PSORXED("FLD",DR))]"":PSORXED("FLD",DR),1:PSORXED(52,DA,DR)),DIR(0)="52,"_DR D ^DIR
.I DR=24!(DR=12) S PSORXED("FLD",DR)=X
.I $D(DIRUT) K DIR,DIRUT,DUOUT,DTOUT,PSORXED(52,DA,DR),PSORXED("FLD",DR) Q
.I DR'=5,X="@" W !,"Data Required!",! K DIC,DIQ,DR,DA,DIR,DIRUT,PSORXED(52,DA,DR),X,Y Q
.I DR=5,X'="@" S Y=+Y
.I DR=3!(DR=20)!(DR=23) S Y=+Y
.S PSORXED("FLD",DR)=$S(X="@":X,1:Y) K DIR,DIRUT,DIROUT,X,Y,PSORXED(52,DA,DR)
.I DR=11,PSORXED("FLD",DR)="W",$P(PSOPAR,"^",12) D
..D FIELD^DID(52,DR,"","LABEL","ZZ") S PSORXED(ZZ("LABEL"))=PSORXED("FLD",DR) K ZZ
..S DR=35,DIQ="PSORXED" D EN^DIQ1 K DIC,DIQ,DIRUT,DUOUT,DTOUT
..S:$G(PSORXED(52,DA,DR))]"" DIR("B")=PSORXED(52,DA,DR)
..S DIR(0)="52,"_(DR) D ^DIR I $D(DIRUT),X'="@" K DIR,DIRUT Q
..S PSORXED("FLD",DR)=X K DIR,DIRUT,DIROUT,X,Y,PSORXED(52,DA,DR)
.I $G(PSORXED("FLD",DR))]"" D FIELD^DID(52,DR,"","LABEL","ZZ") S PSORXED(ZZ("LABEL"))=PSORXED("FLD",DR) K ZZ
Q:$G(PSOSIGFL)
S (RX1,I,RFD,RFDT)=0 F S I=$O(^PSRX(PSORXED("IRXN"),1,I)) Q:'I S RFD=I,RFDT=$P(^PSRX(PSORXED("IRXN"),1,I,0),"^"),RX1(I)=$G(RX1(I))+1
Q
CHK S CHK=1 I $G(^PSDRUG($P(PSORXED("RX0"),"^",6),"I"))]"",^("I")<DT S VALMSG="This drug has been inactivated. ",PSORXED("DFLG")=1 Q
K PSPOP I $G(PSODIV),$P(PSORXED("RX2"),"^",9)'=PSOSITE S PSPRXN=PSORXED("IRXN") D Q:PSORXED("DFLG")
.I '$P(PSOSYS,"^",2) S VALMSG="RX# "_$P(^PSRX(PSPRXN,0),"^")_" is not a valid choice. (Different Division)" S PSORXED("DFLG")=1 Q
.I $P(PSOSYS,"^",3) K DIR,DUOUT,DTOUT D K DIR,DUOUT,DTOUT Q
..W $C(7) S DIR("A",1)="",DIR("A",2)="RX# "_$P(^PSRX(PSPRXN,0),"^")_" is from another division.",DIR("A")="Continue: (Y/N)",DIR(0)="Y",DIR("?",1)="'Y' FOR YES",DIR("?")="'N' FOR NO"
..S DIR("B")="N" D ^DIR I 'Y!($D(DIRUT)) S PSORXED("DFLG")=1 W !
;
I $P(^PSRX(PSORXED("IRXN"),"STA"),"^")=16 S PSORXED("DFLG")=1 S VALMSG="Prescriptions on Provider Hold cannot be edited." Q
CHKX K PSPOP,DIR,DTOUT,DUOUT,Y,X Q
Q
PROV ;select provider
S:$$ISSCH^APSPFNC2($G(PSODRUG("IEN")),"2345") PSORXED("CS")=1 ;IHS/MSC/PLS - 02/15/2012
S PSORXED("PROVIDER")=$P(RX0,"^",4),PSORXED("PROVIDER NAME")=$P(^VA(200,$P(RX0,"^",4),0),"^")
D PROV^PSODIR(.PSORXED) I PSORXED("PROVIDER")'=$P(RX0,"^",4) D
.K DIR,DIRUT W ! S DIR(0)="Y",DIR("A",1)="You have changed the name of the provider entered for this Rx."
.S DIR("A",2)="This edit will cause the provider's name to be update for all fills.",DIR("A")="Do you want to continue" D ^DIR
.I 'Y!$D(DIRUT) K PSORX("PROVIDER"),PSORX("PROVIDER NAME"),PSORX("COSIGNING PROVIDER") Q
.S PSORXED("FLD",4)=PSORXED("PROVIDER") K DIR,DIRUT,DUOUT
.S PSORXED("FLD",109)=$G(PSORXED("COSIGNING PROVIDER"))
Q
UDPROV ;update provider
S $P(^PSRX(PSORXED("IRXN"),0),"^",4)=PSORXED("PROVIDER"),$P(^(3),"^",3)=$G(PSORX("COSIGNING PROVIDER"))
F XTY="1","P" F I=0:0 S I=$O(^PSRX(PSORXED("IRXN"),XTY,I)) Q:'I S $P(^PSRX(PSORXED("IRXN"),XTY,I,0),"^",17)=PSORXED("PROVIDER") S:XTY RFED=I
K XTY,I
Q
SIG ;edit medication instructions (SIG)
S PSOFDR=+$P(^PSRX(PSORXED("IRXN"),"SIG"),"^",2) I PSOFDR D
.F I=0:0 S I=$O(^PSRX(PSORXED("IRXN"),"SIG1",I)) Q:'I S SIG(I)=^PSRX(PSORXED("IRXN"),"SIG1",I,0)
E S PSORX("SIG")=$P(^PSRX(PSORXED("IRXN"),"SIG"),"^")
D SIG^PSODIR1(.PSORX) D:$G(PSORX("SIG"))]"" EN1^PSOSIGNO(PSORXED("IRXN"),PSORX("SIG"))
I '$G(PSOSIGFL),$G(PSORX("SIG"))]"" S ^PSRX(PSORXED("IRXN"),"SIG")=PSORX("SIG") K ^PSRX(PSORXED("IRXN"),"SIG1") Q
S PSOMRFLG=1
Q
UL ;
I '$G(PSOLOKED) Q
D UL^PSSLOCK(PSODFN)
D PSOUL^PSSLOCK($P(PSOLST(ORN),"^",2))
Q
SVAL ;Set message for patient lock
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.")
Q
SVALO ;Set message for order lock
S VALMSG=$S($P($G(PSOMSG),"^",2)'="":$P($G(PSOMSG),"^",2),1:"Another person is editing this order.")
Q
;
PSOOREDT ;BIR/SAB - edit orders from backdoor ;10-Jun-2013 22:29;DU
+1 ;;7.0;OUTPATIENT PHARMACY;**4,20,27,37,57,46,78,102,104,119,1002,1008,1013,143,148,260,281,304,289,1015,1016,1017**;DEC 1997;Build 40
+2 ;External reference to ^PSDRUG supported by DBIA 221
+3 ;External reference to PSSLOCK supported by DBIA 2789
+4 ;External reference to ^VA(200 supported by DBIA 10060
+5 ; Modified - IHS/CIA/PLS - 01/15/04 - Lines SEL+3
+6 ; - 12/13/04 - Line EDT+13
+7 ; IHS/MSC/PLS - 01/27/09 - Line EDT+20, EDT+21
+8 ; 02/15/12 - Line PROV+1
+9 ; IHS/MSC/PB - 01/22/13 - Line SEL+1 modified to screen for external Rx and not allow it to be edited.
+10 ; IHS/MSC/PLS - 06/04/13 - Line EDT+23
SEL ;
+1 ;IHS/MSC/PB start code to screen for external Rx to be edited 1/22/13
+2 IF $EXTRACT($PIECE($GET(^PSRX($PIECE(PSOLST(ORN),"^",2),0)),"^",1))="X"
Begin DoDot:1
+3 WRITE !,"An external Rx can't be Edited in RPMS Prescription Processing."
+4 WRITE !,"Use Copy to create a new internal Rx from this external Rx."
+5 SET DIR("A")="Press Return to continue"
SET DIR(0)="E"
SET DIR("?")="Press Return to continue"
DO ^DIR
KILL DIR
End DoDot:1
QUIT
+6 ;ISH/MSC/PB end changes for screen of external Rx for editing
+7 KILL PSOISLKD,PSOLOKED
SET PSOPLCK=$$L^PSSLOCK(PSODFN,0)
IF '$GET(PSOPLCK)
DO LOCK^PSOORCPY
DO SVAL
KILL PSOPLCK
SET VALMBCK=""
QUIT
+8 KILL PSOPLCK
DO PSOL^PSSLOCK($PIECE(PSOLST(ORN),"^",2))
IF '$GET(PSOMSG)
DO UL^PSSLOCK(+$GET(PSODFN))
DO SVALO
KILL PSOMSG
SET VALMBCK=""
QUIT
+9 KILL PSOMSG
SET PSOLOKED=1
+10 KILL PSORX("DFLG"),DIR,DUOUT,DIRUT
SET DIR("A")="Select fields by number"
+11 ;IHS/CIA/PLS - 01/15/04 - Commented out next line and modified the numeric range
+12 ;S DIR(0)="LO^1:"_$S($$STATUS^PSOBPSUT($P(PSOLST(ORN),"^",2))'="":21,$G(REF):20,1:19)
+13 SET DIR(0)="LO^0:"_$SELECT($$STATUS^PSOBPSUT($PIECE(PSOLST(ORN),"^",2))'="":21,$GET(REF):20,1:19)
+14 DO ^DIR
IF $DATA(DIRUT)
KILL DIR,DIRUT,DTOUT
SET VALMBCK=""
DO UL
KILL PSOLOKED
QUIT
EDTSEL ;N VALMCNT K PSOISLKD,PSORX("DFLG"),PSOOIFLG,PSOMRFLG,DIR,DIRUT,DTOUT,DTOUT,ZONE S (PSOEDIT,PSORXED)=1 I +Y S FST=Y D HLDHDR^PSOLMUTL D G EX ;PSO LM SELECT MENU protocol
+1 ;PSO LM SELECT MENU protocol
NEW VALMCNT
KILL PSOISLKD,PSORX("DFLG"),PSOOIFLG,PSOMRFLG,DIR,DIRUT,DTOUT,ZONE
SET (PSOEDIT,PSORXED)=1
IF $LENGTH(Y)
SET FST=Y
DO HLDHDR^PSOLMUTL
Begin DoDot:1
+2 IF '$GET(PSOLOKED)
SET PSOPLCK=$$L^PSSLOCK(PSODFN,0)
IF '$GET(PSOPLCK)
DO LOCK^PSOORCPY
DO SVAL
KILL PSOPLCK
SET VALMBCK=""
SET (PSOISLKD,PSODE)=1
QUIT
+3 IF '$GET(PSOLOKED)
KILL PSOPLCK
DO PSOL^PSSLOCK($PIECE(PSOLST(ORN),"^",2))
IF '$GET(PSOMSG)
DO UL^PSSLOCK(+$GET(PSODFN))
DO SVALO
KILL PSOMSG
SET VALMBCK=""
SET (PSOISLKD,PSODE)=1
QUIT
+4 KILL PSOMSG,PSOPLCK
SET (NEWEDT,PSOLOKED)=1
DO EDT
End DoDot:1
GOTO EX
+5 IF '$TEST
SET VALMBCK=""
SET PSODE=1
EX IF $GET(PSOISLKD)
DO UL
KILL PSOISLKD
GOTO EX2
+1 IF '$GET(PSOSIGFL)
IF '$GET(PSORXED("DFLG"))
DO UPDATE^PSOORED6
DO LOG^PSORXED
DO POST^PSORXED
GOTO EX1
+2 IF $GET(PSOSIGFL)=1
Begin DoDot:1
+3 NEW PSOTMP
+4 SET PSOTMP=$GET(PSOFROM)
SET PSOFROM="NEW"
+5 SET VALMSG="This change will create a new prescription!"
SET NCPDPFLG=1
+6 DO EN^PSOORED1(.PSORXED)
+7 IF $GET(PSORX("FN"))
Begin DoDot:2
+8 DO ^PSOBUILD
+9 KILL QUIT,PSORX("DFLG"),FST,FLD,IEN,FLN,INCOM,PSOI,PSODRUG,PSOEDIT
+10 KILL PSORENW,PSOSIGFL,PSOOIFLG,PSOMRFLG,PSODIR,CHK,PSORX("SIG"),PSODE
+11 KILL PSOTRN,PSORX("EDIT"),PSORXED("FLD"),NEWEDT
+12 DO EOJ^PSONEW
+13 DO UL
KILL PSOLOKED
SET VALMBCK="Q"
End DoDot:2
QUIT
+14 SET PSOFROM=PSOTMP
IF PSOFROM=""
KILL PSOFROM
End DoDot:1
IF $GET(PSORX("FN"))
QUIT
+15 ;
EX1 IF '$GET(PSODE)!('$GET(ZONE))
IF $GET(PSORENW("OIRXN"))
DO EN^PSOHLSN1(PSORENW("OIRXN"),"XX","","Order edited")
QUIT DO UL
KILL PSOLOKED
DO ^PSOBUILD
DO ACT^PSOORNE2
IF +^PSRX($PIECE(PSOLST(ORN),"^",2),"STA")=5
DO EN^PSOCMOPC($PIECE(PSOLST(ORN),"^",2))
+1 IF '$ORDER(^PSRX($PIECE(PSOLST(ORN),"^",2),1,0))
KILL REF
EX2 SET VALMBCK=$SELECT($GET(PSORX("FN")):"Q",$GET(ZONE):"Q",1:"R")
KILL PSORXED,FST,FLD,IEN,FLN,INCOM,PSOI,PSODRUG,PSOEDIT,PSORENW,PSOSIGFL,PSODIR,CHK,PSORX("SIG"),PSODE,PSOTRN,PSORX("DFLG"),RFED,ZONE,PSORX("EDIT"),PSOOIFLG,PSOMRFLG,SIG,QUIT
+1 KILL NEWEDT
IF $GET(VALMBCK)="R"
WRITE !
DO CLEAN^PSOVER1
HANG 2
+2 QUIT
+3 ;
EDT ; Rx Edit (Backdoor)
+1 KILL NCPDPFLG
+2 IF '$DATA(PSODRUG)
NEW PSOY
SET PSOY=$PIECE(RX0,U,6)
SET PSOY(0)=^PSDRUG(PSOY,0)
DO SET^PSODRG
+3 SET I=0
FOR
SET I=$ORDER(^PSRX($PIECE(PSOLST(ORN),"^",2),1,I))
IF 'I
QUIT
SET PSORXED("RX1")=^PSRX($PIECE(PSOLST(ORN),"^",2),1,I,0)
+4 SET (RX0,PSORXED("RX0"))=^PSRX($PIECE(PSOLST(ORN),"^",2),0)
SET PSORXED("RX2")=$GET(^(2))
SET PSORXED("RX3")=$GET(^(3))
SET PSOSIG=$PIECE(^("SIG"),"^")
+5 FOR FLD=1:1:$LENGTH(FST,",")
IF $PIECE(FST,",",FLD)']""!($GET(PSORXED("DFLG")))!($GET(PSORX("DFLG")))
QUIT
SET FLN=+$PIECE(FST,",",FLD)
Begin DoDot:1
+6 SET PSORXED("DFLG")=0
SET (DA,PSORXED("IRXN"),PSORENW("OIRXN"))=$PIECE(PSOLST(ORN),"^",2)
SET RX0=^PSRX(PSORXED("IRXN"),0)
IF $GET(PSOSIG)=""
SET PSOSIG=$PIECE(^("SIG"),"^")
+7 IF '$GET(PSOSIGFL)
Begin DoDot:2
+8 SET PSOI=+^PSRX(DA,"OR1")
SET PSODAYS=$PIECE(RX0,"^",8)
SET PSORXST=+$PIECE($GET(^PS(53,$PIECE(RX0,"^",3),0)),"^",7)
+9 IF 'PSOI
SET PSOI=+^PSDRUG($PIECE(RX0,"^",6),2)
SET $PIECE(^PSRX(DA,"OR1"),"^")=PSOI
+10 IF '$GET(PSODRUG("IEN"))
SET PSODRUG("IEN")=$PIECE(RX0,"^",6)
SET PSODRUG("NAME")=$PIECE(^PSDRUG($PIECE(RX0,"^",6),0),"^")
+11 SET PSODRUG("OI")=PSOI
End DoDot:2
+12 SET PSORX("PROVIDER")=$PIECE(RX0,"^",4)
SET PSORX("PROVIDER NAME")=$PIECE(^VA(200,$PIECE(RX0,"^",4),0),"^")
SET PSOTRN=$GET(^PSRX(DA,"TN"))
+13 IF '$GET(CHK)
DO POP^PSOSIGNO(DA)
DO CHK
IF $GET(PSORXED("DFLG"))
QUIT
+14 ; IHS/CIA/PLS - 03/14/04 - Edit IHS specific Fields
+15 IF FLN=0
Begin DoDot:2
+16 ; IHS/CIA/PLS - 12/13/04 - Added internal flag
SET PSORXED("CM")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.02,"I")
+17 SET PSORXED("MANUFACTURER")=$$GET1^DIQ(52,PSORXED("IRXN"),28)
+18 SET PSORXED("EXPIRATION DATE")=$$GET1^DIQ(52,PSORXED("IRXN"),29,"I")
+19 SET PSORXED("TRIP")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.14)
+20 SET PSORXED("LOT #")=$$GET1^DIQ(52,PSORXED("IRXN"),24)
+21 SET PSORXED("DAW")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.25,"I")
+22 SET PSORXED("CASH DUE")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.26)
+23 ;IHS/MSC/PLS - 06/04/13
SET PSORXED("DSCMED")=$$GET1^DIQ(52,PSORXED("IRXN"),9999999.28,"I")
+24 DO IHSFLDS^APSPDIR(.PSORXED,1)
End DoDot:2
QUIT
+25 SET FDR="39.2^"_$SELECT($PIECE(PSOPAR,"^",3):"6",1:"")_";6.5^113^114^3^1^22R^24^8^7^9^4^11;"_$SELECT($PIECE(RX0,"^",11)="W"&($PIECE(PSOPAR,"^",12)):"35;",1:"")_"^10.6^5^20^23^12^PSOCOU^RF^81"
+26 IF $GET(ST)=11!($GET(ST)=12)!($GET(ST)=14)!($GET(ST)=15)
DO NDCDAWDE^PSOORED7(ST,FLN,$GET(RXN))
QUIT
+27 IF FLN=20
IF '$GET(REF)
SET VALMSG="There is no Refill Data to be edited."
QUIT
+28 SET DR=$PIECE(FDR,"^",FLN)
IF DR="RF"
DO REF^PSOORED2
QUIT
+29 IF DR="PSOCOU"
DO PSOCOU^PSOORED6
QUIT
+30 IF FLN=2
IF '$PIECE(PSOPAR,"^",3)
IF $$RXRLDT^PSOBPSUT(RXN,0)
IF $$STATUS^PSOBPSUT(RXN,0)'=""
Begin DoDot:2
+31 NEW NDC
DO NDC^PSODRG(RXN,0,,.NDC)
IF $GET(NDC)="^"!($GET(NDC)="")
QUIT
+32 SET (PSODRUG("NDC"),PSORXED("FLD",27))=NDC
End DoDot:2
QUIT
+33 IF FLN'>2
IF '$PIECE(PSOPAR,"^",3)
SET VALMSG="Check site parameters, Drug data is not editable."
QUIT
+34 IF FLN=3
DO EDTDOSE^PSOORED2
DO FULL^VALM1
DO POST^PSODRG
IF $GET(PSORX("DFLG"))
SET PSOISLKD=1
SET PSORX("FN")=1
QUIT
+35 IF FLN=4
DO INS^PSOORED1
QUIT
+36 IF FLN=1
DO PSOI^PSOORED6
NEW PSOX
SET PSORXED=1
SET PSOX("IRXN")=$SELECT($DATA(DA):DA,$DATA(PSORXED("IRXN")):PSORXED("IRXN"),$DATA(PSORENW("OIRXN")):PSORENW("OIRXN"))
IF '$GET(PSORXED("DFLG"))
DO EN^PSODIAG
QUIT
+37 IF FLN=2
DO DRG^PSOORED6
NEW PSOX
SET PSORXED=1
SET PSOX("IRXN")=PSORXED("IRXN")
IF '$GET(PSORXED("DFLG"))
DO EN^PSODIAG
IF $ORDER(^PSRX(PSORXED("IRXN"),1,0))
SET REF=1
QUIT
+38 IF FLN=12
DO PROV
QUIT
+39 IF FLN=6
DO ISDT^PSOORED2
QUIT
+40 IF FLN=7
DO FLDT^PSOORED2
QUIT
+41 IF FLN=21
IF $$STATUS^PSOBPSUT(RXN,0)=""
SET VALMSG="Invalid selection!"
QUIT
+42 IF FLN=21
Begin DoDot:2
+43 NEW DAW
DO EDTDAW^PSODAWUT(RXN,0,.DAW)
IF $GET(DAW)="^"
QUIT
+44 SET (PSODRUG("DAW"),PSORXED("FLD",81))=DAW
End DoDot:2
QUIT
+45 IF FLN=9!(FLN=10)!(FLN=11)
DO NOCHG^PSOORED7
QUIT
+46 SET DR=+DR
+47 ;S DIE=52 D ^DIE I $D(Y) S PSORXED("DFLG")=1
KILL DIR,DIRUT,DIROUT
+48 KILL DIC,DIQ
SET DIC=52
SET DA=PSORXED("IRXN")
SET DIQ="PSORXED"
DO EN^DIQ1
KILL DIC,DIQ
+49 SET DIR("B")=$SELECT($GET(PSORXED("FLD",DR))]"":PSORXED("FLD",DR),1:PSORXED(52,DA,DR))
SET DIR(0)="52,"_DR
DO ^DIR
+50 IF DR=24!(DR=12)
SET PSORXED("FLD",DR)=X
+51 IF $DATA(DIRUT)
KILL DIR,DIRUT,DUOUT,DTOUT,PSORXED(52,DA,DR),PSORXED("FLD",DR)
QUIT
+52 IF DR'=5
IF X="@"
WRITE !,"Data Required!",!
KILL DIC,DIQ,DR,DA,DIR,DIRUT,PSORXED(52,DA,DR),X,Y
QUIT
+53 IF DR=5
IF X'="@"
SET Y=+Y
+54 IF DR=3!(DR=20)!(DR=23)
SET Y=+Y
+55 SET PSORXED("FLD",DR)=$SELECT(X="@":X,1:Y)
KILL DIR,DIRUT,DIROUT,X,Y,PSORXED(52,DA,DR)
+56 IF DR=11
IF PSORXED("FLD",DR)="W"
IF $PIECE(PSOPAR,"^",12)
Begin DoDot:2
+57 DO FIELD^DID(52,DR,"","LABEL","ZZ")
SET PSORXED(ZZ("LABEL"))=PSORXED("FLD",DR)
KILL ZZ
+58 SET DR=35
SET DIQ="PSORXED"
DO EN^DIQ1
KILL DIC,DIQ,DIRUT,DUOUT,DTOUT
+59 IF $GET(PSORXED(52,DA,DR))]""
SET DIR("B")=PSORXED(52,DA,DR)
+60 SET DIR(0)="52,"_(DR)
DO ^DIR
IF $DATA(DIRUT)
IF X'="@"
KILL DIR,DIRUT
QUIT
+61 SET PSORXED("FLD",DR)=X
KILL DIR,DIRUT,DIROUT,X,Y,PSORXED(52,DA,DR)
End DoDot:2
+62 IF $GET(PSORXED("FLD",DR))]""
DO FIELD^DID(52,DR,"","LABEL","ZZ")
SET PSORXED(ZZ("LABEL"))=PSORXED("FLD",DR)
KILL ZZ
End DoDot:1
+63 IF $GET(PSOSIGFL)
QUIT
+64 SET (RX1,I,RFD,RFDT)=0
FOR
SET I=$ORDER(^PSRX(PSORXED("IRXN"),1,I))
IF 'I
QUIT
SET RFD=I
SET RFDT=$PIECE(^PSRX(PSORXED("IRXN"),1,I,0),"^")
SET RX1(I)=$GET(RX1(I))+1
+65 QUIT
CHK SET CHK=1
IF $GET(^PSDRUG($PIECE(PSORXED("RX0"),"^",6),"I"))]""
IF ^("I")<DT
SET VALMSG="This drug has been inactivated. "
SET PSORXED("DFLG")=1
QUIT
+1 KILL PSPOP
IF $GET(PSODIV)
IF $PIECE(PSORXED("RX2"),"^",9)'=PSOSITE
SET PSPRXN=PSORXED("IRXN")
Begin DoDot:1
+2 IF '$PIECE(PSOSYS,"^",2)
SET VALMSG="RX# "_$PIECE(^PSRX(PSPRXN,0),"^")_" is not a valid choice. (Different Division)"
SET PSORXED("DFLG")=1
QUIT
+3 IF $PIECE(PSOSYS,"^",3)
KILL DIR,DUOUT,DTOUT
Begin DoDot:2
+4 WRITE $CHAR(7)
SET DIR("A",1)=""
SET DIR("A",2)="RX# "_$PIECE(^PSRX(PSPRXN,0),"^")_" is from another division."
SET DIR("A")="Continue: (Y/N)"
SET DIR(0)="Y"
SET DIR("?",1)="'Y' FOR YES"
SET DIR("?")="'N' FOR NO"
+5 SET DIR("B")="N"
DO ^DIR
IF 'Y!($DATA(DIRUT))
SET PSORXED("DFLG")=1
WRITE !
End DoDot:2
KILL DIR,DUOUT,DTOUT
QUIT
End DoDot:1
IF PSORXED("DFLG")
QUIT
+6 ;
+7 IF $PIECE(^PSRX(PSORXED("IRXN"),"STA"),"^")=16
SET PSORXED("DFLG")=1
SET VALMSG="Prescriptions on Provider Hold cannot be edited."
QUIT
CHKX KILL PSPOP,DIR,DTOUT,DUOUT,Y,X
QUIT
+1 QUIT
PROV ;select provider
+1 ;IHS/MSC/PLS - 02/15/2012
IF $$ISSCH^APSPFNC2($GET(PSODRUG("IEN")),"2345")
SET PSORXED("CS")=1
+2 SET PSORXED("PROVIDER")=$PIECE(RX0,"^",4)
SET PSORXED("PROVIDER NAME")=$PIECE(^VA(200,$PIECE(RX0,"^",4),0),"^")
+3 DO PROV^PSODIR(.PSORXED)
IF PSORXED("PROVIDER")'=$PIECE(RX0,"^",4)
Begin DoDot:1
+4 KILL DIR,DIRUT
WRITE !
SET DIR(0)="Y"
SET DIR("A",1)="You have changed the name of the provider entered for this Rx."
+5 SET DIR("A",2)="This edit will cause the provider's name to be update for all fills."
SET DIR("A")="Do you want to continue"
DO ^DIR
+6 IF 'Y!$DATA(DIRUT)
KILL PSORX("PROVIDER"),PSORX("PROVIDER NAME"),PSORX("COSIGNING PROVIDER")
QUIT
+7 SET PSORXED("FLD",4)=PSORXED("PROVIDER")
KILL DIR,DIRUT,DUOUT
+8 SET PSORXED("FLD",109)=$GET(PSORXED("COSIGNING PROVIDER"))
End DoDot:1
+9 QUIT
UDPROV ;update provider
+1 SET $PIECE(^PSRX(PSORXED("IRXN"),0),"^",4)=PSORXED("PROVIDER")
SET $PIECE(^(3),"^",3)=$GET(PSORX("COSIGNING PROVIDER"))
+2 FOR XTY="1","P"
FOR I=0:0
SET I=$ORDER(^PSRX(PSORXED("IRXN"),XTY,I))
IF 'I
QUIT
SET $PIECE(^PSRX(PSORXED("IRXN"),XTY,I,0),"^",17)=PSORXED("PROVIDER")
IF XTY
SET RFED=I
+3 KILL XTY,I
+4 QUIT
SIG ;edit medication instructions (SIG)
+1 SET PSOFDR=+$PIECE(^PSRX(PSORXED("IRXN"),"SIG"),"^",2)
IF PSOFDR
Begin DoDot:1
+2 FOR I=0:0
SET I=$ORDER(^PSRX(PSORXED("IRXN"),"SIG1",I))
IF 'I
QUIT
SET SIG(I)=^PSRX(PSORXED("IRXN"),"SIG1",I,0)
End DoDot:1
+3 IF '$TEST
SET PSORX("SIG")=$PIECE(^PSRX(PSORXED("IRXN"),"SIG"),"^")
+4 DO SIG^PSODIR1(.PSORX)
IF $GET(PSORX("SIG"))]""
DO EN1^PSOSIGNO(PSORXED("IRXN"),PSORX("SIG"))
+5 IF '$GET(PSOSIGFL)
IF $GET(PSORX("SIG"))]""
SET ^PSRX(PSORXED("IRXN"),"SIG")=PSORX("SIG")
KILL ^PSRX(PSORXED("IRXN"),"SIG1")
QUIT
+6 SET PSOMRFLG=1
+7 QUIT
UL ;
+1 IF '$GET(PSOLOKED)
QUIT
+2 DO UL^PSSLOCK(PSODFN)
+3 DO PSOUL^PSSLOCK($PIECE(PSOLST(ORN),"^",2))
+4 QUIT
SVAL ;Set message for patient lock
+1 SET VALMSG=$SELECT($PIECE($GET(PSOPLCK),"^",2)'="":$PIECE($GET(PSOPLCK),"^",2)_" is working on this patient.",1:"Another person is entering orders for this patient.")
+2 QUIT
SVALO ;Set message for order lock
+1 SET VALMSG=$SELECT($PIECE($GET(PSOMSG),"^",2)'="":$PIECE($GET(PSOMSG),"^",2),1:"Another person is editing this order.")
+2 QUIT
+3 ;