272 lines
7.1 KiB
Mathematica
272 lines
7.1 KiB
Mathematica
|
LRAPMRL ;DALOI/WTY/KLL- AP MODIFY RELEASED REPORT;12/04/01
|
||
|
;;5.2;LAB SERVICE;**259,295,317,368**;Sep 27, 1994;Build 1
|
||
|
;
|
||
|
MAIN ;
|
||
|
N LRQUIT,LRMSG,LREND,LRDATA,LRREL,LRAU,LREFPD,LRWM,LRCT,LRTMP,LRGMDF
|
||
|
N LRFLD,LRDSC,LRCHG,LRXTMP,LRYTMP,LRIENS1,LRFILE,LRFLDA,LRAD1,LRIENS
|
||
|
N LRORIEN,LRWPROOT,LRFDA,LRDA,LRFIELD,LRFILE1,LRIENS2,LRDT0,LRESCPT
|
||
|
N LRQUIT1,LREDIAG,LRLOCK,LRNOTXT,LRORIEN
|
||
|
S LRESCPT=0
|
||
|
D TITLE
|
||
|
I LRQUIT D END Q
|
||
|
D NOTICE
|
||
|
I LRQUIT D END Q
|
||
|
D SECTION
|
||
|
I LRQUIT D END Q
|
||
|
D WHAT
|
||
|
I LRQUIT D END Q
|
||
|
D CPTCHK
|
||
|
;D SECTION
|
||
|
I LRQUIT D END Q
|
||
|
D ASK
|
||
|
I LRQUIT D END Q
|
||
|
D SETDR^LRAPMRL1
|
||
|
D ACCYR
|
||
|
I LRQUIT D END Q
|
||
|
D ACCPN
|
||
|
D END
|
||
|
Q
|
||
|
ACCPN ;Prompt for accesion number or patient name
|
||
|
F D Q:LREND
|
||
|
.S (LRQUIT,LREND)=0
|
||
|
.D CPTCHK
|
||
|
.D LOOKUP^LRAPUTL(.LRDATA,LRH(0),LRO(68),LRSS,LRAD,LRAA)
|
||
|
.I (LRDATA<1)!('$G(LRAN))!($G(LRAN)=-1) S LREND=1 Q
|
||
|
.S LRDFN=LRDATA,LRI=LRDATA(1)
|
||
|
.S LRLOCK="^LR(LRDFN"_$S(LRAU:")",1:",LRSS,LRI)")
|
||
|
.L +@(LRLOCK):5 I '$T D Q
|
||
|
..S LRMSG="This record is locked by another user. "
|
||
|
..S LRMSG=LRMSG_"Please try again later."
|
||
|
..D EN^DDIOL(LRMSG,"","!!") K LRMSG
|
||
|
.S LRIENS=$S('LRAU:LRI_",",1:"")_LRDFN_","
|
||
|
.D RELCHK^LRAPMRL1
|
||
|
.I LRQUIT D UNLOCK Q
|
||
|
.D RELEASE^LRAPMRL1
|
||
|
.D QUEUPD^LRAPMRL1
|
||
|
.D:LRCAPA&'LRAU C^LRAPSWK
|
||
|
.D:'LREDIAG SETDR^LRAPMRL1,EDIT^LRAPMRL1
|
||
|
.I LRQUIT D UNLOCK Q
|
||
|
.I 'LRAU D
|
||
|
..F LRFLD=1,1.1,1.4,1.3 D Q:LRQUIT
|
||
|
...Q:LREDIAG&(LRFLD'=1.4)
|
||
|
...Q:'LREDIAG&(LRFLD=1.4)
|
||
|
...Q:LRFLD=1.3&(LRSS'="SP")
|
||
|
...D ASK2 Q:LRQUIT!('LRGMDF)
|
||
|
...D SAVTXT
|
||
|
...K DR S DR=LRFLD
|
||
|
...D EDIT^LRAPMRL1
|
||
|
...D COMPARE Q:LRQUIT
|
||
|
...D AUDIT Q:LRQUIT
|
||
|
...D STORE
|
||
|
.I LRAU,LREDIAG D
|
||
|
..S LRDSC="PATHOLOGICAL DIAGNOSIS"
|
||
|
..S LRFLD=32.3
|
||
|
..D SAVTXT
|
||
|
..K DR S DR=LRFLD
|
||
|
..D EDIT^LRAPMRL1
|
||
|
..D COMPARE
|
||
|
.I $G(SEX)["F","SPCY"[LRSS D DEL^LRWOMEN
|
||
|
.I LRQUIT D UNLOCK Q
|
||
|
.I LREDIAG D UNLOCK Q
|
||
|
.D:LRESCPT CPTCODE^LRAPMRL1
|
||
|
.D UNLOCK
|
||
|
Q
|
||
|
TITLE ;Title
|
||
|
S (LRQUIT,LRQUIT1)=0
|
||
|
D CK^LRAP
|
||
|
I Y=-1 S LRQUIT=1 Q
|
||
|
W @IOF
|
||
|
S LRMSG="Modify Released Pathology Reports"
|
||
|
S LRMSG(1)=$$CJ^XLFSTR(LRMSG,IOM)
|
||
|
S LRMSG(1,"F")="!!"
|
||
|
S LRMSG(2)="",LRMSG(2,"F")="!"
|
||
|
D EN^DDIOL(.LRMSG) K LRMSG
|
||
|
Q
|
||
|
NOTICE ;Warn the user and allow an exit
|
||
|
K LRMSG
|
||
|
S LRMSG="NOTICE"
|
||
|
S LRMSG(1)=$$CJ^XLFSTR(LRMSG,IOM),LRMSG(1,"F")="!!"
|
||
|
S LRMSG(2)="",LRMSG(2,"F")="!"
|
||
|
S LRMSG(3)=$C(7)_"This option allows modification of a verified/"
|
||
|
S LRMSG(3)=LRMSG(3)_"released pathology report."
|
||
|
S LRMSG(3,"F")="!?3"
|
||
|
S LRMSG(4)="Continuing with this option will unrelease the report "
|
||
|
S LRMSG(4)=LRMSG(4)_"and flag the report",LRMSG(4,"F")="!?3"
|
||
|
S LRMSG(5)="as modified even if the data is unchanged. It will "
|
||
|
S LRMSG(5)=LRMSG(5)_"also be queued to the",LRMSG(5,"F")="!?3"
|
||
|
S LRMSG(6)="final report queue so that it may be verified/released "
|
||
|
S LRMSG(6)=LRMSG(6)_"again.",LRMSG(6,"F")="!?3"
|
||
|
D EN^DDIOL(.LRMSG) K LRMSG
|
||
|
W !!
|
||
|
S DIR(0)="Y",DIR("A")="Do you wish to continue",DIR("B")="NO"
|
||
|
D ^DIR
|
||
|
S:Y<1 LRQUIT=1
|
||
|
Q
|
||
|
WHAT ;What is to be edited
|
||
|
W !
|
||
|
K DIR
|
||
|
;Don't ask to Edit Diagnosis if initial entry of diagnosis is turned
|
||
|
; off at data entry for SP, CY, EM's
|
||
|
S LRASK=1,XASK=""
|
||
|
I 'LRAU D
|
||
|
.S XASK=$S(LRSS="SP":11.2,LRSS="CY":11.3,1:"")
|
||
|
.S:XASK="" XASK=$S(LRSS="EM":11.4,1:"")
|
||
|
.S LRASK=$$GET1^DIQ(69.9,"1,",XASK,"I")
|
||
|
S:LRASK DIR(0)="S^1:Edit Report;2:Edit Diagnosis"
|
||
|
S:LRASK DIR("A")="Enter selection",DIR("B")=1
|
||
|
S:'LRASK DIR(0)="Y",DIR("B")="YES",DIR("A")="Edit Report?"
|
||
|
D ^DIR
|
||
|
I $D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) S LRQUIT=1 Q
|
||
|
S:Y=0 LRQUIT=1
|
||
|
Q:LRQUIT=1
|
||
|
S LREDIAG=Y
|
||
|
S LREDIAG=$S(LREDIAG=2:1,1:0)
|
||
|
Q
|
||
|
CPTCHK ;Determine if CPT is activated
|
||
|
Q:$T(ES^LRCAPES)=""
|
||
|
S LRESCPT=$$ES^LRCAPES()
|
||
|
Q
|
||
|
SECTION ;Choose Anatomic Pathology section (AU,SP,CY,EM)
|
||
|
W !
|
||
|
D ^LRAP
|
||
|
I '$D(Y)!('$D(LRSS)) S LRQUIT=1 Q
|
||
|
S:LRO(68)="EM" LRO(68)="ELECTRON MICROSCOPY"
|
||
|
S LRAU=0 ; LRAU = 0 - Not Autopsy
|
||
|
S:LRSS="AU" LRAU=1 ; = 1 - Autosy
|
||
|
I LRCAPA D @(LRSS_"^LRAPSWK")
|
||
|
S LRMSG(1)=LRO(68)_" ("_LRABV_")",LRMSG(1,"F")="!?20"
|
||
|
S LRMSG(2)="",LRMSG(2,"F")="!"
|
||
|
D EN^DDIOL(.LRMSG) K LRMSG
|
||
|
Q
|
||
|
ASK ;Ask etiology,function,procedure,disease,weights,measures
|
||
|
I LREDIAG D Q
|
||
|
.S:'LRAU LREFPD=0
|
||
|
.S:LRAU LRWM=0
|
||
|
W !
|
||
|
S DIR(0)="Y",DIR("B")="NO"
|
||
|
S DIR("A")="Edit etiology, function, procedure & disease"
|
||
|
D ^DIR
|
||
|
I Y="^" S LRQUIT=1 Q
|
||
|
S LREFPD=$S(+Y:1,1:0)
|
||
|
I LRAU D
|
||
|
.W !
|
||
|
.S DIR(0)="Y",DIR("B")="NO"
|
||
|
.S DIR("A")="Edit weights and measures"
|
||
|
.D ^DIR
|
||
|
.I Y="^" S LRQUIT=1 Q
|
||
|
.S LRWM=$S(+Y:1,1:0)
|
||
|
Q
|
||
|
ACCYR ;Determine Accession Year
|
||
|
D ACCYR^LRAPUTL(.LRAD1,LRH(0),LRAA,LRO(68))
|
||
|
I LRAD1=-1 S LRQUIT=1 Q
|
||
|
I LRAD1 S LRAD=$P(LRAD1,U),LRH(0)=$P(LRAD1,U,2)
|
||
|
Q
|
||
|
ASK2 ;Ask about other fields
|
||
|
S LRGMDF=0
|
||
|
K LRDSC
|
||
|
I LRFLD=1!(LRFLD=1.1) D
|
||
|
.S:LRFLD=1 LRFLDA=7
|
||
|
.S:LRFLD=1.1 LRFLDA=4
|
||
|
.S LRDSC=$S(LRFLD=1:"GROSS",LRFLD=1.1:"MICROSCOPIC",1:"")
|
||
|
.S LRDSC=LRDSC_" DESCRIPTION"
|
||
|
S:LRFLD=1.4 LRDSC="DIAGNOSIS",LRFLDA=5
|
||
|
S:LRFLD=1.3 LRDSC="FROZEN SECTION",LRFLDA=6
|
||
|
I 'LREDIAG D
|
||
|
.S DIR(0)="Y",DIR("B")="NO"
|
||
|
.S DIR("A")="Edit "_LRDSC
|
||
|
.D ^DIR
|
||
|
.I Y="^" S LRQUIT=1 Q
|
||
|
.S LRGMDF=$S(+Y:1,1:0)
|
||
|
S:LREDIAG LRGMDF=1
|
||
|
Q
|
||
|
SAVTXT ;Save word processing field text.
|
||
|
S LRNOTXT=0
|
||
|
K ^TMP("DIQ1",$J)
|
||
|
S:'LRAU LRIENS=LRI_","_LRDFN_",",LRFILE=LRSF
|
||
|
S:LRAU LRIENS=LRDFN_",",LRFILE=63
|
||
|
Q:LRFLD=""
|
||
|
S LRTMP=$$GET1^DIQ(LRFILE,LRIENS,LRFLD,"","^TMP(""DIQ1"",$J)")
|
||
|
I LRTMP="" D
|
||
|
.K LRMSG
|
||
|
.S LRMSG(1)="There is no "_LRDSC_" text to modify."
|
||
|
.S LRMSG(1,"F")="!!"
|
||
|
.S LRMSG(2)="Report was released before entering text."
|
||
|
.S LRMSG(2,"F")="!"
|
||
|
.D EN^DDIOL(.LRMSG)
|
||
|
.S LRNOTXT=1
|
||
|
Q
|
||
|
COMPARE ;Compare report text
|
||
|
S (LRCHG,LRQUIT,LRCT)=0
|
||
|
S:'LRAU LRFILE="^LR(LRDFN,LRSS,LRI,LRFLD,"
|
||
|
S:LRAU LRFILE="^LR(LRDFN,82,"
|
||
|
I '$D(@(LRFILE_"0)")) D Q
|
||
|
.Q:LRNOTXT
|
||
|
.S LRQUIT=1
|
||
|
F S LRCT=$O(@(LRFILE_"LRCT)")) Q:'LRCT D
|
||
|
.S LRXTMP=@(LRFILE_"LRCT,0)")
|
||
|
.I '$D(^TMP("DIQ1",$J,LRCT)) S LRCHG=1 Q
|
||
|
.S LRYTMP=^TMP("DIQ1",$J,LRCT)
|
||
|
.I LRXTMP'=LRYTMP S LRCHG=1
|
||
|
I 'LRCHG D
|
||
|
.S LRCT=0 F S LRCT=$O(^TMP("DIQ1",$J,LRCT)) Q:'LRCT D
|
||
|
..I '$D(@(LRFILE_"LRCT,0)")) S LRCHG=1
|
||
|
I 'LRCHG D Q
|
||
|
.D EN^DDIOL("No changes made to "_LRDSC_".","","!!")
|
||
|
.W !
|
||
|
.K ^TMP("DIQ1",$J)
|
||
|
I LRCHG&(LRFLD=1.4!(LRFLD=32.3)) D ;Indicate that the diagnosis
|
||
|
.K LRFDA ;has been modified.
|
||
|
.S:'LRAU LRFDA(LRSF,LRIENS,.172)=1
|
||
|
.;KLL-CORRECT BUG WHERE LRSF IS NULL, REPLACE LRSF WITH 63
|
||
|
.S:LRAU LRFDA(63,LRIENS,102.2)=1
|
||
|
.;S:LRAU LRFDA(LRSF,LRIENS,102.2)=1
|
||
|
.D FILE^DIE("","LRFDA")
|
||
|
Q
|
||
|
AUDIT ;
|
||
|
N LRNTIME
|
||
|
K LRFDA
|
||
|
D NOW^%DTC S LRNTIME=%
|
||
|
S LRIENS1="+1,"_LRIENS
|
||
|
S LRFILE=+$$GET1^DID(LRSF,LRFLDA,"","SPECIFIER")
|
||
|
I LRFILE="" S LRQUIT=1 Q
|
||
|
S LRFDA(1,LRFILE,LRIENS1,.01)=LRNTIME
|
||
|
S LRFDA(1,LRFILE,LRIENS1,.02)=DUZ
|
||
|
D UPDATE^DIE("","LRFDA(1)","LRORIEN")
|
||
|
Q
|
||
|
STORE ;
|
||
|
K LRIENS1
|
||
|
S LRIENS1=LRORIEN(1)_","_LRIENS
|
||
|
S LRWPROOT="^TMP(""DIQ1"",$J)"
|
||
|
D WP^DIE(LRFILE,LRIENS1,1,"",LRWPROOT)
|
||
|
K ^TMP("DIQ1",$J)
|
||
|
Q
|
||
|
SUPRPT ;Supplementary Report
|
||
|
K DIR
|
||
|
S DIR(0)="Y",DIR("B")="NO"
|
||
|
S DIR("A")="Edit SUPPLEMENTARY REPORTS"
|
||
|
D ^DIR
|
||
|
I Y="^" S LRQUIT1=1 Q
|
||
|
Q:Y<1
|
||
|
N LRX,LRRLS,LRA,LRFLG,LRNOW
|
||
|
D GETRPT^LRAPDSR Q:LRQUIT
|
||
|
S LRRLS=1,LRRLS1=0
|
||
|
D COPY^LRAPDSR Q:LRQUIT
|
||
|
D RPT^LRAPDSR Q:LRQUIT
|
||
|
S Y=LRDA
|
||
|
D RELEAS2^LRAPDSR
|
||
|
D COMPARE^LRAPDSR Q:LRQUIT
|
||
|
D UNRELEAS^LRAPDSR
|
||
|
D UPDATE^LRAPDSR Q:LRQUIT
|
||
|
D STORE^LRAPDSR
|
||
|
Q
|
||
|
UNLOCK ;Unlock the record
|
||
|
D UPDATE^LRPXRM(LRDFN,$G(LRSS,"AU"),$G(LRI))
|
||
|
L -@(LRLOCK)
|
||
|
Q
|
||
|
END ;Clean-up variables and quit
|
||
|
K ^TMP("LRAPBR",$J),^TMP("TIUP",$J)
|
||
|
D CLEAN^DILF
|
||
|
D:$T(CLEAN^LRCAPES)'="" CLEAN^LRCAPES
|
||
|
D V^LRU
|
||
|
Q
|