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