| 1 | LEXAR ;ISA/FJF/KER-Look-up (Interpret User Response) ; 05/14/2003 | 
|---|
| 2 | ;;2.0;LEXICON UTILITY;**3,19,25**;Sep 23, 1996;Build 1 | 
|---|
| 3 | ; | 
|---|
| 4 | ; User Responses | 
|---|
| 5 | ; | 
|---|
| 6 | ; Numeric  ----------------------------------------------- | 
|---|
| 7 | ; | 
|---|
| 8 | ; #             Select Entry | 
|---|
| 9 | ; | 
|---|
| 10 | ; Numeric^Comment ---------------------------------------- | 
|---|
| 11 | ; | 
|---|
| 12 | ; IEN^COMMENT   Application comment about term | 
|---|
| 13 | ; | 
|---|
| 14 | ; Up-Arrow ----------------------------------------------- | 
|---|
| 15 | ; | 
|---|
| 16 | ; ^#            Jump to # on list | 
|---|
| 17 | ; ^             End dialog with the user | 
|---|
| 18 | ; ^^            End dialog with the application | 
|---|
| 19 | ; | 
|---|
| 20 | ; Question ----------------------------------------------- | 
|---|
| 21 | ; | 
|---|
| 22 | ; ?             Standard help in LEX("HLP") | 
|---|
| 23 | ; ??            Extended help in LEX("HLP") | 
|---|
| 24 | ; ?#            Definition for # in LEX("HLP") | 
|---|
| 25 | ; | 
|---|
| 26 | ; Null --------------------------------------------------- | 
|---|
| 27 | ; | 
|---|
| 28 | ;               Advance the selection list | 
|---|
| 29 | ; | 
|---|
| 30 | ; String ------------------------------------------------- | 
|---|
| 31 | ; | 
|---|
| 32 | ; Narrative     Return and store Unresolved Narrative | 
|---|
| 33 | ; | 
|---|
| 34 | ; -------------------------------------------------------- | 
|---|
| 35 | EN(LEXUR,LEXVDT) ; Interpret user response | 
|---|
| 36 | I '$D(LEX) D APN Q | 
|---|
| 37 | K LEX("HLP") | 
|---|
| 38 | N LEXLL,LEXMAX | 
|---|
| 39 | I $D(LEX("LIST",0)),+$G(^TMP("LEXSCH",$J,"NUM",0))>0 D | 
|---|
| 40 | .S LEX=+$G(^TMP("LEXSCH",$J,"NUM",0)) | 
|---|
| 41 | I LEXUR="END",+LEX>0 S LEXUR="^"_LEX | 
|---|
| 42 | S LEXLL=+$G(^TMP("LEXSCH",$J,"LEN",0)) | 
|---|
| 43 | S:LEXLL=0 LEXLL=5 | 
|---|
| 44 | S LEXMAX=+$G(^TMP("LEXSCH",$J,"LST",0)) | 
|---|
| 45 | S LEXUR=$G(LEXUR) | 
|---|
| 46 | S (LEX("RES"),^TMP("LEXSCH",$J,"RES",0))=LEXUR | 
|---|
| 47 | S ^TMP("LEXSCH",$J,"RES",1)="User Response" | 
|---|
| 48 | ; Timed out/Quit | 
|---|
| 49 | I LEXUR="DTOUT"!(LEXUR="QUIT") D EDA Q | 
|---|
| 50 | ; Yes/No response list has one entry | 
|---|
| 51 | I $G(LEX)=1,+LEXUR=0,LEXUR'["^" D | 
|---|
| 52 | .I $E(LEXUR,1)="Y"!($E(LEXUR,1)="y") S LEXUR=1 Q | 
|---|
| 53 | .I LEXUR["?" D HLP^LEXAR3 Q | 
|---|
| 54 | .S LEXUR="" | 
|---|
| 55 | ; Null (Page Down) | 
|---|
| 56 | I LEXUR="" D NULL^LEXAR2 D END Q | 
|---|
| 57 | ; Minus (Page Up) | 
|---|
| 58 | I $E(LEXUR,1)="-" D LIST^LEXAL2("PGUP") D END Q | 
|---|
| 59 | ; Help | 
|---|
| 60 | I LEXUR["?" D HLP^LEXAR3 D END Q | 
|---|
| 61 | ; Up Arrow | 
|---|
| 62 | I LEXUR["^",$D(^TMP("LEXSCH",$J)) D UPA^LEXAR2(LEXUR) D END Q | 
|---|
| 63 | ; Select | 
|---|
| 64 | I +LEXUR>0,+LEXUR'>LEXMAX D SEL^LEXAR4(+LEXUR,$G(LEXVDT)) D END Q | 
|---|
| 65 | ; User Unresolved Narrative | 
|---|
| 66 | I LEXUR=$G(^TMP("LEXSCH",$J,"NAR",0)),+$G(^TMP("LEXSCH",$J,"UNR",0))=1 D  D END Q | 
|---|
| 67 | .D SAVE^LEXAR6 | 
|---|
| 68 | APN ; Application Unresolved Narrative | 
|---|
| 69 | I LEXUR["^",'$D(^TMP("LEXSCH",$J)),+LEXUR>0,$D(^LEX(757.01,+LEXUR,0)),$L($P(LEXUR,"^",2)) D  Q | 
|---|
| 70 | .K LEX | 
|---|
| 71 | .D COM^LEXAR6(LEXUR) | 
|---|
| 72 | D END | 
|---|
| 73 | Q | 
|---|
| 74 | END ; End of Interpretation of the Users Response | 
|---|
| 75 | I $D(^TMP("LEXSCH",$J)) D | 
|---|
| 76 | .S (LEX("RES"),^TMP("LEXSCH",$J,"RES",0))=LEXUR | 
|---|
| 77 | .S ^TMP("LEXSCH",$J,"RES",1)="User Response" | 
|---|
| 78 | I $D(LEX("LIST",0)),+$G(^TMP("LEXSCH",$J,"NUM",0))>0 D | 
|---|
| 79 | .S LEX=+$G(^TMP("LEXSCH",$J,"NUM",0)) | 
|---|
| 80 | Q | 
|---|
| 81 | SEL ; Selection made | 
|---|
| 82 | K LEX("RES"),LEX("ERR"),LEX("LIST"),LEX("MIN"),LEX("MAX"),LEX("MAT"),LEX("HLP") | 
|---|
| 83 | D NAR,EMF,KLST,KSCH | 
|---|
| 84 | S:$D(LEX("SEL")) LEX=0 | 
|---|
| 85 | Q | 
|---|
| 86 | EDU ; End Dialog with the User | 
|---|
| 87 | D NAR,EMF,KLST,KARL,KSCH | 
|---|
| 88 | S LEX=0 | 
|---|
| 89 | Q | 
|---|
| 90 | EDA ; End Dialog with the Application | 
|---|
| 91 | K LEX | 
|---|
| 92 | D KLST,KSCH | 
|---|
| 93 | Q | 
|---|
| 94 | LST ; List exist | 
|---|
| 95 | D NAR,MAX,MIN,MAT,EML | 
|---|
| 96 | Q | 
|---|
| 97 | ; | 
|---|
| 98 | KLST ; Kill Global List | 
|---|
| 99 | ;      ^TMP("LEXFND",$J) | 
|---|
| 100 | ;      ^TMP("LEXHIT",$J) | 
|---|
| 101 | K ^TMP("LEXFND",$J),^TMP("LEXHIT",$J) | 
|---|
| 102 | Q | 
|---|
| 103 | KSCH ; Kill Search Variables | 
|---|
| 104 | ;      ^TMP("LEXSCH",$J) | 
|---|
| 105 | I +$G(LEX)'=0 K ^TMP("LEXSCH",$J)  ; PCH 3 Do not kill if not found condition exist | 
|---|
| 106 | Q | 
|---|
| 107 | KARL ; Kill Array List and supporting variables | 
|---|
| 108 | ;       LEX("LIST"),LEX("MAT"),LEX("MIN"),LEX("MAX") | 
|---|
| 109 | K LEX("LIST"),LEX("MAT"),LEX("MIN"),LEX("MAX") | 
|---|
| 110 | K LEX("EXC"),LEX("EXM") | 
|---|
| 111 | Q | 
|---|
| 112 | LEX ; Set LEX to the number of entries on the list | 
|---|
| 113 | S:+$G(^TMP("LEXSCH",$J,"NUM",0))>0 LEX=+$G(^TMP("LEXSCH",$J,"NUM",0)) | 
|---|
| 114 | Q | 
|---|
| 115 | NAR ; Set LEX("NAR") to the user narrative | 
|---|
| 116 | K LEX("NAR") | 
|---|
| 117 | S:$L($G(^TMP("LEXSCH",$J,"NAR",0))) LEX("NAR")=$G(^TMP("LEXSCH",$J,"NAR",0)) | 
|---|
| 118 | Q | 
|---|
| 119 | MAX ; Set LEX("MAX") to the last entry reviewed by the user | 
|---|
| 120 | K LEX("MAX") | 
|---|
| 121 | S:+$G(^TMP("LEXSCH",$J,"LST",0))>0 LEX("MAX")=+$G(^TMP("LEXSCH",$J,"LST",0)) | 
|---|
| 122 | Q | 
|---|
| 123 | MIN ; Set LEX("MIN") to the first entry reviewed by the user | 
|---|
| 124 | K LEX("MIN") | 
|---|
| 125 | S:+$G(LEX("MAX"))>0 LEX("MIN")=1 | 
|---|
| 126 | Q | 
|---|
| 127 | EML ; Set LEX("EXM") post-selection IEN^Expression text | 
|---|
| 128 | K LEX("EXM") | 
|---|
| 129 | S:$L($G(^TMP("LEXSCH",$J,"EXM",2))) LEX("EXM")=$G(^TMP("LEXSCH",$J,"EXM",2)) | 
|---|
| 130 | Q | 
|---|
| 131 | EMF ; Set LEX("EXM") pre-selection LIST#^Expression text | 
|---|
| 132 | K LEX("EXM") | 
|---|
| 133 | I $L($G(^TMP("LEXSCH",$J,"EXM",0))),$L($G(^TMP("LEXSCH",$J,"EXM",1))) D | 
|---|
| 134 | .S LEX("EXM")=$G(^TMP("LEXSCH",$J,"EXM",0))_"^"_$G(^TMP("LEXSCH",$J,"EXM",1)) | 
|---|
| 135 | Q | 
|---|
| 136 | MAT ; Set "matches found" string and top of list flag | 
|---|
| 137 | ;       LEX("MAT")                 # Matches found | 
|---|
| 138 | ;       ^TMP("LEXSCH",$J,"TOL",0)  1 - Top of list | 
|---|
| 139 | ;                                   0 - Not top of list | 
|---|
| 140 | K LEX("MAT") | 
|---|
| 141 | I $D(LEX("SEL"))!('$D(^TMP("LEXSCH",$J)))!('$D(LEX("LIST"))) Q | 
|---|
| 142 | N LEXOL,LEXL | 
|---|
| 143 | S LEXOL=$G(^TMP("LEXSCH",$J,"TOL",0)) | 
|---|
| 144 | S LEXL=$O(LEX("LIST",0)) | 
|---|
| 145 | I LEXOL'=0,LEXL=1 S ^TMP("LEXSCH",$J,"TOL",0)=1 | 
|---|
| 146 | I LEXOL'=0,LEXL'=1 S ^TMP("LEXSCH",$J,"TOL",0)=0 | 
|---|
| 147 | I LEXOL=1,$L($G(^TMP("LEXSCH",$J,"MAT",0))) D | 
|---|
| 148 | .S LEX("MAT")=$G(^TMP("LEXSCH",$J,"MAT",0)) | 
|---|
| 149 | Q | 
|---|