PSSQOC ;BIR/MLM-CONVERT PSJ 4.5 QUICK ORDERS FOR USE IN OE/RR 3.0 ;09/09/97
;;1.0;PHARMACY DATA MANAGEMENT;*100,123*;9/30/97;Build 6
;External reference to ^ORD(101 supported by DBIA 872
;External reference to ^PS(57.1 supported by DBIA 2139
;
EN(PROTIEN) ;
N DD,OI,ND0,ND1,PSJBAD,TVOLUME,X S (PSJBAD,TVOLUME)=0 K ^TMP("PSJQO",$J)
S PSJQOPTR=+$E($P($P($G(^ORD(101,+PROTIEN,0)),U)," "),5,99)
S ND0=$G(^PS(57.1,PSJQOPTR,0)),ND1=$G(^(1)) I ND0=""!(ND1="") Q
I $P(ND0,U,3)'=1,$P(ND0,U,3)'=2 Q
D @$P(ND0,U,3) Q:'OI
S ^TMP("PSJQO",$J,1)=$P(ND0,U)_U_$P(ND0,U,3)_U_OI_U_$P(ND1,U,2,6)
S:$G(DD) ^TMP("PSJQO",$J,"DD")=DD
D GTPC
; check infusion rate
S X=$P(ND1,"^",5) I $G(X) D
.D ENI K FREQ I '$D(X) S PSJBAD=1
.E S $P(^TMP("PSJQO",$J,1),"^",7)=X
K:PSJBAD=1 ^TMP("PSJQO",$J)
Q
;
1 ; Convert IV Fluid Quick Order
S CNT=0 F X=0:0 S X=$O(^PS(57.1,PSJQOPTR,3,X)) Q:'X D
.S Y=$G(^PS(52.6,+$G(^PS(57.1,PSJQOPTR,3,X,0)),0)),OI=$P(Y,U,11)
.S UNITS=$P("ML^LITER^MCG^MG^GM^UNITS^IU^MEQ^MM^MU^THOUU^MG-PE^NANOGRAM^MMOL",U,+$P(Y,U,3))
.I OI]"" S CNT=CNT+1
.I S ^TMP("PSJQO",$J,"AD",CNT,0)=OI_U_+$P($G(^PS(57.1,PSJQOPTR,3,X,0)),"^",2)_U_UNITS
I CNT S ^TMP("PSJQO",$J,"AD",0)=CNT_U_CNT
S CNT=0 F X=0:0 S X=$O(^PS(57.1,PSJQOPTR,4,X)) Q:'X D
.S Y=$G(^PS(52.7,+$G(^PS(57.1,PSJQOPTR,4,X,0)),0)),OI=$P(Y,U,11)
.N VOL S VOL=$P($G(^PS(57.1,PSJQOPTR,4,X,0)),"^",2)
.S TVOLUME=TVOLUME++VOL
.I (VOL'=+VOL)&(VOL'?1.6N1" "1"ML") S PSJBAD=1
.I OI]"" S CNT=CNT+1
.I S ^TMP("PSJQO",$J,"SOL",CNT,0)=OI_U_VOL
I CNT S ^TMP("PSJQO",$J,"SOL",0)=CNT_U_CNT
Q
2 ;
S OI="",PD=+ND1
F DD=0:0 S DD=$O(^PSDRUG("AP",PD,DD)) Q:'DD I $G(^PSDRUG(DD,"I"))=""!($G(^PSDRUG(DD,"I"))>DT) S OI=+$G(^PSDRUG(DD,2))
I '$O(^PSDRUG("AP",PD,DD)) S ^TMP("PSJQO",$J,"DD")=DD Q
S MATCH=1 F S DD=$O(^PSDRUG("AP",PD,DD)) Q:'DD!'MATCH D
.I ($G(^PSDRUG(DD,"I"))=""!($G(^PSDRUG(DD,"I"))>DT))&(+$G(^PSDRUG(DD,2))'=OI) S MATCH=0 Q
S:'MATCH OI=""
Q
;
;
GTPC ; Set up TMP for provider comments
I $O(^PS(57.1,+PSJQOPTR,2,0)) D
.S CNT=0 F X=0:0 S X=$O(^PS(57.1,+PSJQOPTR,2,X)) Q:'X D
..S Y=$G(^PS(57.1,PSJQOPTR,2,X,0)) S:Y]"" CNT=CNT+1,^TMP("PSJQO",$J,"PC",CNT,0)=Y
.S:$O(^TMP("PSJQO",$J,"PC",0)) ^TMP("PSJQO",$J,"PC",0)=CNT_U_CNT
Q
ENI ;Calculate Frequency for IV orders
K:$L(X)<1!($L(X)>30)!(X["""")!($A(X)=45) X I '$D(X) Q
I X'=+X,($P(X,"@",2,999)'=+$P(X,"@",2,999)!(+$P(X,"@",2,999)<0)),($P(X," ml/hr")'=+$P(X," ml/hr")!(+$P(X," ml/hr")<0)) K X Q
I X=+X S X=X_" ml/hr" D SPSOL S FREQ=$S('X:0,1:SPSOL\X*60+(SPSOL#X/X*60+.5)\1) K SPSOL Q
I X[" ml/hr" D SPSOL S FREQ=$S('X:0,1:SPSOL\X*60+(SPSOL#X/X*60+.5)\1) K SPSOL Q
S SPSOL=$P(X,"@",2) S:$P(X,"@")=+X $P(X,"@")=$P(X,"@")_" ml/hr" S FREQ=$S('SPSOL:0,1:1440/SPSOL\1) K SPSOL
Q
SPSOL S SPSOL=+TVOLUME Q
PSSQOC ;BIR/MLM-CONVERT PSJ 4.5 QUICK ORDERS FOR USE IN OE/RR 3.0 ;09/09/97
+1 ;;1.0;PHARMACY DATA MANAGEMENT;*100,123*;9/30/97;Build 6
+2 ;External reference to ^ORD(101 supported by DBIA 872
+3 ;External reference to ^PS(57.1 supported by DBIA 2139
+4 ;
EN(PROTIEN) ;
+1 NEW DD,OI,ND0,ND1,PSJBAD,TVOLUME,X
SET (PSJBAD,TVOLUME)=0
KILL ^TMP("PSJQO",$JOB)
+2 SET PSJQOPTR=+$EXTRACT($PIECE($PIECE($GET(^ORD(101,+PROTIEN,0)),U)," "),5,99)
+3 SET ND0=$GET(^PS(57.1,PSJQOPTR,0))
SET ND1=$GET(^(1))
IF ND0=""!(ND1="")
QUIT
+4 IF $PIECE(ND0,U,3)'=1
IF $PIECE(ND0,U,3)'=2
QUIT
+5 DO @$PIECE(ND0,U,3)
IF 'OI
QUIT
+6 SET ^TMP("PSJQO",$JOB,1)=$PIECE(ND0,U)_U_$PIECE(ND0,U,3)_U_OI_U_$PIECE(ND1,U,2,6)
+7 IF $GET(DD)
SET ^TMP("PSJQO",$JOB,"DD")=DD
+8 DO GTPC
+9 ; check infusion rate
+10 SET X=$PIECE(ND1,"^",5)
IF $GET(X)
Begin DoDot:1
+11 DO ENI
KILL FREQ
IF '$DATA(X)
SET PSJBAD=1
+12 IF '$TEST
SET $PIECE(^TMP("PSJQO",$JOB,1),"^",7)=X
End DoDot:1
+13 IF PSJBAD=1
KILL ^TMP("PSJQO",$JOB)
+14 QUIT
+15 ;
1 ; Convert IV Fluid Quick Order
+1 SET CNT=0
FOR X=0:0
SET X=$ORDER(^PS(57.1,PSJQOPTR,3,X))
IF 'X
QUIT
Begin DoDot:1
+2 SET Y=$GET(^PS(52.6,+$GET(^PS(57.1,PSJQOPTR,3,X,0)),0))
SET OI=$PIECE(Y,U,11)
+3 SET UNITS=$PIECE("ML^LITER^MCG^MG^GM^UNITS^IU^MEQ^MM^MU^THOUU^MG-PE^NANOGRAM^MMOL",U,+$PIECE(Y,U,3))
+4 IF OI]""
SET CNT=CNT+1
+5 IF $TEST
SET ^TMP("PSJQO",$JOB,"AD",CNT,0)=OI_U_+$PIECE($GET(^PS(57.1,PSJQOPTR,3,X,0)),"^",2)_U_UNITS
End DoDot:1
+6 IF CNT
SET ^TMP("PSJQO",$JOB,"AD",0)=CNT_U_CNT
+7 SET CNT=0
FOR X=0:0
SET X=$ORDER(^PS(57.1,PSJQOPTR,4,X))
IF 'X
QUIT
Begin DoDot:1
+8 SET Y=$GET(^PS(52.7,+$GET(^PS(57.1,PSJQOPTR,4,X,0)),0))
SET OI=$PIECE(Y,U,11)
+9 NEW VOL
SET VOL=$PIECE($GET(^PS(57.1,PSJQOPTR,4,X,0)),"^",2)
+10 SET TVOLUME=TVOLUME++VOL
+11 IF (VOL'=+VOL)&(VOL'?1.6N1" "1"ML")
SET PSJBAD=1
+12 IF OI]""
SET CNT=CNT+1
+13 IF $TEST
SET ^TMP("PSJQO",$JOB,"SOL",CNT,0)=OI_U_VOL
End DoDot:1
+14 IF CNT
SET ^TMP("PSJQO",$JOB,"SOL",0)=CNT_U_CNT
+15 QUIT
2 ;
+1 SET OI=""
SET PD=+ND1
+2 FOR DD=0:0
SET DD=$ORDER(^PSDRUG("AP",PD,DD))
IF 'DD
QUIT
IF $GET(^PSDRUG(DD,"I"))=""!($GET(^PSDRUG(DD,"I"))>DT)
SET OI=+$GET(^PSDRUG(DD,2))
+3 IF '$ORDER(^PSDRUG("AP",PD,DD))
SET ^TMP("PSJQO",$JOB,"DD")=DD
QUIT
+4 SET MATCH=1
FOR
SET DD=$ORDER(^PSDRUG("AP",PD,DD))
IF 'DD!'MATCH
QUIT
Begin DoDot:1
+5 IF ($GET(^PSDRUG(DD,"I"))=""!($GET(^PSDRUG(DD,"I"))>DT))&(+$GET(^PSDRUG(DD,2))'=OI)
SET MATCH=0
QUIT
End DoDot:1
+6 IF 'MATCH
SET OI=""
+7 QUIT
+8 ;
+9 ;
GTPC ; Set up TMP for provider comments
+1 IF $ORDER(^PS(57.1,+PSJQOPTR,2,0))
Begin DoDot:1
+2 SET CNT=0
FOR X=0:0
SET X=$ORDER(^PS(57.1,+PSJQOPTR,2,X))
IF 'X
QUIT
Begin DoDot:2
+3 SET Y=$GET(^PS(57.1,PSJQOPTR,2,X,0))
IF Y]""
SET CNT=CNT+1
SET ^TMP("PSJQO",$JOB,"PC",CNT,0)=Y
End DoDot:2
+4 IF $ORDER(^TMP("PSJQO",$JOB,"PC",0))
SET ^TMP("PSJQO",$JOB,"PC",0)=CNT_U_CNT
End DoDot:1
+5 QUIT
ENI ;Calculate Frequency for IV orders
+1 IF $LENGTH(X)<1!($LENGTH(X)>30)!(X["""")!($ASCII(X)=45)
KILL X
IF '$DATA(X)
QUIT
+2 IF X'=+X
IF ($PIECE(X,"@",2,999)'=+$PIECE(X,"@",2,999)!(+$PIECE(X,"@",2,999)<0))
IF ($PIECE(X," ml/hr")'=+$PIECE(X," ml/hr")!(+$PIECE(X," ml/hr")<0))
KILL X
QUIT
+3 IF X=+X
SET X=X_" ml/hr"
DO SPSOL
SET FREQ=$SELECT('X:0,1:SPSOL\X*60+(SPSOL#X/X*60+.5)\1)
KILL SPSOL
QUIT
+4 IF X[" ml/hr"
DO SPSOL
SET FREQ=$SELECT('X:0,1:SPSOL\X*60+(SPSOL#X/X*60+.5)\1)
KILL SPSOL
QUIT
+5 SET SPSOL=$PIECE(X,"@",2)
IF $PIECE(X,"@")=+X
SET $PIECE(X,"@")=$PIECE(X,"@")_" ml/hr"
SET FREQ=$SELECT('SPSOL:0,1:1440/SPSOL\1)
KILL SPSOL
+6 QUIT
SPSOL SET SPSOL=+TVOLUME
QUIT