| 1 | LA7VORM ;DALOI/DLR - LAB ORM (Order) message PROCESSOR ; April 13, 2004
 | 
|---|
| 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**27,42,46,64**;Sep 27, 1994
 | 
|---|
| 3 | IN ;
 | 
|---|
| 4 |  D ORM^LA7VHL
 | 
|---|
| 5 |  Q
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | OBR ;;OBR
 | 
|---|
| 8 |  N LA760,LA76205,LA7629,LA7ACC,LA7CEDT,LA7CSCS,LA7CSNM,LA7CSTY,LA7DCODE,LA7HSITE,LA7I,LA7NCS,LA7OTST,LA7OTSTN,LA7PF1,LA7PF2,LA7RCI,LA7SPCS,LA7SPNM,LA7SPTY,LA7USID,LA7X,LA7Y,RTST,RTSTN
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; OBR Set ID
 | 
|---|
| 11 |  S LA7SOBR=$$P^LA7VHLU(.LA7SEG,2,LA7FS)
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ; Placer order number
 | 
|---|
| 14 |  S LA7SID=$$P^LA7VHLU(.LA7SEG,3,LA7FS)
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ; Universal service ID
 | 
|---|
| 17 |  S LA7USID=$$P^LA7VHLU(.LA7SEG,5,LA7FS)
 | 
|---|
| 18 |  S LA7OTSTN=$P(LA7USID,LA7CS)
 | 
|---|
| 19 |  I LA7OTSTN="" D  Q
 | 
|---|
| 20 |  . N LA7X
 | 
|---|
| 21 |  . S LA7X="PID-"_LA7SPID_"/OBR-"_LA7SOBR
 | 
|---|
| 22 |  . D CREATE^LA7LOG(26)
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  S LA7OTST=$$UNESC^LA7VHLU3($P(LA7USID,LA7CS,2),LA7FS_LA7ECH)
 | 
|---|
| 25 |  S LA7NCS=$P(LA7USID,LA7CS,3) ; Name of coding system
 | 
|---|
| 26 |  S RTSTN=$P(LA7USID,LA7CS,4)
 | 
|---|
| 27 |  S RTST=$$UNESC^LA7VHLU3($P(LA7USID,LA7CS,5),LA7FS_LA7ECH)
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  ; No ORC segment
 | 
|---|
| 30 |  I LA7SEQ<20 D  Q
 | 
|---|
| 31 |  . D CREATE^LA7LOG(29)
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  ; Missing patient name
 | 
|---|
| 34 |  I $G(LA7PNM)="" D  Q
 | 
|---|
| 35 |  . D CREATE^LA7LOG(30)
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  ; Non-VA system, not using NLT codes/file #60 tests
 | 
|---|
| 38 |  I LA7NCS'="99VA64" D
 | 
|---|
| 39 |  . I RTSTN="" S RTSTN=LA7OTST
 | 
|---|
| 40 |  . I RTST="" S RTST=LA7OTSTN
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  ; Specimen collection date/time
 | 
|---|
| 43 |  S LA7CDT=$$HL7TFM^XLFDT($P($$P^LA7VHLU(.LA7SEG,8,LA7FS),LA7CS),"L")
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ; Specimen end collection date/time (timed collection)
 | 
|---|
| 46 |  S LA7CEDT=$$HL7TFM^XLFDT($P($$P^LA7VHLU(.LA7SEG,9,LA7FS),LA7CS),"L")
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  ; Collection volume
 | 
|---|
| 49 |  S LA7VOL=""
 | 
|---|
| 50 |  S LA7X=$$P^LA7VHLU(.LA7SEG,10,LA7FS)
 | 
|---|
| 51 |  I $L($P(LA7X,LA7CS)) D
 | 
|---|
| 52 |  . S $P(LA7VOL,"^")=$P(LA7X,LA7CS) ; volume
 | 
|---|
| 53 |  . S $P(LA7VOL,"^",2)=$P(LA7X,LA7CS,2) ; volume units
 | 
|---|
| 54 |  . S $P(LA7VOL,"^",3)=$P(LA7X,LA7CS,3) ; volume coding system
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  ; Specimen action code
 | 
|---|
| 57 |  S LA7X=$$P^LA7VHLU(.LA7SEG,12,LA7FS),LA7SAC=""
 | 
|---|
| 58 |  I LA7X="A" S LA7SAC="Add ordered tests to the existing specimen"
 | 
|---|
| 59 |  I LA7X="G" S LA7SAC="Generated order; reflex order"
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  ; Danger code
 | 
|---|
| 62 |  S LA7X=$P($$P^LA7VHLU(.LA7SEG,13,LA7FS),LA7CS,2)
 | 
