| 1 | LRAPMRL ;DALOI/WTY/KLL- AP MODIFY RELEASED REPORT;12/04/01 | 
|---|
| 2 | ;;5.2;LAB SERVICE;**259,295,317,368**;Sep 27, 1994;Build 1 | 
|---|
| 3 | ; | 
|---|
| 4 | MAIN ; | 
|---|
| 5 | N LRQUIT,LRMSG,LREND,LRDATA,LRREL,LRAU,LREFPD,LRWM,LRCT,LRTMP,LRGMDF | 
|---|
| 6 | N LRFLD,LRDSC,LRCHG,LRXTMP,LRYTMP,LRIENS1,LRFILE,LRFLDA,LRAD1,LRIENS | 
|---|
| 7 | N LRORIEN,LRWPROOT,LRFDA,LRDA,LRFIELD,LRFILE1,LRIENS2,LRDT0,LRESCPT | 
|---|
| 8 | N LRQUIT1,LREDIAG,LRLOCK,LRNOTXT,LRORIEN | 
|---|
| 9 | S LRESCPT=0 | 
|---|
| 10 | D TITLE | 
|---|
| 11 | I LRQUIT D END Q | 
|---|
| 12 | D NOTICE | 
|---|
| 13 | I LRQUIT D END Q | 
|---|
| 14 | D SECTION | 
|---|
| 15 | I LRQUIT D END Q | 
|---|
| 16 | D WHAT | 
|---|
| 17 | I LRQUIT D END Q | 
|---|
| 18 | D CPTCHK | 
|---|
| 19 | ;D SECTION | 
|---|
| 20 | I LRQUIT D END Q | 
|---|
| 21 | D ASK | 
|---|
| 22 | I LRQUIT D END Q | 
|---|
| 23 | D SETDR^LRAPMRL1 | 
|---|
| 24 | D ACCYR | 
|---|
| 25 | I LRQUIT D END Q | 
|---|
| 26 | D ACCPN | 
|---|
| 27 | D END | 
|---|
| 28 | Q | 
|---|
| 29 | ACCPN ;Prompt for accesion number or patient name | 
|---|
| 30 | F  D  Q:LREND | 
|---|
| 31 | .S (LRQUIT,LREND)=0 | 
|---|
| 32 | .D CPTCHK | 
|---|
| 33 | .D LOOKUP^LRAPUTL(.LRDATA,LRH(0),LRO(68),LRSS,LRAD,LRAA) | 
|---|
| 34 | .I (LRDATA<1)!('$G(LRAN))!($G(LRAN)=-1) S LREND=1 Q | 
|---|
| 35 | .S LRDFN=LRDATA,LRI=LRDATA(1) | 
|---|
| 36 | .S LRLOCK="^LR(LRDFN"_$S(LRAU:")",1:",LRSS,LRI)") | 
|---|
| 37 | .L +@(LRLOCK):5 I '$T D  Q | 
|---|
| 38 | ..S LRMSG="This record is locked by another user.  " | 
|---|
| 39 | ..S LRMSG=LRMSG_"Please try again later." | 
|---|
| 40 | ..D EN^DDIOL(LRMSG,"","!!") K LRMSG | 
|---|
| 41 | .S LRIENS=$S('LRAU:LRI_",",1:"")_LRDFN_"," | 
|---|
| 42 | .D RELCHK^LRAPMRL1 | 
|---|
| 43 | .I LRQUIT D UNLOCK Q | 
|---|
| 44 | .D RELEASE^LRAPMRL1 | 
|---|
| 45 | .D QUEUPD^LRAPMRL1 | 
|---|
| 46 | .D:LRCAPA&'LRAU C^LRAPSWK | 
|---|
| 47 | .D:'LREDIAG SETDR^LRAPMRL1,EDIT^LRAPMRL1 | 
|---|
| 48 | .I LRQUIT D UNLOCK Q | 
|---|
| 49 | .I 'LRAU D | 
|---|
| 50 | ..F LRFLD=1,1.1,1.4,1.3 D  Q:LRQUIT | 
|---|
| 51 | ...Q:LREDIAG&(LRFLD'=1.4) | 
|---|
| 52 | ...Q:'LREDIAG&(LRFLD=1.4) | 
|---|
| 53 | ...Q:LRFLD=1.3&(LRSS'="SP") | 
|---|
| 54 | ...D ASK2 Q:LRQUIT!('LRGMDF) | 
|---|
| 55 | ...D SAVTXT | 
|---|
| 56 | ...K DR S DR=LRFLD | 
|---|
| 57 | ...D EDIT^LRAPMRL1 | 
|---|
| 58 | ...D COMPARE Q:LRQUIT | 
|---|
| 59 | ...D AUDIT Q:LRQUIT | 
|---|
| 60 | ...D STORE | 
|---|
| 61 | .I LRAU,LREDIAG D | 
|---|
| 62 | ..S LRDSC="PATHOLOGICAL DIAGNOSIS" | 
|---|
| 63 | ..S LRFLD=32.3 | 
|---|
| 64 | ..D SAVTXT | 
|---|
| 65 | ..K DR S DR=LRFLD | 
|---|
| 66 | ..D EDIT^LRAPMRL1 | 
|---|
| 67 | ..D COMPARE | 
|---|
| 68 | .I $G(SEX)["F","SPCY"[LRSS D DEL^LRWOMEN | 
|---|
| 69 | .I LRQUIT D UNLOCK Q | 
|---|
| 70 | .I LREDIAG D UNLOCK Q | 
|---|
| 71 | .D:LRESCPT CPTCODE^LRAPMRL1 | 
|---|
| 72 | .D UNLOCK | 
|---|
| 73 | Q | 
|---|
| 74 | TITLE ;Title | 
|---|
| 75 | S (LRQUIT,LRQUIT1)=0 | 
|---|
| 76 | D CK^LRAP | 
|---|
| 77 | I Y=-1 S LRQUIT=1 Q | 
|---|
| 78 | W @IOF | 
|---|
| 79 | S LRMSG="Modify Released Pathology Reports" | 
|---|
| 80 | S LRMSG(1)=$$CJ^XLFSTR(LRMSG,IOM) | 
|---|
| 81 | S LRMSG(1,"F")="!!" | 
|---|
| 82 | S LRMSG(2)="",LRMSG(2,"F")="!" | 
|---|
| 83 | D EN^DDIOL(.LRMSG) K LRMSG | 
|---|
| 84 | Q | 
|---|
| 85 | NOTICE ;Warn the user and allow an exit | 
|---|
| 86 | K LRMSG | 
|---|
| 87 | S LRMSG="NOTICE" | 
|---|
| 88 | S LRMSG(1)=$$CJ^XLFSTR(LRMSG,IOM),LRMSG(1,"F")="!!" | 
|---|
| 89 | S LRMSG(2)="",LRMSG(2,"F")="!" | 
|---|
| 90 | S LRMSG(3)=$C(7)_"This option allows modification of a verified/" | 
|---|
| 91 | S LRMSG(3)=LRMSG(3)_"released pathology report." | 
|---|
| 92 | S LRMSG(3,"F")="!?3" | 
|---|
| 93 | S LRMSG(4)="Continuing with this option will unrelease the report " | 
|---|
| 94 | S LRMSG(4)=LRMSG(4)_"and flag the report",LRMSG(4,"F")="!?3" | 
|---|
| 95 | S LRMSG(5)="as modified even if the data is unchanged.  It will " | 
|---|
| 96 | S LRMSG(5)=LRMSG(5)_"also be queued to the",LRMSG(5,"F")="!?3" | 
|---|
| 97 | S LRMSG(6)="final report queue so that it may be verified/released " | 
|---|
| 98 | S LRMSG(6)=LRMSG(6)_"again.",LRMSG(6,"F")="!?3" | 
|---|
| 99 | D EN^DDIOL(.LRMSG) K LRMSG | 
|---|
| 100 | W !! | 
|---|
| 101 | S DIR(0)="Y",DIR("A")="Do you wish to continue",DIR("B")="NO" | 
|---|
| 102 | D ^DIR | 
|---|
| 103 | S:Y<1 LRQUIT=1 | 
|---|
| 104 | Q | 
|---|
| 105 | WHAT ;What is to be edited | 
|---|
| 106 | W ! | 
|---|
| 107 | K DIR | 
|---|
| 108 | ;Don't ask to Edit Diagnosis if initial entry of diagnosis is turned | 
|---|
| 109 | ;  off at data entry for SP, CY, EM's | 
|---|
| 110 | S LRASK=1,XASK="" | 
|---|
| 111 | I 'LRAU D | 
|---|
| 112 | .S XASK=$S(LRSS="SP":11.2,LRSS="CY":11.3,1:"") | 
|---|
| 113 | .S:XASK="" XASK=$S(LRSS="EM":11.4,1:"") | 
|---|
| 114 | .S LRASK=$$GET1^DIQ(69.9,"1,",XASK,"I") | 
|---|
| 115 | S:LRASK DIR(0)="S^1:Edit Report;2:Edit Diagnosis" | 
|---|
| 116 | S:LRASK DIR("A")="Enter selection",DIR("B")=1 | 
|---|
| 117 | S:'LRASK DIR(0)="Y",DIR("B")="YES",DIR("A")="Edit Report?" | 
|---|
| 118 | D ^DIR | 
|---|
| 119 | I $D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) S LRQUIT=1 Q | 
|---|
| 120 | S:Y=0 LRQUIT=1 | 
|---|
| 121 | Q:LRQUIT=1 | 
|---|
| 122 | S LREDIAG=Y | 
|---|
| 123 | S LREDIAG=$S(LREDIAG=2:1,1:0) | 
|---|
| 124 | Q | 
|---|
| 125 | CPTCHK ;Determine if CPT is activated | 
|---|
| 126 | Q:$T(ES^LRCAPES)="" | 
|---|
| 127 | S LRESCPT=$$ES^LRCAPES() | 
|---|
| 128 | Q | 
|---|
| 129 | SECTION ;Choose Anatomic Pathology section (AU,SP,CY,EM) | 
|---|
| 130 | W ! | 
|---|
| 131 | D ^LRAP | 
|---|
| 132 | I '$D(Y)!('$D(LRSS)) S LRQUIT=1 Q | 
|---|
| 133 | S:LRO(68)="EM" LRO(68)="ELECTRON MICROSCOPY" | 
|---|
| 134 | S LRAU=0            ; LRAU = 0 - Not Autopsy | 
|---|
| 135 | S:LRSS="AU" LRAU=1  ;      = 1 - Autosy | 
|---|
| 136 | I LRCAPA D @(LRSS_"^LRAPSWK") | 
|---|
| 137 | S LRMSG(1)=LRO(68)_" ("_LRABV_")",LRMSG(1,"F")="!?20" | 
|---|
| 138 | S LRMSG(2)="",LRMSG(2,"F")="!" | 
|---|
| 139 | D EN^DDIOL(.LRMSG) K LRMSG | 
|---|
| 140 | Q | 
|---|
| 141 | ASK ;Ask etiology,function,procedure,disease,weights,measures | 
|---|
| 142 | I LREDIAG D  Q | 
|---|
| 143 | .S:'LRAU LREFPD=0 | 
|---|
| 144 | .S:LRAU LRWM=0 | 
|---|
| 145 | W ! | 
|---|
| 146 | S DIR(0)="Y",DIR("B")="NO" | 
|---|
| 147 | S DIR("A")="Edit etiology, function, procedure & disease" | 
|---|
| 148 | D ^DIR | 
|---|
| 149 | I Y="^" S LRQUIT=1 Q | 
|---|
| 150 | S LREFPD=$S(+Y:1,1:0) | 
|---|
| 151 | I LRAU D | 
|---|
| 152 | .W ! | 
|---|
| 153 | .S DIR(0)="Y",DIR("B")="NO" | 
|---|
| 154 | .S DIR("A")="Edit weights and measures" | 
|---|
| 155 | .D ^DIR | 
|---|
| 156 | .I Y="^" S LRQUIT=1 Q | 
|---|
| 157 | .S LRWM=$S(+Y:1,1:0) | 
|---|
| 158 | Q | 
|---|
| 159 | ACCYR ;Determine Accession Year | 
|---|
| 160 | D ACCYR^LRAPUTL(.LRAD1,LRH(0),LRAA,LRO(68)) | 
|---|
| 161 | I LRAD1=-1 S LRQUIT=1 Q | 
|---|
| 162 | I LRAD1 S LRAD=$P(LRAD1,U),LRH(0)=$P(LRAD1,U,2) | 
|---|
| 163 | Q | 
|---|
| 164 | ASK2 ;Ask about other fields | 
|---|
| 165 | S LRGMDF=0 | 
|---|
| 166 | K LRDSC | 
|---|
| 167 | I LRFLD=1!(LRFLD=1.1) D | 
|---|
| 168 | .S:LRFLD=1 LRFLDA=7 | 
|---|
| 169 | .S:LRFLD=1.1 LRFLDA=4 | 
|---|
| 170 | .S LRDSC=$S(LRFLD=1:"GROSS",LRFLD=1.1:"MICROSCOPIC",1:"") | 
|---|
| 171 | .S LRDSC=LRDSC_" DESCRIPTION" | 
|---|
| 172 | S:LRFLD=1.4 LRDSC="DIAGNOSIS",LRFLDA=5 | 
|---|
| 173 | S:LRFLD=1.3 LRDSC="FROZEN SECTION",LRFLDA=6 | 
|---|
| 174 | I 'LREDIAG D | 
|---|
| 175 | .S DIR(0)="Y",DIR("B")="NO" | 
|---|
| 176 | .S DIR("A")="Edit "_LRDSC | 
|---|
| 177 | .D ^DIR | 
|---|
| 178 | .I Y="^" S LRQUIT=1 Q | 
|---|
| 179 | .S LRGMDF=$S(+Y:1,1:0) | 
|---|
| 180 | S:LREDIAG LRGMDF=1 | 
|---|
| 181 | Q | 
|---|
| 182 | SAVTXT ;Save word processing field text. | 
|---|
| 183 | S LRNOTXT=0 | 
|---|
| 184 | K ^TMP("DIQ1",$J) | 
|---|
| 185 | S:'LRAU LRIENS=LRI_","_LRDFN_",",LRFILE=LRSF | 
|---|
| 186 | S:LRAU LRIENS=LRDFN_",",LRFILE=63 | 
|---|
| 187 | Q:LRFLD="" | 
|---|
| 188 | S LRTMP=$$GET1^DIQ(LRFILE,LRIENS,LRFLD,"","^TMP(""DIQ1"",$J)") | 
|---|
| 189 | I LRTMP="" D | 
|---|
| 190 | .K LRMSG | 
|---|
| 191 | .S LRMSG(1)="There is no "_LRDSC_" text to modify." | 
|---|
| 192 | .S LRMSG(1,"F")="!!" | 
|---|
| 193 | .S LRMSG(2)="Report was released before entering text." | 
|---|
| 194 | .S LRMSG(2,"F")="!" | 
|---|
| 195 | .D EN^DDIOL(.LRMSG) | 
|---|
| 196 | .S LRNOTXT=1 | 
|---|
| 197 | Q | 
|---|
| 198 | COMPARE ;Compare report text | 
|---|
| 199 | S (LRCHG,LRQUIT,LRCT)=0 | 
|---|
| 200 | S:'LRAU LRFILE="^LR(LRDFN,LRSS,LRI,LRFLD," | 
|---|
| 201 | S:LRAU LRFILE="^LR(LRDFN,82," | 
|---|
| 202 | I '$D(@(LRFILE_"0)")) D  Q | 
|---|
| 203 | .Q:LRNOTXT | 
|---|
| 204 | .S LRQUIT=1 | 
|---|
| 205 | F  S LRCT=$O(@(LRFILE_"LRCT)")) Q:'LRCT  D | 
|---|
| 206 | .S LRXTMP=@(LRFILE_"LRCT,0)") | 
|---|
| 207 | .I '$D(^TMP("DIQ1",$J,LRCT)) S LRCHG=1 Q | 
|---|
| 208 | .S LRYTMP=^TMP("DIQ1",$J,LRCT) | 
|---|
| 209 | .I LRXTMP'=LRYTMP S LRCHG=1 | 
|---|
| 210 | I 'LRCHG D | 
|---|
| 211 | .S LRCT=0 F  S LRCT=$O(^TMP("DIQ1",$J,LRCT)) Q:'LRCT  D | 
|---|
| 212 | ..I '$D(@(LRFILE_"LRCT,0)")) S LRCHG=1 | 
|---|
| 213 | I 'LRCHG D  Q | 
|---|
| 214 | .D EN^DDIOL("No changes made to "_LRDSC_".","","!!") | 
|---|
| 215 | .W ! | 
|---|
| 216 | .K ^TMP("DIQ1",$J) | 
|---|
| 217 | I LRCHG&(LRFLD=1.4!(LRFLD=32.3)) D  ;Indicate that the diagnosis | 
|---|
| 218 | .K LRFDA                            ;has been modified. | 
|---|
| 219 | .S:'LRAU LRFDA(LRSF,LRIENS,.172)=1 | 
|---|
| 220 | .;KLL-CORRECT BUG WHERE LRSF IS NULL, REPLACE LRSF WITH 63 | 
|---|
| 221 | .S:LRAU LRFDA(63,LRIENS,102.2)=1 | 
|---|
| 222 | .;S:LRAU LRFDA(LRSF,LRIENS,102.2)=1 | 
|---|
| 223 | .D FILE^DIE("","LRFDA") | 
|---|
| 224 | Q | 
|---|
| 225 | AUDIT ; | 
|---|
| 226 | N LRNTIME | 
|---|
| 227 | K LRFDA | 
|---|
| 228 | D NOW^%DTC S LRNTIME=% | 
|---|
| 229 | S LRIENS1="+1,"_LRIENS | 
|---|
| 230 | S LRFILE=+$$GET1^DID(LRSF,LRFLDA,"","SPECIFIER") | 
|---|
| 231 | I LRFILE="" S LRQUIT=1 Q | 
|---|
| 232 | S LRFDA(1,LRFILE,LRIENS1,.01)=LRNTIME | 
|---|
| 233 | S LRFDA(1,LRFILE,LRIENS1,.02)=DUZ | 
|---|
| 234 | D UPDATE^DIE("","LRFDA(1)","LRORIEN") | 
|---|
| 235 | Q | 
|---|
| 236 | STORE ; | 
|---|
| 237 | K LRIENS1 | 
|---|
| 238 | S LRIENS1=LRORIEN(1)_","_LRIENS | 
|---|
| 239 | S LRWPROOT="^TMP(""DIQ1"",$J)" | 
|---|
| 240 | D WP^DIE(LRFILE,LRIENS1,1,"",LRWPROOT) | 
|---|
| 241 | K ^TMP("DIQ1",$J) | 
|---|
| 242 | Q | 
|---|
| 243 | SUPRPT ;Supplementary Report | 
|---|
| 244 | K DIR | 
|---|
| 245 | S DIR(0)="Y",DIR("B")="NO" | 
|---|
| 246 | S DIR("A")="Edit SUPPLEMENTARY REPORTS" | 
|---|
| 247 | D ^DIR | 
|---|
| 248 | I Y="^" S LRQUIT1=1 Q | 
|---|
| 249 | Q:Y<1 | 
|---|
| 250 | N LRX,LRRLS,LRA,LRFLG,LRNOW | 
|---|
| 251 | D GETRPT^LRAPDSR Q:LRQUIT | 
|---|
| 252 | S LRRLS=1,LRRLS1=0 | 
|---|
| 253 | D COPY^LRAPDSR Q:LRQUIT | 
|---|
| 254 | D RPT^LRAPDSR Q:LRQUIT | 
|---|
| 255 | S Y=LRDA | 
|---|
| 256 | D RELEAS2^LRAPDSR | 
|---|
| 257 | D COMPARE^LRAPDSR Q:LRQUIT | 
|---|
| 258 | D UNRELEAS^LRAPDSR | 
|---|
| 259 | D UPDATE^LRAPDSR Q:LRQUIT | 
|---|
| 260 | D STORE^LRAPDSR | 
|---|
| 261 | Q | 
|---|
| 262 | UNLOCK ;Unlock the record | 
|---|
| 263 | D UPDATE^LRPXRM(LRDFN,$G(LRSS,"AU"),$G(LRI)) | 
|---|
| 264 | L -@(LRLOCK) | 
|---|
| 265 | Q | 
|---|
| 266 | END ;Clean-up variables and quit | 
|---|
| 267 | K ^TMP("LRAPBR",$J),^TMP("TIUP",$J) | 
|---|
| 268 | D CLEAN^DILF | 
|---|
| 269 | D:$T(CLEAN^LRCAPES)'="" CLEAN^LRCAPES | 
|---|
| 270 | D V^LRU | 
|---|
| 271 | Q | 
|---|