| 1 | PSDSITE ;BIR/JPW,LTL-Site Parameters for CS ; 3 May 95 | 
|---|
| 2 | ;;3.0; CONTROLLED SUBSTANCES ;**65**;13 Feb 97;Build 5 | 
|---|
| 3 | SITE ;entry for selecting inpatient sites in file 59.4 | 
|---|
| 4 | K DIC,DLAYGO S DIC="^PS(59.4,",DLAYGO=59.4,DIC(0)="QEAL",D="B",DZ="??" | 
|---|
| 5 | D DQ^DICQ K D,DZ W ! D ^DIC K DIC G:Y<0 END | 
|---|
| 6 | K DA,DIE,DR S DIE=59.4,DA=+Y,DR="31"_"Is "_$P(Y,U,2)_" selectable for Controlled Subs" W ! D ^DIE K DIE | 
|---|
| 7 | END K DA,DIC,DIE,DLAYGO,DR,DTOUT,DUOUT,X,Y | 
|---|
| 8 | Q | 
|---|
| 9 | ; | 
|---|
| 10 | LOW ;if auto generate, check low range for numbers | 
|---|
| 11 | I '$D(X) S PSDFLAG=1 Q | 
|---|
| 12 | K PSD,PSDFLAG,PSDL F PSD=0:0 S PSD=$O(^PSD(58.8,PSD)) Q:'PSD  I $D(^PSD(58.8,PSD,0)),$D(^(2)),$P(^(2),"^") D | 
|---|
| 13 | .I +$P(^PSD(58.8,PSD,2),"^",2),+$P(^(2),"^",3) S PSDL(+PSD)="" | 
|---|
| 14 | I $O(PSDL(0)) F PSD=0:0 S PSD=+$O(PSDL(PSD)) Q:'PSD  D | 
|---|
| 15 | .I X'<$P($G(^PSD(58.8,PSD,2)),"^",2),(X'>$P($G(^(2)),"^",3)),PSD'=DA D MSG S PSDFLAG=1 Q | 
|---|
| 16 | W:$D(PSDFLAG) "  Select another range.",! K PSD,PSDL | 
|---|
| 17 | Q | 
|---|
| 18 | ; | 
|---|
| 19 | HIGH ;validates high range for dispensing numbers | 
|---|
| 20 | I '$D(X) S PSDFLAG=1 Q | 
|---|
| 21 | K PSD,PSDFLAG,PSDH,PSDL F PSD=0:0 S PSD=$O(^PSD(58.8,PSD)) Q:'PSD  I $D(^PSD(58.8,PSD,0)),$D(^(2)),$P(^(2),"^") D | 
|---|
| 22 | .I +$P(^PSD(58.8,PSD,2),"^",2) S PSDL(+$P(^(2),"^",2))=PSD | 
|---|
| 23 | S PSDL=+$P($G(^PSD(58.8,DA,2)),"^",2),PSDH=+$O(PSDL(PSDL)) I PSDH S PSD=+$P(PSDL(PSDH),"^") | 
|---|
| 24 | I X'>PSDL W !!,"High dispensing # must be larger than your low dispensing # "_PSDL_".",!! S PSDFLAG=1 Q | 
|---|
| 25 | I PSDH,X'<PSDH D MSG S PSDFLAG=1 | 
|---|
| 26 | W:$D(PSDFLAG) "  Select another range.",! K PSD,PSDH,PSDL | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | MSG ;prints message if range already in use | 
|---|
| 30 | W $C(7),!!,?12," =>  Dispensing Site "_$S($P(^PSD(58.8,PSD,0),"^")]"":$P(^(0),"^"),1:"NAME MISSING")_"  <=",!,"has set aside the range "_$P($G(^PSD(58.8,PSD,2)),"^",2)_" through "_$P($G(^(2)),"^",3)_"." | 
|---|
| 31 | Q | 
|---|
| 32 | ; | 
|---|
| 33 | LAST ;checks range for 'last dispensed' | 
|---|
| 34 | I '$D(X) S PSDFLAG=1 Q | 
|---|
| 35 | I $D(PSDEN) D LAST1 K LOW,HIGH,PSDCHK Q | 
|---|
| 36 | I X<$P($G(^PSD(58.8,DA,2)),"^",2) D MSG1 S PSDFLAG=1 Q | 
|---|
| 37 | I X>$P($G(^PSD(58.8,DA,2)),"^",3) D MSG1 S PSDFLAG=1 | 
|---|
| 38 | Q | 
|---|
| 39 | ; | 
|---|
| 40 | MSG1 ;prints message if not in dispensing range | 
|---|
| 41 | W $C(7),!!,"Last number dispensed must be within the range "_$P($G(^PSD(58.8,DA,2)),"^",2)_" to "_$S($P($G(^(2)),"^",3):$P($G(^(2)),"^",3),1:999999999)_".",! | 
|---|
| 42 | Q | 
|---|
| 43 | LAST1 ;checks LOW/HIGH range and LAST dispensed | 
|---|
| 44 | I X<LOW D MSG2 S PSDFLAG=1 Q | 
|---|
| 45 | I X>HIGH D MSG2 S PSDFLAG=1 | 
|---|
| 46 | Q | 
|---|
| 47 | MSG2 ;prints msg if not in dispensing range | 
|---|
| 48 | S PSDCHK=1 | 
|---|
| 49 | W $C(7),!!,"Last number dispensed must be within the range ",LOW," to ",HIGH,".",! | 
|---|
| 50 | Q | 
|---|