| 1 | LEXEDF1 ; ISL Edit/Display a Definition (Part 1)   ; 05/14/2003
 | 
|---|
| 2 |  ;;2.0;LEXICON UTILITY;**3,25**;Sep 23, 1996;Build 1
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  N DIC,DIE,DIR,DIROUT,DIRUT,DLAYGO,DR,DTOUT,DUOUT,DA,X,Y
 | 
|---|
| 5 |  N LEX,LEXAID,LEXC,LEXDIC0,LEXE,LEXI,LEXL,LEXLC
 | 
|---|
| 6 |  N LEXMC,LEXME,LEXMP,LEXS,LEXSAV,LEXST,LEXTY,LEXX
 | 
|---|
| 7 |  K X I $D(DUZ)#2=0 G EXIT
 | 
|---|
| 8 | ASK ; Ask user to select an expression to edit the definition
 | 
|---|
| 9 |  N LEXAP S DIC("A")="Enter a concept to edit definition:  "
 | 
|---|
| 10 |  S:'$D(DIC(0)) DIC(0)="QEAM" S LEXAP=1 D ^LEXA1 I X=""!(+Y'>0) G EXIT
 | 
|---|
| 11 |  I +Y<3,+Y>0 D  G EXIT
 | 
|---|
| 12 |  . W !,"The definition for ",^LEX(757.01,+Y,0)," is not editable"
 | 
|---|
| 13 |  S LEXE=$$EXP^LEXEDF2(+Y) G:'$D(LEXE) EXIT
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  I LEXE="" D  G:'$D(LEXE) ASK G:LEXE="" EXIT
 | 
|---|
| 16 |  . W !!,"No selection made, try again using the same concept"
 | 
|---|
| 17 | AGAIN . ; Ask user to try again using the same expression
 | 
|---|
| 18 |  . S %=2 D YN^DICN S DIC(0)=$S(%=1:"QEM",1:"QEAM")
 | 
|---|
| 19 |  . S LEXE=$S(%=-1:"",%=2:"",1:%) K:LEXE=% LEXE W:%=1 ! Q:%'=0
 | 
|---|
| 20 |  . I '% D  G AGAIN
 | 
|---|
| 21 |  . . W !!,"You were given various forms of an expression "
 | 
|---|
| 22 |  . . W "(concept, synonyms and"
 | 
|---|
| 23 |  . . W !,"lexical variants) to select from.  "
 | 
|---|
| 24 |  . . W "Do you wish to try again using"
 | 
|---|
| 25 |  . . W !,"the same concept"
 | 
|---|
| 26 |  D:+($G(LEXE))>1&($D(^LEX(757.01,+($G(LEXE)),0))) EDIT(LEXE) G EXIT  ; PCH 3
 | 
|---|
| 27 | EDIT(LEXE) ; Edit the expression definition
 | 
|---|
| 28 |  W !,$E(^LEX(757.01,LEXE,0),1,78),! K ^TMP("LEXDEF",$J)
 | 
|---|
| 29 |  G:'$D(LEXE) EDITQ
 | 
|---|
| 30 |  S LEXMP=0 I $D(^LEX(757.01,LEXE,3,0)) D
 | 
|---|
| 31 |  . S ^TMP("LEXDEF",$J,4)="Old Definition:"
 | 
|---|
| 32 |  . S ^TMP("LEXDEF",$J,5)=^LEX(757.01,LEXE,3,0),(LEXMP,LEXLC)=0
 | 
|---|
| 33 |  . F  S LEXLC=$O(^LEX(757.01,LEXE,3,LEXLC)) Q:+LEXLC=0  D
 | 
|---|
| 34 |  . . S LEXMP=LEXLC+5
 | 
|---|
| 35 |  . . S ^TMP("LEXDEF",$J,LEXMP)=^LEX(757.01,LEXE,3,LEXLC,0)
 | 
|---|
| 36 |  N LEXDIC0 S DA=+LEXE,DIE="^LEX(757.01,",DR="6"
 | 
|---|
| 37 |  S:DIC(0)'["L" DIC(0)=DIC(0)_"L" S LEXDIC0=DIC(0),DLAYGO=757
 | 
|---|
| 38 |  L +^LEX(757.01,LEXE):1
 | 
|---|
| 39 |  I '$T D  G EDITQ
 | 
|---|
| 40 |  . W !,"This record is being edited by "
 | 
|---|
| 41 |  . W "another user, try again later"
 | 
|---|
| 42 |  S LEXSAV=0 D SNAP^LEXEDF2(+LEXE),^DIE,SHOT^LEXEDF2(+LEXE)
 | 
|---|
| 43 |  S LEX=$$CHANGE^LEXEDF2
 | 
|---|
| 44 |  I +LEX>0 S LEXSAV=$$SAVE^LEXEDF2
 | 
