PSOLLLH ;BIR/EJW - HIPAA/NCPDP LASER LABELS ;7/20/06 10:21am
;;7.0;OUTPATIENT PHARMACY;**161,148,244,200,326,321,350**;DEC 1997;Build 4
;
;Reference to DUR1^BPSNCPD3 supported by DBIA 4560
;
;*244 ignore Rx status > 11
;
SIGLOG N PSOSEQ,J,RXF,RXY,RXN,RX,FIRST,DATE,BLNKLIN,RX2,FDT,BLNKLN2,LAST,CNT
D DEM^VADPT
S FIRST=1,LAST=0
I '$G(REPRINT) D NOWINDOW I NOWIN Q
K NOWIN
S $P(BLNKLN2," ",32)=" "
S $P(BLNKLIN,"_",32)="_"
F PSOSEQ=1:1:$L(PPL,",") S RX=$P(PPL,",",PSOSEQ) D
.I RX="" Q
.Q:$G(^PSRX(RX,"STA"))>11 ;*244
.S RXY=$G(^PSRX(RX,0)) I RXY="" Q
.I $P(RXY,"^",2)'=$G(DFN) Q ;*321
.S CNT=$G(CNT)+1
.S RX2=$G(^PSRX(RX,2)),FDT=$P(RX2,"^",2)
.I FIRST!(CNT#4=1) D HDR,BARC S FIRST=0
.S RXF=+$O(^PSRX(RX,1,"A"),-1)
.I RXF>0 I +^PSRX(RX,1,RXF,0)'<FDT S FDT=+^(0)
.S DATE=$E(FDT,1,7),Y=DATE X ^DD("DD") S DATE=Y
.S RXN=$P(RXY,"^")
.S T=RXN_" ("_(RXF)_") "
.N PSODRNM
.S PSODRNM=$$ZZ^PSOSUTL(RX)
.S T=T_$E(FDT,4,5)_"/"_$E(FDT,6,7)_"/"_$E(FDT,2,3)_" "_$E(PSODRNM,1,(27-$L(RXN))) D PRINT(T)
S LAST=1 D SIGN
I $D(ZTQUEUED) S ZTREQ="@"
Q
;
SIGN ;
I '$G(CNT) Q
N II
S II=CNT#4
I LAST,II>0 F J=1:1:(4-II) S T=" " D PRINT(T)
S PSOY=PSOY+10
S T="Pt. Sig."_BLNKLIN D PRINT(T)
S PSOY=PSOY+5
D PRINT($$PLANNM())
S PSOY=PSOY+15
S T="Relation_____ Counseling Refused__ Accepted__" D PRINT(T)
S PSOY=PSOY+10
S T=PNM_" "_$G(SSNP) D PRINT(T,1)
Q
;
HDR ;
I 'FIRST D SIGN W @IOF
I $G(PSOIO("BLH"))]"" X PSOIO("BLH")
S T="VAMC "_$P(PS,"^",7)_", "_STATE_" "_$G(PSOHZIP) D PRINT(T)
S T=$P(PS2,"^",2)_" Ph: "_$P(PS,"^",3)_"-"_$P(PS,"^",4)_" "_$G(PSONOW) D PRINT(T)
I $G(PSOIO("BLB"))]"" X PSOIO("BLB")
S XFONT=$E(PSOFONT,2,99)
N REPMSG
S REPMSG=BLNKLN2_"(REPRINT)"
S T="By signing below"_$S($G(REPRINT):REPMSG,1:"") D PRINT(T,1)
S T="you acknowledge receipt of the following Rx's" D PRINT(T,1)
S T=" " D PRINT(T)
S PSOY=PSOY-20
Q
;
PRINT(T,B) ;
S BOLD=$G(B)
I 'BOLD,$G(PSOIO(PSOFONT))]"" X PSOIO(PSOFONT)
I BOLD,$G(PSOIO(PSOFONT_"B"))]"" X PSOIO(PSOFONT_"B")
I $G(PSOIO("ST"))]"" X PSOIO("ST")
W T,!
I $G(PSOIO("ET"))]"" X PSOIO("ET")
I BOLD,$G(PSOIO(PSOFONT))]"" X PSOIO(PSOFONT) ;TURN OFF BOLDING
Q
;
QUEUE ; ENTRY POINT TO REPRINT SIGNATURE LOG
I '$D(PSOPAR) D ^PSOLSET I '$D(PSOPAR) Q
N REPRINT,PS,STATE,PS2,PSOHZIP
S PS=$S($D(^PS(59,PSOSITE,0)):^(0),1:"")
S PS2=$P(PS,"^")_"^"_$P(PS,"^",6)
I $P(PSOSYS,"^",4),$D(^PS(59,+$P($G(PSOSYS),"^",4),0)) S PS=^PS(59,$P($G(PSOSYS),"^",4),0)
S VAADDR1=$P(PS,"^"),VASTREET=$P(PS,"^",2),STATE=$S($D(^DIC(5,+$P(PS,"^",8),0)):$P(^(0),"^",2),1:"UNKNOWN")
S PSZIP=$P(PS,"^",5),PSOHZIP=$S(PSZIP["-":PSZIP,1:$E(PSZIP,1,5)_$S($E(PSZIP,6,9)]"":"-"_$E(PSZIP,6,9),1:""))
S REPRINT=1
LRP W !! S DIC("S")="I $P($G(^(0)),""^"",2),$D(^(""STA"")),$P($G(^(""STA"")),""^"")<10",DIC="^PSRX(",DIC("A")="Reprint Signature Log for Prescription: ",DIC(0)="QEAZ" D ^DIC K P,DIC("A") I Y<0!("^"[X) D KILL Q
W !
S (PPL,RX)=+Y
N RXY
S RXY=$G(^PSRX(RX,0)) I RXY="" Q
S DFN=$P(RXY,"^",2)
GETPT2 D DEM^VADPT S PNM=VADM(1)
I $P(VADM(6),"^",2)]"" D G LRP
.W $C(7),!!,PNM_" Died "_$P(VADM(6),"^",2)_".",!
D 6^VADPT,PID^VADPT6 S SSNP=""
Q1 W ! K POP,ZTSK S %ZIS("B")="",%ZIS="MNQ",%ZIS("A")="Select LABEL DEVICE: " D ^%ZIS S PSLION=ION K %ZIS("A")
I $G(POP) Q
I $G(IOST(0)),'$D(^%ZIS(2,IOST(0),55,"B","LL")) W !,"Must specify a laser labels printer for Signature Log Reprint" G Q1
I '$G(IOST(0)) W !,"Nothing queued to print." H 1 Q
D NOW^%DTC S Y=$P(%,"."),PSOFNOW=% X ^DD("DD") S PSONOW=Y
F G="PPL","REPRINT","PNM","STATE","PS2","PSOHZIP","PSOPAR","PSOSITE","PS","PSONOW","PSOSYS","SSNP","DFN" S:$D(@G) ZTSAVE(G)=""
S ZTRTN="DQ^PSOLLLH",ZTIO=PSLION,ZTDESC="Outpatient Pharmacy Signature Log Reprint",ZTDTH=$H,PDUZ=DUZ
D ^%ZISC,^%ZTLOAD W:$D(ZTSK) !!,"Signature Log Reprint queued",!! H 1 K G
G QUEUE
Q
DQ N PSOBIO S (I,PSOIO)=0 F S I=$O(^%ZIS(2,IOST(0),55,I)) Q:'I S X0=$G(^(I,0)) I X0]"" S PSOIO($P(X0,"^"))=^(1),PSOIO=1
I $G(PSOIO("LLI"))]"" X PSOIO("LLI")
G SIGLOG
;
PLANNM() ; Returns Insurance Name (3rd Party)
S PLANNM=""
N I,DUR,RX
F I=1:1:$L(PPL,",") S RX=+$P(PPL,",",I) D I PLANNM'="" Q
.I 'RX Q
.D DUR1^BPSNCPD3(RX,$$LSTRFL^PSOBPSU1(RX),.DUR) S PLANNM=$G(DUR(1,"INSURANCE NAME"))
Q PLANNM
BARC I '$G(FIRST) G BARCE ; PRINT BARCODE FOR 1 RX ON 1ST SIGLOG LABEL ONLY
I $G(PSOIO("BLBC"))]"" X PSOIO("BLBC") I $G(NOBARC) G BARCE
I '$D(PSOINST) D INST
S X2=PSOINST_"-"_RX W X2
I $G(PSOIO("EBLBC"))]"" X PSOIO("EBLBC")
BARCE Q
;
KILL ; CLEAN UP VARIABLES
K DIC,DFN,PNM,PPL,PSZIP,RX,SSNP,VA,VADDR1,VADM,VAEL,VAPA,VASTREET
Q
INST ;
K ^UTILITY("DIQ1",$J) S DA=$P($$SITE^VASITE(),"^")
I $G(DA) S DIC=4,DIQ(0)="I",DR="99" D EN^DIQ1 S PSOINST=$G(^UTILITY("DIQ1",$J,4,DA,99,"I"))
K ^UTILITY("DIQ1",$J),DA,DR,DIC
Q
;
NOWINDOW ; ON ORIGINAL PRINT - DON'T PRINT IF ALL ARE MAIL
N I,RX,RXF,MW,RXP,RXY
S NOWIN=1
F I=1:1:$L(PPL,",") S RX=$P(PPL,",",I) D I 'NOWIN Q
.I RX="" Q
.I $G(^PSRX(RX,"STA"))>11 Q
.S RXY=$G(^PSRX(RX,0)) I RXY="" Q
.I '$D(^PSRX(RX,1)) S MW=$P(RXY,"^",11) I MW="W" S NOWIN=0 Q
.S RXF=$O(^PSRX(RX,1,99),-1) I RXF>0 S MW=$P($G(^PSRX(RX,1,RXF,0)),"^",2) I MW="W" S NOWIN=0
.S RXP=$O(^PSRX(RX,"P",99),-1) I RXP>0 S MW=$P($G(^PSRX(RX,"P",RXP,0)),"^",2) I MW="W" S NOWIN=0
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOLLLH 5371 printed Oct 16, 2024@18:31:18 Page 2
PSOLLLH ;BIR/EJW - HIPAA/NCPDP LASER LABELS ;7/20/06 10:21am
+1 ;;7.0;OUTPATIENT PHARMACY;**161,148,244,200,326,321,350**;DEC 1997;Build 4
+2 ;
+3 ;Reference to DUR1^BPSNCPD3 supported by DBIA 4560
+4 ;
+5 ;*244 ignore Rx status > 11
+6 ;
SIGLOG NEW PSOSEQ,J,RXF,RXY,RXN,RX,FIRST,DATE,BLNKLIN,RX2,FDT,BLNKLN2,LAST,CNT
+1 DO DEM^VADPT
+2 SET FIRST=1
SET LAST=0
+3 IF '$GET(REPRINT)
DO NOWINDOW
IF NOWIN
QUIT
+4 KILL NOWIN
+5 SET $PIECE(BLNKLN2," ",32)=" "
+6 SET $PIECE(BLNKLIN,"_",32)="_"
+7 FOR PSOSEQ=1:1:$LENGTH(PPL,",")
SET RX=$PIECE(PPL,",",PSOSEQ)
Begin DoDot:1
+8 IF RX=""
QUIT
+9 ;*244
if $GET(^PSRX(RX,"STA"))>11
QUIT
+10 SET RXY=$GET(^PSRX(RX,0))
IF RXY=""
QUIT
+11 ;*321
IF $PIECE(RXY,"^",2)'=$GET(DFN)
QUIT
+12 SET CNT=$GET(CNT)+1
+13 SET RX2=$GET(^PSRX(RX,2))
SET FDT=$PIECE(RX2,"^",2)
+14 IF FIRST!(CNT#4=1)
DO HDR
DO BARC
SET FIRST=0
+15 SET RXF=+$ORDER(^PSRX(RX,1,"A"),-1)
+16 IF RXF>0
IF +^PSRX(RX,1,RXF,0)'<FDT
SET FDT=+^(0)
+17 SET DATE=$EXTRACT(FDT,1,7)
SET Y=DATE
XECUTE ^DD("DD")
SET DATE=Y
+18 SET RXN=$PIECE(RXY,"^")
+19 SET T=RXN_" ("_(RXF)_") "
+20 NEW PSODRNM
+21 SET PSODRNM=$$ZZ^PSOSUTL(RX)
+22 SET T=T_$EXTRACT(FDT,4,5)_"/"_$EXTRACT(FDT,6,7)_"/"_$EXTRACT(FDT,2,3)_" "_$EXTRACT(PSODRNM,1,(27-$LENGTH(RXN)))
DO PRINT(T)
End DoDot:1
+23 SET LAST=1
DO SIGN
+24 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+25 QUIT
+26 ;
SIGN ;
+1 IF '$GET(CNT)
QUIT
+2 NEW II
+3 SET II=CNT#4
+4 IF LAST
IF II>0
FOR J=1:1:(4-II)
SET T=" "
DO PRINT(T)
+5 SET PSOY=PSOY+10
+6 SET T="Pt. Sig."_BLNKLIN
DO PRINT(T)
+7 SET PSOY=PSOY+5
+8 DO PRINT($$PLANNM())
+9 SET PSOY=PSOY+15
+10 SET T="Relation_____ Counseling Refused__ Accepted__"
DO PRINT(T)
+11 SET PSOY=PSOY+10
+12 SET T=PNM_" "_$GET(SSNP)
DO PRINT(T,1)
+13 QUIT
+14 ;
HDR ;
+1 IF 'FIRST
DO SIGN
WRITE @IOF
+2 IF $GET(PSOIO("BLH"))]""
XECUTE PSOIO("BLH")
+3 SET T="VAMC "_$PIECE(PS,"^",7)_", "_STATE_" "_$GET(PSOHZIP)
DO PRINT(T)
+4 SET T=$PIECE(PS2,"^",2)_" Ph: "_$PIECE(PS,"^",3)_"-"_$PIECE(PS,"^",4)_" "_$GET(PSONOW)
DO PRINT(T)
+5 IF $GET(PSOIO("BLB"))]""
XECUTE PSOIO("BLB")
+6 SET XFONT=$EXTRACT(PSOFONT,2,99)
+7 NEW REPMSG
+8 SET REPMSG=BLNKLN2_"(REPRINT)"
+9 SET T="By signing below"_$SELECT($GET(REPRINT):REPMSG,1:"")
DO PRINT(T,1)
+10 SET T="you acknowledge receipt of the following Rx's"
DO PRINT(T,1)
+11 SET T=" "
DO PRINT(T)
+12 SET PSOY=PSOY-20
+13 QUIT
+14 ;
PRINT(T,B) ;
+1 SET BOLD=$GET(B)
+2 IF 'BOLD
IF $GET(PSOIO(PSOFONT))]""
XECUTE PSOIO(PSOFONT)
+3 IF BOLD
IF $GET(PSOIO(PSOFONT_"B"))]""
XECUTE PSOIO(PSOFONT_"B")
+4 IF $GET(PSOIO("ST"))]""
XECUTE PSOIO("ST")
+5 WRITE T,!
+6 IF $GET(PSOIO("ET"))]""
XECUTE PSOIO("ET")
+7 ;TURN OFF BOLDING
IF BOLD
IF $GET(PSOIO(PSOFONT))]""
XECUTE PSOIO(PSOFONT)
+8 QUIT
+9 ;
QUEUE ; ENTRY POINT TO REPRINT SIGNATURE LOG
+1 IF '$DATA(PSOPAR)
DO ^PSOLSET
IF '$DATA(PSOPAR)
QUIT
+2 NEW REPRINT,PS,STATE,PS2,PSOHZIP
+3 SET PS=$SELECT($DATA(^PS(59,PSOSITE,0)):^(0),1:"")
+4 SET PS2=$PIECE(PS,"^")_"^"_$PIECE(PS,"^",6)
+5 IF $PIECE(PSOSYS,"^",4)
IF $DATA(^PS(59,+$PIECE($GET(PSOSYS),"^",4),0))
SET PS=^PS(59,$PIECE($GET(PSOSYS),"^",4),0)
+6 SET VAADDR1=$PIECE(PS,"^")
SET VASTREET=$PIECE(PS,"^",2)
SET STATE=$SELECT($DATA(^DIC(5,+$PIECE(PS,"^",8),0)):$PIECE(^(0),"^",2),1:"UNKNOWN")
+7 SET PSZIP=$PIECE(PS,"^",5)
SET PSOHZIP=$SELECT(PSZIP["-":PSZIP,1:$EXTRACT(PSZIP,1,5)_$SELECT($EXTRACT(PSZIP,6,9)]"":"-"_$EXTRACT(PSZIP,6,9),1:""))
+8 SET REPRINT=1
LRP WRITE !!
SET DIC("S")="I $P($G(^(0)),""^"",2),$D(^(""STA"")),$P($G(^(""STA"")),""^"")<10"
SET DIC="^PSRX("
SET DIC("A")="Reprint Signature Log for Prescription: "
SET DIC(0)="QEAZ"
DO ^DIC
KILL P,DIC("A")
IF Y<0!("^"[X)
DO KILL
QUIT
+1 WRITE !
+2 SET (PPL,RX)=+Y
+3 NEW RXY
+4 SET RXY=$GET(^PSRX(RX,0))
IF RXY=""
QUIT
+5 SET DFN=$PIECE(RXY,"^",2)
GETPT2 DO DEM^VADPT
SET PNM=VADM(1)
+1 IF $PIECE(VADM(6),"^",2)]""
Begin DoDot:1
+2 WRITE $CHAR(7),!!,PNM_" Died "_$PIECE(VADM(6),"^",2)_".",!
End DoDot:1
GOTO LRP
+3 DO 6^VADPT
DO PID^VADPT6
SET SSNP=""
Q1 WRITE !
KILL POP,ZTSK
SET %ZIS("B")=""
SET %ZIS="MNQ"
SET %ZIS("A")="Select LABEL DEVICE: "
DO ^%ZIS
SET PSLION=ION
KILL %ZIS("A")
+1 IF $GET(POP)
QUIT
+2 IF $GET(IOST(0))
IF '$DATA(^%ZIS(2,IOST(0),55,"B","LL"))
WRITE !,"Must specify a laser labels printer for Signature Log Reprint"
GOTO Q1
+3 IF '$GET(IOST(0))
WRITE !,"Nothing queued to print."
HANG 1
QUIT
+4 DO NOW^%DTC
SET Y=$PIECE(%,".")
SET PSOFNOW=%
XECUTE ^DD("DD")
SET PSONOW=Y
+5 FOR G="PPL","REPRINT","PNM","STATE","PS2","PSOHZIP","PSOPAR","PSOSITE","PS","PSONOW","PSOSYS","SSNP","DFN"
if $DATA(@G)
SET ZTSAVE(G)=""
+6 SET ZTRTN="DQ^PSOLLLH"
SET ZTIO=PSLION
SET ZTDESC="Outpatient Pharmacy Signature Log Reprint"
SET ZTDTH=$HOROLOG
SET PDUZ=DUZ
+7 DO ^%ZISC
DO ^%ZTLOAD
if $DATA(ZTSK)
WRITE !!,"Signature Log Reprint queued",!!
HANG 1
KILL G
+8 GOTO QUEUE
+9 QUIT
DQ NEW PSOBIO
SET (I,PSOIO)=0
FOR
SET I=$ORDER(^%ZIS(2,IOST(0),55,I))
if 'I
QUIT
SET X0=$GET(^(I,0))
IF X0]""
SET PSOIO($PIECE(X0,"^"))=^(1)
SET PSOIO=1
+1 IF $GET(PSOIO("LLI"))]""
XECUTE PSOIO("LLI")
+2 GOTO SIGLOG
+3 ;
PLANNM() ; Returns Insurance Name (3rd Party)
+1 SET PLANNM=""
+2 NEW I,DUR,RX
+3 FOR I=1:1:$LENGTH(PPL,",")
SET RX=+$PIECE(PPL,",",I)
Begin DoDot:1
+4 IF 'RX
QUIT
+5 DO DUR1^BPSNCPD3(RX,$$LSTRFL^PSOBPSU1(RX),.DUR)
SET PLANNM=$GET(DUR(1,"INSURANCE NAME"))
End DoDot:1
IF PLANNM'=""
QUIT
+6 QUIT PLANNM
BARC ; PRINT BARCODE FOR 1 RX ON 1ST SIGLOG LABEL ONLY
IF '$GET(FIRST)
GOTO BARCE
+1 IF $GET(PSOIO("BLBC"))]""
XECUTE PSOIO("BLBC")
IF $GET(NOBARC)
GOTO BARCE
+2 IF '$DATA(PSOINST)
DO INST
+3 SET X2=PSOINST_"-"_RX
WRITE X2
+4 IF $GET(PSOIO("EBLBC"))]""
XECUTE PSOIO("EBLBC")
BARCE QUIT
+1 ;
KILL ; CLEAN UP VARIABLES
+1 KILL DIC,DFN,PNM,PPL,PSZIP,RX,SSNP,VA,VADDR1,VADM,VAEL,VAPA,VASTREET
+2 QUIT
INST ;
+1 KILL ^UTILITY("DIQ1",$JOB)
SET DA=$PIECE($$SITE^VASITE(),"^")
+2 IF $GET(DA)
SET DIC=4
SET DIQ(0)="I"
SET DR="99"
DO EN^DIQ1
SET PSOINST=$GET(^UTILITY("DIQ1",$JOB,4,DA,99,"I"))
+3 KILL ^UTILITY("DIQ1",$JOB),DA,DR,DIC
+4 QUIT
+5 ;
NOWINDOW ; ON ORIGINAL PRINT - DON'T PRINT IF ALL ARE MAIL
+1 NEW I,RX,RXF,MW,RXP,RXY
+2 SET NOWIN=1
+3 FOR I=1:1:$LENGTH(PPL,",")
SET RX=$PIECE(PPL,",",I)
Begin DoDot:1
+4 IF RX=""
QUIT
+5 IF $GET(^PSRX(RX,"STA"))>11
QUIT
+6 SET RXY=$GET(^PSRX(RX,0))
IF RXY=""
QUIT
+7 IF '$DATA(^PSRX(RX,1))
SET MW=$PIECE(RXY,"^",11)
IF MW="W"
SET NOWIN=0
QUIT
+8 SET RXF=$ORDER(^PSRX(RX,1,99),-1)
IF RXF>0
SET MW=$PIECE($GET(^PSRX(RX,1,RXF,0)),"^",2)
IF MW="W"
SET NOWIN=0
+9 SET RXP=$ORDER(^PSRX(RX,"P",99),-1)
IF RXP>0
SET MW=$PIECE($GET(^PSRX(RX,"P",RXP,0)),"^",2)
IF MW="W"
SET NOWIN=0
End DoDot:1
IF 'NOWIN
QUIT
+10 QUIT