- XTLKMGR ;SFISC/JC - MANAGE MTLU CONTROL FILES ;02/13/95 11:52
- ;;7.3;TOOLKIT;;Apr 25, 1995
- ;
- KL ;Exit line.
- K XTLKY,XTLKPF,XTLKGL,XTLKUT,DIC,DIE,DR,JL,DA,DIR,X,Y,XTLKCOD,XTLKCOD1,XTLKOP Q
- ;
- SY(XTLK1,XTLK2,XTLK3) ;ADD TO SYNONYM FILE
- N DIC,DIE,DLAYGO,DA,DR,X,Y,S,IEN
- D QU^XTLKEFOP(XTLK1) I Y<1 S XTLKER(1,XTLK1)="" Q
- S (DIC,DIE,DLAYGO)=8984.3,DIC(0)="LMQZ",X=XTLK2 D ^DIC I Y<1 S XTLKER(2,XTLK2)=""
- Q:Y<1 S (IEN,DA)=+Y K DIC
- S DR=".02///^S X=XTLK1" D ^DIE K DIC,DIE,DA,DR
- S DIC("P")="8984.31A",DA(1)=IEN,DIC="^XT(8984.3,DA(1),1,"
- I $G(XTLK3)'="" D
- .K DIC,DA
- .S DIC("P")="8984.31A",DA(1)=IEN,DIC="^XT(8984.3,DA(1),1,"
- .S DIC(0)="MLQZ",X=XTLK3 D ^DIC I Y=-1 S XTLKER(3,XTLK3)=""
- S S="" F S S=$O(XTLK3(S)) Q:S="" D
- .K DIC,DA
- .S DIC("P")="8984.31A",DA(1)=IEN,DIC="^XT(8984.3,DA(1),1,"
- .S DIC(0)="MLQZ",X=XTLK3(S) D ^DIC I Y=-1 S XTLKER(3,XTLK3)=""
- Q
- K(XTLK1,XTLK2,XTLK3) ;Add Keywords
- N DIC,DIE,DLAYGO,DA,DR,X,Y,XTLKCOD,XTLKCOD1,XTLKY
- D QU^XTLKEFOP(XTLK1) I Y<1 S XTLKER(1,XTLK1)="" Q:Y<1
- S DIC=+XTLKY,DIC(0)="LMQZ",X=XTLK2 D ^DIC I Y<1 S XTLKER(2,XTLK2)="" Q
- D C1^XTLKEFOP S X=XTLK3,(DIE,DIC,DLAYGO)=8984.1,DIC(0)="LMQZ" D ^DIC I Y<1 S XTLKER(3,XTLK3)="" Q
- K DIC,DA S DA=+Y,DR=".02////^S X=XTLKCOD;.03///^S X=XTLKCOD1;.04///^S X=+XTLKY" D ^DIE
- Q
- SH(XTLK1,XTLK2,XTLK3) ;POPULATE SHORTCUT FILE
- N DIC,DIE,DLAYGO,DA,DR,X,Y,XTLKCOD,XTLKCOD1,XTLKY
- D QU^XTLKEFOP(XTLK1) Q:Y<1
- S DIC=+XTLKY,DIC(0)="LMQZ",X=XTLK2 D ^DIC I Y<1 S XTLKER(2,XTLK2)=""
- D C1^XTLKEFOP S X=XTLK3,(DIE,DIC,DLAYGO)=8984.2,DIC(0)="LMQZ" D ^DIC I Y<1 S XTLKER(3,XTLK3)="" Q
- K DIC,DA S DA=+Y,DR=".02////^S X=XTLKCOD;.03///^S X=XTLKCOD1" D ^DIE
- Q
- ;
- L(XTLK1,XTLK2,XTLK3,XTLK4) ;update OF LOCAL LOOKUP FILE
- N DIC,DIE,DLAYGO,DA,DR,JL0,JLY,XTLKPRE,XTLKLP
- S (DIC,DIE,DLAYGO)=8984.4,DIC(0)="LMQZ",X=XTLK1 D ^DIC I Y<1 S XTLKER(1,XTLK1)="" Q
- S JL0=Y(0,0),JLY=+Y,XTLKPRE=XTLK4
- S DA=+Y,DR=".02////^S X=$G(XTLK2);.03///^S X=XTLK3" D ^DIE,LL2^XTLKEFOP
- Q
- DSH(XTLK1,XTLK2) ;Delete shortcuts for given file
- N XTLKJG,DA,DIK
- Q:$G(XTLK1)="" D QU^XTLKEFOP(XTLK1) I $G(XTLKY)="" S XTLKER(1,XTLK1)="" Q
- S XTLKJG=$P(^DIC(+XTLKY,0,"GL"),U,2)
- I $D(XTLK2) N C,TRM,IEN S C="" F S C=$O(XTLK2(C)) Q:C="" D
- .S TRM=$G(XTLK2(C)) Q:'$D(^XT(8984.2,"AC",XTLKJG,TRM)) S IEN=$O(^(TRM,""))
- .S DA=IEN,DIK="^XT(8984.2," D ^DIK K DIK,DA
- I '$D(XTLK2) N TRM,IEN S TRM="" D
- .F S TRM=$O(^XT(8984.2,"AC",XTLKJG,TRM)) Q:TRM="" D
- ..S IEN=0 F S IEN=$O(^XT(8984.2,"AC",XTLKJG,TRM,IEN)) Q:IEN<1 D
- ...S DA=IEN,DIK="^XT(8984.2," D ^DIK K DIK,DA
- Q
- DSY(XTLK1,XTLK2) ;Delete synonym TERMS for given file
- Q:$G(XTLK1)="" D QU^XTLKEFOP(XTLK1) I $G(XTLKY)="" S XTLKER(1,XTLK1)="" Q
- S XTLKJG=$P(^DIC(+XTLKY,0,"GL"),"^",2)
- I $D(XTLK2) N C,TRM,IEN S C="" F S C=$O(XTLK2(C)) Q:C="" D
- .S TRM=$G(XTLK2(C)) Q:'$D(^XT(8984.3,"AC",XTLKJG,TRM)) S IEN=$O(^(TRM,""))
- .S DA=IEN,DIK="^XT(8984.3," D ^DIK K DIK,DA
- I '$D(XTLK2) N TRM,IEN S TRM="" D
- .F S TRM=$O(^XT(8984.3,"AC",XTLKJG,TRM)) Q:TRM="" D
- ..S IEN=0 F S IEN=$O(^XT(8984.3,"AC",XTLKJG,TRM,IEN)) Q:IEN<1 D
- ...S DA=IEN,DIK="^XT(8984.3," D ^DIK K DIK,DA
- Q
- DK(XTLK1,XTLK2) ;Delete keywords from 8984.1
- Q:$G(XTLK1)="" D QU^XTLKEFOP(XTLK1) I $G(XTLKY)="" S XTLKER(1,XTLK1)="" Q
- Q:'$D(^XT(8984.1,"AD",+XTLKY))
- I $D(XTLK2) N C,TRM,IEN S C="" F S C=$O(XTLK2(C)) Q:C="" D
- .S TRM=$G(XTLK2(C)) S IEN=$O(^XT(8984.1,"AD",+XTLKY,""))
- .Q:IEN="" Q:$P(^XT(8984.1,IEN,0),"^")'=TRM
- .S DA=IEN,DIK="^XT(8984.1," D ^DIK K DIK,DA
- I '$D(XTLK2) N TRM,IEN S IEN=0 D
- .F S IEN=$O(^XT(8984.1,"AD",+XTLKY,IEN)) Q:IEN<1 D
- ..S DA=IEN,DIK="^XT(8984.1," D ^DIK K DIK,DA
- Q
- DLL(XTLK1) ;Delete an entry from the Local Lookup File-8984.4
- ;XTLK1=filename
- N XTLKJG,XTLKY,DIK,XTLKLP,DA
- Q:$G(XTLK1)="" D QU^XTLKEFOP(XTLK1) I $G(XTLKY)="" S XTLKER(1,XTLK1)="" Q
- S XTLKJG=$P(^DIC(+XTLKY,0,"GL"),"^",2)
- I $D(^XT(8984.2,"AC",XTLKJG))!($D(^XT(8984.3,"AC",XTLKJG)))!($D(^XT(8984.1,"AD",+XTLKY))) S XTLKER(2)="" Q
- S DA=+XTLKY,DIK="^XT(8984.4," D ^DIK
- F XTLKLP=8984.1,8984.2 S DIK="^DD("_XTLKLP_",.02,""V"",",DA(1)=.02,DA(2)=XTLKLP,DA=$O(^DD(XTLKLP,.02,"V","B",+XTLKY,0)) D ^DIK
- Q
- LKUP(FIL,XTLKX,XTLKSAY,XTLKHLP,XTLKMORE) ;General MTLU lookup utility
- N IEN,XTLKKSCH
- I $G(XTLKMORE)="" S XTLKMORE=1
- I $G(XTLKSAY)="" S XTLKSAY=1
- D QU^XTLKEFOP(FIL) I $G(XTLKY)="" S XTLKER(1,FIL)="" Q
- Q:Y<1 S IEN=+Y
- S XTLKKSCH("INDEX")=$P(Y(0),"^",3),XTLKKSCH("DSPLY")=$S($G(^XT(8984.4,IEN,1))="":"DGEN^XTLKKWLD",1:^(1)),XTLKKSCH("GBL")=+Y
- D ^XTLKKWL
- I $D(DUOUT)!(Y=-1) D
- .Q:'XTLKMORE!(XTLKSAY=-1)
- .I XTLKSAY=1 W !,"...Nothing selected. Attempting Fileman lookup." S X=XTLKX,DIC=FIL,DIC(0)="EMNZI" D ^DIC
- I XTLKSAY'=-1 K ^TMP("XTLKHITS",$J)
- Q
- XTLKMGR ;SFISC/JC - MANAGE MTLU CONTROL FILES ;02/13/95 11:52
- +1 ;;7.3;TOOLKIT;;Apr 25, 1995
- +2 ;
- KL ;Exit line.
- +1 KILL XTLKY,XTLKPF,XTLKGL,XTLKUT,DIC,DIE,DR,JL,DA,DIR,X,Y,XTLKCOD,XTLKCOD1,XTLKOP
- QUIT
- +2 ;
- SY(XTLK1,XTLK2,XTLK3) ;ADD TO SYNONYM FILE
- +1 NEW DIC,DIE,DLAYGO,DA,DR,X,Y,S,IEN
- +2 DO QU^XTLKEFOP(XTLK1)
- IF Y<1
- SET XTLKER(1,XTLK1)=""
- QUIT
- +3 SET (DIC,DIE,DLAYGO)=8984.3
- SET DIC(0)="LMQZ"
- SET X=XTLK2
- DO ^DIC
- IF Y<1
- SET XTLKER(2,XTLK2)=""
- +4 IF Y<1
- QUIT
- SET (IEN,DA)=+Y
- KILL DIC
- +5 SET DR=".02///^S X=XTLK1"
- DO ^DIE
- KILL DIC,DIE,DA,DR
- +6 SET DIC("P")="8984.31A"
- SET DA(1)=IEN
- SET DIC="^XT(8984.3,DA(1),1,"
- +7 IF $GET(XTLK3)'=""
- Begin DoDot:1
- +8 KILL DIC,DA
- +9 SET DIC("P")="8984.31A"
- SET DA(1)=IEN
- SET DIC="^XT(8984.3,DA(1),1,"
- +10 SET DIC(0)="MLQZ"
- SET X=XTLK3
- DO ^DIC
- IF Y=-1
- SET XTLKER(3,XTLK3)=""
- End DoDot:1
- +11 SET S=""
- FOR
- SET S=$ORDER(XTLK3(S))
- IF S=""
- QUIT
- Begin DoDot:1
- +12 KILL DIC,DA
- +13 SET DIC("P")="8984.31A"
- SET DA(1)=IEN
- SET DIC="^XT(8984.3,DA(1),1,"
- +14 SET DIC(0)="MLQZ"
- SET X=XTLK3(S)
- DO ^DIC
- IF Y=-1
- SET XTLKER(3,XTLK3)=""
- End DoDot:1
- +15 QUIT
- K(XTLK1,XTLK2,XTLK3) ;Add Keywords
- +1 NEW DIC,DIE,DLAYGO,DA,DR,X,Y,XTLKCOD,XTLKCOD1,XTLKY
- +2 DO QU^XTLKEFOP(XTLK1)
- IF Y<1
- SET XTLKER(1,XTLK1)=""
- IF Y<1
- QUIT
- +3 SET DIC=+XTLKY
- SET DIC(0)="LMQZ"
- SET X=XTLK2
- DO ^DIC
- IF Y<1
- SET XTLKER(2,XTLK2)=""
- QUIT
- +4 DO C1^XTLKEFOP
- SET X=XTLK3
- SET (DIE,DIC,DLAYGO)=8984.1
- SET DIC(0)="LMQZ"
- DO ^DIC
- IF Y<1
- SET XTLKER(3,XTLK3)=""
- QUIT
- +5 KILL DIC,DA
- SET DA=+Y
- SET DR=".02////^S X=XTLKCOD;.03///^S X=XTLKCOD1;.04///^S X=+XTLKY"
- DO ^DIE
- +6 QUIT
- SH(XTLK1,XTLK2,XTLK3) ;POPULATE SHORTCUT FILE
- +1 NEW DIC,DIE,DLAYGO,DA,DR,X,Y,XTLKCOD,XTLKCOD1,XTLKY
- +2 DO QU^XTLKEFOP(XTLK1)
- IF Y<1
- QUIT
- +3 SET DIC=+XTLKY
- SET DIC(0)="LMQZ"
- SET X=XTLK2
- DO ^DIC
- IF Y<1
- SET XTLKER(2,XTLK2)=""
- +4 DO C1^XTLKEFOP
- SET X=XTLK3
- SET (DIE,DIC,DLAYGO)=8984.2
- SET DIC(0)="LMQZ"
- DO ^DIC
- IF Y<1
- SET XTLKER(3,XTLK3)=""
- QUIT
- +5 KILL DIC,DA
- SET DA=+Y
- SET DR=".02////^S X=XTLKCOD;.03///^S X=XTLKCOD1"
- DO ^DIE
- +6 QUIT
- +7 ;
- L(XTLK1,XTLK2,XTLK3,XTLK4) ;update OF LOCAL LOOKUP FILE
- +1 NEW DIC,DIE,DLAYGO,DA,DR,JL0,JLY,XTLKPRE,XTLKLP
- +2 SET (DIC,DIE,DLAYGO)=8984.4
- SET DIC(0)="LMQZ"
- SET X=XTLK1
- DO ^DIC
- IF Y<1
- SET XTLKER(1,XTLK1)=""
- QUIT
- +3 SET JL0=Y(0,0)
- SET JLY=+Y
- SET XTLKPRE=XTLK4
- +4 SET DA=+Y
- SET DR=".02////^S X=$G(XTLK2);.03///^S X=XTLK3"
- DO ^DIE
- DO LL2^XTLKEFOP
- +5 QUIT
- DSH(XTLK1,XTLK2) ;Delete shortcuts for given file
- +1 NEW XTLKJG,DA,DIK
- +2 IF $GET(XTLK1)=""
- QUIT
- DO QU^XTLKEFOP(XTLK1)
- IF $GET(XTLKY)=""
- SET XTLKER(1,XTLK1)=""
- QUIT
- +3 SET XTLKJG=$PIECE(^DIC(+XTLKY,0,"GL"),U,2)
- +4 IF $DATA(XTLK2)
- NEW C,TRM,IEN
- SET C=""
- FOR
- SET C=$ORDER(XTLK2(C))
- IF C=""
- QUIT
- Begin DoDot:1
- +5 SET TRM=$GET(XTLK2(C))
- IF '$DATA(^XT(8984.2,"AC",XTLKJG,TRM))
- QUIT
- SET IEN=$ORDER(^(TRM,""))
- +6 SET DA=IEN
- SET DIK="^XT(8984.2,"
- DO ^DIK
- KILL DIK,DA
- End DoDot:1
- +7 IF '$DATA(XTLK2)
- NEW TRM,IEN
- SET TRM=""
- Begin DoDot:1
- +8 FOR
- SET TRM=$ORDER(^XT(8984.2,"AC",XTLKJG,TRM))
- IF TRM=""
- QUIT
- Begin DoDot:2
- +9 SET IEN=0
- FOR
- SET IEN=$ORDER(^XT(8984.2,"AC",XTLKJG,TRM,IEN))
- IF IEN<1
- QUIT
- Begin DoDot:3
- +10 SET DA=IEN
- SET DIK="^XT(8984.2,"
- DO ^DIK
- KILL DIK,DA
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +11 QUIT
- DSY(XTLK1,XTLK2) ;Delete synonym TERMS for given file
- +1 IF $GET(XTLK1)=""
- QUIT
- DO QU^XTLKEFOP(XTLK1)
- IF $GET(XTLKY)=""
- SET XTLKER(1,XTLK1)=""
- QUIT
- +2 SET XTLKJG=$PIECE(^DIC(+XTLKY,0,"GL"),"^",2)
- +3 IF $DATA(XTLK2)
- NEW C,TRM,IEN
- SET C=""
- FOR
- SET C=$ORDER(XTLK2(C))
- IF C=""
- QUIT
- Begin DoDot:1
- +4 SET TRM=$GET(XTLK2(C))
- IF '$DATA(^XT(8984.3,"AC",XTLKJG,TRM))
- QUIT
- SET IEN=$ORDER(^(TRM,""))
- +5 SET DA=IEN
- SET DIK="^XT(8984.3,"
- DO ^DIK
- KILL DIK,DA
- End DoDot:1
- +6 IF '$DATA(XTLK2)
- NEW TRM,IEN
- SET TRM=""
- Begin DoDot:1
- +7 FOR
- SET TRM=$ORDER(^XT(8984.3,"AC",XTLKJG,TRM))
- IF TRM=""
- QUIT
- Begin DoDot:2
- +8 SET IEN=0
- FOR
- SET IEN=$ORDER(^XT(8984.3,"AC",XTLKJG,TRM,IEN))
- IF IEN<1
- QUIT
- Begin DoDot:3
- +9 SET DA=IEN
- SET DIK="^XT(8984.3,"
- DO ^DIK
- KILL DIK,DA
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +10 QUIT
- DK(XTLK1,XTLK2) ;Delete keywords from 8984.1
- +1 IF $GET(XTLK1)=""
- QUIT
- DO QU^XTLKEFOP(XTLK1)
- IF $GET(XTLKY)=""
- SET XTLKER(1,XTLK1)=""
- QUIT
- +2 IF '$DATA(^XT(8984.1,"AD",+XTLKY))
- QUIT
- +3 IF $DATA(XTLK2)
- NEW C,TRM,IEN
- SET C=""
- FOR
- SET C=$ORDER(XTLK2(C))
- IF C=""
- QUIT
- Begin DoDot:1
- +4 SET TRM=$GET(XTLK2(C))
- SET IEN=$ORDER(^XT(8984.1,"AD",+XTLKY,""))
- +5 IF IEN=""
- QUIT
- IF $PIECE(^XT(8984.1,IEN,0),"^")'=TRM
- QUIT
- +6 SET DA=IEN
- SET DIK="^XT(8984.1,"
- DO ^DIK
- KILL DIK,DA
- End DoDot:1
- +7 IF '$DATA(XTLK2)
- NEW TRM,IEN
- SET IEN=0
- Begin DoDot:1
- +8 FOR
- SET IEN=$ORDER(^XT(8984.1,"AD",+XTLKY,IEN))
- IF IEN<1
- QUIT
- Begin DoDot:2
- +9 SET DA=IEN
- SET DIK="^XT(8984.1,"
- DO ^DIK
- KILL DIK,DA
- End DoDot:2
- End DoDot:1
- +10 QUIT
- DLL(XTLK1) ;Delete an entry from the Local Lookup File-8984.4
- +1 ;XTLK1=filename
- +2 NEW XTLKJG,XTLKY,DIK,XTLKLP,DA
- +3 IF $GET(XTLK1)=""
- QUIT
- DO QU^XTLKEFOP(XTLK1)
- IF $GET(XTLKY)=""
- SET XTLKER(1,XTLK1)=""
- QUIT
- +4 SET XTLKJG=$PIECE(^DIC(+XTLKY,0,"GL"),"^",2)
- +5 IF $DATA(^XT(8984.2,"AC",XTLKJG))!($DATA(^XT(8984.3,"AC",XTLKJG)))!($DATA(^XT(8984.1,"AD",+XTLKY)))
- SET XTLKER(2)=""
- QUIT
- +6 SET DA=+XTLKY
- SET DIK="^XT(8984.4,"
- DO ^DIK
- +7 FOR XTLKLP=8984.1,8984.2
- SET DIK="^DD("_XTLKLP_",.02,""V"","
- SET DA(1)=.02
- SET DA(2)=XTLKLP
- SET DA=$ORDER(^DD(XTLKLP,.02,"V","B",+XTLKY,0))
- DO ^DIK
- +8 QUIT
- LKUP(FIL,XTLKX,XTLKSAY,XTLKHLP,XTLKMORE) ;General MTLU lookup utility
- +1 NEW IEN,XTLKKSCH
- +2 IF $GET(XTLKMORE)=""
- SET XTLKMORE=1
- +3 IF $GET(XTLKSAY)=""
- SET XTLKSAY=1
- +4 DO QU^XTLKEFOP(FIL)
- IF $GET(XTLKY)=""
- SET XTLKER(1,FIL)=""
- QUIT
- +5 IF Y<1
- QUIT
- SET IEN=+Y
- +6 SET XTLKKSCH("INDEX")=$PIECE(Y(0),"^",3)
- SET XTLKKSCH("DSPLY")=$SELECT($GET(^XT(8984.4,IEN,1))="":"DGEN^XTLKKWLD",1:^(1))
- SET XTLKKSCH("GBL")=+Y
- +7 DO ^XTLKKWL
- +8 IF $DATA(DUOUT)!(Y=-1)
- Begin DoDot:1
- +9 IF 'XTLKMORE!(XTLKSAY=-1)
- QUIT
- +10 IF XTLKSAY=1
- WRITE !,"...Nothing selected. Attempting Fileman lookup."
- SET X=XTLKX
- SET DIC=FIL
- SET DIC(0)="EMNZI"
- DO ^DIC
- End DoDot:1
- +11 IF XTLKSAY'=-1
- KILL ^TMP("XTLKHITS",$JOB)
- +12 QUIT