Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSIVLABR

PSIVLABR.m

Go to the documentation of this file.
  1. PSIVLABR ;BIR/PR-REPRINT LABELS ;03-Apr-2013 14:21;PLS
  1. ;;5.0; INPATIENT MEDICATIONS ;**58,82,178,184,1010,1015**;16 DEC 97;Build 62
  1. ;
  1. ; Reference to ^%ZIS(2 is supported by DBIA 3435.
  1. ; Reference to ^PS(52.6 is supported by DBIA 1231.
  1. ; Reference to ^PS(52.7 is supported by DBIA 2173.
  1. ; Reference to ^PS(55 is supported by DBIA 2191.
  1. ; Reference to ^PS(51.2 is supported by DBIA 2178.
  1. ;
  1. ; Modified - IHS/CIA/PLS - 03/31/04 - Line DEM+4
  1. ;Needs DFN,ON, and PSIVNOL NOTE: If PSIVCT is defined then we do
  1. ;not count labels in the STATs file or increment cummulative doses or
  1. ;the last fill field.
  1. ;PSIVCT will be defined if reprinting scheduled labels, the suspense
  1. ;list, or if printing individual labels and they do not count.
  1. ;
  1. ; Modified - IHS/MSC/PB - 4/25/12 to add expiration date to the iv label. Added line tag OFFSET,
  1. ; IHS/MSC/PB - 12/10/12 check for the existance of the variable TEXT1
  1. ; - IHS/MSC/PB - 2/13/13 modified line RE+6 to set TEXT1 = "_______" if the offset is not greater than zero
  1. ;
  1. DEM ;Get demographics and see if label is example only
  1. N X0,PSJIO,I
  1. S I=0 F S I=$O(^%ZIS(2,IOST(0),55,I)) Q:'I S X0=$G(^(I,0)) I X0]"" S PSJIO($P(X0,"^"))=^(1)
  1. S PSJIO=$S('$D(PSJIO):0,1:1)
  1. ; IHS/CIA/PLS - 03/31/04 - Change SSN to HRN
  1. ;D ENIV^PSJAC,NOW^%DTC S PSIVNOW=$$ENDTC^PSGMI(%),VADM(2)=$E(VADM(2),6,9),PSIVWD=$S(+VAIN(4):$P(VAIN(4),U,2),1:"Opt. IV") I $D(PSIVEXAM) G ENX
  1. D ENIV^PSJAC,NOW^%DTC S PSIVNOW=$$ENDTC^PSGMI(%),VADM(2)=$G(VA("BID")),PSIVWD=$S(+VAIN(4):$P(VAIN(4),U,2),1:"Opt. IV") I $D(PSIVEXAM) G ENX
  1. ;
  1. ;;NEW PSIVNOL,PSIV1 S (PSIVNOL,PSIV1)=1
  1. NEW PSIV1 S PSIV1=1
  1. G:PSIVNOL<1 Q D SETP S PSIVRM=$P(PSIVSITE,U,13),P16=$P($G(^PS(55,DFN,"IV",+ON,9)),U,3) S:PSIVRM<1 PSIVRM=30 I $D(PSIVCT),PSIVCT'=1 K PSIVCT
  1. I PSJIO,$G(PSJIO("FI"))]"" X PSJIO("FI")
  1. ;PSJRPHD is defined in REPRT^PSIVLBRP so header only print once.
  1. I $P(PSIVSITE,U,7),'$D(PSJRPHD) D
  1. . S PSIVFLAG=1,(LINE,PSIV1)=0,PSIV2=PSIVNOL,PSIVNOL=0 D RE
  1. . S PSIVRP="",PSIVRT=""
  1. . I $D(^PS(55,DFN,"IV",+ON,.2)) S PSIVRP=$P(^PS(55,DFN,"IV",+ON,.2),U,3) D
  1. .. I PSIV1'>0!'$P(PSIVSITE,U,3)!($P(PSIVSITE,U,3)=1&(P(4)'="P"))!($P(PSIVSITE,U,3)=2&("AH"'[P(4))) Q ;QUIT IF "DOSE DUE AT" IS SET TO NOT PRINT
  1. .. S PSIVRT=$P(^PS(51.2,PSIVRP,0),U,1)
  1. .. S X="ROUTE: "_PSIVRT D:X]"" PMR
  1. . S X="Solution: _______________" D P S X="Additive: _______________" D P
  1. . S PSIVNOL=PSIV2
  1. . I 'PSJIO F LINE=LINE+1:1:(PSIVSITE+$P(PSIVSITE,U,16)) W !
  1. . I PSJIO,$G(PSJIO("EL"))]"" X PSJIO("EL")
  1. ;;I '$D(PSIVCT) D NOW^%DTC S Y=%,$P(^PS(55,DFN,"IV",+ON,9),U,1,2)=Y_"^"_PSIVNOL,$P(^(9),U,3)=$P(^(9),U,3)+PSIVNOL
  1. I '$D(PSIVCT) D NOW^%DTC S Y=%,$P(^PS(55,DFN,"IV",+ON,9),U,1,2)=Y_"^"_PSIVNOL,$P(^(9),U,3)=$P(^(9),U,3)+1
  1. K PSIVFLAG,PSIVSH G START
  1. SETP S Y=^PS(55,DFN,"IV",+ON,0) F X=1:1:23 S P(X)=$P(Y,U,X)
  1. Q
  1. ENX ;Print example label
  1. D SETP S PSIVFLAG=1,PSIVRM=$P(PSIVSITE,U,13) S:PSIVRM<1 PSIVRM=30
  1. START S PSIV1=1,LINE=0 D RE D
  1. . Q:$D(PSIVFLAG)
  1. . I 'PSJIO F LINE=LINE+1:1:(PSIVSITE+$P(PSIVSITE,U,16)) W !
  1. . I PSJIO,$G(PSJIO("EL"))]"" X PSJIO("EL")
  1. I PSJIO,$G(PSJIO("FE"))]"" X PSJIO("FE")
  1. D:'$D(PSIVCT) ^PSIVSTAT
  1. Q K PSIV,PSIVDOSE,PSIVCT,PSIVWD,P16,LINE,MESS,PSIV2,PSIVFLAG,PSIVRM,PSIV1,PDOSE,PDATE,XX1,XX2,BAG,CX,PSIMESS,TEXT1 Q
  1. RE ;
  1. ;NEED THE CODE BELOW?
  1. ;;I PSIV1,P(4)="A"!(P(5)=0) S:P(15)>2880!('P(15)) P(15)=2880 S P(16)=P16+PSIV1#(1440/P(15)+.5\1) S:'P(16) P(16)=PSIV1
  1. I PSJIO,$G(PSJIO("SL"))]"" X PSJIO("SL")
  1. I PSIV1 D BARCODE
  1. ;IHS/MSC/PB - 04/25/12 - next line computes the IV label expiration date
  1. I $P($G(^PS(59.5,PSIVSN,9999999)),U)=1 D ;,$P($G(^PS(55,DFN,"IV",+ON,9999999)),U)'="" D
  1. .N EXDT,XX1
  1. .;IHS/MSC/PB - 2/13/13 modified the line below to set TEXT1 = "________" if the offset is '>0
  1. .;Q:$P($G(^PS(55,DFN,"IV",+ON,9999999)),"^")'>0
  1. .I $P($G(^PS(55,DFN,"IV",+ON,9999999)),U)'>0 S TEXT1="________" Q
  1. .S XX1=$P(^PS(55,DFN,"IV",+ON,9999999),U),EXDT=$$FMADD^XLFDT($$DT^XLFDT(),XX1)
  1. .S TEXT1=$$FMTE^XLFDT(EXDT,"5Z")
  1. S X="["_$P(^PS(55,DFN,"IV",+ON,0),U)_"]"_" "_VADM(2)_" "_PSIVWD_" "_$E(DT,4,5)_"/"_$E(DT,6,7)_"/"_$E(DT,2,3) D P
  1. S X=VADM(1) S:$P(PSIVSITE,U,9) X=X_" "_$S(VAIN(5)]"":VAIN(5),1:"NF") D P S X=" " D P
  1. I $D(PSIVFLAG) F PSIV=0:0 S PSIV=$O(^PS(55,DFN,"IV",+ON,"AD",PSIV)) Q:'PSIV S Y=^(PSIV,0),X=$S($D(^PS(52.6,+Y,0)):$P(^(0),"^"),1:"*********")_" "_$P(Y,U,2)_" " S:$P(Y,U,3)]"" X=X_" ("_$P(Y,U,3)_")" D
  1. . D P,MESS
  1. G:$D(PSIVFLAG) SOL
  1. F PSIV=0:0 S PSIV=$O(^PS(55,DFN,"IVBCMA",PSJIDNO,"AD",PSIV)) Q:'PSIV S Y=^(PSIV,0),X=$S($D(^PS(52.6,+Y,0)):$P(^(0),U),1:"********")_" "_$P(Y,U,2) D
  1. . D P,MESS
  1. SOL F PSIV=0:0 S PSIV=$O(^PS(55,DFN,"IVBCMA",PSJIDNO,"SOL",PSIV)) Q:'PSIV S PSIV=PSIV_"^"_+^(PSIV,0),YY=^(0) D
  1. . D SOL1,P
  1. . S X=$P(^PS(52.7,$P(PSIV,U,2),0),U,4) I X]"" S X=" "_X D P
  1. I P(23)'=""!(P(4)="S") S X="In Syringe: "_$E($P(^PS(55,DFN,"IV",+ON,2),U,4),1,25) D:P(4)="S"!(P(23)="S") P S X="*CAUTION* - CHEMOTHERAPY" D:P(23)'="" P
  1. S X=" " D P I PSIV1'>0!'$P(PSIVSITE,U,3)!($P(PSIVSITE,U,3)=1&(P(4)'="P"))!($P(PSIVSITE,U,3)=2&("AH"'[P(4))) G MEDRT
  1. S:'$D(PSIVDOSE) PSIVDOSE="" S X=$P(PSIVDOSE," ",PSIV1) D:$E(X)="." CONVER S X="Dose due at: "_$S(X="":"________",1:$E(X,4,5)_"/"_$E(X,6,7)_"/"_$E(X,2,3)_" "_$E(X#1_"000",2,5)) D P
  1. ;
  1. MEDRT ;Find Medication Route
  1. S PSIVRP="",PSIVRT=""
  1. I $D(^PS(55,DFN,"IV",+ON,.2)) S PSIVRP=$P(^PS(55,DFN,"IV",+ON,.2),U,3) D
  1. .S PSIVRT=$P(^PS(51.2,PSIVRP,0),U,1)
  1. .S X="ROUTE: "_PSIVRT D:X]"" PMR
  1. ;
  1. INF S X=$P(P(8),"@") D:X]"" P
  1. I $D(^PS(55,DFN,"IV",+ON,3)) S X=$P(^(3),"^") D:X]"" P
  1. S X=P(9) D:X]"" P
  1. S X=P(11) D:X]"" P
  1. ;PSJ*5*184 - Display all messages if more than one additive has a message.
  1. I $D(MESS) S PSIMESS="" F S PSIMESS=$O(MESS(PSIMESS)) Q:PSIMESS="" S X=PSIMESS D P
  1. I $D(^PS(59.5,PSIVSN,4)) S Y=^(4) F PSIV=1:1 S X=$P(Y,U,PSIV) Q:X="" D P
  1. ;S X=PSIV1_"["_$S(PSIV1:PSIVNOL,1:PSIV2)_"]"_" "_$S('PSIV1:PSIVNOW,1:"") D P
  1. ;MSC/IHS/PB - 3/1/13 modified to incorporate VA changes for BCMA project
  1. ;S X=PSIVBAG D P
  1. ;IHS KCF VAOIT modified the following line to print the expiration date to print on the iv label IF EXP DATE PRINTS TO RIGHT OF LABEL COUNT
  1. S X=PSIVBAG I $G(TEXT1)'="" D OFFSET^PSIVLABL(X,"Do Not Use After: "_TEXT1) S X=$G(PRTLINE)
  1. D P
  1. ;IHS/MSC/PB - 04/25/12 - modified the following line to print the expiration date to print on the iv label
  1. ;IHS/MSC/PB - 12/10/12 - modified the line below to check for TEXT1 to exist.
  1. ;D OFFSET^PSIVLABL("Do Not Use After:",TEXT1) S X=$G(PRTLINE) D P
  1. ;I $G(TEXT1)'="" D OFFSET^PSIVLABL("Do Not Use After:",TEXT1) S X=$G(PRTLINE) D P
  1. ;MSC/IHS/PB - 3/1/13 end of modification
  1. Q
  1. P F LINE=LINE+1:1 D Q:$L(X)<1
  1. . I LINE>PSIVSITE D
  1. .. S LINE=1
  1. .. I 'PSJIO D Q
  1. ... F ZZ=1:1 Q:ZZ>$P(PSIVSITE,"^",16) W !
  1. .. F I="EL","SL" I $G(PSJIO(I))]"" X PSJIO(I)
  1. . K ZZ
  1. . F I="ST","STF" I $G(PSJIO(I))]"" X PSJIO(I)
  1. . W $E(X,1,PSIVRM)
  1. . F I="ETF","ET" I $G(PSJIO(I))]"" X PSJIO(I)
  1. . I 'PSJIO W !
  1. . S X=$E(X,PSIVRM+1,999)
  1. Q
  1. PMR ; Print Med Route on label
  1. ;
  1. F LINE=LINE+1:1 D Q:$L(X)<1
  1. . I LINE>PSIVSITE D
  1. .. S LINE=1
  1. .. I 'PSJIO D Q
  1. ... F ZZ=1:1 Q:ZZ>$P(PSIVSITE,"^",16) W !
  1. .. F I="EL","SL" I $G(PSJIO(I))]"" X PSJIO(I)
  1. . K ZZ
  1. . ;
  1. . F I="ST","STF","SM","SMF" I $G(PSJIO(I))]"" X PSJIO(I)
  1. . W $E(X,1,PSIVRM)
  1. . F I="ETF","ET","EMF","EM" I $G(PSJIO(I))]"" X PSJIO(I)
  1. . I 'PSJIO W !
  1. . S X=$E(X,PSIVRM+1,999)
  1. Q
  1. SOL1 S X=$S($D(^PS(52.7,$P(PSIV,U,2),0)):$P(^(0),"^")_" "_$P(^PS(55,DFN,"IVBCMA",PSJIDNO,"SOL",+PSIV,0),U,2),1:"**********") Q
  1. MESS ;PSJ*5*184 -make MESS a local array so all messages display for all additives.
  1. I $P(^PS(52.6,+Y,0),U,9)]"" S MESS($P(^PS(52.6,+Y,0),U,9))=""
  1. Q
  1. CONVER ;Expand dose to date.dose and set in X
  1. I P(15)>1440 S X=$$CONVER1^PSIVORE2($P(PSIVDOSE," "),P(15),(PSIV1-1)) Q
  1. S PDOSE=X S:PSIV1=2 PDATE=$E($P(PSIVDOSE," "),1,7)
  1. I $P(PSIVDOSE," ",PSIV1-1)#1'<PDOSE!(P(15)>1440) S:$D(X1) XX1=X1 S:$D(X2) XX2=X2 S X1=PDATE,X2=1 D C^%DTC S PDATE=X,X=X_PDOSE S:$D(XX1) X1=XX1 S:$D(XX2) X2=XX2 Q
  1. S X=PDATE_PDOSE
  1. Q
  1. BARCODE D PSET^%ZISP
  1. I 'PSJIO D
  1. . I IOBARON]"" W @IOBARON
  1. . W PSJBCID
  1. . I IOBAROFF]"" W @IOBAROFF
  1. . W !
  1. I PSJIO D
  1. . F I="SB","SBF" I $G(PSJIO(I))]"" X PSJIO(I)
  1. . W PSJBCID
  1. . F I="EBF","EB" I $G(PSJIO(I))]"" X PSJIO(I)
  1. Q