| [613] | 1 | LA7VOBX ;DALOI/JMC - LAB OBX Segment message builder ; Feb 19, 2004 | 
|---|
|  | 2 | ;;5.2;AUTOMATED LAB INSTRUMENTS;**46,64**;Sep 27, 1994 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | OBX(LRDFN,LRSS,LRIDT,LRSB,LA7ARRAY,LA7OBXSN,LA7FS,LA7ECH,LA7NVAF) ; Observation/Result segment for Lab Results. | 
|---|
|  | 5 | ; Call with    LRDFN = ien of entry in file #63 | 
|---|
|  | 6 | ;               LRSS = file #63 subscript | 
|---|
|  | 7 | ;              LRIDT = inverse date/time of specimen | 
|---|
|  | 8 | ;               LRSB = ien of dataname if "CH" subscript or global subscript for others | 
|---|
|  | 9 | ;           LA7ARRAY = array to return OBX segment, pass by reference | 
|---|
|  | 10 | ;           LA7OBXSN = OBX segment sequence number, pass by reference | 
|---|
|  | 11 | ;              LA7FS = HL field separator | 
|---|
|  | 12 | ;             LA7ECH = HL encoding characters | 
|---|
|  | 13 | ;            LA7NVAF = flag indicating type of receiving facility (see NVAF^LA7VHLU2) | 
|---|
|  | 14 | ; | 
|---|
|  | 15 | ; Returns LA7OBXSN = current OBX segment sequence number | 
|---|
|  | 16 | ;         LA7ARRAY = array containing OBX segment | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | N LA7OBX,LA7VAL,LA7X | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | ; No subscript/patient/specimen | 
|---|
|  | 21 | I $G(LRSS)=""!('$G(LRDFN))!('$G(LRIDT)) Q | 
|---|
|  | 22 | ; | 
|---|
|  | 23 | S LA7NVAF=$G(LA7NVAF) | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | ; "CH" subscript | 
|---|
|  | 26 | I LRSS="CH" D CH^LA7VOBX1 Q | 
|---|
|  | 27 | ; | 
|---|
|  | 28 | ; "MI" subscript | 
|---|
|  | 29 | I LRSS="MI" D MI^LA7VOBX3 Q | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | ; "SP" subscrpt | 
|---|
|  | 32 | I LRSS="SP" D AP^LA7VOBX2 Q | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | ; "CY" subscrpt | 
|---|
|  | 35 | I LRSS="CY" D AP^LA7VOBX2 Q | 
|---|
|  | 36 | ; | 
|---|
|  | 37 | ; "EM" subscrpt | 
|---|
|  | 38 | I LRSS="EM" D AP^LA7VOBX2 Q | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | Q | 
|---|
|  | 41 | ; | 
|---|
|  | 42 | ; | 
|---|
|  | 43 | OBX1(LA7OBXSN) ; Build OBX-1 sequence - Set ID (sequence number) | 
|---|
|  | 44 | ; Call with LA7OBXSN = sequence number (pass by reference) | 
|---|
|  | 45 | ; | 
|---|
|  | 46 | N LA7Y | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | ; increment sequence number | 
|---|
|  | 49 | S (LA7OBXSN,LA7Y)=$G(LA7OBXSN)+1 | 
|---|
|  | 50 | ; | 
|---|
|  | 51 | Q LA7Y | 
|---|
|  | 52 | ; | 
|---|
|  | 53 | ; | 
|---|
|  | 54 | OBX2(LA7FILE,LA7FIELD) ; Build OBX-2 sequence - Value type | 
|---|
|  | 55 | ; Call with   LA7FILE = FileMan DD file/subfield number | 
|---|
|  | 56 | ;            LA7FIELD = Fileman DD field number | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | ; Returns      LA7VAL = value type  (HL7 table 0125) | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | N LA7ERR,LA7TYP,LA7VAL | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | D OBX2^LA7VOBXA | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | Q LA7VAL | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | ; | 
|---|
|  | 67 | OBX3(LA7NLT,LA7953,LA7ALT,LA7FS,LA7ECH) ; Build OBX-3 sequence - Observation identifier field | 
|---|
|  | 68 | ; Call with  LA7NLT = NLT code. | 
|---|
|  | 69 | ;            LA7953 = LOINC code | 
|---|
|  | 70 | ;            LA7ALT = alternate code - local/non-VA (code^text^system) | 
|---|
|  | 71 | ;             LA7FS = HL field separator | 
|---|
|  | 72 | ;            LA7ECH = HL encoding characters | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | N LA764,LA7J,LA7LN,LA7X,LA7Y | 
|---|
|  | 75 | ; | 
|---|
|  | 76 | D OBX3^LA7VOBXA | 
|---|
|  | 77 | ; | 
|---|
|  | 78 | Q LA7Y | 
|---|
|  | 79 | ; | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | OBX4(LA7VAL,LA7FS,LA7ECH) ; Build OBX-4 sequence - Observation sub-ID | 
|---|
|  | 82 | ; Call with  LA7VAL = value of the observation | 
|---|
|  | 83 | ;             LA7FS = HL field separator | 
|---|
|  | 84 | ;            LA7ECH = HL encoding characters | 
|---|
|  | 85 | ; | 
|---|
|  | 86 | ; Returns LA7Y = Observation sub-ID checked for escape encoding | 
|---|
|  | 87 | ; | 
|---|
|  | 88 | N LA7Y | 
|---|
|  | 89 | ; | 
|---|
|  | 90 | S LA7Y=$$CHKDATA^LA7VHLU3(LA7VAL,LA7FS_LA7ECH) | 
|---|
|  | 91 | ; | 
|---|
|  | 92 | Q LA7Y | 
|---|
|  | 93 | ; | 
|---|
|  | 94 | ; | 
|---|
|  | 95 | OBX5(LA7VAL,LA7OBX2,LA7FS,LA7ECH) ; Build OBX-5 sequence - Observation value | 
|---|
|  | 96 | ; Call with  LA7VAL = value of the observation | 
|---|
|  | 97 | ;           LA7OBX2 = value type | 
|---|
|  | 98 | ;             LA7FS = HL field separator | 
|---|
|  | 99 | ;            LA7ECH = HL encoding characters | 
|---|
|  | 100 | ; | 
|---|
|  | 101 | N LA7Y | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | D OBX5^LA7VOBXA | 
|---|
|  | 104 | ; | 
|---|
|  | 105 | Q LA7Y | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | OBX5M(LA7FN,LA7IENS,LA7FLD,LA7WP,LA7FS,LA7ECH) ; Build OBX-5 sequence - Observation value - multi-line textual result | 
|---|
|  | 109 | ; Call with LA7FN = File number or subfile | 
|---|
|  | 110 | ;         LA7IENS = Standard FileMan IENS indicating internal entry numbers | 
|---|
|  | 111 | ;          LA7FLD = Field number | 
|---|
|  | 112 | ;           LA7WP = array passed by reference to return text | 
|---|
|  | 113 | ;           LA7FS = HL field separator | 
|---|
|  | 114 | ;          LA7ECH = HL encoding characters | 
|---|
|  | 115 | ; | 
|---|
|  | 116 | ; Returns   LA7WP = subscripted array containing text of results | 
|---|
|  | 117 | ;                   LA7WP(0), LA7WP(1), LA7WP(2),... | 
|---|
|  | 118 | ; | 
|---|
|  | 119 | N LA7ERR,LA7I,LA7J,LA7TYPE,LA7X,LA7Y | 
|---|
|  | 120 | ; | 
|---|
|  | 121 | D OBX5M^LA7VOBXA | 
|---|
|  | 122 | ; | 
|---|
|  | 123 | Q | 
|---|
|  | 124 | ; | 
|---|
|  | 125 | ; | 
|---|
|  | 126 | OBX5R(LA7VAL,LA7OBX2,LA7FS,LA7ECH) ; Build OBX-5 sequence with repetition - Observation value | 
|---|
|  | 127 | ; Call with  LA7VAL = array passed by reference | 
|---|
|  | 128 | ;           LA7OBX2 = value type | 
|---|
|  | 129 | ;             LA7FS = HL field separator | 
|---|
|  | 130 | ;            LA7ECH = HL encoding characters | 
|---|
|  | 131 | ; | 
|---|
|  | 132 | N LA7I,LA7Y | 
|---|
|  | 133 | ; | 
|---|
|  | 134 | D OBX5R^LA7VOBXA | 
|---|
|  | 135 | ; | 
|---|
|  | 136 | Q LA7Y | 
|---|
|  | 137 | ; | 
|---|
|  | 138 | ; | 
|---|
|  | 139 | OBX6(LA7VAL,LA764061,LA7FS,LA7ECH) ; Build OBX-6 sequence - Units | 
|---|
|  | 140 | ; Call with   LA7VAL = Units if in external format | 
|---|
|  | 141 | ;           LA764061 = ien of units in #64.061 | 
|---|
|  | 142 | ;              LA7FS = HL field separator | 
|---|
|  | 143 | ;             LA7ECH = HL encoding characters | 
|---|
|  | 144 | ; Returns units | 
|---|
|  | 145 | ; | 
|---|
|  | 146 | N LA7Y | 
|---|
|  | 147 | ; | 
|---|
|  | 148 | D OBX6^LA7VOBXA | 
|---|
|  | 149 | ; | 
|---|
|  | 150 | Q LA7Y | 
|---|
|  | 151 | ; | 
|---|
|  | 152 | ; | 
|---|
|  | 153 | OBX7(LA7LOW,LA7HIGH,LA7FS,LA7ECH) ; Build OBX-7 sequence - Reference range | 
|---|
|  | 154 | ; Call with  LA7LOW = lower limit | 
|---|
|  | 155 | ;           LA7HIGH = upper limit | 
|---|
|  | 156 | ;             LA7FS = HL field separator | 
|---|
|  | 157 | ;            LA7ECH = HL encoding characters | 
|---|
|  | 158 | ; Returns reference range | 
|---|
|  | 159 | ; | 
|---|
|  | 160 | N LA7Y | 
|---|
|  | 161 | ; | 
|---|
|  | 162 | D OBX7^LA7VOBXA | 
|---|
|  | 163 | ; | 
|---|
|  | 164 | Q LA7Y | 
|---|
|  | 165 | ; | 
|---|
|  | 166 | ; | 
|---|
|  | 167 | OBX8(LA7FLAG) ; Build OBX-8 sequence - Abnormal flags | 
|---|
|  | 168 | ; Call with LA7FLAG = DHCP Lab normalcy flag | 
|---|
|  | 169 | ; Returns abnormal flags based on HL7 table 0078 | 
|---|
|  | 170 | ; | 
|---|
|  | 171 | N LA7Y | 
|---|
|  | 172 | ; | 
|---|
|  | 173 | S LA7Y=$TR(LA7FLAG,"*",$E(LA7FLAG,1)) ; abnormal flag | 
|---|
|  | 174 | Q LA7Y | 
|---|
|  | 175 | ; | 
|---|
|  | 176 | ; | 
|---|
|  | 177 | OBX11(LA7FLAG) ; Build OBX-11 sequence - Observation result status | 
|---|
|  | 178 | ; Call with LA7FLAG = DHCP Lab status flag | 
|---|
|  | 179 | ; Returns result status based on HL7 table 0085 | 
|---|
|  | 180 | ; | 
|---|
|  | 181 | N LA7Y | 
|---|
|  | 182 | ; | 
|---|
|  | 183 | S LA7Y="" | 
|---|
|  | 184 | ; | 
|---|
|  | 185 | I LA7FLAG="canc" S LA7Y="X" | 
|---|
|  | 186 | I LA7FLAG="comment" S LA7Y="F" | 
|---|
|  | 187 | I LA7FLAG="pending" S LA7Y="I" | 
|---|
|  | 188 | I LA7FLAG="F" S LA7Y="F" | 
|---|
|  | 189 | I LA7FLAG="P" S LA7Y="P" | 
|---|
|  | 190 | I LA7FLAG="A" S LA7Y="C" | 
|---|
|  | 191 | I LA7FLAG="C" S LA7Y="C" | 
|---|
|  | 192 | ; | 
|---|
|  | 193 | Q LA7Y | 
|---|
|  | 194 | ; | 
|---|
|  | 195 | ; | 
|---|
|  | 196 | OBX13(LA7VAL,LA7SRC,LA7FS,LA7ECH) ; Build OBX-13 sequence - User defined access checks | 
|---|
|  | 197 | ; Call with LA7VAL = access screen to expand | 
|---|
|  | 198 | ;           LA7SRC = source of access screen | 
|---|
|  | 199 | ;            LA7FS = HL field separator | 
|---|
|  | 200 | ;           LA7ECH = HL encoding characters | 
|---|
|  | 201 | ; | 
|---|
|  | 202 | ; Returns     LA7Y = access screen text | 
|---|
|  | 203 | ; | 
|---|
|  | 204 | N LA7Y | 
|---|
|  | 205 | S LA7Y="" | 
|---|
|  | 206 | ; | 
|---|
|  | 207 | ; Expanding antibiotic susceptibility display screen | 
|---|
|  | 208 | I LA7SRC="MIS" D | 
|---|
|  | 209 | . S LA7Y=$S(LA7VAL="A":"ALWAYS DISPLAY",LA7VAL="N":"NEVER DISPLAY",LA7VAL="R":"RESTRICT DISPLAY",1:"") | 
|---|
|  | 210 | ; | 
|---|
|  | 211 | S LA7Y=$$CHKDATA^LA7VHLU3(LA7Y,LA7FS_LA7ECH) | 
|---|
|  | 212 | ; | 
|---|
|  | 213 | Q LA7Y | 
|---|
|  | 214 | ; | 
|---|
|  | 215 | ; | 
|---|
|  | 216 | OBX14(LA7DT) ; Build OBX-14 sequence - date/time of observation | 
|---|
|  | 217 | ; Call with LA7DT = FileMan date/time | 
|---|
|  | 218 | ; Returns OBX-14 sequence | 
|---|
|  | 219 | ; | 
|---|
|  | 220 | S LA7DT=$$CHKDT^LA7VHLU1(LA7DT) | 
|---|
|  | 221 | Q $$FMTHL7^XLFDT(LA7DT) | 
|---|
|  | 222 | ; | 
|---|
|  | 223 | ; | 
|---|
|  | 224 | OBX15(LA74,LA7FS,LA7ECH) ; Build OBX-15 sequence - Producer's ID field | 
|---|
|  | 225 | ; Call with   LA74 = ien of institution in file #4 | 
|---|
|  | 226 | ;                    if null/undefined then use Kernel Site file. | 
|---|
|  | 227 | ;            LA7FS = HL field separator | 
|---|
|  | 228 | ;           LA7ECH = HL encoding characters | 
|---|
|  | 229 | ; | 
|---|
|  | 230 | ; Returns facility that performed the testing (ID^text^99VA4) | 
|---|
|  | 231 | ; | 
|---|
|  | 232 | Q $$INST^LA7VHLU4(LA74,LA7FS,LA7ECH) | 
|---|
|  | 233 | ; | 
|---|
|  | 234 | ; | 
|---|
|  | 235 | OBX16(LA7DUZ,LA7DIV,LA7FS,LA7ECH) ; Build OBX-16 sequence - Responsible observer field | 
|---|
|  | 236 | ; Call with   LA7DUZ = DUZ of verifying user | 
|---|
|  | 237 | ;             LA7DIV = Institution of user | 
|---|
|  | 238 | ;              LA7FS = HL field separator | 
|---|
|  | 239 | ;             LA7ECH = HL encoding characters | 
|---|
|  | 240 | ; | 
|---|
|  | 241 | ; Returns OBX-16 sequence | 
|---|
|  | 242 | ; | 
|---|
|  | 243 | Q $$XCN^LA7VHLU4(LA7DUZ,LA7DIV,LA7FS,LA7ECH) | 
|---|
|  | 244 | ; | 
|---|
|  | 245 | ; | 
|---|
|  | 246 | OBX17(LA7VAL,LA7FS,LA7ECH) ; Build OBX-17 sequence - Observation method field | 
|---|
|  | 247 | ; Call with   LA7VAL = WKLD SUFFIX CODES #64.2 with leading decimal | 
|---|
|  | 248 | ;              LA7FS = HL field separator | 
|---|
|  | 249 | ;             LA7ECH = HL encoding characters | 
|---|
|  | 250 | ; | 
|---|
|  | 251 | ; Returns       LA7Y = OBX-17 sequence | 
|---|
|  | 252 | ; | 
|---|
|  | 253 | N LA7X,LA7Y | 
|---|
|  | 254 | ; | 
|---|
|  | 255 | ; method suffix code maybe stored without leading decimal, | 
|---|
|  | 256 | ;  add "." back for lookup, also add trailing space for lookup in x-ref. | 
|---|
|  | 257 | I LA7VAL>1 S LA7VAL="."_LA7VAL | 
|---|
|  | 258 | S LA7X=$O(^LAB(64.2,"C",LA7VAL_" ",0)),LA7Y="" | 
|---|
|  | 259 | I LA7X D | 
|---|
|  | 260 | . S LA7X(.01)=$$GET1^DIQ(64.2,LA7X_",",.01) | 
|---|
|  | 261 | . S LA7X(.01)=$$CHKDATA^LA7VHLU3(LA7X(.01),LA7FS_LA7ECH) | 
|---|
|  | 262 | . S LA7Y=LA7VAL_$E(LA7ECH)_LA7X(.01)_$E(LA7ECH)_"99VA64_2" | 
|---|
|  | 263 | ; | 
|---|
|  | 264 | Q LA7Y | 
|---|
|  | 265 | ; | 
|---|
|  | 266 | ; | 
|---|
|  | 267 | OBX18(LA7VAL,LA7FS,LA7ECH) ; Build OBX-18 sequence - Equipment entity identifier field | 
|---|
|  | 268 | ; Call with   LA7VAL = Equipment entity identifier | 
|---|
|  | 269 | ;              LA7FS = HL field separator | 
|---|
|  | 270 | ;             LA7ECH = HL encoding characters | 
|---|
|  | 271 | ; | 
|---|
|  | 272 | ; Returns       LA7X = OBX-18 sequence | 
|---|
|  | 273 | ; | 
|---|
|  | 274 | N LA7I,LA7J,LA7X,LA7Y | 
|---|
|  | 275 | ; | 
|---|
|  | 276 | S LA7X="",LA7J=$L(LA7VAL,"!") | 
|---|
|  | 277 | F LA7I=1:1:LA7J D | 
|---|
|  | 278 | . S LA7Y=$P(LA7VAL,"!",LA7I) | 
|---|
|  | 279 | . I LA7Y="" Q | 
|---|
|  | 280 | . S $P(LA7X,$E(LA7ECH,1),LA7I)=$$CHKDATA^LA7VHLU3(LA7Y,LA7FS_LA7ECH) | 
|---|
|  | 281 | ; | 
|---|
|  | 282 | Q LA7X | 
|---|