1 | GMTSRS2 ; SLC/KER - Selection Items Resequence ; 02/11/2003 [6/13/03 10:30am]
|
---|
2 | ;;2.7;Health Summary;**62**;Oct 20, 1995
|
---|
3 | ;
|
---|
4 | ; External References
|
---|
5 | ; DBIA 10076 ^XUSEC(
|
---|
6 | ; DBIA 10076 ^XUSEC("GMTSMGR"
|
---|
7 | ; DBIA 10026 ^DIR
|
---|
8 | ; DBIA 10006 ^DIC (file #142)
|
---|
9 | ; DBIA 2054 $$CREF^DILF
|
---|
10 | ; DBIA 10013 IX1^DIK
|
---|
11 | ;
|
---|
12 | ; This routine will resequence the selection items (sub-file
|
---|
13 | ; 142.14) of a Health Component in the structure (sub-file
|
---|
14 | ; 142.01) of a Health Summary Type (file 142)
|
---|
15 | ;
|
---|
16 | EN ; Main Entry Point
|
---|
17 | N DA,GMTST,GMTSS,GMTSERR,X,Y D LKT Q:+Y'>0 S GMTST=+Y D LKS Q:+Y'>0 S GMTSS=+Y
|
---|
18 | S DA(2)=GMTST,DA(1)=GMTSS D RSI
|
---|
19 | Q
|
---|
20 | RSI ; Resequence Selection Items
|
---|
21 | N ARY,INA,OPA,X,Y,DIC,DIK,DIR,DIROUT,DIRUT,DTOUT,DUOUT,GMTSO,GMTS1
|
---|
22 | N GMTSAC,GMTSAI,GMTSC,GMTSCHG,GMTSCOL,GMTSERR,GMTSF,GMTSHDR,GMTSI
|
---|
23 | N GMTSI1,GMTSI2,GMTSIN,GMTSINM,GMTSKEY,GMTSLOCK,GMTSMAX
|
---|
24 | N GMTSMGR,GMTSO,GMTSON,GMTSOP,GMTSPIE,GMTSRO,GMTSROOT,GMTSS
|
---|
25 | N GMTST,GMTSU,GMTSVAL,GMTSY W ! K ARY,INA,OPA
|
---|
26 | D INA^GMTSRS2B(DA(2),DA(1),.ARY)
|
---|
27 | S GMTSINM=$$MAX(.ARY)
|
---|
28 | I +GMTSINM'>0 D Q
|
---|
29 | . I '$D(GMTSRO)!($D(GMTSRO)&(+($G(GMTSRO))>0)) W !,"Can not resequence, no selection items found."
|
---|
30 | I +GMTSINM'>1 I '$D(GMTSRO)!($D(GMTSRO)&(+($G(GMTSRO))>0)) W !,"Resequencing not required (1 item)"
|
---|
31 | F D RESEQ(.ARY) Q:'$D(ARY)
|
---|
32 | S GMTSMAX=$$MAX(.OPA)
|
---|
33 | I +GMTSINM'=+GMTSMAX I '$D(GMTSRO)!($D(GMTSRO)&(+($G(GMTSRO))>0)) W !,"Selection items not resequenced (sequence not fully specified)" Q
|
---|
34 | D:+GMTSMAX>0 VER(.INA,.OPA,DA(2),DA(1))
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | RESEQ(ARY) ; Resequence - .ARY
|
---|
38 | N GMTSNXT,GMTSI,GMTSIN,GMTSOP,GMTS0,GMTS1,GMTSAC,GMTSAI,GMTSMAX S GMTSMAX=$$MAX(.ARY)
|
---|
39 | S (GMTSAI,GMTSAC)=0 F S GMTSAI=$O(ARY(GMTSAI)) Q:+GMTSAI=0 S GMTSAC=+($G(GMTSAC))+1
|
---|
40 | D RES^GMTSRS2B(.ARY) S (GMTSAI,GMTSAC)=0 F S GMTSAI=$O(ARY(GMTSAI)) Q:+GMTSAI=0 S GMTSAC=+($G(GMTSAC))+1
|
---|
41 | I '$D(GMTSRO)!($D(GMTSRO)&(+($G(GMTSRO))>0))&(GMTSMAX>72) W !,"Resequence selection items:",!
|
---|
42 | I '$D(GMTSRO)!($D(GMTSRO)&(+($G(GMTSRO))>0))&(GMTSMAX>72) D DIS^GMTSRS2B(.ARY)
|
---|
43 | I '$D(GMTSRO)!($D(GMTSRO)&(+($G(GMTSRO))>0))&(GMTSMAX'>72) D
|
---|
44 | . N GMTSROOT,GMTSNODE,GMTSPIE,GMTSHDR,GMTSCOL S ARY(0)=$G(GMTSMAX)
|
---|
45 | . S GMTSROOT="ARY",GMTSHDR="Resequence selection items:",GMTSNODE=1,GMTSPIE=2
|
---|
46 | . S GMTSCOL=1 S:+GMTSMAX>18 GMTSCOL=2 S:+GMTSMAX>36 GMTSCOL=3 S:+GMTSMAX>54 GMTSCOL=4 S:+GMTSMAX>72 GMTSCOL=5 S:+GMTSMAX>90 GMTSCOL=6
|
---|
47 | . D EN^GMTSRS4(GMTSROOT,GMTSNODE,GMTSPIE,GMTSHDR,GMTSCOL)
|
---|
48 | S GMTSNXT=$$ASK(.ARY,.GMTSNXT) F Q:$E(GMTSNXT,$L(GMTSNXT))'="," S GMTSNXT=$E(GMTSNXT,1,($L(GMTSNXT)-1))
|
---|
49 | K:+GMTSNXT'>0 ARY Q:+GMTSNXT'>0
|
---|
50 | S GMTSI=0 F GMTSI=1:1 Q:+($P(GMTSNXT,",",GMTSI))'>0 D
|
---|
51 | . N GMTSIN,GMTSOP,GMTS0,GMTS1 S GMTSIN=+($P(GMTSNXT,",",GMTSI))
|
---|
52 | . S GMTS0=$G(ARY(GMTSIN)) S GMTS1=$G(ARY(GMTSIN,1))
|
---|
53 | . K ARY(GMTSIN) Q:'$L(GMTS0) Q:'$L(GMTS1)
|
---|
54 | . S GMTSOP=+($O(OPA(" "),-1))+1,OPA(GMTSOP)=GMTS0
|
---|
55 | . S OPA(GMTSOP,1)=GMTS1 K ARY(GMTSIN)
|
---|
56 | S GMTSA1=1
|
---|
57 | F S GMTSNXT=$G(GMTSNXT(GMTSA1)) Q:+$G(GMTSNXT)=0 D
|
---|
58 | .S GMTSI=0 F GMTSI=1:1 Q:+($P(GMTSNXT,",",GMTSI))'>0 D
|
---|
59 | .. N GMTSIN,GMTSOP,GMTS0,GMTS1 S GMTSIN=+($P(GMTSNXT,",",GMTSI))
|
---|
60 | .. S GMTS0=$G(ARY(GMTSIN)) S GMTS1=$G(ARY(GMTSIN,1))
|
---|
61 | .. K ARY(GMTSIN) Q:'$L(GMTS0) Q:'$L(GMTS1)
|
---|
62 | .. S GMTSOP=+($O(OPA(" "),-1))+1,OPA(GMTSOP)=GMTS0
|
---|
63 | .. S OPA(GMTSOP,1)=GMTS1 K ARY(GMTSIN)
|
---|
64 | .S GMTSA1=GMTSA1+1
|
---|
65 | Q
|
---|
66 | ;
|
---|
67 | ASK(ARY,NEXT,X) ; Ask for order of Selection Items
|
---|
68 | N DIR,DTOUT,DUOUT,DIRUT,DIROUT,GMTSMAX,Y,GMTSF,GMTSI S GMTSMAX=$$MAX(.ARY) Q:+GMTSMAX=1 1 Q:+GMTSMAX'>0 ""
|
---|
69 | F GMTSI=1:1:GMTSMAX S GMTSF=$G(GMTSF)_GMTSI_","
|
---|
70 | I $D(GMTSRO),+GMTSRO=0 S X=GMTSF Q X
|
---|
71 | S DIR(0)="LAO^1:"_GMTSMAX_":0",DIR("A")="Select next item(s)" S:GMTSMAX>1 DIR("A")=DIR("A")_" 1-"_GMTSMAX
|
---|
72 | S DIR("?",1)="Specify a set of Selection Items: eg 2-9,1,10-15"
|
---|
73 | S DIR("?",2)=" You must use every Selection Item in the set"
|
---|
74 | S DIR("?",3)=" For example, if there are 20 Selection Items"
|
---|
75 | S DIR("?",4)=" every number from 1 to 20 must be included"
|
---|
76 | S DIR("?")=" in the resulting set. eg 10-20,5-9,1-4"
|
---|
77 | S DIR("A")=DIR("A")_": ",DIR("B")=1 W ! D ^DIR
|
---|
78 | I $D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) K ARY S X=-1 Q X
|
---|
79 | M NEXT=Y
|
---|
80 | S X=Y Q X
|
---|
81 | ;
|
---|
82 | MAX(ARY,X) ; Maximum # Items
|
---|
83 | N GMTSI S (GMTSI,X)=0 F S GMTSI=$O(ARY(GMTSI)) Q:+GMTSI=0 S X=X+1
|
---|
84 | S ARY(0)=X Q X
|
---|
85 | ;
|
---|
86 | VER(INA,OPA,GMTST,GMTSS) ; Verify Resequence
|
---|
87 | N GMTSI2,GMTSI1,GMTSI,GMTSC,GMTSON,GMTSNN,GMTSCHG,GMTSVAL,GMTSTR,GMTSCT,X,Y,DIR,DTOUT,DUOUT,DIRUT,DIROUT
|
---|
88 | S GMTSI2=+($G(GMTST)) Q:+GMTSI2=0 S GMTSI1=+($G(GMTSS)) Q:+GMTSI1=0
|
---|
89 | I $D(GMTSRO),+GMTSRO=0 G VER2
|
---|
90 | S (GMTSI,GMTSC,GMTSCHG)=0 F S GMTSI=$O(INA(GMTSI)) Q:+GMTSI=0 D
|
---|
91 | . S GMTSON=$P($G(INA(GMTSI,1)),"^",2)
|
---|
92 | . S GMTSNN=$P($G(OPA(GMTSI,1)),"^",2) S:GMTSON'=GMTSNN GMTSCHG=1
|
---|
93 | I 'GMTSCHG I '$D(GMTSRO)!($D(GMTSRO)&(+($G(GMTSRO))>0)) W !,"No changes in the Selection Item sequence." S GMTSRO=0 G VER2
|
---|
94 | S GMTSCT=0 F S GMTSI=$O(INA(GMTSI)) Q:+GMTSI=0 D
|
---|
95 | . S GMTSON=$P($G(INA(GMTSI,1)),"^",2),GMTSNN=$P($G(OPA(GMTSI,1)),"^",2) Q:'$L(GMTSON) Q:'$L(GMTSNN)
|
---|
96 | . S GMTSC=GMTSC+1 D:GMTSC=1 HDR
|
---|
97 | . S GMTSCT=GMTSCT+1 D:GMTSCT>22 CONT S:GMTSCT>22 GMTSCT=0
|
---|
98 | . S GMTSON=$E(GMTSON,1,31)_" " F Q:$L(GMTSON)>30 S GMTSON=GMTSON_"."
|
---|
99 | . S GMTSTR=$J(GMTSC,5)_" "_GMTSON W !,GMTSTR W ?42,$E(GMTSNN,1,36)
|
---|
100 | S DIR(0)="YAO",DIR("A")="Is this Correct: (Y/N) ",DIR("B")="Y" W ! D ^DIR I +($G(Y))'>0 W !,"Selection items not resequenced" Q
|
---|
101 | VER2 ; Verified
|
---|
102 | K ^GMT(142,GMTSI2,1,GMTSI1,1)
|
---|
103 | S (GMTSI,GMTSC)=0 F S GMTSI=$O(OPA(GMTSI)) Q:+GMTSI=0 D
|
---|
104 | . S GMTSVAL=$G(OPA(GMTSI)) Q:'$L(GMTSVAL) S GMTSC=GMTSC+1
|
---|
105 | . S ^GMT(142,GMTSI2,1,GMTSI1,1,GMTSC,0)=GMTSVAL
|
---|
106 | N DIK,DA S DA=GMTSI2,DIK="^GMT(142," D IX1^DIK
|
---|
107 | S ^GMT(142,GMTSI2,1,GMTSI1,1,0)="^142.14VA^"_GMTSC_"^"_GMTSC
|
---|
108 | Q
|
---|
109 | ;
|
---|
110 | CONT ; Continue
|
---|
111 | N DIC,DIK,DIR,DIROUT,DIRUT,DTOUT,DUOUT
|
---|
112 | S DIR(0)="EA",DIR("A")=" Press <return> to continue. " W ! D ^DIR
|
---|
113 | S GMTSI=+($G(GMTSI)) D:+($O(INA(GMTSI)))>0 HDR
|
---|
114 | Q
|
---|
115 | HDR ; Header
|
---|
116 | W !!,?8,"Old Sequence",?42,"New Sequence",!,?8,"------------------------",?42,"------------------------" S GMTSCT=3
|
---|
117 | Q
|
---|
118 | LKT ; Lookup HS Type
|
---|
119 | N DIC,DIR,DTOUT,DUOUT,DIRUT,DIROUT,GMTSERR
|
---|
120 | W !,"Resequence the Selection Items of a Health Summary Type.",!
|
---|
121 | ;
|
---|
122 | LKT2 ; Re-prompt
|
---|
123 | S GMTSERR=0,DIC="^GMT(142,",DIC("S")="I +($$ST^GMTSRS2)>0",DIC(0)="AEMQZF"
|
---|
124 | S DIC("A")="Select a Health Summary Type: "
|
---|
125 | D ^DIC I $D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) S Y=-1 Q
|
---|
126 | I +($G(GMTSERR))>0 D DTE(+($G(GMTSERR))) G LKT2
|
---|
127 | I +Y>0 D
|
---|
128 | . N X,DIC S X=$P(Y,"^",2),DIC="^GMT(142,",DIC(0)="M" D ^DIC
|
---|
129 | Q
|
---|
130 | ;
|
---|
131 | ST(X) ; Screen for Type
|
---|
132 | N GMTSY,GMTSO,GMTSS,GMTSU,GMTSKEY,GMTSLOCK,GMTSN0,GMTSMGR
|
---|
133 | S GMTSO=0,GMTSY=+($G(Y)) S:+GMTSY'>0 GMTSERR=1 Q:+GMTSY'>0 1
|
---|
134 | S GMTSN0=$G(^GMT(142,+GMTSY,0)) S:'$L(GMTSN0) GMTSERR=2 Q:'$L(GMTSN0) 1
|
---|
135 | S GMTSKEY=$P(GMTSN0,"^",2),GMTSU=$P(GMTSN0,"^",3)
|
---|
136 | S GMTSMGR=$S($D(^XUSEC("GMTSMGR",+($G(DUZ)))):1,1:0) S GMTSLOCK=0
|
---|
137 | S:$L(GMTSKEY) GMTSLOCK=$S($D(^XUSEC(GMTSKEY,+($G(DUZ)))):0,1:1)
|
---|
138 | S:$P(GMTSN0,"^",1)="GMTS HS ADHOC OPTION" GMTSERR=3 Q:$P(GMTSN0,"^",1)="GMTS HS ADHOC OPTION" 1
|
---|
139 | S:+($G(^GMT(142,+GMTSY,"VA")))>0 GMTSERR=6 Q:+($G(^GMT(142,+GMTSY,"VA")))>0 1
|
---|
140 | S (GMTSO,GMTSS)=0 F S GMTSS=$O(^GMT(142,+GMTSY,1,GMTSS)) Q:+GMTSS=0 D Q:GMTSO>1
|
---|
141 | . Q:'$D(^GMT(142,+GMTSY,1,GMTSS,1,"B")) N GMTSI S GMTSI=0
|
---|
142 | . F S GMTSI=$O(^GMT(142,+GMTSY,1,GMTSS,1,GMTSI)) Q:+GMTSI=0 D Q:+GMTSO>1
|
---|
143 | . . S GMTSO=+($G(GMTSO))+1
|
---|
144 | S X=GMTSO S:+X'>0 GMTSERR=7 S:+X=1 GMTSERR=8
|
---|
145 | Q 1
|
---|
146 | DTE(X) ; Display Type Error
|
---|
147 | I +($G(X))=1 W !!," No Health Summary Type selected.",! Q
|
---|
148 | I +($G(X))=2 W !!," Health Summary Type not found.",! Q
|
---|
149 | I +($G(X))=3 W !!," Can not resequence AD HOC Health Summary Type.",! Q
|
---|
150 | I +($G(X))=4 W !!," Health Summary Type LOCKED",! Q
|
---|
151 | I +($G(X))=5 W !!," Can not resequence a Health Summary Type you do not own.",! Q
|
---|
152 | I +($G(X))=6 W !!," Can not resequence a Nationally exported Health Summary Type.",! Q
|
---|
153 | I +($G(X))=7 W !!," Health Summary Type does not have selection items." D FMT Q
|
---|
154 | I +($G(X))=8 W !!," Can not resequence, selected Health Summary Type only has",!," one (1) selection item.",! Q
|
---|
155 | Q
|
---|
156 | FMT ; Format of Type
|
---|
157 | W !!," <Health Summary Type>"
|
---|
158 | W !," <Health Summary Commponent> i.e., 'PCE HEALTH FACTORS SELECTED'"
|
---|
159 | W !," <Selection Items> i.e., TOBACCO USE",!
|
---|
160 | Q
|
---|
161 | LKS ; Lookup HS Component Structure
|
---|
162 | Q:+($G(GMTST))'>0
|
---|
163 | N DIC,DIR,DTOUT,DUOUT,DIRUT,DIROUT,GMTSERR,DA
|
---|
164 | LKS2 ; Re-prompt for Component
|
---|
165 | S GMTSERR=0,DA(1)=+($G(GMTST)),DIC="^GMT(142,"_DA(1)_",1,"
|
---|
166 | S DIC("S")="I +($$SS^GMTSRS2)>0",DIC(0)="AEMQZF"
|
---|
167 | S DIC("A")="Select a Health Summary Component: "
|
---|
168 | D ^DIC I $D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) S Y=-1 Q
|
---|
169 | I +($G(GMTSERR))>0 D DCE(+($G(GMTSERR))) G LKS2
|
---|
170 | I +Y>0 D
|
---|
171 | . N X,DIC S X=$P(Y,"^",2),DIC="^GMT(142,"_DA(1)_",1,",DIC(0)="M" D ^DIC
|
---|
172 | Q
|
---|
173 | SS(X) ; Screen for Structure
|
---|
174 | S GMTST=+($G(GMTST)) Q:+GMTST'>0 0
|
---|
175 | N GMTSY,GMTSI,GMTSO,GMTSS,GMTSU,GMTSKEY,GMTSLOCK,GMTSN0,GMTSMGR
|
---|
176 | S GMTSO=0,GMTSY=+($G(Y)) S:+GMTSY'>0 GMTSERR=1 Q:+GMTSY'>0 1
|
---|
177 | S GMTSN0=$G(^GMT(142,+GMTST,1,+GMTSY,0)) S:'$L(GMTSN0) GMTSERR=2 Q:'$L(GMTSN0) 1
|
---|
178 | S:'$D(^GMT(142,GMTST,1,+GMTSY,1,"B")) GMTSERR=3 Q:'$D(^GMT(142,GMTST,1,+GMTSY,1,"B"))
|
---|
179 | S (GMTSO,GMTSI)=0
|
---|
180 | F S GMTSI=$O(^GMT(142,GMTST,1,+GMTSY,1,GMTSI)) Q:+GMTSI=0 D Q:+GMTSO>1
|
---|
181 | . S GMTSO=+($G(GMTSO))+1
|
---|
182 | S X=GMTSO S:+X'>0 GMTSERR=3 S:+X=1 GMTSERR=4
|
---|
183 | Q 1
|
---|
184 | DCE(X) ; Display Component Error
|
---|
185 | I +($G(X))=1 W !!," No Health Summary Component selected.",! Q
|
---|
186 | I +($G(X))=2 W !!," Health Summary Component not found.",! Q
|
---|
187 | I +($G(X))=3 W !!," Health Summary Component does not have selection items." D FMT Q
|
---|
188 | I +($G(X))=4 W !!," Can not resequence, selected Health Summary Component ",!," only has one (1) selection item.",! Q
|
---|
189 | Q 1
|
---|