[613] | 1 | XPAR ; SLC/KCM - Parameters File Calls ;11/03/2003 16:17
|
---|
| 2 | ;;7.3;TOOLKIT;**26,60,63,79,82**;Apr 25, 1995
|
---|
| 3 | ;
|
---|
| 4 | ; (Need to add proper locking)
|
---|
| 5 | ;
|
---|
| 6 | ; Calls to Add/Change/Delete Parameters
|
---|
| 7 | ; ENT: entity, required (internal or external form)
|
---|
| 8 | ; PAR: parameter, required (internal or external form)
|
---|
| 9 | ; INST: instance, defaults to 1 (external or `internal)
|
---|
| 10 | ; VAL: value, defaults to "" (external or 'internal)
|
---|
| 11 | ; .ERR: returns error (0 if none, otherwise "1^error text")
|
---|
| 12 | ;
|
---|
| 13 | ADD(ENT,PAR,INST,VAL,ERR) ; add new parameter instance
|
---|
| 14 | N TYP S TYP="A"
|
---|
| 15 | D UPD
|
---|
| 16 | Q
|
---|
| 17 | CHG(ENT,PAR,INST,VAL,ERR) ; change parameter value for a given instance
|
---|
| 18 | N TYP S TYP="C"
|
---|
| 19 | D UPD
|
---|
| 20 | Q
|
---|
| 21 | DEL(ENT,PAR,INST,ERR) ; delete a parameter instance
|
---|
| 22 | N TYP,VAL S TYP="D"
|
---|
| 23 | D UPD
|
---|
| 24 | Q
|
---|
| 25 | REP(ENT,PAR,INST,NEWINST,ERR) ; replace existing instance value
|
---|
| 26 | N TYP,VAL S TYP="R"
|
---|
| 27 | D UPD
|
---|
| 28 | Q
|
---|
| 29 | PUT(ENT,PAR,INST,VAL,ERR) ; add/update, bypassing input transforms
|
---|
| 30 | PUT1 ; ; called here from old entry point EN^ORXP
|
---|
| 31 | N TYP,XPARCHK ; XPARVCHK undefined to bypass validation
|
---|
| 32 | D UPD1
|
---|
| 33 | Q
|
---|
| 34 | EN(ENT,PAR,INST,VAL,ERR) ; add/change/delete parameters
|
---|
| 35 | N TYP
|
---|
| 36 | UPD ; ; enter here if transaction type known
|
---|
| 37 | N XPARCHK S XPARCHK=""
|
---|
| 38 | UPD1 ; ; enter here if data already validated
|
---|
| 39 | S ERR=0,INST=$G(INST,1),VAL=$G(VAL)
|
---|
| 40 | I ($L(ENT,"^")>1)!(ENT["ALL") S ERR=$$ERR^XPARDD(89895007) Q ;no lists
|
---|
| 41 | D INTERN^XPAR1 Q:ERR
|
---|
| 42 | I '$D(TYP) S TYP=$S(VAL="@":"D",+$O(^XTV(8989.5,"AC",PAR,ENT,INST,0)):"C",1:"A")
|
---|
| 43 | I TYP="A" G DOADD^XPAR2 ; use GO to emulate case statement
|
---|
| 44 | I TYP="C" G DOCHG^XPAR2
|
---|
| 45 | I TYP="D" G DODEL^XPAR2
|
---|
| 46 | I TYP="R" G DOREP^XPAR2
|
---|
| 47 | Q
|
---|
| 48 | NDEL(ENT,PAR,ERR) ; Delete all instances of a parameter for an entity
|
---|
| 49 | N INST,DA
|
---|
| 50 | I ($L(ENT,"^")>1)!(ENT["ALL") S ERR=$$ERR^XPARDD(89895007) Q
|
---|
| 51 | S ERR=0 D INTERN^XPAR1 Q:ERR
|
---|
| 52 | S INST="",DIK="^XTV(8989.5,"
|
---|
| 53 | F S INST=$O(^XTV(8989.5,"AC",PAR,ENT,INST)) Q:INST="" D
|
---|
| 54 | . S DA=$O(^XTV(8989.5,"AC",PAR,ENT,INST,0))
|
---|
| 55 | . D ^DIK
|
---|
| 56 | Q
|
---|
| 57 | ;
|
---|
| 58 | ; Calls to Retrieve Values for Parameters --------------------------
|
---|
| 59 | ; ENT: entity, required, may take on several forms -
|
---|
| 60 | ; internal vptr: ien;GLO(FN,
|
---|
| 61 | ; external vptr: prefix.entryname
|
---|
| 62 | ; 'use current' form: prefix
|
---|
| 63 | ; chained list: use any of above, ^ delimited, or 'ALL'
|
---|
| 64 | ; PAR: parameter, required (internal or external form)
|
---|
| 65 | ; .ERR: returns error (0 if none, otherwise "error number^text")
|
---|
| 66 | ;
|
---|
| 67 | GET(ENT,PAR,INST,FMT) ; function - returns a parameter value
|
---|
| 68 | ; INST: instance, defaults to 1 (external or `internal)
|
---|
| 69 | ; FMT: format of returned data, defaults to "Q" (internal values)
|
---|
| 70 | ; "Q" - quick, returns internal value
|
---|
| 71 | ; "I" - internal, returns internal value, inst must be internal
|
---|
| 72 | ; "E" - external, returns external value
|
---|
| 73 | ; "B" - both, returns internal value^external value
|
---|
| 74 | N ERR,XPARCHK,XPARGET
|
---|
| 75 | S ERR=0,FMT=$G(FMT,"Q"),INST=$G(INST,1),XPARGET="" S:FMT'="I" XPARCHK=""
|
---|
| 76 | D INTERN^XPAR1 I ERR Q ""
|
---|
| 77 | N VAL S VAL=$G(^XTV(8989.5,"AC",PAR,ENT,INST))
|
---|
| 78 | I FMT="I"!(FMT="Q") Q VAL
|
---|
| 79 | I FMT="E",$L(VAL) Q $$EXT^XPARDD(VAL,PAR)
|
---|
| 80 | I FMT="B",$L(VAL) Q VAL_"^"_$$EXT^XPARDD(VAL,PAR)
|
---|
| 81 | Q ""
|
---|
| 82 | GETWP(WPTEXT,ENT,PAR,INST,ERR) ; get value of word processing type
|
---|
| 83 | ; .WPTEXT: array in which the word processing text is returned
|
---|
| 84 | ; WPTEXT contains the title (VALUE field)
|
---|
| 85 | ; WPTEXT(n,0) contains the actual text
|
---|
| 86 | ; INST: instance, defaults to 1 (internal only - XPARCHK not defined)
|
---|
| 87 | N IEN,I,XPARGET,XPARCHK K WPTEXT
|
---|
| 88 | S ERR=0,INST=$G(INST,1),XPARGET=""
|
---|
| 89 | D INTERN^XPAR1 Q:ERR
|
---|
| 90 | S IEN=$O(^XTV(8989.5,"AC",PAR,ENT,INST,0)) Q:'IEN
|
---|
| 91 | M WPTEXT=^XTV(8989.5,IEN,2) S WPTEXT=^(1) K WPTEXT(0)
|
---|
| 92 | Q
|
---|
| 93 | GETLST(LIST,ENT,PAR,FMT,ERR,GBL) ; return all parameter instances for an entity
|
---|
| 94 | ; .LIST: array in which instances are returned
|
---|
| 95 | ; FMT: format of returned data, defaults to "Q" (internal values)
|
---|
| 96 | ; "I" - internal instance)=internal value
|
---|
| 97 | ; "Q" - quick, #)=internal instance^internal value
|
---|
| 98 | ; "E" - external, #)=external instance^external value
|
---|
| 99 | ; "B" - both, #,"N")=internal instance^external instance
|
---|
| 100 | ; #,"V")=internal value^external value
|
---|
| 101 | ; "N" - external instance)=internal value^external value
|
---|
| 102 | ; GBL: Set to 1 if LIST holds a Closed Global root
|
---|
| 103 | N INST,EINST,VAL,XPARGET,XPARCHK,ROOT ;leave XPARCHK undefined
|
---|
| 104 | S ERR=0,INST="",FMT=$G(FMT,"Q"),XPARGET=""
|
---|
| 105 | ;Setup ROOT
|
---|
| 106 | I '$G(GBL) K LIST S ROOT=$NA(LIST)
|
---|
| 107 | I $G(GBL) D Q:ERR
|
---|
| 108 | . I $E($G(LIST),1)'="^" S ERR=$$ERR^XPARDD(89895015) Q
|
---|
| 109 | . S ROOT=LIST
|
---|
| 110 | . Q
|
---|
| 111 | ;
|
---|
| 112 | S @ROOT=0
|
---|
| 113 | D INTERN^XPAR1 Q:ERR
|
---|
| 114 | F S INST=$O(^XTV(8989.5,"AC",PAR,ENT,INST)) Q:INST="" D
|
---|
| 115 | . S @ROOT=@ROOT+1,VAL=^XTV(8989.5,"AC",PAR,ENT,INST)
|
---|
| 116 | . I FMT="I" S @ROOT@(INST)=VAL Q
|
---|
| 117 | . I FMT="Q" S @ROOT@(@ROOT)=INST_U_VAL Q
|
---|
| 118 | . S VAL=VAL_U_$$EXT^XPARDD(VAL,PAR)
|
---|
| 119 | . S EINST=INST_U_$$EXT^XPARDD(INST,PAR,"I")
|
---|
| 120 | . I FMT="E" S @ROOT@(@ROOT)=$P(EINST,"^",2)_U_$P(VAL,"^",2) Q
|
---|
| 121 | . I FMT="B" S @ROOT@(@ROOT,"N")=EINST,@ROOT@(@ROOT,"V")=VAL Q
|
---|
| 122 | . I FMT="N" S @ROOT@($P(EINST,"^",2))=VAL Q
|
---|
| 123 | Q
|
---|
| 124 | ENVAL(LIST,PAR,INST,ERR,GBL) ; return all parameter instances
|
---|
| 125 | ; .LIST: array of returned entity/instance/values in the format:
|
---|
| 126 | ; LIST(entity,instance)=value (LIST = # of array elements)
|
---|
| 127 | ; or a Closed Global root ($NA(^TMP($J)))
|
---|
| 128 | ; PAR: parameter in external or internal format
|
---|
| 129 | ; INST: instance (optional) in external or internal format
|
---|
| 130 | ; ERR: error (0 if no error found)
|
---|
| 131 | ; GBL: Set to 1 if LIST holds a Closed Global root
|
---|
| 132 | N ENT,VAL,XPARGET,ROOT
|
---|
| 133 | S ENT="",VAL="",ERR=0,XPARGET=""
|
---|
| 134 | ;Setup ROOT
|
---|
| 135 | I '$G(GBL) K LIST S ROOT=$NA(LIST)
|
---|
| 136 | I $G(GBL) D Q:ERR
|
---|
| 137 | . I $E($G(LIST),1)'="^" S ERR=$$ERR^XPARDD(89895015) Q
|
---|
| 138 | . S ROOT=LIST
|
---|
| 139 | . Q
|
---|
| 140 | ;
|
---|
| 141 | S @ROOT=0
|
---|
| 142 | ; -- parameter to internal format:
|
---|
| 143 | I PAR'?1.N S PAR=+$O(^XTV(8989.51,"B",PAR,0))
|
---|
| 144 | I '$D(^XTV(8989.51,PAR,0)) S ERR=$$ERR^XPARDD(89895001) Q ;missing par
|
---|
| 145 | ; -- instance
|
---|
| 146 | I $L($G(INST)) D VALID^XPARDD(PAR,.INST,"I",.ERR) Q:ERR
|
---|
| 147 | F S ENT=$O(^XTV(8989.5,"AC",PAR,ENT)) Q:ENT="" D
|
---|
| 148 | . I $L($G(INST)) D
|
---|
| 149 | .. S VAL=$G(^XTV(8989.5,"AC",PAR,ENT,INST))
|
---|
| 150 | .. S:$L($G(VAL)) @ROOT@(ENT,INST)=VAL,@ROOT=@ROOT+1
|
---|
| 151 | . I '$L($G(INST)) D
|
---|
| 152 | .. S INST="" F S INST=$O(^XTV(8989.5,"AC",PAR,ENT,INST)) Q:INST="" D
|
---|
| 153 | ... S VAL=$G(^XTV(8989.5,"AC",PAR,ENT,INST))
|
---|
| 154 | ... S:$L($G(VAL)) @ROOT@(ENT,INST)=VAL,@ROOT=@ROOT+1
|
---|
| 155 | Q
|
---|