|---|
| 45 |  I 'LEXSAV,+LEX>0 D RESTORE^LEXEDF2(+LEXE)
 | 
|---|
| 46 |  K DLAYGO,LEXDIC0 L -^LEX(757.01,LEXE) G:+LEX=0!(+LEXSAV=0) RESULTS
 | 
|---|
| 47 |  I $D(^LEX(757.01,LEXE,3,0)) D
 | 
|---|
| 48 |  . S ^TMP("LEXDEF",$J,1)="TXT:  "_^LEX(757.01,LEXE,0)
 | 
|---|
| 49 |  . S ^TMP("LEXDEF",$J,2)="IFN:  "_LEXE,^TMP("LEXDEF",$J,3)=""
 | 
|---|
| 50 |  S:LEXMP=0 LEXMP=2
 | 
|---|
| 51 |  I $D(^LEX(757.01,LEXE,3,0)) D
 | 
|---|
| 52 |  . S ^TMP("LEXDEF",$J,(LEXMP+1))=""
 | 
|---|
| 53 |  . S ^TMP("LEXDEF",$J,LEXMP+2)="New Definition:"
 | 
|---|
| 54 |  . S ^TMP("LEXDEF",$J,LEXMP+3)=^LEX(757.01,LEXE,3,0)
 | 
|---|
| 55 |  . S LEXMP=LEXMP+4
 | 
|---|
| 56 |  . S LEXLC=0 F  S LEXLC=$O(^LEX(757.01,LEXE,3,LEXLC)) Q:+LEXLC=0  D
 | 
|---|
| 57 |  . . S ^TMP("LEXDEF",$J,LEXMP)=^LEX(757.01,LEXE,3,LEXLC,0)
 | 
|---|
| 58 |  . . S LEXMP=LEXMP+1
 | 
|---|
| 59 |  D:+LEX>0&(+LEXSAV>0) SENDDEF
 | 
|---|
| 60 | RESULTS ; Display results of edit
 | 
|---|
| 61 |  I +LEXSAV=0 D
 | 
|---|
| 62 |  . I +LEX W !,"Changes to the definition were not saved" Q
 | 
|---|
| 63 |  . W !,"No changes made"
 | 
|---|
| 64 |  I +LEXSAV>0 W !,$P(LEX,U,2)
 | 
|---|
| 65 | EDITQ ; Quit edit
 | 
|---|
| 66 |  K DIC,DIE,DIR,DLAYGO,DR,LEX,LEXAID,LEXC,LEXDIC0
 | 
|---|
| 67 |  K LEXE,LEXI,LEXL,LEXLC,LEXMC,LEXME,LEXMP,LEXS
 | 
|---|
| 68 |  K LEXSAV,LEXST,LEXTY,LEXX,^TMP("LEXDEF",$J) Q
 | 
|---|
| 69 | DISP(LEXX) ; Display a definition
 | 
|---|
| 70 |  Q:+($G(LEXX))=0  I '$D(^LEX(757.01,LEXX,3,1,0)) Q
 | 
|---|
| 71 |  N X S X=0 F  S X=$O(^LEX(757.01,LEXX,3,X)) Q:+X=0  D
 | 
|---|
| 72 |  . W:X=1 !!,"Definition:  ",! W !,^LEX(757.01,LEXX,3,X,0)
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 | EXIT ; Clean up and exit
 | 
|---|
| 75 |  K DIC,DIE,DIR,DLAYGO,DR,DA,X,Y,LEX,LEXAID,LEXC,LEXDIC0
 | 
|---|
| 76 |  K LEXE,LEXI,LEXL,LEXLC,LEXMC,LEXME,LEXMP,LEXS
 | 
|---|
| 77 |  K LEXSAV,LEXST,LEXTY,LEXX,^TMP("LEXDEF",$J) Q
 | 
|---|
| 78 | SENDDEF ; Send edited definition to ISC
 | 
|---|
| 79 |  N DIFROM,LEXADR K XMZ Q:'$D(^TMP("LEXDEF",$J))  S LEXADR=$$ADR^LEXU Q:'$L(LEXADR)
 | 
|---|
| 80 |  S XMSUB=$P(LEX,U,2)_" in Expression File (#757.01)"
 | 
|---|
| 81 |  S XMY(("G.LEXICON@"_LEXADR))=""
 | 
|---|
| 82 |  S XMTEXT="^TMP(""LEXDEF"",$J,",XMDUZ=.5 D ^XMD
 | 
|---|
| 83 |  K ^TMP("LEXDEF",$J),XCNP,XMDUZ,XMY("G.LEXICON@ISC-SLC.VA.GOV"),XMZ
 | 
|---|
| 84 |  K XMSUB,XMY,XMTEXT
 | 
|---|
| 85 |  Q
 | 
|---|