LEXAR8 ;ISL/KER - Look-up Response (CONCEPT USAGE update) ;05/23/2017
;;2.0;LEXICON UTILITY;**103**;Sep 23, 1996;Build 2
;
; Global Variables
; ^AUPNPROB("B") ICR 1611
; ^LEX(757, SACC 1.3
; ^LEX(757.001, SACC 1.3
; ^LEX(757.01, SACC 1.3
; ^LEX(757.02, SACC 1.3
; ^LEX(757.1, SACC 1.3
; ^TMP("LEXPL",$J) SACC 2.3.2.5.1
;
; External References
; HOME^%ZIS ICR 10086
; ^%ZTLOAD ICR 10063
; FILE^DIE ICR 2053
; IX1^DIK ICR 10013
; IX2^DIK ICR 10013
; $$IENS^DILF ICR 2054
; $$GET1^DIQ ICR 2056
; $$CODEC^ICDEX ICR 5747
; $$CSI^ICDEX ICR 5747
; $$SAB^ICDEX ICR 5747
; $$DT^XLFDT ICR 10103
; $$UP^XLFSTR ICR 10104
;
UPDT ; Update CONCEPT USAGE file 757.001 (TaskMan)
N X,Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTPRI,LEXENV
S LEXENV=$$ENV Q:+LEXENV'>0 S ZTRTN="UPD^LEXAR8",ZTPRI=4,ZTIO="",ZTDTH=$H
S ZTDESC="Update CONCEPT USAGE file 757.001 from the Problem List"
D:$D(LEXTEST) @ZTRTN D:'$D(LEXTEST) ^%ZTLOAD
I +($G(ZTSK))>0,'$D(XPDENV),'$D(LEXBUILD),'$D(LEXIGHF),'$D(LEXREQP) D
. W !,"CONCEPT USAGE update tasked (Task #"_+($G(ZTSK))_"). "
Q
UPD ; Update CONCEPT USAGE file 757.001 (using Problem List)
K ^TMP("LEXPL",$J) N LEXNOT,LEXIIEN,LEXTD,LEXCT S LEXCT=0 S LEXNOT(5570)="",LEXNOT(521774)=""
S LEXTD=$$DT^XLFDT,LEXIIEN=0 F S LEXIIEN=$O(^AUPNPROB("B",LEXIIEN)) Q:+LEXIIEN'>0 D
. N LEXPIEN S LEXPIEN=0 F S LEXPIEN=$O(^AUPNPROB("B",LEXIIEN,LEXPIEN)) Q:+LEXPIEN'>0 D
. . N LEXLEX,LEXSCTC,LEXSTA,LEXSIEN
. . Q:$D(LEXNOT(+LEXIIEN))
. . S LEXCOD=$$CODEC^ICDEX(80,LEXIIEN) I $L(LEXCOD) D
. . . S LEXSYS=$$CSI^ICDEX(80,LEXIIEN) Q:"^1^30^"'[("^"_LEXSYS_"^")
. . . S LEXSAB=$E($$SAB^ICDEX(LEXSYS),1,3) Q:"^ICD^10D^"'[("^"_LEXSAB_"^")
. . . S LEXSTA=$$STATCHK^LEXSRC2(LEXCOD,LEXTD,,LEXSAB)
. . . S LEXSIEN=$P(LEXSTA,"^",2) Q:+LEXSIEN'>0
. . . S ^TMP("LEXPL",$J,"ICD",LEXSIEN)=+($G(^TMP("LEXPL",$J,"ICD",LEXSIEN)))+1
. . . S:'$D(^TMP("LEXPL",$J,"ICD",LEXSIEN,"SAB")) ^TMP("LEXPL",$J,"ICD",LEXSIEN,"SAB")=LEXSAB
. . . S:LEXSAB="10D" ^TMP("LEXPL",$J,"ICD",LEXSIEN,"SAB")=LEXSAB
. . S LEXCOD=$$GET1^DIQ(9000011,LEXPIEN,80001) I $L(LEXCOD) D
. . . S LEXSTA=$$STATCHK^LEXSRC2(LEXCOD,LEXTD,,"SCT")
. . . S LEXSIEN=$P(LEXSTA,"^",2) Q:+LEXSIEN'>0
. . . S ^TMP("LEXPL",$J,"SCT",LEXSIEN)=+($G(^TMP("LEXPL",$J,"SCT",LEXSIEN)))+1
. . . S ^TMP("LEXPL",$J,"SCT",LEXSIEN,"SAB")="SCT"
S LEXSIEN=0 F S LEXSIEN=$O(^TMP("LEXPL",$J,"ICD",LEXSIEN)) Q:+LEXSIEN'>0 D
. N LEXCOD,LEXNOD,LEXFRQ,LEXSYS,LEXSAB,LEXDES,LEXSTA,LEXORG,LEXEIEN,LEXMIEN,LEXNEW
. S LEXNOD=$G(^LEX(757.02,+LEXSIEN,0)),LEXEIEN=+LEXNOD Q:+LEXEIEN'>0 Q:"^1^30^"'[("^"_$P(LEXNOD,"^",3)_"^")
. S LEXMIEN=+($P($G(LEXNOD),"^",4)) I LEXMIEN'>0 K ^TMP("LEXPL",$J,"ICD",LEXSIEN) Q
. S ^TMP("LEXPL",$J,"ICD","MC",LEXMIEN)=""
. S LEXSAB=$G(^TMP("LEXPL",$J,"ICD",LEXSIEN,"SAB")),LEXORG=$$ORIG(LEXMIEN)
. S LEXFRQ=$G(^TMP("LEXPL",$J,"ICD",LEXSIEN))
. S LEXNEW=LEXFRQ+LEXORG
. D UPDF(+LEXMIEN,"PL ICD",+LEXORG,+LEXNEW)
S LEXSIEN=0 F S LEXSIEN=$O(^TMP("LEXPL",$J,"SCT",LEXSIEN)) Q:+LEXSIEN'>0 D
. N LEXCOD,LEXNOD,LEXFRQ,LEXSYS,LEXSAB,LEXDES,LEXSTA,LEXORG,LEXEIEN,LEXMIEN,LEXNEW
. S LEXNOD=$G(^LEX(757.02,+LEXSIEN,0)),LEXEIEN=+LEXNOD Q:+LEXEIEN'>0 Q:$P(LEXNOD,"^",3)'=56
. S LEXMIEN=+($P($G(LEXNOD),"^",4)) I LEXMIEN'>0 K ^TMP("LEXPL",$J,"SCT",LEXSIEN) Q
. S ^TMP("LEXPL",$J,"SCT","MC",LEXMIEN)=""
. S LEXSAB="SCT",LEXORG=$$ORIG(LEXMIEN),LEXFRQ=$G(^TMP("LEXPL",$J,"SCT",LEXSIEN)),LEXNEW=LEXFRQ+LEXORG
. D UPDF(+LEXMIEN,"PL SCT",+LEXORG,+LEXNEW)
F LEXSAB="ICD","10D","SCT" D
. N LEXS,LEXSIEN S LEXS=$S(LEXSAB="ICD":"SY ICD",LEXSAB="10D":"SY ICD",LEXSAB="SCT":"SY SCT",1:("SY "_LEXSAB))
. S LEXS="Update "_LEXS,LEXSIEN=0 F S LEXSIEN=$O(^LEX(757.02,"ASRC",LEXSAB,LEXSIEN)) Q:+LEXSIEN'>0 D
. . N LEXMIEN,LEXORG,LEXFRQ,LEXEIEN,LEXND S LEXMIEN=+($P($G(^LEX(757.02,+LEXSIEN,0)),"^",4)) Q:+LEXMIEN'>0
. . Q:$D(^TMP("LEXPL",$J,"ICD","MC",LEXMIEN))!($D(^TMP("LEXPL",$J,"SCT","MC",LEXMIEN)))
. . S LEXEIEN=+($P($G(^LEX(757,+LEXMIEN,0)),"^",1)) Q:LEXEIEN'>0
. . Q:$P($G(^LEX(757.01,+LEXEIEN,1)),"^",5)>0
. . S (LEXORG,LEXFRQ)=$$ORIG(LEXMIEN) S LEXND=LEXMIEN_"^"_LEXORG_"^"_LEXFRQ
. . I $G(^LEX(757.001,+LEXMIEN,0))'=LEXND D UPDF(+LEXMIEN,LEXS,+LEXORG,+LEXFRQ)
W:'$D(ZTQUEUED)&(+($G(LEXCT))>0) !!,+($G(LEXCT))," changes made"
W:'$D(ZTQUEUED)&(+($G(LEXCT))'>0) !!,"No changes made" K ^TMP("LEXPL",$J)
Q
UPDF(M,S,X,Y) ; Update CONCEPT USAGE file 757.001 (FileMan)
N DA,LEXBUILD,LEXERR,LEXFDA,LEXFRQ,LEXOFQ,LEXIENS,LEXIGHF,LEXMIEN,LEXNEW,LEXOLD,LEXORG,LEXREQP,LEXS,XPDENV
S LEXMIEN=+($G(M)),LEXS=$G(X),LEXORG=$G(X),LEXFRQ=$G(Y) Q:LEXMIEN'>0 Q:'$D(^LEX(757.001,+LEXMIEN,0))
Q:+($G(^LEX(757.001,+LEXMIEN,0)))'=+LEXMIEN Q:$D(^TMP("LEXPL",$J,"MAJ",LEXMIEN)) Q:LEXORG'?1N.N Q:LEXFRQ'?1N.N
S LEXOFQ=+($P($G(^LEX(757.001,+LEXMIEN,0)),"^",3)) S DA=+LEXMIEN
S LEXIENS=$$IENS^DILF(.DA) S LEXFDA(757.001,LEXIENS,.01)=+LEXMIEN,LEXFDA(757.001,LEXIENS,1)=+LEXORG
S LEXNEW=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ,LEXOLD=$G(^LEX(757.001,+LEXMIEN,0)) Q:LEXNEW=LEXOLD
S LEXFDA(757.001,LEXIENS,2)=+LEXFRQ K LEXERR D FILE^DIE(,"LEXFDA","LEXERR")
S:'$D(LEXERR) LEXCT=+($G(LEXCT))+1 S ^TMP("LEXPL",$J,"MAJ",LEXMIEN)="" I $D(LEXTEST)&('$D(ZTQUEUED)) D
. N LEXID S LEXID=$G(LEXS) W !,LEXS,?15,LEXMIEN,?25,LEXORG,?30,LEXFRQ
. I LEXOFQ?1N.N,LEXOFQ'=LEXFRQ W ?35,"(formerly ",LEXOFQ,")"
Q
;
CLEART ; Set the Frequency to the Original Value (TaskMan)
N X,Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTPRI,LEXENV
S LEXENV=$$ENV Q:+LEXENV'>0 S ZTRTN="CLEAR^LEXAR8",ZTPRI=4,ZTIO="",ZTDTH=$H
S ZTDESC="Update CONCEPT USAGE file 757.001 from the Problem List"
D:$D(LEXTEST) @ZTRTN D:'$D(LEXTEST) ^%ZTLOAD
I +($G(ZTSK))>0,'$D(XPDENV),'$D(LEXBUILD),'$D(LEXIGHF),'$D(LEXREQP) D
. W !,"CONCEPT USAGE update tasked (Task #"_+($G(ZTSK))_"). "
Q
CLEAR ; Set the Frequency to the Original Value
N LEXCT,LEXMIEN S (LEXCT,LEXMIEN)=0 F S LEXMIEN=$O(^LEX(757,LEXMIEN)) Q:+LEXMIEN'>0 D
. N LEXORG,LEXFRQ,LEXOLD,LEXOFQ,LEXND S (LEXORG,LEXFRQ)=$$ORIG(+LEXMIEN)
. S LEXND=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
. S LEXOLD=$G(^LEX(757.001,+LEXMIEN,0)),LEXOFQ=$P(LEXOLD,"^",3)
. I LEXOLD'=LEXND D EDIT(+LEXMIEN,"Clear",+LEXORG,+LEXFRQ)
K ^TMP("LEXPL",$J) W:'$D(ZTQUEUED)&(+($G(LEXCT))>0) !!,+($G(LEXCT))," changes made"
W:'$D(ZTQUEUED)&(+($G(LEXCT))'>0) !!,"No changes made"
Q
;
POPT ; Populate the Original Value (ONLY) (TaskMan)
N X,Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTPRI,LEXENV
S LEXENV=$$ENV Q:+LEXENV'>0 S ZTRTN="POP^LEXAR8",ZTPRI=4,ZTIO="",ZTDTH=$H
S ZTDESC="Update CONCEPT USAGE file 757.001 from the Problem List"
D:$D(LEXTEST) @ZTRTN D:'$D(LEXTEST) ^%ZTLOAD
I +($G(ZTSK))>0,'$D(XPDENV),'$D(LEXBUILD),'$D(LEXIGHF),'$D(LEXREQP) D
. W !,"CONCEPT USAGE update tasked (Task #"_+($G(ZTSK))_"). "
Q
POP ; Populate the Original Value (ONLY)
N LEXCT,LEXMIEN S (LEXCT,LEXMIEN)=0 F S LEXMIEN=$O(^LEX(757,LEXMIEN)) Q:+LEXMIEN'>0 D
. N LEXORG,LEXFRQ,LEXDIF,LEXND
. I '$D(^LEX(757.001,+LEXMIEN,0)) D Q
. . N LEXORG,LEXFRQ,LEXND S (LEXORG,LEXFRQ)=$$ORIG(+LEXMIEN) S LEXND=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
. . N DA,DIK S DA=+LEXMIEN,DIK="^LEX(757.001," D IX2^DIK S ^LEX(757.001,+LEXMIEN,0)=LEXND
. . N DA,DIK S DA=+LEXMIEN,DIK="^LEX(757.001," D IX1^DIK S LEXCT=LEXCT+1
. . I $D(LEXTEST)&('$D(ZTQUEUED)) D
. . . W !,"Populate",?15,LEXMIEN,?25,LEXORG,?30,LEXFRQ,?35,"(new)"
. S LEXND=$G(^LEX(757.001,+LEXMIEN,0)),LEXORG=$P(LEXND,"^",2),LEXFRQ=$P(LEXND,"^",2)
. S LEXDIF=LEXFRQ-LEXORG S:LEXDIF<0 LEXDIF=0
. S (LEXORG,LEXFRQ)=$$ORIG(+LEXMIEN),LEXFRQ=LEXFRQ+LEXDIF
. S LEXND=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
. I $G(^LEX(757.001,+LEXMIEN,0))'=LEXND D
. . N DA,DIK,LEXOLD,LEXNEW S LEXOLD=$P($G(^LEX(757.001,+LEXMIEN,0)),"^",3),LEXNEW=+LEXFRQ
. . S DA=+LEXMIEN,DIK="^LEX(757.001," D IX2^DIK
. . S ^LEX(757.001,+LEXMIEN,0)=LEXND
. . N DA,DIK S DA=+LEXMIEN,DIK="^LEX(757.001," D IX1^DIK S LEXCT=LEXCT+1
. . I $D(LEXTEST)&('$D(ZTQUEUED)) D
. . . W !,"Populate",?15,LEXMIEN,?25,LEXORG
. . . W:LEXNEW?1N.N&(LEXOLD?1N.N)&(LEXNEW'=LEXOLD) ?35,"(formerly ",LEXOLD,")"
K ^TMP("LEXPL",$J) W:'$D(ZTQUEUED)&(+($G(LEXCT))>0) !!,+($G(LEXCT))," changes made"
W:'$D(ZTQUEUED)&(+($G(LEXCT))'>0) !!,"No changes made"
Q
;
EDIT(M,S,X,Y) ; Edit CONCEPT USAGE file 757.001 (FileMan)
; M Major Concept IEN
; S System/Type of Edit
; X Originating Value
; Y Frequency
N LEXERR,LEXFRQ,LEXID,LEXMIEN,LEXNEW,LEXOFQ,LEXOLD,LEXORG,LEXS
S LEXMIEN=+($G(M)),LEXS=$G(X),LEXORG=$G(X),LEXFRQ=$G(Y) Q:LEXMIEN'>0 Q:'$D(^LEX(757.001,+LEXMIEN,0))
Q:+($G(^LEX(757.001,+LEXMIEN,0)))'=+LEXMIEN Q:$D(^TMP("LEXPL",$J,"MAJ",LEXMIEN)) Q:LEXORG'?1N.N Q:LEXFRQ'?1N.N
S LEXOFQ=+($P($G(^LEX(757.001,+LEXMIEN,0)),"^",3)),LEXNEW=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
S LEXOLD=$G(^LEX(757.001,+LEXMIEN,0)) Q:LEXNEW=LEXOLD K LEXERR I $D(^LEX(757.001,+LEXMIEN,0)) D
. N DA,LEXDA,LEXERR,LEXFDA,LEXIENS S DA=+LEXMIEN,LEXIENS=$$IENS^DILF(.DA),LEXFDA(757.001,LEXIENS,.01)=+LEXMIEN
. S LEXFDA(757.001,LEXIENS,1)=+LEXORG,LEXFDA(757.001,LEXIENS,2)=+LEXFRQ K LEXERR D FILE^DIE(,"LEXFDA","LEXERR")
. S:'$D(LEXERR)&($D(LEXCT)) LEXCT=+($G(LEXCT))+1
I '$D(^LEX(757.001,+LEXMIEN,0)) D
. N DA,LEXDA,LEXERR,LEXFDA,LEXIENS S LEXDA(1)=+LEXMIEN,LEXFDA(757.001,"+1,",.01)=+LEXMIEN,LEXFDA(757.001,"+1,",1)=+LEXORG
. S LEXFDA(757.001,"+1,",2)=+LEXFRQ K LEXERR D UPDATE^DIE(,"LEXFDA","LEXDA","LEXERR") S LEXOFQ=""
. S:'$D(LEXERR)&($D(LEXCT)) LEXCT=+($G(LEXCT))+1
S ^TMP("LEXPL",$J,"MAJ",LEXMIEN)="" I $D(LEXTEST)&('$D(ZTQUEUED)) D
. S LEXS=$G(LEXS) W !,LEXS,?15,LEXMIEN,?25,LEXORG,?30,LEXFRQ I LEXOFQ?1N.N,LEXOFQ'=LEXFRQ W ?35,"(formerly ",LEXOFQ,")"
Q
;
ORIG(X) ; Get frequency based on codes and semantics
N LEXBD,LEXCL,LEXFS,LEXMIEN,LEXNOD,LEXSAB,LEXSCT,LEXSM,LEXSO,LEXTIEN,LEXTX S LEXMIEN=+($G(X)) Q:'$D(^LEX(757,LEXMIEN,0)) 0
S (X,LEXFS,LEXSO,LEXSM)=0 S LEXTIEN=0 F S LEXTIEN=$O(^LEX(757.02,"AMC",LEXMIEN,LEXTIEN)) Q:+LEXTIEN=0 D
. N LEXNOD,LEXSAB,LEXCL S LEXNOD=$G(^LEX(757.02,LEXTIEN,0)),LEXSAB=+($P(LEXNOD,U,3)) Q:LEXSAB'>0
. ; Coding Systems
. ; ICD-10-CM 6
. ; ICD-10-PCS 5
. S:LEXSAB=30 LEXCL=6 S:LEXSAB=31 LEXCL=5
. ; ICD-9-CM 4
. ; DSM III/IV 3
. S:LEXSAB=6 LEXCL=3 S:LEXSAB=5 LEXCL=3
. ; ICD-9 Proc 2
. S:LEXSAB=1 LEXCL=4 S:LEXSAB=2 LEXCL=2
. ; CPT/HCPCS 2
. S:LEXSAB=3 LEXCL=2 S:LEXSAB=4 LEXCL=2
. ; Nursing 1
. S:LEXSAB>10&(LEXSAB<16) LEXCL=1
. S:+($G(LEXCL))>LEXSO LEXSO=+($G(LEXCL))
S LEXTIEN=0 F S LEXTIEN=$O(^LEX(757.1,"B",LEXMIEN,LEXTIEN)) Q:+LEXTIEN=0 D
. N LEXCL,LEXBD S LEXBD=+($P($G(^LEX(757.1,LEXTIEN,0)),U,2)),LEXCL=0
. ; Semantic Map
. ; Semantic Behavior 3
. S:LEXBD=3&(+($G(LEXCL))'>0) LEXCL="3^Behavior"
. ; Semantic Disease/Disorder 3
. S:LEXBD=6 LEXCL="3^Disease/Disorder" S:LEXCL>LEXSM LEXSM=LEXCL
S LEXTIEN=0 F S LEXTIEN=$O(^LEX(757.01,"AMC",+LEXMIEN,LEXTIEN)) Q:+LEXTIEN'>0 D
. Q:$P($G(^LEX(757.01,+LEXTIEN,1)),"^",2)'=8 N LEXTX,LEXSCT S LEXTX=$$UP^XLFSTR($G(^LEX(757.01,+LEXTIEN,0))),LEXSCT=0
. ; SNOMED Hierarchy
. ; SNOMED Disease/Disorder 4
. S:LEXTX["(DISORDER" LEXSCT="4^Disorder" S:LEXTX["(FINDING" LEXSCT="4^Finding"
. S:LEXTX["(MORPHOLOGIC ABNORMALITY" LEXSCT="4^Morphologic Abnormality"
. S:LEXTX["(ORGANISM" LEXSCT="4^Organism"
. ; SNOMED Procedure 2
. S:+($G(LEXSCT))'>0&(LEXTX["(PROCEDURE") LEXSCT="2^Procedure"
. S:+LEXSCT>LEXFS LEXFS=LEXSCT
S X=+LEXSO S:X'>0 X=+LEXSM S:+LEXFS>X X=+LEXFS
Q X
;
INC(X) ; Increment Expression
;
; Input
;
; X IEN of the EXPRESSIONS file 757.01
;
; Output
;
; None
;
; This API increments the frequency of use value in the
; CONCEPT USAGE file #757.001. This value is used to
; position the most frequently used terms at the top of
; the selection list.
;
N LEXEIEN,LEXMIEN,LEXMC,LEXOR,LEXFQ,DA,DIK
S LEXEIEN=+($G(X)) Q:'$D(^LEX(757.01,+LEXEIEN,0)) S LEXMIEN=+($G(^LEX(757.01,+LEXEIEN,1)))
Q:'$D(^LEX(757,+LEXMIEN,0)) Q:'$D(^LEX(757.001,+LEXMIEN,0))
S LEXMC=+($P($G(^LEX(757.001,+LEXMIEN,0)),"^",1)),LEXOR=+($P($G(^LEX(757.001,+LEXMIEN,0)),"^",2))
S LEXFQ=+($P($G(^LEX(757.001,+LEXMIEN,0)),"^",3))+1 Q:LEXMC'=LEXMIEN
S DA=LEXMIEN,DIK="^LEX(757.001," D IX2^DIK
S ^LEX(757.001,+LEXMIEN,0)=LEXMC_"^"_LEXOR_"^"_LEXFQ
S DA=LEXMIEN,DIK="^LEX(757.001," D IX1^DIK
Q
;
; Miscellaneous
ENV(X) ; Check environment
N LEXNM,LEXTEST S DT=$$DT^XLFDT D HOME^%ZIS S U="^"
I +($G(DUZ))=0 W !!,?5,"DUZ not defined" Q 0
S LEXNM=$$GET1^DIQ(200,(DUZ_","),.01)
I '$L(LEXNM) W !!,?5,"DUZ not valid" Q 0
Q 1
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXAR8 13156 printed Oct 16, 2024@18:07:49 Page 2
LEXAR8 ;ISL/KER - Look-up Response (CONCEPT USAGE update) ;05/23/2017
+1 ;;2.0;LEXICON UTILITY;**103**;Sep 23, 1996;Build 2
+2 ;
+3 ; Global Variables
+4 ; ^AUPNPROB("B") ICR 1611
+5 ; ^LEX(757, SACC 1.3
+6 ; ^LEX(757.001, SACC 1.3
+7 ; ^LEX(757.01, SACC 1.3
+8 ; ^LEX(757.02, SACC 1.3
+9 ; ^LEX(757.1, SACC 1.3
+10 ; ^TMP("LEXPL",$J) SACC 2.3.2.5.1
+11 ;
+12 ; External References
+13 ; HOME^%ZIS ICR 10086
+14 ; ^%ZTLOAD ICR 10063
+15 ; FILE^DIE ICR 2053
+16 ; IX1^DIK ICR 10013
+17 ; IX2^DIK ICR 10013
+18 ; $$IENS^DILF ICR 2054
+19 ; $$GET1^DIQ ICR 2056
+20 ; $$CODEC^ICDEX ICR 5747
+21 ; $$CSI^ICDEX ICR 5747
+22 ; $$SAB^ICDEX ICR 5747
+23 ; $$DT^XLFDT ICR 10103
+24 ; $$UP^XLFSTR ICR 10104
+25 ;
UPDT ; Update CONCEPT USAGE file 757.001 (TaskMan)
+1 NEW X,Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTPRI,LEXENV
+2 SET LEXENV=$$ENV
if +LEXENV'>0
QUIT
SET ZTRTN="UPD^LEXAR8"
SET ZTPRI=4
SET ZTIO=""
SET ZTDTH=$HOROLOG
+3 SET ZTDESC="Update CONCEPT USAGE file 757.001 from the Problem List"
+4 if $DATA(LEXTEST)
DO @ZTRTN
if '$DATA(LEXTEST)
DO ^%ZTLOAD
+5 IF +($GET(ZTSK))>0
IF '$DATA(XPDENV)
IF '$DATA(LEXBUILD)
IF '$DATA(LEXIGHF)
IF '$DATA(LEXREQP)
Begin DoDot:1
+6 WRITE !,"CONCEPT USAGE update tasked (Task #"_+($GET(ZTSK))_"). "
End DoDot:1
+7 QUIT
UPD ; Update CONCEPT USAGE file 757.001 (using Problem List)
+1 KILL ^TMP("LEXPL",$JOB)
NEW LEXNOT,LEXIIEN,LEXTD,LEXCT
SET LEXCT=0
SET LEXNOT(5570)=""
SET LEXNOT(521774)=""
+2 SET LEXTD=$$DT^XLFDT
SET LEXIIEN=0
FOR
SET LEXIIEN=$ORDER(^AUPNPROB("B",LEXIIEN))
if +LEXIIEN'>0
QUIT
Begin DoDot:1
+3 NEW LEXPIEN
SET LEXPIEN=0
FOR
SET LEXPIEN=$ORDER(^AUPNPROB("B",LEXIIEN,LEXPIEN))
if +LEXPIEN'>0
QUIT
Begin DoDot:2
+4 NEW LEXLEX,LEXSCTC,LEXSTA,LEXSIEN
+5 if $DATA(LEXNOT(+LEXIIEN))
QUIT
+6 SET LEXCOD=$$CODEC^ICDEX(80,LEXIIEN)
IF $LENGTH(LEXCOD)
Begin DoDot:3
+7 SET LEXSYS=$$CSI^ICDEX(80,LEXIIEN)
if "^1^30^"'[("^"_LEXSYS_"^")
QUIT
+8 SET LEXSAB=$EXTRACT($$SAB^ICDEX(LEXSYS),1,3)
if "^ICD^10D^"'[("^"_LEXSAB_"^")
QUIT
+9 SET LEXSTA=$$STATCHK^LEXSRC2(LEXCOD,LEXTD,,LEXSAB)
+10 SET LEXSIEN=$PIECE(LEXSTA,"^",2)
if +LEXSIEN'>0
QUIT
+11 SET ^TMP("LEXPL",$JOB,"ICD",LEXSIEN)=+($GET(^TMP("LEXPL",$JOB,"ICD",LEXSIEN)))+1
+12 if '$DATA(^TMP("LEXPL",$JOB,"ICD",LEXSIEN,"SAB"))
SET ^TMP("LEXPL",$JOB,"ICD",LEXSIEN,"SAB")=LEXSAB
+13 if LEXSAB="10D"
SET ^TMP("LEXPL",$JOB,"ICD",LEXSIEN,"SAB")=LEXSAB
End DoDot:3
+14 SET LEXCOD=$$GET1^DIQ(9000011,LEXPIEN,80001)
IF $LENGTH(LEXCOD)
Begin DoDot:3
+15 SET LEXSTA=$$STATCHK^LEXSRC2(LEXCOD,LEXTD,,"SCT")
+16 SET LEXSIEN=$PIECE(LEXSTA,"^",2)
if +LEXSIEN'>0
QUIT
+17 SET ^TMP("LEXPL",$JOB,"SCT",LEXSIEN)=+($GET(^TMP("LEXPL",$JOB,"SCT",LEXSIEN)))+1
+18 SET ^TMP("LEXPL",$JOB,"SCT",LEXSIEN,"SAB")="SCT"
End DoDot:3
End DoDot:2
End DoDot:1
+19 SET LEXSIEN=0
FOR
SET LEXSIEN=$ORDER(^TMP("LEXPL",$JOB,"ICD",LEXSIEN))
if +LEXSIEN'>0
QUIT
Begin DoDot:1
+20 NEW LEXCOD,LEXNOD,LEXFRQ,LEXSYS,LEXSAB,LEXDES,LEXSTA,LEXORG,LEXEIEN,LEXMIEN,LEXNEW
+21 SET LEXNOD=$GET(^LEX(757.02,+LEXSIEN,0))
SET LEXEIEN=+LEXNOD
if +LEXEIEN'>0
QUIT
if "^1^30^"'[("^"_$PIECE(LEXNOD,"^",3)_"^")
QUIT
+22 SET LEXMIEN=+($PIECE($GET(LEXNOD),"^",4))
IF LEXMIEN'>0
KILL ^TMP("LEXPL",$JOB,"ICD",LEXSIEN)
QUIT
+23 SET ^TMP("LEXPL",$JOB,"ICD","MC",LEXMIEN)=""
+24 SET LEXSAB=$GET(^TMP("LEXPL",$JOB,"ICD",LEXSIEN,"SAB"))
SET LEXORG=$$ORIG(LEXMIEN)
+25 SET LEXFRQ=$GET(^TMP("LEXPL",$JOB,"ICD",LEXSIEN))
+26 SET LEXNEW=LEXFRQ+LEXORG
+27 DO UPDF(+LEXMIEN,"PL ICD",+LEXORG,+LEXNEW)
End DoDot:1
+28 SET LEXSIEN=0
FOR
SET LEXSIEN=$ORDER(^TMP("LEXPL",$JOB,"SCT",LEXSIEN))
if +LEXSIEN'>0
QUIT
Begin DoDot:1
+29 NEW LEXCOD,LEXNOD,LEXFRQ,LEXSYS,LEXSAB,LEXDES,LEXSTA,LEXORG,LEXEIEN,LEXMIEN,LEXNEW
+30 SET LEXNOD=$GET(^LEX(757.02,+LEXSIEN,0))
SET LEXEIEN=+LEXNOD
if +LEXEIEN'>0
QUIT
if $PIECE(LEXNOD,"^",3)'=56
QUIT
+31 SET LEXMIEN=+($PIECE($GET(LEXNOD),"^",4))
IF LEXMIEN'>0
KILL ^TMP("LEXPL",$JOB,"SCT",LEXSIEN)
QUIT
+32 SET ^TMP("LEXPL",$JOB,"SCT","MC",LEXMIEN)=""
+33 SET LEXSAB="SCT"
SET LEXORG=$$ORIG(LEXMIEN)
SET LEXFRQ=$GET(^TMP("LEXPL",$JOB,"SCT",LEXSIEN))
SET LEXNEW=LEXFRQ+LEXORG
+34 DO UPDF(+LEXMIEN,"PL SCT",+LEXORG,+LEXNEW)
End DoDot:1
+35 FOR LEXSAB="ICD","10D","SCT"
Begin DoDot:1
+36 NEW LEXS,LEXSIEN
SET LEXS=$SELECT(LEXSAB="ICD":"SY ICD",LEXSAB="10D":"SY ICD",LEXSAB="SCT":"SY SCT",1:("SY "_LEXSAB))
+37 SET LEXS="Update "_LEXS
SET LEXSIEN=0
FOR
SET LEXSIEN=$ORDER(^LEX(757.02,"ASRC",LEXSAB,LEXSIEN))
if +LEXSIEN'>0
QUIT
Begin DoDot:2
+38 NEW LEXMIEN,LEXORG,LEXFRQ,LEXEIEN,LEXND
SET LEXMIEN=+($PIECE($GET(^LEX(757.02,+LEXSIEN,0)),"^",4))
if +LEXMIEN'>0
QUIT
+39 if $DATA(^TMP("LEXPL",$JOB,"ICD","MC",LEXMIEN))!($DATA(^TMP("LEXPL",$JOB,"SCT","MC",LEXMIEN)))
QUIT
+40 SET LEXEIEN=+($PIECE($GET(^LEX(757,+LEXMIEN,0)),"^",1))
if LEXEIEN'>0
QUIT
+41 if $PIECE($GET(^LEX(757.01,+LEXEIEN,1)),"^",5)>0
QUIT
+42 SET (LEXORG,LEXFRQ)=$$ORIG(LEXMIEN)
SET LEXND=LEXMIEN_"^"_LEXORG_"^"_LEXFRQ
+43 IF $GET(^LEX(757.001,+LEXMIEN,0))'=LEXND
DO UPDF(+LEXMIEN,LEXS,+LEXORG,+LEXFRQ)
End DoDot:2
End DoDot:1
+44 if '$DATA(ZTQUEUED)&(+($GET(LEXCT))>0)
WRITE !!,+($GET(LEXCT))," changes made"
+45 if '$DATA(ZTQUEUED)&(+($GET(LEXCT))'>0)
WRITE !!,"No changes made"
KILL ^TMP("LEXPL",$JOB)
+46 QUIT
UPDF(M,S,X,Y) ; Update CONCEPT USAGE file 757.001 (FileMan)
+1 NEW DA,LEXBUILD,LEXERR,LEXFDA,LEXFRQ,LEXOFQ,LEXIENS,LEXIGHF,LEXMIEN,LEXNEW,LEXOLD,LEXORG,LEXREQP,LEXS,XPDENV
+2 SET LEXMIEN=+($GET(M))
SET LEXS=$GET(X)
SET LEXORG=$GET(X)
SET LEXFRQ=$GET(Y)
if LEXMIEN'>0
QUIT
if '$DATA(^LEX(757.001,+LEXMIEN,0))
QUIT
+3 if +($GET(^LEX(757.001,+LEXMIEN,0)))'=+LEXMIEN
QUIT
if $DATA(^TMP("LEXPL",$JOB,"MAJ",LEXMIEN))
QUIT
if LEXORG'?1N.N
QUIT
if LEXFRQ'?1N.N
QUIT
+4 SET LEXOFQ=+($PIECE($GET(^LEX(757.001,+LEXMIEN,0)),"^",3))
SET DA=+LEXMIEN
+5 SET LEXIENS=$$IENS^DILF(.DA)
SET LEXFDA(757.001,LEXIENS,.01)=+LEXMIEN
SET LEXFDA(757.001,LEXIENS,1)=+LEXORG
+6 SET LEXNEW=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
SET LEXOLD=$GET(^LEX(757.001,+LEXMIEN,0))
if LEXNEW=LEXOLD
QUIT
+7 SET LEXFDA(757.001,LEXIENS,2)=+LEXFRQ
KILL LEXERR
DO FILE^DIE(,"LEXFDA","LEXERR")
+8 if '$DATA(LEXERR)
SET LEXCT=+($GET(LEXCT))+1
SET ^TMP("LEXPL",$JOB,"MAJ",LEXMIEN)=""
IF $DATA(LEXTEST)&('$DATA(ZTQUEUED))
Begin DoDot:1
+9 NEW LEXID
SET LEXID=$GET(LEXS)
WRITE !,LEXS,?15,LEXMIEN,?25,LEXORG,?30,LEXFRQ
+10 IF LEXOFQ?1N.N
IF LEXOFQ'=LEXFRQ
WRITE ?35,"(formerly ",LEXOFQ,")"
End DoDot:1
+11 QUIT
+12 ;
CLEART ; Set the Frequency to the Original Value (TaskMan)
+1 NEW X,Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTPRI,LEXENV
+2 SET LEXENV=$$ENV
if +LEXENV'>0
QUIT
SET ZTRTN="CLEAR^LEXAR8"
SET ZTPRI=4
SET ZTIO=""
SET ZTDTH=$HOROLOG
+3 SET ZTDESC="Update CONCEPT USAGE file 757.001 from the Problem List"
+4 if $DATA(LEXTEST)
DO @ZTRTN
if '$DATA(LEXTEST)
DO ^%ZTLOAD
+5 IF +($GET(ZTSK))>0
IF '$DATA(XPDENV)
IF '$DATA(LEXBUILD)
IF '$DATA(LEXIGHF)
IF '$DATA(LEXREQP)
Begin DoDot:1
+6 WRITE !,"CONCEPT USAGE update tasked (Task #"_+($GET(ZTSK))_"). "
End DoDot:1
+7 QUIT
CLEAR ; Set the Frequency to the Original Value
+1 NEW LEXCT,LEXMIEN
SET (LEXCT,LEXMIEN)=0
FOR
SET LEXMIEN=$ORDER(^LEX(757,LEXMIEN))
if +LEXMIEN'>0
QUIT
Begin DoDot:1
+2 NEW LEXORG,LEXFRQ,LEXOLD,LEXOFQ,LEXND
SET (LEXORG,LEXFRQ)=$$ORIG(+LEXMIEN)
+3 SET LEXND=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
+4 SET LEXOLD=$GET(^LEX(757.001,+LEXMIEN,0))
SET LEXOFQ=$PIECE(LEXOLD,"^",3)
+5 IF LEXOLD'=LEXND
DO EDIT(+LEXMIEN,"Clear",+LEXORG,+LEXFRQ)
End DoDot:1
+6 KILL ^TMP("LEXPL",$JOB)
if '$DATA(ZTQUEUED)&(+($GET(LEXCT))>0)
WRITE !!,+($GET(LEXCT))," changes made"
+7 if '$DATA(ZTQUEUED)&(+($GET(LEXCT))'>0)
WRITE !!,"No changes made"
+8 QUIT
+9 ;
POPT ; Populate the Original Value (ONLY) (TaskMan)
+1 NEW X,Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTPRI,LEXENV
+2 SET LEXENV=$$ENV
if +LEXENV'>0
QUIT
SET ZTRTN="POP^LEXAR8"
SET ZTPRI=4
SET ZTIO=""
SET ZTDTH=$HOROLOG
+3 SET ZTDESC="Update CONCEPT USAGE file 757.001 from the Problem List"
+4 if $DATA(LEXTEST)
DO @ZTRTN
if '$DATA(LEXTEST)
DO ^%ZTLOAD
+5 IF +($GET(ZTSK))>0
IF '$DATA(XPDENV)
IF '$DATA(LEXBUILD)
IF '$DATA(LEXIGHF)
IF '$DATA(LEXREQP)
Begin DoDot:1
+6 WRITE !,"CONCEPT USAGE update tasked (Task #"_+($GET(ZTSK))_"). "
End DoDot:1
+7 QUIT
POP ; Populate the Original Value (ONLY)
+1 NEW LEXCT,LEXMIEN
SET (LEXCT,LEXMIEN)=0
FOR
SET LEXMIEN=$ORDER(^LEX(757,LEXMIEN))
if +LEXMIEN'>0
QUIT
Begin DoDot:1
+2 NEW LEXORG,LEXFRQ,LEXDIF,LEXND
+3 IF '$DATA(^LEX(757.001,+LEXMIEN,0))
Begin DoDot:2
+4 NEW LEXORG,LEXFRQ,LEXND
SET (LEXORG,LEXFRQ)=$$ORIG(+LEXMIEN)
SET LEXND=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
+5 NEW DA,DIK
SET DA=+LEXMIEN
SET DIK="^LEX(757.001,"
DO IX2^DIK
SET ^LEX(757.001,+LEXMIEN,0)=LEXND
+6 NEW DA,DIK
SET DA=+LEXMIEN
SET DIK="^LEX(757.001,"
DO IX1^DIK
SET LEXCT=LEXCT+1
+7 IF $DATA(LEXTEST)&('$DATA(ZTQUEUED))
Begin DoDot:3
+8 WRITE !,"Populate",?15,LEXMIEN,?25,LEXORG,?30,LEXFRQ,?35,"(new)"
End DoDot:3
End DoDot:2
QUIT
+9 SET LEXND=$GET(^LEX(757.001,+LEXMIEN,0))
SET LEXORG=$PIECE(LEXND,"^",2)
SET LEXFRQ=$PIECE(LEXND,"^",2)
+10 SET LEXDIF=LEXFRQ-LEXORG
if LEXDIF<0
SET LEXDIF=0
+11 SET (LEXORG,LEXFRQ)=$$ORIG(+LEXMIEN)
SET LEXFRQ=LEXFRQ+LEXDIF
+12 SET LEXND=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
+13 IF $GET(^LEX(757.001,+LEXMIEN,0))'=LEXND
Begin DoDot:2
+14 NEW DA,DIK,LEXOLD,LEXNEW
SET LEXOLD=$PIECE($GET(^LEX(757.001,+LEXMIEN,0)),"^",3)
SET LEXNEW=+LEXFRQ
+15 SET DA=+LEXMIEN
SET DIK="^LEX(757.001,"
DO IX2^DIK
+16 SET ^LEX(757.001,+LEXMIEN,0)=LEXND
+17 NEW DA,DIK
SET DA=+LEXMIEN
SET DIK="^LEX(757.001,"
DO IX1^DIK
SET LEXCT=LEXCT+1
+18 IF $DATA(LEXTEST)&('$DATA(ZTQUEUED))
Begin DoDot:3
+19 WRITE !,"Populate",?15,LEXMIEN,?25,LEXORG
+20 if LEXNEW?1N.N&(LEXOLD?1N.N)&(LEXNEW'=LEXOLD)
WRITE ?35,"(formerly ",LEXOLD,")"
End DoDot:3
End DoDot:2
End DoDot:1
+21 KILL ^TMP("LEXPL",$JOB)
if '$DATA(ZTQUEUED)&(+($GET(LEXCT))>0)
WRITE !!,+($GET(LEXCT))," changes made"
+22 if '$DATA(ZTQUEUED)&(+($GET(LEXCT))'>0)
WRITE !!,"No changes made"
+23 QUIT
+24 ;
EDIT(M,S,X,Y) ; Edit CONCEPT USAGE file 757.001 (FileMan)
+1 ; M Major Concept IEN
+2 ; S System/Type of Edit
+3 ; X Originating Value
+4 ; Y Frequency
+5 NEW LEXERR,LEXFRQ,LEXID,LEXMIEN,LEXNEW,LEXOFQ,LEXOLD,LEXORG,LEXS
+6 SET LEXMIEN=+($GET(M))
SET LEXS=$GET(X)
SET LEXORG=$GET(X)
SET LEXFRQ=$GET(Y)
if LEXMIEN'>0
QUIT
if '$DATA(^LEX(757.001,+LEXMIEN,0))
QUIT
+7 if +($GET(^LEX(757.001,+LEXMIEN,0)))'=+LEXMIEN
QUIT
if $DATA(^TMP("LEXPL",$JOB,"MAJ",LEXMIEN))
QUIT
if LEXORG'?1N.N
QUIT
if LEXFRQ'?1N.N
QUIT
+8 SET LEXOFQ=+($PIECE($GET(^LEX(757.001,+LEXMIEN,0)),"^",3))
SET LEXNEW=+LEXMIEN_"^"_+LEXORG_"^"_+LEXFRQ
+9 SET LEXOLD=$GET(^LEX(757.001,+LEXMIEN,0))
if LEXNEW=LEXOLD
QUIT
KILL LEXERR
IF $DATA(^LEX(757.001,+LEXMIEN,0))
Begin DoDot:1
+10 NEW DA,LEXDA,LEXERR,LEXFDA,LEXIENS
SET DA=+LEXMIEN
SET LEXIENS=$$IENS^DILF(.DA)
SET LEXFDA(757.001,LEXIENS,.01)=+LEXMIEN
+11 SET LEXFDA(757.001,LEXIENS,1)=+LEXORG
SET LEXFDA(757.001,LEXIENS,2)=+LEXFRQ
KILL LEXERR
DO FILE^DIE(,"LEXFDA","LEXERR")
+12 if '$DATA(LEXERR)&($DATA(LEXCT))
SET LEXCT=+($GET(LEXCT))+1
End DoDot:1
+13 IF '$DATA(^LEX(757.001,+LEXMIEN,0))
Begin DoDot:1
+14 NEW DA,LEXDA,LEXERR,LEXFDA,LEXIENS
SET LEXDA(1)=+LEXMIEN
SET LEXFDA(757.001,"+1,",.01)=+LEXMIEN
SET LEXFDA(757.001,"+1,",1)=+LEXORG
+15 SET LEXFDA(757.001,"+1,",2)=+LEXFRQ
KILL LEXERR
DO UPDATE^DIE(,"LEXFDA","LEXDA","LEXERR")
SET LEXOFQ=""
+16 if '$DATA(LEXERR)&($DATA(LEXCT))
SET LEXCT=+($GET(LEXCT))+1
End DoDot:1
+17 SET ^TMP("LEXPL",$JOB,"MAJ",LEXMIEN)=""
IF $DATA(LEXTEST)&('$DATA(ZTQUEUED))
Begin DoDot:1
+18 SET LEXS=$GET(LEXS)
WRITE !,LEXS,?15,LEXMIEN,?25,LEXORG,?30,LEXFRQ
IF LEXOFQ?1N.N
IF LEXOFQ'=LEXFRQ
WRITE ?35,"(formerly ",LEXOFQ,")"
End DoDot:1
+19 QUIT
+20 ;
ORIG(X) ; Get frequency based on codes and semantics
+1 NEW LEXBD,LEXCL,LEXFS,LEXMIEN,LEXNOD,LEXSAB,LEXSCT,LEXSM,LEXSO,LEXTIEN,LEXTX
SET LEXMIEN=+($GET(X))
if '$DATA(^LEX(757,LEXMIEN,0))
QUIT 0
+2 SET (X,LEXFS,LEXSO,LEXSM)=0
SET LEXTIEN=0
FOR
SET LEXTIEN=$ORDER(^LEX(757.02,"AMC",LEXMIEN,LEXTIEN))
if +LEXTIEN=0
QUIT
Begin DoDot:1
+3 NEW LEXNOD,LEXSAB,LEXCL
SET LEXNOD=$GET(^LEX(757.02,LEXTIEN,0))
SET LEXSAB=+($PIECE(LEXNOD,U,3))
if LEXSAB'>0
QUIT
+4 ; Coding Systems
+5 ; ICD-10-CM 6
+6 ; ICD-10-PCS 5
+7 if LEXSAB=30
SET LEXCL=6
if LEXSAB=31
SET LEXCL=5
+8 ; ICD-9-CM 4
+9 ; DSM III/IV 3
+10 if LEXSAB=6
SET LEXCL=3
if LEXSAB=5
SET LEXCL=3
+11 ; ICD-9 Proc 2
+12 if LEXSAB=1
SET LEXCL=4
if LEXSAB=2
SET LEXCL=2
+13 ; CPT/HCPCS 2
+14 if LEXSAB=3
SET LEXCL=2
if LEXSAB=4
SET LEXCL=2
+15 ; Nursing 1
+16 if LEXSAB>10&(LEXSAB<16)
SET LEXCL=1
+17 if +($GET(LEXCL))>LEXSO
SET LEXSO=+($GET(LEXCL))
End DoDot:1
+18 SET LEXTIEN=0
FOR
SET LEXTIEN=$ORDER(^LEX(757.1,"B",LEXMIEN,LEXTIEN))
if +LEXTIEN=0
QUIT
Begin DoDot:1
+19 NEW LEXCL,LEXBD
SET LEXBD=+($PIECE($GET(^LEX(757.1,LEXTIEN,0)),U,2))
SET LEXCL=0
+20 ; Semantic Map
+21 ; Semantic Behavior 3
+22 if LEXBD=3&(+($GET(LEXCL))'>0)
SET LEXCL="3^Behavior"
+23 ; Semantic Disease/Disorder 3
+24 if LEXBD=6
SET LEXCL="3^Disease/Disorder"
if LEXCL>LEXSM
SET LEXSM=LEXCL
End DoDot:1
+25 SET LEXTIEN=0
FOR
SET LEXTIEN=$ORDER(^LEX(757.01,"AMC",+LEXMIEN,LEXTIEN))
if +LEXTIEN'>0
QUIT
Begin DoDot:1
+26 if $PIECE($GET(^LEX(757.01,+LEXTIEN,1)),"^",2)'=8
QUIT
NEW LEXTX,LEXSCT
SET LEXTX=$$UP^XLFSTR($GET(^LEX(757.01,+LEXTIEN,0)))
SET LEXSCT=0
+27 ; SNOMED Hierarchy
+28 ; SNOMED Disease/Disorder 4
+29 if LEXTX["(DISORDER"
SET LEXSCT="4^Disorder"
if LEXTX["(FINDING"
SET LEXSCT="4^Finding"
+30 if LEXTX["(MORPHOLOGIC ABNORMALITY"
SET LEXSCT="4^Morphologic Abnormality"
+31 if LEXTX["(ORGANISM"
SET LEXSCT="4^Organism"
+32 ; SNOMED Procedure 2
+33 if +($GET(LEXSCT))'>0&(LEXTX["(PROCEDURE")
SET LEXSCT="2^Procedure"
+34 if +LEXSCT>LEXFS
SET LEXFS=LEXSCT
End DoDot:1
+35 SET X=+LEXSO
if X'>0
SET X=+LEXSM
if +LEXFS>X
SET X=+LEXFS
+36 QUIT X
+37 ;
INC(X) ; Increment Expression
+1 ;
+2 ; Input
+3 ;
+4 ; X IEN of the EXPRESSIONS file 757.01
+5 ;
+6 ; Output
+7 ;
+8 ; None
+9 ;
+10 ; This API increments the frequency of use value in the
+11 ; CONCEPT USAGE file #757.001. This value is used to
+12 ; position the most frequently used terms at the top of
+13 ; the selection list.
+14 ;
+15 NEW LEXEIEN,LEXMIEN,LEXMC,LEXOR,LEXFQ,DA,DIK
+16 SET LEXEIEN=+($GET(X))
if '$DATA(^LEX(757.01,+LEXEIEN,0))
QUIT
SET LEXMIEN=+($GET(^LEX(757.01,+LEXEIEN,1)))
+17 if '$DATA(^LEX(757,+LEXMIEN,0))
QUIT
if '$DATA(^LEX(757.001,+LEXMIEN,0))
QUIT
+18 SET LEXMC=+($PIECE($GET(^LEX(757.001,+LEXMIEN,0)),"^",1))
SET LEXOR=+($PIECE($GET(^LEX(757.001,+LEXMIEN,0)),"^",2))
+19 SET LEXFQ=+($PIECE($GET(^LEX(757.001,+LEXMIEN,0)),"^",3))+1
if LEXMC'=LEXMIEN
QUIT
+20 SET DA=LEXMIEN
SET DIK="^LEX(757.001,"
DO IX2^DIK
+21 SET ^LEX(757.001,+LEXMIEN,0)=LEXMC_"^"_LEXOR_"^"_LEXFQ
+22 SET DA=LEXMIEN
SET DIK="^LEX(757.001,"
DO IX1^DIK
+23 QUIT
+24 ;
+25 ; Miscellaneous
ENV(X) ; Check environment
+1 NEW LEXNM,LEXTEST
SET DT=$$DT^XLFDT
DO HOME^%ZIS
SET U="^"
+2 IF +($GET(DUZ))=0
WRITE !!,?5,"DUZ not defined"
QUIT 0
+3 SET LEXNM=$$GET1^DIQ(200,(DUZ_","),.01)
+4 IF '$LENGTH(LEXNM)
WRITE !!,?5,"DUZ not valid"
QUIT 0
+5 QUIT 1