| 1 | LA7UTL1A ;HOIFO/BH - Microbiology Query Utility ; 3/11/03 10:45am
 | 
|---|
| 2 |  ;;5.2;AUTOMATED LAB INSTRUMENTS;**69**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | GETDATA(LRDFN,LASDT,LAEDT,LASEARCH,RESULTS) ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;    Input:
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  ;    LRDFN - Lab DFN
 | 
|---|
| 10 |  ;    LASDT - Search Start Date
 | 
|---|
| 11 |  ;    LAEDT - Search End Date
 | 
|---|
| 12 |  ;    LASEARCH - Set to CD (collection date) or RAD (completion date).
 | 
|---|
| 13 |  ;    RESULTS - Closed root destination array reference
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ;    Output:
 | 
|---|
| 16 |  ;    If an error is found with the input variables one for the
 | 
|---|
| 17 |  ;    strings will be returned.
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;       -1^Start date is after end date
 | 
|---|
| 20 |  ;       -2^No return array global
 | 
|---|
| 21 |  ;       -3^Global array only
 | 
|---|
| 22 |  ;       -4^No Patient lab DFN
 | 
|---|
| 23 |  ;       -5^No Start Date Range
 | 
|---|
| 24 |  ;       -6^No End Date Range
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;  If there are no errors with the input variables the processing
 | 
|---|
| 27 |  ;  will return '1'.  If there is no data in the passed in global
 | 
|---|
| 28 |  ;  there was no data available for the patient.
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ;  If there is data available for the patient the routine will pass 
 | 
|---|
| 31 |  ;  back the following data (the example assumes the passed in closed 
 | 
|---|
| 32 |  ;  root global was "^TMP($J)"):
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  ;  Fields .01 (Accession date),.05 (Site Specimen),.055 (Sample Type),
 | 
