1 | SPNAHOCY ;HISC/DAD-AD HOC REPORTS: INTERFACE COMPILER ;9/9/96 11:44
|
---|
2 | ;;2.0;Spinal Cord Dysfunction;;01/02/1997
|
---|
3 | ;
|
---|
4 | S (SPNMMAX,SPNSORT)=0,SPNLEVEL=1,SPNFILE(SPNLEVEL)=SPNFILE
|
---|
5 | FLD ; *** Process the sort/print fields
|
---|
6 | W !!,"Choose a field for menu item number ",SPNMMAX+1
|
---|
7 | W ", <RETURN> to end, ^ to exit."
|
---|
8 | W !,"Select ",$S(SPNLEVEL=1:"",1:$P(SPNFILE(SPNLEVEL-1),U,3)_" SUB-")
|
---|
9 | W "FIELD: " R X:DTIME S:'$T X=U S SPNQUIT=$S($E(X)=U:1,1:0)
|
---|
10 | I X="?",SPNMMAX D LIST G:SPNQUIT FLD W !
|
---|
11 | K DIC S DIC="^DD("_+SPNFILE(SPNLEVEL)_",",DIC(0)="EMNQZ"
|
---|
12 | S DIC("W")="W "" "",$$ID^SPNAHOCY"
|
---|
13 | D ^DIC S SPNY=Y
|
---|
14 | I SPNY'>0 S:X="" SPNLEVEL=SPNLEVEL-1 G EXIT:'SPNLEVEL!SPNQUIT,FLD
|
---|
15 | S SPNATTR="LABEL;MULTIPLE-VALUED;POINTER;SPECIFIER;TYPE" K SPNDD,SPNERR
|
---|
16 | D FIELD^DID(+SPNFILE(SPNLEVEL),+SPNY,"",SPNATTR,"SPNDD","SPNERR")
|
---|
17 | I $O(SPNERR(""))]"" W " ??",$C(7) G FLD
|
---|
18 | S SPNDD=SPNDD("LABEL")_U_SPNDD("SPECIFIER")_U_SPNDD("POINTER")
|
---|
19 | S $P(SPNFILE(SPNLEVEL),U,2,3)=+SPNY_U_$P(SPNDD,U),SPNWP=0
|
---|
20 | ; *** SPNFILE(Level#) = Dict # ^ Fld # ^ Fld Name
|
---|
21 | I +$P(SPNDD,U,2) D G:'SPNWP FLD
|
---|
22 | . S SPNWP=(SPNDD("TYPE")="WORD-PROCESSING")
|
---|
23 | . I 'SPNWP S SPNLEVEL=SPNLEVEL+1,SPNFILE(SPNLEVEL)=+$P(SPNDD,U,2)
|
---|
24 | . Q
|
---|
25 | I $D(SPNCHOSN(SPNFILE(SPNLEVEL)))#2 D G FLD
|
---|
26 | . W !!?5,"*** You have already chosen that field !! ***",$C(7)
|
---|
27 | . Q
|
---|
28 | F SP=1:1:5 S SPNTEXT(SP)=""
|
---|
29 | NAME ; *** Prompt user for the external field name
|
---|
30 | K DIR S DIR(0)="FOA^2:30^K:X[U X",DIR("?")="^D EN^SPNAHOCH(""H7"")"
|
---|
31 | S DIR("A")="Menu text the user should see: "
|
---|
32 | S DIR("B")=$$CASE($P(SPNDD,U))
|
---|
33 | D ^DIR G:$D(DIRUT) FLD S SPNTEXT(2)=Y
|
---|
34 | SORT ; *** Allow sorting on this field (Y/N)
|
---|
35 | G:SPNWP SETLINE ; *** Don't ask sort questions for WP fields
|
---|
36 | F D Q:%
|
---|
37 | . S X=$P(SPNDD,U,2)
|
---|
38 | . S %=$S($P(SPNFILE(SPNLEVEL),U,2)=.01:1,X["F":2,X["K":2,X["V":2,1:1)
|
---|
39 | . W !,"Want to allow sorting by ",SPNTEXT(2)
|
---|
40 | . D YN^DICN S SPNTEXT(1)=(%=1),SPNSORT=SPNSORT+SPNTEXT(1)
|
---|
41 | . I '% W !!?5,SPNYESNO,!
|
---|
42 | . Q
|
---|
43 | G:%=-1 FLD
|
---|
44 | SCREEN ; *** Prompt user for screen on pointers and sets
|
---|
45 | S X=$P(SPNDD,U,2)
|
---|
46 | I SPNTEXT(1),$TR(X,$TR(X,"PS"))]"" D G:$D(DTOUT)!$D(DUOUT)!$D(DIROUT) FLD
|
---|
47 | . F D Q:SPNTEXT(5)]""!$D(DIRUT)
|
---|
48 | .. K DIR S DIR(0)="FOAU^1:245^"
|
---|
49 | .. S DIR("A")="Sort from/to look-up screen: "
|
---|
50 | .. S DIR("?")="^D EN^SPNAHOCH(""H12"")"
|
---|
51 | .. D ^DIR I Y=""!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) Q
|
---|
52 | .. S X=Y D ^DIM
|
---|
53 | .. I $G(X)]"" S SPNTEXT(5)=X
|
---|
54 | .. E W " ??",$C(7)
|
---|
55 | .. Q
|
---|
56 | . Q
|
---|
57 | DIR ; *** Set up DIR(0) for sort from/to prompts
|
---|
58 | S X=$P(SPNDD,U,2)
|
---|
59 | G NUMERIC:X["N",POINTER:X["P",SET:X["S",DATE:X["D",TEXT
|
---|
60 | DATE S SPNTEXT(4)="DAO^::AETS^D DATE^SPNAHOC2" G SETLINE
|
---|
61 | NUMERIC S SPNTEXT(4)="NAO^-999999999:999999999:9^" G SETLINE
|
---|
62 | POINTER S SP=$P(SPNDD,U,2),SP=$TR(SP,$TR(SP,".0123456789"))
|
---|
63 | S SPNTEXT(4)="PAO^"_SP_":AEMNQZ^D POINTER^SPNAHOC2" G SETLINE
|
---|
64 | SET S SPNTEXT(4)="SAOM^"_$P(SPNDD,U,3)_"^D SET^SPNAHOC2" G SETLINE
|
---|
65 | TEXT S SPNTEXT(4)="FAO^1:60^"
|
---|
66 | SETLINE ; *** Save menu $TEXT line in ^TMP
|
---|
67 | F SP=1:1:SPNLEVEL S SPNTEXT(3)=SPNTEXT(3)_$S(SP=SPNLEVEL:"~",1:"")_$P(SPNFILE(SP),U,2)_$S(SP'=SPNLEVEL:",",1:$S(SPNTEXT(2)'=$P(SPNFILE(SP),U,3):";"""_$TR(SPNTEXT(2),",;^~"," ")_"""",1:""))
|
---|
68 | S Y=8+$L(SPNTEXT(2))+$L(SPNTEXT(3))+$L(SPNTEXT(4))+$L(SPNTEXT(5))-245
|
---|
69 | I Y>0 D G FLD
|
---|
70 | . W !!?5,"*** This line is ",Y," character",$S(Y>1:"s",1:"")
|
---|
71 | . W " too long, maximum is 245 !! ***",$C(7)
|
---|
72 | . Q
|
---|
73 | S SPNMMAX=SPNMMAX+1,SPNCHOSN(SPNFILE(SPNLEVEL))=""
|
---|
74 | S ^TMP($J,"SPNTXT",1000+SPNMMAX,0)=" ;;"_+SPNTEXT(1)_U_SPNTEXT(2)_U_SPNTEXT(3)_U_SPNTEXT(4)_"|"_SPNTEXT(5)
|
---|
75 | G FLD
|
---|
76 | EXIT ; *** Exit field questions loop
|
---|
77 | Q
|
---|
78 | LIST ; *** Display the fields already chosen
|
---|
79 | N X
|
---|
80 | W !!,"You have already selected the following: (Menu Item # Menu Text)",!
|
---|
81 | S SPN=$Y,SPNMMAX(0)=SPNMMAX#2+SPNMMAX\2
|
---|
82 | F SP=1001:1:SPNMMAX(0)+1000 D Q:SPNQUIT
|
---|
83 | . S SPI=SP,SPNTAB=0 D S SPI=SP+SPNMMAX(0),SPNTAB=40 D
|
---|
84 | .. S X=$P($G(^TMP($J,"SPNTXT",SPI,0)),";;",2,99)
|
---|
85 | .. Q:X="" W:SPNTAB=0 !
|
---|
86 | .. W ?SPNTAB,$S($P(X,U):$J(SPI-1000,2),1:" ")," ",$P(X,U,2)
|
---|
87 | .. Q
|
---|
88 | . I ($Y>(IOSL+SPN-4))!(SPNMMAX(0)+1000=SP) D
|
---|
89 | .. S SPN=$Y K DIR S DIR(0)="E" W ! D ^DIR K DIR S SPNQUIT=$S(Y'>0:1,1:0)
|
---|
90 | .. Q
|
---|
91 | . Q
|
---|
92 | Q
|
---|
93 | CASE(SPN) ; *** Convert text to initial capital letters
|
---|
94 | N X,SP S X=""
|
---|
95 | F SP=1:1:$L(SPN) D
|
---|
96 | . S X(0)=$E(SPN,SP-1),X(1)=$E(SPN,SP)
|
---|
97 | . S X=X_$S(X(0)?.1P:$$U(X(1)),X(0)?1U:$$L(X(1)),X(1)?1U:$$L(X(1)),1:X(1))
|
---|
98 | . Q
|
---|
99 | Q X
|
---|
100 | U(X) Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
101 | L(X) Q $TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
|
---|
102 | ID() ; *** DD identifiers
|
---|
103 | N SPNDD,SPNERR,SPNID S SPNID=""
|
---|
104 | D FIELD^DID(+SPNFILE(SPNLEVEL),+Y,"","SPECIFIER;TYPE","SPNDD","SPNERR")
|
---|
105 | I $O(SPNERR(""))="" D
|
---|
106 | . I SPNDD("SPECIFIER") S SPNID="(multiple)"
|
---|
107 | . I SPNDD("TYPE")="WORD-PROCESSING" S SPNID="("_$$L(SPNDD("TYPE"))_")"
|
---|
108 | . Q
|
---|
109 | Q SPNID
|
---|