| [613] | 1 | PSDUTL ;BIR/CML,JPW,LTL-Utility Routine for FileMan Functions ; 21 Dec 94
 | 
|---|
 | 2 |  ;;3.0; CONTROLLED SUBSTANCES ;;13 Feb 97
 | 
|---|
 | 3 | INACT ;check for inactive date on drug for 'D' x-ref (file 58.8)
 | 
|---|
 | 4 |  K PSDFLAG I '$D(^PSD(58.8,DA(2),1,DA(1),"I")) S PSDFLAG=1 Q
 | 
|---|
 | 5 |  S:$O(^PSD(58.8,DA(2),1,DA(1),"I"))>DT PSDFLAG=1
 | 
|---|
 | 6 |  Q
 | 
|---|
 | 7 | DELR ;deletes inactivation reason when inactivation date deleted
 | 
|---|
 | 8 |  I $D(^PSD(58.8,DA(1),1,DA,0)),'$P(^(0),"^",14) S $P(^(0),"^",15,16)="^"
 | 
|---|
 | 9 |  Q
 | 
|---|
 | 10 | IG ;reset sort keys for inventory groups
 | 
|---|
 | 11 |  F INVGRP=0:0 S INVGRP=$O(^PSI(58.2,INVGRP)) Q:'INVGRP  I $O(^PSI(58.2,INVGRP,3,"D",0)) W "." D IGSET
 | 
|---|
 | 12 |  K INVGRP
 | 
|---|
 | 13 |  Q
 | 
|---|
 | 14 | IGSET S CNT=0 F SK=0:0 S SK=$O(^PSI(58.2,INVGRP,3,"D",SK)) Q:'SK  S NAOU=$O(^PSI(58.2,INVGRP,3,"D",SK,0)),CNT=CNT+1,NAOULP(CNT)=NAOU
 | 
|---|
 | 15 |  F SK=0:0 S SK=$O(NAOULP(SK)) Q:'SK  S NSK=SK*100,DA(1)=INVGRP,DA=NAOULP(SK),DIE="^PSI(58.2,"_DA(1)_",3,",DR="2///"_NSK D ^DIE K DIE
 | 
|---|
 | 16 |  K D,D0,DA,D1,DIC,DIE,DQ,DR,X,CNT,NAOU,NAOULP,NSK,SK
 | 
|---|
 | 17 |  Q
 | 
|---|
 | 18 | NAOU ;checks for NAOU inpatient site
 | 
|---|
 | 19 |  S SITE=0
 | 
|---|
 | 20 |  I '$P($G(^PSD(58.8,PSDA,0)),"^",3) W !!,"You must define a CS inpatient site for this NAOU.",!,"Use the 'Create the Narcotic Area of Use' option to add this data.",!!,"Press <RET> to continue " R X:DTIME S SITE=1 W @IOF
 | 
|---|
 | 21 |  K X
 | 
|---|
 | 22 |  Q
 | 
|---|
 | 23 | STAT ;sets order status cross-reference in file 58.85 (field 6)
 | 
|---|
 | 24 |  N PSDNL,PSDD,PSDREQ S PSDNL=$P(^PSD(58.85,DA,0),"^",3),PSDD=$P(^(0),"^",4),PSDREQ=$P(^(0),"^",5)
 | 
|---|
 | 25 |  Q:'PSDNL!('PSDD)!('PSDREQ)
 | 
|---|
 | 26 |  S ^PSD(58.85,"AC",X,PSDNL,PSDD,PSDREQ,DA)=""
 | 
|---|
 | 27 |  Q
 | 
|---|
 | 28 | KSTAT ;kills order status cross-reference in file 58.85 (field 6)
 | 
|---|
 | 29 |  N PSDNL,PSDD,PSDREQ S PSDNL=$P(^PSD(58.85,DA,0),"^",3),PSDD=$P(^(0),"^",4),PSDREQ=$P(^(0),"^",5)
 | 
|---|
 | 30 |  Q:'PSDNL!('PSDD)!('PSDREQ)
 | 
|---|
 | 31 |  K ^PSD(58.85,"AC",X,PSDNL,PSDD,PSDREQ,DA)
 | 
|---|
 | 32 |  Q
 | 
|---|
 | 33 | REQ ;sets request # x-ref in file 58.85 (field 4)
 | 
|---|
 | 34 |  N PSDNL,PSDD S PSDNL=$P(^PSD(58.85,DA,0),"^",3),PSDD=$P(^(0),"^",4)
 | 
|---|
 | 35 |  Q:'PSDNL!('PSDD)
 | 
|---|
 | 36 |  S ^PSD(58.85,"AD",PSDNL,PSDD,X,DA)=""
 | 
|---|
 | 37 |  Q
 | 
|---|
 | 38 | KREQ ;kills request # x-ref in file 58.85 (field 4)
 | 
|---|
 | 39 |  N PSDNL,PSDD S PSDNL=$P(^PSD(58.85,DA,0),"^",3),PSDD=$P(^(0),"^",4)
 | 
|---|
 | 40 |  Q:'PSDNL!('PSDD)
 | 
|---|
 | 41 |  K ^PSD(58.85,"AD",PSDNL,PSDD,X,DA)
 | 
|---|
 | 42 |  Q
 | 
|---|
 | 43 | SAD ;sets 'AD' xref in file 58.81 (field 10)
 | 
|---|
 | 44 |  S PSDNL=+$P(^PSD(58.81,DA,0),"^",18) I 'PSDNL K PSDNL Q
 | 
|---|
 | 45 |  S ^PSD(58.81,"AD",X,PSDNL,DA)="" K PSDNL
 | 
|---|
 | 46 |  Q
 | 
|---|
 | 47 | KAD ;kills 'AD' x-ref in file 58.81 (field 10)
 | 
