| 1 | LRPXAPI2 ; SLC/STAFF Lab Extract API code ;2/26/04  15:15
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**295**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | VERIFIED(LRDFN,LRIDT) ; $$(lrdfn,lridt) -> 1 if verified, else 0
 | 
|---|
| 5 |  ; checks for date report completed
 | 
|---|
| 6 |  I +$P($G(^LR(LRDFN,"CH",LRIDT,0)),U,3) Q 1
 | 
|---|
| 7 |  Q 0
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 | MIVERIFY(LRDFN,LRIDT,SUB) ; $$(lrdfn,lridt,sub) -> 1 if verified, else 0
 | 
|---|
| 10 |  ; checks for report date approved on subscript
 | 
|---|
| 11 |  S SUB=+$G(SUB)
 | 
|---|
| 12 |  I SUB>0,SUB<17,$G(^LR(LRDFN,"MI",LRIDT,SUB)) Q 1
 | 
|---|
| 13 |  Q 0
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 | APVERIFY(LRDFN,LRIDT,APSUB) ; $$(lrdfn,lridt,ap subscrpt) -> 1 if verified
 | 
|---|
| 16 |  ; autopsy checks for:
 | 
|---|
| 17 |  ;   date of death, 
 | 
|---|
| 18 |  ;   date autopsy report completed,
 | 
|---|
| 19 |  ;   autopsy release date/time
 | 
|---|
| 20 |  ; otherwise, checks for date report completed and report release date
 | 
|---|
| 21 |  N OK
 | 
|---|
| 22 |  S OK=0
 | 
|---|
| 23 |  I APSUB="CY"!(APSUB="EM")!(APSUB="SP") D  Q OK
 | 
|---|
| 24 |  . I $P($G(^LR(LRDFN,APSUB,LRIDT,0)),U,3),$P(^(0),U,11) S OK=1
 | 
|---|
| 25 |  I APSUB="AU" D  Q OK
 | 
|---|
| 26 |  . I '$$DOD^LRPXAPIU($$DFN^LRPXAPIU(LRDFN)) Q
 | 
|---|
| 27 |  . I '$P($G(^LR(LRDFN,"AU")),U,3) Q
 | 
|---|
| 28 |  . I '$P(^LR(LRDFN,"AU"),U,15) Q
 | 
|---|
| 29 |  . S OK=1
 | 
|---|
| 30 |  Q OK
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | VAL(LRDFN,LRIDT,LRDN) ; from LRPXAPI
 | 
|---|
| 33 |  ; $$(lrdfn,lridt,lrdn) -> result node
 | 
|---|
| 34 |  Q $G(^LR(LRDFN,"CH",LRIDT,LRDN))
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | REFVAL(REF) ; from LRPXAPI
 | 
|---|
| 37 |  ; $$(reference location in ^LR) -> data node
 | 
|---|
| 38 |  N SUB
 | 
|---|
| 39 |  I REF'[";" Q ""
 | 
|---|
| 40 |  S SUB=$P(REF,";",2)
 | 
|---|
| 41 |  S SUB=""""_SUB_""""
 | 
|---|
| 42 |  S $P(REF,";",2)=SUB
 | 
|---|
| 43 |  S REF=$TR(REF,";",",")
 | 
|---|
| 44 |  S REF="^LR("_REF_")"
 | 
|---|
| 45 |  Q $G(@REF)
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | LRPXRM(RESULT,REF,ITEM,TYPES) ; from LRPXAPI
 | 
|---|
| 48 |  ; returns result node from index subscript as RESULT
 | 
|---|
| 49 |  N FILE,IEN,SECTION,TEST,VALUES
 | 
|---|
| 50 |  S RESULT=""
 | 
|---|
| 51 |  S VALUES=$$REFVAL(REF)
 | 
|---|
| 52 |  I '$L(VALUES) Q
 | 
|---|
| 53 |  I ITEM>0 D  Q
 | 
|---|
| 54 |  . S $P(VALUES,U)=$$VRESULT^LRPXAPIU(ITEM,$P(VALUES,U))
 | 
|---|
| 55 |  . S RESULT=+ITEM_U_$$TESTNM^LRPXAPIU(+ITEM)_U_VALUES
 | 
|---|
| 56 |  . D SC(.RESULT,REF,TYPES)
 | 
