- PSOORRNW ;BIR/SAB-finish OP renew orders from OE/RR ; 4/26/11 2:20pm
- ;;7.0;OUTPATIENT PHARMACY;**11,27,51,46,71,94,130,131,146,206,225,384,386,408,440,441**;DEC 1997;Build 208
- ;External reference to ^PSDRUG supported by DBIA 221
- ;External reference to ^PS(50.607 supported by DBIA 2221
- ;External reference to ^PS(51.2 supported by DBIA 2226
- ;External references PSOL and PSOUL^PSSLOCK supported by DBIA 2789
- S PSORENXX=$P($G(OR0),"^",21),PSOFROM="NEW" K PRC,PHI
- I $G(PSORENXX) D PSOL^PSSLOCK(PSORENXX) I '$G(PSOMSG) D K DIR,PSOMSG W ! S DIR("A")="Press Return to continue",DIR(0)="E" D ^DIR K DIR W ! Q
- .I $P($G(PSOMSG),"^",2)'="" W $C(7),!!,$P(PSOMSG,"^",2) Q
- .W $C(7),!!,"Another person is editing Rx "_$P($G(^PSRX(PSORENXX,0)),"^")
- K PSOMSG N OI,VALMCNT K POERR("DFLG") D FULL^VALM1 S (PSORX("DFLG"),PSORENW("DFLG"))=0,(PSORNW("FILL DATE"),PSORENW("FILL DATE"))=DT
- S Y=DT X ^DD("DD") S PSORX("FILL DATE")=Y K Y
- ;
- W !!,"Now Renewing Rx # "_$P(^PSRX($P(OR0,"^",21),0),"^")_" Drug: "_$P($G(^PSDRUG($P(^PSRX($P(OR0,"^",21),0),"^",6),0)),"^"),! H 2
- I $P($G(^PSRX($P(OR0,"^",21),"OR1")),"^",4) D D PROCESSX^PSORENW0 D UL Q
- .W !!,"Cannot Renew Rx # "_$P(^PSRX($P(OR0,"^",21),0),"^"),!," Drug: "_$P($G(^PSDRUG($P(^PSRX($P(OR0,"^",21),0),"^",6),0)),"^")_"."
- .W !,"This Rx has already been RENEWED ("_$P(^PSRX($P(^PSRX($P(OR0,"^",21),"OR1"),"^",4),0),"^")_").",!
- .S ACOM="Duplicate Renewal Request. Order rejected by Pharmacy.",PSONOOR="D" D DE^PSOORFI2 K ACOM,POERR("COMM"),POERR("PLACER"),POERR("STAT")
- I '$G(PSOTPBFG) D DSPL^PSOTPCAN(ORD)
- S (PSORX("PROVIDER NAME"),PSORENW("PROVIDER NAME"))=$P(^VA(200,$P(OR0,"^",5),0),"^"),PSORENW("NOO")=$P(OR0,"^",7)
- S PSORENW("PROVIDER")=$P(OR0,"^",5),PSORENW("MAIL/WINDOW")=$S($P(OR0,"^",17)="M":"M",$P(OR0,"^",17)="P":"P",1:"W")
- ;S PSORENW("PROVIDER")=$P(OR0,"^",5),PSORENW("MAIL/WINDOW")=$S($P(OR0,"^",17)="M":"M",1:"W")
- K PSORENW("ADMINCLINIC") S:$P(OR0,"^",17)="C" PSORENW("ADMINCLINIC")=1
- ;I $O(^PSRX($P(OR0,"^",21),"PRC",0)) F I=0:0 S I=$O(^PSRX($P(OR0,"^",21),"PRC",I)) Q:'I S PRC(I)=^PSRX($P(OR0,"^",21),"PRC",I,0)
- K II F I=0:0 S I=$O(^PS(52.41,ORD,1,I)) Q:'I S DOSE=$G(^PS(52.41,ORD,1,I,1)),DOSE1=$G(^(2)) D
- .S II=$G(II)+1
- .S PSORENW("DOSE",II)=$P(DOSE1,"^"),PSORENW("DOSE ORDERED",II)=$P(DOSE1,"^",2),PSORENW("UNITS",II)=$P(DOSE,"^",9),PSORENW("NOUN",II)=$P(DOSE,"^",5)
- .S:$P(DOSE,"^",9) UNITS=$P(^PS(50.607,$P(DOSE,"^",9),0),"^")
- .S PSORENW("VERB",II)=$P(DOSE,"^",10),PSORENW("ROUTE",II)=$P(DOSE,"^",8)
- .S ROUTE=$S($P(DOSE,"^",8):$$GET1^DIQ(^PS(51.2,$P(DOSE,"^",8),0),"^"),1:"") ;PSO*7*384
- .S PSORENW("SCHEDULE",II)=$P(DOSE,"^"),PSORENW("DURATION",II)=$P(DOSE,"^",2)
- .I $P(DOSE,"^",6)]"" S PSORENW("CONJUNCTION",II)=$S($P(DOSE,"^",6)="S":"T",$P(DOSE,"^",6)="X":"X",1:"A")
- S PSORENW("ENT")=+$G(II) K II,I
- F DR=1:1:PSORENW("ENT") I $G(PSORENW("DURATION",DR))]"" D
- .S DUR1=PSORENW("DURATION",DR)
- .S PSORENW("DURATION",DR)=$S($E(DUR1,1)'?.N:$E(DUR1,2,99)_$E(DUR1,1),1:DUR1)
- D ^PSORENW1,CHECK^PSORENW0 I PSORENW("DFLG") D KLIB^PSORENW1 D PROCESSX^PSORENW0 D UL Q
- D FILDATE^PSORENW0,DRUG^PSORENW0 I PSORENW("DFLG")!$G(PSORX("DFLG")) D KLIB^PSORENW1 D PROCESSX^PSORENW0 D UL Q
- D RXN^PSORENW0 I PSORENW("DFLG") D KLIB^PSORENW1 D PROCESSX^PSORENW0 D UL Q
- D STOP^PSORENW1,INIT^PSORENW3
- I $G(PSOORRNW) D
- .S PSORENW("ISSUE DATE")=$S($P(OR0,"^",3)="RNW":$E($P(OR0,"^",6),1,7),PSORENW("FILL DATE")>DT:DT,PSORENW("FILLDATE")<$E($P(OR0,"^",6),1,7):PSORENW("FILL DATE"),1:$E($P(OR0,"^",6),1,7)) ;;PSO*440
- .S PSORENW("# OF REFILLS")=+$P(OR0,"^",11),PSOFDR=1
- .S PSORENW("CLERK CODE")=$P(OR0,"^",4),PSORX("CLERK CODE")=$P(^VA(200,$P(OR0,"^",4),0),"^")
- ;D CHK
- S PSOFXRN=0,PSOFXRNX=1
- S PSORENW("POE")=$S($G(^PS(52.41,ORD,"POE"))=1:1,'$O(^PSRX($P(OR0,"^",21),6,0)):1,1:"")
- S PSORENW("PENDING ORDER")=ORD
- D EN^PSOORNE4(.PSORENW) K PSORENW,PSORX("FILL DATE")
- I '$G(PSOFXRN) D UL
- D KLIB^PSORENW1
- K PSOFXRN,PSOFXRNX
- Q
- CHK ;check for valid # of refills
- I $G(PSODRUG("DEA"))]"" D
- .S PSOCS=0 K DIR,DIC,PSOX
- .F DEA=1:1 Q:$E(PSODRUG("DEA"),DEA)="" I $E(+PSODRUG("DEA"),DEA)>1,$E(+PSODRUG("DEA"),DEA)<6 S $P(PSOCS,"^")=1 S:$E(+PSODRUG("DEA"),DEA)=2 $P(PSOCS,"^",2)=1
- .;PSO*7*206
- .S PSOMAX=$S(PSOCS:5,1:11) I PSODRUG("DEA")["A"&(PSODRUG("DEA")'["B")!(PSODRUG("DEA")["F")!(PSODRUG("DEA")[1)!(PSODRUG("DEA")[2) S PSOMAX=0
- E S PSOMAX=$P(OR0,"^",11)
- S RXPT=+$P(PSORENW("RX0"),"^",3) I $G(^PS(53,RXPT,0))]"" D
- .S PSORENW("# OF REFILLS")=$S(+$P(OR0,"^",11)>+$P(^PS(53,RXPT,0),"^",4):+$P(^PS(53,RXPT,0),"^",4),1:+$P(OR0,"^",11)),PSOX=+$P(^PS(53,RXPT,0),"^",4)
- .S PSORENW("# OF REFILLS")=$S(PSORENW("# OF REFILLS")>PSOMAX:PSOMAX,1:PSORENW("# OF REFILLS"))
- .S PSOMAX=$S(PSOMAX>+$P(^PS(53,RXPT,0),"^",4):+$P(^PS(53,RXPT,0),"^",4),1:PSOMAX) K RXPT
- E D
- . I $G(PSOMAX) S PSORENW("# OF REFILLS")=$S(+$P(OR0,"^",11)>PSOMAX:PSOMAX,1:+$P(OR0,"^",11))
- Q
- ;
- EDTPEN ;edit front door renews
- N VALMCNT S Y=$P(XQORNOD(0),"=",2) D EDTSEL^PSOORNE4
- Q
- UL I $G(PSORENXX) D PSOUL^PSSLOCK(PSORENXX)
- K PSORENXX
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOORRNW 5047 printed Feb 18, 2025@23:58:48 Page 2
- PSOORRNW ;BIR/SAB-finish OP renew orders from OE/RR ; 4/26/11 2:20pm
- +1 ;;7.0;OUTPATIENT PHARMACY;**11,27,51,46,71,94,130,131,146,206,225,384,386,408,440,441**;DEC 1997;Build 208
- +2 ;External reference to ^PSDRUG supported by DBIA 221
- +3 ;External reference to ^PS(50.607 supported by DBIA 2221
- +4 ;External reference to ^PS(51.2 supported by DBIA 2226
- +5 ;External references PSOL and PSOUL^PSSLOCK supported by DBIA 2789
- +6 SET PSORENXX=$PIECE($GET(OR0),"^",21)
- SET PSOFROM="NEW"
- KILL PRC,PHI
- +7 IF $GET(PSORENXX)
- DO PSOL^PSSLOCK(PSORENXX)
- IF '$GET(PSOMSG)
- Begin DoDot:1
- +8 IF $PIECE($GET(PSOMSG),"^",2)'=""
- WRITE $CHAR(7),!!,$PIECE(PSOMSG,"^",2)
- QUIT
- +9 WRITE $CHAR(7),!!,"Another person is editing Rx "_$PIECE($GET(^PSRX(PSORENXX,0)),"^")
- End DoDot:1
- KILL DIR,PSOMSG
- WRITE !
- SET DIR("A")="Press Return to continue"
- SET DIR(0)="E"
- DO ^DIR
- KILL DIR
- WRITE !
- QUIT
- +10 KILL PSOMSG
- NEW OI,VALMCNT
- KILL POERR("DFLG")
- DO FULL^VALM1
- SET (PSORX("DFLG"),PSORENW("DFLG"))=0
- SET (PSORNW("FILL DATE"),PSORENW("FILL DATE"))=DT
- +11 SET Y=DT
- XECUTE ^DD("DD")
- SET PSORX("FILL DATE")=Y
- KILL Y
- +12 ;
- +13 WRITE !!,"Now Renewing Rx # "_$PIECE(^PSRX($PIECE(OR0,"^",21),0),"^")_" Drug: "_$PIECE($GET(^PSDRUG($PIECE(^PSRX($PIECE(OR0,"^",21),0),"^",6),0)),"^"),!
- HANG 2
- +14 IF $PIECE($GET(^PSRX($PIECE(OR0,"^",21),"OR1")),"^",4)
- Begin DoDot:1
- +15 WRITE !!,"Cannot Renew Rx # "_$PIECE(^PSRX($PIECE(OR0,"^",21),0),"^"),!," Drug: "_$PIECE($GET(^PSDRUG($PIECE(^PSRX($PIECE(OR0,"^",21),0),"^",6),0)),"^")_"."
- +16 WRITE !,"This Rx has already been RENEWED ("_$PIECE(^PSRX($PIECE(^PSRX($PIECE(OR0,"^",21),"OR1"),"^",4),0),"^")_").",!
- +17 SET ACOM="Duplicate Renewal Request. Order rejected by Pharmacy."
- SET PSONOOR="D"
- DO DE^PSOORFI2
- KILL ACOM,POERR("COMM"),POERR("PLACER"),POERR("STAT")
- End DoDot:1
- DO PROCESSX^PSORENW0
- DO UL
- QUIT
- +18 IF '$GET(PSOTPBFG)
- DO DSPL^PSOTPCAN(ORD)
- +19 SET (PSORX("PROVIDER NAME"),PSORENW("PROVIDER NAME"))=$PIECE(^VA(200,$PIECE(OR0,"^",5),0),"^")
- SET PSORENW("NOO")=$PIECE(OR0,"^",7)
- +20 SET PSORENW("PROVIDER")=$PIECE(OR0,"^",5)
- SET PSORENW("MAIL/WINDOW")=$SELECT($PIECE(OR0,"^",17)="M":"M",$PIECE(OR0,"^",17)="P":"P",1:"W")
- +21 ;S PSORENW("PROVIDER")=$P(OR0,"^",5),PSORENW("MAIL/WINDOW")=$S($P(OR0,"^",17)="M":"M",1:"W")
- +22 KILL PSORENW("ADMINCLINIC")
- if $PIECE(OR0,"^",17)="C"
- SET PSORENW("ADMINCLINIC")=1
- +23 ;I $O(^PSRX($P(OR0,"^",21),"PRC",0)) F I=0:0 S I=$O(^PSRX($P(OR0,"^",21),"PRC",I)) Q:'I S PRC(I)=^PSRX($P(OR0,"^",21),"PRC",I,0)
- +24 KILL II
- FOR I=0:0
- SET I=$ORDER(^PS(52.41,ORD,1,I))
- if 'I
- QUIT
- SET DOSE=$GET(^PS(52.41,ORD,1,I,1))
- SET DOSE1=$GET(^(2))
- Begin DoDot:1
- +25 SET II=$GET(II)+1
- +26 SET PSORENW("DOSE",II)=$PIECE(DOSE1,"^")
- SET PSORENW("DOSE ORDERED",II)=$PIECE(DOSE1,"^",2)
- SET PSORENW("UNITS",II)=$PIECE(DOSE,"^",9)
- SET PSORENW("NOUN",II)=$PIECE(DOSE,"^",5)
- +27 if $PIECE(DOSE,"^",9)
- SET UNITS=$PIECE(^PS(50.607,$PIECE(DOSE,"^",9),0),"^")
- +28 SET PSORENW("VERB",II)=$PIECE(DOSE,"^",10)
- SET PSORENW("ROUTE",II)=$PIECE(DOSE,"^",8)
- +29 ;PSO*7*384
- SET ROUTE=$SELECT($PIECE(DOSE,"^",8):$$GET1^DIQ(^PS(51.2,$PIECE(DOSE,"^",8),0),"^"),1:"")
- +30 SET PSORENW("SCHEDULE",II)=$PIECE(DOSE,"^")
- SET PSORENW("DURATION",II)=$PIECE(DOSE,"^",2)
- +31 IF $PIECE(DOSE,"^",6)]""
- SET PSORENW("CONJUNCTION",II)=$SELECT($PIECE(DOSE,"^",6)="S":"T",$PIECE(DOSE,"^",6)="X":"X",1:"A")
- End DoDot:1
- +32 SET PSORENW("ENT")=+$GET(II)
- KILL II,I
- +33 FOR DR=1:1:PSORENW("ENT")
- IF $GET(PSORENW("DURATION",DR))]""
- Begin DoDot:1
- +34 SET DUR1=PSORENW("DURATION",DR)
- +35 SET PSORENW("DURATION",DR)=$SELECT($EXTRACT(DUR1,1)'?.N:$EXTRACT(DUR1,2,99)_$EXTRACT(DUR1,1),1:DUR1)
- End DoDot:1
- +36 DO ^PSORENW1
- DO CHECK^PSORENW0
- IF PSORENW("DFLG")
- DO KLIB^PSORENW1
- DO PROCESSX^PSORENW0
- DO UL
- QUIT
- +37 DO FILDATE^PSORENW0
- DO DRUG^PSORENW0
- IF PSORENW("DFLG")!$GET(PSORX("DFLG"))
- DO KLIB^PSORENW1
- DO PROCESSX^PSORENW0
- DO UL
- QUIT
- +38 DO RXN^PSORENW0
- IF PSORENW("DFLG")
- DO KLIB^PSORENW1
- DO PROCESSX^PSORENW0
- DO UL
- QUIT
- +39 DO STOP^PSORENW1
- DO INIT^PSORENW3
- +40 IF $GET(PSOORRNW)
- Begin DoDot:1
- +41 ;;PSO*440
- SET PSORENW("ISSUE DATE")=$SELECT($PIECE(OR0,"^",3)="RNW":$EXTRACT($PIECE(OR0,"^",6),1,7),PSORENW("FILL DATE")>DT:DT,PSORENW("FILLDATE")<$EXTRACT($PIECE(OR0,"^",6),1,7):PSORENW("FILL DATE"),1:$EXTRACT($PIECE(OR0,"^",6),1,7))
- +42 SET PSORENW("# OF REFILLS")=+$PIECE(OR0,"^",11)
- SET PSOFDR=1
- +43 SET PSORENW("CLERK CODE")=$PIECE(OR0,"^",4)
- SET PSORX("CLERK CODE")=$PIECE(^VA(200,$PIECE(OR0,"^",4),0),"^")
- End DoDot:1
- +44 ;D CHK
- +45 SET PSOFXRN=0
- SET PSOFXRNX=1
- +46 SET PSORENW("POE")=$SELECT($GET(^PS(52.41,ORD,"POE"))=1:1,'$ORDER(^PSRX($PIECE(OR0,"^",21),6,0)):1,1:"")
- +47 SET PSORENW("PENDING ORDER")=ORD
- +48 DO EN^PSOORNE4(.PSORENW)
- KILL PSORENW,PSORX("FILL DATE")
- +49 IF '$GET(PSOFXRN)
- DO UL
- +50 DO KLIB^PSORENW1
- +51 KILL PSOFXRN,PSOFXRNX
- +52 QUIT
- CHK ;check for valid # of refills
- +1 IF $GET(PSODRUG("DEA"))]""
- Begin DoDot:1
- +2 SET PSOCS=0
- KILL DIR,DIC,PSOX
- +3 FOR DEA=1:1
- if $EXTRACT(PSODRUG("DEA"),DEA)=""
- QUIT
- IF $EXTRACT(+PSODRUG("DEA"),DEA)>1
- IF $EXTRACT(+PSODRUG("DEA"),DEA)<6
- SET $PIECE(PSOCS,"^")=1
- if $EXTRACT(+PSODRUG("DEA"),DEA)=2
- SET $PIECE(PSOCS,"^",2)=1
- +4 ;PSO*7*206
- +5 SET PSOMAX=$SELECT(PSOCS:5,1:11)
- IF PSODRUG("DEA")["A"&(PSODRUG("DEA")'["B")!(PSODRUG("DEA")["F")!(PSODRUG("DEA")[1)!(PSODRUG("DEA")[2)
- SET PSOMAX=0
- End DoDot:1
- +6 IF '$TEST
- SET PSOMAX=$PIECE(OR0,"^",11)
- +7 SET RXPT=+$PIECE(PSORENW("RX0"),"^",3)
- IF $GET(^PS(53,RXPT,0))]""
- Begin DoDot:1
- +8 SET PSORENW("# OF REFILLS")=$SELECT(+$PIECE(OR0,"^",11)>+$PIECE(^PS(53,RXPT,0),"^",4):+$PIECE(^PS(53,RXPT,0),"^",4),1:+$PIECE(OR0,"^",11))
- SET PSOX=+$PIECE(^PS(53,RXPT,0),"^",4)
- +9 SET PSORENW("# OF REFILLS")=$SELECT(PSORENW("# OF REFILLS")>PSOMAX:PSOMAX,1:PSORENW("# OF REFILLS"))
- +10 SET PSOMAX=$SELECT(PSOMAX>+$PIECE(^PS(53,RXPT,0),"^",4):+$PIECE(^PS(53,RXPT,0),"^",4),1:PSOMAX)
- KILL RXPT
- End DoDot:1
- +11 IF '$TEST
- Begin DoDot:1
- +12 IF $GET(PSOMAX)
- SET PSORENW("# OF REFILLS")=$SELECT(+$PIECE(OR0,"^",11)>PSOMAX:PSOMAX,1:+$PIECE(OR0,"^",11))
- End DoDot:1
- +13 QUIT
- +14 ;
- EDTPEN ;edit front door renews
- +1 NEW VALMCNT
- SET Y=$PIECE(XQORNOD(0),"=",2)
- DO EDTSEL^PSOORNE4
- +2 QUIT
- UL IF $GET(PSORENXX)
- DO PSOUL^PSSLOCK(PSORENXX)
- +1 KILL PSORENXX
- +2 QUIT