- 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/PSONEW.m
r613 r623 1 PSONEW ;BIR/SAB-new rx order main driver ;07/26/96 2 ;;7.0;OUTPATIENT PHARMACY;**11,27,32,46,94,130,268,225**;DEC 1997;Build 29 3 ;External references L and UL^PSSLOCK supported by DBIA 2789 4 ;External reference to ^VA(200 supported by DBIA 224 5 ;External reference to ^XUSEC supported by DBIA 10076 6 ;External reference to ^ORX1 supported by DBIA 2186 7 ;External reference to ^ORX2 supported by DBIA 867 8 ;External reference to ^TIUEDIT supported by DBIA 2410 9 ;--------------------------------------------------------------- 10 OERR ;backdoor new rx for v7 11 K PSOREEDT,COPY,SPEED,PSOEDIT,DUR,DRET 12 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 13 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 14 AGAIN N VALMCNT K PSODRUG,PSOCOU,PSOCOUU,PSONOOR,PSORX("FN") W ! D HLDHDR^PSOLMUTL S (PSONEW("QFLG"),PSONEW("DFLG"))=0,PSOFROM="NEW",PSONOEDT=1 15 K ORD D FULL^VALM1,^PSONEW1 ; Continue order entry 16 I PSONEW("QFLG") G END 17 I PSONEW("DFLG") W !,$C(7),"RX DELETED",! S:$G(POERR) POERR("DFLG")=1,VALMBCK="Q" G END 18 D:$P($G(PSOPAR),"^",7)=1 AUTO^PSONRXN I $P($G(PSOPAR),"^",7)'=1 S PSOX=PSONEW("RX #") D CHECK^PSONRXN 19 I PSONEW("DFLG")!PSONEW("QFLG") D DEL S:$G(POERR) POERR("DFLG")=1,VALMBCK="R" G END 20 D NOOR I PSONEW("DFLG") D DEL G END 21 D ^PSONEW2 I PSONEW("DFLG") D DEL S:$G(POERR) POERR("DFLG")=1,VALMBCK="R" G END ; Asks if correct 22 G:$G(PSORX("FN")) END 23 D EN^PSON52(.PSONEW) ; Files entry in File 52 24 D NPSOSD^PSOUTIL(.PSONEW) ; Adds newly added rx to PSOSD array 25 S VALMBCK="R" 26 END D EOJ ; Clean up 27 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 28 D ^PSOBUILD,BLD^PSOORUT1 S X=PSODFN_";DPT(" D ULK^ORX2 D UL^PSSLOCK(PSODFN) 29 D RV^PSOORFL 30 S VALMBCK="R" K PSORX("FN") Q 31 ;---------------------------------------------------------------- 32 DEL ; 33 W !,$C(7),"RX DELETED",! 34 I $P($G(PSOPAR),"^",7)=1 D 35 . S DIE="^PS(59,",DA=PSOSITE,PSOY=$O(PSONEW("OLD LAST RX#","")) 36 . S PSOX=PSONEW("OLD LAST RX#",PSOY) 37 . L +^PS(59,+PSOSITE,PSOY):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) 38 . S DR=$S(PSOY=8:"2003////"_PSOX,PSOY=3:"1002.1////"_PSOX,1:"2003////"_PSOX) 39 . D:PSOX<$P(^PS(59,+PSOSITE,PSOY),"^",3) ^DIE K DIE,X,Y 40 . L -^PS(59,+PSOSITE,PSOY) 41 . K PSOX,PSOY Q 42 EOJ ; 43 I $D(PSONEW("RX #")) L -^PSRX("B",PSONEW("RX #")) ; +Lock set in PSONRXN 44 K PSONOEDT,PSONEW,PSODRUG,ANQDATA,LSI,C,MAX,MIN,NDF,REF,SIG,SER,PSOFLAG,PSOHI,PSOLO,PSONOOR,PSOCOUU,PSOCOU,PSORX("EDIT") 45 D CLEAN^PSOVER1 46 K ^TMP("PSORXDC",$J),RORD,ACOM,ACNT,CRIT,DEF,F1,GG,I1,IEN,INDT,LAST,MSG,NIEN,STA,DUR,DRET,PSOPRC 47 S RXN=$O(^TMP("PSORXN",$J,0)) I RXN D 48 .S RXN1=^TMP("PSORXN",$J,RXN) D EN^PSOHLSN1(RXN,$P(RXN1,"^"),$P(RXN1,"^",2),"",$P(RXN1,"^",3)) 49 .I $P(^PSRX(RXN,"STA"),"^")=5 D EN^PSOHLSN1(RXN,"SC","ZS","") 50 K RXN,RXN1,^TMP("PSORXN",$J) 51 I $G(PSONOTE) D FULL^VALM1,MAIN^TIUEDIT(3,.TIUDA,PSODFN,"","","","",1) 52 K PSONOTE 53 Q 54 NOOR ;asks nature of order 55 N PSONOODF 56 S PSONOODF=0 57 I $G(OR0) D G NOORX ;front door 58 .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) 59 .S PSONOODF=1 60 .D DIR I $D(DIRUT) S PSONEW("DFLG")=1 Q 61 .S PSONOOR=Y D:$D(^XUSEC("PSORPH",DUZ)) COUN K DIR,DTOUT,DTOUT,DIRUT 62 ;backdoor order 63 D DIR I $D(DIRUT) S PSONEW("DFLG")=1 Q 64 S PSONOOR=Y K DIK,DA,DIE,DR,PSOI,DIR,DUOUT,DTOUT,DIRUT 65 G:'$D(^XUSEC("PSORPH",DUZ)) NOORX 66 COUN ;patient counseling 67 G:$G(PSORX("EDIT"))&('$G(PSOSIGFL)) NOORX K DIR,DUOUT,DTOUT,DIRUT 68 S DIR("B")="NO",DIR(0)="52,41" D ^DIR S PSOCOU=$S(Y:Y,1:0) 69 I $D(DIRUT)!('PSOCOU) S PSOCOUU=0 D:'$G(SPEED) PRONTE Q 70 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) 71 PRONTE K PSONOTE,DIR,DIRUT,DUOUT 72 I $T(MAIN^TIUEDIT)]"",'$G(SPEED) D K DIR,DIRUT,DUOUT 73 .S DIR(0)="Y",DIR("B")="No",DIR("A")="Do you want to enter a Progress Note",DIR("A",1)="" D ^DIR K DIR 74 .S PSONOTE=+Y Q ;I 'Y!($D(DIRUT)) Q 75 NOORX K X,Y,DIR,DUOUT,DTOUT,DIRUT 76 Q 77 DIR ;ask nature of order 78 K DIR,DTOUT,DTOUT,DIRUT I $T(NA^ORX1)]"" D Q 79 .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:"")) 80 .I +PSONOOR S (Y,PSONOOR)=$P(PSONOOR,"^",3) Q 81 .S DIRUT=1 K PSONOOR 82 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") 83 K DIR,DTOUT,DTOUT,DIRUT S DIR("A")="Nature of Order: ",DIR("B")=$S($D(PSONOOR):PSONODF,1:"WRITTEN") 84 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:"") 85 D ^DIR K DF,PSONODF Q:$D(DIRUT) S PSONOOR=Y 86 DIRX Q 87 ; 88 NOORE(PSONEW) ;entry point for renew 89 D NOOR I $D(DIRUT) S PSONEW("DFLG")=1 Q 90 S PSONEW("NOO")=PSONOOR 91 Q 1 PSONEW ;BIR/SAB-new rx order main driver ; 11/5/06 6:35pm 2 ;;7.0;OUTPATIENT PHARMACY;**11,27,32,46,94,130,268,208**;DEC 1997;Build 39 3 ; Modified from FOIA VISTA, 4 ; Copyright (C) 2007 WorldVistA 5 ; 6 ; This program is free software; you can redistribute it and/or modify 7 ; it under the terms of the GNU General Public License as published by 8 ; the Free Software Foundation; either version 2 of the License, or 9 ; (at your option) any later version. 10 ; 11 ; This program is distributed in the hope that it will be useful, 12 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 13 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 ; GNU General Public License for more details. 15 ; 16 ; You should have received a copy of the GNU General Public License 17 ; along with this program; if not, write to the Free Software 18 ; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 ;External references L and UL^PSSLOCK supported by DBIA 2789 20 ;External reference to ^VA(200 supported by DBIA 224 21 ;External reference to ^XUSEC supported by DBIA 10076 22 ;External reference to ^ORX1 supported by DBIA 2186 23 ;External reference to ^ORX2 supported by DBIA 867 24 ;External reference to ^TIUEDIT supported by DBIA 2410 25 ;--------------------------------------------------------------- 26 OERR ;backdoor new rx for v7 27 K PSOREEDT,COPY,SPEED,PSOEDIT,DUR,DRET 28 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 29 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 30 AGAIN N VALMCNT K PSODRUG,PSOCOU,PSOCOUU,PSONOOR,PSORX("FN") W ! D HLDHDR^PSOLMUTL S (PSONEW("QFLG"),PSONEW("DFLG"))=0,PSOFROM="NEW",PSONOEDT=1 31 K ORD D FULL^VALM1,^PSONEW1 ; Continue order entry 32 I PSONEW("QFLG") G END 33 I PSONEW("DFLG") W !,$C(7),"RX DELETED",! S:$G(POERR) POERR("DFLG")=1,VALMBCK="Q" G END 34 D:$P($G(PSOPAR),"^",7)=1 AUTO^PSONRXN I $P($G(PSOPAR),"^",7)'=1 S PSOX=PSONEW("RX #") D CHECK^PSONRXN 35 I PSONEW("DFLG")!PSONEW("QFLG") D DEL S:$G(POERR) POERR("DFLG")=1,VALMBCK="R" G END 36 D NOOR I PSONEW("DFLG") D DEL G END 37 D ^PSONEW2 I PSONEW("DFLG") D DEL S:$G(POERR) POERR("DFLG")=1,VALMBCK="R" G END ; Asks if correct 38 G:$G(PSORX("FN")) END 39 D EN^PSON52(.PSONEW) ; Files entry in File 52 40 D NPSOSD^PSOUTIL(.PSONEW) ; Adds newly added rx to PSOSD array 41 S VALMBCK="R" 42 END D EOJ ; Clean up 43 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 44 D ^PSOBUILD,BLD^PSOORUT1 S X=PSODFN_";DPT(" D ULK^ORX2 D UL^PSSLOCK(PSODFN) 45 S VALMBCK="R" K PSORX("FN") Q 46 ;---------------------------------------------------------------- 47 DEL ; 48 W !,$C(7),"RX DELETED",! 49 I $P($G(PSOPAR),"^",7)=1 D 50 . S DIE="^PS(59,",DA=PSOSITE,PSOY=$O(PSONEW("OLD LAST RX#","")) 51 . S PSOX=PSONEW("OLD LAST RX#",PSOY) 52 . L +^PS(59,+PSOSITE,PSOY):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) 53 . S DR=$S(PSOY=8:"2003////"_PSOX,PSOY=3:"1002.1////"_PSOX,1:"2003////"_PSOX) 54 . D:PSOX<$P(^PS(59,+PSOSITE,PSOY),"^",3) ^DIE K DIE,X,Y 55 . L -^PS(59,+PSOSITE,PSOY) 56 . K PSOX,PSOY Q 57 EOJ ; 58 I $D(PSONEW("RX #")) L -^PSRX("B",PSONEW("RX #")) ; +Lock set in PSONRXN 59 K PSONOEDT,PSONEW,PSODRUG,ANQDATA,LSI,C,MAX,MIN,NDF,REF,SIG,SER,PSOFLAG,PSOHI,PSOLO,PSONOOR,PSOCOUU,PSOCOU,PSORX("EDIT") 60 D CLEAN^PSOVER1 61 K ^TMP("PSORXDC",$J),RORD,ACOM,ACNT,CRIT,DEF,F1,GG,I1,IEN,INDT,LAST,MSG,NIEN,STA,DUR,DRET,PSOPRC 62 S RXN=$O(^TMP("PSORXN",$J,0)) I RXN D 63 .S RXN1=^TMP("PSORXN",$J,RXN) D EN^PSOHLSN1(RXN,$P(RXN1,"^"),$P(RXN1,"^",2),"",$P(RXN1,"^",3)) 64 .I $P(^PSRX(RXN,"STA"),"^")=5 D EN^PSOHLSN1(RXN,"SC","ZS","") 65 K RXN,RXN1,^TMP("PSORXN",$J) 66 I $G(PSONOTE) D FULL^VALM1,MAIN^TIUEDIT(3,.TIUDA,PSODFN,"","","","",1) 67 K PSONOTE 68 Q 69 NOOR ;asks nature of order 70 N PSONOODF 71 S PSONOODF=0 72 I $G(OR0) D G NOORX ;front door 73 .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) 74 .S PSONOODF=1 75 .D DIR I $D(DIRUT) S PSONEW("DFLG")=1 Q 76 .S PSONOOR=Y D:$D(^XUSEC("PSORPH",DUZ)) COUN K DIR,DTOUT,DTOUT,DIRUT 77 ;backdoor order 78 D DIR I $D(DIRUT) S PSONEW("DFLG")=1 Q 79 S PSONOOR=Y K DIK,DA,DIE,DR,PSOI,DIR,DUOUT,DTOUT,DIRUT 80 G:'$D(^XUSEC("PSORPH",DUZ)) NOORX 81 COUN ;patient counseling 82 G:$G(PSORX("EDIT"))&('$G(PSOSIGFL)) NOORX K DIR,DUOUT,DTOUT,DIRUT 83 I $G(PSOAFYN)'="Y" S DIR("B")="NO",DIR(0)="52,41" D ^DIR S PSOCOU=$S(Y:Y,1:0) ;vfam 84 I $G(PSOAFYN)="Y" S PSOCOU=0 ;vfam No Patient Counseling by AutoFinihs 85 I $D(DIRUT)!('PSOCOU) S PSOCOUU=0 D:'$G(SPEED) PRONTE Q 86 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) 87 PRONTE K PSONOTE,DIR,DIRUT,DUOUT 88 I $T(MAIN^TIUEDIT)]"",'$G(SPEED) D K DIR,DIRUT,DUOUT 89 .I $G(PSOAFYN)'="Y" S DIR(0)="Y",DIR("B")="No",DIR("A")="Do you want to enter a Progress Note",DIR("A",1)="" D ^DIR K DIR ;vfam 90 .I $G(PSOAFYN)="Y" S Y="0" ;vfam No Progress Notes in AutoFinish 91 .S PSONOTE=+Y Q ;I 'Y!($D(DIRUT)) Q 92 NOORX K X,Y,DIR,DUOUT,DTOUT,DIRUT 93 Q 94 DIR ;ask nature of order 95 K DIR,DTOUT,DTOUT,DIRUT I $T(NA^ORX1)]"" D Q 96 .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:"")) 97 .I +PSONOOR S (Y,PSONOOR)=$P(PSONOOR,"^",3) Q 98 .S DIRUT=1 K PSONOOR 99 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") 100 K DIR,DTOUT,DTOUT,DIRUT S DIR("A")="Nature of Order: ",DIR("B")=$S($D(PSONOOR):PSONODF,1:"WRITTEN") 101 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:"") 102 D ^DIR K DF,PSONODF Q:$D(DIRUT) S PSONOOR=Y 103 DIRX Q 104 ; 105 NOORE(PSONEW) ;entry point for renew 106 D NOOR I $D(DIRUT) S PSONEW("DFLG")=1 Q 107 S PSONEW("NOO")=PSONOOR 108 Q
Note:
See TracChangeset
for help on using the changeset viewer.