- Timestamp:
- Dec 4, 2009, 12:11:15 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WorldVistAEHR/trunk/r/OUTPATIENT_PHARMACY-PSO-APSP-HUIP/PSOORED6.m
r613 r623 1 PSOORED6 ;BIR/SAB - edit orders from backdoor ;03/06/96 2 ;;7.0;OUTPATIENT PHARMACY;**78,104,117,133,143,219,148,247,268,260,269**;DEC 1997;Build 4 3 ;External reference to ^PSDRUG supported by DBIA 221 4 ;External reference to ^PS(50.7 supported by DBIA 2223 5 ;External reference ^PS(50.606 supported by DBIA 2174 6 DRG ;select drug 7 S PSORX("EDIT")=1,RX0HLD=RX0 8 S PSODRUG("IEN")=$S($G(PSODRUG("IEN"))]"":PSODRUG("IEN"),1:$P(RX0,"^",6)),PSODRUG("NAME")=$S($G(PSODRUG("NAME"))]"":PSODRUG("NAME"),1:$P(^PSDRUG($P(RX0,"^",6),0),"^")) 9 D ^PSODRG I PSODRUG("IEN")=$P(RX0,"^",6) K PSORXED("FLD",6) 10 D:PSODRUG("IEN")'=$P(RX0,"^",6) I $G(PSORX("DFLG")) K PSORXED("FLD",6) S PSORXED("DFLG")=1 Q 11 .D POST^PSODRG 12 .I '$O(^PSRX(PSORXED("IRXN"),1,0)) S PSORXED("FLD",17)=$G(PSODRUG("COST")) 13 .I $G(PSORX("DFLG")) K PSORXED("FLD",6),PSODRUG,PSOOIFLG,PSOSIGFL,VALMSG Q 14 .D KV S DIR(0)="Y",DIR("B")="YES" 15 .S DIR("A",1)="You have changed the dispense drug from" 16 .S DIR("A",2)=$P(^PSDRUG($P(PSORXED("RX0"),"^",6),0),"^")_" to "_$P(^PSDRUG(PSODRUG("IEN"),0),"^")_"." 17 .I $P($G(^PSRX(PSORXED("IRXN"),"SIG")),"^",2),$O(^PSRX(PSORXED("IRXN"),"SIG1",0)) S DIR("A",3)="" D 18 ..F I=0:0 S I=$O(^PSRX(PSORXED("IRXN"),"SIG1",I)) Q:'I S DIR("A",3+I)=$S(I=1:"Current SIG: ",1:"")_$G(^PSRX(PSORXED("IRXN"),"SIG1",I,0)) 19 .S DIR("A")="Do You want to Edit the SIG" 20 .D ^DIR K DIR I $D(DIRUT) S PSORX("DFLG")=1 D M1 21 .Q:$D(DIRUT)!('Y) 22 .S PSOREEDQ=1 D DOLST^PSOORED3,DOSE^PSOORED3 K PSOREEDQ 23 .I '$O(PSORXED("DOSE",0)) S PSORX("DFLG")=1 Q 24 .D:$G(PSOSIGFL) M2 25 S RX0=RX0HLD K RX0HLD I $G(PSODRUG("OI"))=$G(PSOI) D Q 26 .D:$O(^TMP("PSORXDC",$J,0)) 27 ..W !!,"This edit will discontinue the duplicate Rx & change the dispensed drug!" 28 ..K DIR,X,Y S DIR("A")="Do You Want to Proceed",DIR("B")="NO",DIR(0)="Y" 29 ..D ^DIR K DIR S:'Y!($D(DIRUT)) PSORXED("DFLG")=1 D:Y DCORD^PSONEW2 30 .Q:$G(PSORXED("DFLG")) 31 .I PSODRUG("IEN")'=$P(RX0,"^",6) D 32 ..S PSORXED("FLD",6)=PSODRUG("IEN"),PSORXED("FLD",39.2)=PSOI 33 .S:$G(PSODRUG("TRADE NAME"))]"" PSORXED("FLD",6.5)=PSODRUG("TRADE NAME") 34 .S:$G(PSODRUG("NDC"))]"" PSORXED("FLD",27)=PSODRUG("NDC") 35 .S:$G(PSODRUG("DAW"))]"" PSORXED("FLD",81)=PSODRUG("DAW") 36 W !!,"New Orderable Item selected. This edit will create a new prescription!",! D PAUSE^VALM1 S VALMSG="New Orderable Item selected. This edit will create a new prescription!" S (PSOOIFLG,PSOSIGFL)=1 37 Q 38 PSOCOU ;patient counseling 39 K DIC,DIQ S DIC=52,DA=PSORXED("IRXN"),DIQ="PSORXED",DR=41 D EN^DIQ1 K DIC,DIQ 40 D KV S DIR(0)="52,41" S:$G(PSORXED(52,DA,DR))]"" DIR("B")=PSORXED(52,DA,DR) D ^DIR K DIR,PSORXED(52,DA,DR) 41 I $D(DIRUT) K PSORXED("FLD",41) D KV Q 42 S PSORXED("FLD",DR)=Y D K DIRUT 43 .I Y D Q 44 ..K DIC,DIQ S DIC=52,DA=PSORXED("IRXN"),DIQ="PSORXED",DR=42 D EN^DIQ1 K DIC,DIQ 45 ..K DIR,DIRUT S DIR(0)="52,42" S:$G(PSORXED(52,DA,DR))]"" DIR("B")=PSORXED(52,DA,DR) D ^DIR K DIR,PSORXED(52,DA,DR) 46 ..I $D(DIRUT) K PSORXED("FLD",41),DUOUT,DTOUT Q 47 ..S PSORXED("FLD",42)=Y 48 .S PSORXED("FLD",41)=0,PSORXED("FLD",42)="@" 49 Q 50 PSOI ;select orderable item 51 W !!,"Current Orderable Item: "_$P(^PS(50.7,PSOI,0),"^")_" "_$P(^PS(50.606,$P(^(0),"^",2),0),"^") 52 S DIC("B")=$P(^PS(50.7,PSOI,0),"^"),DIC="^PS(50.7,",DIC(0)="AEMQZ" 53 S DIC("S")="I '$P(^PS(50.7,+Y,0),""^"",4)!($P(^(0),""^"",4)'<DT) N PSOF,PSOL S (PSOF,PSOL)=0 F S PSOL=$O(^PSDRUG(""ASP"",+Y,PSOL)) Q:PSOF!'PSOL " 54 S DIC("S")=DIC("S")_"I $P($G(^PSDRUG(PSOL,2)),U,3)[""O"",'$G(^(""I""))!($G(^(""I""))'<DT) S PSOF=1" 55 ;BHW;PSO*7*269;Modify ^DIC call to call MIX^DIC to use only the B and C Cross-References. 56 S D="B^C" D MIX^DIC1 I "^"[X S PSORXED("DFLG")=1 Q 57 G:Y<1 PSOI Q:PSOI=+Y 58 S PSODRUG("OI")=+Y,PSODRUG("OIN")=Y(0,0) K DIC 59 I PSOI'=PSODRUG("OI") W !!,"New Orderable Item selected. This edit will create a new prescription!",! D K PSHOLDD Q 60 .D PAUSE^VALM1,M2 61 .S PSHOLDD=$G(PSODRUG("IEN")) K PSODRUG("IEN"),PSODRUG("NAME") S PSODRUG("DEA")="",(PSOOIFLG,PSOSIGFL)=1 62 .D DREN^PSOORNW2 63 .I $G(PSHOLDD),$G(PSODRUG("IEN")),$G(PSHOLDD)'=$G(PSODRUG("IEN")) D Q:$G(PSORX("DFLG")) 64 ..D FULL^VALM1,POST^PSODRG S VALMBCK="R" 65 ..I $G(PSORX("DFLG")) K PSODRUG S PSODRUG("IEN")=$G(PSHOLDD),PSODRUG("NAME")=$P($G(^PSDRUG(PSODRUG("IEN"),0)),"^") K PSOOIFLG,PSOSIGFL S VALMSG="" 66 .I '$G(PSODRUG("IEN")) W !!,"DRUG NAME REQUIRED!" D 2^PSOORNW1 67 .I '$G(PSODRUG("IEN")) K PSORXED("FLD"),INDEL,^TMP($J,"INS1"),PSOSIGFL,VALMSG S PSORXED("DFLG")=1,VALMSG="Dispense Drug NOT Selected!" Q 68 .D KV S DIR(0)="Y",DIR("B")="NO",DIR("A",1)="You have changed the Orderable Item from",DIR("A",2)=$P(^PS(50.7,PSOI,0),"^")_" to "_PSODRUG("OIN")_".",DIR("A")="Do You want to Edit the SIG" 69 .D ^DIR K DIR I $D(DIRUT) K PSODRUG("OIN"),PSOOIFLG,PSOSIGFL S PSODRUG("OI")=PSOI,VALMSG="",PSORX("DFLG")=1 Q 70 .I 'Y S PSORX("DFLG")=1 Q 71 .S PSOREEDQ=1 D DOLST^PSOORED3,DOSE^PSOORED3 K PSOREEDQ 72 .I '$O(PSORXED("DOSE",0)) S PSORX("DFLG")=1 Q 73 .D:$G(PSOSIGFL) M2 74 S PSORXED("FLD",39.2)=PSOI 75 Q 76 NCPDP ;Reverse previously billed Rx on an edited orderable item or drug. 77 N RX,NPSOY 78 S RX=$G(PSORXED("IRXN")) I RX="" D 79 . S NPSOY=$O(PSONEW("OLD LAST RX#","")),NPSOY=$G(PSONEW("OLD LAST RX#",NPSOY)),RX=$O(^PSRX("B",NPSOY,RX)) 80 I 'RX Q 81 D REVERSE^PSOBPSU1(RX,,"DC",7) S NCPDPFLG=0 82 Q 83 UPDATE ;add new data to file 84 N RXREF,UPDATE,FLDS,CHGNDC 85 Q:'$G(PSORXED("IRXN")) 86 I $O(PSORXED("FLD",0))!($G(^TMP($J,"INS1",0))]"")!($G(INSDEL))!($O(PSORXED("ODOSE",0))) D G:'Y UPDX 87 .K DIR,DIRUT,DTOUT,DUOUT 88 .S DIR(0)="Y",DIR("A")="Are You Sure You Want to Update Rx "_$P(^PSRX(PSORXED("IRXN"),0),"^"),DIR("B")="Yes" 89 .D ^DIR K DIR I 'Y D M1 Q 90 .I $D(^PSRX(PSORXED("IRXN"),1,0)) D 91 ..S RXREF=$P(^PSRX(PSORXED("IRXN"),0),"^",9)-$P(^PSRX(PSORXED("IRXN"),1,0),"^",4) 92 .E S RXREF=0 93 .K X,DIRUT,DUOUT,DTOUT 94 I $D(PSORXED("FLD",39.3)) D UPDATE^PSODIAG ;update ICD's after edit 95 ; - Retrieving fields before changes that are relevant for 3rd Party Billing 96 D GETS^DIQ(52,PSORXED("IRXN")_",","4;7;8;20;22;27;81","I","FLDS") 97 K Y S DA=PSORXED("IRXN"),DIE="^PSRX(",FLD=0 98 F S FLD=$O(PSORXED("FLD",FLD)) Q:'FLD D 99 .I FLD=12!(FLD=24)!(FLD=35) D Q 100 ..I FLD=12,PSORXED("FLD",12)="@" S $P(^PSRX(DA,3),"^",7)="" Q 101 ..I FLD=12,PSORXED("FLD",12)]"" S $P(^PSRX(DA,3),"^",7)=PSORXED("FLD",12) Q 102 ..I FLD=24,PSORXED("FLD",24)="@" S $P(^PSRX(DA,2),"^",4)="" Q 103 ..I FLD=24,PSORXED("FLD",24)]"" S $P(^PSRX(DA,2),"^",4)=PSORXED("FLD",24) Q 104 ..I FLD=35,PSORXED("FLD",35)="@" S $P(^PSRX(DA,"MP"),"^")="" Q 105 ..I FLD=35,PSORXED("FLD",35)]"" S $P(^PSRX(DA,"MP"),"^")=PSORXED("FLD",35) Q 106 .I FLD=114 D Q 107 ..I PSORXED("FLD",114)="@" K ^PSRX(DA,"INS"),^PSRX(DA,"INS1") 108 ..I PSORXED("FLD",114)'="@" D 109 ...S ^PSRX(DA,"INS")=PSORXED("FLD",114) 110 ...S X=PSORXED("FLD",114) D SIG^PSOHELP Q:$G(INS1)']"" 111 ...S PSORXED("SIG",1)=$E(INS1,2,9999999) K ^PSRX(DA,"INS1") 112 ...S ^PSRX(DA,"INS1",0)="^52.0115^1^1^"_DT_"^^" 113 ...S ^PSRX(DA,"INS1",1,0)=PSORXED("SIG",1) 114 ..D DOLST^PSOORED3 K:PSORXED("FLD",114)="@" PSORXED("SIG") D EN^PSOFSIG(.PSORXED),UPDSIG^PSOORED3 115 .I FLD=27 D Q 116 ..I PSORXED("FLD",27)'=$$GETNDC^PSONDCUT(DA,0) D 117 ...S CHGNDC=1 D RXACT^PSOBPSU2(DA,0,"NDC changed from "_$$GETNDC^PSONDCUT(DA,0)_" to "_PSORXED("FLD",27)_".","E") 118 ..D SAVNDC^PSONDCUT(DA,0,PSORXED("FLD",27),0,1) 119 .I FLD=81 D SAVDAW^PSODAWUT(DA,0,PSORXED("FLD",81)) Q 120 .S DR=FLD_"////"_PSORXED("FLD",FLD) D ^DIE 121 .I FLD=4 D UDPROV^PSOOREDT Q 122 ; 123 ; - Re-submitting Rx to ECME due to edits 124 D RESUB^PSOORED7 125 ; 126 I $G(INSDEL) K ^PSRX(DA,"INS"),^PSRX(DA,"INS1") D DOLST^PSOORED3 K PSORXED("SIG") D EN^PSOFSIG(.PSORXED),UPDSIG^PSOORED3 G UPDX 127 I $O(^TMP($J,"INS1",0)) D 128 .K ^PSRX(DA,"INS"),^PSRX(DA,"INS1"),DD,PSORXED("SIG") 129 .F I=0:0 S I=$O(^TMP($J,"INS1",I)) Q:'I S (PSORXED("SIG",I),^PSRX(DA,"INS1",I,0))=^TMP($J,"INS1",I,0),DD=$G(DD)+1 130 .S ^PSRX(DA,"INS1",0)=^TMP($J,"INS1",0) 131 .I DD=1 S ^PSRX(DA,"INS")=^PSRX(DA,"INS1",1,0) 132 .D DOLST^PSOORED3,EN^PSOFSIG(.PSORXED),UPDSIG^PSOORED3 133 ; 134 UPDX ; 135 K DIE,DA,DR,FLD,X,Y,PSORXED("FLD"),DD,^TMP($J,"INS1") 136 KV K DIR,DIRUT,DTOUT,DUOUT 137 Q 138 UPD ;updates dosing array 139 S HENT=ENT 140 UPD1 ; 141 I $G(PSORXED("CONJUNCTION",(HENT+1)))]"" S PSORXED("CONJUNCTION",HENT)=PSORXED("CONJUNCTION",(HENT+1)) D G UPD 142 .K PSORXED("CONJUNCTION",(HENT+1)) 143 .I $D(PSORXED("DOSE",(HENT+2))) D 144 ..S PSORXED("DOSE",(HENT+1))=PSORXED("DOSE",(HENT+2)) 145 ..S PSORXED("ODOSE",(HENT+1))=$G(PSORXED("ODOSE",(HENT+2))) 146 ..S PSORXED("DOSE ORDERED",(HENT+1))=$G(PSORXED("DOSE ORDERED",(HENT+2))) 147 ..S PSORXED("UNITS",(HENT+1))=$G(PSORXED("UNITS",(HENT+2))) 148 ..S PSORXED("NOUN",(HENT+1))=$G(PSORXED("NOUN",(HENT+2))) 149 ..S PSORXED("DURATION",(HENT+1))=$G(PSORXED("DURATION",(HENT+2))) 150 ..S PSORXED("CONJUNCTION",(HENT+1))=$G(PSORXED("CONJUNCTION",(HENT+2))) 151 ..S PSORXED("ROUTE",(HENT+1))=$G(PSORXED("ROUTE",(HENT+2))) 152 ..S PSORXED("SCHEDULE",(HENT+1))=$G(PSORXED("SCHEDULE",(HENT+2))) 153 ..S PSORXED("VERB",(HENT+1))=$G(PSORXED("VERB",(HENT+2))) 154 ..K PSORXED("DOSE",(HENT+2)),PSORXED("ODOSE",(HENT+2)),PSORXED("DOSE ORDERED",(HENT+2)) 155 ..K PSORXED("UNITS",(HENT+2)),PSORXED("NOUN",(HENT+2)),PSORXED("DURATION",(HENT+2)),PSORXED("ROUTE",(HENT+2)),PSORXED("SCHEDULE",(HENT+2)),PSORXED("VERB",(HENT+2)) 156 .S HENT=HENT+1 157 F I=0:0 S I=$O(PSORXED("DOSE",I)) Q:'I S SENT=$G(SENT)+1 158 Q 159 ; 160 M1 D M1^PSOOREDX 161 Q 162 M2 D M2^PSOOREDX 163 Q 1 PSOORED6 ;BIR/SAB - edit orders from backdoor ;03/06/96 2 ;;7.0;OUTPATIENT PHARMACY;**78,104,117,133,143,219,148,247,268,260**;DEC 1997;Build 84 3 ;External reference to ^PSDRUG supported by DBIA 221 4 ;External reference to ^PS(50.7 supported by DBIA 2223 5 ;External reference ^PS(50.606 supported by DBIA 2174 6 DRG ;select drug 7 S PSORX("EDIT")=1,RX0HLD=RX0 8 S PSODRUG("IEN")=$S($G(PSODRUG("IEN"))]"":PSODRUG("IEN"),1:$P(RX0,"^",6)),PSODRUG("NAME")=$S($G(PSODRUG("NAME"))]"":PSODRUG("NAME"),1:$P(^PSDRUG($P(RX0,"^",6),0),"^")) 9 D ^PSODRG I PSODRUG("IEN")=$P(RX0,"^",6) K PSORXED("FLD",6) 10 D:PSODRUG("IEN")'=$P(RX0,"^",6) I $G(PSORX("DFLG")) K PSORXED("FLD",6) S PSORXED("DFLG")=1 Q 11 .D POST^PSODRG 12 .I '$O(^PSRX(PSORXED("IRXN"),1,0)) S PSORXED("FLD",17)=$G(PSODRUG("COST")) 13 .I $G(PSORX("DFLG")) K PSORXED("FLD",6),PSODRUG,PSOOIFLG,PSOSIGFL,VALMSG Q 14 .D KV S DIR(0)="Y",DIR("B")="YES" 15 .S DIR("A",1)="You have changed the dispense drug from" 16 .S DIR("A",2)=$P(^PSDRUG($P(PSORXED("RX0"),"^",6),0),"^")_" to "_$P(^PSDRUG(PSODRUG("IEN"),0),"^")_"." 17 .I $P($G(^PSRX(PSORXED("IRXN"),"SIG")),"^",2),$O(^PSRX(PSORXED("IRXN"),"SIG1",0)) S DIR("A",3)="" D 18 ..F I=0:0 S I=$O(^PSRX(PSORXED("IRXN"),"SIG1",I)) Q:'I S DIR("A",3+I)=$S(I=1:"Current SIG: ",1:"")_$G(^PSRX(PSORXED("IRXN"),"SIG1",I,0)) 19 .S DIR("A")="Do You want to Edit the SIG" 20 .D ^DIR K DIR I $D(DIRUT) S PSORX("DFLG")=1 D M1 21 .Q:$D(DIRUT)!('Y) 22 .S PSOREEDQ=1 D DOLST^PSOORED3,DOSE^PSOORED3 K PSOREEDQ 23 .I '$O(PSORXED("DOSE",0)) S PSORX("DFLG")=1 Q 24 .D:$G(PSOSIGFL) M2 25 S RX0=RX0HLD K RX0HLD I $G(PSODRUG("OI"))=$G(PSOI) D Q 26 .D:$O(^TMP("PSORXDC",$J,0)) 27 ..W !!,"This edit will discontinue the duplicate Rx & change the dispensed drug!" 28 ..K DIR,X,Y S DIR("A")="Do You Want to Proceed",DIR("B")="NO",DIR(0)="Y" 29 ..D ^DIR K DIR S:'Y!($D(DIRUT)) PSORXED("DFLG")=1 D:Y DCORD^PSONEW2 30 .Q:$G(PSORXED("DFLG")) 31 .I PSODRUG("IEN")'=$P(RX0,"^",6) D 32 ..S PSORXED("FLD",6)=PSODRUG("IEN"),PSORXED("FLD",39.2)=PSOI 33 .S:$G(PSODRUG("TRADE NAME"))]"" PSORXED("FLD",6.5)=PSODRUG("TRADE NAME") 34 .S:$G(PSODRUG("NDC"))]"" PSORXED("FLD",27)=PSODRUG("NDC") 35 .S:$G(PSODRUG("DAW"))]"" PSORXED("FLD",81)=PSODRUG("DAW") 36 W !!,"New Orderable Item selected. This edit will create a new prescription!",! D PAUSE^VALM1 S VALMSG="New Orderable Item selected. This edit will create a new prescription!" S (PSOOIFLG,PSOSIGFL)=1 37 Q 38 PSOCOU ;patient counseling 39 K DIC,DIQ S DIC=52,DA=PSORXED("IRXN"),DIQ="PSORXED",DR=41 D EN^DIQ1 K DIC,DIQ 40 D KV S DIR(0)="52,41" S:$G(PSORXED(52,DA,DR))]"" DIR("B")=PSORXED(52,DA,DR) D ^DIR K DIR,PSORXED(52,DA,DR) 41 I $D(DIRUT) K PSORXED("FLD",41) D KV Q 42 S PSORXED("FLD",DR)=Y D K DIRUT 43 .I Y D Q 44 ..K DIC,DIQ S DIC=52,DA=PSORXED("IRXN"),DIQ="PSORXED",DR=42 D EN^DIQ1 K DIC,DIQ 45 ..K DIR,DIRUT S DIR(0)="52,42" S:$G(PSORXED(52,DA,DR))]"" DIR("B")=PSORXED(52,DA,DR) D ^DIR K DIR,PSORXED(52,DA,DR) 46 ..I $D(DIRUT) K PSORXED("FLD",41),DUOUT,DTOUT Q 47 ..S PSORXED("FLD",42)=Y 48 .S PSORXED("FLD",41)=0,PSORXED("FLD",42)="@" 49 Q 50 PSOI ;select orderable item 51 W !!,"Current Orderable Item: "_$P(^PS(50.7,PSOI,0),"^")_" "_$P(^PS(50.606,$P(^(0),"^",2),0),"^") 52 S DIC("B")=$P(^PS(50.7,PSOI,0),"^"),DIC="^PS(50.7,",DIC(0)="AEMQZ" 53 S DIC("S")="I '$P(^PS(50.7,+Y,0),""^"",4)!($P(^(0),""^"",4)'<DT) N PSOF,PSOL S (PSOF,PSOL)=0 F S PSOL=$O(^PSDRUG(""ASP"",+Y,PSOL)) Q:PSOF!'PSOL " 54 S DIC("S")=DIC("S")_"I $P($G(^PSDRUG(PSOL,2)),U,3)[""O"",'$G(^(""I""))!($G(^(""I""))'<DT) S PSOF=1" D ^DIC I "^"[X S PSORXED("DFLG")=1 Q 55 G:Y<1 PSOI Q:PSOI=+Y 56 S PSODRUG("OI")=+Y,PSODRUG("OIN")=Y(0,0) K DIC 57 I PSOI'=PSODRUG("OI") W !!,"New Orderable Item selected. This edit will create a new prescription!",! D K PSHOLDD Q 58 .D PAUSE^VALM1,M2 59 .S PSHOLDD=$G(PSODRUG("IEN")) K PSODRUG("IEN"),PSODRUG("NAME") S PSODRUG("DEA")="",(PSOOIFLG,PSOSIGFL)=1 60 .D DREN^PSOORNW2 61 .I $G(PSHOLDD),$G(PSODRUG("IEN")),$G(PSHOLDD)'=$G(PSODRUG("IEN")) D Q:$G(PSORX("DFLG")) 62 ..D FULL^VALM1,POST^PSODRG S VALMBCK="R" 63 ..I $G(PSORX("DFLG")) K PSODRUG S PSODRUG("IEN")=$G(PSHOLDD),PSODRUG("NAME")=$P($G(^PSDRUG(PSODRUG("IEN"),0)),"^") K PSOOIFLG,PSOSIGFL S VALMSG="" 64 .I '$G(PSODRUG("IEN")) W !!,"DRUG NAME REQUIRED!" D 2^PSOORNW1 65 .I '$G(PSODRUG("IEN")) K PSORXED("FLD"),INDEL,^TMP($J,"INS1"),PSOSIGFL,VALMSG S PSORXED("DFLG")=1,VALMSG="Dispense Drug NOT Selected!" Q 66 .D KV S DIR(0)="Y",DIR("B")="NO",DIR("A",1)="You have changed the Orderable Item from",DIR("A",2)=$P(^PS(50.7,PSOI,0),"^")_" to "_PSODRUG("OIN")_".",DIR("A")="Do You want to Edit the SIG" 67 .D ^DIR K DIR I $D(DIRUT) K PSODRUG("OIN"),PSOOIFLG,PSOSIGFL S PSODRUG("OI")=PSOI,VALMSG="",PSORX("DFLG")=1 Q 68 .I 'Y S PSORX("DFLG")=1 Q 69 .S PSOREEDQ=1 D DOLST^PSOORED3,DOSE^PSOORED3 K PSOREEDQ 70 .I '$O(PSORXED("DOSE",0)) S PSORX("DFLG")=1 Q 71 .D:$G(PSOSIGFL) M2 72 S PSORXED("FLD",39.2)=PSOI 73 Q 74 NCPDP ;Reverse previously billed Rx on an edited orderable item or drug. 75 N RX,NPSOY 76 S RX=$G(PSORXED("IRXN")) I RX="" D 77 . S NPSOY=$O(PSONEW("OLD LAST RX#","")),NPSOY=$G(PSONEW("OLD LAST RX#",NPSOY)),RX=$O(^PSRX("B",NPSOY,RX)) 78 I 'RX Q 79 D REVERSE^PSOBPSU1(RX,,"DC",7) S NCPDPFLG=0 80 Q 81 UPDATE ;add new data to file 82 N RXREF,UPDATE,FLDS,CHGNDC 83 Q:'$G(PSORXED("IRXN")) 84 I $O(PSORXED("FLD",0))!($G(^TMP($J,"INS1",0))]"")!($G(INSDEL))!($O(PSORXED("ODOSE",0))) D G:'Y UPDX 85 .K DIR,DIRUT,DTOUT,DUOUT 86 .S DIR(0)="Y",DIR("A")="Are You Sure You Want to Update Rx "_$P(^PSRX(PSORXED("IRXN"),0),"^"),DIR("B")="Yes" 87 .D ^DIR K DIR I 'Y D M1 Q 88 .I $D(^PSRX(PSORXED("IRXN"),1,0)) D 89 ..S RXREF=$P(^PSRX(PSORXED("IRXN"),0),"^",9)-$P(^PSRX(PSORXED("IRXN"),1,0),"^",4) 90 .E S RXREF=0 91 .K X,DIRUT,DUOUT,DTOUT 92 I $D(PSORXED("FLD",39.3)) D UPDATE^PSODIAG ;update ICD's after edit 93 ; - Retrieving fields before changes that are relevant for 3rd Party Billing 94 D GETS^DIQ(52,PSORXED("IRXN")_",","4;7;8;20;22;27;81","I","FLDS") 95 K Y S DA=PSORXED("IRXN"),DIE="^PSRX(",FLD=0 96 F S FLD=$O(PSORXED("FLD",FLD)) Q:'FLD D 97 .I FLD=12!(FLD=24)!(FLD=35) D Q 98 ..I FLD=12,PSORXED("FLD",12)="@" S $P(^PSRX(DA,3),"^",7)="" Q 99 ..I FLD=12,PSORXED("FLD",12)]"" S $P(^PSRX(DA,3),"^",7)=PSORXED("FLD",12) Q 100 ..I FLD=24,PSORXED("FLD",24)="@" S $P(^PSRX(DA,2),"^",4)="" Q 101 ..I FLD=24,PSORXED("FLD",24)]"" S $P(^PSRX(DA,2),"^",4)=PSORXED("FLD",24) Q 102 ..I FLD=35,PSORXED("FLD",35)="@" S $P(^PSRX(DA,"MP"),"^")="" Q 103 ..I FLD=35,PSORXED("FLD",35)]"" S $P(^PSRX(DA,"MP"),"^")=PSORXED("FLD",35) Q 104 .I FLD=114 D Q 105 ..I PSORXED("FLD",114)="@" K ^PSRX(DA,"INS"),^PSRX(DA,"INS1") 106 ..I PSORXED("FLD",114)'="@" D 107 ...S ^PSRX(DA,"INS")=PSORXED("FLD",114) 108 ...S X=PSORXED("FLD",114) D SIG^PSOHELP Q:$G(INS1)']"" 109 ...S PSORXED("SIG",1)=$E(INS1,2,9999999) K ^PSRX(DA,"INS1") 110 ...S ^PSRX(DA,"INS1",0)="^52.0115^1^1^"_DT_"^^" 111 ...S ^PSRX(DA,"INS1",1,0)=PSORXED("SIG",1) 112 ..D DOLST^PSOORED3 K:PSORXED("FLD",114)="@" PSORXED("SIG") D EN^PSOFSIG(.PSORXED),UPDSIG^PSOORED3 113 .I FLD=27 D Q 114 ..I PSORXED("FLD",27)'=$$GETNDC^PSONDCUT(DA,0) D 115 ...S CHGNDC=1 D RXACT^PSOBPSU2(DA,0,"NDC changed from "_$$GETNDC^PSONDCUT(DA,0)_" to "_PSORXED("FLD",27)_".","E") 116 ..D SAVNDC^PSONDCUT(DA,0,PSORXED("FLD",27),0,1) 117 .I FLD=81 D SAVDAW^PSODAWUT(DA,0,PSORXED("FLD",81)) Q 118 .S DR=FLD_"////"_PSORXED("FLD",FLD) D ^DIE 119 .I FLD=4 D UDPROV^PSOOREDT Q 120 ; 121 ; - Re-submitting Rx to ECME due to edits 122 D RESUB^PSOORED7 123 ; 124 I $G(INSDEL) K ^PSRX(DA,"INS"),^PSRX(DA,"INS1") D DOLST^PSOORED3 K PSORXED("SIG") D EN^PSOFSIG(.PSORXED),UPDSIG^PSOORED3 G UPDX 125 I $O(^TMP($J,"INS1",0)) D 126 .K ^PSRX(DA,"INS"),^PSRX(DA,"INS1"),DD,PSORXED("SIG") 127 .F I=0:0 S I=$O(^TMP($J,"INS1",I)) Q:'I S (PSORXED("SIG",I),^PSRX(DA,"INS1",I,0))=^TMP($J,"INS1",I,0),DD=$G(DD)+1 128 .S ^PSRX(DA,"INS1",0)=^TMP($J,"INS1",0) 129 .I DD=1 S ^PSRX(DA,"INS")=^PSRX(DA,"INS1",1,0) 130 .D DOLST^PSOORED3,EN^PSOFSIG(.PSORXED),UPDSIG^PSOORED3 131 ; 132 UPDX ; 133 K DIE,DA,DR,FLD,X,Y,PSORXED("FLD"),DD,^TMP($J,"INS1") 134 KV K DIR,DIRUT,DTOUT,DUOUT 135 Q 136 UPD ;updates dosing array 137 S HENT=ENT 138 UPD1 ; 139 I $G(PSORXED("CONJUNCTION",(HENT+1)))]"" S PSORXED("CONJUNCTION",HENT)=PSORXED("CONJUNCTION",(HENT+1)) D G UPD 140 .K PSORXED("CONJUNCTION",(HENT+1)) 141 .I $D(PSORXED("DOSE",(HENT+2))) D 142 ..S PSORXED("DOSE",(HENT+1))=PSORXED("DOSE",(HENT+2)) 143 ..S PSORXED("ODOSE",(HENT+1))=$G(PSORXED("ODOSE",(HENT+2))) 144 ..S PSORXED("DOSE ORDERED",(HENT+1))=$G(PSORXED("DOSE ORDERED",(HENT+2))) 145 ..S PSORXED("UNITS",(HENT+1))=$G(PSORXED("UNITS",(HENT+2))) 146 ..S PSORXED("NOUN",(HENT+1))=$G(PSORXED("NOUN",(HENT+2))) 147 ..S PSORXED("DURATION",(HENT+1))=$G(PSORXED("DURATION",(HENT+2))) 148 ..S PSORXED("CONJUNCTION",(HENT+1))=$G(PSORXED("CONJUNCTION",(HENT+2))) 149 ..S PSORXED("ROUTE",(HENT+1))=$G(PSORXED("ROUTE",(HENT+2))) 150 ..S PSORXED("SCHEDULE",(HENT+1))=$G(PSORXED("SCHEDULE",(HENT+2))) 151 ..S PSORXED("VERB",(HENT+1))=$G(PSORXED("VERB",(HENT+2))) 152 ..K PSORXED("DOSE",(HENT+2)),PSORXED("ODOSE",(HENT+2)),PSORXED("DOSE ORDERED",(HENT+2)) 153 ..K PSORXED("UNITS",(HENT+2)),PSORXED("NOUN",(HENT+2)),PSORXED("DURATION",(HENT+2)),PSORXED("ROUTE",(HENT+2)),PSORXED("SCHEDULE",(HENT+2)),PSORXED("VERB",(HENT+2)) 154 .S HENT=HENT+1 155 F I=0:0 S I=$O(PSORXED("DOSE",I)) Q:'I S SENT=$G(SENT)+1 156 Q 157 ; 158 M1 D M1^PSOOREDX 159 Q 160 M2 D M2^PSOOREDX 161 Q
Note:
See TracChangeset
for help on using the changeset viewer.