| [613] | 1 | LRPXRM ;SLC/STAFF Lab reminder index for micro and ap ;5/6/04  13:21 | 
|---|
|  | 2 | ;;5.2;LAB SERVICE;**295**;Sep 27, 1994 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | UPDATE(LRDFN,SUB,LRIDT) ; update Micro and AP xrefs in ^PXRMINDX(63 | 
|---|
|  | 5 | ; from LRAPDA,LRAPDSR,LRMIEDZ,LRMIEDZ2,LRMISTF1,LRMIV,LRMIV1,LRMIV2 | 
|---|
|  | 6 | ; - ^TMP("LRPX",$J, is used for processing any edits of Micro or AP data: | 
|---|
|  | 7 | ; - All results "AR" are copied when the patient's sample is edited. | 
|---|
|  | 8 | ; - Indexes of the patient's "PDI" are copied before "B" edits. | 
|---|
|  | 9 | ; - Indexes created from the "AR" data provide an index after "A" edits. | 
|---|
|  | 10 | ; - "A" and "B" are compared to determine what has been added "ADD" | 
|---|
|  | 11 | ;   and what has been deleted "DEL". | 
|---|
|  | 12 | ; - The ^PXRMINDX(63 indexes are added or deleted using "ADD" and "DEL". | 
|---|
|  | 13 | N DATE,DFN K ^TMP("LRPX",$J) | 
|---|
|  | 14 | S LRIDT=+$G(LRIDT) | 
|---|
|  | 15 | S DFN=$$DFN^LRPXAPIU(+$G(LRDFN)) I 'DFN Q | 
|---|
|  | 16 | I SUB="AU" D  Q | 
|---|
|  | 17 | . S DATE=$$DOD^LRPXAPIU(DFN) I 'DATE Q | 
|---|
|  | 18 | . I '+$G(^LR(LRDFN,"AU")) Q | 
|---|
|  | 19 | . I '($P(^LR(LRDFN,"AU"),U,3)&($P(^("AU"),U,15))) Q | 
|---|
|  | 20 | . M ^TMP("LRPX",$J,"B")=^PXRMINDX(63,"PDI",DFN,DATE) | 
|---|
|  | 21 | . M ^TMP("LRPX",$J,"AR","AY")=^LR(LRDFN,"AY") | 
|---|
|  | 22 | . M ^TMP("LRPX",$J,"AR",80)=^LR(LRDFN,80) | 
|---|
|  | 23 | . M ^TMP("LRPX",$J,"AR",33)=^LR(LRDFN,33) | 
|---|
|  | 24 | . D AP(DFN,LRDFN,DATE,LRIDT,SUB) | 
|---|
|  | 25 | . K ^TMP("LRPX",$J) | 
|---|
|  | 26 | S DATE=$$LRIDT^LRPXAPIU(LRIDT) | 
|---|
|  | 27 | M ^TMP("LRPX",$J,"B")=^PXRMINDX(63,"PDI",DFN,DATE) | 
|---|
|  | 28 | I SUB="MI" D | 
|---|
|  | 29 | . M ^TMP("LRPX",$J,"AR")=^LR(LRDFN,SUB,LRIDT) | 
|---|
|  | 30 | . D MICRO(DFN,LRDFN,DATE,LRIDT) | 
|---|
|  | 31 | E  D | 
|---|
|  | 32 | . M ^TMP("LRPX",$J,"AR",0)=^LR(LRDFN,SUB,LRIDT,0) | 
|---|
|  | 33 | . M ^TMP("LRPX",$J,"AR",.1)=^LR(LRDFN,SUB,LRIDT,.1) | 
|---|
|  | 34 | . M ^TMP("LRPX",$J,"AR",2)=^LR(LRDFN,SUB,LRIDT,2) | 
|---|
|  | 35 | . M ^TMP("LRPX",$J,"AR",3)=^LR(LRDFN,SUB,LRIDT,3) | 
|---|
|  | 36 | . D AP(DFN,LRDFN,DATE,LRIDT,SUB) | 
|---|
|  | 37 | K ^TMP("LRPX",$J) | 
|---|
|  | 38 | Q | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | MICRO(DFN,LRDFN,DATE,LRIDT) ; | 
|---|
|  | 41 | N AB,ABDN,ACC,ITEM,NODE,ORG,ORGNUM,SPEC,SUB,TB,TBDN,TEST,TESTS K TESTS | 
|---|
|  | 42 | S ITEM=0 | 
|---|
|  | 43 | F  S ITEM=$O(^TMP("LRPX",$J,"B",ITEM)) Q:ITEM=""  D | 
|---|
|  | 44 | . I $E(ITEM)'="M" K ^TMP("LRPX",$J,"B",ITEM) | 
|---|
|  | 45 | I '+$G(^TMP("LRPX",$J,"AR",0)) Q | 
|---|
|  | 46 | I '$$MIVER(LRDFN,LRIDT) Q | 
|---|
|  | 47 | S SPEC=+$P(^TMP("LRPX",$J,"AR",0),U,5) | 
|---|
|  | 48 | I 'SPEC Q | 
|---|
|  | 49 | S ITEM="M;S;"_SPEC | 
|---|
|  | 50 | S NODE=LRDFN_";MI;"_LRIDT_";0" | 
|---|
|  | 51 | D TMPSET(ITEM,NODE) | 
|---|
|  | 52 | S ACC=$P(^TMP("LRPX",$J,"AR",0),U,6) | 
|---|
|  | 53 | I $L(ACC) D | 
|---|
|  | 54 | . D ACCY^LRPXAPI(.TESTS,ACC,DATE) | 
|---|
|  | 55 | . I $O(TESTS(0)) D | 
|---|
|  | 56 | .. S TEST=0 | 
|---|
|  | 57 | .. F  S TEST=+$O(TESTS(TEST)) Q:TEST<1  D | 
|---|
|  | 58 | ... S ITEM="M;T;"_TEST | 
|---|
|  | 59 | ... D TMPSET(ITEM,NODE) | 
|---|
|  | 60 | I $G(^TMP("LRPX",$J,"AR",1)) D | 
|---|
|  | 61 | . S ORGNUM=0 | 
|---|
|  | 62 | . F  S ORGNUM=$O(^TMP("LRPX",$J,"AR",3,ORGNUM)) Q:ORGNUM<1  D | 
|---|
|  | 63 | .. S ORG=+$G(^TMP("LRPX",$J,"AR",3,ORGNUM,0)) | 
|---|
|  | 64 | .. I 'ORG Q | 
|---|
|  | 65 | .. S ITEM="M;O;"_ORG | 
|---|
|  | 66 | .. S NODE=LRDFN_";MI;"_LRIDT_";3;"_ORGNUM_";0" | 
|---|
|  | 67 | .. D TMPSET(ITEM,NODE) | 
|---|
|  | 68 | .. S ABDN=1 | 
|---|
|  | 69 | .. F  S ABDN=$O(^TMP("LRPX",$J,"AR",3,ORGNUM,ABDN)) Q:ABDN<1  D | 
|---|
|  | 70 | ... S AB=$$AB^LRPXAPIU(ABDN) | 
|---|
|  | 71 | ... I 'AB Q | 
|---|
|  | 72 | ... S ITEM="M;A;"_AB | 
|---|
|  | 73 | ... S NODE=LRDFN_";MI;"_LRIDT_";3;"_ORGNUM_";"_ABDN | 
|---|
|  | 74 | ... D TMPSET(ITEM,NODE) | 
|---|
|  | 75 | F SUB=6,9,12,17 D | 
|---|
|  | 76 | . I '$G(^TMP("LRPX",$J,"AR",(SUB-1))) Q | 
|---|
|  | 77 | . S ORGNUM=0 | 
|---|
|  | 78 | . F  S ORGNUM=$O(^TMP("LRPX",$J,"AR",SUB,ORGNUM)) Q:ORGNUM<1  D | 
|---|
|  | 79 | .. S ORG=+$G(^TMP("LRPX",$J,"AR",SUB,ORGNUM,0)) | 
|---|
|  | 80 | .. I 'ORG Q | 
|---|
|  | 81 | .. S ITEM="M;O;"_ORG | 
|---|
|  | 82 | .. S NODE=LRDFN_";MI;"_LRIDT_";"_SUB_";"_ORGNUM_";0" | 
|---|
|  | 83 | .. D TMPSET(ITEM,NODE) | 
|---|
|  | 84 | .. I SUB'=12 Q | 
|---|
|  | 85 | .. S TBDN=2 | 
|---|
|  | 86 | .. F  S TBDN=$O(^TMP("LRPX",$J,"AR",12,ORGNUM,TBDN)) Q:TBDN<2  D | 
|---|
|  | 87 | ... S TB=$$TB^LRPXAPIU(TBDN) | 
|---|
|  | 88 | ... I '$L(TB) Q | 
|---|
|  | 89 | ... S ITEM="M;M;"_TB | 
|---|
|  | 90 | ... S NODE=LRDFN_";MI;"_LRIDT_";12;"_ORGNUM_";"_TBDN | 
|---|
|  | 91 | ... D TMPSET(ITEM,NODE) | 
|---|
|  | 92 | D CKDEL | 
|---|
|  | 93 | D CKADD | 
|---|
|  | 94 | D DEL(DFN,DATE) | 
|---|
|  | 95 | D ADD(DFN,DATE) | 
|---|
|  | 96 | Q | 
|---|
|  | 97 | ; | 
|---|
|  | 98 | MIVER(LRDFN,LRIDT) ; $$(lrdfn,lridt) -> 1 if any portion of micro is verified | 
|---|
|  | 99 | N OK,SUB | 
|---|
|  | 100 | S OK=0 | 
|---|
|  | 101 | F SUB=1,5,8,11,16 D  Q:OK | 
|---|
|  | 102 | . I $G(^LR(LRDFN,"MI",LRIDT,SUB)) S OK=1 | 
|---|
|  | 103 | Q OK | 
|---|
|  | 104 | ; | 
|---|
|  | 105 | AP(DFN,LRDFN,DATE,LRIDT,SUB) ; | 
|---|
|  | 106 | N ITEM | 
|---|
|  | 107 | I '$$APVERIFY^LRPXAPI(LRDFN,LRIDT,SUB) Q | 
|---|
|  | 108 | S ITEM=0 | 
|---|
|  | 109 | F  S ITEM=$O(^TMP("LRPX",$J,"B",ITEM)) Q:ITEM=""  D | 
|---|
|  | 110 | . I $E(ITEM)'="A" K ^TMP("LRPX",$J,"B",ITEM) | 
|---|
|  | 111 | I SUB="AU" D AUTOPSY(LRDFN) | 
|---|
|  | 112 | E  D CYEMSP(LRDFN,LRIDT,DATE,SUB) ; cyto, electron micro, surg path | 
|---|
|  | 113 | D CKDEL | 
|---|
|  | 114 | D CKADD | 
|---|
|  | 115 | D DEL(DFN,DATE) | 
|---|
|  | 116 | D ADD(DFN,DATE) | 
|---|
|  | 117 | Q | 
|---|
|  | 118 | ; | 
|---|
|  | 119 | AUTOPSY(LRDFN) ; | 
|---|
|  | 120 | N ETIOL,I,II,III,ICD,ICDX,ITEM,NODE,ORGAN,SNOMED,SPEC,SUB,SUBS | 
|---|
|  | 121 | S SPEC=0 | 
|---|
|  | 122 | F  S SPEC=$O(^TMP("LRPX",$J,"AR",33,SPEC)) Q:SPEC<1  D | 
|---|
|  | 123 | . I '$L($P($G(^TMP("LRPX",$J,"AR",33,SPEC,0)),U)) Q | 
|---|
|  | 124 | . S ITEM="A;S;1."_$P(^TMP("LRPX",$J,"AR",33,SPEC,0),U) | 
|---|
|  | 125 | . S NODE=LRDFN_";33;"_SPEC_";0" | 
|---|
|  | 126 | . D TMPSET(ITEM,NODE) | 
|---|
|  | 127 | S ICD=0 | 
|---|
|  | 128 | F  S ICD=$O(^TMP("LRPX",$J,"AR",80,ICD)) Q:ICD<1  D | 
|---|
|  | 129 | . S ICDX=+$G(^TMP("LRPX",$J,"AR",80,ICD,0)) | 
|---|
|  | 130 | . I 'ICDX Q | 
|---|
|  | 131 | . S ITEM="A;I;"_ICDX | 
|---|
|  | 132 | . S NODE=LRDFN_";80;"_ICD_";0" | 
|---|
|  | 133 | . D TMPSET(ITEM,NODE) | 
|---|
|  | 134 | S I=0 | 
|---|
|  | 135 | F  S I=$O(^TMP("LRPX",$J,"AR","AY",I)) Q:I<1  D | 
|---|
|  | 136 | . S ORGAN=+$G(^TMP("LRPX",$J,"AR","AY",I,0)) | 
|---|
|  | 137 | . I 'ORGAN Q | 
|---|
|  | 138 | . S ITEM="A;O;"_ORGAN | 
|---|
|  | 139 | . S NODE=LRDFN_";AY;"_I_";0" | 
|---|
|  | 140 | . D TMPSET(ITEM,NODE) | 
|---|
|  | 141 | . F SUBS="1D","2M","3F","4P" D | 
|---|
|  | 142 | .. S SUB=+SUBS | 
|---|
|  | 143 | .. S II=0 | 
|---|
|  | 144 | .. F  S II=$O(^TMP("LRPX",$J,"AR","AY",I,SUB,II)) Q:II<1  D | 
|---|
|  | 145 | ... S SNOMED=+$G(^TMP("LRPX",$J,"AR","AY",I,SUB,II,0)) | 
|---|
|  | 146 | ... I 'SNOMED Q | 
|---|
|  | 147 | ... S ITEM="A;"_$E(SUBS,2)_";"_SNOMED | 
|---|
|  | 148 | ... S NODE=LRDFN_";AY;"_I_";"_SUB_";"_II_";0" | 
|---|
|  | 149 | ... D TMPSET(ITEM,NODE) | 
|---|
|  | 150 | ... I SUB'=2 Q | 
|---|
|  | 151 | ... S III=0 | 
|---|
|  | 152 | ... F  S III=$O(^TMP("LRPX",$J,"AR","AY",I,SUB,II,1,III)) Q:III<1  D | 
|---|
|  | 153 | .... S ETIOL=+$G(^TMP("LRPX",$J,"AR","AY",I,SUB,II,1,III,0)) | 
|---|
|  | 154 | .... I 'ETIOL Q | 
|---|
|  | 155 | .... S ITEM="A;E;"_ETIOL | 
|---|
|  | 156 | .... S NODE=LRDFN_";AY;"_I_";"_SUB_";"_II_";1;"_III_";0" | 
|---|
|  | 157 | .... D TMPSET(ITEM,NODE) | 
|---|
|  | 158 | Q | 
|---|
|  | 159 | ; | 
|---|
|  | 160 | CYEMSP(LRDFN,LRIDT,DATE,SUB) ; | 
|---|
|  | 161 | N ACC,I,ICD,ICDX,ITEM,NODE,ORGAN,PREP,SPEC,TEST,TESTS K TESTS | 
|---|
|  | 162 | I '($P($G(^TMP("LRPX",$J,"AR",0)),U,3)&($P($G(^(0)),U,11))) Q | 
|---|
|  | 163 | S SPEC=0 | 
|---|
|  | 164 | F  S SPEC=$O(^TMP("LRPX",$J,"AR",.1,SPEC)) Q:SPEC<1  D | 
|---|
|  | 165 | . I '$L($P($G(^TMP("LRPX",$J,"AR",.1,SPEC,0)),U)) Q | 
|---|
|  | 166 | . S ITEM="A;S;1."_$$UP^XLFSTR($P(^TMP("LRPX",$J,"AR",.1,SPEC,0),U)) | 
|---|
|  | 167 | . S NODE=LRDFN_";"_SUB_";"_LRIDT_";.1;"_SPEC_";0" | 
|---|
|  | 168 | . D TMPSET(ITEM,NODE) | 
|---|
|  | 169 | . S PREP=0 | 
|---|
|  | 170 | . F  S PREP=$O(^TMP("LRPX",$J,"AR",.1,SPEC,1,PREP)) Q:PREP<1  D | 
|---|
|  | 171 | .. S TEST=0 | 
|---|
|  | 172 | .. F  S TEST=$O(^TMP("LRPX",$J,"AR",.1,SPEC,1,PREP,1,TEST)) Q:TEST<1  D | 
|---|
|  | 173 | ... S TEST=+$G(^TMP("LRPX",$J,"AR",.1,SPEC,1,PREP,1,TEST,0)) | 
|---|
|  | 174 | ... I 'TEST Q | 
|---|
|  | 175 | ... S ITEM="A;T;"_TEST | 
|---|
|  | 176 | ... S NODE=LRDFN_";"_SUB_";"_LRIDT_";.1;"_SPEC_";1;"_PREP_";1;"_TEST_";0" | 
|---|
|  | 177 | ... D TMPSET(ITEM,NODE) | 
|---|
|  | 178 | ; S ACC=$P(^TMP("LRPX",$J,"AR",0),U,6) ; do not use tests on acc | 
|---|
|  | 179 | ; I $L(ACC) D | 
|---|
|  | 180 | ; . S NODE=LRDFN_";"_SUB_";"_LRIDT_";0" | 
|---|
|  | 181 | ; . D ACCY^LRPXAPI(.TESTS,ACC,DATE) | 
|---|
|  | 182 | ; . I $O(TESTS(0)) D | 
|---|
|  | 183 | ; .. S TEST=0 | 
|---|
|  | 184 | ; .. F  S TEST=$O(TESTS(TEST)) Q:TEST<1  D | 
|---|
|  | 185 | ; ... S ITEM="A;T;"_TEST | 
|---|
|  | 186 | ; ... D TMPSET(ITEM,NODE) | 
|---|
|  | 187 | S ICD=0 | 
|---|
|  | 188 | F  S ICD=$O(^TMP("LRPX",$J,"AR",3,ICD)) Q:ICD<1  D | 
|---|
|  | 189 | . S ICDX=+$G(^TMP("LRPX",$J,"AR",3,ICD,0)) | 
|---|
|  | 190 | . I 'ICDX Q | 
|---|
|  | 191 | . S ITEM="A;I;"_ICDX | 
|---|
|  | 192 | . S NODE=LRDFN_";"_SUB_";"_LRIDT_";3;"_ICD_";0" | 
|---|
|  | 193 | . D TMPSET(ITEM,NODE) | 
|---|
|  | 194 | S I=0 | 
|---|
|  | 195 | F  S I=$O(^TMP("LRPX",$J,"AR",2,I)) Q:I<1  D | 
|---|
|  | 196 | . S ORGAN=+$G(^TMP("LRPX",$J,"AR",2,I,0)) | 
|---|
|  | 197 | . I 'ORGAN Q | 
|---|
|  | 198 | . S ITEM="A;O;"_ORGAN | 
|---|
|  | 199 | . S NODE=LRDFN_";"_SUB_";"_LRIDT_";2;"_I_";0" | 
|---|
|  | 200 | . D TMPSET(ITEM,NODE) | 
|---|
|  | 201 | . D SNOMED(LRDFN,LRIDT,SUB,I) | 
|---|
|  | 202 | Q | 
|---|
|  | 203 | ; | 
|---|
|  | 204 | SNOMED(LRDFN,LRIDT,APSUB,I) ; | 
|---|
|  | 205 | N ETIOL,II,III,ITEM,NODE,SNOMED,SUB,SUBS | 
|---|
|  | 206 | F SUBS="1D","2M","3F","4P" D | 
|---|
|  | 207 | . S SUB=+SUBS | 
|---|
|  | 208 | . S II=0 | 
|---|
|  | 209 | . F  S II=$O(^TMP("LRPX",$J,"AR",2,I,SUB,II)) Q:II<1  D | 
|---|
|  | 210 | .. S SNOMED=+$G(^TMP("LRPX",$J,"AR",2,I,SUB,II,0)) | 
|---|
|  | 211 | .. I 'SNOMED Q | 
|---|
|  | 212 | .. S ITEM="A;"_$E(SUBS,2)_";"_SNOMED | 
|---|
|  | 213 | .. S NODE=LRDFN_";"_APSUB_";"_LRIDT_";2;"_I_";"_SUB_";"_II_";0" | 
|---|
|  | 214 | .. D TMPSET(ITEM,NODE) | 
|---|
|  | 215 | .. I SUB'=2 Q | 
|---|
|  | 216 | .. S III=0 | 
|---|
|  | 217 | .. F  S III=$O(^TMP("LRPX",$J,"AR",2,I,SUB,II,1,III)) Q:III<1  D | 
|---|
|  | 218 | ... S ETIOL=+$G(^TMP("LRPX",$J,"AR",2,I,SUB,II,1,III,0)) | 
|---|
|  | 219 | ... I 'ETIOL Q | 
|---|
|  | 220 | ... S ITEM="A;E;"_ETIOL | 
|---|
|  | 221 | ... S NODE=LRDFN_";"_APSUB_";"_LRIDT_";2;"_I_";"_SUB_";"_II_";1;"_III_";0" | 
|---|
|  | 222 | ... D TMPSET(ITEM,NODE) | 
|---|
|  | 223 | Q | 
|---|
|  | 224 | ; | 
|---|
|  | 225 | TMPSET(ITEM,NODE) ; | 
|---|
|  | 226 | S ^TMP("LRPX",$J,"A",ITEM,NODE)="" | 
|---|
|  | 227 | Q | 
|---|
|  | 228 | ; | 
|---|
|  | 229 | CKDEL ; | 
|---|
|  | 230 | N ITEM,NODE | 
|---|
|  | 231 | S ITEM="" | 
|---|
|  | 232 | F  S ITEM=$O(^TMP("LRPX",$J,"B",ITEM)) Q:ITEM=""  D | 
|---|
|  | 233 | . S NODE="" | 
|---|
|  | 234 | . F  S NODE=$O(^TMP("LRPX",$J,"B",ITEM,NODE)) Q:NODE=""  D | 
|---|
|  | 235 | .. I $D(^TMP("LRPX",$J,"A",ITEM,NODE)) Q | 
|---|
|  | 236 | .. S ^TMP("LRPX",$J,"DEL",ITEM,NODE)="" | 
|---|
|  | 237 | Q | 
|---|
|  | 238 | ; | 
|---|
|  | 239 | CKADD ; | 
|---|
|  | 240 | N ITEM,NODE | 
|---|
|  | 241 | S ITEM="" | 
|---|
|  | 242 | F  S ITEM=$O(^TMP("LRPX",$J,"A",ITEM)) Q:ITEM=""  D | 
|---|
|  | 243 | . S NODE="" | 
|---|
|  | 244 | . F  S NODE=$O(^TMP("LRPX",$J,"A",ITEM,NODE)) Q:NODE=""  D | 
|---|
|  | 245 | .. I $D(^TMP("LRPX",$J,"B",ITEM,NODE)) Q | 
|---|
|  | 246 | .. S ^TMP("LRPX",$J,"ADD",ITEM,NODE)="" | 
|---|
|  | 247 | Q | 
|---|
|  | 248 | ; | 
|---|
|  | 249 | DEL(DFN,DATE) ; | 
|---|
|  | 250 | N ITEM,NODE | 
|---|
|  | 251 | S ITEM="" | 
|---|
|  | 252 | F  S ITEM=$O(^TMP("LRPX",$J,"DEL",ITEM)) Q:ITEM=""  D | 
|---|
|  | 253 | . S NODE="" | 
|---|
|  | 254 | . F  S NODE=$O(^TMP("LRPX",$J,"DEL",ITEM,NODE)) Q:NODE=""  D | 
|---|
|  | 255 | .. D KLAB^LRPX(DFN,DATE,ITEM,NODE) | 
|---|
|  | 256 | Q | 
|---|
|  | 257 | ; | 
|---|
|  | 258 | ADD(DFN,DATE) ; | 
|---|
|  | 259 | N ITEM,NODE | 
|---|
|  | 260 | S ITEM="" | 
|---|
|  | 261 | F  S ITEM=$O(^TMP("LRPX",$J,"ADD",ITEM)) Q:ITEM=""  D | 
|---|
|  | 262 | . S NODE="" | 
|---|
|  | 263 | . F  S NODE=$O(^TMP("LRPX",$J,"ADD",ITEM,NODE)) Q:NODE=""  D | 
|---|
|  | 264 | .. D SLAB^LRPX(DFN,DATE,ITEM,NODE) | 
|---|
|  | 265 | .. ; D TIMESTMP^LRLOG(DFN,$P(NODE,";",2),DATE,DUZ) ; *** future lab patch | 
|---|
|  | 266 | Q | 
|---|
|  | 267 | ; | 
|---|