1 | LEXDFSE ; ISL Default Filter - Exclude Semantics ; 09-23-96
|
---|
2 | ;;2.0;LEXICON UTILITY;;Sep 23, 1996
|
---|
3 | ;
|
---|
4 | ; Called from LEXDFSI (set the EXCLUDE string)
|
---|
5 | ;
|
---|
6 | ; LEXC Counter
|
---|
7 | ; LEXCCOK Semantic Class OK (Y/N)
|
---|
8 | ; LEXCCR Semantic Class Pointer in # 757.11
|
---|
9 | ; LEXCLS Semantic Class
|
---|
10 | ; LEXCMN Semantic Class Mnemonic
|
---|
11 | ; LEXCT Semantic Type Mnemonic (IEN)
|
---|
12 | ; LEXCTN Semantic Type Counter
|
---|
13 | ; LEXCTOK Semantic Type OK (Y/N)
|
---|
14 | ; LEXCTR Semantic Type Pointer in # 757.12
|
---|
15 | ; LEXF Flag for user input
|
---|
16 | ; LEXI Incremental counter
|
---|
17 | ; LEXLST Array (list) of examples
|
---|
18 | ; LEXMC Pointer to Major Concept in # 757
|
---|
19 | ; LEXS Semantic Type Sources from #757.03
|
---|
20 | ; LEXSPL Sample Term of a Semantic Type
|
---|
21 | ; LEXX String returned to LEXDSTI
|
---|
22 | ;
|
---|
23 | EN(LEXCCR) ; Exclude types
|
---|
24 | N LEXF S LEXF=1 D TYPES(LEXCCR) Q
|
---|
25 | TYPES(LEXCCR) ; Semantic Types
|
---|
26 | N LEXCTOK,LEXCT,LEXCTR,LEXCTN,LEXCMN,LEXCLS
|
---|
27 | S LEXCTOK="",LEXCT=0,LEXCMN=$$MNEMONIC(LEXCCR)
|
---|
28 | F S (LEXCT,LEXCTR)=$O(^LEX(757.12,"C",LEXCMN,LEXCT)) Q:+LEXCT=0!(LEXCTOK[U) D Q:LEXCTOK[U
|
---|
29 | . Q:'$D(^LEX(757.12,LEXCTR,1,"B"))
|
---|
30 | . Q:'$D(^LEX(757.12,LEXCTR,0)) S LEXCTN=$S('$D(LEXCTN):1,1:LEXCTN+1)
|
---|
31 | . W !!,"Semantic Type: ",$P(^LEX(757.12,LEXCTR,0),U,2)
|
---|
32 | . D STYPE(LEXCTR),EXAMPLE(LEXCTR) D:+($G(LEXF)) EXCLUDE
|
---|
33 | Q
|
---|
34 | STYPE(LEXCTR) ; Sources of Semantic Type
|
---|
35 | I '$D(^LEX(757.12,LEXCTR,1,"B")) D Q
|
---|
36 | . W !!,?5,"There are no terms with this Semantic Type in "
|
---|
37 | . W "the Lexicon"
|
---|
38 | W !!,?5,"This Semantic Type contains terms from, or mapped to,"
|
---|
39 | W !,?5,"the following classification systems: ",!
|
---|
40 | N LEXS,LEXC S LEXS="",LEXC=0
|
---|
41 | F S LEXS=$O(^LEX(757.12,LEXCTR,1,"B",LEXS)) Q:LEXS="" D
|
---|
42 | . S LEXC=LEXC+1 W:LEXC=1 !,?9,LEXS W:LEXC=2 ?33,LEXS
|
---|
43 | . W:LEXC=3 ?57,LEXS S:LEXC=3 LEXC=0
|
---|
44 | Q
|
---|
45 | EXAMPLE(LEXX) ; List examples
|
---|
46 | W !!,?5,"Examples of Semantic Type: ",$$NAME(LEXX),!
|
---|
47 | I '$D(^LEX(757.1,"ASTT",LEXX)) D Q
|
---|
48 | . W !,?8,"No examples found"
|
---|
49 | N LEXI,LEXSPL,LEXMC,LEXC S LEXMC="",LEXC=0
|
---|
50 | F LEXI=1:1:10 D Q:+LEXC>2
|
---|
51 | . S LEXMC=$O(^LEX(757.1,"ASTT",LEXX,LEXMC)) Q:+LEXMC'>0
|
---|
52 | . S LEXSPL=$$SAMPLE(LEXMC)
|
---|
53 | . I '$D(LEXLST($$UP^XLFSTR(LEXSPL))) D
|
---|
54 | . . S LEXC=LEXC+1 W !,?5,$J(LEXC,2),": ",LEXSPL
|
---|
55 | . S LEXLST($$UP^XLFSTR(LEXSPL))=""
|
---|
56 | K LEXLST
|
---|
57 | Q
|
---|
58 | MNEMONIC(LEXX) ; Semantic Class Mnemonic
|
---|
59 | Q $P(^LEX(757.11,LEXX,0),U,1)
|
---|
60 | CLSNAME(LEXX) ; Semantic Class Name
|
---|
61 | Q $P(^LEX(757.11,LEXX,0),U,2)
|
---|
62 | NAME(LEXX) ; Semantic Type Name
|
---|
63 | Q $P($G(^LEX(757.12,LEXX,0)),"^",2)
|
---|
64 | SAMPLE(LEXX) ; Sample term of a Semantic Type
|
---|
65 | N LEXS S LEXS=$E(^LEX(757.01,+(^LEX(757,LEXX,0)),0),1,70)
|
---|
66 | S:LEXS[" (" LEXS=$P(LEXS," (",1)
|
---|
67 | S:LEXS[" <" LEXS=$P(LEXS," <",1)
|
---|
68 | S LEXX=LEXS Q LEXX
|
---|
69 | EXCLUDE ; Exclude Semantic Type? (Y/N)
|
---|
70 | N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT W !
|
---|
71 | S DIR("A")="Exclude this type: "
|
---|
72 | S DIR("B")="NO",(DIR("?"),DIR("??"))="^D EXH^LEXDFSE"
|
---|
73 | S DIR(0)="YAO" D ^DIR K DIR S:Y["^" LEXCTOK=U
|
---|
74 | S:Y["^^" (LEXCCOK,LEXCTOK)="^^" Q:Y["^^" Q:LEXCTOK[U
|
---|
75 | D:+Y>0 REM D:+Y'>0 SAV Q
|
---|
76 | EXH ; Exclude help
|
---|
77 | W !!,?4,"Include semantic class: "
|
---|
78 | W $$MNEMONIC(LEXCCR)," - ",$$CLSNAME(LEXCCR)
|
---|
79 | W !,?4,"Excluding the semantic type: ",$$NAME(LEXCTR) Q
|
---|
80 | REM ; Remove Semantic Type from the list (excluded)
|
---|
81 | Q:+($G(LEXA(0)))=0 S LEXCTOK=0
|
---|
82 | N LEXC S LEXC=+($G(LEXA(0)))
|
---|
83 | S LEXA(LEXC,2,0)=$S('$D(LEXA(LEXC,2,0)):1,1:LEXA(LEXC,2,0)+1)
|
---|
84 | S LEXA(LEXC,2,LEXA(LEXC,2,0),0)=LEXCTR Q
|
---|
85 | SAV ; Save the Semantic Type (included)
|
---|
86 | Q:+($G(LEXA(0)))=0 S LEXCTOK=1 D
|
---|
87 | N LEXC S LEXC=+($G(LEXA(0)))
|
---|
88 | S LEXA(LEXC,1,0)=$S('$D(LEXA(LEXC,1,0)):1,1:LEXA(LEXC,1,0)+1)
|
---|
89 | S LEXA(LEXC,1,LEXA(LEXC,1,0),0)=LEXCTR Q
|
---|