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

PSOSITED.m

Go to the documentation of this file.
  1. PSOSITED ;BHAM ISC/SAB - ENTER/EDIT OUTPATIENT SITE PARAMETERS ; 09/18/92 9:11
  1. ;;7.0;OUTPATIENT PHARMACY;**24,65,268,354,452**;DEC 1997;Build 56
  1. ;External reference to ^PS(59.7 supported by DBIA 694
  1. I $G(PSOPAR)']"" D ^PSOLSET
  1. 1 W ! K DIC S DIC("A")="Select SITE NAME: ",(DIC,DIE)="^PS(59,",DIC(0)="QEALM",DLAYGO=59
  1. K PSOSITEX D ^DIC G:"^"[X EX K DIC("A") G:Y<0 1 S DA=+Y D FLDQ G:$D(PSOSITEX) EX S DR="[PSO SITE]" W ! D ^DIE K DIE("NO^")
  1. ;rtw added field 48 to DR below
  1. W !!,"Outpatient System Parameters",! S DA=1,DIE=59.7,DR="40;40.1;40.19;40.14;40.15;48" L +^PS(59.7,DA):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) I '$T W !,"Another person is editing this entry. Try Later!",! K DA,DIE,DR G 1
  1. D ^DIE L -^PS(59.7,DA)
  1. N CNT,TOT S (TOT,CNT)=0 F S CNT=$O(^PS(59,CNT)) Q:'CNT S TOT=TOT+1
  1. D:TOT>1 ^PSODIV K CNT,TOT
  1. S:$G(PSOSITE)=DA PSOPAR=$G(^PS(59,DA,1)),PSOPAR7=$G(^PS(59,DA,"IB")),PSOSYS=$G(^PS(59.7,1,40.1)) D EX G 1
  1. EX K DIC,DA,DIE,DIR,DIV,DR,I,PS1,PS11,PSIX,PSOCNT,PSOSITEX,X,Y,%,%X,%Y,D0,DI,DQ,DX,S Q
  1. Q
  1. FLDQ S DIR("?",1)="Press <RETURN> if you want to see a list of all outpatient",DIR("?")="pharmacy answered site fields. Enter 'N' if you don't want to see the list."
  1. S DIR(0)="Y",DIR("A")="Would you like to see all site parameters for this division",DIR("B")="Y" D ^DIR K DIR S:$D(DTOUT) PSOSITEX="" I Y,'$D(PSOSITEX) W @IOF D EN^DIQ
  1. K DIR Q
  1. ;
  1. CATVAL(X) ;Input transform for CATEGORY field #1, OPAI sub-file #59.20081
  1. ;of the DISPENSING SYSTEM PRINTER sub-file #59.02008 of File #59.
  1. ;This check ensures that a dispensing printer is not assigned more
  1. ;than one ADD device with conflicting categories which guarantees an
  1. ;RX is routed to only one dispensing device. Valid category
  1. ;combinations are shown at the COMB line tag. Category "A"ny is
  1. ;selectable only when no other category is defined on file for that
  1. ;device and vice versa. The category "S"torage can be combined with
  1. ;any other category or can standalone.
  1. ;
  1. I $G(X)="" Q 0
  1. N DEV,CAT,CATL,FLG,II,XX
  1. S (DEV,FLG)=0,CATL=""
  1. F S DEV=$O(^PS(59,DA(2),"P",DA(1),"OPAI",DEV)) Q:'DEV D I FLG Q
  1. .S CAT=$P($G(^PS(59,DA(2),"P",DA(1),"OPAI",DEV,0)),"^",2) I CAT="" Q
  1. .I DEV=DA Q ;current entry
  1. .I CAT'="S",X=CAT D EN^DDIOL(" <-- Category already on file.","","?0") S FLG=1 Q
  1. .S CATL=CATL_"^"_CAT
  1. I FLG Q FLG
  1. ;if no categories are on file or the category entered is storage then quit
  1. I (CATL="")!(X="S") Q FLG
  1. S CATL=CATL_"^"_X
  1. F II=1:1 S XX=$T(COMB+II) Q:XX["END" S XX=$P(XX,";;",2),FLG=$$COMCHK(XX,CATL) I 'FLG Q
  1. I FLG D
  1. .;D EN^DDIOL(" <-- Can't be combined with categories on file.","","?0")
  1. .D EN^DDIOL(" <-- Conflicting categories.","","?0")
  1. .D EN^DDIOL("*** Valid category combinations are:","","!?5")
  1. .F II=1:1 S XX=$T(COMB+II) Q:XX["END" S XX=$P(XX,";;",2) D
  1. ..S XX=$E(XX,2,9999)
  1. ..D EN^DDIOL(II_". "_$TR(XX,"^",", "),"","!?8")
  1. .D EN^DDIOL(" ","","?0")
  1. Q FLG
  1. ;
  1. COMCHK(CMBO,STR) ; check allowable ADD combinations for a printer
  1. ;INPUT CMBO - contains a set of categories that can be combined together
  1. ; STR - checked against CMBO for validity.
  1. ;OUTPUT - returns a 0 if a combination is valid, else a 1.
  1. ;
  1. N I1,VAL,FLG
  1. S FLG=0
  1. ;find valid CMBO combination base on value in STR
  1. F I1=1:1:$L(STR,"^") S VAL=$P(STR,"^",I1) D I FLG Q
  1. .I VAL'="",VAL'="S",CMBO'[("^"_VAL_"^") S FLG=1
  1. Q FLG
  1. ;
  1. COMB ; valid category combinations for ADDs that can be assigned to a dispensing printer.
  1. ;;^MCS^MNCS^WCS^WNCS^S
  1. ;;^MCS^MNCS^WIND^S
  1. ;;^WCS^WNCS^MAIL^S
  1. ;;^CS^MNCS^WNCS^S
  1. ;;^NCS^WCS^MCS^S
  1. ;;^MAIL^WIND^S
  1. ;;^CS^NCS^S
  1. ;;^A^S
  1. ;;^S
  1. ;;END