1 | LEXSRC ; ISL/KER - Classification Code Source ; 02/02/2006
|
---|
2 | ;;2.0;LEXICON UTILITY;**7,25,26,38**;Sep 23, 1996;Build 1
|
---|
3 | ;
|
---|
4 | ; External References
|
---|
5 | ; None
|
---|
6 | ;
|
---|
7 | ONE(LEXI,LEXS,LEXVDT) ; Return a single primary code of a source
|
---|
8 | S LEXI=+($G(LEXI)),LEXS=$G(LEXS) S LEXI=$$CODE(LEXI,LEXS,$G(LEXVDT)) Q LEXI
|
---|
9 | ALL(LEXI,LEXS,LEXVDT) ; Return all codes of a source
|
---|
10 | S LEXI=+($G(LEXI)),LEXS=$G(LEXS)
|
---|
11 | D CODES(LEXI,LEXS,$G(LEXVDT))
|
---|
12 | Q
|
---|
13 | CODE(LEXI,LEXS,LEXVDT) ; Return a single primary code
|
---|
14 | N LEXSRC D CODES(LEXI,LEXS,$G(LEXVDT)) S LEXI=$G(LEXSRC(1)) Q LEXI
|
---|
15 | CODES(LEXI,LEXS,LEXVDT) ; Build an array LEXSRC of codes
|
---|
16 | S LEXI=+($G(LEXI)) Q:LEXI=0 Q:'$D(^LEX(757.01,LEXI))
|
---|
17 | S LEXS=$G(LEXS) Q:'$D(^LEX(757.03,"ASAB",LEXS))
|
---|
18 | N LEXMC S LEXMC=+($G(^LEX(757.01,LEXI,1))) Q:'$D(^LEX(757,LEXMC,0))
|
---|
19 | N LEXMCE S LEXMCE=+($G(^LEX(757,LEXMC,0))) Q:'$D(^LEX(757.01,LEXMCE,0))
|
---|
20 | N LEXUNI,LEXSA,LEXN,LEXSAB,LEXSTA,LEXPRI,LEXNOM,LEXCC,LEXX S LEXSA=0
|
---|
21 | F S LEXSA=$O(^LEX(757.02,"AMC",LEXMC,LEXSA)) Q:+LEXSA=0 D
|
---|
22 | . S LEXN=$G(^LEX(757.02,LEXSA,0)) N LEXLD,LEXLS
|
---|
23 | . S LEXCC=$P(LEXN,"^",2) Q:LEXCC=""
|
---|
24 | . S LEXSTA=+($$STATCHK^LEXSRC2(LEXCC,$G(LEXVDT))) Q:+LEXSTA'>0
|
---|
25 | . S LEXSAB=+($P(LEXN,"^",3)),LEXSAB=$E($G(^LEX(757.03,LEXSAB,0)),1,3) Q:LEXSAB'=LEXS
|
---|
26 | . S LEXPRI=+($P(LEXN,"^",7)),LEXCC=$P(LEXN,"^",2) Q:LEXCC=""
|
---|
27 | . D:LEXPRI>0 PRI(LEXCC) D:LEXPRI=0 NOM(LEXCC)
|
---|
28 | D COMP
|
---|
29 | Q
|
---|
30 | PRI(LEXX) ; Primary Code
|
---|
31 | N LEXCC S LEXCC=$G(LEXX) Q:LEXCC="" S LEXX=+($G(LEXPRI(0))),LEXX=LEXX+1
|
---|
32 | S LEXPRI(LEXX)=LEXCC,LEXPRI(0)=LEXX Q
|
---|
33 | NOM(LEXX) ; Normal Code
|
---|
34 | N LEXCC S LEXCC=$G(LEXX) Q:LEXCC="" S LEXX=+($G(LEXNOM(0))),LEXX=LEXX+1
|
---|
35 | S LEXNOM(LEXX)=LEXCC,LEXNOM(0)=LEXX Q
|
---|
36 | COMP ; Compile array from Primary and Normal Codes
|
---|
37 | N LEXUNI,LEXCT,LEXNT S (LEXCT,LEXNT)=0
|
---|
38 | I $L($G(LEXPRI(1))) D
|
---|
39 | . S LEXCT=LEXCT+1,LEXSRC(LEXCT)=LEXPRI(1)
|
---|
40 | . S LEXSRC(0)=LEXCT,LEXUNI(LEXPRI(1))=""
|
---|
41 | F S LEXNT=$O(LEXNOM(LEXNT)) Q:+LEXNT=0 D
|
---|
42 | . Q:$D(LEXUNI(LEXNOM(LEXNT)))
|
---|
43 | . I $L($G(LEXNOM(LEXNT))) D
|
---|
44 | . . S LEXCT=LEXCT+1,LEXSRC(LEXCT)=LEXNOM(LEXNT),LEXSRC(0)=LEXCT,LEXUNI(LEXNOM(LEXNT))=""
|
---|
45 | K LEXPRI,LEXNOM,LEXUNI Q
|
---|