|---|
| 57 |  I '$L(ITEM) D  Q
 | 
|---|
| 58 |  . I $P(REF,";",2)'="CH" Q
 | 
|---|
| 59 |  . S TEST=$$TEST^LRPXAPIU(+$P(REF,";",4))
 | 
|---|
| 60 |  . I 'TEST Q
 | 
|---|
| 61 |  . S RESULT=TEST_U_$$TESTNM^LRPXAPIU(TEST)_U_VALUES
 | 
|---|
| 62 |  . D SC(.RESULT,REF,TYPES)
 | 
|---|
| 63 |  S SECTION=$P(ITEM,";") I $L(SECTION)'=1 Q
 | 
|---|
| 64 |  S FILE=$P(ITEM,";",2) I $L(FILE)'=1 Q
 | 
|---|
| 65 |  S IEN=+$P(ITEM,";",3) I 'IEN Q
 | 
|---|
| 66 |  I SECTION="M" D  Q
 | 
|---|
| 67 |  . I FILE="S" S RESULT=IEN_U_$$SPECNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 68 |  . I FILE="T" S RESULT=IEN_U_$$TESTNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 69 |  . I FILE="O" S RESULT=IEN_U_$$BUGNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 70 |  . I FILE="A" S RESULT=IEN_U_$$ABNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 71 |  . I FILE="M" S RESULT=IEN_U_$$TBNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 72 |  I SECTION="A" D  Q
 | 
|---|
| 73 |  . I FILE="S" S RESULT=U_$$UP^XLFSTR(VALUES)_U_VALUES Q
 | 
|---|
| 74 |  . I FILE="T" S RESULT=IEN_U_$$TESTNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 75 |  . I FILE="O" S RESULT=IEN_U_$$ORGNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 76 |  . I FILE="D" S RESULT=IEN_U_$$DISNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 77 |  . I FILE="M" S RESULT=IEN_U_$$MORPHNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 78 |  . I FILE="E" S RESULT=IEN_U_$$ETINM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 79 |  . I FILE="F" S RESULT=IEN_U_$$FUNNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 80 |  . I FILE="P" S RESULT=IEN_U_$$PROCNM^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 81 |  . I FILE="I" S RESULT=IEN_U_$$ICD9^LRPXAPIU(IEN)_U_VALUES Q
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | SC(RESULT,REF,TYPES) ;
 | 
|---|
| 85 |  N CNT,LINE,LRDFN,LRIDT,SPEC
 | 
