Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSONEW

PSONEW.m

Go to the documentation of this file.
  1. PSONEW ;BIR/SAB-new rx order main driver ;05-Jun-2013 15:42;DU
  1. ;;7.0;OUTPATIENT PHARMACY;**11,27,32,46,94,130,1013,268,225,1015,1017**;DEC 1997;Build 40
  1. ;External references L and UL^PSSLOCK supported by DBIA 2789
  1. ;External reference to ^VA(200 supported by DBIA 224
  1. ;External reference to ^XUSEC supported by DBIA 10076
  1. ;External reference to ^ORX1 supported by DBIA 2186
  1. ;External reference to ^ORX2 supported by DBIA 867
  1. ;External reference to ^TIUEDIT supported by DBIA 2410
  1. ;---------------------------------------------------------------
  1. ; Modified - IHS/CIA/PLS - 01/02/04 - Line AGAIN+10 and COUN+2
  1. ; IHS/MSC/PLS - 09/21/11 - Line DIR+2
  1. ; 10/28/11 - Line AGAIN+10
  1. ; 06/05/13 - Line DIR+4
  1. OERR ;backdoor new rx for v7
  1. K PSOREEDT,COPY,SPEED,PSOEDIT,DUR,DRET
  1. S PSOPLCK=$$L^PSSLOCK(PSODFN,0) I '$G(PSOPLCK) D LOCK^PSOORCPY 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.") K PSOPLCK S VALMBCK="" Q
  1. K PSOPLCK S X=PSODFN_";DPT(" D LK^ORX2 I 'Y S VALMSG="Another person is entering orders for this patient.",VALMBCK="" D UL^PSSLOCK(PSODFN) Q
  1. AGAIN N VALMCNT K PSODRUG,PSOCOU,PSOCOUU,PSONOOR,PSORX("FN") W ! D HLDHDR^PSOLMUTL S (PSONEW("QFLG"),PSONEW("DFLG"))=0,PSOFROM="NEW",PSONOEDT=1
  1. K ORD D FULL^VALM1,^PSONEW1 ; Continue order entry
  1. I PSONEW("QFLG") G END
  1. I PSONEW("DFLG") W !,$C(7),"RX DELETED",! S:$G(POERR) POERR("DFLG")=1,VALMBCK="Q" G END
  1. D:$P($G(PSOPAR),"^",7)=1 AUTO^PSONRXN I $P($G(PSOPAR),"^",7)'=1 S PSOX=PSONEW("RX #") D CHECK^PSONRXN
  1. I PSONEW("DFLG")!PSONEW("QFLG") D DEL S:$G(POERR) POERR("DFLG")=1,VALMBCK="R" G END
  1. D NOOR I PSONEW("DFLG") D DEL G END
  1. D ^PSONEW2 I PSONEW("DFLG") D DEL S:$G(POERR) POERR("DFLG")=1,VALMBCK="R" G END ; Asks if correct
  1. G:$G(PSORX("FN")) END
  1. D EN^PSON52(.PSONEW) ; Files entry in File 52
  1. D EN^APSPPCC1(PSODFN,PSONEW("IRXN")) ;P1013 - prompt for POV
  1. I $G(APSP("CM"))]"" S $P(^PSRX(PSONEW("IRXN"),9999999),"^",2)=APSP("CM") ; IHS/CIA/PLS - 01/02/04 Set chronic med
  1. I $D(P(99)) S $P(^PSRX(PSONEW("IRXN"),9999999),"^")=+P(99) ; IHS/CIA/PLS - 01/02/04 Set Expiration Date
  1. D NPSOSD^PSOUTIL(.PSONEW) ; Adds newly added rx to PSOSD array
  1. S VALMBCK="R"
  1. END D EOJ ; Clean up
  1. I '$G(PSORX("FN")) W ! K DIR,DIRUT,DUOUT,DTOUT S DIR(0)="Y",DIR("B")="YES",DIR("A")="Another New Order for "_PSORX("NAME") D ^DIR K DIR,DIRUT,DUOUT,DTOUT I Y K PSONEW,PSDRUG,ORD G AGAIN
  1. D ^PSOBUILD,BLD^PSOORUT1 S X=PSODFN_";DPT(" D ULK^ORX2 D UL^PSSLOCK(PSODFN)
  1. D RV^PSOORFL
  1. S VALMBCK="R" K PSORX("FN") Q
  1. ;----------------------------------------------------------------
  1. DEL ;
  1. W !,$C(7),"RX DELETED",!
  1. I $P($G(PSOPAR),"^",7)=1 D
  1. . S DIE="^PS(59,",DA=PSOSITE,PSOY=$O(PSONEW("OLD LAST RX#",""))
  1. . S PSOX=PSONEW("OLD LAST RX#",PSOY)
  1. . L +^PS(59,+PSOSITE,PSOY):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
  1. . S DR=$S(PSOY=8:"2003////"_PSOX,PSOY=3:"1002.1////"_PSOX,1:"2003////"_PSOX)
  1. . D:PSOX<$P(^PS(59,+PSOSITE,PSOY),"^",3) ^DIE K DIE,X,Y
  1. . L -^PS(59,+PSOSITE,PSOY)
  1. . K PSOX,PSOY Q
  1. EOJ ;
  1. I $D(PSONEW("RX #")) L -^PSRX("B",PSONEW("RX #")) ; +Lock set in PSONRXN
  1. K PSONOEDT,PSONEW,PSODRUG,ANQDATA,LSI,C,MAX,MIN,NDF,REF,SIG,SER,PSOFLAG,PSOHI,PSOLO,PSONOOR,PSOCOUU,PSOCOU,PSORX("EDIT")
  1. D CLEAN^PSOVER1
  1. K ^TMP("PSORXDC",$J),RORD,ACOM,ACNT,CRIT,DEF,F1,GG,I1,IEN,INDT,LAST,MSG,NIEN,STA,DUR,DRET,PSOPRC
  1. S RXN=$O(^TMP("PSORXN",$J,0)) I RXN D
  1. .S RXN1=^TMP("PSORXN",$J,RXN) D EN^PSOHLSN1(RXN,$P(RXN1,"^"),$P(RXN1,"^",2),"",$P(RXN1,"^",3))
  1. .I $P(^PSRX(RXN,"STA"),"^")=5 D EN^PSOHLSN1(RXN,"SC","ZS","")
  1. K RXN,RXN1,^TMP("PSORXN",$J)
  1. I $G(PSONOTE) D FULL^VALM1,MAIN^TIUEDIT(3,.TIUDA,PSODFN,"","","","",1)
  1. K PSONOTE
  1. Q
  1. NOOR ;asks nature of order
  1. N PSONOODF
  1. S PSONOODF=0
  1. I $G(OR0) D G NOORX ;front door
  1. .S PSOI=$S($G(PSOSIGFL):1,$G(PSODRUG("OI"))'=$P(OR0,"^",8):1,1:0) I 'PSOI S PSONOOR="" D:$D(^XUSEC("PSORPH",DUZ)) COUN Q ;NoO $P(OR0,"^",7)
  1. .S PSONOODF=1
  1. .D DIR I $D(DIRUT) S PSONEW("DFLG")=1 Q
  1. .S PSONOOR=Y D:$D(^XUSEC("PSORPH",DUZ)) COUN K DIR,DTOUT,DTOUT,DIRUT
  1. ;backdoor order
  1. D DIR I $D(DIRUT) S PSONEW("DFLG")=1 Q
  1. S PSONOOR=Y K DIK,DA,DIE,DR,PSOI,DIR,DUOUT,DTOUT,DIRUT
  1. G:'$D(^XUSEC("PSORPH",DUZ)) NOORX
  1. COUN ;patient counseling
  1. G:$G(PSORX("EDIT"))&('$G(PSOSIGFL)) NOORX K DIR,DUOUT,DTOUT,DIRUT
  1. ; IHS/CIA/PLS - 01/15/04/ - Skip Counsel prompt if IHS
  1. I $G(DUZ("AG"))="I" S PSOCOU="",PSOCOUU=0 G PRONTE
  1. S DIR("B")="NO",DIR(0)="52,41" D ^DIR S PSOCOU=$S(Y:Y,1:0)
  1. I $D(DIRUT)!('PSOCOU) S PSOCOUU=0 D:'$G(SPEED) PRONTE Q
  1. K:'$G(PSOCOU) PSOCOUU K DIR,DUOUT,DTOUT,DIRUT I Y S DIR(0)="52,42",DIR("B")="NO" D ^DIR S PSOCOUU=$S(Y:Y,1:0)
  1. PRONTE K PSONOTE,DIR,DIRUT,DUOUT
  1. I $T(MAIN^TIUEDIT)]"",'$G(SPEED) D K DIR,DIRUT,DUOUT
  1. .S DIR(0)="Y",DIR("B")="No",DIR("A")="Do you want to enter a Progress Note",DIR("A",1)="" D ^DIR K DIR
  1. .S PSONOTE=+Y Q ;I 'Y!($D(DIRUT)) Q
  1. NOORX K X,Y,DIR,DUOUT,DTOUT,DIRUT
  1. Q
  1. DIR ;ask nature of order
  1. K DIR,DTOUT,DTOUT,DIRUT I $T(NA^ORX1)]"" D Q
  1. .;S PSONOOR=$$NA^ORX1($S($G(PSONOODF)!($G(PSONOBCK)):"S",1:"W"),0,"B","Nature of Order",0,"WPSDIVR"_$S(+$G(^VA(200,DUZ,"PS")):"E",1:"")) ;IHS/MSC/PLS - 09/21/11 Commented out line
  1. .;S PSONOOR=$$NA^ORX1($S($G(PSONOODF)!($G(PSONOBCK)):"S",1:$$GET1^DIQ(100.02,$$GET1^DIQ(9009033,PSOSITE,407,"I"),.02)),0,"B","Nature of Order",0,"WPSDIVR"_$S(+$G(^VA(200,DUZ,"PS")):"E",1:"")) ;IHS/MSC/PLS - 09/21/11
  1. .S PSONOOR=$$NA^ORX1($S($G(PSONOODF)!($G(PSONOBCK)):"S",1:$$GET1^DIQ(100.02,$$GET1^DIQ(9009033,PSOSITE,407,"I"),.02)),0,"B","Nature of Order",0,"WPSDIV"_$S(+$G(^VA(200,DUZ,"PS")):"E",1:"")) ;IHS/MSC/PLS - 06/05/13
  1. .I +PSONOOR S (Y,PSONOOR)=$P(PSONOOR,"^",3) Q
  1. .S DIRUT=1 K PSONOOR
  1. I $D(PSONOOR) S DF=PSONOOR,PSONODF=$S(DF="E":"PROVIDER ENTERED",DF="V":"VERBAL",DF="P":"TELEPHONE",DF="D":"DUPLICATE",DF="S":"SERVICE CORRECTED",DF="I":"POLICY",DF="R":"SERVICE REJECTED",1:"WRITTEN")
  1. K DIR,DTOUT,DTOUT,DIRUT S DIR("A")="Nature of Order: ",DIR("B")=$S($D(PSONOOR):PSONODF,1:"WRITTEN")
  1. S DIR(0)="SA^W:WRITTEN;V:VERBAL;P:TELEPHONE;S:SERVICE CORRECTED;D:DUPLICATE;I:POLICY;R:SERVICE REJECTED"_$S(+$G(^VA(200,DUZ,"PS")):";E:PROVIDER ENTERED",1:"")
  1. D ^DIR K DF,PSONODF Q:$D(DIRUT) S PSONOOR=Y
  1. DIRX Q
  1. ;
  1. NOORE(PSONEW) ;entry point for renew
  1. D NOOR I $D(DIRUT) S PSONEW("DFLG")=1 Q
  1. S PSONEW("NOO")=PSONOOR
  1. Q