1 | MDKRPC1 ;HIOFO/FT-RPC to return patient data ;2/19/08 13:13
|
---|
2 | ;;1.0;CLINICAL PROCEDURES;**6**;Apr 01, 2004;Build 102
|
---|
3 | ;
|
---|
4 | ; This routine uses the following IAs:
|
---|
5 | ; #1239 - ^PXRHS03 (controlled)
|
---|
6 | ; #1240 - ^PXRHS04 (private)
|
---|
7 | ; #1625 - ^XUA4A72 (supported)
|
---|
8 | ; #2263 - ^XPAR (supported)
|
---|
9 | ; #2864 - ^TIUPP3 calls (controlled)
|
---|
10 | ; #3065 - ^XLFNAME (supported)
|
---|
11 | ; #3556 - ^LA7QRY (controlled)
|
---|
12 | ; #10035 - ^DPT global refs (supported)
|
---|
13 | ; #10060 - ^FILE 200 refs (supported)
|
---|
14 | ; #10099 - ^GMRADPT calls (supported)
|
---|
15 | ; #10103 - ^XLFDT calls (supported)
|
---|
16 | ; #4868 - VA(200,"AUSER" (Private)
|
---|
17 | ;
|
---|
18 | RPC(RESULT,OPTION,DATA) ; RPC to return existing VistA patient data for
|
---|
19 | ; renal dialysis data entry.
|
---|
20 | ; RPC: [MDK GET VISTA DATA]
|
---|
21 | ;
|
---|
22 | ; Input parameters
|
---|
23 | ; 1. RESULT [Reference/Required] RPC Return array
|
---|
24 | ; 2. OPTION [Literal/Required] RPC Option to execute
|
---|
25 | ; 3. DATA [Literal/Required] Other data as required for call
|
---|
26 | ;
|
---|
27 | K RESULT
|
---|
28 | D:$T(@OPTION)]"" @OPTION
|
---|
29 | S:'$D(RESULT) RESULT(0)="-1^No results returned"
|
---|
30 | Q
|
---|
31 | DEMO ; demographic
|
---|
32 | N DFN,MDKNODE0,MDKSSN
|
---|
33 | S DFN=$G(DATA)
|
---|
34 | I '$G(DFN) D Q
|
---|
35 | .S RESULT(0)="-1^DFN is not defined"
|
---|
36 | .Q
|
---|
37 | I '$D(^DPT(DFN,0)) D Q
|
---|
38 | .S RESULT(0)="-1^Patient not found"
|
---|
39 | .Q
|
---|
40 | S MDKNODE0=$G(^DPT(DFN,0))
|
---|
41 | S RESULT(1)=$P(MDKNODE0,U,1) ;name
|
---|
42 | S RESULT(2)=$P(MDKNODE0,U,9) ;ssn
|
---|
43 | S RESULT(3)=$P(MDKNODE0,U,3) ;date of birth
|
---|
44 | S RESULT(0)=3
|
---|
45 | Q
|
---|
46 | ALLERGY ; get allergy data
|
---|
47 | ; DATA = DFN
|
---|
48 | S DFN=$G(DATA)
|
---|
49 | N GMRAL
|
---|
50 | N MDKCNT,MDLOOP
|
---|
51 | S (MDKCNT,MDKLOOP)=0
|
---|
52 | D EN1^GMRADPT
|
---|
53 | I $O(GMRAL(0))'>0 D Q
|
---|
54 | .S:$G(GMRAL)="" RESULT(1)="No Allergy Assessment"
|
---|
55 | .S:$G(GMRAL)=0 RESULT(1)="No Known Allergies"
|
---|
56 | .S RESULT(0)=1
|
---|
57 | .Q
|
---|
58 | I $O(GMRAL(0))>0 D
|
---|
59 | .F S MDKLOOP=$O(GMRAL(MDKLOOP)) Q:MDKLOOP'>0 D
|
---|
60 | ..S MDKCNT=MDKCNT+1
|
---|
61 | ..S RESULT(MDKCNT)=$P($G(GMRAL(MDKLOOP)),U,2)
|
---|
62 | ..Q
|
---|
63 | .S RESULT(0)=MDKCNT
|
---|
64 | .Q
|
---|
65 | Q
|
---|
66 | SHOTS ; get latest vaccination data
|
---|
67 | N MDKCNT,MDKDATE,MDKIEN,MDKIMMUM,MDKNAME,MDKNODE
|
---|
68 | S DFN=$G(DATA)
|
---|
69 | S (MDKCNT,RESULT(0))=0
|
---|
70 | S MDKIMMUM("HEP A")="HEPATITIS A"
|
---|
71 | S MDKIMMUM("HEP B")="HEPATITIS B"
|
---|
72 | S MDKIMMUM("INFLUENZA")="FLU"
|
---|
73 | S MDKIMMUM("PNEUMO-VAC")="PNEUMOCOCCAL"
|
---|
74 | ;S MDKIMMUM("PNEUMOCOCCAL")="PNEUMONIA"
|
---|
75 | S MDKIMMUM("PPD")="PPD"
|
---|
76 | D IMMUN^PXRHS03(DFN)
|
---|
77 | F MDKNAME="HEP A","HEP B","INFLUENZA","PNEUMO-VAC" D
|
---|
78 | .Q:'$D(^TMP("PXI",$J,MDKNAME))
|
---|
79 | .S MDKDATE=0
|
---|
80 | .F S MDKDATE=$O(^TMP("PXI",$J,MDKNAME,MDKDATE)) Q:'MDKDATE D
|
---|
81 | ..S MDKIEN=0
|
---|
82 | ..F S MDKIEN=$O(^TMP("PXI",$J,MDKNAME,MDKDATE,MDKIEN)) Q:'MDKIEN D
|
---|
83 | ...S MDKNODE=$G(^TMP("PXI",$J,MDKNAME,MDKDATE,MDKIEN,0))
|
---|
84 | ...Q:MDKNODE=""
|
---|
85 | ...S MDKCNT=MDKCNT+1
|
---|
86 | ...;RESULT(N)=shot name^date^reaction^contraindicated
|
---|
87 | ...S RESULT(MDKCNT)=MDKIMMUM(MDKNAME)_U_$P(MDKNODE,U,3)_U_$P(MDKNODE,U,6)_U_$P(MDKNODE,U,7)
|
---|
88 | ...Q
|
---|
89 | ..Q
|
---|
90 | .Q
|
---|
91 | S RESULT(0)=MDKCNT
|
---|
92 | K ^TMP("PXI",$J)
|
---|
93 | ; get PPD (skin) result
|
---|
94 | D SKIN^PXRHS04(DFN)
|
---|
95 | I $D(^TMP("PXS",$J)) D
|
---|
96 | .S MDKDATE=0
|
---|
97 | .F S MDKDATE=$O(^TMP("PXS",$J,"PPD",MDKDATE)) Q:'MDKDATE D
|
---|
98 | ..S MDKIEN=0
|
---|
99 | ..F S MDKIEN=$O(^TMP("PXS",$J,"PPD",MDKDATE,MDKIEN)) Q:'MDKIEN D
|
---|
100 | ...S MDKNODE=$G(^TMP("PXS",$J,"PPD",MDKDATE,MDKIEN,0))
|
---|
101 | ...Q:MDKNODE=""
|
---|
102 | ...S MDKCNT=MDKCNT+1
|
---|
103 | ...;RESULT(N)=skin test^date
|
---|
104 | ...S RESULT(MDKCNT)=$P(MDKNODE,U,1)_U_$P(MDKNODE,U,2)
|
---|
105 | ...S RESULT(0)=MDKCNT
|
---|
106 | ...Q
|
---|
107 | ..Q
|
---|
108 | .Q
|
---|
109 | K ^TMP("PXS",$J)
|
---|
110 | Q
|
---|
111 | LAB ; get lab results
|
---|
112 | ; data = dfn^start date^end date^max # of entires to return
|
---|
113 | N LA7PTID,LA7SDT,LA7EDT,LA7SC,LA7SPEC
|
---|
114 | N MDK64PTR,MDKARRAY,MDKCNT,MDKCODE,MDKDATE,MDKEDT,MDKFLAG,MDKLOOP,MDKMAX,MDKNLT,MDKNODE,MDKODT,MDKRSULT
|
---|
115 | N MDKSC,MDKSDT,MDKSSN,MDKTEST,MDKTOT,MDKUNIT
|
---|
116 | S DATA=$G(DATA)
|
---|
117 | S DFN=$P(DATA,U,1)
|
---|
118 | Q:'DFN
|
---|
119 | S MDKSDT=$P(DATA,U,2) ;start date
|
---|
120 | S MDKEDT=$P(DATA,U,3) ;end date
|
---|
121 | S MDKMAX=+$P(DATA,U,4) ;# of entries per test
|
---|
122 | S MDKSSN=$P($G(^DPT(DFN,0)),U,9) ;patient ssn
|
---|
123 | I MDKEDT="" S MDKEDT=$$NOW^XLFDT()
|
---|
124 | ;I MDKSDT="" S MDKSDT=$$FMADD^XLFDT(DT,-90) ;go back 90 days
|
---|
125 | I MDKSDT="" S MDKSDT=$$FMADD^XLFDT(DT,-365) ;<-- TESTING ONLY
|
---|
126 | I 'MDKMAX S MDKMAX=3
|
---|
127 | ; array(nlt code)=test name
|
---|
128 | S MDKSC("84520.")="BUN"
|
---|
129 | S MDKSC("82565.")="CREATININE"
|
---|
130 | S MDKSC("84295.")="SODIUM"
|
---|
131 | S MDKSC("84140.")="POTASSIUM"
|
---|
132 | S MDKSC("82435.")="CHLORIDE"
|
---|
133 | S MDKSC("82830.")="CARBON DIOXIDE"
|
---|
134 | S MDKSC("82310.")="CALCIUM"
|
---|
135 | S MDKSC("84100.")="PHOSPHORUS"
|
---|
136 | S MDKSC("82040.")="ALBUMIN"
|
---|
137 | S MDKSC("84455.")="AST"
|
---|
138 | S MDKSC("84465.")="ALT"
|
---|
139 | S MDKSC("84075.")="ALKALINE PHOSPHATASE"
|
---|
140 | S MDKSC("82250.")="BILIRUBIN"
|
---|
141 | S MDKSC("83020.")="HEMOGLOBIN"
|
---|
142 | S MDKSC("85055.")="HEMATOCRIT"
|
---|
143 | S MDKSC("85569.")="WBC"
|
---|
144 | S MDKSC("86806.")="PLATELETS"
|
---|
145 | S MDKSC("83057.")="HEMOGLOBIN A1C"
|
---|
146 | S MDKSC("82466.")="CHOLESTEROL"
|
---|
147 | S MDKSC("84480.")="TRIGLYCERIDES"
|
---|
148 | S MDKSC("82370.")="FERRITIN"
|
---|
149 | S MDKSC("83540.")="IRON"
|
---|
150 | S MDKSC("82060.")="TRANSFERRIN"
|
---|
151 | S MDKSC("84012.")="PARATHRYROID HORMONE"
|
---|
152 | S MDKSC("81512.")="ALUMINUM"
|
---|
153 | S MDKSC("89068.")="HEPATITIS B SURFACE ANTIGEN"
|
---|
154 | S MDKSC("89065.")="HEPATITIS B SURFACE ANTIBODY"
|
---|
155 | S MDKSC("89067.")="HEPATITIS B SURFACE ANTIBODY"
|
---|
156 | S MDKSC("82013.")="HEPATITIS B SURFACE ANTIBODY"
|
---|
157 | S MDKSC("89095.")="HEPATITIS B SURFACE ANTIBODY"
|
---|
158 | S MDKSC("89127.")="HEPATITIS B SURFACE ANTIBODY"
|
---|
159 | S MDKSC("89128.")="HEPATITIS B SURFACE ANTIBODY"
|
---|
160 | S MDKSC("87398.")="HEPATITIS B SURFACE ANTIBODY"
|
---|
161 | S MDKSC("89699.")="HEPATITIS B SURFACE ANTIBODY"
|
---|
162 | S MDKSC("89070.")="HEPATITIS C ANTIBODY"
|
---|
163 | S MDKSC("87261.")="FLU"
|
---|
164 | K ^TMP("HLS",$J)
|
---|
165 | S LA7SDT=MDKSDT_"^RAD" ;start date
|
---|
166 | S LA7EDT=MDKEDT_"^RAD" ;end date
|
---|
167 | S LA7SC="CH" ;all chemistry tests
|
---|
168 | S LA7SPEC="*" ;all specimens
|
---|
169 | S LA7PTID=MDKSSN ;patient's ssn
|
---|
170 | S MDKARRAY=$$GCPR^LA7QRY(LA7PTID,LA7SDT,LA7EDT,.LA7SC,LA7SPEC,"","","")
|
---|
171 | S (MDKCNT,MDKTOT)=0
|
---|
172 | F S MDKCNT=$O(^TMP("HLS",$J,MDKCNT)) Q:'MDKCNT D
|
---|
173 | .S MDKNODE=$G(^TMP("HLS",$J,MDKCNT))
|
---|
174 | .Q:$E(MDKNODE,1,3)'="OBX"
|
---|
175 | .S MDKFLAG=0
|
---|
176 | .S MDKTEST=$P(MDKNODE,"|",4) ;test ids
|
---|
177 | .S MDKCODE=""
|
---|
178 | .F S MDKCODE=$O(MDKSC(MDKCODE)) Q:MDKCODE=""!(MDKFLAG=1) D
|
---|
179 | ..I MDKTEST[MDKCODE S MDKFLAG=1,MDKNLT=MDKCODE
|
---|
180 | ..Q
|
---|
181 | .Q:'MDKFLAG ;nlt code doesn't match
|
---|
182 | .S MDKDATE=$P(MDKNODE,"|",15) ;date
|
---|
183 | .S MDKDATE=$P(MDKDATE,"-",1) ;strip off time zone offset
|
---|
184 | .S MDKRSULT=$P(MDKNODE,"|",6) ;result
|
---|
185 | .S MDKUNIT=$P(MDKNODE,"|",7) ;unit
|
---|
186 | .S MDKTOT=MDKTOT+1
|
---|
187 | .S RESULT(MDKTOT)=$G(MDKSC(MDKNLT))_U_MDKDATE_U_MDKRSULT_U_MDKUNIT
|
---|
188 | .S RESULT(0)=$G(RESULT(0))+1
|
---|
189 | .Q
|
---|
190 | K ^TMP("HLS",$J)
|
---|
191 | Q
|
---|
192 | AD ; get advance directives
|
---|
193 | ; DATA = DFN
|
---|
194 | S DFN=$G(DATA)
|
---|
195 | N MDKLOOP
|
---|
196 | K ^TMP("TIUPPCV",$J)
|
---|
197 | D ENCOVER^TIUPP3(DFN)
|
---|
198 | I '$D(^TMP("TIUPPCV",$J)) Q
|
---|
199 | S RESULT(1)="No",RESULT(0)=1
|
---|
200 | S MDKLOOP=0
|
---|
201 | F S MDKLOOP=$O(^TMP("TIUPPCV",$J,MDKLOOP)) Q:'MDKLOOP D
|
---|
202 | .I $P(^TMP("TIUPPCV",$J,MDKLOOP),U,2)'="D" Q
|
---|
203 | .S RESULT(1)="Yes"
|
---|
204 | .S RESULT(0)=1
|
---|
205 | .Q
|
---|
206 | K ^TMP("TIUPPCV",$J)
|
---|
207 | Q
|
---|
208 | ;
|
---|
209 | CW ; get clinical warnings
|
---|
210 | ; DATA = DFN
|
---|
211 | S DFN=$G(DATA)
|
---|
212 | N MDKCNT,MDKLOOP
|
---|
213 | K ^TMP("TIUPPCV",$J)
|
---|
214 | D ENCOVER^TIUPP3(DFN)
|
---|
215 | S RESULT(1)="None",RESULT(0)=1
|
---|
216 | I '$D(^TMP("TIUPPCV",$J)) Q
|
---|
217 | S (MDKCNT,MDKLOOP)=0
|
---|
218 | F S MDKLOOP=$O(^TMP("TIUPPCV",$J,MDKLOOP)) Q:'MDKLOOP D
|
---|
219 | .I $P(^TMP("TIUPPCV",$J,MDKLOOP),U,2)'="W" Q
|
---|
220 | .S MDKCNT=MDKCNT+1
|
---|
221 | .S RESULT(MDKCNT)=^TMP("TIUPPCV",$J,MDKLOOP)
|
---|
222 | .Q
|
---|
223 | S RESULT(0)=MDKCNT
|
---|
224 | K ^TMP("TIUPPCV",$J)
|
---|
225 | Q
|
---|
226 | ;
|
---|
227 | GETPROV ; Get list of available providers with name starting with P1
|
---|
228 | N MDDATE,MDDUP,MDRI,MDI1,MDI2,MDLAST,MDMAX,MDPREV,MDTTL
|
---|
229 | S MDRI=0,MDMAX=44,(MDLAST,MDPREV)="",X1=DT,MDFROM=DATA,MDDATE=DT
|
---|
230 | F Q:MDRI'<MDMAX S MDFROM=$O(^VA(200,"AUSER",MDFROM),1) Q:MDFROM="" D
|
---|
231 | .S MDI1=""
|
---|
232 | .F S MDI1=$O(^VA(200,"AUSER",MDFROM,MDI1),1) Q:'MDI1 D
|
---|
233 | ..I MDDATE>0,$$GET^XUA4A72(MDI1,MDDATE)<1 Q ; Check date?
|
---|
234 | ..S MDRI=MDRI+1,RESULT(MDRI)=MDI1_U_$$NAMEFMT^XLFNAME(MDFROM,"F","DcMPC")
|
---|
235 | I MDRI<1 S RESULT(0)="-1^No matches found." Q
|
---|
236 | S RESULT(0)=MDRI
|
---|
237 | Q
|
---|
238 | ;
|
---|
239 | TIME ; Get time
|
---|
240 | S RESULT(0)=$$NOW^XLFDT()
|
---|
241 | Q
|
---|
242 | GETLD ; Get MDK Application Install Info
|
---|
243 | N MDS
|
---|
244 | S MDS=$$GET^XPAR("SYS","MDK APPLICATION INSTALL","DATE_TIME_OF_LAUNCH")
|
---|
245 | S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","USER")
|
---|
246 | S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","OPTION_LOADED")
|
---|
247 | S MDS=MDS_"^"_$$GET^XPAR("SYS","MDK APPLICATION INSTALL","WORKSTATION")
|
---|
248 | S RESULT(0)=MDS
|
---|
249 | Q
|
---|
250 | SETLD ; Set MDK Application Install Info
|
---|
251 | D EN^XPAR("SYS","MDK APPLICATION INSTALL","DATE_TIME_OF_LAUNCH",$P(DATA,"^"))
|
---|
252 | D EN^XPAR("SYS","MDK APPLICATION INSTALL","USER",$P(DATA,"^",2))
|
---|
253 | D EN^XPAR("SYS","MDK APPLICATION INSTALL","OPTION_LOADED",$P(DATA,"^",3))
|
---|
254 | D EN^XPAR("SYS","MDK APPLICATION INSTALL","WORKSTATION",$P(DATA,"^",4))
|
---|
255 | Q
|
---|