Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: LEX10CX5

LEX10CX5.m

Go to the documentation of this file.
  1. LEX10CX5 ;ISL/KER - ICD-10 Cross-Over - Misc ;04/21/2014
  1. ;;2.0;LEXICON UTILITY;**80**;Sep 23, 1996;Build 1
  1. ;
  1. ; Global Variables
  1. ; None
  1. ;
  1. ; External References
  1. ; $$DT^XLFDT ICR 10103
  1. ; $$UP^XLFSTR ICR 10104
  1. ;
  1. ; Local Variables NEWed or KILLed Elsewhere
  1. ; None
  1. ;
  1. ; Parse Expression into Segments
  1. SEG(X,LEXS) ; Get Segment Array
  1. N LEXA,LEXI,LEXSG,LEXSI,LEXT S LEXT=$G(X)
  1. S:'$L(LEXT) LEXT=$G(LEXS("SOURCE","EXP"))
  1. Q:'$L(LEXT) D SEGS(LEXT,1,.LEXA) S LEXI=0
  1. F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D
  1. . N LEXSG,LEXSI S LEXSG=$G(LEXA(LEXI)) Q:'$L(LEXSG)
  1. . S LEXSI=$O(LEXS("SEG"," "),-1)+1
  1. . S LEXS("SEG",LEXSI)=LEXSG
  1. Q
  1. SEGS(X,Y,LEXA) ; Parse Text into Segments
  1. N LEXBEG,LEXC,LEXCHR,LEXEND,LEXFRE,LEXI,LEXNUM,LEXORD,LEXSEG
  1. N LEXTMP,LEXTXT,LEXVAL,LEXFLG S LEXTXT=$$UP^XLFSTR(X)
  1. S LEXFLG=$G(Y) K LEXA,LEXTMP
  1. S LEXBEG=1 F LEXEND=1:1:$L(LEXTXT)+1 D
  1. . S LEXCHR=$E(LEXTXT,LEXEND)
  1. . I "~!@#$%&*()_+`-=[]{};'\:|,./?<> """[LEXCHR D
  1. . . S LEXSEG=$E(LEXTXT,LEXBEG,LEXEND-1),LEXBEG=LEXEND+1
  1. . . I $L(LEXSEG)>1,$L(LEXSEG)<31,$$EXC(LEXSEG) D
  1. . . . N LEXI,LEXNUM S LEXNUM=(246-$L(LEXSEG))
  1. . . . S LEXI=$O(LEXTMP(" "),-1)+1,LEXTMP(LEXI)=LEXSEG
  1. I +($G(LEXFLG))'>0 S LEXI="" D
  1. . F S LEXI=$O(LEXTMP(LEXI)) Q:'$L(LEXI) D
  1. . . S LEXA(LEXI)=LEXTMP(LEXI)
  1. I +($G(LEXFLG))>0 D
  1. . N LEXORD,LEXI,LEXC K LEXORD
  1. . S LEXI="" F S LEXI=$O(LEXTMP(LEXI)) Q:'$L(LEXI) D
  1. . . N LEXFRE,LEXVAL S LEXVAL=$G(LEXTMP(LEXI))
  1. . . I LEXVAL="0" S LEXORD(0)=LEXVAL Q
  1. . . S LEXFRE=$$FREQ^LEXU(LEXVAL) Q:+LEXFRE'>0
  1. . . S LEXORD(LEXFRE)=LEXVAL
  1. . S LEXI="" F S LEXI=$O(LEXORD(LEXI)) Q:'$L(LEXI) D
  1. . . S LEXVAL=$G(LEXORD(LEXI))
  1. . . I LEXI="0" S LEXA(LEXI)=LEXVAL Q
  1. . . S LEXC=$O(LEXA(" "),-1)+1,LEXA(LEXC)=LEXVAL
  1. Q
  1. EXC(X) ; Exclude from Lookup
  1. Q:$L($G(X))'>1 0
  1. Q:"^AS^ABOUT^AFTER^ALMOST^ALSO^ALTHOUGH^AND^"[("^"_$G(X)_"^") 0
  1. Q:"^ANOTHER^ANY^ARE^AREA^AREAS^AT^BE^BEEN^"[("^"_$G(X)_"^") 0
  1. Q:"^BEFORE^BEST^BUT^BY^CAN^CONTROLLED^COULD^"[("^"_$G(X)_"^") 0
  1. Q:"^COMPLICATINS^DONE^DUE^EACH^EVEN^FAR^FOR^FORM^"[("^"_$G(X)_"^") 0
  1. Q:"^FORMS^FORTH^FROM^GIVEN^HAD^^"[("^"_$G(X)_"^") 0
  1. Q:"^HAVE^HER^HERE^HERSELF^HIM^"[("^"_$G(X)_"^") 0
  1. Q:"^HIMSELF^HIS^HOW^IN^INTO^IS^IT^IT'S^ITS^^"[("^"_$G(X)_"^") 0
  1. Q:"^ITS'^ITSELF^KIND^LIKE^LOST^MANY^MAY^MERE^"[("^"_$G(X)_"^") 0
  1. Q:"^MORE^MOST^MUST^NEW^NOT^NOTE^NOW^OF^OFTEN^"[("^"_$G(X)_"^") 0
  1. Q:"^ON^ONESELF^ONLY^OR^OUR^OURS^OUT^OTHER^OWN^PUT^"[("^"_$G(X)_"^") 0
  1. Q:"^SAME^SET^SHOULD^SOME^STATED^SUCH^SURE^"[("^"_$G(X)_"^") 0
  1. Q:"^THAN^THAT^THE^THEN^THERE^THEREBY^THESE^"[("^"_$G(X)_"^") 0
  1. Q:"^THEY^THIS^THUS^TO^TOO^UPON^UNSPECIFIED^"[("^"_$G(X)_"^") 0
  1. Q:"^UNCONTROLLED^W/^W/O^WAS^WHAT^WHEN^WHERE^"[("^"_$G(X)_"^") 0
  1. Q:"^WHICH^WHO^WHOSE^WITH^WITHIN^WITHOUT^WO^"[("^"_$G(X)_"^") 0
  1. Q:"^WOULD^"[("^"_$G(X)_"^") 0
  1. Q 1
  1. ;
  1. ; Miscellaneous
  1. RN(X,Y) ; Common Roman Numerals
  1. N LEX1,LEX2,LEXI,LEXK,LEXP,LEXS,LEXS2,LEXSG,LEXSGI,LEXX,LEXCT,LEXTX
  1. S LEXSG=$G(X),LEXX=$G(Y)
  1. S LEXS="I;1^II;2^III;3^IV;4^V;5^VI;6^VII;7"
  1. S LEXS=LEXS_"^VIII;8^IX;9^X;10^XI;11^XII;12"
  1. S LEXS2=("^"_$TR(LEXS,";","^")_"^")
  1. Q:LEXS2'[("^"_LEXSG_"^") 0
  1. S LEXK=0 F LEXP=1:1 Q:'$L($P(LEXS,"^",LEXP)) D Q:LEXK
  1. . S LEX1=$P($P(LEXS,"^",LEXP),";",1),LEX2=$P($P(LEXS,"^",LEXP),";",2)
  1. . I $E(LEXX,1,($L(LEX1)+1))=(LEX1_" ") S LEXK=1 Q
  1. . I $E(LEXX,1,($L(LEX2)+1))=(LEX2_" ") S LEXK=1 Q
  1. . I (LEXX[(" "_LEX1_" ")!(LEXX[(" "_LEX1_","))) S LEXK=1 Q
  1. . I (LEXX[(" "_LEX2_" ")!(LEXX[(" "_LEX2_","))) S LEXK=1 Q
  1. . I $E(LEXX,($L(LEXX)-($L(LEX1))),($L(LEXX)+1))=(" "_LEX1) S LEXK=1 Q
  1. . I $E(LEXX,($L(LEXX)-($L(LEX2))),($L(LEXX)+1))=(" "_LEX2) S LEXK=1 Q
  1. Q LEXK
  1. TY(X,Y) ; Common Types
  1. Q 0
  1. N LEXOR,LEXTX,LEXI,LEXS,LEXS2,LEX1,LEX2,LEXOK,LEXP,LEXT1,LEXT2,LEXSG,LEXSGI,LEXCT
  1. S LEXOR=$G(X),LEXTX=$G(Y)
  1. S LEXS="I;1^II;2^III;3^IV;4^V;5^VI;6^VII;7"
  1. S LEXS=LEXS_"^VIII;8^IX;9^X;10^XI;11^XII;12"
  1. S LEXT1=LEXOR_" ",LEXT2=LEXTX_" ",LEXOK=0
  1. Q:(LEXT1_LEXT2)'["TYPE"&((LEXT1_LEXT2)'["OTH") 0
  1. F LEXP=1:1 Q:'$L($P(LEXS,"^",LEXP)) D Q:LEXOK'=0
  1. . S LEX1=$P($P(LEXS,"^",LEXP),";",1),LEX2=$P($P(LEXS,"^",LEXP),";",2)
  1. . I LEXT1[("TYPE "_LEX1_" "),LEXT2[("TYPE "_LEX1_" ") S LEXOK=1 Q
  1. . I LEXT1[("TYPE "_LEX1_","),LEXT2[("TYPE "_LEX1_",") S LEXOK=1 Q
  1. . I LEXT1[("TYPE "_LEX1_" "),LEXT2[("TYPE "_LEX2_" ") S LEXOK=1 Q
  1. . I LEXT1[("TYPE "_LEX1_","),LEXT2[("TYPE "_LEX2_",") S LEXOK=1 Q
  1. . I LEXT1[("TYPE "_LEX2_" "),LEXT2[("TYPE "_LEX2_" ") S LEXOK=1 Q
  1. . I LEXT1[("TYPE "_LEX2_","),LEXT2[("TYPE "_LEX2_",") S LEXOK=1 Q
  1. . I LEXT1[("TYPE "_LEX2_" "),LEXT2[("TYPE "_LEX1_" ") S LEXOK=1 Q
  1. . I LEXT1[("TYPE "_LEX2_","),LEXT2[("TYPE "_LEX1_",") S LEXOK=1 Q
  1. . I LEXT1[LEX1 D
  1. . . I LEXTX'[("TYPE "_LEX2_" ")&(LEXTX'[("TYPE "_LEX1_" ")) D
  1. . . . I LEXTX'[("TYPE "_LEX2_",")&(LEXTX'[("TYPE "_LEX1_",")) D
  1. . . . . I LEXT2["OTHER"!(LEXT2["OTH ") S LEXOK=1 Q
  1. . I LEXT1[("TYPE "_LEX2_" ") D
  1. . . I LEXTX'[("TYPE "_LEX2_" ")&(LEXTX'[("TYPE "_LEX1_" ")) D
  1. . . . I LEXTX'[("TYPE "_LEX2_",")&(LEXTX'[("TYPE "_LEX1_",")) D
  1. . . . . I LEXT2["OTHER"!(LEXT2["OTH ") S LEXOK=1 Q
  1. Q LEXOK
  1. TM(X,Y) ; Trim Y
  1. S Y=$G(Y) S:'$L(Y) Y=" "
  1. F Q:$E(X,1)'=Y S X=$E(X,2,$L(X))
  1. F Q:$E(X,$L(X))'=Y S X=$E(X,1,($L(X)-1))
  1. Q X
  1. SO(X,Y,Z) ; Source Code
  1. N LEXEF,LEXHI,LEXHIS,LEXPER,LEXS,LEXSO,LEXSRI,LEXE,LEXSAB
  1. N LEXCDT,LEXSTA,LEXTSO S LEXE=+($G(X))
  1. S LEXSAB=$G(Y),LEXCDT=$G(Z) Q:LEXE'>0 ""
  1. Q:'$D(^LEX(757.01,+LEXE,0)) "" Q:$L(LEXSAB)'=3 ""
  1. Q:'$D(^LEX(757.03,"ASAB",LEXSAB)) ""
  1. S:LEXCDT'?7N LEXCDT=$$DT^XLFDT
  1. S LEXSRI=$O(^LEX(757.03,"ASAB",LEXSAB,0)) Q:LEXSRI'>0 ""
  1. Q:'$D(^LEX(757.03,LEXSRI,0)) "" S LEXS=0,LEXSO=""
  1. F S LEXS=$O(^LEX(757.02,"B",LEXE,LEXS)) Q:+LEXS'>0 D Q:$L(LEXSO)
  1. . Q:$P($G(^LEX(757.02,LEXS,0)),"^",3)'=LEXSRI
  1. . S LEXEF=$O(^LEX(757.02,LEXS,4,"B",(LEXCDT+.001)),-1) Q:LEXEF'?7N
  1. . S LEXHI=$O(^LEX(757.02,LEXS,4,"B",+LEXEF," "),-1) Q:LEXHI'>0
  1. . S LEXHIS=$G(^LEX(757.02,LEXS,4,LEXHI,0))
  1. . S LEXSTA=$P(LEXHIS,"^",2),LEXPER=$P($G(^LEX(757.02,LEXS,0)),"^",5)
  1. . I LEXSTA>0,LEXPER>0 S LEXSO=$P($G(^LEX(757.02,LEXS,0)),"^",2)
  1. . I LEXSTA>0 S LEXTSO=$P($G(^LEX(757.02,LEXS,0)),"^",2)
  1. S:'$L(LEXSO) LEXSO=$G(LEXTSO) S X=LEXSO
  1. Q X
  1. LA(X,Y,Z) ; Last Activation
  1. N LEX,LEXD,LEXSRI,LEXT,LEXTD,LEXS,LEXSAB,LEXCDT S LEXTD=$$DT^XLFDT
  1. S LEXS=$G(X),LEXSAB=$G(Y),LEXCDT=$G(Z) Q:'$L(LEXSAB) LEXTD+1
  1. S LEXSRI=$O(^LEX(757.03,"ASAB",LEXSAB,0))
  1. Q:+LEXSRI'>0 (LEXTD+2) S LEXD=" ",LEXT=""
  1. S:$P($G(LEXCDT),".",1)?7N LEXD=($P($G(LEXCDT),".",1))+.001
  1. F S LEXD=$O(^LEX(757.02,"ACT",(LEXS_" "),3,LEXD),-1) Q:LEXD'?7N D
  1. . S LEX=0
  1. . F S LEX=$O(^LEX(757.02,"ACT",(LEXS_" "),3,LEXD,LEX)) Q:+LEX'>0 D
  1. . . I $P($G(^LEX(757.02,LEX,0)),"^",3)=LEXSRI D
  1. . . . S LEXT=LEXD,LEX=$O(^LEX(757.02," "),-1)+1,LEXD=0
  1. I $L(LEXT) D
  1. . S LEXD=" ",LEXT=""
  1. . F S LEXD=$O(^LEX(757.02,"ACT",(LEXS_" "),1,LEXD),-1) Q:LEXD'?7N D
  1. . . S LEX=0
  1. . . F S LEX=$O(^LEX(757.02,"ACT",(LEXS_" "),1,LEXD,LEX)) Q:+LEX'>0 D
  1. . . . I $P($G(^LEX(757.02,LEX,0)),"^",3)=LEXSRI D
  1. . . . . S LEXT=LEXD,LEX=$O(^LEX(757.02," "),-1)+1,LEXD=0
  1. S:LEXT'?7N LEXT=LEXTD
  1. Q LEXT
  1. SA(LEXA) ; Show Array
  1. S LEXA=$G(LEXA) Q:'$L(LEXA) Q:$L(LEXA)>8
  1. F S LEXA=$Q(@LEXA) Q:'$L(LEXA) D
  1. . W !,LEXA,"=",@LEXA
  1. Q