| 1 | LA7VOBX1 ;DALOI/JMC - LAB OBX Segment message builder (CH subscript) cont'd; 5/25/00
|
---|
| 2 | ;;5.2;AUTOMATED LAB INSTRUMENTS;**46,61,63,64,71**;Sep 27, 1994
|
---|
| 3 | ;
|
---|
| 4 | CH ; Observation/Result segment for "CH" subscript results.
|
---|
| 5 | ; Called by LA7VOBX
|
---|
| 6 | ;
|
---|
| 7 | N LA76304,LA7ALT,LA7DIV,LA7I,LA7RS,LA7X,LA7Y,X
|
---|
| 8 | ;
|
---|
| 9 | ; "CH" subscript requires a dataname
|
---|
| 10 | I '$G(LRSB) Q
|
---|
| 11 | ;
|
---|
| 12 | ; get result node from LR global.
|
---|
| 13 | S LA76304(0)=$G(^LR(LRDFN,LRSS,LRIDT,0))
|
---|
| 14 | S LA7RS=$P(LRSB,"^",2),LRSB=$P(LRSB,"^")
|
---|
| 15 | S LA7VAL=$G(^LR(LRDFN,LRSS,LRIDT,LRSB))
|
---|
| 16 | ; If previous results have been corrected then send corrected status
|
---|
| 17 | I LA7RS="",$P(LA7VAL,"^",10)=2 S LA7RS="C"
|
---|
| 18 | ;
|
---|
| 19 | ; Check if test is OK to send - (O)utput or (B)oth
|
---|
| 20 | S LA7X=$P(LA7VAL,"^",12)
|
---|
| 21 | I LA7X]"","BO"'[LA7X Q
|
---|
| 22 | I LA7X="",'$$OKTOSND^LA7VHLU1(LRSS,LRSB,+$P($P(LA7VAL,"^",3),"!",7)) Q
|
---|
| 23 | ;
|
---|
| 24 | ; If no result NLT or LOINC try to determine from file #60
|
---|
| 25 | S LA7X=$P(LA7VAL,"^",3)
|
---|
| 26 | I $P(LA7X,"!",2)=""!($P(LA7X,"!",3)="") S $P(LA7VAL,"^",3)=$$DEFCODE^LA7VHLU5(LRSS,LRSB,LA7X,$P(LA76304(0),"^",5))
|
---|
| 27 | ; No result NLT code - log error
|
---|
| 28 | I $P($P(LA7VAL,"^",3),"!",2)="" D
|
---|
| 29 | . N LA7X
|
---|
| 30 | . S LA7X="["_LRSB_"]"_$$GET1^DID(63.04,LRSB,"","LABEL")
|
---|
| 31 | . D CREATE^LA7LOG(36)
|
---|
| 32 | ;
|
---|
| 33 | ; something missing - No NLT code, etc.
|
---|
| 34 | I LA7VAL="" Q
|
---|
| 35 | ;
|
---|
| 36 | ; Check for missing units/reference ranges
|
---|
| 37 | S LA7X=$P(LA7VAL,"^",5)
|
---|
| 38 | ;
|
---|
| 39 | ; Results missing units, lookup in file #60
|
---|
| 40 | I $P(LA7X,"!",7)="" S $P(LA7X,"!",7)=$P($$REFUNIT^LA7VHLU1(LRSB,$P(LA76304(0),"^",5)),"^",3)
|
---|
| 41 | ;
|
---|
| 42 | ; If results missing reference ranges, use values from file #60.
|
---|
| 43 | I $P(LA7X,"!",2)="",$P(LA7X,"!",3)="",$P(LA7X,"!",11)="",$P(LA7X,"!",12)="" D
|
---|
| 44 | . S LA7Y=$$REFUNIT^LA7VHLU1(LRSB,$P(LA76304(0),"^",5))
|
---|
| 45 | . S $P(LA7X,"!",2)=$P(LA7Y,"^")
|
---|
| 46 | . S $P(LA7X,"!",3)=$P(LA7Y,"^",2)
|
---|
| 47 | . S $P(LA7X,"!",11)=$P(LA7Y,"^",6)
|
---|
| 48 | . S $P(LA7X,"!",12)=$P(LA7Y,"^",7)
|
---|
| 49 | ; Use therapeutic low/high if low/high missing.
|
---|
| 50 | I $P(LA7X,"!",2)="",$P(LA7X,"!",3)="" D
|
---|
| 51 | . S $P(LA7X,"!",2)=$P(LA7X,"!",11)
|
---|
| 52 | . S $P(LA7X,"!",3)=$P(LA7X,"!",12)
|
---|
| 53 | ;
|
---|
| 54 | ; Evaluate low/high reference ranges in case M code in these fields.
|
---|
| 55 | S:$G(SEX)="" SEX="M" S:$G(AGE)="" AGE=99
|
---|
| 56 | F LA7I=2,3 I $E($P(LA7X,"!",LA7I),1,3)="$S(" D
|
---|
| 57 | . S @("X="_$P(LA7X,"!",LA7I))
|
---|
| 58 | . S $P(LA7X,"!",LA7I)=X
|
---|
| 59 | ;
|
---|
| 60 | ; Put units/reference ranges back in variable LA7VAL
|
---|
| 61 | S $P(LA7VAL,"^",5)=LA7X
|
---|
| 62 | ;
|
---|
| 63 | ; Initialize OBX segment
|
---|
| 64 | S LA7OBX(0)="OBX"
|
---|
| 65 | S LA7OBX(1)=$$OBX1^LA7VOBX(.LA7OBXSN)
|
---|
| 66 | ;
|
---|
| 67 | ; Value type
|
---|
| 68 | ; If result is "cancel" or "comment" then data type is ST - string data
|
---|
| 69 | S LA7X=$S("canccomment"[$P(LA7VAL,"^"):1,1:0)
|
---|
| 70 | I LA7X S LA7OBX(2)="ST"
|
---|
| 71 | E S LA7OBX(2)=$$OBX2^LA7VOBX(63.04,LRSB)
|
---|
| 72 | ;
|
---|
| 73 | ; Observation identifer
|
---|
| 74 | ; build alternate code based on dataname from file #63 in case it's needed
|
---|
| 75 | S LA7X=$P(LA7VAL,"^",3)
|
---|
| 76 | S LA7ALT="CH"_LRSB_"^"_$$GET1^DID(63.04,LRSB,"","LABEL")_"^"_"99VA63"
|
---|
| 77 | S LA7OBX(3)=$$OBX3^LA7VOBX($P(LA7X,"!",2),$P(LA7X,"!",3),LA7ALT,LA7FS,LA7ECH)
|
---|
| 78 | ;
|
---|
| 79 | ; Test value
|
---|
| 80 | ; If DoD and "canc" then report "PL Cancelled" per Lab Interop ICD.
|
---|
| 81 | S LA7X=$P(LA7VAL,"^")
|
---|
| 82 | I LA7X'="canc",$$GET1^DID(63.04,LRSB,"","TYPE","","LA7ERR")="SET" D
|
---|
| 83 | . S LA7X=$$EXTERNAL^DILFD(63.04,LRSB,"",LA7X)
|
---|
| 84 | . I LA7X="" S LA7X=$P(LA7VAL,"^")
|
---|
| 85 | I $G(LA7NVAF)=1,LA7X="canc" S LA7X="PL Cancelled"
|
---|
| 86 | S LA7OBX(5)=$$OBX5^LA7VOBX(LA7X,LA7OBX(2),LA7FS,LA7ECH)
|
---|
| 87 | ;
|
---|
| 88 | ; Units
|
---|
| 89 | S LA7X=$P(LA7VAL,"^",5)
|
---|
| 90 | S LA7OBX(6)=$$OBX6^LA7VOBX($P(LA7X,"!",7),"",LA7FS,LA7ECH)
|
---|
| 91 | ;
|
---|
| 92 | ; Reference range
|
---|
| 93 | S LA7OBX(7)=$$OBX7^LA7VOBX($P(LA7X,"!",2),$P(LA7X,"!",3),LA7FS,LA7ECH)
|
---|
| 94 | ;
|
---|
| 95 | ; Abnormal flags
|
---|
| 96 | S LA7OBX(8)=$$OBX8^LA7VOBX($P(LA7VAL,"^",2))
|
---|
| 97 | ;
|
---|
| 98 | ; "P"artial or "F"inal results
|
---|
| 99 | S LA7X=$S("canccommentpending"[$P(LA7VAL,"^"):$P(LA7VAL,"^"),1:"F")
|
---|
| 100 | I LA7RS="C" S LA7X=LA7RS
|
---|
| 101 | S LA7OBX(11)=$$OBX11^LA7VOBX(LA7X)
|
---|
| 102 | ;
|
---|
| 103 | ; Observation date/time - collection date/time per HL7 standard
|
---|
| 104 | I $P(LA76304(0),"^") S LA7OBX(14)=$$OBX14^LA7VOBX($P(LA76304(0),"^"))
|
---|
| 105 | ;
|
---|
| 106 | S LA7DIV=$P(LA7VAL,"^",9)
|
---|
| 107 | I LA7DIV="",$$DIV4^XUSER(.LA7DIV,$P(LA7VAL,"^",4)) S LA7DIV=$O(LA7DIV(0))
|
---|
| 108 | ;
|
---|
| 109 | ; Facility that performed the testing
|
---|
| 110 | S LA7OBX(15)=$$OBX15^LA7VOBX(LA7DIV,LA7FS,LA7ECH)
|
---|
| 111 | ;
|
---|
| 112 | ; Person that verified the test
|
---|
| 113 | S LA7OBX(16)=$$OBX16^LA7VOBX($P(LA7VAL,"^",4),LA7DIV,LA7FS,LA7ECH)
|
---|
| 114 | ;
|
---|
| 115 | ; Observation method
|
---|
| 116 | S LA7X=$P($P(LA7VAL,"^",3),"!",4)
|
---|
| 117 | I LA7X S LA7OBX(17)=$$OBX17^LA7VOBX(LA7X,LA7FS,LA7ECH)
|
---|
| 118 | ;
|
---|
| 119 | ; Equipment entity identifier
|
---|
| 120 | I $L($P(LA7VAL,"^",11)) S LA7OBX(18)=$$OBX18^LA7VOBX($P(LA7VAL,"^",11),LA7FS,LA7ECH)
|
---|
| 121 | ;
|
---|
| 122 | D BUILDSEG^LA7VHLU(.LA7OBX,.LA7ARRAY,LA7FS)
|
---|
| 123 | ;
|
---|
| 124 | Q
|
---|