Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

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
     1PSOORED6 ;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
     6DRG ;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
     38PSOCOU ;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
     50PSOI ;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
     74NCPDP ;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
     81UPDATE ;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 ;
     132UPDX ;
     133 K DIE,DA,DR,FLD,X,Y,PSORXED("FLD"),DD,^TMP($J,"INS1")
     134KV K DIR,DIRUT,DTOUT,DUOUT
     135 Q
     136UPD ;updates dosing array
     137 S HENT=ENT
     138UPD1 ;
     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 ;
     158M1 D M1^PSOOREDX
     159 Q
     160M2 D M2^PSOOREDX
     161 Q
Note: See TracChangeset for help on using the changeset viewer.