| 1 | SPNUTL0 ;HISC/DAD-GENERIC FILE ENTRY SELECTOR ;12/8/95  09:40
 | 
|---|
| 2 |  ;;2.0;Spinal Cord Dysfunction;;01/02/1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;*** SELECTS A GROUP OF RECORDS FROM A FILE ***
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;REQUIRES:
 | 
|---|
| 7 |  ;  SPNDIC      = FILE NUMBER OR GLOBAL ROOT
 | 
|---|
| 8 |  ;  SPNDIC(0)   = DIC(0) STRING
 | 
|---|
| 9 |  ;  SPNUTIL     = NODE TO STORE DATA UNDER IN ^TMP($J,SPNUTIL,
 | 
|---|
| 10 |  ;OPTIONAL:
 | 
|---|
| 11 |  ;  SPNDIC("A") = DIC("A") STRING
 | 
|---|
| 12 |  ;  SPNDIC("B") = DIC("B") STRING
 | 
|---|
| 13 |  ;  SPNDIC("S") = DIC("S") STRING
 | 
|---|
| 14 |  ;  SPNDIC("W") = DIC("W") STRING
 | 
|---|
| 15 |  ;RETURNS:
 | 
|---|
| 16 |  ;  SPNQUIT     = $S(UP_ARROW_OUT:1 , NOTHING_SELECTED:1 , 1:0)
 | 
|---|
| 17 |  ;  ^TMP($J,SPNUTIL,EXTERNAL_.01_FIELD_DATA,IEN) = ""
 | 
|---|
| 18 | EN1 ;
 | 
|---|
| 19 |  S SPNQUIT=0
 | 
|---|
| 20 |  I ($D(SPNDIC)[0)!($D(SPNDIC(0))[0)!($D(SPNUTIL)[0) S SPNQUIT=1 G EXIT
 | 
|---|
| 21 |  I (SPNDIC="")!(SPNDIC(0)="")!(SPNUTIL="") S SPNQUIT=1 G EXIT
 | 
|---|
| 22 |  D K S DIC=SPNDIC
 | 
|---|
| 23 |  I DIC D  G:SPNQUIT EXIT
 | 
|---|
| 24 |  . S (SPNDIC,DIC)=$$GET1^DID(DIC,"","","GLOBAL NAME")
 | 
|---|
| 25 |  . I DIC="" S SPNQUIT=1
 | 
|---|
| 26 |  . Q
 | 
|---|
| 27 |  S DIC(0)=SPNDIC(0),DIC(0)=$TR(DIC(0),"AL")
 | 
|---|
| 28 |  S:DIC(0)'["Z" DIC(0)=DIC(0)_"Z" S SPNDIC(0)=DIC(0)
 | 
|---|
| 29 |  D DO^DIC1 S SPNFNUM=+DO(2),SPNFNAME=$P(DO,"^")
 | 
|---|
| 30 |  S SPNFLD01=$$GET1^DID(SPNFNUM,.01,"","LABEL")
 | 
|---|
| 31 |  S SPNFSCR=$S($D(DO("SCR"))#2:DO("SCR"),1:"") K DO
 | 
|---|
| 32 |  S SPNFLD01("S")=SPNFLD01_$S($E(SPNFLD01,$L(SPNFLD01))?1L:"s",1:"S")
 | 
|---|
| 33 |  F X="A","B","S","W" S SPNDIC(X)=$S($D(SPNDIC(X))#2:SPNDIC(X),1:"")
 | 
|---|
| 34 |  S:SPNDIC("A")="" SPNDIC("A")="Select "_SPNFNAME_" "_SPNFLD01_": "
 | 
|---|
| 35 |  S SPNALL=0,SPNNUM=1 K TMP($J,SPNUTIL) D HOME^%ZIS
 | 
|---|
| 36 | 1 D SETDIC
 | 
|---|
| 37 |  W !!,$S(SPNNUM>1:"Another one: ",1:DIC("A"))
 | 
|---|
| 38 |  W $S((SPNNUM=1)&(SPNDIC("B")]""):SPNDIC("B")_"// ",1:"")
 | 
|---|
| 39 |  R X:DTIME S:('$T)!($E(X)="^") SPNQUIT=1
 | 
|---|
| 40 |  G:SPNQUIT EXIT S:(SPNNUM=1)&(X="")&(SPNDIC("B")]"") X=SPNDIC("B")
 | 
|---|
| 41 |  G:X="" EXIT S SPNDSEL=$S(X?1"-"1.E:1,1:0) S:SPNDSEL X=$E(X,2,$L(X))
 | 
|---|
| 42 |  I $L(X),$L(X)<4,"Aa"[$E(X),"Ll"[$E(X,2),"Ll"[$E(X,3) D ALL G EXIT:SPNQUIT,1:SPNALL
 | 
|---|
| 43 |  D HELP:$E(X)="?",^DIC K DIC G:+Y'>0 1
 | 
|---|
| 44 |  I $$CHKFLD(SPNFNUM)["D" D
 | 
|---|
| 45 |  . N %DT,X
 | 
|---|
| 46 |  . S SPND0=Y,X=Y(0,0),%DT="ST" D ^%DT S Y(0,0)=Y,Y=SPND0
 | 
|---|
| 47 |  . Q
 | 
|---|
| 48 |  I 'SPNDSEL,'$D(^TMP($J,SPNUTIL,$E(Y(0,0),1,63),+Y)) D
 | 
|---|
| 49 |  . S ^TMP($J,SPNUTIL,$E(Y(0,0),1,63),+Y)=""
 | 
|---|
| 50 |  . S SPNNUM=SPNNUM+1
 | 
|---|
| 51 |  . Q
 | 
|---|
| 52 |  I SPNDSEL,$D(^TMP($J,SPNUTIL,$E(Y(0,0),1,63),+Y)) D
 | 
|---|
| 53 |  . K ^TMP($J,SPNUTIL,$E(Y(0,0),1,63),+Y)
 | 
|---|
| 54 |  . S SPNNUM=SPNNUM-$S(SPNNUM>0:1,1:0)
 | 
|---|
| 55 |  . Q
 | 
|---|
| 56 |  G 1
 | 
|---|
| 57 | EXIT ;
 | 
|---|
| 58 |  S SPNQUIT=$S(SPNQUIT:1,$O(^TMP($J,SPNUTIL,""))="":1,1:0)
 | 
|---|
| 59 |  K SPNDIC,SPNUTIL
 | 
|---|
| 60 | K K %,C,D0,DA,DIC,DIK,DIR,DO,SPN,SPNALL,SPND0,SPNDSEL,SPNDT,SPNFLD01
 | 
|---|
| 61 |  K SPNFNAME,SPNFNUM,SPNFSCR,SPNLINE,SPNNUM,X,Y
 | 
|---|
| 62 |  Q
 | 
|---|
| 63 | ALL ;
 | 
|---|
| 64 |  S SPN="By '"_X_"' do you mean all "_$S($G(SPNFSCR)]"":"",$G(SPNDIC("S"))]"":"",1:$P(@(SPNDIC_"0)"),"^",4)_" ")_SPNFNAME_" "_SPNFLD01("S")
 | 
|---|
| 65 |  D WRAP(SPN)
 | 
|---|
| 66 |  S %=1 D YN^DICN S SPNALL=$S(%=1:1,1:0) S:%=-1 SPNQUIT=1
 | 
|---|
| 67 |  I '% D  G ALL
 | 
|---|
| 68 |  . W !?7,"Answer Y(es) if you want all of the ",SPNFLD01("S"),","
 | 
|---|
| 69 |  . W !?7,"otherwise answer N(o)"
 | 
|---|
| 70 |  . Q
 | 
|---|
| 71 |  I SPNQUIT!'SPNALL W:'SPNQUIT !!,X Q
 | 
|---|
| 72 |  N X F SPND0=0:0 S SPND0=$O(@(SPNDIC_"SPND0)")) Q:SPND0'>0  D AL
 | 
|---|
| 73 |  W:SPNNUM=1 " ??",*7
 | 
|---|
| 74 |  Q
 | 
|---|
| 75 | AL I SPNFSCR]"" D SETDIC I $D(@(SPNDIC_"SPND0,0)"))#2 S (D0,DA,Y)=SPND0 X SPNFSCR Q:'$T
 | 
|---|
| 76 |  I SPNDIC("S")]"" D SETDIC I $D(@(SPNDIC_"SPND0,0)"))#2 S (D0,DA,Y)=SPND0 X DIC("S") Q:'$T
 | 
|---|
| 77 |  S Y=$P($G(@(SPNDIC_"SPND0,0)")),"^"),C=$P(^DD(SPNFNUM,.01,0),"^",2) Q:Y=""
 | 
|---|
| 78 |  D Y^DIQ
 | 
|---|
| 79 |  I $$CHKFLD(SPNFNUM)["D" D
 | 
|---|
| 80 |  . N %DT,X
 | 
|---|
| 81 |  . S X=Y,%DT="ST" D ^%DT
 | 
|---|
| 82 |  . Q
 | 
|---|
| 83 |  S ^TMP($J,SPNUTIL,$E(Y,1,63),SPND0)="",SPNNUM=SPNNUM+1
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 | HELP ;
 | 
|---|
| 86 |  N X S SPN="Select a "_SPNFNAME_" "_SPNFLD01_" from the displayed list."
 | 
|---|
| 87 |  D WRAP(SPN)
 | 
|---|
| 88 |  W !?5,"To deselect an ",SPNFLD01," type a minus sign (-)"
 | 
|---|
| 89 |  W !?5,"in front of it, e.g.  -",SPNFLD01,"."
 | 
|---|
| 90 |  W !?5,"To get all ",SPNFLD01," type ALL."
 | 
|---|
| 91 |  G:$O(^TMP($J,SPNUTIL,""))="" HLP
 | 
|---|
| 92 | SHOW S SPNLINE=$Y,SPN="" W !!,"You have already selected:"
 | 
|---|
| 93 |  F  S SPN=$O(^TMP($J,SPNUTIL,SPN)) Q:SPN=""!SPNQUIT  D
 | 
|---|
| 94 |  . F SPND0=0:0 S SPND0=$O(^TMP($J,SPNUTIL,SPN,SPND0)) Q:SPND0'>0!SPNQUIT  D
 | 
|---|
| 95 |  .. S SPN(0)=SPN
 | 
|---|
| 96 |  .. I $$CHKFLD(SPNFNUM)["D" D
 | 
|---|
| 97 |  ... N Y
 | 
|---|
| 98 |  ... S Y=SPN(0) X ^DD("DD") S SPN(0)=Y
 | 
|---|
| 99 |  ... Q
 | 
|---|
| 100 |  .. I SPNDIC(0)["N" W !?3,SPND0,?15,SPN(0)
 | 
|---|
| 101 |  .. E  W !?3,SPN(0)
 | 
|---|
| 102 |  .. D SETDIC
 | 
|---|
| 103 |  .. I $D(DIC("W"))#2,DIC("W")]"",$D(@(SPNDIC_"SPND0,0)"))#2 D
 | 
|---|
| 104 |  ... S (D0,DA,Y)=SPND0 X DIC("W")
 | 
|---|
| 105 |  ... Q
 | 
|---|
| 106 |  .. I $Y>(IOSL+SPNLINE-3) D PAUSE S SPNLINE=$Y
 | 
|---|
| 107 |  .. Q
 | 
|---|
| 108 |  . Q
 | 
|---|
| 109 | HLP W ! S SPNQUIT=0
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 | WRAP(X) ;
 | 
|---|
| 112 |  W ! F  D  Q:X=""
 | 
|---|
| 113 |  . S Y=$L($E(X,1,IOM-20)," ")
 | 
|---|
| 114 |  . W !?5,$P(X," ",1,Y)
 | 
|---|
| 115 |  . S X=$P(X," ",Y+1,999)
 | 
|---|
| 116 |  . Q
 | 
|---|
| 117 |  Q
 | 
|---|
| 118 | PAUSE ;
 | 
|---|
| 119 |  K DIR S DIR(0)="E" D ^DIR K DIR S SPNQUIT=$S(Y:0,1:1)
 | 
|---|
| 120 |  Q
 | 
|---|
| 121 | SETDIC ;
 | 
|---|
| 122 |  K DIC,DO S DIC=SPNDIC
 | 
|---|
| 123 |  F X="0","A","B","S" I SPNDIC(X)]"" S DIC(X)=SPNDIC(X)
 | 
|---|
| 124 |  I $D(SPNDIC("W")) S DIC("W")=SPNDIC("W")
 | 
|---|
| 125 |  D DO^DIC1
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 | CHKFLD(X) ;
 | 
|---|
| 128 |  N A S A=$$GET1^DID(X,.01,"","SPECIFIER")
 | 
|---|
| 129 |  I A["P" F  S A=$$CHKFLD($TR(A,$TR(A,".0123456789"))) Q:A'["P"
 | 
|---|
| 130 |  Q A
 | 
|---|