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

LEXQVSE.m

Go to the documentation of this file.
  1. LEXQVSE ;ISL/TJH - Query - VA Extension SNOMED CT - Extract ;01/25/2021
  1. ;;2.0;LEXICON UTILITY;**133**;Sep 23, 1996;Build 3
  1. ;
  1. ; Global Variables
  1. ; ^LEX(757.01, SACC 1.3
  1. ; ^LEX(757.018, SACC 1.3
  1. ; ^LEX(757.02, SACC 1.3
  1. ; ^LEX(757.32, SACC 1.3
  1. ; ^LEX(757.33, SACC 1.3
  1. ; ^TMP("LEXQVSEO",$J) SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; $$DT^XLFDT ICR 10103
  1. ; $$FMTE^XLFDT ICR 10103
  1. ; $$UP^XLFSTR ICR 10104
  1. ;
  1. ; Local Variables NEWed or KILLed Elsewhere
  1. ; LEXIIEN Include IENs flag
  1. ;
  1. EN ; Main Entry Point
  1. N LEXENV S LEXENV=$$EV^LEXQM Q:+LEXENV'>0 K ^TMP("LEXQVSEO",$J)
  1. N LEXAD,LEXEDT,LEXCDT,LEXEXIT,LEXTEST S LEXEXIT=0,LEXCDT="" W !
  1. F S LEXCDT=$$AD^LEXQM,LEXAD=LEXCDT Q:'$L(LEXCDT) S LEXEDT=$P(LEXCDT,"^",1),LEXCDT=$P(LEXCDT,"^",2) Q:LEXCDT'?7N D LOOK Q:LEXCDT'?7N Q:+LEXEXIT>0
  1. K ^TMP("LEXQVSEO",$J)
  1. Q
  1. IEN ; Display with IENs
  1. N LEXIIEN S LEXIIEN=1 D EN
  1. Q
  1. LOOK ; SNOMED CT Lookup Loop
  1. S LEXCDT=$G(LEXCDT),LEXEDT=$$ED^LEXQM(LEXCDT) I LEXCDT'?7N S LEXCDT="" Q
  1. N LEXSCT,LEXSCTC,LEXEEN,LEXEFF,LEXEXP,LEXIDT,LEXSEN,LEXSTA
  1. F S LEXSCT=$$SCT^LEXQVSEA S:LEXSCT="^^" LEXEXIT=1 Q:LEXSCT="^"!(LEXSCT="^^") D LOOK2 Q:LEXSCT="^"!(LEXSCT="^^")
  1. Q
  1. LOOK2 ; Needs LEXCDT and LEXSCT
  1. ; Needs
  1. ; LEXCDT FileMan date
  1. ; LEXEXIT Exit Flag (0)
  1. ; LEXSCT SNOMED CT = SIEN^CODE^STA^EFF^EIEN^EXP
  1. K LEXGET,LEXST,LEXSD,LEXLD,LEXMD,LEXLX,LEXWN,LEXLDT,LEXELDT
  1. N LEXAD,LEXCOD,LEXEDT,LEXSIEN,LEXEIEN,LEXLDT,LEXELDT,LEXINC,LEXFA,LEXCLEN,LEXLLEN,LEXTLEN,LEXLEN
  1. S:$E($G(LEXCDT),1,7)?7N LEXAD=$$UP^XLFSTR($$FMTE^XLFDT($E(LEXCDT,1,7)))_"^"_$E(LEXCDT,1,7) Q:'$L($G(LEXAD))
  1. S:$E($G(LEXCDT),1,7)?7N LEXEDT=$$FMTE^XLFDT($E(LEXCDT,1,7),"5Z") Q:'$L($G(LEXEDT))
  1. S LEXCLEN=18,LEXLLEN=LEXCLEN+7,LEXTLEN=(78-(LEXLLEN+2)),LEXLEN=LEXCLEN_"^"_LEXLLEN_"^"_LEXTLEN
  1. S LEXSEN=+($G(LEXSCT)),LEXCOD=$P(LEXSCT,"^",2) Q:'$L(LEXCOD)
  1. S LEXSTA=$P(LEXSCT,"^",3),LEXEFF=$P(LEXSCT,"^",4),(LEXFA,LEXIDT)=$P(LEXSCT,"^",5)
  1. S LEXEEN=$P(LEXSCT,"^",6),LEXEXP=$P(LEXSCT,"^",7),LEXLDT=+($G(LEXCDT))
  1. Q:+LEXSEN'>0 Q:+LEXEEN'>0 Q:LEXLDT'?7N S LEXELDT=$$SD^LEXQM(LEXLDT) Q:'$L(LEXELDT)
  1. D EN^LEXQVSE2
  1. Q
  1. ;
  1. NA(X,Y) ; Next Activation File 757.02 ACT index
  1. ;
  1. ; Input
  1. ;
  1. ; X Code
  1. ; Y CSV Date (default TODAY)
  1. ;
  1. N LEXCOD,LEXCDT,LEXNA S LEXCOD=$G(X),LEXCDT=$G(Y) S:LEXCDT'?7N LEXCDT=$$DT^XLFDT
  1. S LEXNA=$O(^LEX(757.02,"ACT",(LEXCOD_" "),3,(LEXCDT-.001))) S X="" S:LEXNA?7N X=LEXNA
  1. Q X
  1. PF(X) ; Preference File 757.02, Field 4 0;5
  1. S X=+($G(X)) S X=$P($G(^LEX(757.02,+X,0)),"^",5),X=$S(X>0:"Preferred Term",1:"")
  1. Q X
  1. TY(X) ; Type File 757.01, Field 2 1;2
  1. S X=+($G(X)) S X=$P($G(^LEX(757.02,+X,1)),"^",2) S X=$S(X=1:"Concept",X=8:"Full Name",1:"Synonym")
  1. Q X
  1. DA(X) ; Deactivated File 757.01, Field 9 1;5
  1. S X=+($G(X)) S X=$P($G(^LEX(757.02,+X,1)),"^",5) S X=$S(X>0:"Deactivated Term",1:"")
  1. Q X
  1. DS(X,LEX) ; Designation Code Sub-file 757.118, Fields .01 and 2
  1. ;
  1. ; Input
  1. ;
  1. ; X Expression IEN
  1. ;
  1. ; Output
  1. ;
  1. ; LEX Array passed by Reference
  1. ;
  1. ; LEX(#)= Designation Code "^" Hierarchy
  1. ;
  1. K LEX N LEXO,LEXIEN S LEXIEN=+($G(X)),LEXO="" F S LEXO=$O(^LEX(757.01,+LEXIEN,7,"C",58,LEXO)) Q:'$L(LEXO) D
  1. . N LEXDI S LEXDI=0 F S LEXDI=$O(^LEX(757.01,+X,7,"C",58,LEXO,LEXDI)) Q:+LEXDI'>0 D
  1. . . N LEXDS,LEXHI,LEXHN,LEXI,LEXT S LEXDS=$G(^LEX(757.01,+X,7,+LEXDI,0))
  1. . . S LEXHI=$P(LEXDS,"^",3) S LEXHN=$S(LEXHI?1N.N:$P($G(^LEX(757.018,+LEXHI,0)),"^",1),1:"")
  1. . . S:$D(LEXIIEN)&(+LEXHI>0) LEXHN=LEXHN_" (IEN "_+LEXHI_")"
  1. . . S LEXT=$P(LEXDS,"^",1) S:$L(LEXHI) LEXT=LEXT_"^"_LEXHN
  1. . . S LEXI=$O(LEX(" "),-1)+1,LEX(+LEXI)=LEXT
  1. Q
  1. IENS(X,LEX) ; Get IENS
  1. ;
  1. ; Input
  1. ;
  1. ; X Major Concept Map IEN
  1. ;
  1. ; Output
  1. ;
  1. ; LEX Array passed by Reference
  1. ;
  1. ; LEX(1,#) = Major Concept Expression IEN
  1. ; LEX(2,#) = Fully Specified Name Expression IEN
  1. ; LEX(3,#) = Synonymous Expression IEN
  1. ;
  1. K LEX N LEXMC,LEXEIEN S LEXMC=+($G(X)),LEXEIEN=0 F S LEXEIEN=$O(^LEX(757.01,"AMC",LEXMC,LEXEIEN)) Q:+LEXEIEN'>0 D
  1. . N LEXT,LEXI,LEXN S LEXT=$P($G(^LEX(757.01,+LEXEIEN,1)),"^",2) S LEXN=$S(LEXT=1:1,LEXT=8:2,1:3)
  1. . S LEXI=$O(LEX(LEXN," "),-1)+1 S LEX(LEXN,LEXI)=LEXEIEN
  1. Q
  1. SUBS(X,LEX) ; Get Subsets
  1. ;
  1. ; Input
  1. ;
  1. ; X Major Concept Map IEN
  1. ;
  1. ; Output
  1. ;
  1. ; LEX Array passed by Reference
  1. ;
  1. ; LEX(SUB) = 4 Piece "^" delimited string
  1. ;
  1. ; 1 Subset Name
  1. ; 2 Subset Definition IEN file 757.2
  1. ; 3 Subset IEN file 757.21
  1. ; 4 Expression IEN file 757.01
  1. ;
  1. K LEX N LEXIENS,LEXMC,LEXIEN S LEXMC=+($G(X)),LEXIEN=0 F S LEXIEN=$O(^LEX(757.01,"AMC",LEXMC,LEXIEN)) Q:+LEXIEN'>0 D
  1. . Q:$P($G(^LEX(757.01,+LEXIEN,1)),"^",5)>0 S LEXIENS(LEXIEN)=""
  1. Q:$O(LEXIENS(0))'>0 S LEXIEN=0 F S LEXIEN=$O(LEXIENS(LEXIEN)) Q:+LEXIEN'>0 D
  1. . Q:'$D(^LEX(757.21,"B",LEXIEN)) S LEXSIEN=0 F S LEXSIEN=$O(^LEX(757.21,"B",LEXIEN,LEXSIEN)) Q:LEXSIEN'>0 D
  1. . . N LEXND,LEXSI,LEXSA,LEXSF S LEXSI=$P($G(^LEX(757.21,+LEXSIEN,0)),"^",2),LEXND=$G(^LEXT(757.2,+LEXSI,0))
  1. . . S LEXSA=$P(LEXND,"^",2),LEXSF=$$MIX^LEXXM($P(LEXND,"^",1))
  1. . . S:$L(LEXSA)=3&($L(LEXSF)) LEX(LEXSA)=LEXSF_"^"_LEXSI_"^"_LEXSIEN_"^"_LEXIEN
  1. Q
  1. MAPS(X,LEX,LEXD,LEXL) ; Get Mappings
  1. ;
  1. ; Input
  1. ;
  1. ; X SNOMED Code
  1. ; LEXD Versioning DAte
  1. ; LEXL Length of text
  1. ;
  1. ; Output
  1. ;
  1. ; LEX Array passed by Reference
  1. ;
  1. ; LEX(#) = Text
  1. ;
  1. N LEXIDT,LEXLEN,LEXISO,LEXMD,LEXTL K LEX S LEXISO=$G(X) Q:'$L(LEXISO)
  1. S LEXIDT=$P($G(LEXD),".",1) S:LEXIDT'?7N LEXIDT=$$DT^XLFDT
  1. S LEXLEN=$G(LEXL) S:+LEXLEN'>0 LEXLEN="18^25^53" S LEXTL=+($P($G(LEXLEN),"^",3))
  1. S LEXMD=0 F S LEXMD=$O(^LEX(757.32,+LEXMD)) Q:+LEXMD'>0 D
  1. . Q:+($P($G(^LEX(757.32,+LEXMD,2)),"^",1))'=58 N LEXO,LEXSRC,LEXTO S LEXSRC=$P($G(^LEX(757.32,+LEXMD,2)),"^",2)
  1. . S LEXTO=+($P($G(^LEX(757.32,+LEXMD,2)),"^",2)) Q:+LEXTO'>0 Q:'$D(^LEX(757.03,+LEXTO,0))
  1. . S LEXO="" F S LEXO=$O(^LEX(757.33,"C",LEXMD,LEXISO,LEXO)) Q:'$L(LEXO) D
  1. . . N LEXC S LEXC="" F S LEXC=$O(^LEX(757.33,"C",LEXMD,LEXISO,LEXO,LEXC)) Q:'$L(LEXC) D
  1. . . . N LEXE S LEXE=0 F S LEXE=$O(^LEX(757.33,"C",LEXMD,LEXISO,LEXO,LEXC,LEXE)) Q:LEXE'>0 D
  1. . . . . N LEXCODE,LEXEF,LEXEIEN,LEXEXP,LEXHI,LEXI,LEXMA,LEXMIEN,LEXN,LEXNOM,LEXSA,LEXSAB,LEXSIEN,LEXST,LEXT
  1. . . . . S LEXMIEN=LEXE,LEXEF=$O(^LEX(757.33,+LEXE,2,"B",(LEXIDT+.00001)),-1)
  1. . . . . S LEXHI=$O(^LEX(757.33,+LEXE,2,"B",+LEXEF," "),-1)
  1. . . . . S LEXST=$P($G(^LEX(757.33,+LEXE,2,+LEXHI,0)),"^",2) Q:LEXST'>0
  1. . . . . S LEXSA=$S(LEXST>0:"",1:"(Inactive Mapping)")
  1. . . . . S LEXMA=$P($G(^LEX(757.33,+LEXE,0)),"^",5)
  1. . . . . S LEXMA=$S(+LEXMA'>0:"(Partial Map)",1:"")
  1. . . . . S LEXCODE=$P($G(^LEX(757.33,+LEXE,0)),"^",3) Q:'$L(LEXCODE)
  1. . . . . S LEXNOM=$P($G(^LEX(757.03,+LEXTO,0)),"^",2) Q:'$L(LEXNOM)
  1. . . . . S LEXSAB=$E($P($G(^LEX(757.03,+LEXTO,0)),"^",1),1,3) Q:$L(LEXSAB)'=3
  1. . . . . S LEXSRC=$$STATCHK^LEXSRC2(LEXCODE,LEXIDT,,LEXSAB)
  1. . . . . S LEXSIEN=$P(LEXSRC,"^",2) Q:+LEXSIEN'>0
  1. . . . . S LEXEIEN=+($G(^LEX(757.02,+LEXSIEN,0)))
  1. . . . . S LEXEXP=$G(^LEX(757.01,+LEXEIEN,0)) Q:'$L(LEXEXP)
  1. . . . . S LEXT=LEXEXP_" ("_LEXNOM_" "_LEXCODE_")"
  1. . . . . S:$L(LEXMA) LEXT=LEXT_" "_LEXMA
  1. . . . . S:$L(LEXSA) LEXT=LEXT_" "_LEXSA
  1. . . . . S:$D(LEXIIEN) LEXT=LEXT_" (IEN "_LEXMIEN_")"
  1. . . . . K LEXN S LEXN(1)=LEXT D PR^LEXU(.LEXN,(+($G(LEXTL))-4))
  1. . . . . S LEXI=0 F S LEXI=$O(LEXN(LEXI)) Q:+LEXI'>0 D
  1. . . . . . N LEXC,LEXT S LEXT=$G(LEXN(LEXI)) Q:'$L(LEXT)
  1. . . . . . S LEXC=$O(LEX(" "),-1)+1 S:LEXI=1 LEX(LEXC)=LEXT S:LEXI>1 LEX(LEXC)=" "_LEXT
  1. Q