| 1 | PSOORED1 ;ISC-BHAM/SAB - edit orders from backdoor ;6/30/06 10:21am | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**5,23,46,78,114,117,131,146,223,148,244,249,268**;DEC 1997;Build 9 | 
|---|
| 3 | ;External reference ^PS(55 supported by DBIA 2228 | 
|---|
| 4 | ;External reference ^PS(50.7 supported by DBIA 2223 | 
|---|
| 5 | ; | 
|---|
| 6 | ;*244 call to remove DC'd Rx's from Rx ien strings | 
|---|
| 7 | ; | 
|---|
| 8 | EN(PSORENW) ; | 
|---|
| 9 | N LST,ORD,ORN K VALMBCK,PSORX("FN") S PSOAC=1,(PSORX("QFLG"),PSORX("DFLG"))=0 ;D DREN^PSOORNW2,INIT | 
|---|
| 10 | D INIT | 
|---|
| 11 | D @$S($P(PSOPAR,"^",7):"AUTO^PSONRXN",1:"MANUAL^PSONRXN") | 
|---|
| 12 | I '$D(PSONEW("RX #")),'$P(PSOPAR,"^",7) D PAUSE^VALM1 K VALMSG,PSONEW("QFLG") S VALMBCK="Q" Q | 
|---|
| 13 | I '$D(PSONEW("RX #")) K VALMSG D DEL^PSONEW,PAUSE^VALM1 S VALMBCK="Q" Q | 
|---|
| 14 | S PSORENW("RX #")=PSONEW("RX #") I '$P(PSOPAR,"^",7) D  Q:$G(PSONEW("DFLG"))!($G(PSONEW("QFLG"))) | 
|---|
| 15 | .S PSOX=PSORENW("RX #") D CHECK^PSONRXN | 
|---|
| 16 | I $G(PSONEW("DFLG"))!$G(PSONEW("QFLG")) D DEL^PSONEW,PAUSE^VALM1 S VALMBCK="Q" K PSORENW Q | 
|---|
| 17 | D EN^PSOORNE1(.PSORENW) I '$G(PSORX("FN")) D:$P($G(PSOPAR),"^",7)=1  S VALMBCK="Q" Q | 
|---|
| 18 | .S DIE="^PS(59,",DA=PSOSITE,PSOY=$O(PSONEW("OLD LAST RX#","")),PSOX=PSONEW("OLD LAST RX#",PSOY) | 
|---|
| 19 | .L +^PS(59,+PSOSITE,PSOY):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) | 
|---|
| 20 | .S DR=$S(PSOY=8:"2003////"_PSOX,PSOY=3:"1002.1////"_PSOX,1:"2003////"_PSOX) | 
|---|
| 21 | .D:PSOX<$P(^PS(59,+PSOSITE,PSOY),"^",3) ^DIE K DIE,X,Y L -^PS(59,+PSOSITE,PSOY) | 
|---|
| 22 | .I $D(PSONEW("RX #")) L -^PSRX("B",PSONEW("RX #")) | 
|---|
| 23 | .K PSOX,PSOY Q | 
|---|
| 24 | Q:$G(COPY) | 
|---|
| 25 | TRY S $P(^PSRX(PSORENW("OIRXN"),"STA"),"^")=15,DA=PSORENW("OIRXN") | 
|---|
| 26 | S $P(^PSRX(DA,3),"^",5)=DT,$P(^PSRX(DA,3),"^",10)=$P(^PSRX(DA,3),"^") | 
|---|
| 27 | D REVERSE^PSOBPSU1(DA,,"DC",7),CAN^PSOTPCAN(DA) | 
|---|
| 28 | D RMP^PSOCAN3                ;*244 | 
|---|
| 29 | ;cancel/discontinue action | 
|---|
| 30 | S PHARM="",STAT="RP",COMM="Prescription discontinued due to editing." D EN^PSOHLSN1(DA,STAT,PHARM,COMM,PSONOOR) K STAT,PHARM,COMM | 
|---|
| 31 | S ACOM="Discontinued due to editing. New Rx created "_$P(^PSRX(PSORENW("IRXN"),0),"^")_"." | 
|---|
| 32 | I $G(^PSRX(DA,"H"))]"" D | 
|---|
| 33 | .I $P(^PSRX(DA,"STA"),"^")=3!($P(^("STA"),"^")=16) D | 
|---|
| 34 | ..S DIE=52,DR="22///"_$P(^PSRX(DA,3),"^") D ^DIE S ACOM="Discontinued due to editing while on hold. " K:$P(^PSRX(DA,"H"),"^") ^PSRX("AH",$P(^PSRX(DA,"H"),"^"),DA) | 
|---|
| 35 | ..S ^PSRX(DA,"H")="" | 
|---|
| 36 | S RXDA=DA,(DA,SUSDA)=$O(^PS(52.5,"B",RXDA,0)) D:DA | 
|---|
| 37 | .S SUSD=$P($G(^PS(52.5,DA,0)),"^",2) | 
|---|
| 38 | .S:+$G(^PS(52.5,DA,"P"))'=1 ACOM="Discontinued due to editing while suspended." | 
|---|
| 39 | .I $O(^PSRX(RXDA,1,0)) S DA=RXDA D:'$G(^PS(52.5,+SUSDA,"P")) REF^PSOCAN2 | 
|---|
| 40 | .S DA=SUSDA,DIK="^PS(52.5," D ^DIK K DIK | 
|---|
| 41 | K SUSD,SUSDA S DA=RXDA,RXREF=0,PSODFN=+$P(^PSRX(DA,0),"^",2) D | 
|---|
| 42 | .S ACNT=0 F SUB=0:0 S SUB=$O(^PSRX(DA,"A",SUB)) Q:'SUB  S ACNT=SUB | 
|---|
| 43 | .S RFCNT=0 F RF=0:0 S RF=$O(^PSRX(DA,1,RF)) Q:'RF  S RFCNT=RF S:RF>5 RFCNT=RF+1 | 
|---|
| 44 | .D NOW^%DTC S ^PSRX(DA,"A",0)="^52.3DA^"_(ACNT+1)_"^"_(ACNT+1),^PSRX(DA,"A",ACNT+1,0)=%_"^C^"_DUZ_"^"_RFCNT_"^"_$G(ACOM) | 
|---|
| 45 | .I $G(PSOOIFLG),'$G(PSOMRFLG) S $P(^PSRX(DA,"A",ACNT+1,1),"^")="Pharmacy Orderable Item Edited." | 
|---|
| 46 | .I '$G(PSOOIFLG),$G(PSOMRFLG) S $P(^PSRX(DA,"A",ACNT+1,1),"^")="Medication Route/Schedule Edited." | 
|---|
| 47 | .I $G(PSOOIFLG),$G(PSOMRFLG) S $P(^PSRX(DA,"A",ACNT+1,1),"^")="Pharmacy Orderable Item and Medication Route/Schedule Edited." | 
|---|
| 48 | .S REA="C" D EXP^PSOHELP1 | 
|---|
| 49 | I $G(^PS(52.4,DA,0))]"" S PSCDA=DA,DIK="^PS(52.4," D ^DIK S DA=PSCDA K DIK,PSCDA | 
|---|
| 50 | Q | 
|---|
| 51 | INS K X,QUIT,Y,DIR,DIRUT,DUOUT,DTOUT,DIC,INSDEL,UPMI,^TMP($J,"INS1") | 
|---|
| 52 | I '$O(^PSRX(PSORXED("IRXN"),6,0)),'$O(PSORXED("DOSE",0)) D UPMI Q:$G(QUIT)  ;G INS1 | 
|---|
| 53 | I $G(^PSRX(PSORXED("IRXN"),"INS"))]"" S PSORXED("FLD",114)=^PSRX(PSORXED("IRXN"),"INS") K UPMI G INS1 | 
|---|
| 54 | K DD,GG F I=0:0 S I=$O(^PSRX(PSORXED("IRXN"),"INS1",I)) Q:'I  S DD=$G(DD)+1 | 
|---|
| 55 | I $G(DD)=1 S PSORXED("FLD",114)=^PSRX(PSORXED("IRXN"),"INS1",$O(^PSRX(PSORXED("IRXN"),"INS1",0)),0) K UPMI,DD G INS1 | 
|---|
| 56 | I $O(^PSRX(PSORXED("IRXN"),"INS1",0)) D  G INSX | 
|---|
| 57 | .F I=0:0 S I=$O(^PSRX(PSORXED("IRXN"),"INS1",I)) Q:'I  S ^TMP($J,"INS1",I,0)=^PSRX(PSORXED("IRXN"),"INS1",I,0) | 
|---|
| 58 | .S ^TMP($J,"INS1",0)=^PSRX(PSORXED("IRXN"),"INS1",0) | 
|---|
| 59 | .S DIC="^TMP($J,""INS1"",",DWPK=2,DWLW=80 D EN^DIWE I $G(X)="^" K ^TMP($J,"INS1") Q | 
|---|
| 60 | .I '$O(^TMP($J,"INS1",0)) S INSDEL=1 | 
|---|
| 61 | .S D=0 F  S D=$O(^PSRX(PSORXED("IRXN"),"INS1",D)) Q:'D  S PSORXED("SIG",D)=^PSRX(PSORXED("IRXN"),"INS1",D,0) | 
|---|
| 62 | INS1 K Y,DIR,DIRUT,DUOUT,DTOUT,DIC,X | 
|---|
| 63 | I $G(UPMI) K UPMI I $G(^PS(50.7,PSODRUG("OI"),"INS"))]"" S PSORXED("FLD",114)=^PS(50.7,PSODRUG("OI"),"INS") | 
|---|
| 64 | S:$G(PSORXED("FLD",114))]"" DIR("B")=PSORXED("FLD",114) | 
|---|
| 65 | S DIR("?")="Enter Quick codes or Free Text",DIR(0)="52,114" D ^DIR | 
|---|
| 66 | I $D(DTOUT)!($D(DUOUT))!($G(PSORXED("FLD",114))=X) K PSORXED("FLD",114) G INSX | 
|---|
| 67 | I X'="",X'="@" D SIG^PSOHELP G INS1:'$D(X) | 
|---|
| 68 | S PSORXED("FLD",114)=X | 
|---|
| 69 | I $G(INS1)]"" W " ("_$E(INS1,2,9999999)_")" | 
|---|
| 70 | G:(X']""!(X="@")) INSX | 
|---|
| 71 | S (PSORXED("INS"),PSORXED("SIG",1))=$E(INS1,2,9999999) D EN^PSOFSIG(.PSORXED) | 
|---|
| 72 | INSX I $P($G(^PS(55,PSODFN,"LAN")),"^") K DIR D | 
|---|
| 73 | .I $G(^PSRX(PSORXED("IRXN"),"INSS"))]"" S PSORXED("SINS")=^PSRX(PSORXED("IRXN"),"INSS") | 
|---|
| 74 | .D SINS^PSODIR(.PSORXED) I $G(PSORXED("SINS"))']"" K ^PSRX(PSORXED("IRXN"),"INSS") Q | 
|---|
| 75 | .S PSORXED("FLD",114.1)=PSORXED("SINS") | 
|---|
| 76 | K DIRUT,DUOUT,DTOUT,DIR,X,Y,DIC,DWPK | 
|---|
| 77 | Q | 
|---|
| 78 | INIT ;setup psorenw array | 
|---|
| 79 | S PSORENW("RX0")=^PSRX(PSORENW("IRXN"),0),PSORENW("RX2")=^(2),PSORENW("RX3")=^(3),PSORENW("STA")=^("STA"),PSORENW("TN")=$G(^("TN")) | 
|---|
| 80 | I $G(PSOSIGFL),$G(PSORX("SIG"))]"" S PSORENW("SIG")=PSORX("SIG"),SIGOK=0 | 
|---|
| 81 | E  D | 
|---|
| 82 | .I '$P($G(^PSRX(PSORENW("IRXN"),"SIG")),"^",2) S PSORENW("SIG")=$P($G(^("SIG")),"^") | 
|---|
| 83 | .E  D | 
|---|
| 84 | ..S SIGOK=1 Q:$O(SIG(0)) | 
|---|
| 85 | ..S D=0 F I=0:0 S D=D+1,I=$O(^PSRX(PSORENW("IRXN"),"SIG1",I)) Q:'I  S SIG(D)=^PSRX(PSORENW("IRXN"),"SIG1",I,0) | 
|---|
| 86 | ..K PSOX1,D | 
|---|
| 87 | S PSORENW("OIRXN")=PSORENW("IRXN") | 
|---|
| 88 | S PSORENW("PROVIDER")=$S($G(PSORENW("PROVIDER")):PSORENW("PROVIDER"),1:$P(PSORENW("RX0"),"^",4)) | 
|---|
| 89 | S (PSORENW("PROVIDER NAME"),PSORX("PROVIDER NAME"))=$P($G(^VA(200,PSORENW("PROVIDER"),0)),"^") | 
|---|
| 90 | I $P($G(^VA(200,PSORENW("PROVIDER"),"PS")),"^",7),$P($G(^("PS")),"^",8) S PSORENW("COSIGNING PROVIDER")=$P($G(^("PS")),"^",8) | 
|---|
| 91 | S PSORENW("CLINIC")=$S($G(PSORENW("CLINIC")):PSORENW("CLINIC"),1:$P(PSORENW("RX0"),"^",5)) | 
|---|
| 92 | S PSORENW("REMARKS")="New Order Created by "_$S($G(COPY)&('$G(PSOEDIT)):"copying",1:"editing")_" Rx # "_$P(PSORENW("RX0"),"^")_"." | 
|---|
| 93 | S PSORENW("COSIGNER")=$S($G(PSORENW("COSIGNER")):PSORENW("COSIGNER"),$P(PSORENW("RX3"),"^",3):$P(PSORENW("RX3"),"^",3),1:"") | 
|---|
| 94 | K:PSORENW("COSIGNER")="" PSORENW("COSIGNER") | 
|---|
| 95 | S PSORENW("PSODFN")=$P(PSORENW("RX0"),"^",2) | 
|---|
| 96 | S PSORENW("ORX #")=$P(PSORENW("RX0"),"^") | 
|---|
| 97 | S:$G(PSODRUG("IEN")) PSORENW("DRUG IEN")=PSODRUG("IEN") | 
|---|
| 98 | I $G(PSORENW("DAYS SUPPLY")) G QTY | 
|---|
| 99 | S PSORENW("DAYS SUPPLY")=$S($D(CLOZPAT):7,1:$P(PSORENW("RX0"),"^",8)) | 
|---|
| 100 | QTY S PSORENW("QTY")=$S($G(PSORENW("QTY")):PSORENW("QTY"),1:$P(PSORENW("RX0"),"^",7)) | 
|---|
| 101 | RFN S PSORENW("# OF REFILLS")=$S($D(CLOZPAT):0,$G(PSORENW("# OF REFILLS")):PSORENW("# OF REFILLS"),1:$P(PSORENW("RX0"),"^",9)) | 
|---|
| 102 | S (PSOID,Y,PSORENW("FILL DATE"),PSORENW("ISSUE DATE"))=DT | 
|---|
| 103 | S:PSORENW("CLINIC") PSORX("CLINIC")=$P(^SC(+PSORENW("CLINIC"),0),"^") | 
|---|
| 104 | S PSORENW("PATIENT STATUS")=$S($G(PSORENW("PATIENT STATUS")):PSORENW("PATIENT STATUS"),'$P(PSORENW("RX0"),"^",3):$G(^PS(55,PSORENW("PSODFN"),"PS")),1:$P(PSORENW("RX0"),"^",3)) | 
|---|
| 105 | S PSORENW("PTST NODE")=$G(^PS(53,PSORENW("PATIENT STATUS"),0)) | 
|---|
| 106 | S PSDAYS=$S($G(PSORENW("DAYS SUPPLY")):PSORENW("DAYS SUPPLY"),'$P(PSORENW("RX0"),"^",8):$P(PSORENW("PTST NODE"),"^",3),1:$P(PSORENW("RX0"),"^",8)) | 
|---|
| 107 | I $G(PSODRUG("IEN")) S DREN=PSODRUG("IEN"),POERR=1 D DRG^PSOORDRG K POERR | 
|---|
| 108 | D:$G(PSORENW("# OF REFILLS"))']"" RF | 
|---|
| 109 | S PSORENW("MAIL/WINDOW")=$S($G(PSORENW("MAIL/WINDOW"))]"":PSORENW("MAIL/WINDOW"),1:$P(PSORENW("RX0"),"^",11)) | 
|---|
| 110 | S PSORX("MAIL/WINDOW")=$S(PSORENW("MAIL/WINDOW")="W":"WINDOW",1:"MAIL") | 
|---|
| 111 | S PSORENW("COPIES")=$S($G(PSORENW("COPIES")):PSORENW("COPIES"),$P(PSORENW("RX0"),"^",18):$P(PSORENW("RX0"),"^",18),1:1) | 
|---|
| 112 | S PSORENW("CLERK CODE")=DUZ | 
|---|
| 113 | S:$G(PSORX("CLERK CODE"))']"" PSORX("CLERK CODE")=$P($G(^VA(200,DUZ,0)),"^") | 
|---|
| 114 | Q:$D(COPY)  S PSORENW("ENT")=0 ;Q:$G(PSOSIGFL)!($D(COPY)) | 
|---|
| 115 | K PSORENW("ENT") F I=0:0 S I=$O(PSORENW("DOSE",I)) Q:'I  S PSORENW("ENT")=$G(PSORENW("ENT"))+1 | 
|---|
| 116 | I $O(^TMP($J,"INS1",0)) D | 
|---|
| 117 | .K PSORXED("SIG"),DD | 
|---|
| 118 | .F I=0:0 S I=$O(^TMP($J,"INS1",I)) Q:'I  S PSORENW("SIG",I)=^TMP($J,"INS1",I,0) | 
|---|
| 119 | .K ^TMP($J,"INS1") | 
|---|
| 120 | I $G(^PSRX(PSORENW("IRXN"),"INS"))]"" S PSORENW("INS")=^PSRX(PSORENW("IRXN"),"INS") | 
|---|
| 121 | I $G(^PSRX(PSORENW("IRXN"),"INSS"))]"" S PSORENW("SINS")=^PSRX(PSORENW("IRXN"),"INSS") | 
|---|
| 122 | I '$G(PSORENW("ENT")),'$G(PSOSIGFL) D DOLST1^PSOORED3(.PSORENW) S PSORENW("ENT")=+$G(OLENT) | 
|---|
| 123 | Q | 
|---|
| 124 | RF ;# of refills | 
|---|
| 125 | S PTRF=$S($P(PSORENW("PTST NODE"),"^",4)]"":$P(PSORENW("PTST NODE"),"^",4),1:11) | 
|---|
| 126 | S CS=0 F DEA=1:1 Q:$E(PSODRUG("DEA"),DEA)=""  I $E(+PSODRUG("DEA"),DEA)>1,$E(+PSODRUG("DEA"),DEA)<6 S CS=1 | 
|---|
| 127 | I CS D | 
|---|
| 128 | .S PSOX1=$S(PTRF>5:5,1:PTRF),PSOX=$S(PSOX1=5:5,1:PSOX1) | 
|---|
| 129 | .S PSOX=$S('PSOX:0,PSDAYS=90:1,1:PSOX),PSDY1=$S(PSDAYS<60:5,PSDAYS'<60&(PSDAYS'>89):2,PSDAYS=90:1,1:0) S PSORENW("# OF REFILLS")=$S(PSOX'>PSDY1:PSOX,1:PSDY1) | 
|---|
| 130 | E  D | 
|---|
| 131 | .S PSOX1=PTRF,PSOX=$S(PSOX1=11:11,1:PSOX1),PSOX=$S('PSOX:0,PSDAYS=90:3,1:PSOX) | 
|---|
| 132 | .S PSDY1=$S(PSDAYS<60:11,PSDAYS'<60&(PSDAYS'>89):5,PSDAYS=90:3,1:0) S PSORENW("# OF REFILLS")=$S(PSOX'>PSDY1:PSOX,1:PSDY1) | 
|---|
| 133 | I PSODRUG("DEA")["A"&(PSODRUG("DEA")'["B")!(PSODRUG("DEA")["F") S PSORENW("# OF REFILLS")=0 | 
|---|
| 134 | K PSDY,PSDY1,PTRF,PSOX,PSOX1,PSDAYS,CS | 
|---|
| 135 | Q | 
|---|
| 136 | UPMI ;add dosing data for pre-poe rxs | 
|---|
| 137 | W !! K PSONEW("DFLG"),DIR,DIRUT,DTOUT,DUOUT S DIR(0)="Y",DIR("B")="No",DIR("A")="Dosing Instructions Are Missing!! Do You Want to Add Them" | 
|---|
| 138 | D ^DIR I 'Y!($D(DIRUT)) S QUIT=1 K DIR,DIRUT,DUOT,DUOUT Q | 
|---|
| 139 | S UPMI=1,EDTHLD=$G(PSORX("EDIT")) K PSORX("EDIT") | 
|---|
| 140 | D DOSE1^PSOORED5(.PSORXED) S (PSORXED,PSORX("EDIT"))=EDTHLD K EDTHLD I $G(PSONEW("DFLG")) S QUIT=1 | 
|---|
| 141 | Q | 
|---|