PSSOPKI1 ;BIR/MHA-DEA/PKI CPRS Dosage call ;03/29/02 ;;1.0;PHARMACY DATA MANAGEMENT;**61,69,83**;9/30/97 ;Reference ^PS(50.607 - DBIA 2221 ;Reference ^YSCL(603.01 - DBIA 2697 ; DOSE(PSSX,PD,TYPE,PSSDFN) ; K PSSX ; PSSX - Target array ; PD - Orderable Item ; TYPE - O:Outpt, U:Unit Dose, I:IV, X:Non-VA Med ; PSSDFN - Patient ; N DLOOP,DCNT1,DLOOP1,LOW,FORM,PSSOIU,PSSLOW,PSSLOW1,PSSLOW2,PSOLC,PL,PSSHOLD,PSSA,PSSZ,PSSC,PSIEN,PSSTRN,PSSDSE,PSSVERB,PSSPREP,PSSCLO,PSSDEA,PSSMAX,PSSDLP,PSNN,PSNNN,PSSREQS,PSSLOW4,PL2,PSSA1,PL3,PSSUNITX,PSSLD,PSSLD1 N PSSDOSE,PSSUNTS,PSSUDOS,PSSQT,PSSBCM,PSSHLF S PSSOIU=$S(TYPE="I":1,TYPE="U":1,1:0) F DLOOP=0:0 S DLOOP=$O(^PSDRUG("ASP",PD,DLOOP)) Q:'DLOOP D .Q:'$O(^PSDRUG(DLOOP,"DOS1",0)) .S PSSTRN=$P($G(^PSDRUG(DLOOP,"DOS")),"^"),PSSUNITX=$P($G(^("DOS")),"^",2) Q:PSSTRN="" .S PSSUNITX=$S($P($G(^PS(50.607,+$G(PSSUNITX),0)),"^")'=""&($P($G(^(0)),"^")'["/"):$P($G(^(0)),"^"),1:"") .I $P($G(^PSDRUG(DLOOP,"I")),"^"),+$P($G(^("I")),"^")
1 S PSSX(PSSLOW4,(PSOLC-1))=PSSX(PSSLOW2) K PSSX(PSSLOW2) K PSSHOLD S PL="" F S PL=$O(PSSX(PL)) Q:PL="" S PSSHOLD($P(PSSX(PL),"^"),PL)=PSSX(PL) I $O(PSSX(PL,0)) D .S PL2="" F S PL2=$O(PSSX(PL,PL2)) Q:PL2="" S PSSHOLD($P(PSSX(PL,PL2),"^"),PL,PL2)=PSSX(PL,PL2) K PSSX S PSSA=1,PSSZ="" F S PSSZ=$O(PSSHOLD(PSSZ)) Q:PSSZ="" F PSSC=0:0 S PSSC=$O(PSSHOLD(PSSZ,PSSC)) Q:'PSSC S PSSX(PSSA)=PSSHOLD(PSSZ,PSSC) D SLS D:'$D(PSSX("DD",+$P(PSSX(PSSA),"^",6))) D:$O(PSSHOLD(PSSZ,PSSC,0)) MULTI S PSSA=PSSA+1 .S (PSIEN,DLOOP)=+$P(PSSX(PSSA),"^",6) K PSSMAX D:$G(TYPE)["O" MAX .;ELR;ADDED NEXT LINE PSS*1*83 .D SETU .S PSSX("DD",PSIEN)=$P($G(^PSDRUG(PSIEN,0)),"^")_"^"_$P($G(^(660)),"^",6)_"^"_$P($G(^(0)),"^",9)_"^"_$P($G(^(660)),"^",8)_"^"_$P($G(^("DOS")),"^") .S PSSX("DD",PSIEN)=PSSX("DD",PSIEN)_"^"_$G(PSSUNITX)_"^"_$P($G(^PS(50.606,+$G(PSSDSE),0)),"^")_"^"_$G(PSSMAX) .D REQS S PSSX("DD",PSIEN)=PSSX("DD",PSIEN)_"^"_$G(PSSREQS) D DEAPKI^PSSOPKI(PSIEN) .S PSSX("MISC")=$G(PSSVERB)_"^"_$G(PSSPREP)_"^"_$P($G(^PS(50.606,+$G(PSSDSE),"MISC")),"^",4) K PSSHOLD,PSSDZUNT D LEAD^PSSUTLA1 D:$G(TYPE)["O" EN3^PSSUTLA1(PD,245) S PSSX("DEA")=$$OIDEA^PSSOPKI(PD,TYPE) Q DOSE2 ;Local doses N PSOCT,PSONDS,PSOND,PSOND1,PSONDX,PSONDU,PSODOS,PSLOC,PSLOCV,PSODUPD,PSOXDOSE S PSOCT=1 S PSOXDOSE=+$P($G(^PS(50.7,PD,0)),"^",2) K PSNNN F DLOOP=0:0 S DLOOP=$O(^PSDRUG("ASP",PD,DLOOP)) Q:'DLOOP D .I $P($G(^PSDRUG(DLOOP,"I")),"^"),+$P($G(^("I")),"^")
3 S PSSNPL=$E(PSNNN,($L(PSNNN)-2),$L(PSNNN)) I $G(PSSNPL)="(S)"!($G(PSSNPL)="(s)") D .I $G(PSSUDOS)'>1 S PSSNP=$E(PSNNN,1,($L(PSNNN)-3)) .I $G(PSSUDOS)>1 S PSSNP=$E(PSNNN,1,($L(PSNNN)-3))_$E(PSSNPL,2) Q APP ; Checking Application Use N APPUSE S PSSQT=0,APPUSE=$P($G(^PSDRUG(DLOOP,2)),"^",3) I $G(TYPE)="O" S:APPUSE'["O" PSSQT=1 Q I $G(TYPE)="X" S:APPUSE'["X" PSSQT=1 Q I APPUSE'["U",APPUSE'["I" S PSSQT=1 Q NS I PSONDS'?.N&(PSONDS'?.N1".".N) K PSONDS Q NU S PSONDU=$S($G(PSONDS)&($G(PSONDU)):$P($G(^PS(50.607,+$G(PSONDU),0)),"^"),1:"") Q SETU S PSSUNITX=$P($G(^PSDRUG(PSIEN,"DOS")),"^",2) S PSSUNITX=$S($P($G(^PS(50.607,+$G(PSSUNITX),0)),"^")'=""&($P($G(^(0)),"^")'["/"):$P($G(^(0)),"^"),1:"") Q