150 lines
4.7 KiB
Mathematica
150 lines
4.7 KiB
Mathematica
LEXAR ;ISA/FJF/KER-Look-up (Interpret User Response) ; 05/14/2003
|
|
;;2.0;LEXICON UTILITY;**3,19,25**;Sep 23, 1996
|
|
;
|
|
; User Responses
|
|
;
|
|
; Numeric -----------------------------------------------
|
|
;
|
|
; # Select Entry
|
|
;
|
|
; Numeric^Comment ----------------------------------------
|
|
;
|
|
; IEN^COMMENT Application comment about term
|
|
;
|
|
; Up-Arrow -----------------------------------------------
|
|
;
|
|
; ^# Jump to # on list
|
|
; ^ End dialog with the user
|
|
; ^^ End dialog with the application
|
|
;
|
|
; Question -----------------------------------------------
|
|
;
|
|
; ? Standard help in LEX("HLP")
|
|
; ?? Extended help in LEX("HLP")
|
|
; ?# Definition for # in LEX("HLP")
|
|
;
|
|
; Null ---------------------------------------------------
|
|
;
|
|
; Advance the selection list
|
|
;
|
|
; String -------------------------------------------------
|
|
;
|
|
; Narrative Return and store Unresolved Narrative
|
|
;
|
|
; --------------------------------------------------------
|
|
EN(LEXUR,LEXVDT) ; Interpret user response
|
|
I '$D(LEX) D APN Q
|
|
K LEX("HLP")
|
|
N LEXLL,LEXMAX
|
|
I $D(LEX("LIST",0)),+$G(^TMP("LEXSCH",$J,"NUM",0))>0 D
|
|
.S LEX=+$G(^TMP("LEXSCH",$J,"NUM",0))
|
|
I LEXUR="END",+LEX>0 S LEXUR="^"_LEX
|
|
S LEXLL=+$G(^TMP("LEXSCH",$J,"LEN",0))
|
|
S:LEXLL=0 LEXLL=5
|
|
S LEXMAX=+$G(^TMP("LEXSCH",$J,"LST",0))
|
|
S LEXUR=$G(LEXUR)
|
|
S (LEX("RES"),^TMP("LEXSCH",$J,"RES",0))=LEXUR
|
|
S ^TMP("LEXSCH",$J,"RES",1)="User Response"
|
|
; Timed out/Quit
|
|
I LEXUR="DTOUT"!(LEXUR="QUIT") D EDA Q
|
|
; Yes/No response list has one entry
|
|
I $G(LEX)=1,+LEXUR=0,LEXUR'["^" D
|
|
.I $E(LEXUR,1)="Y"!($E(LEXUR,1)="y") S LEXUR=1 Q
|
|
.I LEXUR["?" D HLP^LEXAR3 Q
|
|
.S LEXUR=""
|
|
; Null (Page Down)
|
|
I LEXUR="" D NULL^LEXAR2 D END Q
|
|
; Minus (Page Up)
|
|
I $E(LEXUR,1)="-" D LIST^LEXAL2("PGUP") D END Q
|
|
; Help
|
|
I LEXUR["?" D HLP^LEXAR3 D END Q
|
|
; Up Arrow
|
|
I LEXUR["^",$D(^TMP("LEXSCH",$J)) D UPA^LEXAR2(LEXUR) D END Q
|
|
; Select
|
|
I +LEXUR>0,+LEXUR'>LEXMAX D SEL^LEXAR4(+LEXUR,$G(LEXVDT)) D END Q
|
|
; User Unresolved Narrative
|
|
I LEXUR=$G(^TMP("LEXSCH",$J,"NAR",0)),+$G(^TMP("LEXSCH",$J,"UNR",0))=1 D D END Q
|
|
.D SAVE^LEXAR6
|
|
APN ; Application Unresolved Narrative
|
|
I LEXUR["^",'$D(^TMP("LEXSCH",$J)),+LEXUR>0,$D(^LEX(757.01,+LEXUR,0)),$L($P(LEXUR,"^",2)) D Q
|
|
.K LEX
|
|
.D COM^LEXAR6(LEXUR)
|
|
D END
|
|
Q
|
|
END ; End of Interpretation of the Users Response
|
|
I $D(^TMP("LEXSCH",$J)) D
|
|
.S (LEX("RES"),^TMP("LEXSCH",$J,"RES",0))=LEXUR
|
|
.S ^TMP("LEXSCH",$J,"RES",1)="User Response"
|
|
I $D(LEX("LIST",0)),+$G(^TMP("LEXSCH",$J,"NUM",0))>0 D
|
|
.S LEX=+$G(^TMP("LEXSCH",$J,"NUM",0))
|
|
Q
|
|
SEL ; Selection made
|
|
K LEX("RES"),LEX("ERR"),LEX("LIST"),LEX("MIN"),LEX("MAX"),LEX("MAT"),LEX("HLP")
|
|
D NAR,EMF,KLST,KSCH
|
|
S:$D(LEX("SEL")) LEX=0
|
|
Q
|
|
EDU ; End Dialog with the User
|
|
D NAR,EMF,KLST,KARL,KSCH
|
|
S LEX=0
|
|
Q
|
|
EDA ; End Dialog with the Application
|
|
K LEX
|
|
D KLST,KSCH
|
|
Q
|
|
LST ; List exist
|
|
D NAR,MAX,MIN,MAT,EML
|
|
Q
|
|
;
|
|
KLST ; Kill Global List
|
|
; ^TMP("LEXFND",$J)
|
|
; ^TMP("LEXHIT",$J)
|
|
K ^TMP("LEXFND",$J),^TMP("LEXHIT",$J)
|
|
Q
|
|
KSCH ; Kill Search Variables
|
|
; ^TMP("LEXSCH",$J)
|
|
I +$G(LEX)'=0 K ^TMP("LEXSCH",$J) ; PCH 3 Do not kill if not found condition exist
|
|
Q
|
|
KARL ; Kill Array List and supporting variables
|
|
; LEX("LIST"),LEX("MAT"),LEX("MIN"),LEX("MAX")
|
|
K LEX("LIST"),LEX("MAT"),LEX("MIN"),LEX("MAX")
|
|
K LEX("EXC"),LEX("EXM")
|
|
Q
|
|
LEX ; Set LEX to the number of entries on the list
|
|
S:+$G(^TMP("LEXSCH",$J,"NUM",0))>0 LEX=+$G(^TMP("LEXSCH",$J,"NUM",0))
|
|
Q
|
|
NAR ; Set LEX("NAR") to the user narrative
|
|
K LEX("NAR")
|
|
S:$L($G(^TMP("LEXSCH",$J,"NAR",0))) LEX("NAR")=$G(^TMP("LEXSCH",$J,"NAR",0))
|
|
Q
|
|
MAX ; Set LEX("MAX") to the last entry reviewed by the user
|
|
K LEX("MAX")
|
|
S:+$G(^TMP("LEXSCH",$J,"LST",0))>0 LEX("MAX")=+$G(^TMP("LEXSCH",$J,"LST",0))
|
|
Q
|
|
MIN ; Set LEX("MIN") to the first entry reviewed by the user
|
|
K LEX("MIN")
|
|
S:+$G(LEX("MAX"))>0 LEX("MIN")=1
|
|
Q
|
|
EML ; Set LEX("EXM") post-selection IEN^Expression text
|
|
K LEX("EXM")
|
|
S:$L($G(^TMP("LEXSCH",$J,"EXM",2))) LEX("EXM")=$G(^TMP("LEXSCH",$J,"EXM",2))
|
|
Q
|
|
EMF ; Set LEX("EXM") pre-selection LIST#^Expression text
|
|
K LEX("EXM")
|
|
I $L($G(^TMP("LEXSCH",$J,"EXM",0))),$L($G(^TMP("LEXSCH",$J,"EXM",1))) D
|
|
.S LEX("EXM")=$G(^TMP("LEXSCH",$J,"EXM",0))_"^"_$G(^TMP("LEXSCH",$J,"EXM",1))
|
|
Q
|
|
MAT ; Set "matches found" string and top of list flag
|
|
; LEX("MAT") # Matches found
|
|
; ^TMP("LEXSCH",$J,"TOL",0) 1 - Top of list
|
|
; 0 - Not top of list
|
|
K LEX("MAT")
|
|
I $D(LEX("SEL"))!('$D(^TMP("LEXSCH",$J)))!('$D(LEX("LIST"))) Q
|
|
N LEXOL,LEXL
|
|
S LEXOL=$G(^TMP("LEXSCH",$J,"TOL",0))
|
|
S LEXL=$O(LEX("LIST",0))
|
|
I LEXOL'=0,LEXL=1 S ^TMP("LEXSCH",$J,"TOL",0)=1
|
|
I LEXOL'=0,LEXL'=1 S ^TMP("LEXSCH",$J,"TOL",0)=0
|
|
I LEXOL=1,$L($G(^TMP("LEXSCH",$J,"MAT",0))) D
|
|
.S LEX("MAT")=$G(^TMP("LEXSCH",$J,"MAT",0))
|
|
Q
|