| 1 | PSIVSP ;BIR/RGY,PR,CML3-DOSE PROCESSOR ;09 Feb 99 / 12:30 PM
 | 
|---|
| 2 |  ;;5.0; INPATIENT MEDICATIONS ;**30,37,41,50,56,74,83,111,133,138**;16 DEC 97
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Reference to ^PS(51.1 is supported by DBIA #2177
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | EN ;
 | 
|---|
| 7 |  Q:'$D(X)
 | 
|---|
| 8 |  ;/S (PSIVAT,PSIVWAT,Y)="",XT=-1,X0=X,X=$S(X="ON CALL":X,X["ONE ":X,1:$P(X," "))
 | 
|---|
| 9 |  S ATZERO=0 I X["@",$P(X,"@",2)=0 S ATZERO=1,X=$P(X,"@")
 | 
|---|
| 10 |  D EN^PSGS0 S (P(9),PSIVSC1)=$S($G(X)]"":X,1:$G(P(9))),P(11)=$S($G(PSGS0Y):PSGS0Y,1:$G(P(11))),(XT,P(15))=$S(($G(PSGS0XT)!($G(PSGS0XT)="O")!($G(PSGS0XT)="D")):$G(PSGS0XT),1:$G(P(15)))
 | 
|---|
| 11 |  I $G(ATZERO) S P(7)=1
 | 
|---|
| 12 |  K ATZERO Q
 | 
|---|
| 13 | EN1 ;
 | 
|---|
| 14 |  S (PSIVAT,PSIVWAT,Y)="",XT=-1,X0=X,X=$S(X="ON CALL":X,X="ONCALL":X,X="ON-CALL":X,X="ONETIME":X,X="ONE-TIME":X,X="ONE TIME":X,X="1TIME":X,X="1 TIME":X,X="1-TIME":X,$L(X," ")<3:$P(X," "),1:$P(X," ",1,2))
 | 
|---|
| 15 |  S:$E(X)="^" X=$E(X,2,999) G:X="" Q S:X["@0" ATZERO=1 S X=$S(X["@0":$P(X,"@"),1:X),P(7)=$S($D(ATZERO):1,1:"") K ATZERO
 | 
|---|
| 16 |  ;;I X0["@",$P(X0,"@",2)'=0 K X Q
 | 
|---|
| 17 |  I $S($D(^PS(51.1,"AC","PSJ",X)):1,1:$E($O(^(X)),1,$L(X))=X) D DIC I Y'<0 G SH
 | 
|---|
| 18 |  ;;I $S(X="NOW":1,X="ONCE":1,X="STAT":1,X="ONE-TIME":1,X="ONE TIME":1,1:0) S XT=0,Y(0)=X G SH
 | 
|---|
| 19 | NS0 S Y=""
 | 
|---|
| 20 |  I $E(X,1,2)="AD" S XT=-1 Q
 | 
|---|
| 21 |  I $E(X,1,3)="BID"!($E(X,1,3)="TID")!($E(X,1,3)="QID") S XT=1440\$F("BTQ",$E(X))
 | 
|---|
| 22 |  E  S:$E(X)="Q" X=$E(X,2,99) S:'X X=$E(X)["O"+1_X S I=+X,X=$P(X,I,2),XT=I*$S(X["'":1,(X["D"&(X'["AD"))!(X["AM")!(X["PM")!(X["HS"&(X'["THS")):1440,X["H"&(X'["TH"):60,X["AC"!(X["PC"):480,X["W":10080,X["M":40320,1:0),X=X0 D 
 | 
|---|
| 23 |  . I 'XT,X'="NOW",X'="STAT",X'="ONCE",X'="ONE-TIME",X'="ONE TIME",X'="ONETIME",X'="1-TIME",X'="1 TIME",X'="1TIME",Y="" S XT=-1
 | 
|---|
| 24 | SH ;
 | 
|---|
| 25 |  I +Y<1,$E(X0)'="^" W:$G(ON)'["P" "  ",$S(XT=0&($S("^NOW^STAT^ONCE^ONE-TIME^ONETIME^1TIME^1-TIME^"[(U_$P(X," ")_U):1,X["1 TIME":1,1:X["ONE TIME")):"(ONCE ONLY)",XT>0:"Nonstandard schedule",XT<0:"",1:"(??)") W:XT>0 " (",XT," MINUTES)"
 | 
|---|
| 26 | Q Q:X="ONE TIME"
 | 
|---|
| 27 |  N I S X0=$P(X," ")_$S($L(X0," ")-1:" ",1:"")_$P(X0," ",2,99) K:XT<0!($L(X0)>22) X S:$D(X) X=X0 K X0 S:$G(P(7)) XT="" Q
 | 
|---|
| 28 |  ;N I S X0=$P(X," ")_$S($L(X0," ")-1:" ",1:"")_$P(X," ",2,99) K:XT<0!($L(X0)>22) X S:$D(X) X=X0 K X0 S:$G(P(7)) XT="" Q
 | 
|---|
| 29 |  ;S X0=X K:XT<0!($L(X0)>22) X S:$D(X) X=X0 K X0 S:$G(P(7)) XT="" Q
 | 
|---|
| 30 | NEWQ ;N I S X0=$P(X," ")_$S($L(X0," ")-1:" ",1:"")_$P(X0," ",2,99) K:XT<0!($L(X0)>22) X S:$D(X) X=X0 S:P(7) X=X0 K X0 K:XT>0&('P(7)) X Q
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 | ENDL W "   Dose limit ....  " S PSIVMIN=P(15)*X,PSIVSD=+P(2)
 | 
|---|
| 34 |  I PSIVMIN<0 W !!," --- There is something wrong with this order !!",!,"     Call inpatient supervisor ....." S Y=-1 K PSIVMIN Q
 | 
|---|
| 35 |  I P(4)="P"!(P(5))!(P(23)="P"),PSIVMIN=0,"^NOW^STAT^ONCE^ONE-TIME^ONE TIME^ON CALL^ONETIME^1TIME^1 TIME^1-TIME^"'[(U_P(9)_U) D DLP G QDL
 | 
|---|
| 36 |  D ENT^PSIVWL
 | 
|---|
| 37 | QDL I $D(X) S X=Y X ^DD("DD") W $P(Y,"@")," ",$P(Y,"@",2) S Y=X
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 | DLP ;
 | 
|---|
| 40 |  S X=X+1,$P(PSIVSD,".",2)=$P(PSIVSD,".",2)_$E("0000",1,4-$L($P(PSIVSD,".",2))) D CHK S X2=0,Y=1 I X<2 S Y=+PSIVSD G QDLP
 | 
|---|
| 41 |  I $P(PSIVSD,".",2)>$P(P(11),"-",$L(P(11),"-")) S X2=1 G OV
 | 
|---|
| 42 |  G:$P(P(11),"-")>$P(PSIVSD,".",2) OV
 | 
|---|
| 43 |  F Y=1:1 S X1=$P(P(11),"-",Y) I X1=$P(PSIVSD,".",2)!($P(PSIVSD,".",2)<X1) Q
 | 
|---|
| 44 | OV I P(11)="" W $C(7)," ???",!?15,"*** You have not defined any administration times !!" K X Q
 | 
|---|
| 45 |  F Y=Y:1 S:$P(P(11),"-",Y)="" X2=X2+1,Y=0,X=X+1 S X=X-1 Q:X<1
 | 
|---|
| 46 |  S X=PSIVSD\1 I X2>0 S X1=PSIVSD D C^%DTC S X=$P(X,".") ; install with version 17.3 of fileman
 | 
|---|
| 47 |  S Y=+(X_"."_$P(P(11),"-",Y))
 | 
|---|
| 48 | QDLP K X1,X2 Q
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | ENI ;
 | 
|---|
| 51 |  K:$L(X)<1!($L(X)>30)!(X["""")!($A(X)=45) X I '$D(X)!'$D(P(4)) Q
 | 
|---|
| 52 |  I P(4)="P"!(P(5))!(P(23)="P") Q:'X  S X="INFUSE OVER "_X_" MIN." W "   ",X Q
 | 
|---|
| 53 |  I X'=+X,($P(X,"@",2,999)'=+$P(X,"@",2,999)!(+$P(X,"@",2,999)<0)) K X Q
 | 
|---|
| 54 |  S SPSOL=$O(DRG("SOL",0)) I 'SPSOL K SPSOL,X W "  You must define at least one solution !!" Q
 | 
|---|
| 55 |  I X=+X S X=X_" ml/hr" W " ml/hr" D SPSOL S P(15)=$S('X:0,1:SPSOL\X*60+(SPSOL#X/X*60+.5)\1) K SPSOL Q
 | 
|---|
| 56 |  S SPSOL=$P(X,"@",2) S:$P(X,"@")=+X $P(X,"@")=$P(X,"@")_" ml/hr" W "   ",+SPSOL," Label",$S(SPSOL'=1:"s",1:"")," per day",!?15,"at an infusion rate of: ",$P(X,"@") S P(15)=$S('SPSOL:0,1:1440/SPSOL\1) K SPSOL
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | SPSOL S SPSOL=0 F XXX=0:0 S XXX=$O(DRG("SOL",XXX)) Q:'XXX  S SPSOL=SPSOL+$P(DRG("SOL",XXX),U,3)
 | 
|---|
| 59 |  K XXX Q
 | 
|---|
| 60 | CHK F Y=1:1 Q:$L(P(11))>240!($P(P(11),"-",Y)="")  S $P(P(11),"-",Y)=$P(P(11),"-",Y)_$E("0000",1,4-$L($P(P(11),"-",Y)))
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 | DIC ; 51.1 look-up
 | 
|---|
| 64 |  N PSJSCH S PSJSCH=X I '$D(WSCHADM) N VAIP D IN5^VADPT S WSCHADM=VAIP(5),X=PSJSCH
 | 
|---|
| 65 |  K DIC S DIC="^PS(51.1,",DIC(0)=$E("E",'$D(NOECH))_"ISZ"
 | 
|---|
| 66 |  S DIC("W")="W ""  "","_$S('$D(WSCHADM):"$P(^(0),""^"",2)",'+WSCHADM:"$P(^(0),""^"",2)",1:"$S($D(^PS(51.1,+Y,1,+WSCHADM,0)):$P(^(0),""^"",2),1:$P(^PS(51.1,+Y,0),""^"",2))"),D="APPSJ" S:$D(PSIVSPQF) DIC(0)=DIC(0)_"O"
 | 
|---|
| 67 |  D IX^DIC K DIC
 | 
|---|
| 68 |  S:$D(DIE)#2 DIC=DIE Q:Y<0
 | 
|---|
| 69 |  S X=Y(0,0),ZZY=Y,(XT,Y)="" I $D(WSCHADM),$D(^PS(51.1,+ZZY,1,+WSCHADM,0)),$P(^(0),"^",2)]"" S (PSIVWAT,Y)=$P(^(0),"^",2)
 | 
|---|
| 70 |  K ZZY,WSCHADM S:Y="" (X,PSIVSC1)=$P(Y(0),U),(PSIVAT,Y)=$P(Y(0),"^",2) S XT=$P(Y(0),"^",3) Q
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | ORINF ;  OERR input transform for Infusion Rate
 | 
|---|
| 73 |  ;  X=data
 | 
|---|
| 74 |  N INFUSE
 | 
|---|
| 75 |  K:$L(X)<1!($L(X)>30)!(X["""")!($A(X)=45) X I '$D(X) Q
 | 
|---|
| 76 |  I X?.E1L.E S INFUSE=$$ENLU^PSGMI(X) Q:(INFUSE="TITRATE")!(INFUSE="BOLUS")
 | 
|---|
| 77 |  Q:(X="TITRATE")!(X="BOLUS")
 | 
|---|
| 78 |  I X["=" D  Q   ; NOIS LOU-0501-42191
 | 
|---|
| 79 |  .N X2,X1 S X1=$P(X,"="),X2=$P(X,"=",2)
 | 
|---|
| 80 |  .I X1["ML/HR",(+X1=$P(X1,"ML/HR"))!(+X1=$P(X1," ML/HR")) D
 | 
|---|
| 81 |  ..S X1=$TR(X1,"ML/HR","ml/hr")
 | 
|---|
| 82 |  .I X2["ML/HR",(+X2=$P(X2,"ML/HR"))!(+X2=$P(X2," ML/HR")) D
 | 
|---|
| 83 |  ..S X2=$TR(X2,"ML/HR","ml/hr")
 | 
|---|
| 84 |  .I X1[" ml/hr",(+X1=$P(X1," ml/hr")) D
 | 
|---|
| 85 |  ..S X1=$P(X1," ml/hr")_$P(X1," ml/hr",2,9999)
 | 
|---|
| 86 |  .I X2[" ml/hr",(+X2=$P(X2," ml/hr")) D
 | 
|---|
| 87 |  ..S X2=$P(X2," ml/hr")_$P(X2," ml/hr",2,9999)
 | 
|---|
| 88 |  .I X1["ml/hr",(+X1=$P(X1,"ml/hr")) D
 | 
|---|
| 89 |  ..S X1=$P(X1,"ml/hr")_$P(X1,"ml/hr",2,9999)
 | 
|---|
| 90 |  .I X2["ml/hr",(+X2=$P(X2,"ml/hr")) D
 | 
|---|
| 91 |  ..S X2=$P(X2,"ml/hr")_$P(X2,"ml/hr",2,9999)
 | 
|---|
| 92 |  .I X2'=+X2 D
 | 
|---|
| 93 |  ..I ($P(X2,"@",2,999)'=+$P(X2,"@",2,999)!(+$P(X2,"@",2,999)<0)) K X Q
 | 
|---|
| 94 |  .I X1=+X1 S X1=X1_" ml/hr"
 | 
|---|
| 95 |  .I X2=+X2 S X2=X2_" ml/hr"
 | 
|---|
| 96 |  .S:$P(X2,"@")=+X2 $P(X2,"@")=$P(X2,"@")_" ml/hr"
 | 
|---|
| 97 |  .S X=X1_"="_X2
 | 
|---|
| 98 |  I X["ML/HR",(+X=$P(X,"ML/HR"))!(+X=$P(X," ML/HR")) S X=$TR(X,"ML/HR","ml/hr")
 | 
|---|
| 99 |  I X[" ml/hr",+X=$P(X," ml/hr") S X=$P(X," ml/hr")_$P(X," ml/hr",2,9999)
 | 
|---|
| 100 |  I X["ml/hr",+X=$P(X,"ml/hr") S X=$P(X,"ml/hr")_$P(X,"ml/hr",2,9999)
 | 
|---|
| 101 |  I X'=+X,($P(X,"@",2,999)'=+$P(X,"@",2,999)!(+$P(X,"@",2,999)<0)) K X Q
 | 
|---|
| 102 |  I X=+X S X=X_" ml/hr" Q
 | 
|---|
| 103 |  S:$P(X,"@")=+X $P(X,"@")=$P(X,"@")_" ml/hr"
 | 
|---|
| 104 |  Q
 | 
|---|