PSSLDALL ;BIR/RTR-Find all Local Possible Dosage to edit ;05/04/08
;;1.0;PHARMACY DATA MANAGEMENT;**129**;9/30/07;Build 67
;
;Reference to 50.607 supported by DBIA 2221
EN ;
W !!,"This option will find all Local Possible Dosages that are eligible for Dosage"
W !,"Checks that do not have either the Numeric Dosage or Dose Unit entered for the"
W !,"Local Possible Dosage. This mapping is necessary to perform Dosage checks."
W !!,"Searching for local Possible Dosages..."
N DIRUT,DIROUT,DIC,DTOUT,DUOUT,X,Y,DIE,DA,DR,PSSGVNMX,PSSGVIEN,PSSGVTOT,PSSGVLPX,PSSGVLC1,PSSGVLC2,PSSGVOUT,PSSGVZR,PSSGVND1,PSSGVND3
N PSSGVOK,PSSGVNDF,PSSGVDF,PSSGVSTN,PSSGVUNT,PSSGVUNX,PSSGVSXX,PSSGVSZZ,PSSGVFLG,PSSGVGG1,PSSGVGG2,PSSGVGG3,PSSGVGG4,PSSGVCNT,PSSGVLP
N PSSGVLOC,PSSGVGG5,PSSGVGG6,PSSGVLCX,PSSGVBF6,PSSGVAF6,DIR,DIDEL
K PSSGVNMX,PSSGVIEN,PSSGVTOT,PSSGVOUT
S (PSSGVOUT,PSSGVTOT)=0
S PSSGVNMX="" F S PSSGVNMX=$O(^PSDRUG("B",PSSGVNMX)) Q:PSSGVNMX=""!(PSSGVOUT) F PSSGVIEN=0:0 S PSSGVIEN=$O(^PSDRUG("B",PSSGVNMX,PSSGVIEN)) Q:'PSSGVIEN!(PSSGVOUT) D
.K PSSGVZR,PSSGVND1,PSSGVND3,PSSGVOK,PSSGVNDF,PSSGVDF,PSSGVLC2,PSSGVLPX,PSSGVLC1,PSSGVSTN,PSSGVUNT,PSSGVUNX,PSSGVSXX,PSSGVSZZ,PSSGVFLG
.K PSSGVGG1,PSSGVGG2,PSSGVGG3,PSSGVGG4,PSSGVCNT,PSSGVLP,PSSGVLOC,PSSGVGG5,PSSGVGG6,PSSGVLCX,PSSGVBF6,PSSGVAF6
.S PSSGVZR=$G(^PSDRUG(PSSGVIEN,0)),PSSGVND1=$P($G(^PSDRUG(PSSGVIEN,"ND")),"^"),PSSGVND3=$P($G(^PSDRUG(PSSGVIEN,"ND")),"^",3)
.S PSSGVTOT=PSSGVTOT+1 I '(PSSGVTOT#20) W "."
.S PSSGVOK=$$TEST
.Q:'PSSGVOK
.S PSSGVLC2=0 F PSSGVLPX=0:0 S PSSGVLPX=$O(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLPX)) Q:'PSSGVLPX!(PSSGVLC2) S PSSGVLC1=$G(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLPX,0)) I $P(PSSGVLC1,"^")'="" I '$P(PSSGVLC1,"^",5)!($P(PSSGVLC1,"^",6)="") S PSSGVLC2=1
.Q:'PSSGVLC2
.W !!!?5,"Drug: "_$P(PSSGVZR,"^")
.S PSSGVSTN=$P($G(^PSDRUG(PSSGVIEN,"DOS")),"^"),PSSGVUNT=$P($G(^PSDRUG(PSSGVIEN,"DOS")),"^",2)
.S PSSGVUNX=$S($G(PSSGVUNT):$P($G(^PS(50.607,+$G(PSSGVUNT),0)),"^"),$P($G(PSSGVNDF),"^",6)'="":$P($G(PSSGVNDF),"^",6),1:"")
.L +^PSDRUG(PSSGVIEN):$S($G(DILOCKTM)>0:DILOCKTM,1:3) I '$T W !!,"Another person is editing "_$P(PSSGVZR,"^"),! D Q
..K DIR S DIR(0)="E",DIR("A")="Press Return to Continue" D ^DIR K DIR I Y'=1!($D(DTOUT))!($D(DUOUT)) S PSSGVOUT=1
.I PSSGVND1,PSSGVND3 S PSSGVSXX=$P(PSSGVNDF,"^",4),PSSGVSZZ=$P(PSSGVNDF,"^",6)
.I PSSGVSTN'="",$E($G(PSSGVSTN),1)="." S PSSGVSTN="0"_PSSGVSTN
.I $G(PSSGVSXX)'="",$E($G(PSSGVSXX),1)="." S PSSGVSXX="0"_PSSGVSXX
.S PSSGVFLG=0
.I $G(PSSGVSXX)'="",($G(PSSGVSTN)'="") I $G(PSSGVSXX)'=$G(PSSGVSTN) D
..S PSSGVFLG=1
..S PSSGVGG1=$L($G(PSSGVSXX)),PSSGVGG2=$L($G(PSSGVUNX)),PSSGVGG3=$L($G(PSSGVSTN)),PSSGVGG4=$L($S($G(PSSGVUNX)'["/":$G(PSSGVUNX),1:""))
..W !!,"Strength from National Drug File match => " D
...I PSSGVGG1+PSSGVGG2<34 W $G(PSSGVSXX)_" "_$G(PSSGVUNX) Q
...W !?3,$G(PSSGVSXX) D
....I PSSGVGG1+PSSGVGG2<73 W " "_$G(PSSGVUNX) Q
....W !?3,$G(PSSGVUNX)
..W !,"Strength currently in the Drug File => " D
...I PSSGVGG3+PSSGVGG4<34 W $G(PSSGVSTN)_" "_$S($G(PSSGVUNX)'["/":$G(PSSGVUNX),1:"") Q
...W !?3,$G(PSSGVSTN) D
....I PSSGVGG3+PSSGVGG4<73 W " "_$S($G(PSSGVUNX)'["/":$G(PSSGVUNX),1:"") Q
....W !?3,$S($G(PSSGVUNX)'["/":$G(PSSGVUNX),1:"")
..W !!,"Please Note: Strength of drug does not match strength of VA Product it is",!,"matched to."
.S PSSGVCNT=0
.F PSSGVLP=0:0 S PSSGVLP=$O(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLP)) Q:'PSSGVLP!(PSSGVOUT) S PSSGVLOC=$G(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLP,0)) D:$P(PSSGVLOC,"^")'=""
..I $P(PSSGVLOC,"^",5),($P(PSSGVLOC,"^",6)'="") Q
..I 'PSSGVCNT,'PSSGVFLG I $G(PSSGVSXX)'=""!($G(PSSGVSTN)'="")!($G(PSSGVUNX)'="") D
...S PSSGVGG5=$L($S($G(PSSGVSTN)'="":$G(PSSGVSTN),$G(PSSGVSXX)'="":$G(PSSGVSXX),1:"")),PSSGVGG6=$L($G(PSSGVUNX))
...W !!,"Strength: "_$S($G(PSSGVSTN)'="":$G(PSSGVSTN),$G(PSSGVSXX)'="":$G(PSSGVSXX),1:"")
...I PSSGVGG5+PSSGVGG6<60 W " Unit: "_$G(PSSGVUNX) Q
...W !,"Unit: "_$G(PSSGVUNX)
..S PSSGVCNT=1
..W !!!,$P(PSSGVLOC,"^") I $P(PSSGVLOC,"^",5)!($P(PSSGVLOC,"^",6)'="") D
...W !,"Numeric Dose: "_$S($E($P(PSSGVLOC,"^",6),1)=".":"0"_$P(PSSGVLOC,"^",6),1:$P(PSSGVLOC,"^",6))
...W ?37,"Dose Unit: "_$S('$P(PSSGVLOC,"^",5):"",1:$P($G(^PS(51.24,+$P(PSSGVLOC,"^",5),0)),"^"))
..W ! K DIE,Y,DTOUT,DR,DA,DIDEL S DA(1)=PSSGVIEN,DIE="^PSDRUG("_PSSGVIEN_",""DOS2"",",DR="4;5",DA=PSSGVLP
..D ^DIE K DIE,DR,DA I $D(DTOUT)!($D(Y)) D Q:PSSGVOUT
...W ! K DIR S DIR(0)="Y",DIR("A")="Do you want to continue mapping Local Possible Dosages",DIR("B")="Y",DIR("?")="Enter 'Y' to continue mapping Local Possible Dosages, enter 'N' to exit."
...D ^DIR K DIR I $D(DTOUT)!($D(DUOUT))!($G(Y)<1) S PSSGVOUT=1
..S PSSGVLCX=$G(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLP,0))
..S PSSGVBF6=$S($E($P(PSSGVLOC,"^",6),1)=".":"0"_$P(PSSGVLOC,"^",6),1:$P(PSSGVLOC,"^",6)) S PSSGVAF6=$S($E($P(PSSGVLCX,"^",6),1)=".":"0"_$P(PSSGVLCX,"^",6),1:$P(PSSGVLCX,"^",6))
..I $P(PSSGVLCX,"^",5)'=$P(PSSGVLOC,"^",5)!(PSSGVBF6'=PSSGVAF6) D
...W !!,$P(PSSGVLCX,"^")
...W !,"Numeric Dose: "_$S($E($P(PSSGVLCX,"^",6),1)=".":"0"_$P(PSSGVLCX,"^",6),1:$P(PSSGVLCX,"^",6))
...W ?40,"Dose Unit: "_$S('$P(PSSGVLCX,"^",5):"",1:$P($G(^PS(51.24,+$P(PSSGVLCX,"^",5),0)),"^"))
.W ! D UL
K PSSGVOUT,PSSGVTOT,PSSGVNMX,PSSGVIEN,PSSGVZR,PSSGVND1,PSSGVND3,PSSGVOK,PSSGVLC2,PSSGVLPX,PSSGVLC1
S (PSSGVOUT,PSSGVTOT)=0 W !!,"Checking for any remaining unmapped Local Possible Dosages..."
S PSSGVNMX="" F S PSSGVNMX=$O(^PSDRUG("B",PSSGVNMX)) Q:PSSGVNMX=""!(PSSGVOUT) F PSSGVIEN=0:0 S PSSGVIEN=$O(^PSDRUG("B",PSSGVNMX,PSSGVIEN)) Q:'PSSGVIEN!(PSSGVOUT) D
.S PSSGVZR=$G(^PSDRUG(PSSGVIEN,0)),PSSGVND1=$P($G(^PSDRUG(PSSGVIEN,"ND")),"^"),PSSGVND3=$P($G(^PSDRUG(PSSGVIEN,"ND")),"^",3)
.S PSSGVTOT=PSSGVTOT+1 I '(PSSGVTOT#100) W "."
.K PSSGVDF,PSSGVNDF S PSSGVOK=$$TEST
.Q:'PSSGVOK
.S PSSGVLC2=0 F PSSGVLPX=0:0 S PSSGVLPX=$O(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLPX)) Q:'PSSGVLPX!(PSSGVLC2) S PSSGVLC1=$G(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLPX,0)) I $P(PSSGVLC1,"^")'="" I '$P(PSSGVLC1,"^",5)!($P(PSSGVLC1,"^",6)="") S PSSGVLC2=1
.Q:'PSSGVLC2
.S PSSGVOUT=1
I 'PSSGVOUT W !!,"All Local Possible Dosages are mapped!",! K DIR S DIR(0)="E",DIR("A")="Press Return to Continue" D ^DIR K DIR Q
W !!,"There are still Local Possible Dosages not yet mapped,",!,"see the 'Local Possible Dosages Report' option for more details.",!
K DIR S DIR(0)="E",DIR("A")="Press Return to Continue" D ^DIR K DIR
Q
;
UL ;unlock drug
L -^PSDRUG(PSSGVIEN)
Q
;
TEST() ;See if drug need Dose Unit and Numeric Dose defined
I 'PSSGVND3!('PSSGVND1) Q 0
I $P($G(^PSDRUG(PSSGVIEN,"I")),"^"),$P($G(^PSDRUG(PSSGVIEN,"I")),"^")<DT Q 0
N PSSGVDOV
S PSSGVDOV=""
I PSSGVND1,PSSGVND3,$T(OVRIDE^PSNAPIS)]"" S PSSGVDOV=$$OVRIDE^PSNAPIS(PSSGVND1,PSSGVND3)
I '$O(^PSDRUG(PSSGVIEN,"DOS2",0)) Q 0
I $P(PSSGVZR,"^",3)["S"!($E($P(PSSGVZR,"^",2),1,2)="XA") Q 0
I PSSGVND1,PSSGVND3 S PSSGVNDF=$$DFSU^PSNAPIS(PSSGVND1,PSSGVND3) S PSSGVDF=$P(PSSGVNDF,"^")
I $G(PSSGVDF)'>0,$P($G(^PSDRUG(PSSGVIEN,2)),"^") S PSSGVDF=$P($G(^PS(50.7,+$P($G(^PSDRUG(PSSGVIEN,2)),"^"),0)),"^",2)
I PSSGVDOV=""!('$G(PSSGVDF))!($P($G(^PS(50.606,+$G(PSSGVDF),1)),"^")="") Q 1
I $P($G(^PS(50.606,+$G(PSSGVDF),1)),"^"),'PSSGVDOV Q 0
I '$P($G(^PS(50.606,+$G(PSSGVDF),1)),"^"),PSSGVDOV Q 0
Q 1
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSLDALL 7278 printed Nov 22, 2024@17:42:55 Page 2
PSSLDALL ;BIR/RTR-Find all Local Possible Dosage to edit ;05/04/08
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**129**;9/30/07;Build 67
+2 ;
+3 ;Reference to 50.607 supported by DBIA 2221
EN ;
+1 WRITE !!,"This option will find all Local Possible Dosages that are eligible for Dosage"
+2 WRITE !,"Checks that do not have either the Numeric Dosage or Dose Unit entered for the"
+3 WRITE !,"Local Possible Dosage. This mapping is necessary to perform Dosage checks."
+4 WRITE !!,"Searching for local Possible Dosages..."
+5 NEW DIRUT,DIROUT,DIC,DTOUT,DUOUT,X,Y,DIE,DA,DR,PSSGVNMX,PSSGVIEN,PSSGVTOT,PSSGVLPX,PSSGVLC1,PSSGVLC2,PSSGVOUT,PSSGVZR,PSSGVND1,PSSGVND3
+6 NEW PSSGVOK,PSSGVNDF,PSSGVDF,PSSGVSTN,PSSGVUNT,PSSGVUNX,PSSGVSXX,PSSGVSZZ,PSSGVFLG,PSSGVGG1,PSSGVGG2,PSSGVGG3,PSSGVGG4,PSSGVCNT,PSSGVLP
+7 NEW PSSGVLOC,PSSGVGG5,PSSGVGG6,PSSGVLCX,PSSGVBF6,PSSGVAF6,DIR,DIDEL
+8 KILL PSSGVNMX,PSSGVIEN,PSSGVTOT,PSSGVOUT
+9 SET (PSSGVOUT,PSSGVTOT)=0
+10 SET PSSGVNMX=""
FOR
SET PSSGVNMX=$ORDER(^PSDRUG("B",PSSGVNMX))
if PSSGVNMX=""!(PSSGVOUT)
QUIT
FOR PSSGVIEN=0:0
SET PSSGVIEN=$ORDER(^PSDRUG("B",PSSGVNMX,PSSGVIEN))
if 'PSSGVIEN!(PSSGVOUT)
QUIT
Begin DoDot:1
+11 KILL PSSGVZR,PSSGVND1,PSSGVND3,PSSGVOK,PSSGVNDF,PSSGVDF,PSSGVLC2,PSSGVLPX,PSSGVLC1,PSSGVSTN,PSSGVUNT,PSSGVUNX,PSSGVSXX,PSSGVSZZ,PSSGVFLG
+12 KILL PSSGVGG1,PSSGVGG2,PSSGVGG3,PSSGVGG4,PSSGVCNT,PSSGVLP,PSSGVLOC,PSSGVGG5,PSSGVGG6,PSSGVLCX,PSSGVBF6,PSSGVAF6
+13 SET PSSGVZR=$GET(^PSDRUG(PSSGVIEN,0))
SET PSSGVND1=$PIECE($GET(^PSDRUG(PSSGVIEN,"ND")),"^")
SET PSSGVND3=$PIECE($GET(^PSDRUG(PSSGVIEN,"ND")),"^",3)
+14 SET PSSGVTOT=PSSGVTOT+1
IF '(PSSGVTOT#20)
WRITE "."
+15 SET PSSGVOK=$$TEST
+16 if 'PSSGVOK
QUIT
+17 SET PSSGVLC2=0
FOR PSSGVLPX=0:0
SET PSSGVLPX=$ORDER(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLPX))
if 'PSSGVLPX!(PSSGVLC2)
QUIT
SET PSSGVLC1=$GET(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLPX,0))
IF $PIECE(PSSGVLC1,"^")'=""
IF '$PIECE(PSSGVLC1,"^",5)!($PIECE(PSSGVLC1,"^",6)="")
SET PSSGVLC2=1
+18 if 'PSSGVLC2
QUIT
+19 WRITE !!!?5,"Drug: "_$PIECE(PSSGVZR,"^")
+20 SET PSSGVSTN=$PIECE($GET(^PSDRUG(PSSGVIEN,"DOS")),"^")
SET PSSGVUNT=$PIECE($GET(^PSDRUG(PSSGVIEN,"DOS")),"^",2)
+21 SET PSSGVUNX=$SELECT($GET(PSSGVUNT):$PIECE($GET(^PS(50.607,+$GET(PSSGVUNT),0)),"^"),$PIECE($GET(PSSGVNDF),"^",6)'="":$PIECE($GET(PSSGVNDF),"^",6),1:"")
+22 LOCK +^PSDRUG(PSSGVIEN):$SELECT($GET(DILOCKTM)>0:DILOCKTM,1:3)
IF '$TEST
WRITE !!,"Another person is editing "_$PIECE(PSSGVZR,"^"),!
Begin DoDot:2
+23 KILL DIR
SET DIR(0)="E"
SET DIR("A")="Press Return to Continue"
DO ^DIR
KILL DIR
IF Y'=1!($DATA(DTOUT))!($DATA(DUOUT))
SET PSSGVOUT=1
End DoDot:2
QUIT
+24 IF PSSGVND1
IF PSSGVND3
SET PSSGVSXX=$PIECE(PSSGVNDF,"^",4)
SET PSSGVSZZ=$PIECE(PSSGVNDF,"^",6)
+25 IF PSSGVSTN'=""
IF $EXTRACT($GET(PSSGVSTN),1)="."
SET PSSGVSTN="0"_PSSGVSTN
+26 IF $GET(PSSGVSXX)'=""
IF $EXTRACT($GET(PSSGVSXX),1)="."
SET PSSGVSXX="0"_PSSGVSXX
+27 SET PSSGVFLG=0
+28 IF $GET(PSSGVSXX)'=""
IF ($GET(PSSGVSTN)'="")
IF $GET(PSSGVSXX)'=$GET(PSSGVSTN)
Begin DoDot:2
+29 SET PSSGVFLG=1
+30 SET PSSGVGG1=$LENGTH($GET(PSSGVSXX))
SET PSSGVGG2=$LENGTH($GET(PSSGVUNX))
SET PSSGVGG3=$LENGTH($GET(PSSGVSTN))
SET PSSGVGG4=$LENGTH($SELECT($GET(PSSGVUNX)'["/":$GET(PSSGVUNX),1:""))
+31 WRITE !!,"Strength from National Drug File match => "
Begin DoDot:3
+32 IF PSSGVGG1+PSSGVGG2<34
WRITE $GET(PSSGVSXX)_" "_$GET(PSSGVUNX)
QUIT
+33 WRITE !?3,$GET(PSSGVSXX)
Begin DoDot:4
+34 IF PSSGVGG1+PSSGVGG2<73
WRITE " "_$GET(PSSGVUNX)
QUIT
+35 WRITE !?3,$GET(PSSGVUNX)
End DoDot:4
End DoDot:3
+36 WRITE !,"Strength currently in the Drug File => "
Begin DoDot:3
+37 IF PSSGVGG3+PSSGVGG4<34
WRITE $GET(PSSGVSTN)_" "_$SELECT($GET(PSSGVUNX)'["/":$GET(PSSGVUNX),1:"")
QUIT
+38 WRITE !?3,$GET(PSSGVSTN)
Begin DoDot:4
+39 IF PSSGVGG3+PSSGVGG4<73
WRITE " "_$SELECT($GET(PSSGVUNX)'["/":$GET(PSSGVUNX),1:"")
QUIT
+40 WRITE !?3,$SELECT($GET(PSSGVUNX)'["/":$GET(PSSGVUNX),1:"")
End DoDot:4
End DoDot:3
+41 WRITE !!,"Please Note: Strength of drug does not match strength of VA Product it is",!,"matched to."
End DoDot:2
+42 SET PSSGVCNT=0
+43 FOR PSSGVLP=0:0
SET PSSGVLP=$ORDER(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLP))
if 'PSSGVLP!(PSSGVOUT)
QUIT
SET PSSGVLOC=$GET(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLP,0))
if $PIECE(PSSGVLOC,"^")'=""
Begin DoDot:2
+44 IF $PIECE(PSSGVLOC,"^",5)
IF ($PIECE(PSSGVLOC,"^",6)'="")
QUIT
+45 IF 'PSSGVCNT
IF 'PSSGVFLG
IF $GET(PSSGVSXX)'=""!($GET(PSSGVSTN)'="")!($GET(PSSGVUNX)'="")
Begin DoDot:3
+46 SET PSSGVGG5=$LENGTH($SELECT($GET(PSSGVSTN)'="":$GET(PSSGVSTN),$GET(PSSGVSXX)'="":$GET(PSSGVSXX),1:""))
SET PSSGVGG6=$LENGTH($GET(PSSGVUNX))
+47 WRITE !!,"Strength: "_$SELECT($GET(PSSGVSTN)'="":$GET(PSSGVSTN),$GET(PSSGVSXX)'="":$GET(PSSGVSXX),1:"")
+48 IF PSSGVGG5+PSSGVGG6<60
WRITE " Unit: "_$GET(PSSGVUNX)
QUIT
+49 WRITE !,"Unit: "_$GET(PSSGVUNX)
End DoDot:3
+50 SET PSSGVCNT=1
+51 WRITE !!!,$PIECE(PSSGVLOC,"^")
IF $PIECE(PSSGVLOC,"^",5)!($PIECE(PSSGVLOC,"^",6)'="")
Begin DoDot:3
+52 WRITE !,"Numeric Dose: "_$SELECT($EXTRACT($PIECE(PSSGVLOC,"^",6),1)=".":"0"_$PIECE(PSSGVLOC,"^",6),1:$PIECE(PSSGVLOC,"^",6))
+53 WRITE ?37,"Dose Unit: "_$SELECT('$PIECE(PSSGVLOC,"^",5):"",1:$PIECE($GET(^PS(51.24,+$PIECE(PSSGVLOC,"^",5),0)),"^"))
End DoDot:3
+54 WRITE !
KILL DIE,Y,DTOUT,DR,DA,DIDEL
SET DA(1)=PSSGVIEN
SET DIE="^PSDRUG("_PSSGVIEN_",""DOS2"","
SET DR="4;5"
SET DA=PSSGVLP
+55 DO ^DIE
KILL DIE,DR,DA
IF $DATA(DTOUT)!($DATA(Y))
Begin DoDot:3
+56 WRITE !
KILL DIR
SET DIR(0)="Y"
SET DIR("A")="Do you want to continue mapping Local Possible Dosages"
SET DIR("B")="Y"
SET DIR("?")="Enter 'Y' to continue mapping Local Possible Dosages, enter 'N' to exit."
+57 DO ^DIR
KILL DIR
IF $DATA(DTOUT)!($DATA(DUOUT))!($GET(Y)<1)
SET PSSGVOUT=1
End DoDot:3
if PSSGVOUT
QUIT
+58 SET PSSGVLCX=$GET(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLP,0))
+59 SET PSSGVBF6=$SELECT($EXTRACT($PIECE(PSSGVLOC,"^",6),1)=".":"0"_$PIECE(PSSGVLOC,"^",6),1:$PIECE(PSSGVLOC,"^",6))
SET PSSGVAF6=$SELECT($EXTRACT($PIECE(PSSGVLCX,"^",6),1)=".":"0"_$PIECE(PSSGVLCX,"^",6),1:$PIECE(PSSGVLCX,"^",6))
+60 IF $PIECE(PSSGVLCX,"^",5)'=$PIECE(PSSGVLOC,"^",5)!(PSSGVBF6'=PSSGVAF6)
Begin DoDot:3
+61 WRITE !!,$PIECE(PSSGVLCX,"^")
+62 WRITE !,"Numeric Dose: "_$SELECT($EXTRACT($PIECE(PSSGVLCX,"^",6),1)=".":"0"_$PIECE(PSSGVLCX,"^",6),1:$PIECE(PSSGVLCX,"^",6))
+63 WRITE ?40,"Dose Unit: "_$SELECT('$PIECE(PSSGVLCX,"^",5):"",1:$PIECE($GET(^PS(51.24,+$PIECE(PSSGVLCX,"^",5),0)),"^"))
End DoDot:3
End DoDot:2
+64 WRITE !
DO UL
End DoDot:1
+65 KILL PSSGVOUT,PSSGVTOT,PSSGVNMX,PSSGVIEN,PSSGVZR,PSSGVND1,PSSGVND3,PSSGVOK,PSSGVLC2,PSSGVLPX,PSSGVLC1
+66 SET (PSSGVOUT,PSSGVTOT)=0
WRITE !!,"Checking for any remaining unmapped Local Possible Dosages..."
+67 SET PSSGVNMX=""
FOR
SET PSSGVNMX=$ORDER(^PSDRUG("B",PSSGVNMX))
if PSSGVNMX=""!(PSSGVOUT)
QUIT
FOR PSSGVIEN=0:0
SET PSSGVIEN=$ORDER(^PSDRUG("B",PSSGVNMX,PSSGVIEN))
if 'PSSGVIEN!(PSSGVOUT)
QUIT
Begin DoDot:1
+68 SET PSSGVZR=$GET(^PSDRUG(PSSGVIEN,0))
SET PSSGVND1=$PIECE($GET(^PSDRUG(PSSGVIEN,"ND")),"^")
SET PSSGVND3=$PIECE($GET(^PSDRUG(PSSGVIEN,"ND")),"^",3)
+69 SET PSSGVTOT=PSSGVTOT+1
IF '(PSSGVTOT#100)
WRITE "."
+70 KILL PSSGVDF,PSSGVNDF
SET PSSGVOK=$$TEST
+71 if 'PSSGVOK
QUIT
+72 SET PSSGVLC2=0
FOR PSSGVLPX=0:0
SET PSSGVLPX=$ORDER(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLPX))
if 'PSSGVLPX!(PSSGVLC2)
QUIT
SET PSSGVLC1=$GET(^PSDRUG(PSSGVIEN,"DOS2",PSSGVLPX,0))
IF $PIECE(PSSGVLC1,"^")'=""
IF '$PIECE(PSSGVLC1,"^",5)!($PIECE(PSSGVLC1,"^",6)="")
SET PSSGVLC2=1
+73 if 'PSSGVLC2
QUIT
+74 SET PSSGVOUT=1
End DoDot:1
+75 IF 'PSSGVOUT
WRITE !!,"All Local Possible Dosages are mapped!",!
KILL DIR
SET DIR(0)="E"
SET DIR("A")="Press Return to Continue"
DO ^DIR
KILL DIR
QUIT
+76 WRITE !!,"There are still Local Possible Dosages not yet mapped,",!,"see the 'Local Possible Dosages Report' option for more details.",!
+77 KILL DIR
SET DIR(0)="E"
SET DIR("A")="Press Return to Continue"
DO ^DIR
KILL DIR
+78 QUIT
+79 ;
UL ;unlock drug
+1 LOCK -^PSDRUG(PSSGVIEN)
+2 QUIT
+3 ;
TEST() ;See if drug need Dose Unit and Numeric Dose defined
+1 IF 'PSSGVND3!('PSSGVND1)
QUIT 0
+2 IF $PIECE($GET(^PSDRUG(PSSGVIEN,"I")),"^")
IF $PIECE($GET(^PSDRUG(PSSGVIEN,"I")),"^")<DT
QUIT 0
+3 NEW PSSGVDOV
+4 SET PSSGVDOV=""
+5 IF PSSGVND1
IF PSSGVND3
IF $TEXT(OVRIDE^PSNAPIS)]""
SET PSSGVDOV=$$OVRIDE^PSNAPIS(PSSGVND1,PSSGVND3)
+6 IF '$ORDER(^PSDRUG(PSSGVIEN,"DOS2",0))
QUIT 0
+7 IF $PIECE(PSSGVZR,"^",3)["S"!($EXTRACT($PIECE(PSSGVZR,"^",2),1,2)="XA")
QUIT 0
+8 IF PSSGVND1
IF PSSGVND3
SET PSSGVNDF=$$DFSU^PSNAPIS(PSSGVND1,PSSGVND3)
SET PSSGVDF=$PIECE(PSSGVNDF,"^")
+9 IF $GET(PSSGVDF)'>0
IF $PIECE($GET(^PSDRUG(PSSGVIEN,2)),"^")
SET PSSGVDF=$PIECE($GET(^PS(50.7,+$PIECE($GET(^PSDRUG(PSSGVIEN,2)),"^"),0)),"^",2)
+10 IF PSSGVDOV=""!('$GET(PSSGVDF))!($PIECE($GET(^PS(50.606,+$GET(PSSGVDF),1)),"^")="")
QUIT 1
+11 IF $PIECE($GET(^PS(50.606,+$GET(PSSGVDF),1)),"^")
IF 'PSSGVDOV
QUIT 0
+12 IF '$PIECE($GET(^PS(50.606,+$GET(PSSGVDF),1)),"^")
IF PSSGVDOV
QUIT 0
+13 QUIT 1