|---|
 | 48 |  S PSDNL=+$P(^PSD(58.81,DA,0),"^",18) I 'PSDNL K PSDNL Q
 | 
|---|
 | 49 |  K ^PSD(58.81,"AD",X,PSDNL,DA),PSDNL
 | 
|---|
 | 50 |  Q
 | 
|---|
 | 51 | SAF ;set 'AF' x-ref on field 3 in 58.81
 | 
|---|
 | 52 |  S PSDNL=$P(^PSD(58.81,DA,0),"^",3),PSDTYPE=$P(^(0),"^",2)
 | 
|---|
 | 53 |  I 'PSDNL!('PSDTYPE) K PSDNL,PSDTYPE Q
 | 
|---|
 | 54 |  S ^PSD(58.81,"AF",X,PSDNL,PSDTYPE,DA)="" K PSDNL,PSDTYPE
 | 
|---|
 | 55 |  Q
 | 
|---|
 | 56 | KAF ;kill 'AF' x-ref on field 3 in 58.81
 | 
|---|
 | 57 |  S PSDNL=$P(^PSD(58.81,DA,0),"^",3),PSDTYPE=$P(^(0),"^",2)
 | 
|---|
 | 58 |  I 'PSDNL!('PSDTYPE) K PSDNL,PSDTYPE Q
 | 
|---|
 | 59 |  K ^PSD(58.81,"AF",X,PSDNL,PSDTYPE,DA),PSDNL,PSDTYPE
 | 
|---|
 | 60 |  Q
 | 
|---|
 | 61 | SAFL ;set 'AF' (for loc) on field 3 in 58.81
 | 
|---|
 | 62 |  S PSDATT=$P(^PSD(58.81,DA,0),"^",4),PSDTYPE=$P(^(0),"^",2)
 | 
|---|
 | 63 |  I 'PSDATT!('PSDTYPE) K PSDATT,PSDTYPE Q
 | 
|---|
 | 64 |  S ^PSD(58.81,"AF",PSDATT,X,PSDTYPE,DA)="" K PSDATT,PSDTYPE
 | 
|---|
 | 65 |  Q
 | 
|---|
 | 66 | KAFL ;kill 'AF' (for loc) on field 3 in 58.81
 | 
|---|
 | 67 |  S PSDATT=$P(^PSD(58.81,DA,0),"^",4),PSDTYPE=$P(^(0),"^",2)
 | 
|---|
 | 68 |  I 'PSDATT!('PSDTYPE) K PSDATT,PSDTYPE Q
 | 
|---|
 | 69 |  K ^PSD(58.81,"AF",PSDATT,X,PSDTYPE,DA),PSDATT,PSDTYPE
 | 
|---|
 | 70 |  Q
 | 
|---|
 | 71 | SASITE ;set 'ASITE' x-ref on field 2 in 58.8
 | 
|---|
 | 72 |  Q:$P(^PSD(58.8,DA,0),"^",2)=""
 | 
|---|
 | 73 |  S PSDTYPE=$P(^PSD(58.8,DA,0),"^",2)
 | 
|---|
 | 74 |  S ^PSD(58.8,"ASITE",X,PSDTYPE,DA)="" K PSDTYPE
 | 
|---|
 | 75 |  Q
 | 
|---|
 | 76 | KASITE ;kill 'ASITE' x-ref on field 2 in 58.8
 | 
|---|
 | 77 |  Q:$P(^PSD(58.8,DA,0),"^",2)=""
 | 
|---|
 | 78 |  S PSDTYPE=$P(^PSD(58.8,DA,0),"^",2)
 | 
|---|
 | 79 |  K ^PSD(58.8,"ASITE",X,PSDTYPE,DA),PSDTYPE
 | 
|---|
 | 80 |  Q
 | 
|---|
 | 81 | SASITE1 ;set 'ASITE' x-ref on field 1
 | 
|---|
 | 82 |  S PSDDS=$P(^PSD(58.8,DA,0),"^",3) I 'PSDDS K PSDDS Q
 | 
|---|
 | 83 |  S ^PSD(58.8,"ASITE",PSDDS,X,DA)="" K PSDDS
 | 
|---|
 | 84 |  Q
 | 
|---|
 | 85 | KASITE1 ;k 'ASITE' on field 1 in 58.8
 | 
|---|
 | 86 |  S PSDDS=$P(^PSD(58.8,DA,0),"^",3) I 'PSDDS K PSDDS Q
 | 
|---|
 | 87 |  K ^PSD(58.8,"ASITE",PSDDS,X,DA),PSDDS
 | 
|---|
 | 88 |  Q
 | 
|---|
 | 89 | SAFT ;set 'AF' field 1 in 58.81
 | 
|---|
 | 90 |  S PSDNL=$P(^PSD(58.81,DA,0),"^",3),PSDATT=$P(^(0),"^",4)
 | 
|---|
 | 91 |  I 'PSDNL!('PSDATT) K PSDNL,PSDATT Q
 | 
|---|
 | 92 |  S ^PSD(58.81,"AF",PSDATT,PSDNL,X,DA)="" K PSDATT,PSDNL
 | 
|---|
 | 93 |  Q
 | 
|---|
 | 94 | KAFT ;kill 'AF' field 1 in 58.81
 | 
|---|
 | 95 |  S PSDNL=$P(^PSD(58.81,DA,0),"^",3),PSDATT=$P(^(0),"^",4)
 | 
|---|
 | 96 |  I 'PSDNL!('PSDATT) K PSDNL,PSDATT Q
 | 
|---|
 | 97 |  K ^PSD(58.81,"AF",PSDATT,PSDNL,X,DA),PSDATT,PSDNL
 | 
|---|
 | 98 |  Q
 | 
|---|