| 1 | PSSDOS ;BIR/RTR-Dose edit option ;03/10/00
 | 
|---|
| 2 |  ;;1.0;PHARMACY DATA MANAGEMENT;**38,49,50,47**;9/30/97
 | 
|---|
| 3 |  ;Reference to ^PS(50.607 supported by DBIA #2221
 | 
|---|
| 4 |  ;have an entry point for NDF to call when rematching
 | 
|---|
| 5 | DOSN ;
 | 
|---|
| 6 |  N X,Y,PSSNFID,PSSNAT,PSSNAT1,PSSNATND,PSSNATDF,PSSNATUN,PSSNOCON,PSSST,PSSUN,PSSNAME,PSSIND,PSSDOSA,PSSXYZ,PSSNATST,POSDOS,LPDOS
 | 
|---|
| 7 |  N PSSDIEN,PSSONLYI,PSSONLYO,PSSTALK,PSSIZZ,PSSOZZ,PSSSKIPP
 | 
|---|
| 8 |  N PSSIEN S PSSIEN=DA
 | 
|---|
| 9 | DOSNX ;
 | 
|---|
| 10 |  D STUN
 | 
|---|
| 11 |  I PSSST="",$O(^PSDRUG(PSSIEN,"DOS1",0)) K ^PSDRUG(PSSIEN,"DOS") K ^PSDRUG(PSSIEN,"DOS1")
 | 
|---|
| 12 |  S (PSSIZZ,PSSOZZ)=0 S:'$G(PSSSKIPP) PSSSKIPP=0
 | 
|---|
| 13 |  S PSSXYZ=0 D CHECK
 | 
|---|
| 14 |  ;Display strength
 | 
|---|
| 15 |  I $P($G(^PSDRUG(PSSIEN,"DOS")),"^")'="",$O(^PSDRUG(PSSIEN,"DOS1",0)) N PSSIENS,PSS11 D  G DOSA
 | 
|---|
| 16 |  .W !!,"Strength from National Drug File match => "_$S($E($G(PSSNATST),1)=".":"0",1:"")_$G(PSSNATST)_"    "_$P($G(^PS(50.607,+$G(PSSUN),0)),"^")
 | 
|---|
| 17 |  .W !,"Strength currently in the Drug File    => "_$S($E($P($G(^PSDRUG(PSSIEN,"DOS")),"^"),1)=".":"0",1:"")_$P($G(^PSDRUG(PSSIEN,"DOS")),"^")_"    "_$S($P($G(^PS(50.607,+$G(PSSUN),0)),"^")'["/":$P($G(^(0)),"^"),1:"")
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  I $G(PSSXYZ),'$O(^PSDRUG(PSSIEN,"DOS1",0)) D  D ^DIR K DIR I Y=1 S PSSSKIPP=1 D EN2^PSSUTIL(PSSIEN,1) G DOSNX
 | 
|---|
| 20 |  .K DIR S DIR(0)="Y",DIR("B")="N",DIR("A")="Create Possible Dosages for this drug",DIR("?")=" "
 | 
|---|
| 21 |  .S DIR("?",1)="This drug meets the criteria to have Possible Dosages, but it currently does",DIR("?",2)="not have any. If you answer 'YES', Possible Dosages will be created for this"
 | 
|---|
| 22 |  .S DIR("?",3)="drug, based on the match to the National Drug File."
 | 
|---|
| 23 |  .W !!!,"This drug can have Possible Dosages, but currently does not have any.",!
 | 
|---|
| 24 |  I '$O(^PSDRUG(PSSIEN,"DOS1",0)) D LPD,QUES G:'Y END G LOCX
 | 
|---|
| 25 | DOSA S PSSST=$P($G(^PSDRUG(PSSIEN,"DOS")),"^")
 | 
|---|
| 26 |  W !!,"Strength => "_$S($E($G(PSSST),1)=".":"0",1:"")_$G(PSSST)_"   Unit => "_$S($P($G(^PS(50.607,+$G(PSSUN),0)),"^")'["/":$P($G(^(0)),"^"),1:"") W !
 | 
|---|
| 27 |  ;;;I $D(^PSDRUG(PSSIEN,"DOS1"))
 | 
|---|
| 28 |  W !,"POSSIBLE DOSAGES:" D
 | 
|---|
| 29 |  .F PDS=0:0 S PDS=$O(^PSDRUG(PSSIEN,"DOS1",PDS)) Q:'PDS  D
 | 
|---|
| 30 |  ..S POSDOS=$G(^PSDRUG(PSSIEN,"DOS1",PDS,0))
 | 
|---|
| 31 |  ..W !,"   DISPENSE UNITS PER DOSE: ",$S($E($P(POSDOS,U),1)=".":"0",1:"")_$P(POSDOS,U) D
 | 
|---|
| 32 |  ...S X=$P(POSDOS,U) D SET^PSSDOSLZ W ?38,"DOSE: ",X,?60,"PACKAGE: ",$P(POSDOS,U,3)
 | 
|---|
| 33 |  ;;;I $D(^PSDRUG(PSSIEN,"DOS2"))
 | 
|---|
| 34 |  W !!,"LOCAL POSSIBLE DOSAGES:" D
 | 
|---|
| 35 |  .F PDS=0:0 S PDS=$O(^PSDRUG(PSSIEN,"DOS2",PDS)) Q:'PDS  D
 | 
|---|
| 36 |  ..S LPDOS=$G(^PSDRUG(PSSIEN,"DOS2",PDS,0)) W !,"  LOCAL POSSIBLE DOSAGE: " D
 | 
|---|
| 37 |  ...I $L($P(LPDOS,U))'>27 W $P(LPDOS,U),?55,"PACKAGE: ",$P(LPDOS,U,2)
 | 
|---|
| 38 |  ...E   W !,?10,$P(LPDOS,U),!,?55,"PACKAGE: ",$P(LPDOS,U,2)
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  W !! K DIR S DIR(0)="Y",DIR("A")="Do you want to edit the dosages",DIR("B")="N" D ^DIR K DIR I 'Y W ! D END Q
 | 
|---|
| 41 |  I $G(PSSST) W !!,"Changing the strength will update all possible dosages for this Drug.",!
 | 
|---|
| 42 |  ;Edit Strength
 | 
|---|
| 43 |  I $G(PSSST) W ! K DIE S DIE="^PSDRUG(",DA=PSSIEN,DR=901 D ^DIE W ! K DIE,PSSXYZ I $P($G(^PSDRUG(PSSIEN,"DOS")),"^")="" K ^PSDRUG(PSSIEN,"DOS") K ^PSDRUG(PSSIEN,"DOS1") W !!,"Deleting Strength has deleted all Possible Dosages!",!
 | 
|---|
| 44 |  I '$P($G(^PSDRUG(PSSIEN,"DOS")),"^") D LPD D QUES G:'Y END G LOC
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | DOSA1 K DIC S DA(1)=PSSIEN,DIC="^PSDRUG("_PSSIEN_",""DOS1"",",DIC(0)="QEAMLZ",DIC("A")="Select DISPENSE UNITS PER DOSE: " D  D ^DIC K DIC I Y<1!($D(DTOUT))!($D(DUOUT)) G DOSLOC
 | 
|---|
| 47 |  .S DIC("W")="W ""  ""_$S($E($P($G(^PSDRUG(PSSIEN,""DOS1"",+Y,0)),""^"",2),1)=""."":""0"",1:"""")_$P($G(^PSDRUG(PSSIEN,""DOS1"",+Y,0)),""^"",2)_""    ""_$P($G(^PSDRUG(PSSIEN,""DOS1"",+Y,0)),""^"",3)"
 | 
|---|
| 48 |  S PSSDOSA=+Y
 | 
|---|
| 49 |  W ! K DIE S DA(1)=PSSIEN,DA=PSSDOSA,DR=".01;2",DIE="^PSDRUG("_PSSIEN_",""DOS1""," D ^DIE K DIE D:'$D(Y)&('$D(DTOUT)) BCMA^PSSDOSER G:$D(Y)!($D(DTOUT)) DOSLOC
 | 
|---|
| 50 |  W ! G DOSA1
 | 
|---|
| 51 | DOSLOC ;
 | 
|---|
| 52 |  S (PSSPCI,PSSPCO)=0
 | 
|---|
| 53 |  F PSSPCZ=0:0 S PSSPCZ=$O(^PSDRUG(PSSIEN,"DOS1",PSSPCZ)) Q:'PSSPCZ  D
 | 
|---|
| 54 |  .I $P($G(^PSDRUG(PSSIEN,"DOS1",PSSPCZ,0)),"^",2)'="" S:$P($G(^(0)),"^",3)["I" PSSPCI=1 S:$P($G(^(0)),"^",3)["O" PSSPCO=1
 | 
|---|
| 55 |  I PSSPCI,PSSPCO W !! K DIR S DIR(0)="Y",DIR("B")="N",DIR("A")="Enter/Edit Local Possible Dosages" D  D ^DIR K DIR I Y'=1 K PSSPCI,PSSPCO,PSSPCZ W ! D END Q
 | 
|---|
| 56 |  .S DIR("?")=" ",DIR("?",1)="Possible Dosages exist for both Outpatient Pharmacy and Inpatient Medications.",DIR("?",2)="Local Possible Dosages can be added, but will not be displayed for selection"
 | 
|---|
| 57 |  .S DIR("?",3)="as long as there are Possible Dosages.",DIR("?",4)=" ",DIR("?",5)="Enter 'Y' to Enter/Edit Local Possible Dosages."
 | 
|---|
| 58 |  K PSSPCI,PSSPCO,PSSPCZ
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 | LOCX ;
 | 
|---|
| 61 |  I $G(PSSSKIPP) G LOC
 | 
|---|
| 62 |  I $G(PSSIZZ),$G(PSSOZZ) G LOC
 | 
|---|
| 63 |  K PSSONLYO,PSSONLYI
 | 
|---|
| 64 |  I $G(PSSIZZ),'$G(PSSOZZ) S PSSONLYO=1
 | 
|---|
| 65 |  I $G(PSSOZZ),'$G(PSSIZZ) S PSSONLYI=1
 | 
|---|
| 66 |  S PSSTALK=1,PSSDIEN=PSSIEN D LOC^PSSUTIL K PSSONLYI,PSSONLYO,PSSTALK,PSSDIEN
 | 
|---|
| 67 | LOC ; Edit local dose
 | 
|---|
| 68 |  D STUN,NATND,PR
 | 
|---|
| 69 |  W ! K DIC S DA(1)=PSSIEN,DIC="^PSDRUG("_PSSIEN_",""DOS2"",",DIC(0)="QEAMLZ" D  D ^DIC K DIC I Y<1!($D(DTOUT))!($D(DUOUT)) D END Q
 | 
|---|
| 70 |  .S DIC("W")="W ""  ""_$P($G(^PSDRUG(PSSIEN,""DOS2"",+Y,0)),""^"",2)"
 | 
|---|
| 71 |  S PSSDOSA=+Y,PSSOTH=$S($P($G(^PS(59.7,1,40.2)),"^"):1,1:0)
 | 
|---|
| 72 |  W ! K DIE S DA(1)=PSSIEN,DA=PSSDOSA,DR=".01;S:'$G(PSSOTH) Y=""@1"";3;@1;1",DIE="^PSDRUG("_PSSIEN_",""DOS2"","
 | 
|---|
| 73 |  D ^DIE K DIE,PSSOTH D:'$D(Y)&('$D(DTOUT)) BCMA1^PSSDOSER I $D(Y)!($D(DTOUT)) D END Q
 | 
|---|
| 74 |  G LOC
 | 
|---|
| 75 | LPD ; Display local dose before edit
 | 
|---|
| 76 |  W !!,"LOCAL POSSIBLE DOSAGES:" D
 | 
|---|
| 77 |  .F PDS=0:0 S PDS=$O(^PSDRUG(PSSIEN,"DOS2",PDS)) Q:'PDS  D
 | 
|---|
| 78 |  ..S LPDOS=$G(^PSDRUG(PSSIEN,"DOS2",PDS,0)) W !,"  " D
 | 
|---|
| 79 |  ...I $L($P(LPDOS,U))'>27 W $P(LPDOS,U),?55,"PACKAGE: ",$P(LPDOS,U,2)
 | 
|---|
| 80 |  ...E   W !,?10,$P(LPDOS,U),!,?55,"PACKAGE: ",$P(LPDOS,U,2)
 | 
|---|
| 81 |  Q
 | 
|---|
| 82 | CHECK ;
 | 
|---|
| 83 |  K PSSNAT,PSSNATND,PSSNATDF,PSSNATUN,PSSNATST,PSSIZZ,PSSOZZ
 | 
|---|
| 84 |  D NATND
 | 
|---|
| 85 |  ;I $G(PSSST) S PSSXYZ=1 Q
 | 
|---|
| 86 |  Q:'PSSNATDF!('PSSNATUN)!($G(PSSNATST)="")
 | 
|---|
| 87 |  Q:'$D(^PS(50.606,PSSNATDF,0))!('$D(^PS(50.607,PSSNATUN,0)))
 | 
|---|
| 88 |  I PSSNATST'?.N&(PSSNATST'?.N1".".N) Q
 | 
|---|
| 89 |  I $D(^PS(50.606,"ACONI",PSSNATDF,PSSNATUN)),$O(^PS(50.606,"ADUPI",PSSNATDF,0)) S (PSSXYZ,PSSIZZ)=1
 | 
|---|
| 90 |  I $D(^PS(50.606,"ACONO",PSSNATDF,PSSNATUN)),$O(^PS(50.606,"ADUPO",PSSNATDF,0)) S (PSSXYZ,PSSOZZ)=1
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 | END K PSSNFID,PSSNAT,PSSNAT1,PSSNATND,PSSNATDF,PSSNATUN,PSSNOCON,PSSST,PSSUN,PSSIEN,PSSNAME,PSSIND,PSSDOSA,PSSXYZ,PSSNATST
 | 
|---|
| 93 |  Q
 | 
|---|
| 94 | ULK ;No need to unlock, called from Drug enter/edit
 | 
|---|
| 95 |  Q:'$G(PSSIEN)
 | 
|---|
| 96 |  L -^PSDRUG(PSSIEN)
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 | QUES ;
 | 
|---|
| 99 |  W ! K DIR S DIR(0)="Y",DIR("A")="Do you want to edit Local Possible Dosages",DIR("B")="N" D ^DIR K DIR Q
 | 
|---|
| 100 |  Q
 | 
|---|
| 101 | STUN S PSSST=$P($G(^PSDRUG(PSSIEN,"DOS")),"^"),PSSUN=$P($G(^("DOS")),"^",2)
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 | NATND S PSSNAT=+$P($G(^PSDRUG(PSSIEN,"ND")),"^",3),PSSNAT1=$P($G(^("ND")),"^")
 | 
|---|
| 104 |  S PSSNATND=$$DFSU^PSNAPIS(PSSNAT1,PSSNAT) S PSSNATDF=$P(PSSNATND,"^"),PSSNATST=$P(PSSNATND,"^",4),PSSNATUN=$P(PSSNATND,"^",5)
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 | PR I PSSST'=""!(PSSNATST'=""),(PSSUN!(PSSNATUN)) D
 | 
|---|
| 107 |  .W !!,"Strength: "_$S($E($S(PSSST'="":PSSST,1:PSSNATST),1)=".":"0",1:"")_$S(PSSST'="":PSSST,1:PSSNATST)
 | 
|---|
| 108 |  .W ?30,"Unit: "_$P($G(^PS(50.607,+$S(PSSUN:PSSUN,1:PSSNATUN),0)),"^")
 | 
|---|
| 109 |  E  W !!,"Strength: ",?30,"Unit: "
 | 
|---|
| 110 |  Q
 | 
|---|