| [613] | 1 | LA7SMU2 ;DALOI/JMC - Shipping Manifest Utility (Cont'd);5/5/97 14:44
 | 
|---|
 | 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**46,64**;Sep 27, 1994
 | 
|---|
 | 3 |  Q
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 | DTTO(LA7SCFG,LA7VNLT,LA7HLSC,LA764NCS,LA761NCS,LA7HLPRI,LA7CSC) ; Determine test to order
 | 
|---|
 | 6 |  ; Call with LA7SCFG = ien of Shipping Configuration file #62.9
 | 
|---|
 | 7 |  ;           LA7VNLT = NLT code or non-VA test code
 | 
|---|
 | 8 |  ;           LA7HLSC = HL7 Specimen Code
 | 
|---|
 | 9 |  ;          LA764NCS = HL7 Name of Test Coding System
 | 
|---|
 | 10 |  ;          LA761NCS = HL7 Name of Specimen Coding System
 | 
|---|
 | 11 |  ;          LA7HLPRI = HL7 Priority Code
 | 
|---|
 | 12 |  ;            LA7CSC = collection sample code^name^coding system
 | 
|---|
 | 13 |  ;
 | 
|---|
 | 14 |  ; Returns      LA7X = 0^0^0^0^^^ (if unsuccessful)
 | 
|---|
 | 15 |  ;                     LABORATORY TEST (ien file #60)^TOPOGRAPHY (ien file #61)^COLLECTION SAMPLE (ien file #62)^URGENCY (ien file #62.05)^NLT TEST CODE^NLT TEST NAME
 | 
|---|
 | 16 |  ;
 | 
|---|
 | 17 |  N LA760,LA7V64,LA7X,X,Y,Z
 | 
|---|
 | 18 |  ;
 | 
|---|
 | 19 |  ; Make sure variables initialized.
 | 
|---|
 | 20 |  S LA7X="0^0^0^0^^^"
 | 
|---|
 | 21 |  I LA7VNLT="" Q LA7X
 | 
|---|
 | 22 |  S LA7SCFG=+$G(LA7SCFG)
 | 
|---|
 | 23 |  I LA7HLPRI="" S LA7HLPRI="R"
 | 
|---|
 | 24 |  I LA7HLSC="" S LA7HLSC="XXX"
 | 
|---|
 | 25 |  ; 
 | 
|---|
 | 26 |  ; If coding systems not defined then assume
 | 
|---|
 | 27 |  ; HL7 Table 0070 and VA NLT file
 | 
|---|
 | 28 |  I LA761NCS="0070" S LA761NCS="HL70070"
 | 
|---|
 | 29 |  I LA761NCS="" S LA761NCS="HL70070"
 | 
|---|
 | 30 |  I LA764NCS="" S LA764NCS="99VA64"
 | 
|---|
 | 31 |  I LA764NCS="L",$P(^LAHM(62.9,LA7SCFG,0),"^",15)=0 S LA764NCS="99VA64"
 | 
|---|
 | 32 |  ;
 | 
|---|
 | 33 |  ; Build index of tests if not previously done for this session.
 | 
|---|
 | 34 |  I '$D(^TMP("LA7TC",$J,LA7SCFG)) D BINDX
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  ; Found test info with priority
 | 
|---|
 | 37 |  I LA7HLPRI]"" D
 | 
|---|
 | 38 |  . I $P(LA7CSC,"^")'="" D  Q:LA7X
 | 
|---|
 | 39 |  . . S X=$G(^TMP("LA7TC",$J,LA7SCFG,LA7VNLT,LA7HLSC,LA7HLPRI,$P(LA7CSC,"^")))
 | 
|---|
 | 40 |  . . I X S LA7X=X
 | 
|---|
 | 41 |  . S X=$G(^TMP("LA7TC",$J,LA7SCFG,LA7VNLT,LA7HLSC,LA7HLPRI))
 | 
|---|
 | 42 |  . I X S LA7X=X Q
 | 
|---|
 | 43 |  . S X=$G(^TMP("LA7TC",$J,LA7SCFG,LA7VNLT,"XXX",LA7HLPRI))
 | 
|---|
 | 44 |  . I X,"MISPCYEM"[$P(^LAB(60,+X,0),"^",4) S LA7X=X
 | 
|---|
 | 45 |  ;
 | 
|---|
 | 46 |  ; Found test info with no priority specified
 | 
|---|
 | 47 |  I 'LA7X D
 | 
|---|
 | 48 |  . I $P(LA7CSC,"^")'="" D  Q:LA7X
 | 
|---|
 | 49 |  . . S X=$G(^TMP("LA7TC",$J,LA7SCFG,LA7VNLT,LA7HLSC,0,$P(LA7CSC,"^")))
 | 
|---|
 | 50 |  . . I X S LA7X=X
 | 
|---|
 | 51 |  . S X=$G(^TMP("LA7TC",$J,LA7SCFG,LA7VNLT,LA7HLSC))
 | 
|---|
 | 52 |  . I X S LA7X=X Q
 | 
|---|
 | 53 |  . S X=$G(^TMP("LA7TC",$J,LA7SCFG,LA7VNLT,"XXX"))
 | 
|---|
 | 54 |  . I X,"MISPCYEM"[$P(^LAB(60,+X,0),"^",4) S LA7X=X
 | 
|---|
 | 55 |  ;
 | 
|---|
 | 56 |  ; Otherwise get values from files #60 LABORATORY TEST and #61, TOPOGRAPHY
 | 
|---|
 | 57 |  ; Lookup test using NLT code and get first lab test in "AC" for this
 | 
|---|
 | 58 |  ; NLT code that's type (I)nput or (B)oth.
 | 
|---|
 | 59 |  I 'LA7X,LA764NCS="99VA64" D
 | 
|---|
 | 60 |  . S LA7V64=$O(^LAM("E",LA7VNLT,0)),Y=0 Q:'LA7V64
 | 
|---|
 | 61 |  . F  S Y=$O(^LAB(60,"AC",LA7V64,Y)) Q:'Y  Q:"BI"[$P(^LAB(60,Y,0),"^",3)
 | 
|---|
 | 62 |  . I Y S $P(LA7X,"^")=Y
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 |  ; Get default topography and collection sample for HL7 specimen type.
 | 
|---|
 | 65 |  ; Check file #60 collection samples first, then check first entry in file #61 for match
 | 
|---|
 | 66 |  ; If non-table 0070 then look for "XXX" in table 0070
 | 
|---|
 | 67 |  I $P(LA7X,"^"),'$P(LA7X,"^",2),LA761NCS="HL70070" D
 | 
|---|
 | 68 |  . S (X,Y)=0,LA760=$P(LA7X,"^")
 | 
|---|
 | 69 |  . F  S X=$O(^LAB(60,LA760,3,"B",X)) Q:'X  D  Q:Y
 | 
|---|
 | 70 |  . . S Z=$P(^LAB(62,X,0),"^",2)
 | 
|---|
 | 71 |  . . I Z,$D(^LAB(61,"HL7",LA7HLSC,Z)) S Y=Z_"^"_X
 | 
|---|
 | 72 |  . I Y S $P(LA7X,"^",2,3)=Y
 | 
|---|
 | 73 |  I '$P(LA7X,"^",2),LA761NCS="HL70070" D
 | 
|---|
 | 74 |  . S X=$O(^LAB(61,"HL7",LA7HLSC,0)) Q:'X
 | 
|---|
 | 75 |  . S $P(LA7X,"^",2)=X
 | 
|---|
 | 76 |  . I '$P(LA7X,"^",3) S $P(LA7X,"^",3)=$P(^LAB(61,X,0),"^",6)
 | 
|---|
 | 77 |  I $P(LA7X,"^"),'$P(LA7X,"^",2),LA761NCS'="HL70070","MISPCYEM"[$P(^LAB(60,$P(LA7X,"^"),0),"^",4) D
 | 
|---|
 | 78 |  . S X=$O(^LAB(61,"HL7","XXX",0))
 | 
|---|
 | 79 |  . I X S $P(LA7X,"^",2)=X
 | 
|---|
 | 80 |  ;
 | 
|---|
 | 81 |  ; No urgency mapping, get last using this HL7 code or site's default urgency from #69.9
 | 
|---|
 | 82 |  ; Find highest non-workload urgency using this priority code else use site's default
 | 
|---|
 | 83 |  I '$P(LA7X,"^",4) D
 | 
|---|
 | 84 |  . S X=$O(^LAB(62.05,"HL7",LA7HLPRI,50),-1)
 | 
|---|
 | 85 |  . I X S $P(LA7X,"^",4)=X
 | 
|---|
 | 86 |  . E  S $P(LA7X,"^",4)=+$P($G(^LAB(69.9,1,3)),"^",2)
 | 
|---|
 | 87 |  ;
 | 
|---|
 | 88 |  ; Check file #60 forced and highest urgency.
 | 
|---|
 | 89 |  I $P(LA7X,"^"),$P(LA7X,"^",4) D
 | 
|---|
 | 90 |  . S X=$G(^LAB(60,$P(LA7X,"^"),0))
 | 
|---|
 | 91 |  . I $P(X,"^",18) S $P(LA7X,"^",4)=$P(X,"^",18)
 | 
|---|
 | 92 |  . I $P(X,"^",16),$P(LA7X,"^",4)<$P(X,"^",16) S $P(LA7X,"^",4)=$P(X,"^",16)
 | 
|---|
 | 93 |  ;
 | 
|---|
 | 94 |  Q LA7X
 | 
|---|
 | 95 |  ;
 | 
|---|
 | 96 |  ;
 | 
|---|
 | 97 | BINDX ; Build index of tests for a shipping configuration.
 | 
|---|
 | 98 |  ; Called from above.
 | 
|---|
 | 99 |  ;
 | 
|---|
 | 100 |  I '$D(^LAHM(62.9,LA7SCFG,0)) Q
 | 
|---|
 | 101 |  N LA760,LA761,LA762,LA76205,LA764,LA7HL,LA7NLT,LA7NLTN,LA7TC,LA7X
 | 
|---|
 | 102 |  S LA7X=0
 | 
|---|
 | 103 |  F  S LA7X=$O(^LAHM(62.9,LA7SCFG,60,LA7X)) Q:'LA7X  D BLD
 | 
|---|
 | 104 |  Q
 | 
|---|
 | 105 |  ;
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 | BLD ; Build TMP global for a test
 | 
|---|
 | 108 |  ; Called from above
 | 
|---|
 | 109 |  ;
 | 
|---|
 | 110 |  S LA7X(0)=$G(^LAHM(62.9,LA7SCFG,60,LA7X,0))
 | 
|---|
 | 111 |  S LA7X(5)=$G(^LAHM(62.9,LA7SCFG,60,LA7X,5))
 | 
|---|
 | 112 |  ;
 | 
|---|
 | 113 |  ; Laboratory test/collection sample.
 | 
|---|
 | 114 |  S LA760=$P(LA7X(0),"^"),LA762=$P(LA7X(0),"^",9)
 | 
|---|
 | 115 |  ; Incomplete entry.
 | 
|---|
 | 116 |  I 'LA760!('LA762) Q
 | 
|---|
 | 117 |  ;
 | 
|---|
 | 118 |  ; Test urgency/HL7 priority code.
 | 
|---|
 | 119 |  S LA76205=$P(LA7X(0),"^",4),LA76205("HL")=""
 | 
|---|
 | 120 |  I LA76205 S LA76205("HL")=$$GET1^DIQ(62.05,LA76205_",","LEDI HL7:HL7 ABBR")
 | 
|---|
 | 121 |  ;
 | 
|---|
 | 122 |  ; Topography
 | 
|---|
 | 123 |  S LA761=$$GET1^DIQ(62,LA762_",",2,"I")
 | 
|---|
 | 124 |  I 'LA761,"BBCH"[$P(^LAB(60,LA760,0),"^",4) Q  ; Incomplete entry.
 | 
|---|
 | 125 |  ; Handle MI with no topography associated with collection sample.
 | 
|---|
 | 126 |  I 'LA761,$P(^LAB(60,LA760,0),"^",4)="MI"  S LA761=+$P(LA7X(0),"^",3)
 | 
|---|
 | 127 |  ;
 | 
|---|
 | 128 |  ; Use HL7 specimen code if using table 0070 else use mapping in 62.9
 | 
|---|
 | 129 |  S LA7HL=""
 | 
|---|
 | 130 |  I LA761NCS="HL70070" S LA7HL=$$GET1^DIQ(61,LA761_",","LEDI HL7:HL7 ABBR")
 | 
|---|
 | 131 |  I LA7HL="" S LA7HL=$P(LA7X(5),"^",3)
 | 
|---|
 | 132 |  ;
 | 
|---|
 | 133 |  ; File #64 ien/NLT code/NLT code test name.
 | 
|---|
 | 134 |  ; Use NLT code if using VA coding else use non-VA test order code.
 | 
|---|
 | 135 |  S LA764=+$$GET1^DIQ(60,LA760_",",64,"I")
 | 
|---|
 | 136 |  S LA7NLT=$$GET1^DIQ(64,LA764_",",1)
 | 
|---|
 | 137 |  S LA7NLTN=$$GET1^DIQ(64,LA764_",",.01)
 | 
|---|
 | 138 |  I LA764NCS="99VA64" S LA7TC=LA7NLT
 | 
|---|
 | 139 |  E  S LA7TC=$P(LA7X(5),"^")
 | 
|---|
 | 140 |  ;
 | 
|---|
 | 141 |  ; Set TMP global with information
 | 
|---|
 | 142 |  I LA7HL'="",LA7TC'="" D
 | 
|---|
 | 143 |  . I "MISPCYEM"[$P(^LAB(60,LA760,0),"^",4),$P(LA7X(5),"^",7)'="" D
 | 
|---|
 | 144 |  . . S ^TMP("LA7TC",$J,LA7SCFG,LA7TC,LA7HL,0,$P(LA7X(5),"^",7))=LA760_"^"_LA761_"^"_LA762_"^^"_LA7NLT_"^"_LA7NLTN
 | 
|---|
 | 145 |  . E  S ^TMP("LA7TC",$J,LA7SCFG,LA7TC,LA7HL)=LA760_"^"_LA761_"^"_LA762_"^^"_LA7NLT_"^"_LA7NLTN
 | 
|---|
 | 146 |  . I LA76205("HL")'="" D
 | 
|---|
 | 147 |  . . I "MISPCYEM"[$P(^LAB(60,LA760,0),"^",4),$P(LA7X(5),"^",7)'="" D
 | 
|---|
 | 148 |  . . . S ^TMP("LA7TC",$J,LA7SCFG,LA7TC,LA7HL,LA76205("HL"),$P(LA7X(5),"^",7))=LA760_"^"_LA761_"^"_LA762_"^"_LA76205_"^"_LA7NLT_"^"_LA7NLTN
 | 
|---|
 | 149 |  . . E  S ^TMP("LA7TC",$J,LA7SCFG,LA7TC,LA7HL,LA76205("HL"))=LA760_"^"_LA761_"^"_LA762_"^"_LA76205_"^"_LA7NLT_"^"_LA7NLTN
 | 
|---|
 | 150 |  ;
 | 
|---|
 | 151 |  ; Set TMP global when collection sample does not have a topography.
 | 
|---|
 | 152 |  ; Used for "MISPCYEM" subscripts which can have collection sample with no tpopgraphy.
 | 
|---|
 | 153 |  I LA7TC'="",'LA761,"MISPCYEM"[$P(^LAB(60,LA760,0),"^",4) D
 | 
|---|
 | 154 |  . S ^TMP("LA7TC",$J,LA7SCFG,LA7TC,"XXX")=LA760_"^"_LA761_"^"_LA762_"^^"_LA7NLT_"^"_LA7NLTN
 | 
|---|
 | 155 |  . I LA76205("HL")'="" S ^TMP("LA7TC",$J,LA7SCFG,LA7TC,"XXX",LA76205("HL"))=LA760_"^"_LA761_"^"_LA762_"^"_LA76205_"^"_LA7NLT_"^"_LA7NLTN
 | 
|---|
 | 156 |  ;
 | 
|---|
 | 157 |  Q
 | 
|---|