|---|
| 86 |  I TYPES["S" D
 | 
|---|
| 87 |  . S $P(REF,";",4)=0
 | 
|---|
| 88 |  . S SPEC=+$P($$REFVAL(REF),U,5)
 | 
|---|
| 89 |  . S RESULT("SPECIMEN")=SPEC_U_$$SPECNM^LRPXAPIU(SPEC)
 | 
|---|
| 90 |  I TYPES["C" D
 | 
|---|
| 91 |  . S CNT=0,LRDFN=+$P(REF,";"),LRIDT=+$P(REF,";",3)
 | 
|---|
| 92 |  . S LINE=0
 | 
|---|
| 93 |  . F  S LINE=$O(^LR(LRDFN,"CH",LRIDT,1,LINE)) Q:LINE<1  D
 | 
|---|
| 94 |  .. S CNT=CNT+1
 | 
|---|
| 95 |  .. S RESULT("COMMENTS",CNT)=$G(^LR(LRDFN,"CH",LRIDT,1,LINE,0))
 | 
|---|
| 96 |  . S RESULT("COMMENTS")=CNT
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 | SPEC(DATA,DFN,DATE,STYPE,ERR) ; from LRPXAPI
 | 
|---|
| 100 |  ; returns specimen node, comment, values in array DATA
 | 
|---|
| 101 |  N LRDFN,LRIDT K DATA
 | 
|---|
| 102 |  S ERR=0
 | 
|---|
| 103 |  S LRDFN=$$LRDFN^LRPXAPIU(DFN)
 | 
|---|
| 104 |  I 'LRDFN S ERR=1 Q
 | 
|---|
| 105 |  I 'DATE S ERR=1 Q
 | 
|---|
| 106 |  S LRIDT=$$LRIDT^LRPXAPIU(DATE)
 | 
|---|
| 107 |  D LRSPEC(.DATA,LRDFN,LRIDT,STYPE,.ERR)
 | 
|---|
| 108 |  Q
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 | LRSPEC(DATA,LRDFN,LRIDT,STYPE,ERR) ; from LRPXAPI
 | 
|---|
| 111 |  ; returns specimen node, comment, values in array DATA
 | 
|---|
| 112 |  K DATA
 | 
|---|
| 113 |  S ERR=0
 | 
|---|
| 114 |  I '$O(^LR(LRDFN,"CH",LRIDT,0)) S ERR=1 Q
 | 
|---|
| 115 |  I '$L(STYPE) S STYPE="A"
 | 
|---|
| 116 |  I STYPE="S" D SSPEC(.DATA,LRDFN,LRIDT) Q
 | 
|---|
| 117 |  I STYPE="C" D CSPEC(.DATA,LRDFN,LRIDT) Q
 | 
|---|
| 118 |  I STYPE="V" D VSPEC(.DATA,LRDFN,LRIDT) Q
 | 
|---|
| 119 |  I STYPE="A" D
 | 
|---|
| 120 |  . N ALL K ALL
 | 
|---|
| 121 |  . D SSPEC(.DATA,LRDFN,LRIDT) M ALL=DATA
 | 
|---|
| 122 |  . D CSPEC(.DATA,LRDFN,LRIDT) M ALL=DATA
 | 
|---|
| 123 |  . D VSPEC(.DATA,LRDFN,LRIDT) M ALL=DATA
 | 
|---|
| 124 |  . K DATA M DATA=ALL
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | SSPEC(DATA,LRDFN,LRIDT) ; specimen node values
 | 
|---|
| 128 |  K DATA
 | 
|---|
| 129 |  S DATA("S")=$G(^LR(LRDFN,"CH",LRIDT,0))
 | 
|---|
| 130 |  Q
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 | CSPEC(DATA,LRDFN,LRIDT) ; specimen comments
 | 
|---|
| 133 |  N CMT,CNT K DATA
 | 
|---|
| 134 |  I '$D(^LR(LRDFN,"CH",LRIDT,1,0)) Q
 | 
|---|
| 135 |  S CNT=0
 | 
|---|
| 136 |  S CMT=0
 | 
|---|
| 137 |  F  S CMT=$O(^LR(LRDFN,"CH",LRIDT,1,CMT)) Q:CMT<1  D
 | 
|---|
| 138 |  . I '$D(^LR(LRDFN,"CH",LRIDT,1,CMT,0)) Q
 | 
|---|
| 139 |  . S CNT=CNT+1
 | 
|---|
| 140 |  . S DATA("C",CNT)=^LR(LRDFN,"CH",LRIDT,1,CMT,0)
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 | VSPEC(DATA,LRDFN,LRIDT) ; test nodes for collected specimen
 | 
|---|
| 144 |  N CNT,LRDN,VALUE K DATA
 | 
|---|
| 145 |  S CNT=0
 | 
|---|
| 146 |  S LRDN=1
 | 
|---|
| 147 |  F  S LRDN=$O(^LR(LRDFN,"CH",LRIDT,LRDN)) Q:LRDN<2  S VALUE=^(LRDN) D
 | 
|---|
| 148 |  . S CNT=CNT+1
 | 
|---|
| 149 |  . S DATA("V",CNT)=LRDN_U_VALUE
 | 
|---|
| 150 |  Q
 | 
|---|
| 151 |  ;
 | 
|---|
| 152 | COMMENT(LRDFN,LRIDT) ; $$(lrdfn,lridt) --> 1 if comment exists, else 0
 | 
|---|
| 153 |  I +$O(^LR(LRDFN,"CH",LRIDT,1,0)) Q 1
 | 
|---|
| 154 |  Q 0
 | 
|---|
| 155 |  ;
 | 
|---|
| 156 | VALUE(RESULT,DFN,DATE,TEST,COND,ERR) ; from LRPXAPI, LRPXAPI1
 | 
|---|
| 157 |  ; returns result node that has met conditions as RESULT
 | 
|---|
| 158 |  N LRDFN,LRIDT,LRDN
 | 
|---|
| 159 |  I $L(COND),'$$CONDOK^LRPXAPIU(COND,"C") S ERR=1 Q
 | 
|---|
| 160 |  I $L(COND) S COND=$$REPLACE("I "_COND)
 | 
|---|
| 161 |  S RESULT=""
 | 
|---|
| 162 |  S ERR=0
 | 
|---|
| 163 |  S LRDFN=$$LRDFN^LRPXAPIU(DFN)
 | 
|---|
| 164 |  I 'LRDFN S ERR=1 Q
 | 
|---|
| 165 |  I 'DATE S ERR=1 Q
 | 
|---|
| 166 |  S LRIDT=$$LRIDT^LRPXAPIU(DATE)
 | 
|---|
| 167 |  S LRDN=$$LRDN^LRPXAPIU(TEST)
 | 
|---|
| 168 |  I 'LRDN S ERR=1 Q
 | 
|---|
| 169 |  D LRVAL(.RESULT,LRDFN,LRIDT,LRDN,COND,.ERR)
 | 
|---|
| 170 |  Q
 | 
|---|
| 171 |  ;
 | 
|---|
| 172 | LRVALUE(RESULT,LRDFN,LRIDT,LRDN,COND,ERR) ; from LRPXAPI, LRPXAPI1
 | 
|---|
| 173 |  ; returns result node that has met conditions as RESULT
 | 
|---|
| 174 |  I $L(COND),'$$CONDOK^LRPXAPIU(COND,"C") S ERR=1 Q
 | 
|---|
| 175 |  I $L(COND) S COND=$$REPLACE("I "_COND)
 | 
|---|
| 176 |  D LRVAL(.RESULT,LRDFN,LRIDT,LRDN,COND,.ERR)
 | 
|---|
| 177 |  Q
 | 
|---|
| 178 |  ;
 | 
|---|
| 179 | LRVAL(RESULT,LRDFN,LRIDT,LRDN,COND,ERR) ;
 | 
|---|
| 180 |  N F,S,V,VALUE
 | 
|---|
| 181 |  S RESULT=""
 | 
|---|
| 182 |  S ERR=0
 | 
|---|
| 183 |  S VALUE=$G(^LR(LRDFN,"CH",LRIDT,LRDN))
 | 
|---|
| 184 |  I '$L(VALUE) S ERR=1 Q
 | 
|---|
| 185 |  I $L(COND) D  I ERR Q
 | 
|---|
| 186 |  . S V=$P(VALUE,U)
 | 
|---|
| 187 |  . S F=$P(VALUE,U,2)
 | 
|---|
| 188 |  . S S=$P($P(VALUE,U,5),"!")
 | 
|---|
| 189 |  . I 'S S S=$P($G(^LR(LRDFN,"CH",LRIDT,0)),U,5)
 | 
|---|
| 190 |  . X COND I '$T S ERR=1
 | 
|---|
| 191 |  S RESULT=VALUE
 | 
|---|
| 192 |  Q
 | 
|---|
| 193 |  ;
 | 
|---|
| 194 | CHNODE(ARRAY,NODE) ; from LRPXAPI
 | 
|---|
| 195 |  N NAME,NAME3,NAME5,NODE3,NODE5,PIECE,PIECE3,PIECE5,SUB K ARRAY
 | 
|---|
| 196 |  I '$L(NODE) Q
 | 
|---|
| 197 |  S NAME="RESULT^FLAG^CODES^VERIFIER^NORMALS^DATE-R^DATE-T^^INSTITUTION^LEDI^INSTRUMENT^TYPE"
 | 
|---|
| 198 |  S NAME3="NLT-O!NLT-R!LOINC!METHOD!MAP!TEST"
 | 
|---|
| 199 |  S NAME5="SPEC!LOW!HIGH!LOW-C!HIGH-C!!UNITS!DELTA-T!DELTA-V!DEF!LOW-T!HIGH-T"
 | 
|---|
| 200 |  F PIECE=1:1:12 D
 | 
|---|
| 201 |  . I PIECE=8 Q
 | 
|---|
| 202 |  . S SUB=$P(NAME,U,PIECE)
 | 
|---|
| 203 |  . I PIECE=8 Q
 | 
|---|
| 204 |  . I PIECE=3 D  Q
 | 
|---|
| 205 |  .. S NODE3=$P(NODE,U,3)
 | 
|---|
| 206 |  .. F PIECE3=1:1:6 S ARRAY($P(NAME3,"!",PIECE3))=$P(NODE3,"!",PIECE3)
 | 
|---|
| 207 |  . I PIECE=5 D  Q
 | 
|---|
| 208 |  .. S NODE5=$P(NODE,U,5)
 | 
|---|
| 209 |  .. F PIECE5=1:1:12 D
 | 
|---|
| 210 |  ... I PIECE5=6 Q
 | 
|---|
| 211 |  ... S ARRAY($P(NAME5,"!",PIECE5))=$P(NODE5,"!",PIECE5)
 | 
|---|
| 212 |  . S ARRAY(SUB)=$P(NODE,U,PIECE)
 | 
|---|
| 213 |  Q
 | 
|---|
| 214 |  ;
 | 
|---|
| 215 | ACCY(TESTS,ACC,BDN) ; from LRPXAPI
 | 
|---|
| 216 |  ; returns TESTS from yearly accession, ACC, BDN required
 | 
|---|
| 217 |  ; BDN is beginning date number
 | 
|---|
| 218 |  ; TESTS is array of file 60 iens
 | 
|---|
| 219 |  N DIC,LRAA,LRAAB,LRAD,LRAN,TEST,X,Y K DIC,TESTS
 | 
|---|
| 220 |  I '$L($G(ACC)) Q
 | 
|---|
| 221 |  S LRAAB=$P(ACC," ")
 | 
|---|
| 222 |  I LRAAB="" Q
 | 
|---|
| 223 |  S BDN=$E($G(BDN))
 | 
|---|
| 224 |  I BDN'>1 Q
 | 
|---|
| 225 |  S LRAN=+$P(ACC," ",3)
 | 
|---|
| 226 |  I 'LRAN Q
 | 
|---|
| 227 |  S LRAA=+$O(^LRO(68,"B",LRAAB,0))
 | 
|---|
| 228 |  I 'LRAA D
 | 
|---|
| 229 |  . S DIC=68,DIC(0)="M"
 | 
|---|
| 230 |  . S X=LRAAB
 | 
|---|
| 231 |  . D ^DIC K DIC
 | 
|---|
| 232 |  . S LRAA=+Y
 | 
|---|
| 233 |  I LRAA'>0 Q
 | 
|---|
| 234 |  S LRAD=BDN_$P(ACC," ",2)_"0000" ; yearly acc areas are assumed
 | 
|---|
| 235 |  S TEST=0
 | 
|---|
| 236 |  F  S TEST=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,TEST)) Q:TEST<1  D
 | 
