PSOORROC ;BHAM-ISC/EJW,SAB - Remote Data Interoperability Order Checks ;05/28/08
;;7.0;OUTPATIENT PHARMACY;**251**;DEC 1997;Build 202
;
;External references to ^ORRDI1 supported by DBIA 4659
;External references to ^XTMP("ORRDI" supported by DBIA 4660
;External reference to ^PS(50.605 supported by DBIA 696
;External reference to ^PSDRUG supported by DBIA 221
;External reference to ^PS(56 supported by DBIA 2229
;External reference to ^PS(50.416 supported by DBIA 692
;External reference to DDIEX^PSNAPIS supported by DBIA 2574
REMOTE(PSODFN,DREN) ;
; Input: DFN: PATIENT file (#2) IEN
; : DREN: DRUG file (#50) IEN of order being checked
I $T(HAVEHDR^ORRDI1)']"" Q
I '$$HAVEHDR^ORRDI1 Q
I $D(^XTMP("ORRDI","OUTAGE INFO","DOWN")) Q
N PSORDI,RDIINST,RDIVUID,RDIRX,RDIDNAM,RDISTA,RDISIG,RDIDAYS,RDIQTY,RDIFILL,RDIEXP,RDIISS,RDIFILL,RDIREF,RDIPHYS,PSOPROD,PSOCLASS,DRNM,RDITMP,PSODC,IT,PSOICT,NDF,RDIDI,PSOPRODA,PSOFILE,PSOSIG
I '$G(DT) S DT=$$DT^XLFDT
S PSORDI=0
I $T(GET^ORRDI1)]"" S PSORDI=$$GET^ORRDI1(PSODFN,"PSOO")
I PSORDI<1 Q
I '$D(^XTMP("ORRDI","PSOO",PSODFN)) Q
K ^TMP($J,"PSORDI")
D PARSE,FILTER
I '$D(^TMP($J,"PSORDI")) Q
D DRGNAME ; GET VA PRODUCT FILE NAME FOR FILE 50 DRUG BEING CHECKED
S PSORDI="" F S PSORDI=$O(^TMP($J,"PSORDI",PSORDI)) Q:'PSORDI S RDITMP=^(PSORDI) D
.S RDIINST=$P(RDITMP,"^")
.S RDIVUID=$P(RDITMP,"^",2)
.I RDIVUID="" Q
.S RDIDNAM=$P(RDITMP,"^",3)
.S RDISTA=$P(RDITMP,"^",4)
.S RDIRX=$P(RDITMP,"^",5)
.S RDIFILL=$P(RDITMP,"^",6)
.S RDIDAYS=$P(RDITMP,"^",7) I $E(RDIDAYS)="D" S RDIDAYS=$P(RDIDAYS,"D",2)
.S RDIQTY=$P(RDITMP,"^",8)
.S RDIREF=$P(RDITMP,"^",9)
.S RDIEXP=$P(RDITMP,"^",10)
.S RDIPHYS=$P(RDITMP,"^",11)
.S RDIISS=$P(RDITMP,"^",12)
.S DRNM=$G(PSODRUG("NAME"))
.D GETPROD
.I DRNM'="" I PSODRUG("NAME")=DRNM S DD=$G(DD)+1,^TMP($J,"DD",DD,0)=PSODRUG("IEN")_"^"_PSODRUG("NAME")_"^"_"^"_RDIRX_"R;O"_"^"_RDIINST D Q:'$G(PSOPHI)
..S ^TMP($J,"DD",DD,1)=RDIDNAM_"^"_RDISTA_"^"_RDIFILL_"^"_RDIDAYS_"^"_RDIQTY_"^"_RDIREF_"^"_RDIEXP_"^"_RDIPHYS_"^"_RDIISS
..M ^TMP($J,"DD",DD,1)=^TMP($J,"PSORDI",PSORDI,"SIG")
Q
;
PARSE ; PULL INFORMATION FROM ^XTMP
N PSORDI,LOCAL,NEWISS,BADEXP,PSOPRE,PSO30,NEWDC,NEWEXP
S PSORDI=0 F S PSORDI=$O(^XTMP("ORRDI","PSOO",PSODFN,PSORDI)) Q:'PSORDI D
.S RDISTA=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,5,0))
.I RDISTA="DELETED" Q
.S RDIINST=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,1,0))
.S RDIDNAM=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,2,0))
.S RDIVUID=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,3,0))
.I RDIVUID="" Q
.S RDIRX=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,4,0))
.S RDIQTY=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,6,0)),RDIDAYS=$P(RDIQTY,";",2),RDIQTY=$P(RDIQTY,";")
.I $E(RDIDAYS)="D" S RDIDAYS=$P(RDIDAYS,"D",2)
.S RDIEXP=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,7,0))
.S RDIISS=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,8,0))
.I RDIEXP?."/" S BADEXP=1 D I BADEXP Q
..I RDIISS?."/" Q
..S PSOPRE=$E(DT) I $P(RDIISS,"/",3)>($E(DT,2,3)+1) S PSOPRE=PSOPRE-1
..S NEWISS=PSOPRE_$P(RDIISS,"/",3)_$P(RDIISS,"/")_$P(RDIISS,"/",2) I NEWISS>(DT-10000) S RDIEXP=RDIISS,BADEXP=0
.I RDISTA["EXPIRE" S PSO30=0 D I PSO30 Q
..S PSOPRE=$E(DT) I $P(RDIEXP,"/",3)>($E(DT,2,3)+1) S PSO30=1 Q
..S NEWEXP=PSOPRE_$P(RDIEXP,"/",3)_$P(RDIEXP,"/")_$P(RDIEXP,"/",2)
..S X1=NEWEXP,X2=30 D C^%DTC I X<DT S PSO30=1
.I RDIRX'="" S LOCAL=0 D CHKLOCAL I LOCAL Q
.S RDIFILL=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,9,0))
.I RDISTA["DISCONT" S PSO30=0 D I PSO30 Q
..S PSOPRE=$E(DT) I $P(RDIFILL,"/",3)>($E(DT,2,3)+1) S PSO30=1 Q
..S NEWDC=PSOPRE_$P(RDIFILL,"/",3)_$P(RDIFILL,"/")_$P(RDIFILL,"/",2)
..S X1=NEWDC,X2=30+RDIDAYS D C^%DTC I X<DT S PSO30=1
.S RDIREF=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,10,0))
.S RDIPHYS=$G(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,11,0))
.S PSOSIG="" F S PSOSIG=$O(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,14,PSOSIG)) Q:PSOSIG="" S PSOSIG(PSOSIG)=^(PSOSIG)
.S ^TMP($J,"PSORDI",PSORDI)=RDIINST_"^"_RDIVUID_"^"_RDIDNAM_"^"_RDISTA_"^"_RDIRX_"^"_RDIFILL_"^"_RDIDAYS_"^"_RDIQTY_"^"_RDIREF_"^"_RDIEXP_"^"_RDIPHYS_"^"_RDIISS
.S PSOSIG="" F S PSOSIG=$O(PSOSIG(PSOSIG)) Q:PSOSIG="" S ^TMP($J,"PSORDI",PSORDI,"SIG",PSOSIG)=PSOSIG(PSOSIG)
Q
;
CHKLOCAL ; IF SAME RX NUMBER AND ISSUE DATE - LOCAL RX
N PSOISS
I $D(^PSRX("B",RDIRX)) D
.N PSORX
.S PSORX=$O(^PSRX("B",RDIRX,"")) I 'PSORX Q
.S PSOISS=$P($G(^PSRX(PSORX,0)),"^",13)
.S PSOISS=$E(PSOISS,4,5)_"/"_$E(PSOISS,6,7)_"/"_$E(PSOISS,2,3)
.I PSOISS=RDIISS S LOCAL=1 Q
Q
;
VAPROD(PSOPROD) ; GET VA PRODUCT FILE NAME AND DRUG CLASS
S PSOCLASS=$$DCLCODE^PSNAPIS(,PSOPROD)
S DRNM=$P($$PROD0^PSNAPIS(,PSOPROD),"^")
Q
;
DRGNAME ;
N PSOY
S PSOY=DREN_"^"_$P($G(^PSDRUG(DREN,0)),"^"),PSOY(0)=$G(^PSDRUG(DREN,0))
S PSODRUG("IEN")=+PSOY,PSODRUG("VA CLASS")=$P(PSOY(0),"^",2)
S PSODRUG("NDF")=$S($G(^PSDRUG(+PSOY,"ND"))]"":+^("ND")_"A"_$P(^("ND"),"^",3),1:0)
I PSODRUG("NDF")=0 Q
S PSOPROD=$P(PSODRUG("NDF"),"A",2) I PSOPROD D VAPROD(PSOPROD) S PSODRUG("NAME")=DRNM
Q
;
FILTER ; FOR SAME DRUG VUID FOR SAME SITE, KEEP 1 ENTRY - CHECK BY ACTIVE STATUS FIRST THEN BY GREATEST EXPIRATION DATE
N XX,RDI,OLDEXP,RDIEXP,RDIEXP2,OLDEXP2,PSORDI,RDISTA,OLDSTA,OLDRDI,ZZ
S PSORDI=0
F S PSORDI=$O(^TMP($J,"PSORDI",PSORDI)) Q:'PSORDI D
.S XX=$G(^TMP($J,"PSORDI",PSORDI)),RDIINST=$P(XX,"^"),RDIVUID=$P(XX,"^",2),RDISTA=$P(XX,"^",4),RDIEXP=$P(XX,"^",10) Q:RDIINST="" Q:RDIVUID="" I RDIEXP="" Q
.I $D(RDI(RDIINST,RDIVUID)) S ZZ=RDI(RDIINST,RDIVUID) D Q
..I RDISTA="ACTIVE"!(RDISTA["SUSPEN") D Q
...S OLDSTA=$P(ZZ,"^",2) I OLDSTA["ACTIVE"!(OLDSTA["SUSPEN") D CHKEXP Q
...S OLDRDI=$P(ZZ,"^") K ^TMP($J,"PSORDI",OLDRDI) D SETRDI
..S OLDSTA=$P(ZZ,"^",2) I OLDSTA["ACTIVE"!(OLDSTA["SUSPEN") K ^TMP($J,"PSORDI",PSORDI) Q
..D CHKEXP ; ALL OTHER STATUSES - KEEP BY GREATER EXPIRATION DATE
.D SETRDI
Q
;
CHKEXP ;
N PSOPRE
S OLDEXP=$P(ZZ,"^",3) D I OLDEXP2>RDIEXP2 K ^TMP($J,"PSORDI",PSORDI) Q
.S PSOPRE=$E(DT) I $P(RDIEXP,"/",3)>($E(DT,2,3)+1) S PSOPRE=PSOPRE-1
.S RDIEXP2=PSOPRE_$P(RDIEXP,"/",3)_$P(RDIEXP,"/")_$P(RDIEXP,"/",2)
.S PSOPRE=$E(DT) I $P(OLDEXP,"/",3)>($E(DT,2,3)+1) S PSOPRE=PSOPRE-1
.S OLDEXP2=PSOPRE_$P(OLDEXP,"/",3)_$P(OLDEXP,"/")_$P(OLDEXP,"/",2)
S OLDRDI=$P(ZZ,"^") K ^TMP($J,"PSORDI",OLDRDI) D SETRDI
Q
;
SETRDI ;
S RDI(RDIINST,RDIVUID)=PSORDI_"^"_RDISTA_"^"_RDIEXP
Q
;
GETPROD ;
S PSOFILE=50.68
S DRNM="",PSOCLASS="",PSOPROD=0
N PSOPR
K PSOPRODA
N DIC
D GETIREF^XTID(PSOFILE,.01,RDIVUID,"PSOPRODA",1) I 'PSOPRODA Q
S PSOPR="" F S PSOPR=$O(PSOPRODA(PSOFILE,.01,PSOPR)) Q:PSOPR="" D Q:DRNM'="" Q:PSOCLASS'=""
.I +(PSOPRODA(PSOFILE,.01,PSOPR)) S PSOPROD=+PSOPR D VAPROD(PSOPROD) Q
.I +(PSOPRODA(PSOFILE,.01,PSOPR))=0 I '$O(PSOPRODA(PSOFILE,.01,PSOPR)) S PSOPROD=+PSOPR D VAPROD(PSOPROD) ; USE LAST ENTRY IF ALL ARE INACTIVE
Q
;
RDUP ;display Remote orders - duplicate drug
N PSOD0,PSOD1,PSOREMX,RDIINST,FSIG,PSOULN,PSOLF,PSORDI
S $P(PSOULN,"-",79)="",PSOT="DD"
S PSORDI=0 F S PSORDI=$O(^TMP($J,"DD",PSORDI)) Q:'PSORDI S PSOD0=^TMP($J,"DD",PSORDI,0),PSOD1=^(1),PSOREMX=$P($P(PSOD0,"^",4),";"),RDIINST=$P(PSOD0,"^",5),PSOLF=$P(PSOD1,"^",3) D
.W !,PSOULN,!,"Duplicate Drug in Remote Rx",!!
.W "Remote Location "_RDIINST,!,$J("Rx #: ",20)_$E(PSOREMX,1,$L(PSOREMX)-1),!,$J("Drug: ",20)_$P(PSOD1,"^")
.D FSIG^PSOORRD2(.FSIG)
.W !,$J("SIG: ",20) F I=1:1 Q:'$D(FSIG(I)) W ?20,FSIG(I),!
.W $J("QTY: ",20)_$P(PSOD1,"^",5),?44,$J("Refills remaining: ",20)_$P(PSOD1,"^",6)
.W !,$J("Provider: ",20)_$P(PSOD1,"^",8),?44,$J("Issued: ",20)_$P(PSOD1,"^",9)
.W !,$J("Status: ",20)_$P(PSOD1,"^",2),?44,$J("Last filled on: ",20)_PSOLF
.W !?44,$J("Days Supply: ",20)_$P(PSOD1,"^",4)
.K DIR W ! S DIR(0)="E",DIR("?")="Press Return to continue",DIR("A")="Press Return to continue..." D ^DIR W !
K PSOT,DIR,X,Y
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOORROC 7881 printed Dec 13, 2024@02:32:23 Page 2
PSOORROC ;BHAM-ISC/EJW,SAB - Remote Data Interoperability Order Checks ;05/28/08
+1 ;;7.0;OUTPATIENT PHARMACY;**251**;DEC 1997;Build 202
+2 ;
+3 ;External references to ^ORRDI1 supported by DBIA 4659
+4 ;External references to ^XTMP("ORRDI" supported by DBIA 4660
+5 ;External reference to ^PS(50.605 supported by DBIA 696
+6 ;External reference to ^PSDRUG supported by DBIA 221
+7 ;External reference to ^PS(56 supported by DBIA 2229
+8 ;External reference to ^PS(50.416 supported by DBIA 692
+9 ;External reference to DDIEX^PSNAPIS supported by DBIA 2574
REMOTE(PSODFN,DREN) ;
+1 ; Input: DFN: PATIENT file (#2) IEN
+2 ; : DREN: DRUG file (#50) IEN of order being checked
+3 IF $TEXT(HAVEHDR^ORRDI1)']""
QUIT
+4 IF '$$HAVEHDR^ORRDI1
QUIT
+5 IF $DATA(^XTMP("ORRDI","OUTAGE INFO","DOWN"))
QUIT
+6 NEW PSORDI,RDIINST,RDIVUID,RDIRX,RDIDNAM,RDISTA,RDISIG,RDIDAYS,RDIQTY,RDIFILL,RDIEXP,RDIISS,RDIFILL,RDIREF,RDIPHYS,PSOPROD,PSOCLASS,DRNM,RDITMP,PSODC,IT,PSOICT,NDF,RDIDI,PSOPRODA,PSOFILE,PSOSIG
+7 IF '$GET(DT)
SET DT=$$DT^XLFDT
+8 SET PSORDI=0
+9 IF $TEXT(GET^ORRDI1)]""
SET PSORDI=$$GET^ORRDI1(PSODFN,"PSOO")
+10 IF PSORDI<1
QUIT
+11 IF '$DATA(^XTMP("ORRDI","PSOO",PSODFN))
QUIT
+12 KILL ^TMP($JOB,"PSORDI")
+13 DO PARSE
DO FILTER
+14 IF '$DATA(^TMP($JOB,"PSORDI"))
QUIT
+15 ; GET VA PRODUCT FILE NAME FOR FILE 50 DRUG BEING CHECKED
DO DRGNAME
+16 SET PSORDI=""
FOR
SET PSORDI=$ORDER(^TMP($JOB,"PSORDI",PSORDI))
if 'PSORDI
QUIT
SET RDITMP=^(PSORDI)
Begin DoDot:1
+17 SET RDIINST=$PIECE(RDITMP,"^")
+18 SET RDIVUID=$PIECE(RDITMP,"^",2)
+19 IF RDIVUID=""
QUIT
+20 SET RDIDNAM=$PIECE(RDITMP,"^",3)
+21 SET RDISTA=$PIECE(RDITMP,"^",4)
+22 SET RDIRX=$PIECE(RDITMP,"^",5)
+23 SET RDIFILL=$PIECE(RDITMP,"^",6)
+24 SET RDIDAYS=$PIECE(RDITMP,"^",7)
IF $EXTRACT(RDIDAYS)="D"
SET RDIDAYS=$PIECE(RDIDAYS,"D",2)
+25 SET RDIQTY=$PIECE(RDITMP,"^",8)
+26 SET RDIREF=$PIECE(RDITMP,"^",9)
+27 SET RDIEXP=$PIECE(RDITMP,"^",10)
+28 SET RDIPHYS=$PIECE(RDITMP,"^",11)
+29 SET RDIISS=$PIECE(RDITMP,"^",12)
+30 SET DRNM=$GET(PSODRUG("NAME"))
+31 DO GETPROD
+32 IF DRNM'=""
IF PSODRUG("NAME")=DRNM
SET DD=$GET(DD)+1
SET ^TMP($JOB,"DD",DD,0)=PSODRUG("IEN")_"^"_PSODRUG("NAME")_"^"_"^"_RDIRX_"R;O"_"^"_RDIINST
Begin DoDot:2
+33 SET ^TMP($JOB,"DD",DD,1)=RDIDNAM_"^"_RDISTA_"^"_RDIFILL_"^"_RDIDAYS_"^"_RDIQTY_"^"_RDIREF_"^"_RDIEXP_"^"_RDIPHYS_"^"_RDIISS
+34 MERGE ^TMP($JOB,"DD",DD,1)=^TMP($JOB,"PSORDI",PSORDI,"SIG")
End DoDot:2
if '$GET(PSOPHI)
QUIT
End DoDot:1
+35 QUIT
+36 ;
PARSE ; PULL INFORMATION FROM ^XTMP
+1 NEW PSORDI,LOCAL,NEWISS,BADEXP,PSOPRE,PSO30,NEWDC,NEWEXP
+2 SET PSORDI=0
FOR
SET PSORDI=$ORDER(^XTMP("ORRDI","PSOO",PSODFN,PSORDI))
if 'PSORDI
QUIT
Begin DoDot:1
+3 SET RDISTA=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,5,0))
+4 IF RDISTA="DELETED"
QUIT
+5 SET RDIINST=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,1,0))
+6 SET RDIDNAM=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,2,0))
+7 SET RDIVUID=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,3,0))
+8 IF RDIVUID=""
QUIT
+9 SET RDIRX=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,4,0))
+10 SET RDIQTY=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,6,0))
SET RDIDAYS=$PIECE(RDIQTY,";",2)
SET RDIQTY=$PIECE(RDIQTY,";")
+11 IF $EXTRACT(RDIDAYS)="D"
SET RDIDAYS=$PIECE(RDIDAYS,"D",2)
+12 SET RDIEXP=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,7,0))
+13 SET RDIISS=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,8,0))
+14 IF RDIEXP?."/"
SET BADEXP=1
Begin DoDot:2
+15 IF RDIISS?."/"
QUIT
+16 SET PSOPRE=$EXTRACT(DT)
IF $PIECE(RDIISS,"/",3)>($EXTRACT(DT,2,3)+1)
SET PSOPRE=PSOPRE-1
+17 SET NEWISS=PSOPRE_$PIECE(RDIISS,"/",3)_$PIECE(RDIISS,"/")_$PIECE(RDIISS,"/",2)
IF NEWISS>(DT-10000)
SET RDIEXP=RDIISS
SET BADEXP=0
End DoDot:2
IF BADEXP
QUIT
+18 IF RDISTA["EXPIRE"
SET PSO30=0
Begin DoDot:2
+19 SET PSOPRE=$EXTRACT(DT)
IF $PIECE(RDIEXP,"/",3)>($EXTRACT(DT,2,3)+1)
SET PSO30=1
QUIT
+20 SET NEWEXP=PSOPRE_$PIECE(RDIEXP,"/",3)_$PIECE(RDIEXP,"/")_$PIECE(RDIEXP,"/",2)
+21 SET X1=NEWEXP
SET X2=30
DO C^%DTC
IF X<DT
SET PSO30=1
End DoDot:2
IF PSO30
QUIT
+22 IF RDIRX'=""
SET LOCAL=0
DO CHKLOCAL
IF LOCAL
QUIT
+23 SET RDIFILL=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,9,0))
+24 IF RDISTA["DISCONT"
SET PSO30=0
Begin DoDot:2
+25 SET PSOPRE=$EXTRACT(DT)
IF $PIECE(RDIFILL,"/",3)>($EXTRACT(DT,2,3)+1)
SET PSO30=1
QUIT
+26 SET NEWDC=PSOPRE_$PIECE(RDIFILL,"/",3)_$PIECE(RDIFILL,"/")_$PIECE(RDIFILL,"/",2)
+27 SET X1=NEWDC
SET X2=30+RDIDAYS
DO C^%DTC
IF X<DT
SET PSO30=1
End DoDot:2
IF PSO30
QUIT
+28 SET RDIREF=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,10,0))
+29 SET RDIPHYS=$GET(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,11,0))
+30 SET PSOSIG=""
FOR
SET PSOSIG=$ORDER(^XTMP("ORRDI","PSOO",PSODFN,PSORDI,14,PSOSIG))
if PSOSIG=""
QUIT
SET PSOSIG(PSOSIG)=^(PSOSIG)
+31 SET ^TMP($JOB,"PSORDI",PSORDI)=RDIINST_"^"_RDIVUID_"^"_RDIDNAM_"^"_RDISTA_"^"_RDIRX_"^"_RDIFILL_"^"_RDIDAYS_"^"_RDIQTY_"^"_RDIREF_"^"_RDIEXP_"^"_RDIPHYS_"^"_RDIISS
+32 SET PSOSIG=""
FOR
SET PSOSIG=$ORDER(PSOSIG(PSOSIG))
if PSOSIG=""
QUIT
SET ^TMP($JOB,"PSORDI",PSORDI,"SIG",PSOSIG)=PSOSIG(PSOSIG)
End DoDot:1
+33 QUIT
+34 ;
CHKLOCAL ; IF SAME RX NUMBER AND ISSUE DATE - LOCAL RX
+1 NEW PSOISS
+2 IF $DATA(^PSRX("B",RDIRX))
Begin DoDot:1
+3 NEW PSORX
+4 SET PSORX=$ORDER(^PSRX("B",RDIRX,""))
IF 'PSORX
QUIT
+5 SET PSOISS=$PIECE($GET(^PSRX(PSORX,0)),"^",13)
+6 SET PSOISS=$EXTRACT(PSOISS,4,5)_"/"_$EXTRACT(PSOISS,6,7)_"/"_$EXTRACT(PSOISS,2,3)
+7 IF PSOISS=RDIISS
SET LOCAL=1
QUIT
End DoDot:1
+8 QUIT
+9 ;
VAPROD(PSOPROD) ; GET VA PRODUCT FILE NAME AND DRUG CLASS
+1 SET PSOCLASS=$$DCLCODE^PSNAPIS(,PSOPROD)
+2 SET DRNM=$PIECE($$PROD0^PSNAPIS(,PSOPROD),"^")
+3 QUIT
+4 ;
DRGNAME ;
+1 NEW PSOY
+2 SET PSOY=DREN_"^"_$PIECE($GET(^PSDRUG(DREN,0)),"^")
SET PSOY(0)=$GET(^PSDRUG(DREN,0))
+3 SET PSODRUG("IEN")=+PSOY
SET PSODRUG("VA CLASS")=$PIECE(PSOY(0),"^",2)
+4 SET PSODRUG("NDF")=$SELECT($GET(^PSDRUG(+PSOY,"ND"))]"":+^("ND")_"A"_$PIECE(^("ND"),"^",3),1:0)
+5 IF PSODRUG("NDF")=0
QUIT
+6 SET PSOPROD=$PIECE(PSODRUG("NDF"),"A",2)
IF PSOPROD
DO VAPROD(PSOPROD)
SET PSODRUG("NAME")=DRNM
+7 QUIT
+8 ;
FILTER ; FOR SAME DRUG VUID FOR SAME SITE, KEEP 1 ENTRY - CHECK BY ACTIVE STATUS FIRST THEN BY GREATEST EXPIRATION DATE
+1 NEW XX,RDI,OLDEXP,RDIEXP,RDIEXP2,OLDEXP2,PSORDI,RDISTA,OLDSTA,OLDRDI,ZZ
+2 SET PSORDI=0
+3 FOR
SET PSORDI=$ORDER(^TMP($JOB,"PSORDI",PSORDI))
if 'PSORDI
QUIT
Begin DoDot:1
+4 SET XX=$GET(^TMP($JOB,"PSORDI",PSORDI))
SET RDIINST=$PIECE(XX,"^")
SET RDIVUID=$PIECE(XX,"^",2)
SET RDISTA=$PIECE(XX,"^",4)
SET RDIEXP=$PIECE(XX,"^",10)
if RDIINST=""
QUIT
if RDIVUID=""
QUIT
IF RDIEXP=""
QUIT
+5 IF $DATA(RDI(RDIINST,RDIVUID))
SET ZZ=RDI(RDIINST,RDIVUID)
Begin DoDot:2
+6 IF RDISTA="ACTIVE"!(RDISTA["SUSPEN")
Begin DoDot:3
+7 SET OLDSTA=$PIECE(ZZ,"^",2)
IF OLDSTA["ACTIVE"!(OLDSTA["SUSPEN")
DO CHKEXP
QUIT
+8 SET OLDRDI=$PIECE(ZZ,"^")
KILL ^TMP($JOB,"PSORDI",OLDRDI)
DO SETRDI
End DoDot:3
QUIT
+9 SET OLDSTA=$PIECE(ZZ,"^",2)
IF OLDSTA["ACTIVE"!(OLDSTA["SUSPEN")
KILL ^TMP($JOB,"PSORDI",PSORDI)
QUIT
+10 ; ALL OTHER STATUSES - KEEP BY GREATER EXPIRATION DATE
DO CHKEXP
End DoDot:2
QUIT
+11 DO SETRDI
End DoDot:1
+12 QUIT
+13 ;
CHKEXP ;
+1 NEW PSOPRE
+2 SET OLDEXP=$PIECE(ZZ,"^",3)
Begin DoDot:1
+3 SET PSOPRE=$EXTRACT(DT)
IF $PIECE(RDIEXP,"/",3)>($EXTRACT(DT,2,3)+1)
SET PSOPRE=PSOPRE-1
+4 SET RDIEXP2=PSOPRE_$PIECE(RDIEXP,"/",3)_$PIECE(RDIEXP,"/")_$PIECE(RDIEXP,"/",2)
+5 SET PSOPRE=$EXTRACT(DT)
IF $PIECE(OLDEXP,"/",3)>($EXTRACT(DT,2,3)+1)
SET PSOPRE=PSOPRE-1
+6 SET OLDEXP2=PSOPRE_$PIECE(OLDEXP,"/",3)_$PIECE(OLDEXP,"/")_$PIECE(OLDEXP,"/",2)
End DoDot:1
IF OLDEXP2>RDIEXP2
KILL ^TMP($JOB,"PSORDI",PSORDI)
QUIT
+7 SET OLDRDI=$PIECE(ZZ,"^")
KILL ^TMP($JOB,"PSORDI",OLDRDI)
DO SETRDI
+8 QUIT
+9 ;
SETRDI ;
+1 SET RDI(RDIINST,RDIVUID)=PSORDI_"^"_RDISTA_"^"_RDIEXP
+2 QUIT
+3 ;
GETPROD ;
+1 SET PSOFILE=50.68
+2 SET DRNM=""
SET PSOCLASS=""
SET PSOPROD=0
+3 NEW PSOPR
+4 KILL PSOPRODA
+5 NEW DIC
+6 DO GETIREF^XTID(PSOFILE,.01,RDIVUID,"PSOPRODA",1)
IF 'PSOPRODA
QUIT
+7 SET PSOPR=""
FOR
SET PSOPR=$ORDER(PSOPRODA(PSOFILE,.01,PSOPR))
if PSOPR=""
QUIT
Begin DoDot:1
+8 IF +(PSOPRODA(PSOFILE,.01,PSOPR))
SET PSOPROD=+PSOPR
DO VAPROD(PSOPROD)
QUIT
+9 ; USE LAST ENTRY IF ALL ARE INACTIVE
IF +(PSOPRODA(PSOFILE,.01,PSOPR))=0
IF '$ORDER(PSOPRODA(PSOFILE,.01,PSOPR))
SET PSOPROD=+PSOPR
DO VAPROD(PSOPROD)
End DoDot:1
if DRNM'=""
QUIT
if PSOCLASS'=""
QUIT
+10 QUIT
+11 ;
RDUP ;display Remote orders - duplicate drug
+1 NEW PSOD0,PSOD1,PSOREMX,RDIINST,FSIG,PSOULN,PSOLF,PSORDI
+2 SET $PIECE(PSOULN,"-",79)=""
SET PSOT="DD"
+3 SET PSORDI=0
FOR
SET PSORDI=$ORDER(^TMP($JOB,"DD",PSORDI))
if 'PSORDI
QUIT
SET PSOD0=^TMP($JOB,"DD",PSORDI,0)
SET PSOD1=^(1)
SET PSOREMX=$PIECE($PIECE(PSOD0,"^",4),";")
SET RDIINST=$PIECE(PSOD0,"^",5)
SET PSOLF=$PIECE(PSOD1,"^",3)
Begin DoDot:1
+4 WRITE !,PSOULN,!,"Duplicate Drug in Remote Rx",!!
+5 WRITE "Remote Location "_RDIINST,!,$JUSTIFY("Rx #: ",20)_$EXTRACT(PSOREMX,1,$LENGTH(PSOREMX)-1),!,$JUSTIFY("Drug: ",20)_$PIECE(PSOD1,"^")
+6 DO FSIG^PSOORRD2(.FSIG)
+7 WRITE !,$JUSTIFY("SIG: ",20)
FOR I=1:1
if '$DATA(FSIG(I))
QUIT
WRITE ?20,FSIG(I),!
+8 WRITE $JUSTIFY("QTY: ",20)_$PIECE(PSOD1,"^",5),?44,$JUSTIFY("Refills remaining: ",20)_$PIECE(PSOD1,"^",6)
+9 WRITE !,$JUSTIFY("Provider: ",20)_$PIECE(PSOD1,"^",8),?44,$JUSTIFY("Issued: ",20)_$PIECE(PSOD1,"^",9)
+10 WRITE !,$JUSTIFY("Status: ",20)_$PIECE(PSOD1,"^",2),?44,$JUSTIFY("Last filled on: ",20)_PSOLF
+11 WRITE !?44,$JUSTIFY("Days Supply: ",20)_$PIECE(PSOD1,"^",4)
+12 KILL DIR
WRITE !
SET DIR(0)="E"
SET DIR("?")="Press Return to continue"
SET DIR("A")="Press Return to continue..."
DO ^DIR
WRITE !
End DoDot:1
+13 KILL PSOT,DIR,X,Y
+14 QUIT