| 1 | LA7VHLU2 ;DALOI/JMC - HL7 Segment Utility ;01/19/99  13:48
 | 
|---|
| 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**46,61,64**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | GETSEG(LA76249,LA7NODE,LA7ARR) ; Returns the next segment from file 62.49
 | 
|---|
| 7 |  ;   during processing of an inbound message. The following variables
 | 
|---|
| 8 |  ;   are used for the processing.
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; Call with  LA76249 - Entry in 62.49 where message is
 | 
|---|
| 11 |  ;            LA7NODE - Curent ien of "150" wp field
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ; Returns     LA7ARR - Data is returned in LA7ARR(0) and
 | 
|---|
| 14 |  ;                      LA7ARR(n) if segmemt is greater than 245 chars.
 | 
|---|
| 15 |  ;             LA7END - flag that end of message has been reached
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  N LA7I,LA7END,LA7QUIT
 | 
|---|
| 18 |  K LA7ARR
 | 
|---|
| 19 |  S LA76249=+$G(LA76249),LA7NODE=$G(LA7NODE,0),(LA7END,LA7QUIT)=0
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  S LA7NODE=$O(^LAHM(62.49,LA76249,150,LA7NODE))
 | 
|---|
| 22 |  I 'LA7NODE S LA7END=1
 | 
|---|
| 23 |  E  D
 | 
|---|
| 24 |  . S LA7ARR(0)=$G(^LAHM(62.49,LA76249,150,LA7NODE,0)),LA7I=0
 | 
|---|
| 25 |  . F  S LA7NODE=$O(^LAHM(62.49,LA76249,150,LA7NODE)) Q:'LA7NODE  D  Q:LA7QUIT
 | 
|---|
| 26 |  . . I $G(^LAHM(62.49,LA76249,150,LA7NODE,0))="" S LA7QUIT=1 Q
 | 
|---|
| 27 |  . . S LA7I=LA7I+1,LA7ARR(LA7I)=$G(^LAHM(62.49,LA76249,150,LA7NODE,0))
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  Q LA7END
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | FINDSITE(LA7Z,LA7TYPE,LA7SEM) ; Look up an institution in file #4
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ; Call with LA7Z = value to lookup 
 | 
|---|
| 35 |  ;                  VA: "VA"(optional) followed by 3-5 character VA site number
 | 
|---|
| 36 |  ;                  Non-VA uses 3-5 character site assigned identifier
 | 
|---|
| 37 |  ;          LA7TYPE = 1 (host facility)
 | 
|---|
| 38 |  ;                    2 (collection facility)
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  ;           LA7SEM = 0 (log error message)
 | 
