1 | LEXABC2 ; ISL Look-up by Code (part 2) ; 01-25-97
|
---|
2 | ;;2.0;LEXICON UTILITY;**4**;Sep 23, 1996;Build 1
|
---|
3 | ;
|
---|
4 | REO ; Reorder list
|
---|
5 | Q:'$D(^TMP("LEXL",$J)) N LEXS,LEXT,LEXP,LEXE,LEXEX,LEXFT,LEXM,LEXX S LEXS="" F S LEXS=$O(^TMP("LEXL",$J,LEXS)) Q:LEXS="" S LEXT=0 F S LEXT=$O(^TMP("LEXL",$J,LEXS,LEXT)) Q:+LEXT=0 D
|
---|
6 | . S LEXP=0 F S LEXP=$O(^TMP("LEXL",$J,LEXS,LEXT,LEXP)) Q:+LEXP=0 S LEXE=0 F S LEXE=$O(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE)) Q:+LEXE=0 D
|
---|
7 | . . Q:LEXP=3
|
---|
8 | . . I LEXP=1 D MC Q
|
---|
9 | . . I LEXP=4,$G(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE))["ICD" D SP Q
|
---|
10 | . . D OT
|
---|
11 | Q
|
---|
12 | MC ; Major concept
|
---|
13 | S LEXM=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",1),LEXFT="A"
|
---|
14 | S ^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXE)=^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE)
|
---|
15 | K ^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE)
|
---|
16 | Q
|
---|
17 | SP ; Joint term/code
|
---|
18 | N LEXS2,LEXT2,LEXP2,LEXF2,LEXE2,LEXEX,LEXFT,LEXM,LEXF
|
---|
19 | N LEXX,LEXTM,LEXTE,LEXHM,LEXHE,LEXHD,LEXOK
|
---|
20 | S LEXOK=0,LEXS2="" F S LEXS2=$O(^TMP("LEXL",$J,LEXS2)) Q:LEXS2=""!(LEXOK) S LEXT2=0 F S LEXT2=$O(^TMP("LEXL",$J,LEXS2,LEXT2)) Q:+LEXT2=0!(LEXOK) D
|
---|
21 | . S LEXP2=0 F S LEXP2=$O(^TMP("LEXL",$J,LEXS2,LEXT2,LEXP2)) Q:+LEXP2=0!(LEXOK) S LEXF=99999999999 F S LEXF=$O(^TMP("LEXL",$J,LEXS2,LEXT2,LEXP2,LEXF)) Q:LEXF=""!(LEXOK) D
|
---|
22 | . . S LEXE2=0 F S LEXE2=$O(^TMP("LEXL",$J,LEXS2,LEXT2,LEXP2,LEXF,LEXE2)) Q:+LEXE2=0!(LEXOK) D
|
---|
23 | . . . S LEXTM=$P(^TMP("LEXL",$J,LEXS2,LEXT2,LEXP2,LEXF,LEXE2),"^",1)
|
---|
24 | . . . S LEXTE=$P(^TMP("LEXL",$J,LEXS2,LEXT2,LEXP2,LEXF,LEXE2),"^",2)
|
---|
25 | . . . S LEXHM=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",1)
|
---|
26 | . . . S LEXHE=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",2)
|
---|
27 | . . . S LEXHD=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",4)
|
---|
28 | . . . I LEXTM=LEXHM,LEXTE=LEXHE S $P(^TMP("LEXL",$J,LEXS2,LEXT2,LEXP2,LEXF,LEXE2),"^",4)=LEXHD K ^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE) S LEXOK=1 Q
|
---|
29 | I 'LEXOK D OT
|
---|
30 | Q
|
---|
31 | OT ; Other than Major Concept
|
---|
32 | S:LEXP>1 LEXX=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",1)
|
---|
33 | S LEXFT=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",5)
|
---|
34 | ; Primary --> <major concept>=<primary concept>
|
---|
35 | I +($G(LEXM))=+($G(LEXX)) D Q
|
---|
36 | . S:LEXFT="" LEXFT="B"
|
---|
37 | . S:$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",6)="Other: " $P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",6)="Synonym: ",LEXFT="B"
|
---|
38 | . S ^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXE)=^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE) K ^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE)
|
---|
39 | Q:+($G(LEXM))=+($G(LEXX))
|
---|
40 | ; Other --> <major concept>'=<primary concept>
|
---|
41 | S LEXFT="F"
|
---|
42 | S $P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",7)=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",6)
|
---|
43 | S $P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE),"^",6)="Other: "
|
---|
44 | S ^TMP("LEXL",$J,LEXS,LEXT,3,LEXFT,LEXE)=^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE)
|
---|
45 | K ^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXE)
|
---|
46 | Q
|
---|
47 | SCH(LEXX) ; $Orderable variable
|
---|
48 | S LEXX=$E(LEXX,1,($L(LEXX)-1))_$C($A($E(LEXX,$L(LEXX)))-1)_"~" Q LEXX
|
---|
49 | ADD ; Add codes expressions to the selection list
|
---|
50 | ;
|
---|
51 | ; Use local array LEXL
|
---|
52 | ;
|
---|
53 | ; S ^TMP("LEXL",$J,<Code>,<Type>,<Preference>,<Form>,<IEN>)=
|
---|
54 | ; <IEN 757>^<IEN 757.01>^<Description>^<Display>^<Form Type>^<Form>
|
---|
55 | ;
|
---|
56 | N LEXS,LEXT,LEXP,LEXFT,LEXSIEN,LEXPM
|
---|
57 | S LEXS="" F S LEXS=$O(^TMP("LEXL",$J,LEXS)) Q:LEXS="" D
|
---|
58 | . S LEXT=0 F S LEXT=$O(^TMP("LEXL",$J,LEXS,LEXT)) Q:+LEXT=0 D
|
---|
59 | . . S (LEXP,LEXPM)=0 F S LEXP=$O(^TMP("LEXL",$J,LEXS,LEXT,LEXP)) Q:+LEXP=0 D
|
---|
60 | . . . S LEXFT="" F S LEXFT=$O(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT)) Q:LEXFT="" D
|
---|
61 | . . . . S LEXSIEN=0 F S LEXSIEN=$O(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXSIEN)) Q:+LEXSIEN=0 D SAVE
|
---|
62 | Q
|
---|
63 | SAVE ; Save in ^TMP
|
---|
64 | N LEXMI,LEXEI,LEXDF,LEXDS,LEXFM,LEXTP,LEXPX,LEXSX,LEXFQ,LEXSTR
|
---|
65 | S LEXSTR="",LEXMI=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXSIEN),"^",1),LEXEI=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXSIEN),"^",2),LEXDF=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXSIEN),"^",3)
|
---|
66 | S LEXDS=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXSIEN),"^",4),LEXFM=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXSIEN),"^",4),LEXTP=$P(^TMP("LEXL",$J,LEXS,LEXT,LEXP,LEXFT,LEXSIEN),"^",6),(LEXSX,LEXPX)="" S:LEXP=1 LEXPM=LEXMI
|
---|
67 | ; Prefix
|
---|
68 | I LEXP>1 S LEXPX=LEXTP S:LEXPX["Concept" LEXPX="Synonym: " S:LEXPX="" LEXPX="Other: "
|
---|
69 | ; Suffix
|
---|
70 | I LEXP>1 S LEXSX="" S:LEXPX["Other:" LEXSX="classified as" S:LEXPX="" LEXSX="classified as",LEXPX="Other: "
|
---|
71 | ; Display
|
---|
72 | S:$L(LEXSX)&($G(LEXSO2)["+") LEXDS=LEXSX_" "_LEXDS S:$L(LEXDS) LEXDS="("_LEXDS_")"
|
---|
73 | ; String
|
---|
74 | S LEXSTR=$$TERM(LEXEI) S:$L(LEXDF) LEXSTR=LEXSTR_" "_LEXDF S:$L(LEXDS) LEXSTR=LEXSTR_" "_LEXDS S:$L(LEXPX) LEXSTR=LEXPX_LEXSTR S:LEXP>1 LEXSTR=" "_LEXSTR
|
---|
75 | ; ^TMP("LEXFND",$J,FQ,IEN)
|
---|
76 | S LEXFQ=$G(^TMP("LEXFND",$J,0)) S:+LEXFQ=0 LEXFQ=-999999 S LEXFQ=LEXFQ+1
|
---|
77 | S:'$D(^TMP("LEXFND",$J,-LEXFQ,LEXEI)) ^TMP("LEXSCH",$J,"NUM",0)=$G(^TMP("LEXSCH",$J,"NUM",0))+1
|
---|
78 | S ^TMP("LEXFND",$J,LEXFQ,LEXEI)=LEXSTR,^TMP("LEXFND",$J,0)=LEXFQ,LEX=$G(^TMP("LEXSCH",$J,"NUM",0))
|
---|
79 | Q
|
---|
80 | TERM(LEXX) ; Get expression
|
---|
81 | Q $G(^LEX(757.01,+($G(LEXX)),0))
|
---|