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

XPAR.m

Go to the documentation of this file.
  1. XPAR ; SLC/KCM - Parameters File Calls ;11/03/2003 16:17
  1. ;;7.3;TOOLKIT;**26,60,63,79,82,1018**;Apr 25, 1995;Build 12
  1. ;
  1. ; (Need to add proper locking)
  1. ;
  1. ; Calls to Add/Change/Delete Parameters
  1. ; ENT: entity, required (internal or external form)
  1. ; PAR: parameter, required (internal or external form)
  1. ; INST: instance, defaults to 1 (external or `internal)
  1. ; VAL: value, defaults to "" (external or 'internal)
  1. ; .ERR: returns error (0 if none, otherwise "1^error text")
  1. ;
  1. ADD(ENT,PAR,INST,VAL,ERR) ; add new parameter instance
  1. N TYP S TYP="A"
  1. D UPD
  1. Q
  1. CHG(ENT,PAR,INST,VAL,ERR) ; change parameter value for a given instance
  1. N TYP S TYP="C"
  1. D UPD
  1. Q
  1. DEL(ENT,PAR,INST,ERR) ; delete a parameter instance
  1. N TYP,VAL S TYP="D"
  1. D UPD
  1. Q
  1. REP(ENT,PAR,INST,NEWINST,ERR) ; replace existing instance value
  1. N TYP,VAL S TYP="R"
  1. D UPD
  1. Q
  1. PUT(ENT,PAR,INST,VAL,ERR) ; add/update, bypassing input transforms
  1. PUT1 ; ; called here from old entry point EN^ORXP
  1. N TYP,XPARCHK ; XPARVCHK undefined to bypass validation
  1. D UPD1
  1. Q
  1. EN(ENT,PAR,INST,VAL,ERR) ; add/change/delete parameters
  1. N TYP
  1. UPD ; ; enter here if transaction type known
  1. N XPARCHK S XPARCHK=""
  1. UPD1 ; ; enter here if data already validated
  1. S ERR=0,INST=$G(INST,1),VAL=$G(VAL)
  1. I ($L(ENT,"^")>1)!(ENT["ALL") S ERR=$$ERR^XPARDD(89895007) Q ;no lists
  1. D INTERN^XPAR1 Q:ERR
  1. I '$D(TYP) S TYP=$S(VAL="@":"D",+$O(^XTV(8989.5,"AC",PAR,ENT,INST,0)):"C",1:"A")
  1. ;IHS/OIT/FBD - XT*7.3*1018 - MODIFIED TO ENCAPSULATE OPERATION AND PROVIDE A
  1. ; SINGLE POINT OF EXIT FOR PARAMETER AUDITING PURPOSES
  1. ;********** START OF XT*7.3*1018 MODIFICATION **********
  1. N PREVAL,POSTVAL ;VARIABLE TO CAPTURE 'BEFORE' VALUE FOR CHANGE/DELETE/REPLACE FUNCTIONS
  1. I TYP="A" D ; IF OPERATION = 'ADD',
  1. .S PREVAL="" ; THEN PRE-EXISTING VALUE DOES NOT EXIST
  1. E D ; FOR ALL OTHERS,
  1. .S PREVAL=$$VAL^BXPAUDIT(PAR,ENT,INST) ;GET PRE-EXISTING VALUE
  1. ;I TYP="A" G DOADD^XPAR2 ; use GO to emulate case statement ;IHS/OIT/FBD - XT*7.3*1018 - 4 ORIGINAL LINES COMMENTED OUT
  1. ;I TYP="C" G DOCHG^XPAR2
  1. ;I TYP="D" G DODEL^XPAR2
  1. ;I TYP="R" G DOREP^XPAR2
  1. I TYP="A" D DOADD^XPAR2 I 1 ;IHS/OIT/FBD - XT*7.3*1018 - 4 LINES MODIFIED TO PERFORM 'DO' INSTEAD OF 'GOTO'
  1. E I TYP="C" D DOCHG^XPAR2 I 1
  1. E I TYP="D" D DODEL^XPAR2 I 1
  1. E I TYP="R" D DOREP^XPAR2 I 1
  1. I 'ERR D ;IF OPERATION WAS SUCCESSFULLY COMPLETED, LOG THE RESULT
  1. .I TYP="D" D ; IF OPERATION = 'DELETE',
  1. ..S POSTVAL="" ; THEN POST-OPERATION VALUE DOES NOT EXIST
  1. .E D ; FOR ALL OTHERS,
  1. ..S POSTVAL=$$VAL^BXPAUDIT(PAR,ENT,INST) ;GET PRE-EXISTING VALUE
  1. .D LOG^BXPAUDIT(TYP,PAR,ENT,INST,PREVAL,POSTVAL)
  1. ;********** END OF XT*7.3*1018 MODIFICATION **********
  1. Q
  1. NDEL(ENT,PAR,ERR) ; Delete all instances of a parameter for an entity
  1. N INST,DA
  1. I ($L(ENT,"^")>1)!(ENT["ALL") S ERR=$$ERR^XPARDD(89895007) Q
  1. S ERR=0 D INTERN^XPAR1 Q:ERR
  1. S INST="",DIK="^XTV(8989.5,"
  1. F S INST=$O(^XTV(8989.5,"AC",PAR,ENT,INST)) Q:INST="" D
  1. . S DA=$O(^XTV(8989.5,"AC",PAR,ENT,INST,0))
  1. . D ^DIK
  1. Q
  1. ;
  1. ; Calls to Retrieve Values for Parameters --------------------------
  1. ; ENT: entity, required, may take on several forms -
  1. ; internal vptr: ien;GLO(FN,
  1. ; external vptr: prefix.entryname
  1. ; 'use current' form: prefix
  1. ; chained list: use any of above, ^ delimited, or 'ALL'
  1. ; PAR: parameter, required (internal or external form)
  1. ; .ERR: returns error (0 if none, otherwise "error number^text")
  1. ;
  1. GET(ENT,PAR,INST,FMT) ; function - returns a parameter value
  1. ; INST: instance, defaults to 1 (external or `internal)
  1. ; FMT: format of returned data, defaults to "Q" (internal values)
  1. ; "Q" - quick, returns internal value
  1. ; "I" - internal, returns internal value, inst must be internal
  1. ; "E" - external, returns external value
  1. ; "B" - both, returns internal value^external value
  1. N ERR,XPARCHK,XPARGET
  1. S ERR=0,FMT=$G(FMT,"Q"),INST=$G(INST,1),XPARGET="" S:FMT'="I" XPARCHK=""
  1. D INTERN^XPAR1 I ERR Q ""
  1. N VAL S VAL=$G(^XTV(8989.5,"AC",PAR,ENT,INST))
  1. I FMT="I"!(FMT="Q") Q VAL
  1. I FMT="E",$L(VAL) Q $$EXT^XPARDD(VAL,PAR)
  1. I FMT="B",$L(VAL) Q VAL_"^"_$$EXT^XPARDD(VAL,PAR)
  1. Q ""
  1. GETWP(WPTEXT,ENT,PAR,INST,ERR) ; get value of word processing type
  1. ; .WPTEXT: array in which the word processing text is returned
  1. ; WPTEXT contains the title (VALUE field)
  1. ; WPTEXT(n,0) contains the actual text
  1. ; INST: instance, defaults to 1 (internal only - XPARCHK not defined)
  1. N IEN,I,XPARGET,XPARCHK K WPTEXT
  1. S ERR=0,INST=$G(INST,1),XPARGET=""
  1. D INTERN^XPAR1 Q:ERR
  1. S IEN=$O(^XTV(8989.5,"AC",PAR,ENT,INST,0)) Q:'IEN
  1. M WPTEXT=^XTV(8989.5,IEN,2) S WPTEXT=^(1) K WPTEXT(0)
  1. Q
  1. GETLST(LIST,ENT,PAR,FMT,ERR,GBL) ; return all parameter instances for an entity
  1. ; .LIST: array in which instances are returned
  1. ; FMT: format of returned data, defaults to "Q" (internal values)
  1. ; "I" - internal instance)=internal value
  1. ; "Q" - quick, #)=internal instance^internal value
  1. ; "E" - external, #)=external instance^external value
  1. ; "B" - both, #,"N")=internal instance^external instance
  1. ; #,"V")=internal value^external value
  1. ; "N" - external instance)=internal value^external value
  1. ; GBL: Set to 1 if LIST holds a Closed Global root
  1. N INST,EINST,VAL,XPARGET,XPARCHK,ROOT ;leave XPARCHK undefined
  1. S ERR=0,INST="",FMT=$G(FMT,"Q"),XPARGET=""
  1. ;Setup ROOT
  1. I '$G(GBL) K LIST S ROOT=$NA(LIST)
  1. I $G(GBL) D Q:ERR
  1. . I $E($G(LIST),1)'="^" S ERR=$$ERR^XPARDD(89895015) Q
  1. . S ROOT=LIST
  1. . Q
  1. ;
  1. S @ROOT=0
  1. D INTERN^XPAR1 Q:ERR
  1. F S INST=$O(^XTV(8989.5,"AC",PAR,ENT,INST)) Q:INST="" D
  1. . S @ROOT=@ROOT+1,VAL=^XTV(8989.5,"AC",PAR,ENT,INST)
  1. . I FMT="I" S @ROOT@(INST)=VAL Q
  1. . I FMT="Q" S @ROOT@(@ROOT)=INST_U_VAL Q
  1. . S VAL=VAL_U_$$EXT^XPARDD(VAL,PAR)
  1. . S EINST=INST_U_$$EXT^XPARDD(INST,PAR,"I")
  1. . I FMT="E" S @ROOT@(@ROOT)=$P(EINST,"^",2)_U_$P(VAL,"^",2) Q
  1. . I FMT="B" S @ROOT@(@ROOT,"N")=EINST,@ROOT@(@ROOT,"V")=VAL Q
  1. . I FMT="N" S @ROOT@($P(EINST,"^",2))=VAL Q
  1. Q
  1. ENVAL(LIST,PAR,INST,ERR,GBL) ; return all parameter instances
  1. ; .LIST: array of returned entity/instance/values in the format:
  1. ; LIST(entity,instance)=value (LIST = # of array elements)
  1. ; or a Closed Global root ($NA(^TMP($J)))
  1. ; PAR: parameter in external or internal format
  1. ; INST: instance (optional) in external or internal format
  1. ; ERR: error (0 if no error found)
  1. ; GBL: Set to 1 if LIST holds a Closed Global root
  1. N ENT,VAL,XPARGET,ROOT
  1. S ENT="",VAL="",ERR=0,XPARGET=""
  1. ;Setup ROOT
  1. I '$G(GBL) K LIST S ROOT=$NA(LIST)
  1. I $G(GBL) D Q:ERR
  1. . I $E($G(LIST),1)'="^" S ERR=$$ERR^XPARDD(89895015) Q
  1. . S ROOT=LIST
  1. . Q
  1. ;
  1. S @ROOT=0
  1. ; -- parameter to internal format:
  1. I PAR'?1.N S PAR=+$O(^XTV(8989.51,"B",PAR,0))
  1. I '$D(^XTV(8989.51,PAR,0)) S ERR=$$ERR^XPARDD(89895001) Q ;missing par
  1. ; -- instance
  1. I $L($G(INST)) D VALID^XPARDD(PAR,.INST,"I",.ERR) Q:ERR
  1. F S ENT=$O(^XTV(8989.5,"AC",PAR,ENT)) Q:ENT="" D
  1. . I $L($G(INST)) D
  1. .. S VAL=$G(^XTV(8989.5,"AC",PAR,ENT,INST))
  1. .. S:$L($G(VAL)) @ROOT@(ENT,INST)=VAL,@ROOT=@ROOT+1
  1. . I '$L($G(INST)) D
  1. .. S INST="" F S INST=$O(^XTV(8989.5,"AC",PAR,ENT,INST)) Q:INST="" D
  1. ... S VAL=$G(^XTV(8989.5,"AC",PAR,ENT,INST))
  1. ... S:$L($G(VAL)) @ROOT@(ENT,INST)=VAL,@ROOT=@ROOT+1
  1. Q