| 1 | LA7VHLU1 ;DALOI/JMC - HL7 segment builder utility ; 11-25-1998
 | 
|---|
| 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**46,61,64**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | SETID(LA76249,LA7ID,LA7X) ; Setup identifier's in TMP global for later storing.
 | 
|---|
| 6 |  ; Call with LA76249 = ien of message in #62.49
 | 
|---|
| 7 |  ;             LA7ID = root of identifier
 | 
|---|
| 8 |  ;              LA7X = value to add to identifier
 | 
|---|
| 9 |  N Y
 | 
|---|
| 10 |  S Y=$O(^TMP("LA7-ID",$J,LA76249,""),-1) ; get last entry
 | 
|---|
| 11 |  S Y=Y+1
 | 
|---|
| 12 |  S ^TMP("LA7-ID",$J,LA76249,Y)=LA7ID_LA7X
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | UTS(LA7628,LA7UID,LA760) ; Update test status on manifest
 | 
|---|
| 17 |  ; Call with LA7628 = ien of shipping manifest in #62.8
 | 
|---|
| 18 |  ;           LA7UID = accession's UID
 | 
|---|
| 19 |  ;            LA760 = file # 60 ien of ordered test 
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ; Sets to status 4 (partial). Will deal with 5 (completed) at later time
 | 
|---|
| 22 |  ; when lab package has capability of designating an accession as completed.
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  N LA762801,LA7X
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  S LA762801=0
 | 
|---|
| 27 |  F  S LA762801=$O(^LAHM(62.8,LA7628,10,"UID",LA7UID,LA762801)) Q:'LA762801  D
 | 
|---|
| 28 |  . S LA7X=$G(^LAHM(62.8,LA7628,10,LA762801,0))
 | 
|---|
| 29 |  . I $P(LA7X,"^",2)'=LA760 Q  ; Not the test we're looking for.
 | 
|---|
| 30 |  . I $P(LA7X,"^",8)>2,$P(LA7X,"^",8)<5 D STSUP^LA7SMU(LA7628,LA762801,4)
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | UPID(LA76249) ; Update identifier's associated with the message in #62.49
 | 
|---|
| 35 |  ; Call with LA76249 = ien of message in #62.49
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  N FDA,LA7CNT,LA7ERR,LA7I,LA7X
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  S (LA7CNT,LA7I)=0
 | 
|---|
| 40 |  F  S LA7I=$O(^TMP("LA7-ID",$J,LA76249,LA7I)) Q:'LA7I  D
 | 
|---|
| 41 |  . S LA7CNT=LA7CNT+1
 | 
|---|
| 42 |  . S LA7X=^TMP("LA7-ID",$J,LA76249,LA7I)
 | 
|---|
| 43 |  . I LA7CNT=1 S FDA(1,62.49,LA76249_",",5)=LA7X
 | 
|---|
| 44 |  . ; Add code to store additional identifiers in new multiple field in #62.49
 | 
|---|
| 45 |  I $D(FDA(1)) D FILE^DIE("","FDA(1)","LA7ERR(1)")
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ; Clean up
 | 
|---|
| 48 |  K ^TMP("LA7-ID",$J,LA76249)
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 | CHKDT(LA7X) ; Check validity of date/time
 | 
|---|
| 53 |  ; Adjust invalid times to closest valid time - correct for lab problem
 | 
|---|
| 54 |  ; that generated invalid FileMan date/times.
 | 
|---|
| 55 |  ; If hours>24 then set to 24 with no minutes/seconds
 | 
|---|
| 56 |  ; If minutes greater than 59 then set to 59
 | 
|---|
| 57 |  ; If seconds greater than 59 then set to 59
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  N I,LA7Y,X
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  S LA7Y=$P(LA7X,".",2)
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ; If time present then check otherwise skip and return input.
 | 
|---|
| 64 |  I $L(LA7Y) D
 | 
|---|
| 65 |  . F I=1:2:5 D
 | 
|---|
| 66 |  . . S LA7Y(I)=$E(LA7Y,I,I+1)
 | 
|---|
| 67 |  . . I $L(LA7Y(I))=1 S LA7Y(I)=LA7Y(I)_"0"
 | 
|---|
| 68 |  . . I LA7Y(I)>$S(I=1:24,1:59) S LA7Y(I)=$S(I=1:24,1:59)
 | 
|---|
| 69 |  . . I I=1,LA7Y(1)=24 S LA7Y=24
 | 
|---|
| 70 |  . S X="."_LA7Y(1)_LA7Y(3)_LA7Y(5),X=+X
 | 
|---|
| 71 |  . S $P(LA7X,".",2)=$P(X,".",2)
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  Q LA7X
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 | REFUNIT(LA7SB,LA761) ; Find reference ranges/units from file #60
 | 
|---|
| 77 |  ; Call with LA7SB = dataname from "CH" subscript
 | 
|---|
| 78 |  ;           LA761 = pointer to topography file #61
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  ;   Returns  LA7Y = reference low^reference high^units^critcal low^critcal high^therapeutic low^therapeutic high
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ; Finds first entry in file #60 that is associated with this dataname.
 | 
