| 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)) | 
|---|