source: ccr/trunk/p/C0CVITAL.m@ 562

Last change on this file since 562 was 562, checked in by George Lilly, 15 years ago

small bug fix in Vitals and better null result checking in C0CCCR

File size: 20.3 KB
Line 
1C0CVITAL ; CCDCCR/CJE/GPL - CCR/CCD PROCESSING FOR VITALS ; 07/16/08
2 ;;1.0;C0C;;May 19, 2009;
3 ;Copyright 2008,2009 George Lilly, University of Minnesota and others.
4 ;Licensed under the terms of the GNU General Public License.
5 ;See attached copy of the License.
6 ;
7 ;This program is free software; you can redistribute it and/or modify
8 ;it under the terms of the GNU General Public License as published by
9 ;the Free Software Foundation; either version 2 of the License, or
10 ;(at your option) any later version.
11 ;
12 ;This program is distributed in the hope that it will be useful,
13 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ;GNU General Public License for more details.
16 ;
17 ;You should have received a copy of the GNU General Public License along
18 ;with this program; if not, write to the Free Software Foundation, Inc.,
19 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 ;
21 W "NO ENTRY FROM TOP",!
22 Q
23 ;
24EXTRACT(VITXML,DFN,VITOUTXML) ; EXTRACT VITALS INTO PROVIDED XML TEMPLATE
25 ;
26 ; VITXML AND OUTXML ARE PASSED BY NAME SO GLOBALS CAN BE USED
27 ; IVITXML CONTAINS ONLY THE VITALS SECTION OF THE OVERALL TEMPLATE
28 ;
29 N VITRSLT,J,K,VITPTMP,X,VITVMAP,TBUF,VORDR
30 S C0CVLMT=$$GET^C0CPARMS("VITLIMIT") ; GET THE LIMIT PARM
31 S C0CVSTRT=$$GET^C0CPARMS("VITSTART") ; GET START PARM
32 D DT^DILF(,C0CVLMT,.C0CEDT) ;
33 D DT^DILF(,C0CVSTRT,.C0CSDT) ;
34 W "VITALS START: ",C0CVSTRT," LIMIT: ",C0CVLMT,!
35 I $$SYSNAME^C0CSYS()="RPMS" D VITRPMS E D VITVISTA
36 Q
37 ;
38VITVISTA ; EXTRACT VITALS FROM VISTA INTO PROVIDED XML TEMPLATE
39 D VITALS^ORQQVI(.VITRSLT,DFN,C0CSDT,C0CEDT)
40 I '$D(VITRSLT(1)) S @VITOUTXML@(0)=0 Q ; RETURN NOT FOUND AND QUIT
41 I $P(VITRSLT(1),U,2)="No vitals found." D Q ; NULL RESULT FROM RPC
42 . I DEBUG W "NO VITALS FOUND FROM VITALS RPC",!
43 . S @VITOUTXML@(0)=0
44 I $P(VITRSLT(1),U,2)="No vitals found." Q ; QUIT
45 ; ZWR RPCRSLT
46 S VITTVMAP=$NA(^TMP("C0CCCR",$J,"VITALS"))
47 S VITTARYTMP=$NA(^TMP("C0CCCR",$J,"VITALARYTMP"))
48 K @VITTVMAP,@VITTARYTMP ; KILL OLD ARRAY VALUES
49 N VSORT,VDATES,VCNT ; ARRAY FOR DATE SORTED VITALS INDEX
50 D VITDVISTA(.VDATES) ; PULL OUT THE DATES INTO AN ARRAY
51 ; I DEBUG ZWR VDATES ;DEBUG
52 S VCNT=$$SORTDT^C0CUTIL(.VSORT,.VDATES,-1) ; PUT VITALS IN REVERSE
53 ; DATE ORDER AND COUNT THEM. VSORT CONTAINS INDIRECT INDEXES ONLY
54 S @VITTVMAP@(0)=VCNT ; SAVE NUMBER OF VITALS
55 F J=1:1:VCNT D ; FOR EACH VITAL IN THE LIST
56 . I $D(VITRSLT(VSORT(J))) D
57 . . S VITVMAP=$NA(@VITTVMAP@(J))
58 . . K @VITVMAP
59 . . I DEBUG W "VMAP= ",VITVMAP,!
60 . . S VITPTMP=VITRSLT(VSORT(J)) ; DATE SORTED VITAL FROM RETURN ARRAY
61 . . I DEBUG W "VITAL ",VSORT(J),!
62 . . I DEBUG W VITRSLT(VSORT(J))," ",$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT"),!
63 . . I DEBUG W $P(VITPTMP,U,4),!
64 . . S @VITVMAP@("VITALSIGNSDATAOBJECTID")="VITAL"_J ; UNIQUE OBJID
65 . . I $P(VITPTMP,U,2)="HT" D
66 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
67 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
68 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="HEIGHT"
69 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
70 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
71 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
72 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="HEIGHT"
73 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="248327008"
74 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
75 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
76 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^GMR(120.5,$P(VITPTMP,U,1),0),U,6)
77 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P(VITPTMP,U,3)
78 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")="in"
79 . . E I $P(VITPTMP,U,2)="WT" D
80 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
81 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
82 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="WEIGHT"
83 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
84 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
85 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
86 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="WEIGHT"
87 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="107647005"
88 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
89 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
90 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^GMR(120.5,$P(VITPTMP,U,1),0),U,6)
91 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P(VITPTMP,U,3)
92 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")="lbs"
93 . . E I $P(VITPTMP,U,2)="BP" D
94 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
95 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
96 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="BLOOD PRESSURE"
97 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
98 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
99 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
100 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="BLOOD PRESSURE"
101 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="392570002"
102 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
103 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
104 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^GMR(120.5,$P(VITPTMP,U,1),0),U,6)
105 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P(VITPTMP,U,3)
106 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=""
107 . . E I $P(VITPTMP,U,2)="T" D
108 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
109 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
110 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="TEMPERATURE"
111 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
112 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
113 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
114 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="TEMPERATURE"
115 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="309646008"
116 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
117 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
118 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^GMR(120.5,$P(VITPTMP,U,1),0),U,6)
119 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P(VITPTMP,U,3)
120 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")="F"
121 . . E I $P(VITPTMP,U,2)="R" D
122 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
123 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
124 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="RESPIRATION"
125 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
126 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
127 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
128 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="RESPIRATION"
129 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="366147009"
130 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
131 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
132 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^GMR(120.5,$P(VITPTMP,U,1),0),U,6)
133 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P(VITPTMP,U,3)
134 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=""
135 . . E I $P(VITPTMP,U,2)="P" D
136 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
137 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
138 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="PULSE"
139 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
140 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
141 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
142 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="PULSE"
143 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="366199006"
144 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
145 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
146 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^GMR(120.5,$P(VITPTMP,U,1),0),U,6)
147 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P(VITPTMP,U,3)
148 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=""
149 . . E I $P(VITPTMP,U,2)="PN" D
150 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
151 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
152 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="PAIN"
153 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
154 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
155 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
156 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="PAIN"
157 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="22253000"
158 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
159 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
160 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^GMR(120.5,$P(VITPTMP,U,1),0),U,6)
161 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P(VITPTMP,U,3)
162 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=""
163 . . E D
164 . . . ;W "IN VITAL: OTHER",!
165 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
166 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
167 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="OTHER VITAL"
168 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
169 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
170 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="UNKNOWN"
171 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="OTHER"
172 . . . ;S @VITVMAP@("VITALSIGNSDESCCODEVALUE")=""
173 . . . ;S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")=""
174 . . . ;S @VITVMAP@("VITALSIGNSCODEVERSION")=""
175 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^GMR(120.5,$P(VITPTMP,U,1),0),U,6)
176 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P(VITPTMP,U,3)
177 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")="UNKNOWN"
178 . . S VITARYTMP=$NA(@VITTARYTMP@(J))
179 . . K @VITARYTMP
180 . . D MAP^C0CXPATH(VITXML,VITVMAP,VITARYTMP)
181 . . I J=1 D ; FIRST ONE IS JUST A COPY
182 . . . ; W "FIRST ONE",!
183 . . . D CP^C0CXPATH(VITARYTMP,VITOUTXML)
184 . . . I DEBUG W "VITOUTXML ",VITOUTXML,!
185 . . I J>1 D ; AFTER THE FIRST, INSERT INNER XML
186 . . . D INSINNER^C0CXPATH(VITOUTXML,VITARYTMP)
187 ; ZWR ^TMP($J,"VITALS",*)
188 ; ZWR ^TMP($J,"VITALARYTMP",*) ; SHOW THE RESULTS
189 I DEBUG D PARY^C0CXPATH(VITOUTXML)
190 N VITTMP,I
191 D MISSING^C0CXPATH(VITOUTXML,"VITTMP") ; SEARCH XML FOR MISSING VARS
192 I VITTMP(0)>0 D ; IF THERE ARE MISSING VARS - MARKED AS @@X@@
193 . W "VITALS MISSING ",!
194 . F I=1:1:VITTMP(0) W VITTMP(I),!
195 Q
196 ;
197VITRPMS ; EXTRACT VITALS FROM RPMS INTO PROVIDED XML TEMPLATE
198 ; RPMS VITAL RPC ONLY RETURNS LATEST VITAL IN SPECIFIED DATE RANGE NOT ALL VITALS IN DATE RANGE
199 ; WE NEED TO SETUP THE VARIABLES THE INTERNAL CALL NEEDS TO BYPASS A HARD CODE OF ONE VITAL
200 N END,START,DATA
201 S END=C0CVLMT,START=C0CVSTRT
202 ; RPC OUTPUT FORMAT:
203 ; vfile ien^vital name^vital abbr^date/time taken(FM FORMAT)^value+units (US & metric)
204 D QUERY^BEHOVM("LISTX") ; RUN QUERY VITALS CALL
205 I '$D(^TMP("CIAVMRPC",$J)) S @VITOUTXML@(0)=0 Q ; RETURN NOT FOUND AND QUIT
206 ;ZW ^TMP("CIAVMRPC",$J)
207 S VITTVMAP=$NA(^TMP("C0CCCR",$J,"VITALS"))
208 S VITTARYTMP=$NA(^TMP("C0CCCR",$J,"VITALARYTMP"))
209 K @VITTVMAP,@VITTARYTMP ; KILL OLD ARRAY VALUES
210 N VSORT,VDATES,VCNT ; ARRAY FOR DATE SORTED VITALS INDEX
211 D VITDRPMS(.VDATES) ; PULL OUT THE DATES INTO AN ARRAY
212 S VCNT=$$SORTDT^C0CUTIL(.VSORT,.VDATES,-1) ; PUT VITALS IN REVERSE
213 ; DATE ORDER AND COUNT THEM. VSORT CONTAINS INDIRECT INDEXES ONLY
214 S @VITTVMAP@(0)=VCNT ; SAVE NUMBER OF VITALS
215 F J=1:1:VCNT D ; FOR EACH VITAL IN THE LIST
216 . I $D(^TMP("CIAVMRPC",$J,0,(VSORT(J)))) D
217 . . S VITVMAP=$NA(@VITTVMAP@(J))
218 . . K @VITVMAP
219 . . I DEBUG W "VMAP= ",VITVMAP,!
220 . . S VITPTMP=^TMP("CIAVMRPC",$J,0,(VSORT(J))) ; DATE SORTED VITAL FROM RETURN ARRAY
221 . . I DEBUG W "VITAL ",VSORT(J),!
222 . . I DEBUG W ^TMP("CIAVMRPC",$J,0,(VSORT(J)))," ",$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT"),!
223 . . I DEBUG W $P(VITPTMP,U,4),!
224 . . S @VITVMAP@("VITALSIGNSDATAOBJECTID")="VITAL"_J ; UNIQUE OBJID
225 . . I $P(VITPTMP,U,3)="HT" D
226 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
227 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
228 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="HEIGHT"
229 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
230 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
231 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
232 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="HEIGHT"
233 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="248327008"
234 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
235 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
236 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^AUPNVMSR($P(VITPTMP,U,1),12),U,4)
237 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P($P(VITPTMP,U,5)," ",1)
238 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")="in"
239 . . E I $P(VITPTMP,U,3)="WT" D
240 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
241 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
242 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="WEIGHT"
243 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
244 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
245 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
246 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="WEIGHT"
247 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="107647005"
248 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
249 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
250 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^AUPNVMSR($P(VITPTMP,U,1),12),U,4)
251 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P($P(VITPTMP,U,5)," ",1)
252 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")="lbs"
253 . . E I $P(VITPTMP,U,3)="BP" D
254 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
255 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
256 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="BLOOD PRESSURE"
257 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
258 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
259 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
260 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="BLOOD PRESSURE"
261 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="392570002"
262 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
263 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
264 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^AUPNVMSR($P(VITPTMP,U,1),12),U,4)
265 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P($P(VITPTMP,U,5)," ",1)
266 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=""
267 . . E I $P(VITPTMP,U,3)="TMP" D
268 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
269 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
270 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="TEMPERATURE"
271 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
272 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
273 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
274 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="TEMPERATURE"
275 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="309646008"
276 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
277 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
278 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^AUPNVMSR($P(VITPTMP,U,1),12),U,4)
279 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P($P(VITPTMP,U,5)," ",1)
280 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")="F"
281 . . E I $P(VITPTMP,U,3)="RS" D
282 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
283 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
284 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="RESPIRATION"
285 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
286 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
287 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
288 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="RESPIRATION"
289 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="366147009"
290 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
291 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
292 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^AUPNVMSR($P(VITPTMP,U,1),12),U,4)
293 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P($P(VITPTMP,U,5)," ",1)
294 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=""
295 . . E I $P(VITPTMP,U,3)="PU" D
296 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
297 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
298 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="PULSE"
299 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
300 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
301 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
302 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="PULSE"
303 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="366199006"
304 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
305 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
306 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^AUPNVMSR($P(VITPTMP,U,1),12),U,4)
307 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P($P(VITPTMP,U,5)," ",1)
308 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=""
309 . . E I $P(VITPTMP,U,3)="PA" D
310 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
311 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
312 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="PAIN"
313 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
314 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
315 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
316 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")="PAIN"
317 . . . S @VITVMAP@("VITALSIGNSDESCCODEVALUE")="22253000"
318 . . . S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")="SNOMED"
319 . . . S @VITVMAP@("VITALSIGNSCODEVERSION")=""
320 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^AUPNVMSR($P(VITPTMP,U,1),12),U,4)
321 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P($P(VITPTMP,U,5)," ",1)
322 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=""
323 . . E D
324 . . . ;W "IN VITAL: OTHER",!
325 . . . S @VITVMAP@("VITALSIGNSDATETIMETYPETEXT")="OBSERVED"
326 . . . S @VITVMAP@("VITALSIGNSEXACTDATETIME")=$$FMDTOUTC^C0CUTIL($P(VITPTMP,U,4),"DT")
327 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")=$P(VITPTMP,U,2)
328 . . . S @VITVMAP@("VITALSIGNSSOURCEACTORID")="ACTORSYSTEM_1"
329 . . . S @VITVMAP@("VITALSIGNSTESTOBJECTID")="VITALTEST"_J
330 . . . S @VITVMAP@("VITALSIGNSTESTTYPETEXT")="OBSERVED"
331 . . . S @VITVMAP@("VITALSIGNSDESCRIPTIONTEXT")=$P(VITPTMP,U,2)
332 . . . ;S @VITVMAP@("VITALSIGNSDESCCODEVALUE")=""
333 . . . ;S @VITVMAP@("VITALSIGNSDESCCODINGSYSTEM")=""
334 . . . ;S @VITVMAP@("VITALSIGNSCODEVERSION")=""
335 . . . S @VITVMAP@("VITALSIGNSTESTSOURCEACTORID")="ACTORPROVIDER_"_$P(^AUPNVMSR($P(VITPTMP,U,1),12),U,4)
336 . . . S @VITVMAP@("VITALSIGNSTESTRESULTVALUE")=$P($P(VITPTMP,U,5)," ",1)
337 . . . S @VITVMAP@("VITALSIGNSTESTRESULTUNIT")=$P($P(VITPTMP,U,5)," ",2)
338 . . S VITARYTMP=$NA(@VITTARYTMP@(J))
339 . . K @VITARYTMP
340 . . D MAP^C0CXPATH(VITXML,VITVMAP,VITARYTMP)
341 . . I J=1 D ; FIRST ONE IS JUST A COPY
342 . . . ; W "FIRST ONE",!
343 . . . D CP^C0CXPATH(VITARYTMP,VITOUTXML)
344 . . . I DEBUG W "VITOUTXML ",VITOUTXML,!
345 . . I J>1 D ; AFTER THE FIRST, INSERT INNER XML
346 . . . D INSINNER^C0CXPATH(VITOUTXML,VITARYTMP)
347 ; ZWR ^TMP($J,"VITALS",*)
348 ; ZWR ^TMP($J,"VITALARYTMP",*) ; SHOW THE RESULTS
349 I DEBUG D PARY^C0CXPATH(VITOUTXML)
350 N VITTMP,I
351 D MISSING^C0CXPATH(VITOUTXML,"VITTMP") ; SEARCH XML FOR MISSING VARS
352 I VITTMP(0)>0 D ; IF THERE ARE MISSING VARS - MARKED AS @@X@@
353 . W "VITALS MISSING ",!
354 . F I=1:1:VITTMP(0) W VITTMP(I),!
355 Q
356 ;
357 ;VITDATES(VDT) ; VDT IS PASSED BY REFERENCE AND WILL CONTAIN THE ARRAY
358 ; OF DATES IN THE VITALS RESULTS
359 ;N VDTI,VDTJ,VTDCNT
360 ;S VTDCNT=0 ; COUNT TO BUILD ARRAY
361 ;S VDTJ="" ; USED TO VISIT THE RESULTS
362 ;I $$SYSNAME^C0CSYS()="RPMS" D VITDRPMS E D VITDVISTA
363 ;
364VITDRPMS(VDT) ; RUN DATE SORTING ALGORITHM FOR RPMS
365 ; VDT IS PASSED BY REFERENCE AND WILL CONTAIN THE ARRAY
366 ; OF DATES IN THE VITALS RESULTS
367 N VDTI,VDTJ,VTDCNT
368 S VTDCNT=0 ; COUNT TO BUILD ARRAY
369 S VDTJ="" ; USED TO VISIT THE RESULTS
370 F VDTI=0:0 D Q:$O(^TMP("CIAVMRPC",$J,0,VDTJ))="" ; VISIT ALL RESULTS
371 . S VDTJ=$O(^TMP("CIAVMRPC",$J,0,VDTJ)) ; NEXT RESULT
372 . S VTDCNT=VTDCNT+1 ; INCREMENT COUNTER
373 . S VDT(VTDCNT)=$P(^TMP("CIAVMRPC",$J,0,VDTJ),U,4) ; PULL OUT THE DATE
374 S VDT(0)=VTDCNT
375 Q
376 ;
377VITDVISTA(VDT) ; RUN DATE SORTING ALGORITHM FOR VISTA
378 ; VDT IS PASSED BY REFERENCE AND WILL CONTAIN THE ARRAY
379 ; OF DATES IN THE VITALS RESULTS
380 N VDTI,VDTJ,VTDCNT
381 S VTDCNT=0 ; COUNT TO BUILD ARRAY
382 S VDTJ="" ; USED TO VISIT THE RESULTS
383 F VDTI=0:0 D Q:$O(VITRSLT(VDTJ))="" ; VISIT ALL RESULTS
384 . S VDTJ=$O(VITRSLT(VDTJ)) ; NEXT RESULT
385 . S VTDCNT=VTDCNT+1 ; INCREMENT COUNTER
386 . S VDT(VTDCNT)=$P(VITRSLT(VDTJ),U,4) ; PULL OUT THE DATE
387 S VDT(0)=VTDCNT
388 Q
389 ;
Note: See TracBrowser for help on using the repository browser.