|---|
| 83 |  N LA760,LA7X,LA7Y
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  S LA7Y=""
 | 
|---|
| 86 |  S LA760=+$O(^LAB(60,"C","CH;"_LA7SB_";1",0))
 | 
|---|
| 87 |  S LA7X=$G(^LAB(60,LA760,1,LA761,0))
 | 
|---|
| 88 |  S $P(LA7Y,"^")=$P(LA7X,"^",2)
 | 
|---|
| 89 |  S $P(LA7Y,"^",2)=$P(LA7X,"^",3)
 | 
|---|
| 90 |  S $P(LA7Y,"^",3)=$P(LA7X,"^",7)
 | 
|---|
| 91 |  S $P(LA7Y,"^",4)=$P(LA7X,"^",4)
 | 
|---|
| 92 |  S $P(LA7Y,"^",5)=$P(LA7X,"^",5)
 | 
|---|
| 93 |  S $P(LA7Y,"^",6)=$P(LA7X,"^",11)
 | 
|---|
| 94 |  S $P(LA7Y,"^",7)=$P(LA7X,"^",12)
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  Q LA7Y
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 | OKTOSND(LRSS,LRSB,LA760) ; Check if test ok to send - is (O)utput or (B)oth
 | 
|---|
| 100 |  ; Call with LRSS = file #63 subscript
 | 
|---|
| 101 |  ;           LRSB = file #63 data name or field reference
 | 
|---|
| 102 |  ;          LA760 = file #60 ien
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  ; Returns   LA7Y = 0-do not send, 1-yes-ok (default)
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  N LA760,LA7X,LA7Y
 | 
|---|
| 107 |  S LA7Y=1
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 |  ; If "CH" subscript check file #60 test's type that use this dataname
 | 
|---|
| 110 |  ; and if find one that is type "O" or "B" then set to yes.
 | 
|---|
| 111 |  I LRSS="CH" D
 | 
|---|
| 112 |  . I $G(LA760) D  Q
 | 
|---|
| 113 |  . . I "BO"'[$P(^LAB(60,LA760,0),"^",3) S LA7Y=0
 | 
|---|
| 114 |  . S (LA760,LA7X)=0
 | 
|---|
| 115 |  . F  S LA760=$O(^LAB(60,"C","CH;"_LRSB_";1",LA760)) Q:'LA760  D
 | 
|---|
| 116 |  . . I "BO"[$P(^LAB(60,LA760,0),"^",3) S LA7X=1
 | 
|---|
| 117 |  . S LA7Y=LA7X
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  Q LA7Y
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 | FAMG(LA76248,LA7TYP) ; Find alert mail group for this alert type
 | 
|---|
| 123 |  ; Call with LA76248 = ien of entry in file #62.48
 | 
|---|
| 124 |  ;            LA7TYP = type of alert
 | 
|---|
| 125 |  ;                     (1-new results)
 | 
|---|
| 126 |  ;                     (2-error on message)
 | 
|---|
| 127 |  ;                     (3-orders received)
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 |  ; Returns LA7MG = name of mail group
 | 
|---|
| 130 |  ;
 | 
|---|
| 131 |  N LA7MG,X,Y
 | 
|---|
| 132 |  S (LA7MG,X)=""
 | 
|---|
| 133 |  F  S X=$O(^LAHM(62.48,+$G(LA76248),20,"B",LA7TYP,X)) Q:'X  D
 | 
|---|
| 134 |  . S Y=$G(^LAHM(62.48,LA76248,20,X,0))
 | 
|---|
| 135 |  . I $P(Y,"^",2)'="" S LA7MG=$P(Y,"^",2) ; Send to mail group.
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 |  ; Fail safe mail group when no mail group specified
 | 
|---|
| 138 |  I LA7MG="" S LA7MG="LAB MESSAGING"
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 |  Q LA7MG
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 | ABFLAGS ;; HL7 Table 0078 Abnormal flags
 | 
|---|
| 144 |  ;;Below low normal;;
 | 
|---|
| 145 |  ;;Above high normal;;
 | 
|---|
| 146 |  ;;Below lower panic limits;;
 | 
|---|
| 147 |  ;;Above upper panic limits;;
 | 
|---|
| 148 |  ;;Below absolute low-off instrument scale;;
 | 
|---|
| 149 |  ;;Above absolute high-off instrument scale;;
 | 
|---|
| 150 |  ;;Normal;;
 | 
|---|
| 151 |  ;;Abnormal;;
 | 
|---|
| 152 |  ;;Very abnormal;;
 | 
|---|
| 153 |  ;;Significant change up;;
 | 
|---|
| 154 |  ;;Significant change down;;
 | 
|---|
| 155 |  ;;Better;;
 | 
|---|
| 156 |  ;;Worse;;
 | 
|---|
| 157 |  ;;Susceptible;;
 | 
|---|
| 158 |  ;;Resistant;;
 | 
|---|
| 159 |  ;;Intermediate;;
 | 
|---|
| 160 |  ;;Moderately susceptible;;
 | 
|---|
| 161 |  ;;Very susceptible;;
 | 
|---|