|---|
| 35 |  ;  .06 (Accession #),11.51 (Sterility Control),11.57 (Urine Screen),
 | 
|---|
| 36 |  ;  11.58 (Sputum Screen), 22 (TB RPT Date Approved), 23 (TB RPT Status),
 | 
|---|
| 37 |  ;  24 (ACID Fast Stain), 25 (Quantity) and .99 (Specimen Comment) from 
 | 
|---|
| 38 |  ;  the top node in the following format;
 | 
|---|
| 39 |  ;    
 | 
|---|
| 40 |  ;  ^TMP($J,LRDFN,Record_IEN,"0",Field #,"E" or "I")=Field Data
 | 
|---|
| 41 |  ;    
 | 
|---|
| 42 |  ;  Field .01 of sub file 63.29 - Gram Stain - in the following format
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; ^TMP($J,LRDFN,Record_IEN,"2",Sub File IEN,"0",Field #,"E" or "I")=Data
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  ;  Field .01 (Organism) and 1 (Quantity) of sub file 63.3 in the 
 | 
|---|
| 47 |  ;  following format;
 | 
|---|
| 48 |  ;  
 | 
|---|
| 49 |  ; ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"0",Field #,"E" or "I")=Data
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ;   Within the Organism data there is an antibiotic multiple.  The 
 | 
|---|
| 52 |  ;   routine returns the antibiotic (.01) along with the Mic (field #1) 
 | 
|---|
| 53 |  ;   and Mbc (field #2) from the sub file 63.32 in the following format;
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  ;   ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"3",Sub-Sub File IEN,"0"
 | 
|---|
| 56 |  ;   ,Field #,"E" or "I")=Data
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  ;  Organisms can potentially have specific antibiotics associated with 
 | 
|---|
| 60 |  ;  them. This API pulls any of the Antibiotics (along with their 
 | 
|---|
| 61 |  ;  interpretation and screen) that have been entered in the antibiotic
 | 
|---|
| 62 |  ;  fields that exist within the standard Lab DD.  Within this sub file
 | 
|---|
| 63 |  ;  these fields are numbered between 5 and 160.2 and have node numbers
 | 
|---|
| 64 |  ;  that begin with the numbers 2.00.
 | 
|---|
| 65 |  ;  It is also possible for sites to enter their own specific named 
 | 
|---|
| 66 |  ;  antibiotics within this multiple using a lab option.  This option 
 | 
|---|
| 67 |  ;  creates a new node number for the new antibiotic entry that is 
 | 
|---|
| 68 |  ;  comprised in the
 | 
|---|
| 69 |  ;  following way "2.00"_site #_n (where n is an incremented number).
 | 
|---|
| 70 |  ;  This node number also becomes the field number for this antibiotic.
 | 
|---|
| 71 |  ;  The interpretation and screen values of these antibiotics should
 | 
|---|
| 72 |  ;  follow a pattern where interpretation field number is comprised as
 | 
|---|
| 73 |  ;  follows "2.00"_site #_n_1 and the screen is "2.00"_site #_n_2.
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  ;  However only antibiotics have been entered in the standard Organism
 | 
|---|
| 76 |  ;  DD will get extracted.  Any antibiotics entered into the site 
 | 
|---|
| 77 |  ;  specified fields will not get extracted.
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 |  ;  ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"0",Field #,"I")=data
 | 
|---|
| 80 |  ;  ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"0",Field #,"E")=field name
 | 
|---|
| 81 |  ;                                                             ^data
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  ;  Note the "E" node contains the field name and it's related data.
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  ;    Within the Organism data there is a comment multiple which the
 | 
|---|
| 87 |  ;    routine also returns.  
 | 
|---|
| 88 |  ;    Field .01 Comment of sub file 63.31 in the following format;
 | 
|---|
| 89 |  ; 
 | 
|---|
| 90 |  ;   ^TMP($J,LRDFN,Record_IEN,"3",Sub File IEN,"1",Sub-Sub File IEN,"0"
 | 
|---|
| 91 |  ;   ,Field #,"E" or "I")=Data
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  ;  Field .01 Bact RPT Remark of sub file 63.33 in the following format;
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  ; ^TMP($J,LRDFN,Record_IEN,"4",Sub File IEN,"0",Field #,"E" or "I")=Data
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  ;  Field .01 Parasite of sub file 63.34 in the following format;
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  ; ^TMP($J,LRDFN,Record_IEN,"6",Sub File IEN,"0",Field #,"E" or "I")=Data
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  ;   Within Parasite data there is a stage code multiple that the routine
 | 
|---|
| 102 |  ;   also returns.
 | 
|---|
| 103 |  ;   Fields .01 Stage code and 1 Quantity of sub file 63.35 in the 
 | 
|---|
| 104 |  ;   following format;
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ;   ^TMP($J,LRDFN,Record_IEN,"6",Sub File IEN,"1",Sub-Sub File IEN,"0"
 | 
|---|
| 107 |  ;   ,Field #,"E" or "I")=Data
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 |  ;     Within the Stage Code multiple there can be a Stage Code Comment
 | 
|---|
| 110 |  ;     multiple that this routine also returns;
 | 
|---|
| 111 |  ;     Field .01 of the Stage Code Comment Multiple 63.351 in the 
 | 
|---|
| 112 |  ;     following format;
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  ;     
 | 
|---|
| 115 |  ;     ^TMP($J,LRDFN,Record_IEN,"6",Sub File IEN,"1",Sub-Sub File IEN,"1"
 | 
|---|
| 116 |  ;     ,Sub Sub Sub File IEN,"0",Field #,"E" or "I")=Data)
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  ;  Field .01 Parasite RPT Remark 63.36 in the following format;
 | 
|---|
| 119 |  ; 
 | 
|---|
| 120 |  ; ^TMP($J,LRDFN,Record_IEN,"7",Sub File IEN,"0",Field #,"E" or "I")=Data
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  ;  Field .01 Fungus/Yeast and field 1 Quantity of sub file 63.37 in the
 | 
|---|
| 123 |  ;  following format;
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 |  ; ^TMP($J,LRDFN,Record_IEN,"9",Sub File IEN,"0",Field #,"E" or "I")=Data
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  ;    Within the Fungus/Yeast data there is a comment multiple which the
 | 
|---|
| 128 |  ;    routine also returns.  
 | 
|---|
| 129 |  ;    Field .01 Comment of sub file 63.372 in the following format;
 | 
|---|
| 130 |  ;
 | 
|---|
| 131 |  ;   ^TMP($J,LRDFN,Record_IEN,"9",Sub File IEN,"1",Sub-Sub File IEN,"0"
 | 
|---|
| 132 |  ;   ,Field #,"E" or "I")=Data
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  ;  Field .01 Mycobacterium and field 1 Quantity of sub file 63.39 in 
 | 
|---|
| 136 |  ;  the following format;
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 |  ; ^TMP($J,LRDFN,Record_IEN,"12",Sub File IEN,"0",Field #,"E" or "I")
 | 
|---|
| 139 |  ;                                                                 =Data
 | 
|---|
| 140 |  ;  Mycobacterium can potentially have antibiotics associated with them. 
 | 
|---|
| 141 |  ;  This API pulls any of the Antibiotics that have been entered in the 
 | 
|---|
| 142 |  ;  antibiotic
 | 
|---|
| 143 |  ;  fields that exist within the standard Lab DD.  Within this sub file
 | 
|---|
| 144 |  ;  these fields are numbered between 5 and 55).
 | 
|---|
| 145 |  ;  It is also possible for sites to enter their own antibiotics
 | 
|---|
| 146 |  ;  within this multiple using a lab option.  This option creates a new
 | 
|---|
| 147 |  ;  node number for the new antibiotic entry that is comprised in the
 | 
|---|
| 148 |  ;  following way "2.00"_site #_n (where n is an incremented number).
 | 
|---|
| 149 |  ;  This node number also becomes the field number for this antibiotic.
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 |  ;  However only antibiotics have been entered in the standard 
 | 
|---|
| 152 |  ;  Mycobacterium antibiotic DD will get extracted.  Any antibiotics 
 | 
|---|
| 153 |  ;  entered into the site specified fields will not get extracted.
 | 
|---|
| 154 |  ;
 | 
|---|
| 155 |  ;  ^TMP($J,LRDFN,Record_IEN,"12",Sub File IEN,"0",Field #,"I")=data
 | 
|---|
| 156 |  ;  ^TMP($J,LRDFN,Record_IEN,"12",Sub File IEN,"0",Field #,"E")
 | 
|---|
| 157 |  ;                                                     =field name^data
 | 
|---|
| 158 |  ;
 | 
|---|
| 159 |  ;  Note the "E" node contains the field name and it's related data.
 | 
|---|
| 160 |  ;
 | 
|---|
| 161 |  ;
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  ;    Within the Mycobacterium data there is a comment multiple which the
 | 
|---|
| 164 |  ;    routine also returns.  
 | 
|---|
| 165 |  ;    Field .01 Comment of sub file 63.4 in the following format;
 | 
|---|
| 166 |  ;
 | 
|---|
| 167 |  ;   ^TMP($J,LRDFN,Record_IEN,"12",Sub File IEN,"1",Sub-Sub File IEN,"0"
 | 
|---|
| 168 |  ;   ,Field #,"E" or "I")=Data
 | 
|---|
| 169 |  ;
 | 
|---|
| 170 |  ;  Field .01 BACT Smear/Prep of sub file 63.291 in the following format;
 | 
|---|
| 171 |  ;
 | 
|---|
| 172 |  ; ^TMP($J,LRDFN,Record_IEN,"25",Sub File IEN,"0",Field #,"E" or "I")
 | 
|---|
| 173 |  ;                                                                = Data
 | 
|---|
| 174 |  ;
 | 
|---|
| 175 |  ;  Field .01 PARA Smear/Prep of sub file 63.341 in the following format;
 | 
|---|
| 176 |  ;
 | 
|---|
| 177 |  ; ^TMP($J,LRDFN,Record_IEN,"24",Sub File IEN,"0",Field #,"E" or "I")
 | 
|---|
| 178 |  ;                                                                =Data
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 |  ;  Field .01 VIRUS of sub file 63.43 in the following format;
 | 
|---|
| 181 |  ;
 | 
|---|
| 182 |  ; ^TMP($J,LRDFN,Record_IEN,"17",Sub File IEN,"0",Field #,"E" or "I")
 | 
|---|
| 183 |  ;                                                                 =Data
 | 
|---|
| 184 |  ;
 | 
|---|
| 185 |  ;
 | 
|---|
| 186 |  ; ---------------------------------------------------------------------
 | 
|---|
| 187 |  ;
 | 
|---|
| 188 |  N LAARRAY,LAINX,LATYP,LAFILE,LAARRET,LACD,LACDFLD,LACDTYP,LADATA,LASET,LASUB,LA763,LATYPE
 | 
|---|
| 189 |  ;
 | 
|---|
| 190 |  I LASDT>LAEDT Q "-1^Start date is after end date"
 | 
|---|
| 191 |  I '$D(RESULTS) Q "-2^No return array global"
 | 
|---|
| 192 |  I $E(RESULTS,1,1)'="^" Q "-3^Global array only"
 | 
|---|
| 193 |  I '+$G(LRDFN) Q "-4^No Patient lab DFN"
 | 
|---|
| 194 |  I '$G(LASDT) Q "-5^No Start Date Range"
 | 
|---|
| 195 |  I '$G(LAEDT) Q "-6^No End Date Range"
 | 
|---|
| 196 |  S LAFILE=63.05,LATYPE="MI"
 | 
|---|
| 197 |  ;
 | 
|---|
| 198 |  ; - Used for internal processing
 | 
|---|
| 199 |  S LAARRAY="^XTMP(""LA7UTL1A"",$J)"
 | 
|---|
| 200 |  ; - Passed in global reference, returns results
 | 
|---|
| 201 |  S LAARRET=$S($G(RESULTS)'="":RESULTS,1:"^TMP(""LA7UTL1A"","_$J_")")
 | 
|---|
| 202 |  K @LAARRAY,@LAARRET
 | 
|---|
| 203 |  I LASEARCH="RAD" D RAD
 | 
|---|
| 204 |  I LASEARCH="CD" D CD
 | 
|---|
| 205 |  ;
 | 
|---|
| 206 |  Q 1
 | 
|---|
| 207 |  ;
 | 
|---|
| 208 | CD ; Search by collection date
 | 
|---|
| 209 |  ;
 | 
|---|
| 210 |  N LRIDT,LRSS,LANSDT,LANEDT
 | 
|---|
| 211 |  ;
 | 
|---|
| 212 |  I LASDT S LANSDT=9999999-LASDT
 | 
|---|
| 213 |  I LAEDT S LANEDT=9999999-LAEDT
 | 
|---|
| 214 |  ;
 | 
|---|
| 215 |  S LRIDT=LANSDT
 | 
|---|
| 216 |  F  S LRIDT=$O(^LR(LRDFN,LATYPE,LRIDT),-1) Q:LRIDT=""!(LRIDT<LANEDT)  D
 | 
|---|
| 217 |  . D MI^LA7UTL1C(LRDFN,LRIDT,LAARRAY),ARRANGE^LA7UTL1B(LAARRAY,LAARRET)
 | 
|---|
| 218 |  ;
 | 
|---|
| 219 |  Q
 | 
|---|
| 220 |  ;
 | 
|---|
| 221 | RAD ; Search by completion date.
 | 
|---|
| 222 |  ;
 | 
|---|
| 223 |  N LRIDT
 | 
|---|
| 224 |  S LRIDT=0
 | 
|---|
| 225 |  F  S LRIDT=$O(^LR(LRDFN,LATYPE,LRIDT)) Q:'LRIDT  D
 | 
|---|
| 226 |  . S LA763(0)=$G(^LR(LRDFN,LATYPE,LRIDT,0))
 | 
|---|
| 227 |  . I $P(LA763(0),"^",3)>LASDT,$P(LA763(0),"^",3)<LAEDT D MI^LA7UTL1C(LRDFN,LRIDT,LAARRAY),ARRANGE^LA7UTL1B(LAARRAY,LAARRET)
 | 
|---|
| 228 |  Q
 | 
|---|
| 229 |  ;
 | 
|---|
| 230 |  ;
 | 
|---|
| 231 |  ;
 | 
|---|