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

LEXINF5.m

Go to the documentation of this file.
  1. LEXINF5 ;ISL/KER - Information - Display ;05/23/2017
  1. ;;2.0;LEXICON UTILITY;**103**;Sep 23, 1996;Build 2
  1. ;
  1. ; Global Variables
  1. ; ^LEX(757.02 SACC 1.3
  1. ; ^LEX(757.03 SACC 1.3
  1. ; ^TMP("LEXINF" SACC 2.3.2.5.1
  1. ;
  1. ; External References
  1. ; ^%ZIS ICR 10086
  1. ; HOME^%ZIS ICR 10086
  1. ; ^%ZISC ICR 10089
  1. ; ^%ZTLOAD ICR 10063
  1. ; ^DIR ICR 10026
  1. ; $$FMTE^XLFDT ICR 10103
  1. ;
  1. TERM(ARY) ; Display by Expression
  1. K ^TMP("LEXINF",$J) N LEXTYPE S LEXTYPE="T" D MP(.ARY),FS(.ARY),OT(.ARY),CO(.ARY),SR(.ARY),SB(.ARY),DC(.ARY),CP(.ARY) D:$D(^TMP("LEXINF",$J)) DEV
  1. Q
  1. CODE(ARY) ; Display by Code
  1. K ^TMP("LEXINF",$J) S LEXTYPE="C" D CO(.ARY),MP(.ARY),FS(.ARY),OT(.ARY),SR(.ARY),SB(.ARY),DC(.ARY),CP(.ARY) D:$D(^TMP("LEXINF",$J)) DEV
  1. Q
  1. ;
  1. ; Display Components
  1. MP(ARY) ; Major Concept/Preferred Term MC/PF
  1. N LEXA,LEXEXP,LEXI,LEXMC,LEXPF,LEXTTL S LEXMC=$P($G(ARY("MC",1,"I")),"^",4) Q:LEXMC'>0
  1. S LEXPF=$P($G(ARY("PF",1,"I")),"^",4),LEXTTL="Major Concept" S:LEXPF=LEXMC LEXTTL=LEXTTL_"/Preferred Term"
  1. S LEXEXP=$G(ARY("MC",1)) Q:'$L(LEXEXP) S:$D(LEXIIEN) LEXEXP=LEXEXP_" (IEN "_LEXMC_")"
  1. K LEXA S LEXA(1)=LEXEXP D PR^LEXU(.LEXA,70) D TL((" "_LEXTTL)) S LEXI=0
  1. F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D:LEXI=1 BL D TL((" "_$G(LEXA(LEXI))))
  1. D ID("MC",1,.ARY),SK("MC",1,.ARY) I LEXPF>0,LEXPF'=LEXMC D
  1. . N LEXEXP,LEXA,LEXTTL,LEXI S LEXEXP=$G(ARY("PF",1)) S:$D(LEXIIEN) LEXEXP=LEXEXP_" (IEN "_+LEXPF_")"
  1. . S LEXTTL="Preferred Term" K LEXA S LEXA(1)=LEXEXP D PR^LEXU(.LEXA,70)
  1. . D BL,TL((" "_LEXTTL)) S LEXI=0 F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D:LEXI=1 BL D TL((" "_$G(LEXA(LEXI))))
  1. . D ID("PF",1,.ARY),SK("PF",1,.ARY)
  1. N LEXIIEN,TEST
  1. Q
  1. FS(ARY) ; Fully Specified Names FS
  1. N LEXA,LEXEXP,LEXI,LEXIEN,LEXSEQ,LEXSTA,LEXTTL S LEXTTL="Fully Specified Name"
  1. S:$O(ARY("FS"," "),-1)>1 LEXTTL=LEXTTL_"s" D:$O(ARY("FS",0))>0 BL,TL((" "_LEXTTL))
  1. S LEXSEQ=0 F S LEXSEQ=$O(ARY("FS",LEXSEQ)) Q:+LEXSEQ'>0 D
  1. . N LEXA,LEXEXP,LEXI,LEXIEN,LEXSTA
  1. . S LEXIEN=$P($G(ARY("FS",LEXSEQ,"I")),"^",4) Q:LEXIEN'>0
  1. . S LEXSTA=$P($G(ARY("FS",LEXSEQ,"I")),"^",3) S:LEXSTA'["Retire" LEXSTA=""
  1. . S LEXEXP=$G(ARY("FS",LEXSEQ)) Q:'$L(LEXEXP)
  1. . S:$L(LEXSTA) LEXEXP=LEXEXP_" ("_LEXSTA_")"
  1. . S:$D(LEXIIEN) LEXEXP=LEXEXP_" (IEN "_LEXIEN_")" K LEXA S LEXA(1)=LEXEXP D PR^LEXU(.LEXA,70)
  1. . S LEXI=0 F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D:LEXI=1 BL D TL((" "_$G(LEXA(LEXI))))
  1. . D ID("FS",LEXSEQ,.ARY)
  1. . D SK("FS",LEXSEQ,.ARY)
  1. Q
  1. OT(ARY) ; Other Terms SY/LV
  1. N LEXPF,LEXTY S LEXPF=$P($G(ARY("PF",1,"I")),"^",4) F LEXTY="SY","LV" D
  1. . N LEXTTL,LEXSEQ S LEXTTL=$S(LEXTY="LV":"Lexical Variant",1:"Synonym")
  1. . S:$O(ARY(LEXTY," "),-1)>1 LEXTTL=LEXTTL_"s" D:$O(ARY(LEXTY,0))>0 BL,TL((" "_LEXTTL))
  1. . S LEXSEQ=0 F S LEXSEQ=$O(ARY(LEXTY,LEXSEQ)) Q:+LEXSEQ'>0 D
  1. . . N LEXIEN,LEXSTA,LEXEXP,LEXA,LEXI
  1. . . S LEXIEN=$P($G(ARY(LEXTY,LEXSEQ,"I")),"^",4)
  1. . . S LEXSTA=$P($G(ARY(LEXTY,LEXSEQ,"I")),"^",3) S:LEXSTA'["Retire" LEXSTA=""
  1. . . S LEXEXP=$G(ARY(LEXTY,LEXSEQ))
  1. . . S:$L(LEXSTA) LEXEXP=LEXEXP_" ("_LEXSTA_")"
  1. . . S:$D(LEXIIEN) LEXEXP=LEXEXP_" (IEN "_LEXIEN_")"
  1. . . K LEXA S LEXA(1)=LEXEXP D PR^LEXU(.LEXA,70)
  1. . . S LEXI=0 F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D:LEXI=1 BL D TL((" "_$G(LEXA(LEXI))))
  1. . . D ID(LEXTY,LEXSEQ,.ARY)
  1. Q
  1. ID(X,Y,ARY) ; Designation ID ID
  1. N LEXC,LEXCT,LEXH,LEXID,LEXSEQ,LEXSTR,LEXT,LEXTTL,LEXTY S LEXTY=$G(X),LEXSEQ=$G(Y) Q:'$L(LEXTY) Q:+LEXSEQ'>0
  1. Q:'$D(ARY(LEXTY,LEXSEQ,"ID")) Q:$O(ARY(LEXTY,LEXSEQ,"ID",0))'>0 S LEXT=20,LEXTTL="Designation ID"
  1. S:$L($P($G(ARY(LEXTY,LEXSEQ,"ID",1,"I")),"^",3)) LEXTTL=LEXTTL_$J(" ",(LEXT-$L(LEXTTL)))_"Hierarchy "
  1. S (LEXCT,LEXID)=0 F S LEXID=$O(ARY(LEXTY,LEXSEQ,"ID",LEXID)) Q:+LEXID'>0 D
  1. . N LEXC,LEXH,LEXSTR S LEXC=$G(ARY(LEXTY,LEXSEQ,"ID",LEXID)) Q:'$L(LEXC)
  1. . S LEXH=$P($G(ARY(LEXTY,LEXSEQ,"ID",LEXID,"I")),"^",3)
  1. . S LEXSTR=LEXC S:$L(LEXH) LEXSTR=LEXSTR_$J(" ",((LEXT-2)-$L(LEXSTR)))_LEXH
  1. . S LEXCT=LEXCT+1 D:LEXCT=1 TL((" "_LEXTTL)) D TL((" "_LEXSTR))
  1. Q
  1. SK(X,Y,ARY) ; Supplemental Keywords SK
  1. N LEXA,LEXCL,LEXI,LEXK,LEXMX,LEXNM,LEXSEQ,LEXSK,LEXSTR,LEXTTL,LEXTY S LEXTY=$G(X),LEXSEQ=$G(Y) Q:'$L(LEXTY)
  1. Q:+LEXSEQ'>0 Q:'$D(ARY(LEXTY,LEXSEQ,"SK")) Q:$O(ARY(LEXTY,LEXSEQ,"SK",0))'>0 S LEXMX=0
  1. S LEXSK=0 F S LEXSK=$O(ARY(LEXTY,LEXSEQ,"SK",LEXSK)) Q:+LEXSK'>0 D
  1. . N LEXK S LEXK=$G(ARY(LEXTY,LEXSEQ,"SK",LEXSK)) S:$L(LEXK)>LEXMX LEXMX=$L(LEXK)
  1. S LEXMX=LEXMX+2,LEXNM=65\LEXMX,LEXTTL="Supplemental Keywords" K LEXA S LEXI=1,LEXSK=0,LEXCL=0
  1. S LEXSTR="" K LEXA F S LEXSK=$O(ARY(LEXTY,LEXSEQ,"SK",LEXSK)) Q:+LEXSK'>0 D
  1. . N LEXK S LEXK=$G(ARY(LEXTY,LEXSEQ,"SK",LEXSK)) Q:'$L(LEXK)
  1. . S LEXSTR=LEXSTR_LEXK_$J(" ",(LEXMX-$L(LEXK))),LEXCL=LEXCL+1
  1. . S:LEXCL'<LEXNM LEXA(LEXI)=LEXSTR,LEXCL=0,LEXSTR="",LEXI=LEXI+1
  1. . S:LEXCL<LEXNM LEXA(LEXI)=LEXSTR
  1. I $O(LEXA(0))>0 D
  1. . N LEXI,LEXSTR D TL((" "_LEXTTL)) S LEXI=0 F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D
  1. . . N LEXSTR S LEXSTR=$$TM($G(LEXA(LEXI))) D TL((" "_LEXSTR))
  1. Q
  1. SR(ARY) ; Sources SR
  1. N LEXA,LEXCT,LEXI,LEXIEN,LEXND,LEXNOM,LEXSAB,LEXSEQ,LEXSTR,LEXTTL
  1. Q:'$D(ARY("SR")) Q:$O(ARY("SR",0))'>0
  1. S LEXTTL="Sources",LEXCT=0
  1. S LEXSEQ=0 F S LEXSEQ=$O(ARY("SR",LEXSEQ)) Q:+LEXSEQ'>0 D
  1. . N LEXA,LEXIEN,LEXND,LEXNOM,LEXSAB,LEXSDO,LEXSTR S LEXND=$G(ARY("SR",LEXSEQ,"I"))
  1. . S LEXSAB=$P(LEXND,"^",1) Q:'$L(LEXSAB) S LEXIEN=$O(^LEX(757.03,"ASAB",LEXSAB,0)) Q:LEXIEN'>0
  1. . S LEXNOM=$P(LEXND,"^",2) Q:'$L(LEXNOM) S LEXSDO=$P(LEXND,"^",3) S:$D(LEXIIEN) LEXSDO=LEXSDO_" (IEN "_LEXIEN_")"
  1. . S LEXA(1)=LEXSDO D PR^LEXU(.LEXA,(78-26)) S LEXSTR=LEXNOM,LEXSTR=LEXSTR_$J(" ",(15-$L(LEXSTR)))_LEXSAB,LEXCT=LEXCT+1
  1. . D:LEXCT=1 BL,TL((" "_LEXTTL)),BL S LEXSTR=" "_LEXSTR
  1. . S:$L(LEXA(1)) LEXSTR=LEXSTR_$J(" ",(27-$L(LEXSTR)))_$G(LEXA(1)) D TL(LEXSTR)
  1. . I $O(LEXA(1))>1 D
  1. . . N LEXI S LEXI=1 F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D
  1. . . . N LEXSTR S LEXSTR=$J(" ",27)_$G(LEXA(LEXI)) D TL(LEXSTR)
  1. Q
  1. CO(ARY) ; Codes CO
  1. N LEXTTL,LEXSEQ,LEXCT S LEXTTL="Codes",(LEXSEQ,LEXCT)=0 F S LEXSEQ=$O(ARY("CO",LEXSEQ)) Q:+LEXSEQ'>0 D
  1. . N LEXCO,LEXND,LEXST,LEXEF,LEXIE,LEXSR,LEXNM,LEXSTR S LEXCO=$G(ARY("CO",LEXSEQ)),LEXND=$G(ARY("CO",LEXSEQ,"I"))
  1. . S LEXST=$P(LEXND,"^",1) Q:LEXST'?1N S LEXEF=$P(LEXND,"^",2) Q:LEXEF'?7N S LEXIE=$P(LEXND,"^",4) Q:LEXIE'>0
  1. . S LEXSR=$P($G(^LEX(757.02,+LEXIE,0)),"^",3) Q:LEXSR'>0 S LEXNM=$P($G(^LEX(757.03,+LEXSR,0)),"^",2) Q:'$L(LEXNM)
  1. . S LEXST=$S(LEXST>0:"Active",1:"Inactive"),LEXSTR=LEXCO,LEXSTR=LEXSTR_" "_$J(" ",(21-$L(LEXSTR)))_LEXNM
  1. . S LEXSTR=LEXSTR_" "_$J(" ",(33-$L(LEXSTR)))_LEXST,LEXSTR=LEXSTR_" "_$J(" ",(43-$L(LEXSTR)))_$$FMTE^XLFDT(LEXEF,"5Z")
  1. . S:$D(LEXIIEN) LEXSTR=LEXSTR_$J(" ",(51-$L(LEXSTR)))_" (IEN "_LEXIE_")" S LEXCT=LEXCT+1 D:LEXCT=1 BL,TL((" "_LEXTTL)),BL
  1. . S LEXSTR=" "_LEXSTR D TL(LEXSTR) D MA(LEXCO,LEXSR,.ARY)
  1. D:LEXCT>0&($G(LEXTYPE)'="T") BL
  1. Q
  1. MA(X,Y,ARY) ; Mappings MP
  1. N LEXSEQ,LEXSRC,LEXSYS,LEXNOM,LEXTTL,LEXCT,LEXSEQ
  1. S LEXSRC=$G(X),LEXSYS=$G(Y) Q:'$L(LEXSRC) Q:+LEXSYS'>0 S LEXNOM=$P($G(^LEX(757.03,+LEXSYS,0)),"^",2)
  1. Q:'$L(LEXNOM) S LEXTTL="Mappings",(LEXCT,LEXSEQ)=0 F S LEXSEQ=$O(ARY("MP",LEXSEQ)) Q:+LEXSEQ'>0 D
  1. . N LEXTAR,LEXND,LEXTST,LEXTEF,LEXTSY,LEXIEN,LEXMAT,LEXSTR S LEXTAR=$G(ARY("MP",LEXSEQ)),LEXND=$G(ARY("MP",LEXSEQ,"I"))
  1. . Q:$P(LEXND,"^",6)'=LEXSRC Q:$P(LEXND,"^",7)'=LEXSYS S LEXTST=$P(LEXND,"^",1) Q:LEXTST'?1N
  1. . S LEXTST=$S(LEXTST>0:"Active",1:"Inactive"),LEXTEF=$P(LEXND,"^",2) Q:LEXTEF'?7N
  1. . S LEXTEF=$$FMTE^XLFDT(LEXTEF,"5Z"),LEXTSY=$P(LEXND,"^",3) Q:'$L(LEXTSY)
  1. . S LEXIEN=$P(LEXND,"^",4) Q:+LEXIEN'>0 S LEXMAT=$P(LEXND,"^",5) Q:'$L(LEXMAT)
  1. . S LEXCT=LEXCT+1 D:LEXCT=1 TL((" "_LEXTTL)) S LEXSTR=LEXTAR
  1. . S LEXSTR=LEXSTR_" "_$J(" ",(17-$L(LEXSTR)))_LEXTSY,LEXSTR=LEXSTR_" "_$J(" ",(29-$L(LEXSTR)))_LEXTST
  1. . S LEXSTR=LEXSTR_" "_$J(" ",(39-$L(LEXSTR)))_LEXTEF S:$D(LEXIIEN) LEXSTR=LEXSTR_$J(" ",(51-$L(LEXSTR)))_" (IEN "_LEXIEN_")"
  1. . D TL((" "_LEXSTR))
  1. Q
  1. DC(ARY) ; Diagnostic Categories (ICD-10-CM) DC
  1. Q:'$D(ARY("CO","B",30)) N LEXSEQ,LEXTTL,LEXCT S LEXTTL="Diagnostic Categories (ICD-10-CM)",(LEXCT,LEXSEQ)=0
  1. F S LEXSEQ=$O(ARY("DC",LEXSEQ)) Q:+LEXSEQ'>0 D
  1. . N LEXA,LEXDC,LEXND,LEXI,LEXST,LEXEF,LEXNM,LEXIE,LEXSTR,LEXT
  1. . S LEXDC=$G(ARY("DC",LEXSEQ)),LEXND=$G(ARY("DC",LEXSEQ,"I")),LEXST=$P(LEXND,"^",1),LEXEF=$P(LEXND,"^",2)
  1. . S LEXNM=$P(LEXND,"^",3),LEXIE=$P(LEXND,"^",4) S:$D(LEXIIEN) LEXNM=LEXNM_" (IEN "_LEXIE_")"
  1. . K LEXA S LEXA(1)=LEXNM D PR^LEXU(.LEXA,61) S LEXSTR=LEXDC,LEXSTR=LEXSTR_$J(" ",(12-$L(LEXSTR)))_$G(LEXA(1))
  1. . S LEXCT=LEXCT+1 D:LEXCT=1 BL,TL((" "_LEXTTL)),BL S LEXSTR=" "_LEXSTR D TL(LEXSTR)
  1. . S LEXI=1 F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D
  1. . . N LEXT S LEXT="",LEXT=LEXT_$J(" ",(12-$L(LEXT)))_$G(LEXA(LEXI)) S LEXT=" "_LEXT D TL(LEXT)
  1. Q
  1. CP(ARY) ; Character Positions (ICD-10-PCS) CP
  1. Q:'$D(ARY("CO","B",31)) N LEXSEQ,LEXTTL,LEXCT,LEXCODE S LEXTTL="Procedure Character Positions (ICD-10-PCS)"
  1. S (LEXCT,LEXSEQ)=0,LEXCODE=$G(ARY("CP","I"))
  1. F S LEXSEQ=$O(ARY("CP",LEXSEQ)) Q:+LEXSEQ'>0 D
  1. . N LEXA,LEXDC,LEXND,LEXI,LEXST,LEXEF,LEXNM,LEXIE,LEXSTR,LEXT
  1. . S LEXDC=$G(ARY("CP",LEXSEQ)),LEXND=$G(ARY("CP",LEXSEQ,"I")),LEXST=$P(LEXND,"^",1),LEXEF=$P(LEXND,"^",2)
  1. . S LEXNM=$P(LEXND,"^",3),LEXIE=$P(LEXND,"^",4) S:$D(LEXIIEN) LEXNM=LEXNM_" (IEN "_LEXIE_")"
  1. . K LEXA S LEXA(1)=LEXNM D PR^LEXU(.LEXA,61) S LEXSTR=LEXDC,LEXSTR=LEXSTR_$J(" ",(12-$L(LEXSTR)))_$G(LEXA(1))
  1. . S LEXCT=LEXCT+1 I LEXCT=1 D
  1. . . N LEXT D BL,TL((" "_LEXTTL)),BL I $L($G(LEXCODE)) D
  1. . . . S LEXT=LEXCODE,LEXT=LEXT_$J(" ",(12-$L(LEXT)))_"Code",LEXT=" "_LEXT D TL(LEXT)
  1. . S LEXSTR=" "_LEXSTR D TL(LEXSTR)
  1. . S LEXI=1 F S LEXI=$O(LEXA(LEXI)) Q:+LEXI'>0 D
  1. . . N LEXT S LEXT="",LEXT=LEXT_$J(" ",(12-$L(LEXT)))_$G(LEXA(LEXI)) S LEXT=" "_LEXT D TL(LEXT)
  1. Q
  1. SB(ARY) ; Subsets SB
  1. N LEXA,LEXCT,LEXI,LEXSEQ,LEXTTL,LEXT
  1. S LEXTTL="Subsets",(LEXCT,LEXSEQ)=0 F S LEXSEQ=$O(ARY("SB",LEXSEQ)) Q:LEXSEQ'>0 D
  1. . N LEXND,LEXNM,LEXST,LEXSS,LEXEX,LEXIE,LEXAB,LEXT S LEXNM=$G(ARY("SB",LEXSEQ)) Q:'$L(LEXNM)
  1. . S LEXND=$G(ARY("SB",LEXSEQ,"I")),LEXST=+LEXND,LEXSS=$P(LEXND,"^",2),LEXEX=$P(LEXND,"^",3)
  1. . S LEXIE=$P(LEXND,"^",4),LEXAB=$P(LEXND,"^",5) Q:$L(LEXAB)'=3 S LEXT=LEXNM
  1. . S LEXT=LEXT_$J(" ",(36-$L(LEXT)))_LEXAB S:$D(LEXIIEN) LEXT=LEXT_" (IEN "_LEXIE_")"
  1. . S LEXCT=LEXCT+1 D:LEXCT=1 BL,TL((" "_LEXTTL)),BL S LEXT=" "_LEXT D TL(LEXT)
  1. Q
  1. ;
  1. DEV ; Device/Output
  1. N %ZIS,LEXCF,LEXCONT,LEXDNC,LEXEOP,LEXI,LEXLC,ZTDESC,ZTDTH,ZTIO,ZTQUEUED,ZTREQ,ZTRTN,ZTSAVE,ZTSK,POP
  1. S %ZIS("A")=" Device: ",ZTRTN="OUT^LEXINF5",ZTDESC="Display Lexicon Data"
  1. S ZTIO=ION,ZTDTH=$H,%ZIS="Q",ZTSAVE(("^TMP(""LEXINF"","_$J_","))="" D ^%ZIS I POP K %ZIS("A"),^TMP("LEXINF",$J) Q
  1. S ZTIO=ION I $D(IO("Q")) D QUE,^%ZISC,HOME^%ZIS K %ZIS("A") Q
  1. K %ZIS("A") D NOQUE K ^TMP("LEXINF",$J) Q
  1. NOQUE ; Do not queue Display
  1. W @IOF W:IOST["P-" !,"< Not queued, printing Lexicon data >",! U:IOST["P-" IO D @ZTRTN,^%ZISC,HOME^%ZIS Q
  1. QUE ; Task queued to print Help
  1. K IO("Q") D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued",1:"Request Cancelled"),! Q
  1. Q
  1. OUT ; Output
  1. Q:'$D(^TMP("LEXINF",$J)) W:$L($G(IOF))&($G(IOST)'["P-MESSAGE") @IOF
  1. N LEXLN,LEXLC,LEXCF,LEXCONT,LEXEOP,LEXIT S LEXIT=0,LEXEOP=+($G(IOSL))
  1. S:LEXEOP=0 LEXEOP=24 S LEXEOP=LEXEOP-2 S (LEXLC,LEXLN)=0 F S LEXLN=$O(^TMP("LEXINF",$J,LEXLN)) Q:+LEXLN'>0 D Q:LEXIT
  1. . N LEXT S LEXT=$G(^TMP("LEXINF",$J,LEXLN)) W !," ",LEXT S LEXCF=0 D LF
  1. I LEXCF,LEXIT>0 D EOP W:$L($G(IOF)) @IOF K ^TMP("LEXINF",$J) Q
  1. I 'LEXCF D EOP W:$L($G(IOF)) @IOF
  1. K ^TMP("LEXINF",$J)
  1. Q
  1. LF ; Line Feed
  1. S LEXLC=LEXLC+1 D:IOST["P-"&(LEXLC>(LEXEOP-7)) EOP D:IOST'["P-"&(LEXLC>(LEXEOP-4)) EOP
  1. Q
  1. EOP ; End of Page
  1. N LEXCONT S LEXLC=0 W:IOST["P-" @IOF Q:IOST["P-" W !! S LEXCONT=$$CONT S LEXCF=1
  1. Q
  1. CONT(X) ; Ask to Continue
  1. Q:+($G(LEXIT))>0 "^^" N DIR,DIROUT,DIRUT,DUOUT,DTOUT,Y S DIR(0)="EAO",DIR("A")=" Enter RETURN to continue or '^' to exit: "
  1. S DIR("PRE")="S:X[""?"" X=""??"" S:X[""^"" X=""^""",(DIR("?"),DIR("??"))="^D CONTH^LEXINF5"
  1. D ^DIR S:X["^"!($D(DTOUT)) LEXIT=1 Q:$D(DIROUT)!($D(DIRUT))!($D(DUOUT))!($D(DTOUT))!(X["^") "^"
  1. Q ""
  1. CONTH ; Ask to Continue Help
  1. W !," Enter either RETURN or '^'."
  1. Q
  1. ;
  1. ; Miscellaneous
  1. BL ; Blank Line
  1. D TL(" ")
  1. Q
  1. TL(X) ; Text Line
  1. W:$D(TEST) !,$G(X) Q:$D(TEST)
  1. N LEXI S LEXI=$O(^TMP("LEXINF",$J," "),-1)+1 S ^TMP("LEXINF",$J,LEXI)=$G(X)
  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