|---|
| 41 |  ;                    1 (suppress error message)
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  ; Returns     LA7Y = ien of entry in INSTITUTION file (#4).
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  N LA7X,LA7Y
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  S LA7TYPE=$G(LA7TYPE),LA7Z=$G(LA7Z),LA7Y="",LA7SEM=$G(LA7SEM,1)
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ; If VA facility then strip off "VA" before lookup
 | 
|---|
| 50 |  I $E(LA7Z,1,2)="VA" S LA7X=$E(LA7Z,3,$L(LA7Z))
 | 
|---|
| 51 |  E  S LA7X=LA7Z
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  ; Lookup in INSTITUTION file (#4)
 | 
|---|
| 54 |  ; If appears to be a VA station number
 | 
|---|
| 55 |  I LA7Z?1(3N,3.4N2U,3N1U1N) S LA7Y=$$IDX^XUAF4("VASTANUM",LA7Z)
 | 
|---|
| 56 |  ; If appears to be a DoD DMIS number
 | 
|---|
| 57 |  I LA7Z?4N S LA7Y=$$IDX^XUAF4("DMIS",LA7Z)
 | 
|---|
| 58 |  ; Else try anything
 | 
|---|
| 59 |  I 'LA7Y S LA7Y=$$FIND1^DIC(4,"","OMX",LA7X)
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  ; If unable to find in INSTITUTION file (#4) then try looking in
 | 
|---|
| 62 |  ; SHIPPING CONFIGURATION file (#62.9) using non-VA identifier.
 | 
|---|
| 63 |  ; Check that entry is not a VA facility
 | 
|---|
| 64 |  I LA7Y'>0,LA7X]"" D
 | 
|---|
| 65 |  . N LA7J,LA7K
 | 
|---|
| 66 |  . S LA7J=0
 | 
|---|
| 67 |  . F  S LA7J=$O(^LAHM(62.9,LA7J)) Q:'LA7J  D  Q:LA7Y
 | 
|---|
| 68 |  . . S LA7J(0)=$G(^LAHM(62.9,LA7J,0))
 | 
|---|
| 69 |  . . I $P(LA7J(0),"^",4)'=1 Q  ; Not active
 | 
|---|
| 70 |  . . I $P(LA7J(0),"^",12)'=LA7X Q
 | 
|---|
| 71 |  . . S LA7K=$S(LA7TYPE=1:$P(LA7J(0),"^",3),LA7TYPE=2:$P(LA7J(0),"^",2),1:"")
 | 
|---|
| 72 |  . . I LA7K,$$NVAF(LA7K) S LA7Y=LA7K
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  ; No entry found
 | 
|---|
| 75 |  I 'LA7SEM,LA7Y'>0 D
 | 
|---|
| 76 |  . N LA7SITE
 | 
|---|
| 77 |  . S LA7SITE=$S(LA7TYPE=1:"Host",LA7TYPE=2:"Collection",1:"type")_" site: "_$S(LA7Z]"":LA7Z,1:"Blank-no value")
 | 
|---|
| 78 |  . N LA7X,LA7Y,LA7Z
 | 
|---|
| 79 |  . D CREATE^LA7LOG(25)
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  Q LA7Y
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | RETFACID(LA7Z,LA7TYPE,LA7SEM) ; (RET)urn (FAC)ility (ID)entifier
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  ; Call with LA7Z = ien of entry in INSTITUTION file (#4).
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  ;          LA7TYPE = 1 (host facility)
 | 
|---|
| 89 |  ;                    2 (collecting facility)
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  ;           LA7SEM = 0 (log error message)
 | 
|---|
| 92 |  ;                    1 (suppress error message)
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ; Returns     LA7Y = VA site number
 | 
|---|
| 95 |  ;                    non-VA site identifier
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  N I,LA7NVAF,LA7X,LA7Y
 | 
|---|
| 98 |  S LA7Y="",LA7SEM=$G(LA7SEM,1)
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ; Check identifiers on file.
 | 
|---|
| 101 |  ; If DoD use DMIS code since some DoD also have VA station number.
 | 
|---|
| 102 |  S LA7NVAF=$$NVAF(LA7Z)
 | 
|---|
| 103 |  I LA7NVAF=0 S LA7Y=$$ID^XUAF4("VASTANUM",LA7Z)
 | 
|---|
| 104 |  I LA7NVAF=1 S LA7Y=$$ID^XUAF4("DMIS",LA7Z)
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ; If unable to find in INSTITUTION file (#4) then try looking in
 | 
|---|
| 107 |  ; SHIPPING CONFIGURATION file (#62.9) using non-VA identifier.
 | 
|---|
| 108 |  I LA7Y="" D
 | 
|---|
| 109 |  . N LA7J
 | 
|---|
| 110 |  . S LA7J=0
 | 
|---|
| 111 |  . F  S LA7J=$O(^LAHM(62.9,LA7J)) Q:'LA7J  D
 | 
|---|
| 112 |  . . S LA7J(0)=$G(^LAHM(62.9,LA7J,0))
 | 
|---|
| 113 |  . . I $P(LA7J(0),"^",4)'=1 Q  ; Not active
 | 
|---|
| 114 |  . . I LA7TYPE=1,LA7Z=$P(LA7J(0),"^",3) S LA7Y=$P(LA7J(0),"^",12)
 | 
|---|
| 115 |  . . I LA7TYPE=2,LA7Z=$P(LA7J(0),"^",2) S LA7Y=$P(LA7J(0),"^",12)
 | 
|---|
| 116 |  . I LA7Y'="" S LA7Y=$$UP^XLFSTR(LA7Y)
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  ; No entry found
 | 
|---|
| 119 |  I 'LA7SEM,LA7Y="" D
 | 
|---|
| 120 |  . N LA7SITE
 | 
|---|
| 121 |  . S LA7SITE=$S(LA7TYPE=1:"Host",LA7TYPE=2:"Collection",1:"type")_" site: "_$$GET1^DIQ(4,LA7Z_",",.01)
 | 
|---|
| 122 |  . N LA7X,LA7Y
 | 
|---|
| 123 |  . D CREATE^LA7LOG(25)
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 |  Q LA7Y
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 | FNDOLOC(LRUID) ; Find ordering location
 | 
|---|
| 129 |  ; Call with LRUID = Accession's UID
 | 
|---|
| 130 |  ; Returns    LA7Y = ordering location^ordering institution
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  N LRAA,LRAD,LRAN,LA7X,LA7Y,X,Y
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 |  S LA7Y=""
 | 
|---|
| 135 |  S X=$Q(^LRO(68,"C",LRUID))
 | 
|---|
| 136 |  I $QS(X,3)'=LRUID Q LA7Y
 | 
|---|
| 137 |  S LA7X=$P($G(^LRO(68,$QS(X,4),1,$QS(X,5),1,$QS(X,6),0)),"^",13)
 | 
|---|
| 138 |  I 'LA7X Q LA7Y
 | 
|---|
| 139 |  D GETS^DIQ(44,LA7X_",",".01;3","EI","LA7Y")
 | 
|---|
| 140 |  S LA7Y=LA7X_"^"_LA7Y(44,LA7X_",",.01,"E")_"^"_LA7Y(44,LA7X_",",3,"I")_"^"_LA7Y(44,LA7X_",",3,"E")
 | 
|---|
| 141 |  Q LA7Y
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  ;
 | 
|---|
| 144 | CHKICN(LA7X) ; Lookup patient using ICN
 | 
|---|
| 145 |  ; Call with LA7X = patient's ICN
 | 
|---|
| 146 |  ; Returns   LA7Y = patient's DFN^full ICN
 | 
|---|
| 147 |  ;                  -1^error message
 | 
|---|
| 148 |  ;
 | 
|---|
| 149 |  ; Note - until MPI can handle full ICN (number,"V" and checksum) as lookup value
 | 
|---|
| 150 |  ; then confirm if full ICN passed in with full ICN from MPI.
 | 
|---|
| 151 |  ;
 | 
|---|
| 152 |  N LA7Y,LA7Z
 | 
|---|
| 153 |  ;
 | 
|---|
| 154 |  S (LA7Y,LA7Z)=""
 | 
|---|
| 155 |  S LA7X(1)=$P(LA7X,"V")
 | 
|---|
| 156 |  S LA7X(2)=$P(LA7X,"V",2)
 | 
|---|
| 157 |  I LA7X(2)="" S LA7Y=$$GETDFN^MPIF001(LA7X(1))
 | 
|---|
| 158 |  E  D
 | 
|---|
| 159 |  . S LA7Y=$$GETDFN^MPIF001(LA7X(1))
 | 
|---|
| 160 |  . S LA7Z=$$GETICN^MPIF001(LA7Y)
 | 
|---|
| 161 |  . I LA7X'=LA7Z S LA7Y="-1^Not a valid ICN"
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  Q LA7Y_"^"_LA7Z
 | 
|---|
| 164 |  ;
 | 
|---|
| 165 |  ;
 | 
|---|
| 166 | NVAF(LA7X) ; Set flag sending to non-VA facility.
 | 
|---|
| 167 |  ; Used to code certain segments for other systems, i.e. CHCS-DOD.
 | 
|---|
| 168 |  ; Call with LA7X = ien of institution in file #4
 | 
|---|
| 169 |  ; Returns   LA7Y = 0 (VA facility)
 | 
|---|
| 170 |  ;                  1 (DoD facility - Army, Navy, Air Force)
 | 
|---|
| 171 |  ;                  2 (Indian Health Service)
 | 
|---|
| 172 |  ;                  3 (Other - non US Government)
 | 
|---|
| 173 |  ;
 | 
|---|
| 174 |  N LA7Y
 | 
|---|
| 175 |  S LA7Y=""
 | 
|---|
| 176 |  I LA7X S LA7Y=$$GET1^DIQ(4,LA7X_",",95,"I")
 | 
|---|
| 177 |  S LA7Y=$S(LA7Y="N":1,LA7Y="AF":1,LA7Y="ARMY":1,LA7Y="I":2,LA7Y="O":3,1:0)
 | 
|---|
| 178 |  Q LA7Y
 | 
|---|