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

LEXAR3.m

Go to the documentation of this file.
  1. LEXAR3 ;ISL/KER - Look-up Response (Help, Def, MAX) ;05/23/2017
  1. ;;2.0;LEXICON UTILITY;**73,80,103**;Sep 23, 1996;Build 2
  1. ;
  1. ; Global Variables
  1. ; ^TMP("LEXHIT") SACC 2.3.2.5.1
  1. ; ^TMP("LEXSCH") SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; $$IMP^ICDEX ICR 5747
  1. ; $$DT^XLFDT ICR 10103
  1. ;
  1. ; Local Variables NEWed or KILLed Elsewhere
  1. ; LEXLL List Length NEWed in LEXAR
  1. ; LEXUR User's Response NEWed in LEXAR
  1. ; LEXVDT Versioning Date NEWed in LEXAR
  1. ;
  1. HLP ; Help
  1. N LEXRP,LEXMAX K LEX("HLP")
  1. S LEXMAX=+($G(^TMP("LEXSCH",$J,"LST",0)))
  1. I LEXUR["??" D EXT Q
  1. S LEXRP=+($P(LEXUR,"?",2,229))
  1. I LEXRP>0,LEXRP'>LEXMAX D Q
  1. . S LEXRP=+($G(^TMP("LEXHIT",$J,LEXRP))) D DEF(LEXRP)
  1. I LEXUR["?",LEXRP'["?",+LEXRP'>0 D STD
  1. Q
  1. STD ; Standard Help LEX("HLP",
  1. I +($G(LEX))=1 D STD2 Q
  1. N LEXC S LEXC=+($G(LEX("HLP",0))),LEXC=LEXC+1,LEX("HLP",0)=LEXC
  1. S:LEX'>LEXMAX LEX("HLP",LEXC)="Select 1-"_LEXMAX_", ^ (quit), or ?# (help on a term)"
  1. S:LEX>LEXMAX LEX("HLP",LEXC)="Select 1-"_LEXMAX_", ^ (quit), ^# (jump - "_LEX_"), ?# (term help), or <Return> for more"
  1. D:$D(LEX("LIST")) LST^LEXAR
  1. Q
  1. STD2 ; Standard Help LEX("HLP",
  1. K LEX("HLP") S LEXRP=+($G(^TMP("LEXHIT",$J,1))) D DEF(LEXRP)
  1. N LEXC S LEXC=+($G(LEX("HLP",0))) I LEXC>0 S LEXC=LEXC+1,LEX("HLP",LEXC)="",LEX("HLP",0)=LEXC
  1. S LEXC=LEXC+1,LEX("HLP",0)=LEXC,LEX("HLP",LEXC)="Enter ""Yes"" to select, ""No"" to ignore, ""^"" to quit or ""?"" for term help"
  1. D:$D(LEX("LIST")) LST^LEXAR
  1. Q
  1. EXT ; Extended Help LEX("HLP",
  1. Q:+($G(LEX))'>0 Q:+($G(LEXLL))'>0 I +($G(LEX))=1 D EXT2 Q
  1. N LEXCP,LEXTP,LEXM S LEXTP=LEX\LEXLL S:LEX#LEXLL>0 LEXTP=LEXTP+1
  1. S LEXCP=LEXMAX\LEXLL S:LEXMAX#LEXLL>0 LEXCP=LEXCP+1
  1. S LEXM=$S(LEXTP>LEXCP:1,1:0) N LEXS,LEXE,LEXJ,LEXH,LEXR,LEXSTR,LEXC
  1. S LEXC=+($G(LEX("HLP",0))) S LEXC=LEXC+1
  1. S (LEXS,LEXE,LEXJ,LEXH,LEXR,LEXSTR)=""
  1. S LEXS="You may select 1-"_LEXMAX
  1. S LEXE="enter an ^ to quit" S:LEXM LEXJ="enter ^# to jump to another entry on the list (up to "_LEX_")"
  1. S LEXH="enter ?# to display the definition of an entry marked with an asterisk (*)"
  1. S:LEXM LEXR="or press <Return> to continue."
  1. S:'LEXM LEXR="or press <Return> to quit without making a selection."
  1. S LEXSTR=LEXS S:LEXE'="" LEXSTR=LEXSTR_", "_LEXE S:LEXJ'="" LEXSTR=LEXSTR_", "_LEXJ
  1. S:LEXH'="" LEXSTR=LEXSTR_", "_LEXH S:LEXR'="" LEXSTR=LEXSTR_", "_LEXR
  1. I $L(LEXSTR)>74 D
  1. . F Q:$L(LEXSTR)'>74 D
  1. . . N LEXI F LEXI=74:-1:1 Q:$E(LEXSTR,LEXI)=" "
  1. . . S LEX("HLP",LEXC)=$E(LEXSTR,1,(LEXI-1)),LEX("HLP",0)=LEXC
  1. . . S LEXC=LEXC+1,LEXSTR=$E(LEXSTR,(LEXI+1),$L(LEXSTR))
  1. . I $L(LEXSTR)>0,$L(LEXSTR)'>74 S LEXC=LEXC+1,LEX("HLP",LEXC)=LEXSTR,LEX("HLP",0)=LEXC
  1. D:$D(LEX("LIST")) LST^LEXAR
  1. Q
  1. EXT2 ; Extended help for one
  1. N LEXS,LEXE,LEXH,LEXSTR,LEXC,LEXDEF,LEXRP
  1. S (LEXS,LEXE,LEXJ,LEXC,LEXH,LEXR,LEXSTR)=""
  1. S LEXRP=+($G(^TMP("LEXHIT",$J,1))) D DEF(LEXRP)
  1. S LEXC=+($G(LEX("HLP",0))) I LEXC>0 S LEXC=LEXC+1,LEX("HLP",LEXC)="",LEX("HLP",0)=LEXC
  1. S LEXC=LEXC+1
  1. S LEXDEF=+($G(^TMP("LEXHIT",$J,1)))
  1. S LEXDEF=$S($D(^LEX(757.01,+LEXDEF,3)):1,1:0)
  1. S LEXS="There was only one term found. Enter ""Yes"" to select, ""No"" to ignore"
  1. S LEXE="or an ""^"" to quit"
  1. S LEXH="" S:+LEXDEF>0 LEXH="""?"" to display the term definition"
  1. S LEXSTR=LEXS
  1. S:LEXH'="" LEXSTR=LEXSTR_", "_LEXH
  1. S:LEXE'="" LEXSTR=LEXSTR_", "_LEXE
  1. I $L(LEXSTR)>74 D
  1. . F Q:$L(LEXSTR)'>74 D
  1. . . N LEXI F LEXI=74:-1:1 Q:$E(LEXSTR,LEXI)=" "
  1. . . S LEX("HLP",LEXC)=$E(LEXSTR,1,(LEXI-1)),LEX("HLP",0)=LEXC
  1. . . S LEXC=LEXC+1,LEXSTR=$E(LEXSTR,(LEXI+1),$L(LEXSTR))
  1. . I $L(LEXSTR)>0,$L(LEXSTR)'>74 S LEXC=LEXC+1,LEX("HLP",LEXC)=LEXSTR,LEX("HLP",0)=LEXC
  1. D:$D(LEX("LIST")) LST^LEXAR
  1. Q
  1. DH ; Display Help
  1. N LEXI S LEXI=0
  1. F S LEXI=$O(LEX("HLP",LEXI)) Q:+LEXI=0 W !," ",LEX("HLP",LEXI)
  1. Q
  1. DA ; Display List
  1. Q
  1. N LEXI S LEXI=0
  1. F S LEXI=$O(LEX("LIST",LEXI)) Q:+LEXI=0 W !," ",LEX("LIST",LEXI)
  1. Q
  1. DEF(LEXIEN) ; Definition Help LEX("HLP",
  1. N LEXR,LEXLN,LEXMC,LEXTY,LEXC
  1. S (LEXR,LEXIEN)=+($G(LEXIEN))
  1. S LEXTY=$P($G(^LEX(757.01,LEXIEN,1)),"^",2)
  1. D:$D(LEX("LIST")) LST^LEXAR Q:LEXIEN'>0
  1. N LEXLN,LEXMC,LEXC S (LEXLN,LEXC)=0 K LEX("HLP")
  1. I '$D(^LEX(757.01,LEXIEN,3,1)),LEXTY'=1 D
  1. . S LEXIEN=+($G(^LEX(757.01,LEXIEN,1)))
  1. . S LEXIEN=+($G(^LEX(757,LEXIEN,0)))
  1. I $D(^LEX(757.01,LEXIEN,0)),$L($G(^LEX(757.01,LEXIEN,3,1,0))) D
  1. . S LEXC=1,LEX("HLP",LEXC)=$G(^LEX(757.01,LEXIEN,0)) S LEXC=LEXC+1
  1. . S LEX("HLP",LEXC)="",LEXC("HLP",0)=LEXC
  1. . F S LEXLN=$O(^LEX(757.01,LEXIEN,3,LEXLN)) Q:+LEXLN=0 D
  1. . . S LEXC=LEXC+1 S LEX("HLP",LEXC)=^LEX(757.01,LEXIEN,3,LEXLN,0)
  1. . . S LEX("HLP",0)=LEXC
  1. I '$D(LEX("HLP")) D
  1. . K LEX("HLP")
  1. . S LEX("HLP",1)="No definition found"
  1. . I $L($G(^LEX(757.01,LEXR,0))) D
  1. . . N LEXEXP S LEXEXP=$G(^LEX(757.01,LEXR,0)) Q:'$L(LEXEXP)
  1. . . S LEX("HLP",1)=LEX("HLP",1)_" found for "_$C(34)_LEXEXP_$C(34)
  1. . S:'$L($G(^LEX(757.01,LEXR,0))) LEX("HLP",1)="No definition found"
  1. D:$D(LEX("LIST")) LST^LEXAR
  1. Q
  1. ;
  1. QMH(X) ; Question Mark Help (system sensitive)
  1. K LEX N LEX2,LEX3,LEX4,LEXA,LEXC,LEXCT,LEXD,LEXEX,LEXF,LEXFIL,LEXHDT
  1. N LEXI,LEXIDT,LEXLEN,LEXO,LEXOK,LEXP,LEXS,LEXSP,LEXT,LEXU,LEXX,LEXY,Y
  1. S LEXHDT=$G(LEXVDT) S:LEXHDT'?7N LEXHDT=$G(^TMP("LEXSCH",$J,"VDT",0))
  1. S:LEXHDT'?7N LEXHDT=$G(DT) S:LEXHDT'?7N LEXHDT=$$DT^XLFDT
  1. S LEXFIL=$G(^TMP("LEXSCH",$J,"FIL",0))
  1. S LEXY=$$HSYS^LEXHLP2(LEXFIL,LEXHDT),LEXIDT=$$IMP^ICDEX("10D")
  1. S:$L(LEXY,"/")>2 LEXY=LEXY_" etc" S LEXX=$G(X),(LEX2,LEX3,LEX4)=""
  1. S (LEXC,LEXS,LEXEX)="",LEXF=0 D:LEXX["??" HTXT
  1. I LEXX["??"&($L(LEX2))&($L(LEX3))&($L(LEX4)) D
  1. . S:$L(LEXC)&($L(LEXS))&($L(LEXEX)) LEXF=1
  1. S LEXOK=0 I LEXHDT?7N,LEXIDT?7N,LEXHDT<LEXIDT D
  1. . I LEXFIL["$$"&(LEXFIL["ONE^") D
  1. . . D:LEXFIL["$$10P"&(LEXFIL'["$$10D") N10P^LEXHLP2
  1. . . D:LEXFIL'["$$10P"&(LEXFIL["$$10D") N10D^LEXHLP2
  1. . . D:LEXFIL["$$10P"&(LEXFIL["$$10D") N10^LEXHLP2
  1. . I LEXFIL["$$SO^LEXU" D
  1. . . D:LEXFIL["10P"&(LEXFIL'["10D") N10P^LEXHLP2
  1. . . D:LEXFIL'["10P"&(LEXFIL["10D") N10D^LEXHLP2
  1. . . D:LEXFIL["10P"&(LEXFIL["10D") N10^LEXHLP2
  1. I 'LEXOK,LEXX["?"&(LEXX'["^") D
  1. . N LEXP,LEXSP,LEXI,LEXCT S LEXSP=" "
  1. . K LEXP S LEXP(1)="Enter a ""free text"" term. "
  1. . S LEXP(1)=LEXP(1)_"Best results occur using two to four full "
  1. . S LEXP(1)=LEXP(1)_"or partial words without a suffix"
  1. . S:LEXF>0 LEXP(2)="(i.e., """_LEX2_""", """_LEX3_""", """_LEX4_""")"
  1. . D PR^LEXU(.LEXP,70) S LEXCT=$O(LEX("HLP"," "),-1),LEXI=0
  1. . F S LEXI=$O(LEXP(LEXI)) Q:+LEXI'>0 D
  1. . . N LEXT S LEXT=$G(LEXP(LEXI)),LEXCT=LEXCT+1
  1. . . S LEX("HLP",LEXCT)=LEXSP_LEXT
  1. . S LEXCT=$O(LEX("HLP"," "),-1)+1
  1. . S LEX("HLP",LEXCT)=" or "
  1. . K LEXP S LEXP(1)="Enter a classification code "
  1. . S:$L(LEXY) LEXP(1)=LEXP(1)_"("_LEXY_") "
  1. . S LEXP(1)=LEXP(1)_"to find the term associated with the code."
  1. . I LEXF>0 D
  1. . . S LEXP(2)="Example; a lookup of "_LEXS_" code "_LEXC_" "
  1. . . S LEXP(2)=LEXP(2)_"returns one and only one term. "
  1. . . S LEXP(2)=LEXP(2)_"That term is the preferred term for the code "
  1. . . S LEXP(2)=LEXP(2)_LEXC_", """_LEXEX_""""
  1. . D PR^LEXU(.LEXP,70) S LEXCT=$O(LEX("HLP"," "),-1),LEXI=0
  1. . F S LEXI=$O(LEXP(LEXI)) Q:+LEXI'>0 D
  1. . . N LEXT S LEXT=$G(LEXP(LEXI)),LEXCT=LEXCT+1
  1. . . S LEX("HLP",LEXCT)=LEXSP_LEXT
  1. . S LEXCT=$O(LEX("HLP"," "),-1)+1
  1. . S LEX("HLP",LEXCT)=" or "
  1. . K LEXP S LEXP(1)="Enter a classification code "
  1. . S:$L(LEXY) LEXP(1)=LEXP(1)_"("_LEXY_") "
  1. . S LEXP(1)=LEXP(1)_"followed by a plus sign (+) to retrieve "
  1. . S LEXP(1)=LEXP(1)_"all terms associated with the code."
  1. . I LEXF>0 D
  1. . . S LEXP(2)="Example; a lookup of "_LEXS_" code "_LEXC
  1. . . S LEXP(2)=LEXP(2)_"+ returns all terms that are linked to "
  1. . . S LEXP(2)=LEXP(2)_"the code "_LEXC_"."
  1. . D PR^LEXU(.LEXP,70) S LEXCT=$O(LEX("HLP"," "),-1),LEXI=0
  1. . F S LEXI=$O(LEXP(LEXI)) Q:+LEXI'>0 D
  1. . . N LEXT S LEXT=$G(LEXP(LEXI)),LEXCT=LEXCT+1
  1. . . S LEX("HLP",LEXCT)=LEXSP_LEXT
  1. S LEXC=$O(LEX("HLP"," "),-1) I LEXC>0 D
  1. . S LEX=0,LEX("HLP",0)=LEXC S:$L($G(LEXX)) LEX("NAR")=$G(LEXX)
  1. Q
  1. HTXT ; Help Text (expanded)
  1. N LEXF,LEXOK,LEXU
  1. S LEXOK=0,LEXU=$G(LEXX) S LEXF=$G(^TMP("LEXSCH",$J,"FIL",0))
  1. S (LEX2,LEX3,LEX4,LEXC,LEXS,LEXEX)="",LEXOK=0 D:'$L(LEXF) HICD^LEXHLP2
  1. Q:LEXOK D:LEXF["$$DX^LEXU" HICD^LEXHLP2 Q:LEXOK
  1. I LEXF["$$"&(LEXF["ONE^") D Q:LEXOK
  1. . D:LEXF["$$10P"&(LEXF'["$$10D") H10P^LEXHLP2 D:LEXF["$$10D" H10D^LEXHLP2 Q:LEXOK
  1. . D:LEXF["$$CPC"&(LEXF'["$$CPT") HCPC^LEXHLP2 D:LEXF["$$CPT" HCPT^LEXHLP2 Q:LEXOK
  1. I LEXF["$$SO^LEXU" D Q:LEXOK
  1. . D:LEXF["10P"&(LEXF'["10D") H10P^LEXHLP2 D:LEXF["10D" H10D^LEXHLP2 Q:LEXOK
  1. . D:LEXF["CPC"&(LEXF'["CPT") HCPC^LEXHLP2 D:LEXF["CPT" HCPT^LEXHLP2 Q:LEXOK
  1. . D:LEXF["SCC" HSCC^LEXHLP2 Q:LEXOK D:LEXF["DS3"!(LEXF["DS4") HDS4^LEXHLP2 Q:LEXOK
  1. . D:LEXF["OMA"&(LEXF'["NAN") HOMA^LEXHLP2 D:LEXF["NAN" HNAN^LEXHLP2 Q:LEXOK
  1. D HICD^LEXHLP2
  1. Q
  1. ;
  1. ; Miscellaneous
  1. SA ; Show Array
  1. N LEXI S LEXI=0 F S LEXI=$O(LEX("HLP",LEXI)) Q:+LEXI'>0 D
  1. . W !,LEX("HLP",LEXI)
  1. Q
  1. TM(X,Y) ; Trim Character Y - Default " "
  1. S X=$G(X) Q:X="" X 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