PSOORAL3 ;BHAM ISC/MV,RBD - Build Listman activity log extension ;18 Feb 2025 8:56 AM
;;7.0;OUTPATIENT PHARMACY;**643,774**;DEC 1997;Build 15
ACT ;activity log
N CNT,PSORDATA,PSOTXT,PSOTXT1,PSOTXT2,X
S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" ",IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="Activity Log:"
S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="# Date/Time Reason Rx Ref Initiator Of Activity",IEN=IEN+1,$P(^TMP("PSOAL",$J,IEN,0),"=",79)="="
I '$O(^PSRX(DA,"A",0)) S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="There's NO Activity to report" Q
S CNT=0
F N=0:0 S N=$O(^PSRX(DA,"A",N)) Q:'N S P1=^(N,0) D
.I $P(P1,"^",2)="M" Q
.S PSORDATA="",PSOTXT="",PSOTXT1="",PSOTXT2=""
.S DAT=$$FMTE^XLFDT($P(P1,"^"),2)_" "
.S IEN=IEN+1,CNT=CNT+1,^TMP("PSOAL",$J,IEN,0)=CNT_$S(CNT<10:" ",1:" ")_$E(DAT,1,21),$P(RN," ",15)=" ",REA=$P(P1,"^",2)
.S REA=$F("HUCELPRWSIVDABXGKNO",REA)-1
.I REA D
..S STA=$P("HOLD^UNHOLD^DISCONTINUED^EDIT^RENEWED^PARTIAL^REINSTATE^REPRINT^SUSPENSE^RETURNED^INTERVENTION^DELETED^DRUG INTERACTION^PROCESSED^X-INTERFACE^PATIENT INSTR.^PKI/DEA^DISP COMPLETED^IERX^","^",REA)
..S ^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_STA_$E(RN,$L(STA)+1,15)
.E S $P(STA," ",15)=" ",^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_STA
.K STA,RN S $P(RN," ",15)=" ",RF=+$P(P1,"^",4)
.S RFT=$S(RF>0&(RF<6):"REFILL "_RF,RF=6:"PARTIAL",RF>6:"REFILL "_(RF-1),1:"ORIGINAL")
.S PSORDATA=$$REMDATA(DA,P1)
.S ^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_RFT_$E(RN,$L(RFT)+1,15)_$E($S($P(PSORDATA,"^",2)]"":$P(PSORDATA,"^",2),$D(^VA(200,+$P(P1,"^",3),0)):$P(^(0),"^"),1:$P(P1,"^",3)),1,24)
.I $P(P1,"^",5)]"" N PSOACBRK,PSOACBRV D
..K PSOTXT S PSOACBRV=$P(P1,"^",5)_$P(PSORDATA,"^")
..I (($L(PSOACBRV)#59)<$L($P(PSORDATA,"^"))),($P(PSORDATA,"^")]"") S PSOACBRV=$P(P1,"^",5),PSOTXT=" "_$P(PSORDATA,"^")
..K ^UTILITY($J,"W") S X=PSOACBRV,(DIWR,DIWL)=1,DIWF="C69" D ^DIWP F I=1:1:^UTILITY($J,"W",1) S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=$S(I=1:"Comments: ",1:" ")_$G(^UTILITY($J,"W",1,I,0))
..I $G(PSOTXT)]"" S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=PSOTXT K PSOTXT
..S PSOTXT1=$P(PSORDATA,"^",6),PSOTXT2=$P(PSORDATA,"^",5)
..I $P(P1,U,2)="N" D
...I $L(PSOTXT1_PSOTXT2)>25 S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Filled By: "_PSOTXT1,IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Checking Pharmacist: "_PSOTXT2
...I ($L(PSOTXT1_PSOTXT2)<26),($L(PSOTXT1_PSOTXT2)>1) S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Filled By: "_$S(PSOTXT1="":" ",1:PSOTXT1)_" Checking Pharmacist: "_PSOTXT2
.I $P($G(^PSRX(DA,"A",N,1)),"^")]"" S IEN=IEN+1,$P(^TMP("PSOAL",$J,IEN,0)," ",5)=$P($G(^PSRX(DA,"A",N,1)),"^") I $P($G(^PSRX(DA,"A",N,1)),"^",2)]"" S ^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_":"_$P($G(^PSRX(DA,"A",N,1)),"^",2)
.I $O(^PSRX(DA,"A",N,2,0)) F I=0:0 S I=$O(^PSRX(DA,"A",N,2,I)) Q:'I S MIG=^PSRX(DA,"A",N,2,I,0) D
..S:MIG["Mail Tracking Info.: " IEN=IEN+1,$P(^TMP("PSOAL",$J,IEN,0)," ",9)=" "
..F SG=1:1:$L(MIG) S:$L(^TMP("PSOAL",$J,IEN,0)_" "_$P(MIG," ",SG))>80 IEN=IEN+1,$P(^TMP("PSOAL",$J,IEN,0)," ",9)=" " S:$P(MIG," ",SG)'="" ^TMP("PSOAL",$J,IEN,0)=$G(^TMP("PSOAL",$J,IEN,0))_" "_$P(MIG," ",SG)
K MIG,SG,I,^UTILITY($J,"W"),DIWF,DIWL,DIWR
Q
;
REMDATA(PSOIEN,P1) ;
;Check if activity log needs to display the remote pharmacist (OneVA)
;P1 - ^PSRX(D0,"A",D1,0)
NEW PSOPF,PSOCHK,PSORMTE,PSORPH,PSOP2,PSOP3,PSOP4,PSOFLG
Q:+'$G(PSOIEN) ""
Q:$G(P1)="" ""
S PSOPF=0,PSOP2=$P(P1,U,2),PSOP3=$P(P1,U,3),PSOP4=$P(P1,U,4)
S PSOFLG=$S($P(P1,U,5)["HL7 ID":1,1:0)
I $S(PSOP2="P":1,PSOP2="X":1,PSOP2="N":1,1:0),$S(PSOP4=6:1,PSOP2="P":1,1:0) S PSOCHK=$$PFCHK(PSOIEN,$P(P1,U),,PSOFLG) Q:PSOCHK]"" PSOCHK ; took out PSOP4=0 from $S *774* WLC
I $S(PSOP2="X":1,PSOP2="N":1,1:0),$S(((PSOP4>0)&(PSOP4<6)):+PSOP4,((PSOP4>6)&(PSOP4<13)):1,1:0) S PSOCHK=$$RFCHK(PSOIEN,PSOP4,PSOFLG)
I $S(PSOP2="X":1,PSOP2="N":1,1:0),PSOP4=0 S PSOCHK=$$RFCHK(PSOIEN,PSOP4,PSOFLG) ; RBD *774 Original Fill path (PSOP4 = 0)
Q $G(PSOCHK)
;
RFCHK(PSOIEN,PSOP4,PSOFLG) ;
NEW PSOX1,PSOX2,PSOXRF,PSOXDIC4,PSOXRF,PSORFDT,PSOSNUM,PSOSNUMX,PSOSNAME
Q:'+$G(PSOIEN) ""
Q:$G(PSOP4)="" "" ; Q:'+$G(PSOP4) "" RBD *774 PSOP4 = 0 (denoting Original Fill) allowed through
I PSOP4>6 S PSOP4=PSOP4-1
S:PSOP4=0 PSOXRF=$G(^PSRX(PSOIEN,"OF")) ; RBD *774 Pick top-file level "OF" node when PSOP4 = 0
S:PSOP4>0 PSOXRF=$G(^PSRX(PSOIEN,1,PSOP4,"RF")) ; RBD *774 Check PSOP4 > 0 before accessing "RF" node
S PSOSNUM=$P(PSOXRF,U) ; RBD *774 Moved this to its own line since PSOXRF can be from "OF" now also
S PSOSNAME="",PSOX1=""
I PSOSNUM]"" S PSOSNAME=$$STATION(PSOSNUM)
S:PSOSNAME]"" PSOX1=$S(+$G(PSOFLG):" at ",1:" Processed at ")_PSOSNAME
I PSOP4=0 S PSOX2=PSOX1_U_$P(PSOXRF,U,2,3)_U_U_$P(PSOXRF,U,4,5) ; RBD *774 PSOP4 = 0: Use "OF" node
S:PSOP4>0 PSOX2=PSOX1_U_$P(PSOXRF,U,2,6) ; RBD *774 Check PSOP4 > 0 ("RF" node path)
Q $G(PSOX2)
;
PFCHK(PSOIEN,PSODT,PSOLBL,PSOFLG) ;
;PSODT - LBLDATA set this date to 7 digit length so it can match to the "PF" OneVA .01 field.
;PSOLBL - 1 if calling from LBLDATA
;PSOX2 - Site name (station #) ^ remote pharmacist
NEW PSOX,PSOX1,PSOX2,PSOXPF,PSOSNUM,PSOXDIC4,PSOPFDT,PSOSNUMX,PSOSNAME,PSOX1
Q:'+$G(PSOIEN) ""
Q:$G(PSODT)="" ""
;Using the 52.02,01 PARTIAL DATE because OneVA partial fill can't back dated.
F PSOX=0:0 S PSOX=$O(^PSRX(PSOIEN,"P",PSOX)) Q:'PSOX D Q:$G(PSOX2)]""
.S PSOPFDT=$P($G(^PSRX(PSOIEN,"P",PSOX,0)),U)
.I $S(PSOPFDT=PSODT:1,PSOPFDT=$E(PSODT,1,7):1,1:0) D
..K PSOX1,PSOX2,PSOXPF,PSOSNUM,PSOXDIC4
..S PSOXPF=$G(^PSRX(PSOIEN,"P",PSOX,"PF")),PSOSNUM=$P(PSOXPF,U)
..S PSOSNAME="",PSOX1=""
..S PSOSNAME=$$STATION(PSOSNUM)
..S:PSOSNAME]"" PSOX1=$S($G(PSOLBL):" Printed at ",1:$S(+$G(PSOFLG):" at ",1:" Processed at "))_PSOSNAME
..S PSOX2=PSOX1_U_$P(PSOXPF,U,2,6)
Q $G(PSOX2)
;
LBLDATA(PSOIEN,LBL) ;
NEW PSORDATA,PSOLBLDT,PSORN,PSOX1,PSOLBLDT,PSOTXT,PSOSNAME
Q:+'$G(PSOIEN) ""
Q:$G(LBL)="" ""
;check if label entry is related to a refill
S PSOTXT="",PSORDATA="",PSORN=+$P(LBL,U,2),PSOLBLDT=$P(LBL,U)
I (PSORN>-1),(PSORN<12) D ; RBD *774 Update 0 to -1 so Original Fill covered
.S:PSORN=0 PSOX1=$G(^PSRX(PSOIEN,"OF")) ; RBD *774 Use "OF" node when PSORN = 0
.S:PSORN>0 PSOX1=$G(^PSRX(PSOIEN,1,PSORN,"RF")) ; RBD *774 Use "RF" node when PSORN > 0
.S PSOSNAME=$$STATION($P(PSOX1,U))
.S:PSOSNAME]"" PSOTXT=" Printed at "_PSOSNAME
.S:PSORN=0 PSORDATA=PSOTXT_U_$P(PSOX1,U,2,3)_U_U_$P(PSOX1,U,4,5) ; RBD *774 PSORN = 0: Pull info from "OF" node
.S:PSORN>0 PSORDATA=PSOTXT_U_$P(PSOX1,U,2,6) ; RBD *774 PSORN > 0: Pull info from "RF" node
;If there's no Refill with the same date as the label log date, check the partial fill entries.
I PSORN,($G(PSORDATA)="") S PSORDATA=$$PFCHK(PSOIEN,PSOLBLDT,1)
Q PSORDATA
;
STATION(PSOSNUM) ;
NEW PSOXDIC4,PSOTXT
Q:$G(PSOSNUM)="" ""
D F4^XUAF4(PSOSNUM,.PSOXDIC4)
I $G(PSOXDIC4("NAME"))]"" S PSOTXT=PSOXDIC4("NAME")_" ("_PSOSNUM_")"
Q $G(PSOTXT)
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOORAL3 7042 printed Sep 23, 2025@20:08:10 Page 2
PSOORAL3 ;BHAM ISC/MV,RBD - Build Listman activity log extension ;18 Feb 2025 8:56 AM
+1 ;;7.0;OUTPATIENT PHARMACY;**643,774**;DEC 1997;Build 15
ACT ;activity log
+1 NEW CNT,PSORDATA,PSOTXT,PSOTXT1,PSOTXT2,X
+2 SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)=" "
SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)="Activity Log:"
+3 SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)="# Date/Time Reason Rx Ref Initiator Of Activity"
SET IEN=IEN+1
SET $PIECE(^TMP("PSOAL",$JOB,IEN,0),"=",79)="="
+4 IF '$ORDER(^PSRX(DA,"A",0))
SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)="There's NO Activity to report"
QUIT
+5 SET CNT=0
+6 FOR N=0:0
SET N=$ORDER(^PSRX(DA,"A",N))
if 'N
QUIT
SET P1=^(N,0)
Begin DoDot:1
+7 IF $PIECE(P1,"^",2)="M"
QUIT
+8 SET PSORDATA=""
SET PSOTXT=""
SET PSOTXT1=""
SET PSOTXT2=""
+9 SET DAT=$$FMTE^XLFDT($PIECE(P1,"^"),2)_" "
+10 SET IEN=IEN+1
SET CNT=CNT+1
SET ^TMP("PSOAL",$JOB,IEN,0)=CNT_$SELECT(CNT<10:" ",1:" ")_$EXTRACT(DAT,1,21)
SET $PIECE(RN," ",15)=" "
SET REA=$PIECE(P1,"^",2)
+11 SET REA=$FIND("HUCELPRWSIVDABXGKNO",REA)-1
+12 IF REA
Begin DoDot:2
+13 SET STA=$PIECE("HOLD^UNHOLD^DISCONTINUED^EDIT^RENEWED^PARTIAL^REINSTATE^REPRINT^SUSPENSE^RETURNED^INTERVENTION^DELETED^DRUG INTERACTION^PROCESSED^X-INTERFACE^PATIENT INSTR.^PKI/DEA^DISP COMPLETED^IERX^","^",REA)
+14 SET ^TMP("PSOAL",$JOB,IEN,0)=^TMP("PSOAL",$JOB,IEN,0)_STA_$EXTRACT(RN,$LENGTH(STA)+1,15)
End DoDot:2
+15 IF '$TEST
SET $PIECE(STA," ",15)=" "
SET ^TMP("PSOAL",$JOB,IEN,0)=^TMP("PSOAL",$JOB,IEN,0)_STA
+16 KILL STA,RN
SET $PIECE(RN," ",15)=" "
SET RF=+$PIECE(P1,"^",4)
+17 SET RFT=$SELECT(RF>0&(RF<6):"REFILL "_RF,RF=6:"PARTIAL",RF>6:"REFILL "_(RF-1),1:"ORIGINAL")
+18 SET PSORDATA=$$REMDATA(DA,P1)
+19 SET ^TMP("PSOAL",$JOB,IEN,0)=^TMP("PSOAL",$JOB,IEN,0)_RFT_$EXTRACT(RN,$LENGTH(RFT)+1,15)_$EXTRACT($SELECT($PIECE(PSORDATA,"^",2)]"":$PIECE(PSORDATA,"^",2),$DATA(^VA(200,+$PIECE(P1,"^",3),0)):$PIECE(^(0),"^"),1:$PIECE(P1,"^",3)),1,24)
+20 IF $PIECE(P1,"^",5)]""
NEW PSOACBRK,PSOACBRV
Begin DoDot:2
+21 KILL PSOTXT
SET PSOACBRV=$PIECE(P1,"^",5)_$PIECE(PSORDATA,"^")
+22 IF (($LENGTH(PSOACBRV)#59)<$LENGTH($PIECE(PSORDATA,"^")))
IF ($PIECE(PSORDATA,"^")]"")
SET PSOACBRV=$PIECE(P1,"^",5)
SET PSOTXT=" "_$PIECE(PSORDATA,"^")
+23 KILL ^UTILITY($JOB,"W")
SET X=PSOACBRV
SET (DIWR,DIWL)=1
SET DIWF="C69"
DO ^DIWP
FOR I=1:1:^UTILITY($JOB,"W",1)
SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)=$SELECT(I=1:"Comments: ",1:" ")_$GET(^UTILITY($JOB,"W",1,I,0))
+24 IF $GET(PSOTXT)]""
SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)=PSOTXT
KILL PSOTXT
+25 SET PSOTXT1=$PIECE(PSORDATA,"^",6)
SET PSOTXT2=$PIECE(PSORDATA,"^",5)
+26 IF $PIECE(P1,U,2)="N"
Begin DoDot:3
+27 IF $LENGTH(PSOTXT1_PSOTXT2)>25
SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)=" Filled By: "_PSOTXT1
SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)=" Checking Pharmacist: "_PSOTXT2
+28 IF ($LENGTH(PSOTXT1_PSOTXT2)<26)
IF ($LENGTH(PSOTXT1_PSOTXT2)>1)
SET IEN=IEN+1
SET ^TMP("PSOAL",$JOB,IEN,0)=" Filled By: "_$SELECT(PSOTXT1="":" ",1:PSOTXT1)_" Checking Pharmacist: "_PSOTXT2
End DoDot:3
End DoDot:2
+29 IF $PIECE($GET(^PSRX(DA,"A",N,1)),"^")]""
SET IEN=IEN+1
SET $PIECE(^TMP("PSOAL",$JOB,IEN,0)," ",5)=$PIECE($GET(^PSRX(DA,"A",N,1)),"^")
IF $PIECE($GET(^PSRX(DA,"A",N,1)),"^",2)]""
SET ^TMP("PSOAL",$JOB,IEN,0)=^TMP("PSOAL",$JOB,IEN,0)_":"_$PIECE($GET(^PSRX(DA,"A",N,1)),"^",2)
+30 IF $ORDER(^PSRX(DA,"A",N,2,0))
FOR I=0:0
SET I=$ORDER(^PSRX(DA,"A",N,2,I))
if 'I
QUIT
SET MIG=^PSRX(DA,"A",N,2,I,0)
Begin DoDot:2
+31 if MIG["Mail Tracking Info.
SET IEN=IEN+1
SET $PIECE(^TMP("PSOAL",$JOB,IEN,0)," ",9)=" "
+32 FOR SG=1:1:$LENGTH(MIG)
if $LENGTH(^TMP("PSOAL",$JOB,IEN,0)_" "_$PIECE(MIG," ",SG))>80
SET IEN=IEN+1
SET $PIECE(^TMP("PSOAL",$JOB,IEN,0)," ",9)=" "
if $PIECE(MIG," ",SG)'=""
SET ^TMP("PSOAL",$JOB,IEN,0)=$GET(^TMP("PSOAL",$JOB,IEN,0))_" "_$PIECE(MIG," ",SG)
End DoDot:2
End DoDot:1
+33 KILL MIG,SG,I,^UTILITY($JOB,"W"),DIWF,DIWL,DIWR
+34 QUIT
+35 ;
REMDATA(PSOIEN,P1) ;
+1 ;Check if activity log needs to display the remote pharmacist (OneVA)
+2 ;P1 - ^PSRX(D0,"A",D1,0)
+3 NEW PSOPF,PSOCHK,PSORMTE,PSORPH,PSOP2,PSOP3,PSOP4,PSOFLG
+4 if +'$GET(PSOIEN)
QUIT ""
+5 if $GET(P1)=""
QUIT ""
+6 SET PSOPF=0
SET PSOP2=$PIECE(P1,U,2)
SET PSOP3=$PIECE(P1,U,3)
SET PSOP4=$PIECE(P1,U,4)
+7 SET PSOFLG=$SELECT($PIECE(P1,U,5)["HL7 ID":1,1:0)
+8 ; took out PSOP4=0 from $S *774* WLC
IF $SELECT(PSOP2="P":1,PSOP2="X":1,PSOP2="N":1,1:0)
IF $SELECT(PSOP4=6:1,PSOP2="P":1,1:0)
SET PSOCHK=$$PFCHK(PSOIEN,$PIECE(P1,U),,PSOFLG)
if PSOCHK]""
QUIT PSOCHK
+9 IF $SELECT(PSOP2="X":1,PSOP2="N":1,1:0)
IF $SELECT(((PSOP4>0)&(PSOP4<6)):+PSOP4,((PSOP4>6)&(PSOP4<13)):1,1:0)
SET PSOCHK=$$RFCHK(PSOIEN,PSOP4,PSOFLG)
+10 ; RBD *774 Original Fill path (PSOP4 = 0)
IF $SELECT(PSOP2="X":1,PSOP2="N":1,1:0)
IF PSOP4=0
SET PSOCHK=$$RFCHK(PSOIEN,PSOP4,PSOFLG)
+11 QUIT $GET(PSOCHK)
+12 ;
RFCHK(PSOIEN,PSOP4,PSOFLG) ;
+1 NEW PSOX1,PSOX2,PSOXRF,PSOXDIC4,PSOXRF,PSORFDT,PSOSNUM,PSOSNUMX,PSOSNAME
+2 if '+$GET(PSOIEN)
QUIT ""
+3 ; Q:'+$G(PSOP4) "" RBD *774 PSOP4 = 0 (denoting Original Fill) allowed through
if $GET(PSOP4)=""
QUIT ""
+4 IF PSOP4>6
SET PSOP4=PSOP4-1
+5 ; RBD *774 Pick top-file level "OF" node when PSOP4 = 0
if PSOP4=0
SET PSOXRF=$GET(^PSRX(PSOIEN,"OF"))
+6 ; RBD *774 Check PSOP4 > 0 before accessing "RF" node
if PSOP4>0
SET PSOXRF=$GET(^PSRX(PSOIEN,1,PSOP4,"RF"))
+7 ; RBD *774 Moved this to its own line since PSOXRF can be from "OF" now also
SET PSOSNUM=$PIECE(PSOXRF,U)
+8 SET PSOSNAME=""
SET PSOX1=""
+9 IF PSOSNUM]""
SET PSOSNAME=$$STATION(PSOSNUM)
+10 if PSOSNAME]""
SET PSOX1=$SELECT(+$GET(PSOFLG):" at ",1:" Processed at ")_PSOSNAME
+11 ; RBD *774 PSOP4 = 0: Use "OF" node
IF PSOP4=0
SET PSOX2=PSOX1_U_$PIECE(PSOXRF,U,2,3)_U_U_$PIECE(PSOXRF,U,4,5)
+12 ; RBD *774 Check PSOP4 > 0 ("RF" node path)
if PSOP4>0
SET PSOX2=PSOX1_U_$PIECE(PSOXRF,U,2,6)
+13 QUIT $GET(PSOX2)
+14 ;
PFCHK(PSOIEN,PSODT,PSOLBL,PSOFLG) ;
+1 ;PSODT - LBLDATA set this date to 7 digit length so it can match to the "PF" OneVA .01 field.
+2 ;PSOLBL - 1 if calling from LBLDATA
+3 ;PSOX2 - Site name (station #) ^ remote pharmacist
+4 NEW PSOX,PSOX1,PSOX2,PSOXPF,PSOSNUM,PSOXDIC4,PSOPFDT,PSOSNUMX,PSOSNAME,PSOX1
+5 if '+$GET(PSOIEN)
QUIT ""
+6 if $GET(PSODT)=""
QUIT ""
+7 ;Using the 52.02,01 PARTIAL DATE because OneVA partial fill can't back dated.
+8 FOR PSOX=0:0
SET PSOX=$ORDER(^PSRX(PSOIEN,"P",PSOX))
if 'PSOX
QUIT
Begin DoDot:1
+9 SET PSOPFDT=$PIECE($GET(^PSRX(PSOIEN,"P",PSOX,0)),U)
+10 IF $SELECT(PSOPFDT=PSODT:1,PSOPFDT=$EXTRACT(PSODT,1,7):1,1:0)
Begin DoDot:2
+11 KILL PSOX1,PSOX2,PSOXPF,PSOSNUM,PSOXDIC4
+12 SET PSOXPF=$GET(^PSRX(PSOIEN,"P",PSOX,"PF"))
SET PSOSNUM=$PIECE(PSOXPF,U)
+13 SET PSOSNAME=""
SET PSOX1=""
+14 SET PSOSNAME=$$STATION(PSOSNUM)
+15 if PSOSNAME]""
SET PSOX1=$SELECT($GET(PSOLBL):" Printed at ",1:$SELECT(+$GET(PSOFLG):" at ",1:" Processed at "))_PSOSNAME
+16 SET PSOX2=PSOX1_U_$PIECE(PSOXPF,U,2,6)
End DoDot:2
End DoDot:1
if $GET(PSOX2)]""
QUIT
+17 QUIT $GET(PSOX2)
+18 ;
LBLDATA(PSOIEN,LBL) ;
+1 NEW PSORDATA,PSOLBLDT,PSORN,PSOX1,PSOLBLDT,PSOTXT,PSOSNAME
+2 if +'$GET(PSOIEN)
QUIT ""
+3 if $GET(LBL)=""
QUIT ""
+4 ;check if label entry is related to a refill
+5 SET PSOTXT=""
SET PSORDATA=""
SET PSORN=+$PIECE(LBL,U,2)
SET PSOLBLDT=$PIECE(LBL,U)
+6 ; RBD *774 Update 0 to -1 so Original Fill covered
IF (PSORN>-1)
IF (PSORN<12)
Begin DoDot:1
+7 ; RBD *774 Use "OF" node when PSORN = 0
if PSORN=0
SET PSOX1=$GET(^PSRX(PSOIEN,"OF"))
+8 ; RBD *774 Use "RF" node when PSORN > 0
if PSORN>0
SET PSOX1=$GET(^PSRX(PSOIEN,1,PSORN,"RF"))
+9 SET PSOSNAME=$$STATION($PIECE(PSOX1,U))
+10 if PSOSNAME]""
SET PSOTXT=" Printed at "_PSOSNAME
+11 ; RBD *774 PSORN = 0: Pull info from "OF" node
if PSORN=0
SET PSORDATA=PSOTXT_U_$PIECE(PSOX1,U,2,3)_U_U_$PIECE(PSOX1,U,4,5)
+12 ; RBD *774 PSORN > 0: Pull info from "RF" node
if PSORN>0
SET PSORDATA=PSOTXT_U_$PIECE(PSOX1,U,2,6)
End DoDot:1
+13 ;If there's no Refill with the same date as the label log date, check the partial fill entries.
+14 IF PSORN
IF ($GET(PSORDATA)="")
SET PSORDATA=$$PFCHK(PSOIEN,PSOLBLDT,1)
+15 QUIT PSORDATA
+16 ;
STATION(PSOSNUM) ;
+1 NEW PSOXDIC4,PSOTXT
+2 if $GET(PSOSNUM)=""
QUIT ""
+3 DO F4^XUAF4(PSOSNUM,.PSOXDIC4)
+4 IF $GET(PSOXDIC4("NAME"))]""
SET PSOTXT=PSOXDIC4("NAME")_" ("_PSOSNUM_")"
+5 QUIT $GET(PSOTXT)
+6 ;