1 | LEXAR4 ; ISL/KER Look-up Response (Select Entry) ; 05/14/2003
|
---|
2 | ;;2.0;LEXICON UTILITY;**4,5,6,25**;Sep 23, 1996;Build 1
|
---|
3 | ;
|
---|
4 | ; External References
|
---|
5 | ; DBIA 10086 HOME^%ZIS
|
---|
6 | ; DBIA 10063 ^%ZTLOAD
|
---|
7 | ; DBIA 10018 ^DIE
|
---|
8 | ;
|
---|
9 | SEL(LEXUR,LEXVDT) ; Select # on list
|
---|
10 | K LEX("SEL") N LEXLVL,LEXMAX,LEXLF S LEXLF=1,LEXMAX=+($G(^TMP("LEXSCH",$J,"LST",0)))
|
---|
11 | S LEX=+($G(LEX)),LEXUR=+($G(LEXUR))
|
---|
12 | I LEXMAX=0!(LEX=0) D EDA^LEXAR G SELQ
|
---|
13 | K LEX("ERR"),LEX("SEL") I LEXUR'>0!(LEXUR>LEXMAX) D G SELQ
|
---|
14 | . S LEX("ERR",0)=+($G(LEX("ERR",0)))+1
|
---|
15 | . S LEX("ERR",LEX("ERR",0))="User response out of range"
|
---|
16 | I '$D(^TMP("LEXHIT",$J,LEXUR)) D G SELQ
|
---|
17 | . S LEX("ERR",0)=+($G(LEX("ERR",0)))+1
|
---|
18 | . S LEX("ERR",LEX("ERR",0))="Selection is either out of range or invalid"
|
---|
19 | N LEXEXP S LEXEXP=+($P(^TMP("LEXHIT",$J,LEXUR),"^",1))
|
---|
20 | I '$D(^LEX(757.01,LEXEXP,0)) D G SELQ
|
---|
21 | . S LEX("ERR",0)=+($G(LEX("ERR",0)))+1
|
---|
22 | . S LEX("ERR",LEX("ERR",0))="Selection not found in the Lexicon"
|
---|
23 | ; Set concept level, if modifiers are allowed build list
|
---|
24 | S LEXLVL=+($G(LEX("LVL"))) I LEXLVL'>1,+LEXEXP>2,$D(^LEX(757.01,+LEXEXP,0)),+($G(^TMP("LEXSCH",$J,"MOD",0)))>0 D EN^LEXAMD(LEXEXP,$G(LEXVDT))
|
---|
25 | ; Quit if modifiers found at next level
|
---|
26 | G:+($G(LEX("LVL")))>LEXLVL SELQ
|
---|
27 | D SET(LEXEXP,$G(LEXVDT)),EDU^LEXAR
|
---|
28 | G SELQ
|
---|
29 | SET(LEXEXP,LEXVDT) ; Set LEX("SEL") Nodes
|
---|
30 | K LEX("SEL") D SETEXP^LEXAR5(LEXEXP)
|
---|
31 | N LEXMC S LEXMC=+($P(^LEX(757.01,LEXEXP,1),"^",1))
|
---|
32 | ; If selected from the list increment frequency
|
---|
33 | D:+($G(^TMP("LEXSCH",$J,"LST",0)))>0&(+($G(^TMP("LEXSCH",$J,"APP",0)))>1) INC(LEXMC)
|
---|
34 | N LEXMCE S LEXMCE=+(^LEX(757,LEXMC,0))
|
---|
35 | D SETSRC^LEXAR5(LEXMCE,$G(LEXVDT)),SETDEF^LEXAR5(LEXMCE)
|
---|
36 | D SETSTY^LEXAR5(LEXMC)
|
---|
37 | N LEXE S LEXE=0 F S LEXE=$O(^LEX(757.01,"AMC",LEXMC,LEXE)) Q:+LEXE=0 D
|
---|
38 | . Q:LEXE=LEXEXP D SETEXP^LEXAR5(LEXE),SETSRC^LEXAR5(LEXE,$G(LEXVDT))
|
---|
39 | G:+($G(LEXLF))=0 SELQ
|
---|
40 | Q
|
---|
41 | INC(LEXMC) ; Increment frequency counter in ^LEX(757)
|
---|
42 | N LEXF,LEXFQ S LEXMC=+($G(LEXMC)) Q:LEXMC=0 Q:'$D(^LEX(757,LEXMC))
|
---|
43 | S ZTSAVE("LEXMC")="",ZTRTN="FQ^LEXAR4",ZTDESC="Updating Lexicon Frequencies",ZTIO="",ZTDTH=$H
|
---|
44 | D ^%ZTLOAD,HOME^%ZIS K Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN
|
---|
45 | Q
|
---|
46 | FQ ; Edit Concept Frequency
|
---|
47 | N LEXA,LEXM,LEXQ,LEXS,DA,DIC,DIE S:$D(ZTQUEUED) ZTREQ="@"
|
---|
48 | S LEXM=+($G(LEXMC)) Q:LEXM=0 Q:'$D(^LEX(757,LEXM,0))
|
---|
49 | I '$D(^LEX(757.001,LEXM,0)) D AFQ G FQQ
|
---|
50 | S LEXQ=+($P($G(^LEX(757.001,LEXM,0)),"^",3)),LEXQ=LEXQ+1
|
---|
51 | S DA=+($G(LEXM)) Q:+DA=0 Q:'$D(^LEX(757.001,DA,0))
|
---|
52 | S LEXM=+($G(LEXMC)) Q:'$D(^LEX(757,LEXMC,0)) S LEXA=0
|
---|
53 | S (DIC,DIE)="^LEX(757.001,",DR="2////^S X=LEXQ"
|
---|
54 | EFQ ; Lock record and edit frequency record
|
---|
55 | L +^LEX(757.001,+DA):1 I '$T S LEXA=LEXA+1 H 2 G:LEXA<4 EFQ
|
---|
56 | D:LEXA<4 ^DIE L -^LEX(757.001,+DA)
|
---|
57 | G FQQ
|
---|
58 | Q
|
---|
59 | AFQ ; Add frequency record
|
---|
60 | N DIC,DA S ^LEX(757.001,LEXM,0)=LEXM_"^0^0" S DIC="^LEX(757.001,",DA=LEXM D SET^LEXNDX2 Q
|
---|
61 | Q
|
---|
62 | FQQ ; Quit Frequency
|
---|
63 | Q
|
---|
64 | SELQ ; Quit Selection
|
---|
65 | D:$D(LEX("SEL")) SEL^LEXAR
|
---|
66 | D:$D(LEX("LIST")) LST^LEXAR
|
---|
67 | Q
|
---|