|---|
| 237 |  . S TESTS(TEST)=TEST_U_$$TESTNM^LRPXAPIU(TEST)
 | 
|---|
| 238 |  Q
 | 
|---|
| 239 |  ;
 | 
|---|
| 240 | CONDOK(CONDO,TYPE) ; $$ from LRPXAPIU
 | 
|---|
| 241 |  N DEL,NUM,OK,OPER,PIECE,PIECES,VALID,VALIDOP,VALUE,VAR K PIECES
 | 
|---|
| 242 |  I '(TYPE="C"!(TYPE="M")!(TYPE="A")) Q 0
 | 
|---|
| 243 |  S COND=CONDO
 | 
|---|
| 244 |  I $E(COND)="|" S COND=$E(COND,2,245)
 | 
|---|
| 245 |  I $E(COND)="~" S COND=$E(COND,2,245)
 | 
|---|
| 246 |  I $L(COND)'>2 Q 0
 | 
|---|
| 247 |  I $E(COND,1,2)'?1U1P Q 0
 | 
|---|
| 248 |  I COND[U Q 0
 | 
|---|
| 249 |  I CONDO[" " Q 0
 | 
|---|
| 250 |  I CONDO["|" S DEL="|"
 | 
|---|
| 251 |  E  S DEL="~"
 | 
|---|
| 252 |  I '$$SYNTAX($$REPLACE(COND)) Q 0
 | 
|---|
| 253 |  S PIECE=COND
 | 
|---|
| 254 |  D
 | 
|---|
| 255 |  . I TYPE="C" S VALID="FSV" Q
 | 
|---|
| 256 |  . I TYPE="A" S VALID="CDEFIMOPST" Q
 | 
|---|
| 257 |  . I TYPE="M" S VALID="ACIMORST" Q
 | 
|---|
| 258 |  F NUM=1:1 Q:'$L($P(PIECE,DEL,NUM))  S PIECES(NUM)=$P(PIECE,DEL,NUM)
 | 
|---|
| 259 |  S OK=1
 | 
|---|
| 260 |  S NUM=0
 | 
|---|
| 261 |  F  S NUM=$O(PIECES(NUM)) Q:NUM<1  D  Q:'OK
 | 
|---|
| 262 |  . S PIECE=PIECES(NUM)
 | 
|---|
| 263 |  . I $L(PIECE)<3 S OK=0 Q
 | 
|---|
| 264 |  . S VAR=$E(PIECE)
 | 
|---|
| 265 |  . I VALID'[VAR S OK=0 Q
 | 
|---|
| 266 |  . D
 | 
|---|
| 267 |  .. I VAR="V" S VALIDOP="=<>[]" Q
 | 
|---|
| 268 |  .. I VAR="F" S VALIDOP="=[]" Q
 | 
|---|
| 269 |  .. I VAR="I" S VALIDOP="=[]" Q
 | 
|---|
| 270 |  .. I VAR="R" S VALIDOP="=[]" Q
 | 
|---|
| 271 |  .. I VAR="S",TYPE="A" S VALIDOP="=[]" Q
 | 
|---|
| 272 |  .. S VALIDOP="="
 | 
|---|
| 273 |  . I $E(PIECE,3)="'" S OK=0 Q
 | 
|---|
| 274 |  . I $E(PIECE,2)="'" S OPER=$E(PIECE,3)
 | 
|---|
| 275 |  . E  S OPER=$E(PIECE,2)
 | 
|---|
| 276 |  . I VALIDOP'[OPER S OK=0 Q
 | 
|---|
| 277 |  . S VALUE=$P(PIECE,OPER,2,999)
 | 
|---|
| 278 |  . I $E(VALUE)="""",$E(VALUE,$L(VALUE))'="""" S OK=0 Q
 | 
|---|
| 279 |  . I VAR="C" D  Q:'OK
 | 
|---|
| 280 |  .. I VALUE'?1""""1U1"""" S OK=0 Q
 | 
|---|
| 281 |  .. I $$CATSUB^LRPXAPIU($E(VALUE,2),TYPE)=-1 S OK=0 Q
 | 
|---|
| 282 |  . I VALUE,VALUE'=+VALUE S OK=0 Q
 | 
|---|
| 283 |  . I $L($P(VALUE,"""",3)) S OK=0 Q
 | 
|---|
| 284 |  . I '$$SYNTAX(PIECE) S OK=0 Q
 | 
|---|
| 285 |  . I $E(PIECE,2)="=",COND[(VAR_"'=") S OK=0 Q
 | 
|---|
| 286 |  I 'OK Q 0
 | 
|---|
| 287 |  Q 1
 | 
|---|
| 288 |  ;
 | 
|---|
| 289 | REPLACE(COND) ; $$(condition) -> condition replacing | or ~ with commas
 | 
|---|
| 290 |  Q $TR(COND,"~|",",,")
 | 
|---|
| 291 |  ;
 | 
|---|
| 292 | SYNTAX(X) ; $$(condition) -> 1 if correct, else 0
 | 
|---|
| 293 |  ; check syntax when condition applies to an if statement
 | 
|---|
| 294 |  S X="I "_X
 | 
|---|
| 295 |  D ^DIM
 | 
|---|
| 296 |  I '$D(X) Q 0
 | 
|---|
| 297 |  Q 1
 | 
|---|
| 298 |  ;
 | 
|---|
| 299 | NORMALS(LOW,HIGH,TEST,SPEC) ; from LRPXAPIU
 | 
|---|
| 300 |  N NODE
 | 
|---|
| 301 |  S (LOW,HIGH)=""
 | 
|---|
| 302 |  S TEST=+$G(TEST)
 | 
|---|
| 303 |  I 'TEST Q
 | 
|---|
| 304 |  S SPEC=+$G(SPEC)
 | 
|---|
| 305 |  I 'SPEC Q
 | 
|---|
| 306 |  S NODE=$G(^LAB(60,TEST,1,SPEC,0))
 | 
|---|
| 307 |  S LOW=$P(NODE,U,2)
 | 
|---|
| 308 |  S HIGH=$P(NODE,U,3)
 | 
|---|
| 309 |  Q
 | 
|---|
| 310 |  ;
 | 
|---|