|---|
| 63 |  S LA7DCODE=$$UNESC^LA7VHLU3(LA7X,LA7FS_LA7ECH)
 | 
|---|
| 64 |  I LA7DCODE]"" D
 | 
|---|
| 65 |  . S LA7DCODE=$$TRIM^XLFSTR(LA7DCODE,"RL"," ")
 | 
|---|
| 66 |  . S LA7DCODE="Danger Code - "_LA7DCODE
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ; Relevant clinical information
 | 
|---|
| 69 |  S LA7X=$$P^LA7VHLU(.LA7SEG,14,LA7FS)
 | 
|---|
| 70 |  S LA7RCI=$$UNESC^LA7VHLU3(LA7X,LA7FS_LA7ECH)
 | 
|---|
| 71 |  I LA7RCI]"" D
 | 
|---|
| 72 |  . S LA7RCI=$$TRIM^XLFSTR(LA7RCI,"RL"," ")
 | 
|---|
| 73 |  . S LA7RCI="Relevant clinical information - "_LA7RCI
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  ; Specimen source -  specimen code - name of specimen coding system
 | 
|---|
| 76 |  ; If no primary then try alternate
 | 
|---|
| 77 |  S LA7X=$$P^LA7VHLU(.LA7SEG,16,LA7FS)
 | 
|---|
| 78 |  S LA7SPTY=$P($P(LA7X,LA7CS),$E(LA7ECH,4))
 | 
|---|
| 79 |  S LA7SPNM=$P($P(LA7X,LA7CS),$E(LA7ECH,4),2)
 | 
|---|
| 80 |  S LA7SPCS=$P($P(LA7X,LA7CS),$E(LA7ECH,4),3)
 | 
|---|
| 81 |  I LA7SPTY="" D
 | 
|---|
| 82 |  . S LA7SPTY=$P($P(LA7X,LA7CS),$E(LA7ECH,4),4)
 | 
|---|
| 83 |  . S LA7SPNM=$P($P(LA7X,LA7CS),$E(LA7ECH,4),5)
 | 
|---|
| 84 |  . S LA7SPCS=$P($P(LA7X,LA7CS),$E(LA7ECH,4),6)
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  ; Collection sample from body site
 | 
|---|
| 87 |  S LA7CSTY=$P($P(LA7X,LA7CS,4),$E(LA7ECH,4))
 | 
|---|
| 88 |  S LA7CSNM=$P($P(LA7X,LA7CS,4),$E(LA7ECH,4),2)
 | 
|---|
| 89 |  S LA7CSCS=$P($P(LA7X,LA7CS,4),$E(LA7ECH,4),3)
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  ; Placer's ordering provider (last name, first name, mi [id])
 | 
|---|
| 92 |  ; Only process if LA7POP from ORC-12 is blank.
 | 
|---|
| 93 |  I LA7POP="" D
 | 
|---|
| 94 |  . S LA7X=$$P^LA7VHLU(.LA7SEG,17,LA7FS)
 | 
|---|
| 95 |  . S LA7POP=$$XCNTFM^LA7VHLU4(LA7X,LA7ECH)
 | 
|---|
| 96 |  . I LA7POP="^^" S LA7POP=""
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ; Specimen urgency
 | 
|---|
| 99 |  S LA7UR=$P($$P^LA7VHLU(.LA7SEG,28,LA7FS),LA7CS,6)
 | 
|---|
| 100 |  ; If no urgency see if it came in ORC-7
 | 
|---|
| 101 |  I LA7UR="" S LA7UR=$G(LA7OUR)
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ; Look for receiving facility in OBR, then use receiving facility from MSH
 | 
|---|
| 104 |  S LA7X=$P($$P^LA7VHLU(.LA7SEG,35,LA7FS),LA7CS,7)
 | 
|---|
| 105 |  S LA7HSITE=$$FINDSITE^LA7VHLU2(LA7X,1,1)
 | 
|---|
| 106 |  I LA7HSITE'>0 S LA7HSITE=$$FINDSITE^LA7VHLU2(LA7RFAC,1,0)
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 |  ; Find an "active" shipping configuration for this pair.
 | 
|---|
| 109 |  S LA7629=0
 | 
|---|
| 110 |  I LA7CSITE,LA7HSITE D
 | 
|---|
| 111 |  . N LA7X
 | 
|---|
| 112 |  . S LA7X=0
 | 
|---|
| 113 |  . F  S LA7X=$O(^LAHM(62.9,"CH",LA7CSITE,LA7HSITE,LA7X)) Q:'LA7X  I $P($G(^LAHM(62.9,LA7X,0)),"^",4) S LA7629=LA7X Q
 | 
