Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSSDSFDB

PSSDSFDB.m

Go to the documentation of this file.
  1. PSSDSFDB ;WOIFO/Steve Gordon - Allows for a user to disable FDB interface during an FDB update ;03/17/09
  1. ;;1.0;PHARMACY DATA MANAGEMENT;**136**;9/30/97;Build 89
  1. ;
  1. ;
  1. EN ;driver
  1. ; Called from PSS ENABLE/DISABLE DB LINK option
  1. ;
  1. I '$G(DUZ) D DUZMSG Q ;if no DUZ, cannot continue
  1. N OLDVAL
  1. ;get original value, if one exists
  1. S OLDVAL=+$G(^PS(59.73,1,0))
  1. Q:'$$LOCK() ;lock file
  1. D
  1. .;if no entry create new one
  1. .I '$D(^PS(59.73,1,0)) D NEW
  1. .Q:'$$QSTION(OLDVAL)
  1. .D CHANGE('OLDVAL)
  1. .;if the connection is turned on, check for link
  1. .I OLDVAL'=0,+$G(^PS(59.73,1,0))=0 D Q
  1. ..N BASE
  1. ..S BASE="PSPRE"
  1. ..D PING^PSSHRIT(BASE)
  1. ..I $G(^TMP($J,BASE,"OUT",0))=0 W !!,"Connected to Vendor database successfully."
  1. ..E W !!,"Connection could not be made to Vendor database."
  1. ..K ^TMP($J,BASE)
  1. ;
  1. D PRSRTN
  1. D UNLOCK
  1. Q
  1. ;
  1. DUZMSG ;
  1. ;
  1. ;Writes a message that a DUZ is required
  1. W !,"You are not logged into the system."
  1. W !,"This option requires a DUZ (user ID) to be defined!"
  1. D PRSRTN
  1. Q
  1. ;
  1. QSTION(OLDVAL) ;
  1. ;input: OLDVAL-original value of the .01 field of 59.73
  1. ;output-response to verification question (1 for yes, 0 for no)
  1. N NEWSTAT,FINAL,CURSTAT,ENFLAG
  1. K DIR,Y
  1. S FINAL=0 ;DEFAULT AS NO
  1. S NEWSTAT=$S(OLDVAL:"ENABLE",1:"DISABLE")
  1. S CURSTAT=$S(OLDVAL:"DISABLE",1:"ENABLE")
  1. S ENFLAG=$S(CURSTAT="ENABLE":1,1:0)
  1. D HELP(.DIR)
  1. D
  1. .I 'OLDVAL D DISMSG(.DIR) Q
  1. .D ENMSG(.DIR)
  1. S DIR(0)="Y^A"
  1. S DIR("B")=$S(ENFLAG:"NO",1:"YES")
  1. D ^DIR
  1. D
  1. .I $G(Y),ENFLAG S FINAL=$$ASK(NEWSTAT) Q
  1. .I 'ENFLAG S FINAL=+Y
  1. D
  1. .I ENFLAG D Q
  1. ..I $G(FINAL) D
  1. ...W !!,?5,"Vendor database connection "_NEWSTAT_"D"_"."
  1. ...I NEWSTAT="DISABLE" D
  1. ....W !!,"REMEMBER to ENABLE the Vendor database connection AFTER task completed."
  1. ..I '$G(FINAL) W !!,?5,"The connection to the Vendor database remains ENABLED."
  1. .I 'ENFLAG D Q
  1. ..;I FINAL W !!,"Vendor database connection reestablished." Q
  1. ..I FINAL W !!,"Vendor database connection enabled." Q
  1. ..I 'FINAL D
  1. ...W !!," WARNING! The connection to the Vendor Database remains DISABLED"
  1. ...I $T(DS^PSSDSAPI)]"",$$DS^PSSDSAPI() W !!,"NO Drug-Drug Interactions, Duplicate Therapy or Dosing Order Checks will be"
  1. ...E W !!,"NO Drug-Drug Interactions or Duplicate Therapy Checks will be"
  1. ...W !,"performed while the connection is disabled!!!"
  1. Q FINAL
  1. ;
  1. ASK(NEWSTAT) ;
  1. ;
  1. ;input: NEWSTAT-Either ENABLE or DISABLE
  1. ;output: Either 1 or 0 for yes or no
  1. K DIR,Y
  1. S DIR(0)="Y^A"
  1. S DIR("B")="NO"
  1. I $T(DS^PSSDSAPI)]"",$$DS^PSSDSAPI() S DIR("A",1)="NO Drug-Drug Interactions, Duplicate Therapy or Dosing Order Checks"
  1. E S DIR("A",1)="NO Drug-Drug Interactions or Duplicate Therapy Order Checks"
  1. S DIR("A",2)="will be performed while the connection is disabled!!!"
  1. S DIR("A",3)=" "
  1. S DIR("A")="Are you sure you want to "_NEWSTAT_" the connection to the Vendor Database"
  1. D ^DIR
  1. Q Y
  1. ;
  1. DISMSG(DIR) ;
  1. ;input: DIR Array
  1. ;output: sets up DIR message array
  1. S DIR("A",1)="The connection to the Vendor database is currently ENABLED."
  1. S DIR("A",2)=" "
  1. ;S DIR("A",3)="NO Drug-Drug Interactions, Duplicate Therapy or Dosing Order Checks"
  1. ;S DIR("A",4)="will be performed while the connection is disabled!!"
  1. S DIR("A",3)=""
  1. S DIR("A")="Do you wish to DISABLE the connection to the Vendor database"
  1. ;
  1. ENMSG(DIR) ;
  1. ;;input: DIR Array
  1. ;output: sets up DIR message array
  1. S DIR("A",1)=" WARNING! The connection to the Vendor database is currently DISABLED."
  1. S DIR("A",2)=" "
  1. I $T(DS^PSSDSAPI)]"",$$DS^PSSDSAPI() S DIR("A",3)="NO Drug-Drug Interactions, Duplicate Therapy or Dosing Order Checks"
  1. E S DIR("A",3)="NO Drug-Drug Interactions or Duplicate Therapy Order Checks"
  1. S DIR("A",4)="will be performed while the connection is disabled!!!"
  1. S DIR("A",5)=" "
  1. S DIR("A")="Do you wish to ENABLE the Vendor database connection"
  1. ;
  1. NEW ;
  1. ;There will only be one entry at the top level
  1. N DINUM,DIC,DO,X
  1. K D0
  1. S DINUM=1,X=0,DIC="^PS(59.73,",DIC(0)="Z" D FILE^DICN
  1. Q
  1. ;
  1. CHANGE(NEWVAL) ;
  1. ;edit flag once it is created.
  1. N DIE,DR,DA
  1. S DA=1
  1. S DIE="^PS(59.73,",DR=".01///^S X=NEWVAL"
  1. D ^DIE
  1. D ACT(NEWVAL)
  1. Q
  1. ACT(NEWVAL) ;
  1. ;creates an activity log whenever FDB flag is reset to a new value
  1. ;
  1. N DIC,DA,X,ACTION,DIE,DO,DR
  1. S DIC="^PS(59.73,1,1,",DIC(0)="L",DA(1)=1
  1. S X=$$GETNOW()
  1. D FILE^DICN
  1. S ACTION=$S(NEWVAL:"D",1:"E")
  1. S DIE="^PS(59.73,1,1,",DA=+Y,DR="1///^S X=+DUZ;2///^S X=ACTION"
  1. D ^DIE
  1. Q
  1. ;
  1. GETNOW() ;
  1. N PSNOW
  1. D NOW^%DTC
  1. S PSNOW=% K %
  1. Q PSNOW
  1. ;
  1. LOCK() ;
  1. ;locks 59.73 file
  1. N LOCKED
  1. S LOCKED=1 ;SUCCESSFUL
  1. D
  1. .L +^PS(59.73,0):0
  1. .Q:$T
  1. .W !,"Another terminal is modifying this field!"
  1. .S LOCKED=0
  1. Q LOCKED
  1. UNLOCK ;
  1. L -^PS(59.73,0)
  1. Q
  1. ;
  1. HELP(DIR) ;
  1. ;Returns array of help for DIR call
  1. I $T(DS^PSSDSAPI)]"",$$DS^PSSDSAPI() S DIR("?")="Enter either 'Y' or 'N'. No Drug-Drug Interactions, Duplicate Therapy or Dosing Order Checks will be performed while the connection is disabled!!!"
  1. E S DIR("?")="Enter either 'Y' or 'N'. No Drug-Drug Interactions or Duplicate Therapy Order Checks will be performed while the connection is disabled!!!"
  1. Q
  1. CHKSTAT() ;
  1. ; Called from IN^PSSHRQ2 routine
  1. ;RETURNS A -1 if FDB is disabled and 0 if enabled
  1. ;along with a standard message in PSSHRVL1
  1. N STAT
  1. S STAT=+$G(^PS(59.73,1,0))*-1 ;Returns either -1 or 0
  1. I STAT S STAT=STAT_U_$$STATMSG^PSSHRVL1()
  1. Q STAT
  1. ;
  1. PRSRTN ;
  1. ;calls std routine to ask user to hit return
  1. K DIR S DIR(0)="E" S DIR("A")="Press Return to Continue" D ^DIR
  1. Q