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