|---|
| 114 |  ; Log error and quit if no active shipping configuration identified
 | 
|---|
| 115 |  I 'LA7629 D  Q
 | 
|---|
| 116 |  . D CREATE^LA7LOG(39)
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  S LA7Y=$$DTTO^LA7SMU2(LA7629,LA7OTSTN,LA7SPTY,LA7NCS,LA7SPCS,LA7UR,LA7CSTY_"^"_LA7CSNM_"^"_LA7CSCS)
 | 
|---|
| 119 |  S LA760=$P(LA7Y,"^"),LA761=$P(LA7Y,"^",2),LA762=$P(LA7Y,"^",3),LA76205=$P(LA7Y,"^",4)
 | 
|---|
| 120 |  I $P(LA7Y,"^",5)'="" S LA7OTSTN=$P(LA7Y,"^",5),LA7OTST=$P(LA7Y,"^",6)
 | 
|---|
| 121 |  F LA7I=1:1:4 I '$P(LA7Y,"^",LA7I) D
 | 
|---|
| 122 |  . I LA7I=3,LA760,"MISPCYEM"[$P(^LAB(60,LA760,0),"^",4) Q
 | 
|---|
| 123 |  . S LA7X="No local "_$P("lab test^topography^collection sample^urgency","^",LA7I)_" mapped."
 | 
|---|
| 124 |  . N LA7I,LA7Y
 | 
|---|
| 125 |  . D CREATE^LA7LOG(47)
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  ; Placer fields 1 & 2
 | 
|---|
| 128 |  S LA7X=$$P^LA7VHLU(.LA7SEG,19,LA7FS)
 | 
|---|
| 129 |  I LA7X'="",LA7X[LA7CS S LA7X=$TR(LA7X,LA7CS,"^")
 | 
|---|
| 130 |  S LA7PF1=$$UNESC^LA7VHLU3(LA7X,LA7FS_LA7ECH)
 | 
|---|
| 131 |  S LA7X=$$P^LA7VHLU(.LA7SEG,20,LA7FS)
 | 
|---|
| 132 |  I LA7X'="",LA7X[LA7CS S LA7X=$TR(LA7X,LA7CS,"^")
 | 
|---|
| 133 |  S LA7PF2=$$UNESC^LA7VHLU3(LA7X,LA7FS_LA7ECH)
 | 
|---|
| 134 |  S LA7ACC=$P(LA7PF2,"^",6)
 | 
|---|
| 135 |  ;
 | 
|---|
| 136 |  ; New order - add to LAB PENDING ORDERS file #69.6
 | 
|---|
| 137 |  I LA7OTYPE="NW" D NW
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  Q
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 | NW ; Create new order in LAB PENDING ORDERS file #69.6
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  N FDA,I,LA76964,LA7DIE,LA7I,LA7IEN,LA7PATID,LA7SSITE,LA7STAT,LA7WP
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 |  ; Get lock on 69.6
 | 
|---|
| 146 |  L +^LRO(69.6,0):99999
 | 
|---|
| 147 |  I '$T D  Q
 | 
|---|
| 148 |  . D CREATE^LA7LOG(31)
 | 
|---|
| 149 |  ;
 | 
|---|
| 150 |  S LA7696=$O(^LRO(69.6,"AD",$S($P(LA7SM,"^",2)'="":$P(LA7SM,"^",2),1:0),LA7SID,0))
 | 
|---|
| 151 |  ;
 | 
|---|
| 152 |  ; Find "In-Transit" status in #64.061
 | 
|---|
| 153 |  S LA7STAT=$$FIND1^DIC(64.061,"","OMX","In-Transit","","I $P(^LAB(64.061,Y,0),U,7)=""U""")
 | 
|---|
| 154 |  ;
 | 
|---|
| 155 |  ; Create entry in LAB PENDING ORDER ENTRY file, log error if not added
 | 
|---|
| 156 |  I $G(LA7696)'>0 D
 | 
|---|
| 157 |  . S FDA(1,69.6,"+1,",.01)=LA7PNM
 | 
|---|
| 158 |  . S FDA(1,69.6,"+1,",6)=LA7STAT
 | 
|---|
| 159 |  . D UPDATE^DIE("","FDA(1)","LA7IEN","LA7DIE(1)")
 | 
|---|
| 160 |  . S LA7696=LA7IEN(1)
 | 
|---|
| 161 |  . I LA7696<1 D CREATE^LA7LOG(32)
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  L -^LRO(69.6,0)
 | 
|---|
| 164 |  I LA7696<1 Q
 | 
|---|
| 165 |  ;
 | 
|---|
| 166 |  L +^LRO(69.6,LA7696):99999
 | 
|---|
| 167 |  I '$T D  Q  ;cannot get lock on ENTRY in 69.6
 | 
|---|
| 168 |  . D CREATE^LA7LOG(33)
 | 
|---|
| 169 |  ;
 | 
|---|
| 170 |  ; Prevent duplication of tests
 | 
|---|
| 171 |  I $D(^LRO(69.6,LA7696,2,"C",LA7OTSTN)) D UNLOCK Q
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 |  ; Determine entry in INSTITUTION file (#4) that's the sending site.
 | 
|---|
| 174 |  S LA7SSITE=$$FINDSITE^LA7VHLU2(LA7SFAC,2,0)
 | 
|---|
| 175 |  ;
 | 
|---|
| 176 |  ; Patient id to store with order
 | 
|---|
| 177 |  S LA7PATID=LA7SSN
 | 
|---|
| 178 |  I LA7PATID="" D
 | 
|---|
| 179 |  . S LA7PATID=$P($G(LA7PTID3(1)),$E(LA7ECH))
 | 
|---|
| 180 |  . I LA7PATID'="" Q
 | 
|---|
| 181 |  . I LA7PTID4'="" S LA7PATID=$P($P(LA7PTID4,$E(LA7ECH,2)),$E(LA7ECH))
 | 
|---|
| 182 |  . I LA7PATID'="" Q
 | 
|---|
| 183 |  . I LA7PTID2'="" S LA7PATID=$P(LA7PTID2,$E(LA7ECH))
 | 
|---|
| 184 |  ;
 | 
|---|
| 185 |  S FDA(2,69.6,LA7696_",",.01)=LA7PNM
 | 
|---|
| 186 |  S FDA(2,69.6,LA7696_",",.02)=LA7SEX
 | 
|---|
| 187 |  S FDA(2,69.6,LA7696_",",.03)=LA7DOB
 | 
|---|
| 188 |  I $G(LA7PRACE)'="" S FDA(2,69.6,LA7696_",",.06)=LA7PRACE
 | 
|---|
| 189 |  S FDA(2,69.6,LA7696_",",.09)=LA7PATID
 | 
|---|
| 190 |  S FDA(2,69.6,LA7696_",",1)=LA7SSITE
 | 
|---|
| 191 |  S FDA(2,69.6,LA7696_",",2)=LA7CSITE
 | 
|---|
| 192 |  S FDA(2,69.6,LA7696_",",3)=LA7SID
 | 
|---|
| 193 |  S FDA(2,69.6,LA7696_",",3.2)=LA7ACC
 | 
|---|
| 194 |  I LA761 S FDA(2,69.6,LA7696_",",4)=LA761
 | 
|---|
| 195 |  I LA762 S FDA(2,69.6,LA7696_",",5)=LA762
 | 
|---|
| 196 |  S FDA(2,69.6,LA7696_",",10)=LA7ORDT
 | 
|---|
| 197 |  S FDA(2,69.6,LA7696_",",11)=LA7CDT
 | 
|---|
| 198 |  S FDA(2,69.6,LA7696_",",11.1)=LA7CEDT
 | 
|---|
| 199 |  S FDA(2,69.6,LA7696_",",14)=LA7MEDT
 | 
|---|
| 200 |  S FDA(2,69.6,LA7696_",",17)=LA7MID
 | 
|---|
| 201 |  I $P(LA7SM,"^",2)'="" S LA7X=$P(LA7SM,"^",2)
 | 
|---|
| 202 |  E  S LA7X=LA7SFAC_"-"_$E($$FMTHL7^XLFDT(LA7MEDT),1,8)
 | 
|---|
| 203 |  S FDA(2,69.6,LA7696_",",18)=LA7X
 | 
|---|
| 204 |  S FDA(2,69.6,LA7696_",",700)=LA7FS_LA7ECH
 | 
|---|
| 205 |  I LA7PTID3'="" S FDA(2,69.6,LA7696_",",700.02)=LA7PTID3
 | 
|---|
| 206 |  I LA7PTID4'="" S FDA(2,69.6,LA7696_",",700.04)=LA7PTID4
 | 
|---|
| 207 |  D FILE^DIE("","FDA(2)","LA7DIE(2)")
 | 
|---|
| 208 |  ;
 | 
|---|
| 209 |  ; Add test to order
 | 
|---|
| 210 |  S FDA(3,69.64,"+2,"_LA7696_",",.01)=LA7OTST
 | 
|---|
| 211 |  S FDA(3,69.64,"+2,"_LA7696_",",1)=LA7OTSTN
 | 
|---|
| 212 |  S FDA(3,69.64,"+2,"_LA7696_",",2)=RTST
 | 
|---|
| 213 |  S FDA(3,69.64,"+2,"_LA7696_",",3)=RTSTN
 | 
|---|
| 214 |  S FDA(3,69.64,"+2,"_LA7696_",",4)=LA7UR
 | 
|---|
| 215 |  I LA760 S FDA(3,69.64,"+2,"_LA7696_",",11)=LA760
 | 
|---|
| 216 |  I LA76205 S FDA(3,69.64,"+2,"_LA7696_",",12)=LA76205
 | 
|---|
| 217 |  I $P(LA7POP,"^",3)'="" S FDA(3,69.64,"+2,"_LA7696_",",13)=$P(LA7POP,"^",3)
 | 
|---|
| 218 |  I LA7USID'="" S FDA(3,69.64,"+2,"_LA7696_",",700.04)=LA7USID
 | 
|---|
| 219 |  I LA7PF1'="" S FDA(3,69.64,"+2,"_LA7696_",",700.18)=LA7PF1
 | 
|---|
| 220 |  I LA7PF2'="" S FDA(3,69.64,"+2,"_LA7696_",",700.19)=LA7PF2
 | 
|---|
| 221 |  D UPDATE^DIE("","FDA(3)","LA76964","LA7DIE(3)")
 | 
|---|
| 222 |  ;
 | 
|---|
| 223 |  ; If no test status - set to In-transit.
 | 
|---|
| 224 |  I $G(LA76964(2)),$P($G(^LRO(69.6,LA7696,2,LA76964(2),0)),"^",6)="" D
 | 
|---|
| 225 |  . S FDA(4,69.64,LA76964(2)_","_LA7696_",",5)=LA7STAT
 | 
|---|
| 226 |  . D FILE^DIE("","FDA(4)","LA7DIE(4)")
 | 
|---|
| 227 |  ;
 | 
|---|
| 228 |  ; Check for comments to store with order.
 | 
|---|
| 229 |  ; Begin sections with <space> to avoid FM word wrap.
 | 
|---|
| 230 |  S LA7I=1
 | 
|---|
| 231 |  I 'LA760 S LA7WP(LA7I,0)="For test "_LA7OTST
 | 
|---|
| 232 |  E  S LA7WP(LA7I,0)="For test "_$$GET1^DIQ(60,LA760_",",.01)
 | 
|---|
| 233 |  ;
 | 
|---|
| 234 |  I LA7SAC'="" S LA7I=LA7I+1,LA7WP(LA7I,0)=" "_LA7SAC
 | 
|---|
| 235 |  ;
 | 
|---|
| 236 |  I LA7DCODE'="" F I=1:250:$L(LA7DCODE) S LA7I=LA7I+1,LA7WP(LA7I,0)=$S(I=1:" ",1:"")_$E(LA7DCODE,I,I+249)
 | 
|---|
| 237 |  ;
 | 
|---|
| 238 |  I LA7RCI'="" F I=1:250:$L(LA7RCI) S LA7I=LA7I+1,LA7WP(LA7I,0)=$S(I=1:" ",1:"")_$E(LA7RCI,I,I+249)
 | 
|---|
| 239 |  ;
 | 
|---|
| 240 |  I LA760,"MISPCYEM"[$P(^LAB(60,LA760,0),"^",4) D
 | 
|---|
| 241 |  . S LA7I=LA7I+1,LA7WP(LA7I,0)=" Specimen source: "_LA7SPNM_" ["_LA7SPCS_": "_LA7SPTY_"]"
 | 
|---|
| 242 |  . S LA7I=LA7I+1,LA7WP(LA7I,0)=" Collection sample: "_LA7CSNM_" ["_LA7CSCS_": "_LA7CSTY_"]"
 | 
|---|
| 243 |  ;
 | 
|---|
| 244 |  I $O(LA7WP(1)) D WP^DIE(69.6,LA7696_",",99,"A","LA7WP","LA7DIE(99)")
 | 
|---|
| 245 |  ;
 | 
|---|
| 246 |  D CLEAN^DILF
 | 
|---|
| 247 |  D UNLOCK
 | 
|---|
| 248 |  Q
 | 
|---|
| 249 |  ;
 | 
|---|
| 250 | UNLOCK ; unlock entry in file #69.6
 | 
|---|
| 251 |  L -^LRO(69.6,LA7696)
 | 
|---|
| 252 |  Q
 | 
|---|