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 | ;
|
---|