- LEXXFQ ;ISL/KER - Set Frequencies in 757.001 ;04/21/2014
- ;;2.0;LEXICON UTILITY;**4,25,73,80**;Sep 23, 1996;Build 10
- ;
- ; Global Variables
- ; ^LEX(757.001) N/A
- ;
- ; External References
- ; $$FMDIFF^XLFDT ICR 10103
- ; $$FMTE^XLFDT ICR 10103
- ; HOME^%ZIS ICR 10086
- ; NOW^%DTC ICR 10000
- ; ^%ZTLOAD ICR 10063
- ;
- Q
- EN ; Update term frequencies when not found (at site)
- S ZTRTN="UP^LEXXFQ",ZTDESC="Update Term Frequency in file 757.001"
- S ZTIO="",ZTDTH=$H
- D ^%ZTLOAD,HOME^%ZIS
- K Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN
- Q
- EN2 ; Reset term frequencies to export values (at CIOFO)
- S ZTRTN="RE^LEXXFQ",ZTDESC="Reset Term Frequencies in file 757.001"
- S ZTIO="",ZTDTH=$H
- D ^%ZTLOAD,HOME^%ZIS
- K Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN
- Q
- CHK ; Check frequencies (at site or IRMFO)
- N LEXI,LEXC S (LEXI,LEXC)=0
- F S LEXI=$O(^LEX(757,LEXI)) Q:+LEXI=0 S:'$D(^LEX(757.001,LEXI)) LEXC=LEXC+1
- I '$D(ZTQUEUED) D
- .W:LEXC>0 !!,LEXC," Concepts do not have frequencies set",!!
- .W:LEXC'>0 !!,"All concepts have frequencies set",!!
- Q
- UP ; Update frequencies
- S:$D(ZTQUEUED) ZTREQ="@"
- N LEX1,LEX2,LEXU,LEXUC,LEXDC,LEXMA,LEXT,LEXL,LEXH
- S (LEXDC,LEXU,LEXUC,LEXT,LEXL,LEXMA)=0,LEXH="."
- S LEX1=$$HACK
- I '$D(ZTQUEUED) D
- .W !!,"Initializing Global",!," Start: ",$P(LEX1,"^",2),!," "
- F S LEXMA=$O(^LEX(757,LEXMA)) Q:+LEXMA=0 D
- . S:'$D(^LEX(757.001,LEXMA,0)) LEXH="+" S LEXT=LEXT+1,LEXL=LEXMA
- . W:'$D(ZTQUEUED)&(LEXT#1000=0) LEXH S:LEXT#1000=0 LEXH=".",LEXDC=LEXDC+1
- . W:'$D(ZTQUEUED)&(LEXDC#76=0)&(LEXDC>0)&(LEXT#1000=0) !," "
- . I '$D(^LEX(757.001,LEXMA,0)) D SET S LEXUC=LEXUC+1
- W:'$D(ZTQUEUED) LEXH
- S:LEXT>0 $P(^LEX(757.001,0),"^",4)=LEXT
- S:LEXL>0 $P(^LEX(757.001,0),"^",3)=LEXL S:$D(ZTQUEUED) ZTREQ="@"
- S LEX2=$$HACK
- I '$D(ZTQUEUED) D
- .W !," Finished: ",$P(LEX2,"^",2)
- .W !," Time: ",$$TIME($P(LEX1,"^",1),$P(LEX2,"^",1)),!
- Q
- RE ; Reset frequencies
- S:$D(ZTQUEUED) ZTREQ="@"
- N LEXMA,LEXT,LEXL S (LEXT,LEXL,LEXMA)=0
- F S LEXMA=$O(^LEX(757,LEXMA)) Q:+LEXMA=0 S LEXT=LEXT+1,LEXL=LEXMA D SET
- S:LEXT>0 $P(^LEX(757.001,0),"^",4)=LEXT
- S:LEXL>0 $P(^LEX(757.001,0),"^",3)=LEXL S:$D(ZTQUEUED) ZTREQ="@" Q
- SET ; Set frequency
- N DIK,DIC,DA,LEXFQ
- S LEXMA=+($G(LEXMA))
- Q:'$D(^LEX(757,LEXMA,0))
- S DIC="^LEX(757.001,",DA=LEXMA,LEXFQ=+($$FQ(LEXMA))
- D:$D(^LEX(757.001,DA)) KILL^LEXNDX2
- S ^LEX(757.001,LEXMA,0)=LEXMA_"^"_LEXFQ_"^"_LEXFQ
- D SET^LEXNDX2
- Q
- FQ(LEXX) ; Frequency
- ;
- ; LEXSAB Source Abbreviation
- ; LEXSMC Semantic Class
- ; LEXNUR Nursing Class
- ; LEXBEH Behavior/Mental Health Class
- ; LEXPRO Procedural Class
- ; LEXDIA Diagnostic Class
- ; LEXSA IEN Source Code (ICD, CPT, DSM, etc)
- ; LEXMC IEN Major Concept
- ; LEXSO Code
- ;
- N LEXMC S LEXMC=+($G(LEXX)) Q:'$D(^LEX(757,LEXMC,0)) 0 Q:LEXMC<3 0
- N LEXSA,LEXSAB,LEXSMC,LEXNUR,LEXBEH,LEXPRO,LEXDIA,LEXSN,LEXSO,LEXSR
- S (LEXSA,LEXNUR,LEXBEH,LEXPRO,LEXDIA)=0
- F S LEXSA=$O(^LEX(757.02,"AMC",LEXMC,LEXSA)) Q:+LEXSA=0 D
- . S LEXSN=$G(^LEX(757.02,LEXSA,0))
- . S LEXSO=$P(LEXSN,"^",2),LEXSR=$P(LEXSN,"^",3)
- . Q:+$$STATCHK^LEXSRC2(LEXSO,,,LEXSR)=0
- . S LEXSAB=+($P($G(^LEX(757.02,LEXSA,0)),"^",3)) Q:LEXSAB=0
- . Q:LEXSAB>15 S:LEXSAB=1 LEXDIA=1
- . S:LEXSAB>1&(LEXSAB<5) LEXPRO=1
- . S:LEXSAB>4&(LEXSAB<7) LEXBEH=1
- . S:LEXSAB>10&(LEXSAB<16) LEXNUR=1
- S LEXSMC=$$SM(LEXMC),LEXX=0 I LEXDIA=1 S LEXX=4 Q LEXX
- I LEXBEH=1!(LEXSMC=1) S LEXX=3 Q LEXX
- I LEXPRO=1 S LEXX=2 Q LEXX
- I LEXNUR=1 S LEXX=1 Q LEXX
- Q LEXX
- SM(LEXX) ; Semantic Map (757.1)
- N LEXMC,LEXCL,LEXSA
- S LEXSA=0,LEXMC=+($G(LEXX)),LEXX=0
- Q:'$D(^LEX(757,LEXMC,0)) 0
- F S LEXSA=$O(^LEX(757.1,"B",LEXMC,LEXSA)) Q:+LEXSA=0 D
- .S LEXCL=+($P($G(^LEX(757.1,LEXSA,0)),"^",2))
- .I LEXCL=3!(LEXCL=6) S LEXX=1
- Q LEXX
- HACK(LEXX) ; Time Hack
- N X,%,%H,%I
- N HACK D NOW^%DTC S HACK=$$FMTE^XLFDT(%,1),HACK=$TR(HACK,"@"," ")
- S LEXX=%_"^"_HACK Q LEXX
- TIME(LEXBEG,LEXEND) ; Elapsed time from begining to end
- S LEXBEG=+($G(LEXBEG)) Q:LEXBEG=0 "" S LEXEND=+($G(LEXEND)) Q:LEXBEG=0 ""
- S LEXBEG=$$FMDIFF^XLFDT(LEXEND,LEXBEG,3) S:$L($P(LEXBEG,":",1))=1 $P(LEXBEG,":",1)="0"_$P(LEXBEG,":",1) S LEXBEG=$TR(LEXBEG," ","0")
- Q LEXBEG
- LEXXFQ ;ISL/KER - Set Frequencies in 757.001 ;04/21/2014
- +1 ;;2.0;LEXICON UTILITY;**4,25,73,80**;Sep 23, 1996;Build 10
- +2 ;
- +3 ; Global Variables
- +4 ; ^LEX(757.001) N/A
- +5 ;
- +6 ; External References
- +7 ; $$FMDIFF^XLFDT ICR 10103
- +8 ; $$FMTE^XLFDT ICR 10103
- +9 ; HOME^%ZIS ICR 10086
- +10 ; NOW^%DTC ICR 10000
- +11 ; ^%ZTLOAD ICR 10063
- +12 ;
- +13 QUIT
- EN ; Update term frequencies when not found (at site)
- +1 SET ZTRTN="UP^LEXXFQ"
- SET ZTDESC="Update Term Frequency in file 757.001"
- +2 SET ZTIO=""
- SET ZTDTH=$HOROLOG
- +3 DO ^%ZTLOAD
- DO HOME^%ZIS
- +4 KILL Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN
- +5 QUIT
- EN2 ; Reset term frequencies to export values (at CIOFO)
- +1 SET ZTRTN="RE^LEXXFQ"
- SET ZTDESC="Reset Term Frequencies in file 757.001"
- +2 SET ZTIO=""
- SET ZTDTH=$HOROLOG
- +3 DO ^%ZTLOAD
- DO HOME^%ZIS
- +4 KILL Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN
- +5 QUIT
- CHK ; Check frequencies (at site or IRMFO)
- +1 NEW LEXI,LEXC
- SET (LEXI,LEXC)=0
- +2 FOR
- SET LEXI=$ORDER(^LEX(757,LEXI))
- IF +LEXI=0
- QUIT
- IF '$DATA(^LEX(757.001,LEXI))
- SET LEXC=LEXC+1
- +3 IF '$DATA(ZTQUEUED)
- Begin DoDot:1
- +4 IF LEXC>0
- WRITE !!,LEXC," Concepts do not have frequencies set",!!
- +5 IF LEXC'>0
- WRITE !!,"All concepts have frequencies set",!!
- End DoDot:1
- +6 QUIT
- UP ; Update frequencies
- +1 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +2 NEW LEX1,LEX2,LEXU,LEXUC,LEXDC,LEXMA,LEXT,LEXL,LEXH
- +3 SET (LEXDC,LEXU,LEXUC,LEXT,LEXL,LEXMA)=0
- SET LEXH="."
- +4 SET LEX1=$$HACK
- +5 IF '$DATA(ZTQUEUED)
- Begin DoDot:1
- +6 WRITE !!,"Initializing Global",!," Start: ",$PIECE(LEX1,"^",2),!," "
- End DoDot:1
- +7 FOR
- SET LEXMA=$ORDER(^LEX(757,LEXMA))
- IF +LEXMA=0
- QUIT
- Begin DoDot:1
- +8 IF '$DATA(^LEX(757.001,LEXMA,0))
- SET LEXH="+"
- SET LEXT=LEXT+1
- SET LEXL=LEXMA
- +9 IF '$DATA(ZTQUEUED)&(LEXT#1000=0)
- WRITE LEXH
- IF LEXT#1000=0
- SET LEXH="."
- SET LEXDC=LEXDC+1
- +10 IF '$DATA(ZTQUEUED)&(LEXDC#76=0)&(LEXDC>0)&(LEXT#1000=0)
- WRITE !," "
- +11 IF '$DATA(^LEX(757.001,LEXMA,0))
- DO SET
- SET LEXUC=LEXUC+1
- End DoDot:1
- +12 IF '$DATA(ZTQUEUED)
- WRITE LEXH
- +13 IF LEXT>0
- SET $PIECE(^LEX(757.001,0),"^",4)=LEXT
- +14 IF LEXL>0
- SET $PIECE(^LEX(757.001,0),"^",3)=LEXL
- IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +15 SET LEX2=$$HACK
- +16 IF '$DATA(ZTQUEUED)
- Begin DoDot:1
- +17 WRITE !," Finished: ",$PIECE(LEX2,"^",2)
- +18 WRITE !," Time: ",$$TIME($PIECE(LEX1,"^",1),$PIECE(LEX2,"^",1)),!
- End DoDot:1
- +19 QUIT
- RE ; Reset frequencies
- +1 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +2 NEW LEXMA,LEXT,LEXL
- SET (LEXT,LEXL,LEXMA)=0
- +3 FOR
- SET LEXMA=$ORDER(^LEX(757,LEXMA))
- IF +LEXMA=0
- QUIT
- SET LEXT=LEXT+1
- SET LEXL=LEXMA
- DO SET
- +4 IF LEXT>0
- SET $PIECE(^LEX(757.001,0),"^",4)=LEXT
- +5 IF LEXL>0
- SET $PIECE(^LEX(757.001,0),"^",3)=LEXL
- IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- QUIT
- SET ; Set frequency
- +1 NEW DIK,DIC,DA,LEXFQ
- +2 SET LEXMA=+($GET(LEXMA))
- +3 IF '$DATA(^LEX(757,LEXMA,0))
- QUIT
- +4 SET DIC="^LEX(757.001,"
- SET DA=LEXMA
- SET LEXFQ=+($$FQ(LEXMA))
- +5 IF $DATA(^LEX(757.001,DA))
- DO KILL^LEXNDX2
- +6 SET ^LEX(757.001,LEXMA,0)=LEXMA_"^"_LEXFQ_"^"_LEXFQ
- +7 DO SET^LEXNDX2
- +8 QUIT
- FQ(LEXX) ; Frequency
- +1 ;
- +2 ; LEXSAB Source Abbreviation
- +3 ; LEXSMC Semantic Class
- +4 ; LEXNUR Nursing Class
- +5 ; LEXBEH Behavior/Mental Health Class
- +6 ; LEXPRO Procedural Class
- +7 ; LEXDIA Diagnostic Class
- +8 ; LEXSA IEN Source Code (ICD, CPT, DSM, etc)
- +9 ; LEXMC IEN Major Concept
- +10 ; LEXSO Code
- +11 ;
- +12 NEW LEXMC
- SET LEXMC=+($GET(LEXX))
- IF '$DATA(^LEX(757,LEXMC,0))
- QUIT 0
- IF LEXMC<3
- QUIT 0
- +13 NEW LEXSA,LEXSAB,LEXSMC,LEXNUR,LEXBEH,LEXPRO,LEXDIA,LEXSN,LEXSO,LEXSR
- +14 SET (LEXSA,LEXNUR,LEXBEH,LEXPRO,LEXDIA)=0
- +15 FOR
- SET LEXSA=$ORDER(^LEX(757.02,"AMC",LEXMC,LEXSA))
- IF +LEXSA=0
- QUIT
- Begin DoDot:1
- +16 SET LEXSN=$GET(^LEX(757.02,LEXSA,0))
- +17 SET LEXSO=$PIECE(LEXSN,"^",2)
- SET LEXSR=$PIECE(LEXSN,"^",3)
- +18 IF +$$STATCHK^LEXSRC2(LEXSO,,,LEXSR)=0
- QUIT
- +19 SET LEXSAB=+($PIECE($GET(^LEX(757.02,LEXSA,0)),"^",3))
- IF LEXSAB=0
- QUIT
- +20 IF LEXSAB>15
- QUIT
- IF LEXSAB=1
- SET LEXDIA=1
- +21 IF LEXSAB>1&(LEXSAB<5)
- SET LEXPRO=1
- +22 IF LEXSAB>4&(LEXSAB<7)
- SET LEXBEH=1
- +23 IF LEXSAB>10&(LEXSAB<16)
- SET LEXNUR=1
- End DoDot:1
- +24 SET LEXSMC=$$SM(LEXMC)
- SET LEXX=0
- IF LEXDIA=1
- SET LEXX=4
- QUIT LEXX
- +25 IF LEXBEH=1!(LEXSMC=1)
- SET LEXX=3
- QUIT LEXX
- +26 IF LEXPRO=1
- SET LEXX=2
- QUIT LEXX
- +27 IF LEXNUR=1
- SET LEXX=1
- QUIT LEXX
- +28 QUIT LEXX
- SM(LEXX) ; Semantic Map (757.1)
- +1 NEW LEXMC,LEXCL,LEXSA
- +2 SET LEXSA=0
- SET LEXMC=+($GET(LEXX))
- SET LEXX=0
- +3 IF '$DATA(^LEX(757,LEXMC,0))
- QUIT 0
- +4 FOR
- SET LEXSA=$ORDER(^LEX(757.1,"B",LEXMC,LEXSA))
- IF +LEXSA=0
- QUIT
- Begin DoDot:1
- +5 SET LEXCL=+($PIECE($GET(^LEX(757.1,LEXSA,0)),"^",2))
- +6 IF LEXCL=3!(LEXCL=6)
- SET LEXX=1
- End DoDot:1
- +7 QUIT LEXX
- HACK(LEXX) ; Time Hack
- +1 NEW X,%,%H,%I
- +2 NEW HACK
- DO NOW^%DTC
- SET HACK=$$FMTE^XLFDT(%,1)
- SET HACK=$TRANSLATE(HACK,"@"," ")
- +3 SET LEXX=%_"^"_HACK
- QUIT LEXX
- TIME(LEXBEG,LEXEND) ; Elapsed time from begining to end
- +1 SET LEXBEG=+($GET(LEXBEG))
- IF LEXBEG=0
- QUIT ""
- SET LEXEND=+($GET(LEXEND))
- IF LEXBEG=0
- QUIT ""
- +2 SET LEXBEG=$$FMDIFF^XLFDT(LEXEND,LEXBEG,3)
- IF $LENGTH($PIECE(LEXBEG,"
- SET $PIECE(LEXBEG,":",1)="0"_$PIECE(LEXBEG,":",1)
- SET LEXBEG=$TRANSLATE(LEXBEG," ","0")
- +3 QUIT LEXBEG