- PSORXL ;BHAM ISC/SAB - action to be taken on prescriptions ;28-Mar-2013 16:45;DU
- ;;7.0;OUTPATIENT PHARMACY;**8,21,24,32,47,135,1008,1013,148,287,1015**;DEC 1997;Build 62
- ;External reference to File #50 supported by DBIA 221
- ;External references CHPUS^IBACUS and TRI^IBACUS supported by DBIA 2030
- ; Modified - IHS/CIA/PLS - 12/23/2003 - Line QLBL+2 and P1
- ; IHS/MSC/PLS - 04/30/2009 - Line PSORXL+12
- ; - 11/04/2011 - Line PSORXL+9
- I $G(PSOTRVV),$G(PPL) S PSORX("PSOL",1)=PPL K PPL
- N SLBL,PSOSONE,PSOKLRXS
- N APSPPRIO
- D APRTY^APSPFUNC
- ; IHS/CIA/PLS - 03/24/04 - Removed conditional call to label prompt
- ;S:'$G(PPL) PPL=$G(PSORX("PSOL",1)) G:$P(PSOPAR,"^",26) P
- S:'$G(PPL) PPL=$G(PSORX("PSOL",1))
- D SAVEPRI(PPL) ;IHS/MSC/PLS - 11/04/11 - P13
- I '$$GET1^DIQ(9009033,+$G(PSOSITE),316,"I") D ^APSPNE4 Q ; IHS/CIA/PLS - 01/18/04 - Call IHS Label prompt
- D CHKFDT^APSPFUNC(.PPL) S PSORX("PSOL",1)=PPL ;IHS/MSC/PLS - 04/30/09 - Remove RXs with future fill dates
- I 'PPL,'$D(RXRS) D Q
- .W !!,"No other labels to print. Exiting..."
- LBL ;
- I $G(PPL) N PSOCKDC S PSOCKDC=1 D ECME^PSORXL1 I '$G(PPL) S PPL="" Q ;don't prompt to print labels for DC'ed Rx's
- W !! S DIR("A",1)="Label Printer: "_$S($G(SUSPT):PSLION,1:$G(PSOLAP))
- S DIR("A")="LABEL: QUEUE/CHANGE PRINTER"_$S($P(PSOPAR,"^",23):"/HOLD",1:"")_$S($P(PSOPAR,"^",24):"/SUSPEND",1:"")_$S($P(PSOPAR,"^",26):"/LABEL",1:"")_" or '^' to bypass "
- S DIR("?",1)="Enter 'Q' to queue labels to print",DIR("?")="Enter '^' to bypass label functions",DIR("?",4)="Enter 'S' to suspend labels to print later"
- S DIR("?",2)="Enter 'H' to hold label until Rx can be filled",DIR("?",3)="Enter 'P' for Rx profile"
- S DIR("?",5)="Enter 'C' to select another label printer"
- S:$P(PSOPAR,"^",26) DIR("?",5)="Enter 'L' to print labels without queuing"
- TRI ;Tricare
- S X="IBACUS" X ^%ZOSF("TEST") K X I '$T G PASS
- I '$$TRI^IBACUS() G PASS
- I '$D(PSORX("PSOL",1))!($G(PSOSUREP))!($G(PSOEXREP)) G PASS
- N GGG,PBILL,PSTRD,PSTRDZ,PSTRF,PSTRP,TRXI,TRIRX,PSTRIVAR,VV,VVV,VVCT
- D DEV^PSOCPTRI
- K ^TMP($J,"PSONOB"),^TMP($J,"PSOBILL")
- S VVCT=0 F VV=0:0 S VV=$O(PSORX("PSOL",VV)) Q:'VV F VVV=1:1 S TRXI=$P(PSORX("PSOL",VV),",",VVV) Q:'TRXI D
- .I '$G(DT) S DT=$$DT^XLFDT
- .I $P($G(^PSRX(+TRXI,"STA")),"^")=3 Q
- .S PSTRP=$P($G(^PSRX(+TRXI,0)),"^",2),PSTRD=+$G(PSOSITE),PSTRDZ=+$G(DUZ)
- .S PSTRF=0 F GGG=0:0 S GGG=$O(^PSRX(+TRXI,1,GGG)) Q:'GGG S PSTRF=GGG
- .S VVCT=VVCT+1
- .I $G(RXRP(TRXI))!($G(RXPR(TRXI)))!($G(RXRH(TRXI))) S ^TMP($J,"PSONOB",VVCT)=TRXI Q
- .S PBILL=$$CHPUS^IBACUS(PSTRP,DT,TRXI,PSTRF,PSOLAP,PSTRD,PSTRDZ) S ^TMP($J,$S($G(PBILL):"PSOBILL",1:"PSONOB"),VVCT)=TRXI
- I '$D(^TMP($J,"PSOBILL")) K ^TMP($J,"PSONOB") G PASS
- I '$D(^TMP($J,"PSONOB")),$D(^TMP($J,"PSOBILL")) S (Y,LBL)="H" G H1
- ;If some Rx's are billable, and some are not
- SETP K PSORX("PSOL"),PPL S VVCT=1 F VV=0:0 S VV=$O(^TMP($J,$S($G(PSTRIVAR):"PSONOB",1:"PSOBILL"),VV)) Q:'VV S TRIRX=^TMP($J,$S($G(PSTRIVAR):"PSONOB",1:"PSOBILL"),VV) I +TRIRX D
- .I $G(PSORX("PSOL",1))="" S PSORX("PSOL",1)=TRIRX_"," Q
- .I $L(PSORX("PSOL",VVCT))+$L(TRIRX)<220 S PSORX("PSOL",VVCT)=PSORX("PSOL",VVCT)_TRIRX_"," Q
- .S VVCT=VVCT+1 S PSORX("PSOL",VVCT)=TRIRX_","
- I '$G(PSTRIVAR) S (Y,LBL)="H" S PSOKLRXS=1 K PSORSAVE,PSOPSAVE,PSOHSAVE D RSAVE D H1 D RREST K PSORSAVE,PSOPSAVE,PSOHSAVE K PSOKLRXS S PSTRIVAR=1 G SETP
- K ^TMP($J,"PSONOB") S PPL=$G(PSORX("PSOL",1))
- PASS ;
- I $E($G(DIR("A")),1,6)'="LABEL:" D RESDIR^PSOCPTRI
- S DIR(0)="SA^P:PROFILE;Q:QUEUE;C:CHANGE PRINTER"_$S($P(PSOPAR,"^",23):";H:HOLD",1:"")_$S($P(PSOPAR,"^",24):";S:SUSPENSE",1:"")_$S($P(PSOPAR,"^",26):";L:PRINT",1:""),DIR("B")="Q" D ^DIR D G:$D(DIRUT)!($D(DUOUT)) EX
- .I $D(DIRUT)!($D(DUOUT)) D AL^PSOLBL("UT") I $G(PSOEXREP) S PSOEXREX=1
- .I $G(PSOPULL) I $D(DIRUT)!($D(DUOUT)) S PSOQFLAG=1
- S:$G(PSOBEDT) NOPP=Y
- I $G(Y)="C" K PSOCLBL,%ZIS("B") S PSOCLBL=1 D @$S('$D(PSOPAR):"^PSOLSET",1:"PLBL^PSOLSET") K PSOCLBL G LBL
- I $G(Y)="Q",$D(RXRS),'$G(PSOPULL) D PPLADD^PSOSUPOE
- I $G(PSXSYS),($G(Y)'="H"),($G(Y)'="P"),('$G(PSOEXREP)) S LBL=Y,(RXLTOP,PPL1)=1 S:'$G(PSOPULL) SLBL=Y D A^PSOCMOP G:'$G(PPL) D1
- K DIR S LBL=Y S:'$G(PSOPULL) SLBL=Y G Q:Y="Q",S:Y="S",H1:Y="H",P:Y="L" I Y="P" W ! S PSDFN=DFN,PSFROM="" D ^PSODSPL K PSDFN,PSFROM G LBL
- EX I $D(DUOUT)!$D(DIRUT) K BINGCRT,BINGRTE,BBRX,BBFLG S:$D(RXRS) SLBL="^" G:$D(RXRS) RXS K DIR,X,DIRUT,DUOUT,ACT,Y,DTOUT,PPL,REPRINT S NOBG=1 Q
- Q S PPL1=1 G:$G(PPL)']"" D1 S PSNP=0,PSL=1 D I $G(PSOFROM)="NEW",$P(PSOPAR,"^",8) S PSNP=1
- .Q:'$P(PSOPAR,"^",8)!($G(PSONOPRT))
- .F SLPPL=0:0 S SLPPL=$O(RXRS(SLPPL)) Q:'SLPPL!($G(PSNP)) I '$O(^PSRX(SLPPL,1,0)),'$D(RXPR(SLPPL)) S PSNP=1
- I $G(PSOLAP)]"",$G(PSOLAP)'=ION G QLBL
- Q1 W ! K POP S %ZIS("B")="",%ZIS="MNQ",%ZIS("A")="Select LABEL DEVICE: " D ^%ZIS S PSLION=ION K %ZIS("A") Q:$G(POP)&($G(PSPARTXX)) G:$G(POP)&($G(PSOSONE)) RXSQ D:$G(POP)&($G(PSONOPRT)) Q:$G(PSOQFLAG) G:POP!(IO=IO(0)) LBL S PSOLAP=ION
- .S PSOQFLAG=1
- N PSOIOS S PSOIOS=IOS D DEVBAR^PSOBMST
- S PSOBARS=PSOBAR1]""&(PSOBAR0]"")&$P(PSOPAR,"^",10)
- D ^%ZISC S PSL=0
- QLBL I $G(PSXSYS),('$G(RXLTOP)),('$G(PSOEXREP)) D RXL^PSOCMOP G:'$G(PPL) D1
- ;
- ;- Submitting list of Rx to ECME for DUR/79 REJECT check and possible submission to 3rd Pary Payer
- D ECME^PSORXL1 I '$G(PPL) W !!,"No Label(s) printed.",!! S PSOQFLAG=1 Q
- ;
- ; IHS/CIA/PLS - 12/23/2003 - Direct to IHS label routine
- ;S ZTRTN="DQ^PSOLBL",ZTIO=$S($G(SUSPT):PSLION,1:PSOLAP),ZTDESC="Outpatient Pharmacy "_$S($G(SUSPT):"SUSPENSE ",$G(DG):"DRUG INTERACTION ",1:"")_"LABELS OUTPUT ROUTINE",ZTDTH=$S($G(PSOTIME):PSOTIME,1:$H),PDUZ=DUZ
- S ZTRTN="DQ^APSPLBL",ZTIO=$S($G(SUSPT):PSLION,1:PSOLAP),ZTDESC="Outpatient Pharmacy "_$S($G(SUSPT):"SUSPENSE ",$G(DG):"DRUG INTERACTION ",1:"")_"LABELS OUTPUT ROUTINE",ZTDTH=$S($G(PSOTIME):PSOTIME,1:$H),PDUZ=DUZ
- F G="PPL1","PSOSYS","DFN","PSOPAR","PDUZ","PCOMX",$S($G(SUSPT):"PFION",1:"PSOLAP"),"PPL","PSOSITE","RXY","COPIES","SIDE","PSOSUSPR","PSOBARS","PSOBAR1","PSOBAR0","PSODELE","PSOPULL","PSTAT","PSODBQ","PSOEXREP","PSOTREP" S:$D(@G) ZTSAVE(G)=""
- ; IHS/CIA/PLS - 12/23/03 - Save additional variables
- F G="%APSITE","APSPMAN","APSPZRP","DUZ","PSOFROM","%APSITE","APSQSGLB","APSPREIS" S:$D(@G) ZTSAVE(G)=""
- S ZTSAVE("P*")=""
- S ZTSAVE("PSORX(")="",ZTSAVE("RXRP(")="",ZTSAVE("RXPR(")="",ZTSAVE("RXRS(")="",ZTSAVE("RXFL(")="",ZTSAVE("PCOMH(")=""
- D ^%ZISC,^%ZTLOAD K:$G(PSOSONE) RXRS W:$D(ZTSK)&('$G(SUSPT))&('$G(PSOEXREP)) !!,"LABEL(S) QUEUED TO PRINT",!!
- Q:$G(PSPARTXX) K G,PDUZ K:'$G(SUSPT) ZTSK Q:$G(DG)
- G:'$G(PSNP) QUEUP G:$G(PSOPRFLG) QUEUP S HOLDRPAS=$G(PSOPRPAS),PSOPRPAS=$P(PSOPAR,"^",13)
- PLBL S PSOION=ION
- I '$D(PSOPROP)!($G(PSOPROP)=ION) W $C(7),!,"PROFILES MUST BE SENT TO PRINTER !!",! K IOP,%ZIS,IO("Q"),POP S %ZIS="MNQ",%ZIS("A")="Select PROFILE DEVICE: " D ^%ZIS K %ZIS("A") G:POP QUEUP G:$E(IOST)["C"!(PSOION=ION) PLBL S PSOPROP=ION
- QPRF S ZTRTN="DQ^PSOPRF",ZTIO=PSOPROP,ZTDESC="Outpatient Pharmacy "_$S($G(SUSPT):"SUSPENSE ",1:"")_"PATIENT PROFILES",ZTDTH=$S($G(PSOTIME):PSOTIME,1:$H)
- F G="PSOPAR","PSODTCUT","PSOPRPAS","DFN","PSOSITE","NEW1","NEW11","PSOBMST","PFIO","PPL" S:$D(@G) ZTSAVE(G)=""
- D ^%ZTLOAD W:$D(ZTSK)&('$G(SUSPT))&('$G(PSOEXREP)) !,"PROFILE IS QUEUED TO PRINT",!! K G K:'$G(SUSPT) ZTSK D ^%ZISC
- QUEUP D:$G(POP)&($G(PSONOPRT)) Q:$G(PSOQFLAG) S PSNP=0,PSOPRPAS=$G(HOLDRPAS) K:PSOPRPAS']"" PSOPRPAS K HOLDRPAS G D1
- .S PSOQFLAG=1
- Q
- ;
- S G S^PSORXL1
- SUS S X="IBACUS" X ^%ZOSF("TEST") K X I '$T G SUSL1
- N TRIDA S TRIDA=DA I '$$TRI^IBACUS() S DA=TRIDA G SUSL1
- I $G(RXRP(TRIDA))!($G(RXPR(TRIDA)))!($G(RXRH(TRIDA))) S DA=TRIDA G SUSL1
- N PBILL,PSTRD,PSTRDZ,PSTRF,PSTRP,GGG
- D DEV^PSOCPTRI
- I '$G(DT) S DT=$$DT^XLFDT
- S PSTRP=$P($G(^PSRX(+TRIDA,0)),"^",2),PSTRD=+$G(PSOSITE),PSTRDZ=+$G(DUZ)
- S PSTRF=0 F GGG=0:0 S GGG=$O(^PSRX(+TRIDA,1,GGG)) Q:'GGG S PSTRF=GGG
- S PBILL=$$CHPUS^IBACUS(PSTRP,DT,TRIDA,PSTRF,PSOLAP,PSTRD,PSTRDZ)
- I '$G(PBILL) S DA=TRIDA G SUSL1
- S FLD(99)="99",FLD(99.1)="Awaiting CHAMPUS billing approval"
- N RSDT,ACT,PSUS,RXF,RFN,I,PSDA,NOW,IR,FDA
- S DA=TRIDA D H^PSOCPTRH
- Q
- SUSL1 G SUS^PSORXL1
- H1 S PPL1=1 S:'$G(PPL) PPL=$G(PSORX("PSOL",PPL1))
- D:'$D(^TMP($J,"PSOBILL")) NOOR^PSOHLD I $D(DIRUT) K DIRUT G PSORXL
- I $D(^TMP($J,"PSOBILL")) S FLD(99)="99",FLD(99.1)="Awaiting CHAMPUS billing approval" G H
- G:$G(PPL)']"" D1 D FLD^PSOHLD I $D(DUOUT)!($D(DIRUT)) K DIRUT,DUOUT,FLD,DIR G LBL
- H K SPPL G:$D(DTOUT) D1 S SPPL="" F PI=1:1 Q:$P(PPL,",",PI)="" D
- .S DA=$P(PPL,",",PI) I $P(^PSRX(DA,"STA"),"^")<10,$P(^("STA"),"^")'=4 D @$S($D(^TMP($J,"PSOBILL")):"H^PSOCPTRH",1:"H^PSOHLD") Q
- .I $P(^PSRX(DA,"STA"),"^")=4 S SPPL=SPPL_DA_"," Q
- I $G(SPPL)]"" D
- .W !!,$C(7),"Drug Interaction Rx(s) " F I=1:1 Q:$P(SPPL,",",I)="" W $P(^PSRX($P(SPPL,",",I),0),"^")_", "
- .S PPL=SPPL,DG=1 D Q K DG,SPPL
- D1 K RXLTOP I $G(PPL1),$O(PSORX("PSOL",$G(PPL1))) S PPL1=$O(PSORX("PSOL",PPL1)),PPL=PSORX("PSOL",PPL1) G @$S(LBL="H":"H",LBL="L":"P1",1:"QLBL")
- RXS I $D(RXRS),'$G(PSOKLRXS) I $G(SLBL)="H"!($G(SLBL)="S")!($G(SLBL)="^")!($G(SLBL)="") D G:$G(PPL)'="" Q
- .K PPL,PSORX("PSOL") S PSOSONE=1 D PPLADD^PSOSUPOE
- .Q:$G(PPL)="" W !!,"You have selected the following Rx(s) to be pulled from suspense:",!
- .F RXSS=0:0 S RXSS=$O(RXRS(RXSS)) Q:'RXSS W !," Rx # ",$P($G(^PSRX(+$G(RXSS),0)),"^"),?23,$P($G(^PSDRUG(+$P($G(^PSRX(+$G(RXSS),0)),"^",6),0)),"^")
- .K DIR W ! S DIR(0)="Y",DIR("B")="YES",DIR("A")="Do you still want to pull these Rx(s) from suspense" D ^DIR K DIR I Y'=1 W !!,"Rx(s) will remain in Suspense!",! D RESET^PSOSUPOE K RXRS,PPL
- K:'$G(PSOKLRXS) RXRS K ^TMP($J,"PSOBILL"),RXPR,RXRP,RXRH,RXSS,LBL,PPL1,PPL,DIR,%DT,%,SD,COUNT,EXDT,L,PDUZ,REF,REPRINT,RFDATE,RFL1,RFLL,RXN,WARN,ZY,FLD,PI,ZD,ACT,X,Y,DIRUT,DUOUT,DTOUT,DIROUT Q
- P S PPL1=1 S:'$G(PPL) PPL=$G(PSORX("PSOL",1)) G:$G(PPL)']"" D1
- I $G(PSOLAP)']"" W ! K POP,ZTSK S %ZIS="M",%ZIS("A")="Select LABEL DEVICE: " D ^%ZIS K %ZIS("A") G:POP LBL S PSOLAP=ION
- PZ S IOP=PSOLAP D ^%ZIS ; IHS/CIA/PLS - 12/23/03 - PZ line label added
- I POP W !,"The label printer is busy, do you want to wait? " S %=1 D YN^DICN K POP Q:%=2 K %,%Y G PZ ; IHS/CIA/PLS - 12/23/03 Wait for busy printer prompt.
- N PSOIOS S PSOIOS=IOS D DEVBAR^PSOBMST
- P1 ; IHS/CIA/PLS - 12/23/03 - Call IHS Label routine
- ;S PSOBARS=PSOBAR1]""&(PSOBAR0]"")&$P(PSOPAR,"^",10),PDUZ=DUZ D DQ1^PSOLBL,^%ZISC
- S PSOBARS=PSOBAR1]""&(PSOBAR0]"")&$P(PSOPAR,"^",10),PDUZ=DUZ D DQ1^APSPLBL,^%ZISC
- G:'$P(PSOPAR,"^",8)!(+$G(REPRINT))!($G(PSOFROM)'="NEW") D1 I $G(PSOPROP)']"" S PSOION=ION,%ZIS="M",%ZIS("A")="Select PROFILE DEVICE: " D ^%ZIS K %ZIS("A") G:POP D1 S PSOPROP=ION
- S IOP=PSOPROP D ^%ZIS D DQ^PSOPRF,^%ZISC G D1
- Q
- RXSQ K RXRS G RXS
- Q
- RSAVE N PMX
- S PMX="" F S PMX=$O(RXRP(PMX)) Q:PMX="" S PSORSAVE(PMX)=RXRP(PMX)
- S PMX="" F S PMX=$O(RXPR(PMX)) Q:PMX="" S PSOPSAVE(PMX)=RXPR(PMX)
- S PMX="" F S PMX=$O(RXRH(PMX)) Q:PMX="" S PSOHSAVE(PMX)=RXRH(PMX)
- Q
- RREST N PMXZ
- S PMXZ="" F S PMXZ=$O(PSORSAVE(PMXZ)) Q:PMXZ="" S RXRP(PMXZ)=PSORSAVE(PMXZ)
- S PMXZ="" F S PMXZ=$O(PSOPSAVE(PMXZ)) Q:PMXZ="" S RXPR(PMXZ)=PSOPSAVE(PMXZ)
- S PSMX="" F S PMXZ=$O(PSOHSAVE(PMXZ)) Q:PMXZ="" S RXRH(PMXZ)=PSOHSAVE(PMXZ)
- Q
- ; Store Fill Priority
- SAVEPRI(RXS) ;EP-
- N PPLARY,RX,LFN
- Q:'$L($G(RXS))
- D BPPLARY^APSPFUNC(RXS)
- S RX=0
- F S RX=$O(PPLARY(RX)) Q:'RX D
- .Q:'$D(^PSRX(RX,0))
- .S LFN=+$O(^(1,$C(1)),-1)
- .I LFN D ;Refill
- ..S $P(^PSRX(RX,1,LFN,9999999),U,18)=APSPPRIO
- .E D ;
- ..S $P(^PSRX(RX,999999931),U,8)=APSPPRIO
- Q
- PSORXL ;BHAM ISC/SAB - action to be taken on prescriptions ;28-Mar-2013 16:45;DU
- +1 ;;7.0;OUTPATIENT PHARMACY;**8,21,24,32,47,135,1008,1013,148,287,1015**;DEC 1997;Build 62
- +2 ;External reference to File #50 supported by DBIA 221
- +3 ;External references CHPUS^IBACUS and TRI^IBACUS supported by DBIA 2030
- +4 ; Modified - IHS/CIA/PLS - 12/23/2003 - Line QLBL+2 and P1
- +5 ; IHS/MSC/PLS - 04/30/2009 - Line PSORXL+12
- +6 ; - 11/04/2011 - Line PSORXL+9
- +7 IF $GET(PSOTRVV)
- IF $GET(PPL)
- SET PSORX("PSOL",1)=PPL
- KILL PPL
- +8 NEW SLBL,PSOSONE,PSOKLRXS
- +9 NEW APSPPRIO
- +10 DO APRTY^APSPFUNC
- +11 ; IHS/CIA/PLS - 03/24/04 - Removed conditional call to label prompt
- +12 ;S:'$G(PPL) PPL=$G(PSORX("PSOL",1)) G:$P(PSOPAR,"^",26) P
- +13 IF '$GET(PPL)
- SET PPL=$GET(PSORX("PSOL",1))
- +14 ;IHS/MSC/PLS - 11/04/11 - P13
- DO SAVEPRI(PPL)
- +15 ; IHS/CIA/PLS - 01/18/04 - Call IHS Label prompt
- IF '$$GET1^DIQ(9009033,+$GET(PSOSITE),316,"I")
- DO ^APSPNE4
- QUIT
- +16 ;IHS/MSC/PLS - 04/30/09 - Remove RXs with future fill dates
- DO CHKFDT^APSPFUNC(.PPL)
- SET PSORX("PSOL",1)=PPL
- +17 IF 'PPL
- IF '$DATA(RXRS)
- Begin DoDot:1
- +18 WRITE !!,"No other labels to print. Exiting..."
- End DoDot:1
- QUIT
- LBL ;
- +1 ;don't prompt to print labels for DC'ed Rx's
- IF $GET(PPL)
- NEW PSOCKDC
- SET PSOCKDC=1
- DO ECME^PSORXL1
- IF '$GET(PPL)
- SET PPL=""
- QUIT
- +2 WRITE !!
- SET DIR("A",1)="Label Printer: "_$SELECT($GET(SUSPT):PSLION,1:$GET(PSOLAP))
- +3 SET DIR("A")="LABEL: QUEUE/CHANGE PRINTER"_$SELECT($PIECE(PSOPAR,"^",23):"/HOLD",1:"")_$SELECT($PIECE(PSOPAR,"^",24):"/SUSPEND",1:"")_$SELECT($PIECE(PSOPAR,"^",26):"/LABEL",1:"")_" or '^' to bypass "
- +4 SET DIR("?",1)="Enter 'Q' to queue labels to print"
- SET DIR("?")="Enter '^' to bypass label functions"
- SET DIR("?",4)="Enter 'S' to suspend labels to print later"
- +5 SET DIR("?",2)="Enter 'H' to hold label until Rx can be filled"
- SET DIR("?",3)="Enter 'P' for Rx profile"
- +6 SET DIR("?",5)="Enter 'C' to select another label printer"
- +7 IF $PIECE(PSOPAR,"^",26)
- SET DIR("?",5)="Enter 'L' to print labels without queuing"
- TRI ;Tricare
- +1 SET X="IBACUS"
- XECUTE ^%ZOSF("TEST")
- KILL X
- IF '$TEST
- GOTO PASS
- +2 IF '$$TRI^IBACUS()
- GOTO PASS
- +3 IF '$DATA(PSORX("PSOL",1))!($GET(PSOSUREP))!($GET(PSOEXREP))
- GOTO PASS
- +4 NEW GGG,PBILL,PSTRD,PSTRDZ,PSTRF,PSTRP,TRXI,TRIRX,PSTRIVAR,VV,VVV,VVCT
- +5 DO DEV^PSOCPTRI
- +6 KILL ^TMP($JOB,"PSONOB"),^TMP($JOB,"PSOBILL")
- +7 SET VVCT=0
- FOR VV=0:0
- SET VV=$ORDER(PSORX("PSOL",VV))
- IF 'VV
- QUIT
- FOR VVV=1:1
- SET TRXI=$PIECE(PSORX("PSOL",VV),",",VVV)
- IF 'TRXI
- QUIT
- Begin DoDot:1
- +8 IF '$GET(DT)
- SET DT=$$DT^XLFDT
- +9 IF $PIECE($GET(^PSRX(+TRXI,"STA")),"^")=3
- QUIT
- +10 SET PSTRP=$PIECE($GET(^PSRX(+TRXI,0)),"^",2)
- SET PSTRD=+$GET(PSOSITE)
- SET PSTRDZ=+$GET(DUZ)
- +11 SET PSTRF=0
- FOR GGG=0:0
- SET GGG=$ORDER(^PSRX(+TRXI,1,GGG))
- IF 'GGG
- QUIT
- SET PSTRF=GGG
- +12 SET VVCT=VVCT+1
- +13 IF $GET(RXRP(TRXI))!($GET(RXPR(TRXI)))!($GET(RXRH(TRXI)))
- SET ^TMP($JOB,"PSONOB",VVCT)=TRXI
- QUIT
- +14 SET PBILL=$$CHPUS^IBACUS(PSTRP,DT,TRXI,PSTRF,PSOLAP,PSTRD,PSTRDZ)
- SET ^TMP($JOB,$SELECT($GET(PBILL):"PSOBILL",1:"PSONOB"),VVCT)=TRXI
- End DoDot:1
- +15 IF '$DATA(^TMP($JOB,"PSOBILL"))
- KILL ^TMP($JOB,"PSONOB")
- GOTO PASS
- +16 IF '$DATA(^TMP($JOB,"PSONOB"))
- IF $DATA(^TMP($JOB,"PSOBILL"))
- SET (Y,LBL)="H"
- GOTO H1
- +17 ;If some Rx's are billable, and some are not
- SETP KILL PSORX("PSOL"),PPL
- SET VVCT=1
- FOR VV=0:0
- SET VV=$ORDER(^TMP($JOB,$SELECT($GET(PSTRIVAR):"PSONOB",1:"PSOBILL"),VV))
- IF 'VV
- QUIT
- SET TRIRX=^TMP($JOB,$SELECT($GET(PSTRIVAR):"PSONOB",1:"PSOBILL"),VV)
- IF +TRIRX
- Begin DoDot:1
- +1 IF $GET(PSORX("PSOL",1))=""
- SET PSORX("PSOL",1)=TRIRX_","
- QUIT
- +2 IF $LENGTH(PSORX("PSOL",VVCT))+$LENGTH(TRIRX)<220
- SET PSORX("PSOL",VVCT)=PSORX("PSOL",VVCT)_TRIRX_","
- QUIT
- +3 SET VVCT=VVCT+1
- SET PSORX("PSOL",VVCT)=TRIRX_","
- End DoDot:1
- +4 IF '$GET(PSTRIVAR)
- SET (Y,LBL)="H"
- SET PSOKLRXS=1
- KILL PSORSAVE,PSOPSAVE,PSOHSAVE
- DO RSAVE
- DO H1
- DO RREST
- KILL PSORSAVE,PSOPSAVE,PSOHSAVE
- KILL PSOKLRXS
- SET PSTRIVAR=1
- GOTO SETP
- +5 KILL ^TMP($JOB,"PSONOB")
- SET PPL=$GET(PSORX("PSOL",1))
- PASS ;
- +1 IF $EXTRACT($GET(DIR("A")),1,6)'="LABEL:"
- DO RESDIR^PSOCPTRI
- +2 SET DIR(0)="SA^P:PROFILE;Q:QUEUE;C:CHANGE PRINTER"_$SELECT($PIECE(PSOPAR,"^",23):";H:HOLD",1:"")_$SELECT($PIECE(PSOPAR,"^",24):";S:SUSPENSE",1:"")_$SELECT($PIECE(PSOPAR,"^",26):";L:PRINT",1:"")
- SET DIR("B")="Q"
- DO ^DIR
- Begin DoDot:1
- +3 IF $DATA(DIRUT)!($DATA(DUOUT))
- DO AL^PSOLBL("UT")
- IF $GET(PSOEXREP)
- SET PSOEXREX=1
- +4 IF $GET(PSOPULL)
- IF $DATA(DIRUT)!($DATA(DUOUT))
- SET PSOQFLAG=1
- End DoDot:1
- IF $DATA(DIRUT)!($DATA(DUOUT))
- GOTO EX
- +5 IF $GET(PSOBEDT)
- SET NOPP=Y
- +6 IF $GET(Y)="C"
- KILL PSOCLBL,%ZIS("B")
- SET PSOCLBL=1
- DO @$SELECT('$DATA(PSOPAR):"^PSOLSET",1:"PLBL^PSOLSET")
- KILL PSOCLBL
- GOTO LBL
- +7 IF $GET(Y)="Q"
- IF $DATA(RXRS)
- IF '$GET(PSOPULL)
- DO PPLADD^PSOSUPOE
- +8 IF $GET(PSXSYS)
- IF ($GET(Y)'="H")
- IF ($GET(Y)'="P")
- IF ('$GET(PSOEXREP))
- SET LBL=Y
- SET (RXLTOP,PPL1)=1
- IF '$GET(PSOPULL)
- SET SLBL=Y
- DO A^PSOCMOP
- IF '$GET(PPL)
- GOTO D1
- +9 KILL DIR
- SET LBL=Y
- IF '$GET(PSOPULL)
- SET SLBL=Y
- IF Y="Q"
- GOTO Q
- IF Y="S"
- GOTO S
- IF Y="H"
- GOTO H1
- IF Y="L"
- GOTO P
- IF Y="P"
- WRITE !
- SET PSDFN=DFN
- SET PSFROM=""
- DO ^PSODSPL
- KILL PSDFN,PSFROM
- GOTO LBL
- EX IF $DATA(DUOUT)!$DATA(DIRUT)
- KILL BINGCRT,BINGRTE,BBRX,BBFLG
- IF $DATA(RXRS)
- SET SLBL="^"
- IF $DATA(RXRS)
- GOTO RXS
- KILL DIR,X,DIRUT,DUOUT,ACT,Y,DTOUT,PPL,REPRINT
- SET NOBG=1
- QUIT
- Q SET PPL1=1
- IF $GET(PPL)']""
- GOTO D1
- SET PSNP=0
- SET PSL=1
- Begin DoDot:1
- +1 IF '$PIECE(PSOPAR,"^",8)!($GET(PSONOPRT))
- QUIT
- +2 FOR SLPPL=0:0
- SET SLPPL=$ORDER(RXRS(SLPPL))
- IF 'SLPPL!($GET(PSNP))
- QUIT
- IF '$ORDER(^PSRX(SLPPL,1,0))
- IF '$DATA(RXPR(SLPPL))
- SET PSNP=1
- End DoDot:1
- IF $GET(PSOFROM)="NEW"
- IF $PIECE(PSOPAR,"^",8)
- SET PSNP=1
- +3 IF $GET(PSOLAP)]""
- IF $GET(PSOLAP)'=ION
- GOTO QLBL
- Q1 WRITE !
- KILL POP
- SET %ZIS("B")=""
- SET %ZIS="MNQ"
- SET %ZIS("A")="Select LABEL DEVICE: "
- DO ^%ZIS
- SET PSLION=ION
- KILL %ZIS("A")
- IF $GET(POP)&($GET(PSPARTXX))
- QUIT
- IF $GET(POP)&($GET(PSOSONE))
- GOTO RXSQ
- IF $GET(POP)&($GET(PSONOPRT))
- Begin DoDot:1
- +1 SET PSOQFLAG=1
- End DoDot:1
- IF $GET(PSOQFLAG)
- QUIT
- IF POP!(IO=IO(0))
- GOTO LBL
- SET PSOLAP=ION
- +2 NEW PSOIOS
- SET PSOIOS=IOS
- DO DEVBAR^PSOBMST
- +3 SET PSOBARS=PSOBAR1]""&(PSOBAR0]"")&$PIECE(PSOPAR,"^",10)
- +4 DO ^%ZISC
- SET PSL=0
- QLBL IF $GET(PSXSYS)
- IF ('$GET(RXLTOP))
- IF ('$GET(PSOEXREP))
- DO RXL^PSOCMOP
- IF '$GET(PPL)
- GOTO D1
- +1 ;
- +2 ;- Submitting list of Rx to ECME for DUR/79 REJECT check and possible submission to 3rd Pary Payer
- +3 DO ECME^PSORXL1
- IF '$GET(PPL)
- WRITE !!,"No Label(s) printed.",!!
- SET PSOQFLAG=1
- QUIT
- +4 ;
- +5 ; IHS/CIA/PLS - 12/23/2003 - Direct to IHS label routine
- +6 ;SORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">S ZTRTN="DQ^PSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SOLBL",ZTIO=$SORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">S($G(SORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SUSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SPT):PSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SLION,1:PSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SOLAP),ZTDESORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SC="Outpatient Pharmacy "_$SORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">S($G(SORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SUSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SPT):"SORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SUSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SPENSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SE ",$G(DG):"DRUG INTERACTION ",1:"")_"LABELSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">S OUTPUT ROUTINE",ZTDTH=$SORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">S($G(PSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SOTIME):PSORXL_source.html#xS">SORXL_source.html#xSORXL_source.html#xS">S">SORXL_source.html#xS">SOTIME,1:$H),PDUZ=DUZ
- +7 SET ZTRTN="DQ^APSPLBL"
- SET ZTIO=$SELECT($GET(SUSPT):PSLION,1:PSOLAP)
- SET ZTDESC="Outpatient Pharmacy "_$SELECT($GET(SUSPT):"SUSPENSE ",$GET(DG):"DRUG INTERACTION ",1:"")_"LABELS OUTPUT ROUTINE"
- SET ZTDTH=$SELECT($GET(PSOTIME):PSOTIME,1:$HOROLOG)
- SET PDUZ=DUZ
- +8 FOR G="PPL1","PSOSYS","DFN","PSOPAR","PDUZ","PCOMX",$SELECT($GET(SUSPT):"PFION",1:"PSOLAP"),"PPL","PSOSITE","RXY","COPIES","SIDE","PSOSUSPR","PSOBARS","PSOBAR1","PSOBAR0","PSODELE","PSOPULL","PSTAT","PSODBQ","PSOEXREP","PSOTREP"
- IF $DATA(@G)
- SET ZTSAVE(G)=""
- +9 ; IHS/CIA/PLS - 12/23/03 - Save additional variables
- +10 FOR G="%APSITE","APSPMAN","APSPZRP","DUZ","PSOFROM","%APSITE","APSQSGLB","APSPREIS"
- IF $DATA(@G)
- SET ZTSAVE(G)=""
- +11 SET ZTSAVE("P*")=""
- +12 SET ZTSAVE("PSORX(")=""
- SET ZTSAVE("RXRP(")=""
- SET ZTSAVE("RXPR(")=""
- SET ZTSAVE("RXRS(")=""
- SET ZTSAVE("RXFL(")=""
- SET ZTSAVE("PCOMH(")=""
- +13 DO ^%ZISC
- DO ^%ZTLOAD
- IF $GET(PSOSONE)
- KILL RXRS
- IF $DATA(ZTSK)&('$GET(SUSPT))&('$GET(PSOEXREP))
- WRITE !!,"LABEL(S) QUEUED TO PRINT",!!
- +14 IF $GET(PSPARTXX)
- QUIT
- KILL G,PDUZ
- IF '$GET(SUSPT)
- KILL ZTSK
- IF $GET(DG)
- QUIT
- +15 IF '$GET(PSNP)
- GOTO QUEUP
- IF $GET(PSOPRFLG)
- GOTO QUEUP
- SET HOLDRPAS=$GET(PSOPRPAS)
- SET PSOPRPAS=$PIECE(PSOPAR,"^",13)
- PLBL SET PSOION=ION
- +1 IF '$DATA(PSOPROP)!($GET(PSOPROP)=ION)
- WRITE $CHAR(7),!,"PROFILES MUST BE SENT TO PRINTER !!",!
- KILL IOP,%ZIS,IO("Q"),POP
- SET %ZIS="MNQ"
- SET %ZIS("A")="Select PROFILE DEVICE: "
- DO ^%ZIS
- KILL %ZIS("A")
- IF POP
- GOTO QUEUP
- IF $EXTRACT(IOST)["C"!(PSOION=ION)
- GOTO PLBL
- SET PSOPROP=ION
- QPRF SET ZTRTN="DQ^PSOPRF"
- SET ZTIO=PSOPROP
- SET ZTDESC="Outpatient Pharmacy "_$SELECT($GET(SUSPT):"SUSPENSE ",1:"")_"PATIENT PROFILES"
- SET ZTDTH=$SELECT($GET(PSOTIME):PSOTIME,1:$HOROLOG)
- +1 FOR G="PSOPAR","PSODTCUT","PSOPRPAS","DFN","PSOSITE","NEW1","NEW11","PSOBMST","PFIO","PPL"
- IF $DATA(@G)
- SET ZTSAVE(G)=""
- +2 DO ^%ZTLOAD
- IF $DATA(ZTSK)&('$GET(SUSPT))&('$GET(PSOEXREP))
- WRITE !,"PROFILE IS QUEUED TO PRINT",!!
- KILL G
- IF '$GET(SUSPT)
- KILL ZTSK
- DO ^%ZISC
- QUEUP IF $GET(POP)&($GET(PSONOPRT))
- Begin DoDot:1
- +1 SET PSOQFLAG=1
- End DoDot:1
- IF $GET(PSOQFLAG)
- QUIT
- SET PSNP=0
- SET PSOPRPAS=$GET(HOLDRPAS)
- IF PSOPRPAS']""
- KILL PSOPRPAS
- KILL HOLDRPAS
- GOTO D1
- +2 QUIT
- +3 ;
- S GOTO S^PSORXL1
- SUS SET X="IBACUS"
- XECUTE ^%ZOSF("TEST")
- KILL X
- IF '$TEST
- GOTO SUSL1
- +1 NEW TRIDA
- SET TRIDA=DA
- IF '$$TRI^IBACUS()
- SET DA=TRIDA
- GOTO SUSL1
- +2 IF $GET(RXRP(TRIDA))!($GET(RXPR(TRIDA)))!($GET(RXRH(TRIDA)))
- SET DA=TRIDA
- GOTO SUSL1
- +3 NEW PBILL,PSTRD,PSTRDZ,PSTRF,PSTRP,GGG
- +4 DO DEV^PSOCPTRI
- +5 IF '$GET(DT)
- SET DT=$$DT^XLFDT
- +6 SET PSTRP=$PIECE($GET(^PSRX(+TRIDA,0)),"^",2)
- SET PSTRD=+$GET(PSOSITE)
- SET PSTRDZ=+$GET(DUZ)
- +7 SET PSTRF=0
- FOR GGG=0:0
- SET GGG=$ORDER(^PSRX(+TRIDA,1,GGG))
- IF 'GGG
- QUIT
- SET PSTRF=GGG
- +8 SET PBILL=$$CHPUS^IBACUS(PSTRP,DT,TRIDA,PSTRF,PSOLAP,PSTRD,PSTRDZ)
- +9 IF '$GET(PBILL)
- SET DA=TRIDA
- GOTO SUSL1
- +10 SET FLD(99)="99"
- SET FLD(99.1)="Awaiting CHAMPUS billing approval"
- +11 NEW RSDT,ACT,PSUS,RXF,RFN,I,PSDA,NOW,IR,FDA
- +12 SET DA=TRIDA
- DO H^PSOCPTRH
- +13 QUIT
- SUSL1 GOTO SUS^PSORXL1
- H1 SET PPL1=1
- IF '$GET(PPL)
- SET PPL=$GET(PSORX("PSOL",PPL1))
- +1 IF '$DATA(^TMP($JOB,"PSOBILL"))
- DO NOOR^PSOHLD
- IF $DATA(DIRUT)
- KILL DIRUT
- GOTO PSORXL
- +2 IF $DATA(^TMP($JOB,"PSOBILL"))
- SET FLD(99)="99"
- SET FLD(99.1)="Awaiting CHAMPUS billing approval"
- GOTO H
- +3 IF $GET(PPL)']""
- GOTO D1
- DO FLD^PSOHLD
- IF $DATA(DUOUT)!($DATA(DIRUT))
- KILL DIRUT,DUOUT,FLD,DIR
- GOTO LBL
- H KILL SPPL
- IF $DATA(DTOUT)
- GOTO D1
- SET SPPL=""
- FOR PI=1:1
- IF $PIECE(PPL,",",PI)=""
- QUIT
- Begin DoDot:1
- +1 SET DA=$PIECE(PPL,",",PI)
- IF $PIECE(^PSRX(DA,"STA"),"^")<10
- IF $PIECE(^("STA"),"^")'=4
- DO @$SELECT($DATA(^TMP($JOB,"PSOBILL")):"H^PSOCPTRH",1:"H^PSOHLD")
- QUIT
- +2 IF $PIECE(^PSRX(DA,"STA"),"^")=4
- SET SPPL=SPPL_DA_","
- QUIT
- End DoDot:1
- +3 IF $GET(SPPL)]""
- Begin DoDot:1
- +4 WRITE !!,$CHAR(7),"Drug Interaction Rx(s) "
- FOR I=1:1
- IF $PIECE(SPPL,",",I)=""
- QUIT
- WRITE $PIECE(^PSRX($PIECE(SPPL,",",I),0),"^")_", "
- +5 SET PPL=SPPL
- SET DG=1
- DO Q
- KILL DG,SPPL
- End DoDot:1
- D1 KILL RXLTOP
- IF $GET(PPL1)
- IF $ORDER(PSORX("PSOL",$GET(PPL1)))
- SET PPL1=$ORDER(PSORX("PSOL",PPL1))
- SET PPL=PSORX("PSOL",PPL1)
- GOTO @$SELECT(LBL="H":"H",LBL="L":"P1",1:"QLBL")
- RXS IF $DATA(RXRS)
- IF '$GET(PSOKLRXS)
- IF $GET(SLBL)="H"!($GET(SLBL)="S")!($GET(SLBL)="^")!($GET(SLBL)="")
- Begin DoDot:1
- +1 KILL PPL,PSORX("PSOL")
- SET PSOSONE=1
- DO PPLADD^PSOSUPOE
- +2 IF $GET(PPL)=""
- QUIT
- WRITE !!,"You have selected the following Rx(s) to be pulled from suspense:",!
- +3 FOR RXSS=0:0
- SET RXSS=$ORDER(RXRS(RXSS))
- IF 'RXSS
- QUIT
- WRITE !," Rx # ",$PIECE($GET(^PSRX(+$GET(RXSS),0)),"^"),?23,$PIECE($GET(^PSDRUG(+$PIECE($GET(^PSRX(+$GET(RXSS),0)),"^",6),0)),"^")
- +4 KILL DIR
- WRITE !
- SET DIR(0)="Y"
- SET DIR("B")="YES"
- SET DIR("A")="Do you still want to pull these Rx(s) from suspense"
- DO ^DIR
- KILL DIR
- IF Y'=1
- WRITE !!,"Rx(s) will remain in Suspense!",!
- DO RESET^PSOSUPOE
- KILL RXRS,PPL
- End DoDot:1
- IF $GET(PPL)'=""
- GOTO Q
- +5 IF '$GET(PSOKLRXS)
- KILL RXRS
- KILL ^TMP($JOB,"PSOBILL"),RXPR,RXRP,RXRH,RXSS,LBL,PPL1,PPL,DIR,%DT,%,SD,COUNT,EXDT,L,PDUZ,REF,REPRINT,RFDATE,RFL1,RFLL,RXN,WARN,ZY,FLD,PI,ZD,ACT,X,Y,DIRUT,DUOUT,DTOUT,DIROUT
- QUIT
- P SET PPL1=1
- IF '$GET(PPL)
- SET PPL=$GET(PSORX("PSOL",1))
- IF $GET(PPL)']""
- GOTO D1
- +1 IF $GET(PSOLAP)']""
- WRITE !
- KILL POP,ZTSK
- SET %ZIS="M"
- SET %ZIS("A")="Select LABEL DEVICE: "
- DO ^%ZIS
- KILL %ZIS("A")
- IF POP
- GOTO LBL
- SET PSOLAP=ION
- PZ ; IHS/CIA/PLS - 12/23/03 - PZ line label added
- SET IOP=PSOLAP
- DO ^%ZIS
- +1 ; IHS/CIA/PLS - 12/23/03 Wait for busy printer prompt.
- IF POP
- WRITE !,"The label printer is busy, do you want to wait? "
- SET %=1
- DO YN^DICN
- KILL POP
- IF %=2
- QUIT
- KILL %,%Y
- GOTO PZ
- +2 NEW PSOIOS
- SET PSOIOS=IOS
- DO DEVBAR^PSOBMST
- P1 ; IHS/CIA/PLS - 12/23/03 - Call IHS Label routine
- +1 ;S PSOBARS=PSOBAR1]""&(PSOBAR0]"")&$P(PSOPAR,"^",10),PDUZ=DUZ D DQ1^PSOLBL,^%ZISC
- +2 SET PSOBARS=PSOBAR1]""&(PSOBAR0]"")&$PIECE(PSOPAR,"^",10)
- SET PDUZ=DUZ
- DO DQ1^APSPLBL
- DO ^%ZISC
- +3 IF '$PIECE(PSOPAR,"^",8)!(+$GET(REPRINT))!($GET(PSOFROM)'="NEW")
- GOTO D1
- IF $GET(PSOPROP)']""
- SET PSOION=ION
- SET %ZIS="M"
- SET %ZIS("A")="Select PROFILE DEVICE: "
- DO ^%ZIS
- KILL %ZIS("A")
- IF POP
- GOTO D1
- SET PSOPROP=ION
- +4 SET IOP=PSOPROP
- DO ^%ZIS
- DO DQ^PSOPRF
- DO ^%ZISC
- GOTO D1
- +5 QUIT
- RXSQ KILL RXRS
- GOTO RXS
- +1 QUIT
- RSAVE NEW PMX
- +1 SET PMX=""
- FOR
- SET PMX=$ORDER(RXRP(PMX))
- IF PMX=""
- QUIT
- SET PSORSAVE(PMX)=RXRP(PMX)
- +2 SET PMX=""
- FOR
- SET PMX=$ORDER(RXPR(PMX))
- IF PMX=""
- QUIT
- SET PSOPSAVE(PMX)=RXPR(PMX)
- +3 SET PMX=""
- FOR
- SET PMX=$ORDER(RXRH(PMX))
- IF PMX=""
- QUIT
- SET PSOHSAVE(PMX)=RXRH(PMX)
- +4 QUIT
- RREST NEW PMXZ
- +1 SET PMXZ=""
- FOR
- SET PMXZ=$ORDER(PSORSAVE(PMXZ))
- IF PMXZ=""
- QUIT
- SET RXRP(PMXZ)=PSORSAVE(PMXZ)
- +2 SET PMXZ=""
- FOR
- SET PMXZ=$ORDER(PSOPSAVE(PMXZ))
- IF PMXZ=""
- QUIT
- SET RXPR(PMXZ)=PSOPSAVE(PMXZ)
- +3 SET PSMX=""
- FOR
- SET PMXZ=$ORDER(PSOHSAVE(PMXZ))
- IF PMXZ=""
- QUIT
- SET RXRH(PMXZ)=PSOHSAVE(PMXZ)
- +4 QUIT
- +5 ; Store Fill Priority
- SAVEPRI(RXS) ;EP-
- +1 NEW PPLARY,RX,LFN
- +2 IF '$LENGTH($GET(RXS))
- QUIT
- +3 DO BPPLARY^APSPFUNC(RXS)
- +4 SET RX=0
- +5 FOR
- SET RX=$ORDER(PPLARY(RX))
- IF 'RX
- QUIT
- Begin DoDot:1
- +6 IF '$DATA(^PSRX(RX,0))
- QUIT
- +7 SET LFN=+$ORDER(^(1,$CHAR(1)),-1)
- +8 ;Refill
- IF LFN
- Begin DoDot:2
- +9 SET $PIECE(^PSRX(RX,1,LFN,9999999),U,18)=APSPPRIO
- End DoDot:2
- +10 ;
- IF '$TEST
- Begin DoDot:2
- +11 SET $PIECE(^PSRX(RX,999999931),U,8)=APSPPRIO
- End DoDot:2
- End DoDot:1
- +12 QUIT