1 | PXRMPDS ; SLC/PKR - Routines for patient data source. ;12/30/2004
|
---|
2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
|
---|
3 | ;
|
---|
4 | ;====================================================
|
---|
5 | KPDS(X,X1,X2,DAS) ;Kill the patient data source fields in the expanded
|
---|
6 | ;taxonomy. Called from cross-reference on patient data source.
|
---|
7 | ;Do not execute as part of a verify fields.
|
---|
8 | I $G(DIUTIL)="VERIFY FIELDS" Q
|
---|
9 | ;Do not execute as part of exchange.
|
---|
10 | I $G(PXRMEXCH) Q
|
---|
11 | I '$D(^PXD(811.3,DAS)) Q
|
---|
12 | N DA,DIK,XS
|
---|
13 | ;Protect X because DIK uses it without newing it.
|
---|
14 | M XS=X
|
---|
15 | S DIK="^PXD(811.3,"_DAS_",""PDS"","
|
---|
16 | S DA(1)=DAS,DA=0
|
---|
17 | F S DA=+$O(^PXD(811.3,DAS,"PDS",DA)) Q:DA=0 D ^DIK
|
---|
18 | ;If the Patient Data Source is being deleted then rebuild the
|
---|
19 | ;list. The null value for PDS means search all nodes.
|
---|
20 | I X2="" D SPDS(.X,.X1,.X2,DAS)
|
---|
21 | M X=XS
|
---|
22 | Q
|
---|
23 | ;
|
---|
24 | ;====================================================
|
---|
25 | PDSXHELP ;Taxonomy field Patient Data Source executable help.
|
---|
26 | N DONE,IND,TEXT
|
---|
27 | S DONE=0
|
---|
28 | F IND=1:1 Q:DONE D
|
---|
29 | . S TEXT=$P($T(TEXT+IND),";",3)
|
---|
30 | . I TEXT="**End Text**" S DONE=1 Q
|
---|
31 | . W !,TEXT
|
---|
32 | Q
|
---|
33 | ;
|
---|
34 | ;====================================================
|
---|
35 | SPDS(X,X1,X2,DA) ;Set the patient data source fields in the expanded
|
---|
36 | ;taxonomy. Called from cross-reference on patient data source.
|
---|
37 | ;Do not execute as part of a verify fields.
|
---|
38 | I $G(DIUTIL)="VERIFY FIELDS" Q
|
---|
39 | ;Do not execute as part of exchange.
|
---|
40 | I $G(PXRMEXCH) Q
|
---|
41 | I '$D(^PXD(811.3,DA)) Q
|
---|
42 | N FDA,IEN,IENS,IENT,IND,NNODE,NSOURCE,PDS,PDSL
|
---|
43 | N ALL,EN,ENPP,ENPD,IN,INDXLS,INM,INPD,INPR,PL,RA
|
---|
44 | ;If this is an edit and the current Patient Data Source is null
|
---|
45 | ;delete the existing entries.
|
---|
46 | I X1="" D KPDS(.X,.X1,.X2,DA)
|
---|
47 | ;Build the list of patient data sources.
|
---|
48 | S NSOURCE=$L(X,",")
|
---|
49 | F IND=1:1:NSOURCE D
|
---|
50 | . S PDS=$P(X,",",IND)
|
---|
51 | . I PDS'="" S PDSL(PDS)=""
|
---|
52 | S ALL=$S($D(PDSL("ALL")):1,X="":1,1:0)
|
---|
53 | S EN=$S($D(PDSL("-EN")):0,$D(PDSL("EN")):1,ALL:1,1:0)
|
---|
54 | S ENPD=$S($D(PDSL("-ENPD")):0,$D(PDSL("ENPD")):1,1:0)
|
---|
55 | S ENPP=$S($D(PDSL("-ENPP")):0,$D(PDSL("ENPP")):1,1:0)
|
---|
56 | S IN=$S($D(PDSL("-IN")):0,$D(PDSL("IN")):1,ALL:1,1:0)
|
---|
57 | S INDXLS=$S($D(PDSL("-INDXLS")):0,$D(PDSL("INDXLS")):1,IN:1,1:0)
|
---|
58 | S INM=$S($D(PDSL("-INM")):0,$D(PDSL("INM")):1,IN:1,1:0)
|
---|
59 | S INPD=$S($D(PDSL("-INPD")):0,$D(PDSL("INPD")):1,IN:1,1:0)
|
---|
60 | S INPR=$S($D(PDSL("-INPR")):0,$D(PDSL("INPR")):1,IN:1,1:0)
|
---|
61 | S PL=$S($D(PDSL("-PL")):0,$D(PDSL("PL")):1,ALL:1,1:0)
|
---|
62 | S RA=$S($D(PDSL("-RA")):0,$D(PDSL("RA")):1,ALL:1,1:0)
|
---|
63 | ;Setup the nodes for each source file.
|
---|
64 | S IEN=DA
|
---|
65 | I (IN)!(INDXLS)!(INM)!(INPD)!(INPR) D
|
---|
66 | . S NNODE=0
|
---|
67 | . S IEN=IEN+1,IENS="+"_IEN_","_+DA_","
|
---|
68 | . S FDA(811.33,IENS,.01)=45
|
---|
69 | .;PTF ICD0 codes.
|
---|
70 | . I (IN)!(INPR) D
|
---|
71 | ..;PTF ICD0 codes.
|
---|
72 | .. S IEN=IEN+1,IENS="+"_IEN_","_IENS,IENT=IENS
|
---|
73 | .. S FDA(811.335,IENS,.01)=80.1
|
---|
74 | .. F IND=1:1:5 D
|
---|
75 | ... S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
76 | ... S FDA(811.3355,IENS,.01)="P"_IND
|
---|
77 | .. F IND=1:1:5 D
|
---|
78 | ... S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
79 | ... S FDA(811.3355,IENS,.01)="S"_IND
|
---|
80 | .. S FDA(811.335,IENT,1)=NNODE
|
---|
81 | . S IENT=IEN
|
---|
82 | .;PTF ICD9 codes.
|
---|
83 | . I (IN)!(INDXLS)!(INM)!(INPD) D
|
---|
84 | .. S NNODE=0
|
---|
85 | .. S IEN=DA+1,IENS="+"_IEN_","_+DA_","
|
---|
86 | .. S IEN=IENT
|
---|
87 | .. S IEN=IEN+1,IENS="+"_IEN_","_IENS
|
---|
88 | .. S FDA(811.335,IENS,.01)=80
|
---|
89 | .. S IENT=IENS
|
---|
90 | .. I IN D
|
---|
91 | ... F IND=1:1:13 D
|
---|
92 | .... S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
93 | .... S FDA(811.3355,IENS,.01)="D SD"_IND
|
---|
94 | .. I INDXLS D
|
---|
95 | ... S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
96 | ... S FDA(811.3355,IENS,.01)="DXLS"
|
---|
97 | .. I INM D
|
---|
98 | ... F IND=1:1:10 D
|
---|
99 | .... S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
100 | .... S FDA(811.3355,IENS,.01)="M ICD"_IND
|
---|
101 | .. I INPD D
|
---|
102 | ... S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
103 | ... S FDA(811.3355,IENS,.01)="PDX"
|
---|
104 | .. S FDA(811.335,IENT,1)=NNODE
|
---|
105 | ;RAD/NUC MED PATIENT
|
---|
106 | I RA D
|
---|
107 | . S IEN=IEN+1,IENS="+"_IEN_","_+DA_","
|
---|
108 | . S FDA(811.33,IENS,.01)=70
|
---|
109 | . S IEN=IEN+1,IENS="+"_IEN_","_IENS
|
---|
110 | . S FDA(811.335,IENS,.01)=81
|
---|
111 | ;PROBLEM LIST
|
---|
112 | I PL D
|
---|
113 | . S IEN=IEN+1,IENS="+"_IEN_","_+DA_","
|
---|
114 | . S FDA(811.33,IENS,.01)=9000011
|
---|
115 | . S IEN=IEN+1,IENS="+"_IEN_","_IENS
|
---|
116 | . S FDA(811.335,IENS,.01)=80
|
---|
117 | ;V POV
|
---|
118 | I (EN)!(ENPD) D
|
---|
119 | . S NNODE=0
|
---|
120 | . S IEN=IEN+1,IENS="+"_IEN_","_+DA_","
|
---|
121 | . S FDA(811.33,IENS,.01)=9000010.07
|
---|
122 | . S IEN=IEN+1,IENS="+"_IEN_","_IENS
|
---|
123 | . S FDA(811.335,IENS,.01)=80
|
---|
124 | . S IENT=IENS
|
---|
125 | . S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
126 | . S FDA(811.3355,IENS,.01)="P"
|
---|
127 | . I 'ENPD D
|
---|
128 | .. S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
129 | .. S FDA(811.3355,IENS,.01)="S"
|
---|
130 | .. S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
131 | .. S FDA(811.3355,IENS,.01)="U"
|
---|
132 | . S FDA(811.335,IENT,1)=NNODE
|
---|
133 | ;V CPT
|
---|
134 | I (EN)!(ENPP) D
|
---|
135 | . S NNODE=0
|
---|
136 | . S IEN=IEN+1,IENS="+"_IEN_","_+DA_","
|
---|
137 | . S FDA(811.33,IENS,.01)=9000010.18
|
---|
138 | . S IEN=IEN+1,IENS="+"_IEN_","_IENS
|
---|
139 | . S FDA(811.335,IENS,.01)=81
|
---|
140 | . S IENT=IENS
|
---|
141 | . S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
142 | . S FDA(811.3355,IENS,.01)="Y"
|
---|
143 | . I 'ENPP D
|
---|
144 | .. S IEN=IEN+1,IENS="+"_IEN_","_IENT,NNODE=NNODE+1
|
---|
145 | .. S FDA(811.3355,IENS,.01)="U"
|
---|
146 | . S FDA(811.335,IENT,1)=NNODE
|
---|
147 | D UPDATE(.FDA)
|
---|
148 | Q
|
---|
149 | ;
|
---|
150 | ;====================================================
|
---|
151 | TEXT ;Taxonomy field Patient Data Source executable help text.
|
---|
152 | ;;Taxonomy matching looks for all codes in the taxonomy. It searches for
|
---|
153 | ;;ICD9 codes in Problem List, PTF, and V POV. It searches for ICD0 codes
|
---|
154 | ;;in PTF and CPT codes in V CPT and Radiology.
|
---|
155 | ;;
|
---|
156 | ;;This comma separated list of patient data sources is used to refine the
|
---|
157 | ;;taxonomy search by specifying exactly which patient data sources are searched.
|
---|
158 | ;;You may use any combination of valid entries. The valid entries are:
|
---|
159 | ;;
|
---|
160 | ;; ALL - all sources
|
---|
161 | ;; EN - All PCE encounter data (CPT & ICD9)
|
---|
162 | ;; ENPP - PCE encounter data, principal procedure (CPT) only
|
---|
163 | ;; ENPD - PCE encounter data primary diagnosis (ICD9) only
|
---|
164 | ;; IN - All PTF inpatient data (ICD9 & ICD0)
|
---|
165 | ;; INDXLS - PTF inpatient DXLS diagnosis (ICD9) only
|
---|
166 | ;; INM - PTF inpatient diagnosis (ICD9) movement only
|
---|
167 | ;; INPD - PTF inpatient principal diagnosis (ICD9) only
|
---|
168 | ;; INPR - PTF inpatient procedure (ICD0) only
|
---|
169 | ;; PL - Problem List (ICD9)
|
---|
170 | ;; RA - Radiology (CPT) only
|
---|
171 | ;;
|
---|
172 | ;;You may also use a minus sign to remove a particular source from the list.
|
---|
173 | ;;For example: IN,-INM would search for all inpatient diagnoses, except those
|
---|
174 | ;;associated with a movement, and all inpatient procedures.
|
---|
175 | ;;
|
---|
176 | ;;The default is to search all sources for all codes in the taxonomy.
|
---|
177 | ;;
|
---|
178 | ;;Note: ICD0 = ICD Operation/Procedure, used for inpatient coding of procedures.
|
---|
179 | ;;
|
---|
180 | ;;**End Text**
|
---|
181 | Q
|
---|
182 | ;
|
---|
183 | ;====================================================
|
---|
184 | UPDATE(FDA) ;
|
---|
185 | N MSG
|
---|
186 | D UPDATE^DIE("E","FDA","","MSG")
|
---|
187 | I $D(MSG) D
|
---|
188 | . W !,"The expanded taxonomy search node update failed."
|
---|
189 | . W !,"UPDATE^DIE returned the following error message:"
|
---|
190 | . D AWRITE^PXRMUTIL("MSG")
|
---|
191 | . W !,"Examine the above error message for the reason.",!
|
---|
192 | . H 2
|
---|
193 | Q
|
---|
194 | ;
|
---|
195 | ;====================================================
|
---|
196 | VPDS(X) ;Taxonomy field Patient Data Source input transform. Check for valid
|
---|
197 | ;patient data sources.
|
---|
198 | N IND,NSOURCE,PDS,PDSL,TEXT,VALID
|
---|
199 | ;Do not execute as part of a verify fields.
|
---|
200 | I $G(DIUTIL)="VERIFY FIELDS" Q 1
|
---|
201 | ;Do not execute as part of exchange.
|
---|
202 | I $G(PXRMEXCH) Q 1
|
---|
203 | S VALID=1
|
---|
204 | S NSOURCE=$L(X,",")
|
---|
205 | F IND=1:1:NSOURCE D
|
---|
206 | . S PDS=$P(X,",",IND),PDSL(PDS)=""
|
---|
207 | .;Check for valid source abbreviations.
|
---|
208 | . I PDS="ALL" Q
|
---|
209 | . I (PDS="EN")!(PDS="-EN") Q
|
---|
210 | . I (PDS="ENPD")!(PDS="-ENPD") Q
|
---|
211 | . I (PDS="ENPP")!(PDS="-ENPP") Q
|
---|
212 | . I (PDS="IN")!(PDS="-IN") Q
|
---|
213 | . I (PDS="INDXLS")!(PDS="-INDXLS") Q
|
---|
214 | . I (PDS="INM")!(PDS="-INM") Q
|
---|
215 | . I (PDS="INPD")!(PDS="-INPD") Q
|
---|
216 | . I (PDS="INPR")!(PDS="-INPR") Q
|
---|
217 | . I (PDS="PL")!(PDS="-PL") Q
|
---|
218 | . I (PDS="RA")!(PDS="-RA") Q
|
---|
219 | . S VALID=0
|
---|
220 | . S TEXT=PDS_" is not a valid Patient Data Source"
|
---|
221 | . D EN^DDIOL(TEXT)
|
---|
222 | ;Check for invalid combinations.
|
---|
223 | I $D(PDSL("EN")),$D(PDSL("-EN")) S TEXT="EN and -EN is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
224 | I $D(PDSL("ENPD")),$D(PDSL("-ENPD")) S TEXT="ENPD and -ENPD is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
225 | I $D(PDSL("ENPP")),$D(PDSL("-ENPP")) S TEXT="ENPP and -ENPP is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
226 | I $D(PDSL("IN")),$D(PDSL("-IN")) S TEXT="IN and -IN is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
227 | I $D(PDSL("INDXLS")),$D(PDSL("-INDXLS")) S TEXT="INDXLS and -INDXLS is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
228 | I $D(PDSL("INM")),$D(PDSL("-INM")) S TEXT="INM and -INM is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
229 | I $D(PDSL("INPD")),$D(PDSL("-INPD")) S TEXT="INPD and -INPD is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
230 | I $D(PDSL("INPR")),$D(PDSL("-INPR")) S TEXT="INPR and -INPR is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
231 | I $D(PDSL("PL")),$D(PDSL("-PL")) S TEXT="PL and -PL is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
232 | I $D(PDSL("RA")),$D(PDSL("-RA")) S TEXT="RA and -RA is an invalid combination",VALID=0 D EN^DDIOL(TEXT)
|
---|
233 | Q VALID
|
---|
234 | ;
|
---|