1 | SCRPO ;BP-CIOFO/KEITH - Report prompting utilities ; 20 Aug 99 7:46 AM
|
---|
2 | ;;5.3;Scheduling;**177,297**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | DTR(SC,SCDTB,SCDTE) ;Date range prompts
|
---|
5 | ;Input: SC=name of array to return values
|
---|
6 | ; @SC@("DTR","BDT")=begin date (internal^external)
|
---|
7 | ; @SC@("DTR","EDT")=end date (internal^external)
|
---|
8 | ;Input: SCDTB=array to manipulate %DT begin date values (optional)
|
---|
9 | ;Input: SCDTE=array to manipulate %DT end date values (optional)
|
---|
10 | ;Output: '1' for success, '0' otherwise
|
---|
11 | N %DT M %DT=SCDTB W !
|
---|
12 | S:'$L($G(%DT)) %DT="AEPX"
|
---|
13 | I %DT["A" S:'$L($G(%DT("A"))) %DT("A")="Select beginning date: "
|
---|
14 | D ^%DT I Y<1 Q 0
|
---|
15 | S @SC@("DTR","BEGIN")=Y X ^DD("DD") S @SC@("DTR","PBDT")=Y
|
---|
16 | EDT K %DT M %DT=SCDTE W !
|
---|
17 | S:'$L($G(%DT)) %DT="AEPX"
|
---|
18 | I %DT["A" S:'$L($G(%DT("A"))) %DT("A")=" Select ending date: "
|
---|
19 | D ^%DT I Y<1 K SC Q 0
|
---|
20 | I Y<@SC@("DTR","BEGIN") W !!,$C(7),"End date cannot be before begin date!",! G EDT
|
---|
21 | S @SC@("DTR","END")=Y X ^DD("DD") S @SC@("DTR","PEDT")=Y
|
---|
22 | S @SC@("DTR","INCL")=0
|
---|
23 | D XR(.SC,"DTR","Date Range") Q 1
|
---|
24 | ;
|
---|
25 | ATYPE(SC) ;Prompt for assignment types
|
---|
26 | ;Input: SC=array to return values (pass by reference)
|
---|
27 | ; @SC@("ATYPE")=assignment types (internal^external)
|
---|
28 | ;Output: '1' for success, '0' otherwise
|
---|
29 | N DIR,DTOUT,DUOUT
|
---|
30 | S DIR(0)="S^P:PRIMARY CARE ASSIGNMENTS;N:NON-PRIMARY CARE ASSIGNMENTS;B:BOTH PC AND NON-PC"
|
---|
31 | S DIR("A")="Specify the type of assignments to include",DIR("B")="BOTH"
|
---|
32 | W ! D ^DIR Q:$D(DTOUT)!$D(DUOUT) 0
|
---|
33 | S @SC@("ATYPE")=Y_U_Y(0)
|
---|
34 | D XR(.SC,"ATYPE","Type of Assignments") Q 1
|
---|
35 | ;
|
---|
36 | DSUM(SC) ;Prompt for detail or summary
|
---|
37 | ;Input SC=array to return values (pass by reference)
|
---|
38 | ; @SC@("FMT")=format (internal^external)
|
---|
39 | ;Output: '1' for success, '0' otherwise
|
---|
40 | N DIR,DTOUT,DUOUT
|
---|
41 | K DIR S DIR(0)="S^D:DETAIL + SUMMARY;S:SUMMARY ONLY"
|
---|
42 | S DIR("A")="Specify output format",DIR("B")="DETAIL + SUMMARY"
|
---|
43 | W ! D ^DIR Q:$D(DTOUT)!$D(DUOUT) 0
|
---|
44 | S @SC@("FMT")=Y_U_Y(0)
|
---|
45 | D XR(.SC,"FMT","Report Format") Q 1
|
---|
46 | ;
|
---|
47 | LIST(SC,WHAT,SUBH,LIMIT) ;Get list of entries from a file
|
---|
48 | ;Input: SC=array to return values (pass by reference)
|
---|
49 | ; @SC@(WHAT)="ALL" for all entries, or,
|
---|
50 | ; @SC@(WHAT,ifn)=name of record
|
---|
51 | ; @SC@(WHAT,name,ifn)=""
|
---|
52 | ;Input: WHAT=type of selection
|
---|
53 | ; "DIV" for division
|
---|
54 | ; "TEAM" for TEAM
|
---|
55 | ; "ROLE" for STANDARD POSITION
|
---|
56 | ; "POS" for TEAM POSITION
|
---|
57 | ; "PCP" for PC provider (NEW PERSON)
|
---|
58 | ; "ASPR" for assigned provider (NEW PERSON)
|
---|
59 | ; "APR" for associate provider (NEW PERSON)
|
---|
60 | ; "CLINIC" for enrolled clinic (HOSPITAL LOCATION)
|
---|
61 | ;Input: SUBH='1' to display category subheader (optional)
|
---|
62 | ;Input: LIMIT=maximum selections (optional, default 20)
|
---|
63 | ;Output: '1' for success, '0' otherwise
|
---|
64 | ;
|
---|
65 | N SCW,SCI,SCOUT,DIC,X,Y,SCA,SCB,SCQUIT,SCS,DTOUT,DUOUT
|
---|
66 | Q:'$L(WHAT) 0 S:'$G(LIMIT) LIMIT=20 S (SCOUT,SCQUIT)=0
|
---|
67 | F SCI="DIV","TEAM","ROLE","POS","PCP","ASPR","APR","CLINIC" S SCW(SCI)=""
|
---|
68 | Q:'$D(SCW(WHAT)) 0
|
---|
69 | D @WHAT S DIC(0)="AEMQ"
|
---|
70 | I $G(SUBH) D SUBT^SCRPW50("**** "_SCA_" Selection ****")
|
---|
71 | S SCB=$J("Select "_SCA_": ",29),DIC("A")=SCB_"ALL// "
|
---|
72 | I $L($G(SCS)) S DIC("S")=SCS
|
---|
73 | F SCI=1:1:LIMIT D Q:SCOUT!SCQUIT
|
---|
74 | .W ! D ^DIC I $D(DTOUT)!$D(DUOUT) S SCQUIT=1 Q
|
---|
75 | .I SCI=1,X="" W " (ALL)" S @SC@(WHAT)="ALL",SCOUT=1 Q
|
---|
76 | .I X="" S SCOUT=1 Q
|
---|
77 | .I Y>0 S @SC@(WHAT,+Y)=$P(Y,U,2),@SC@(WHAT,$P(Y,U,2),+Y)=""
|
---|
78 | .S DIC("A")=SCB
|
---|
79 | .Q
|
---|
80 | D XR(.SC,WHAT,SCA) Q 'SCQUIT
|
---|
81 | ;
|
---|
82 | DIV S DIC="^DIC(4,",SCA="Institution",SCS="I $D(^SCTM(404.51,""AINST"",+Y))" Q
|
---|
83 | TEAM S DIC="^SCTM(404.51,",SCA="Team" Q
|
---|
84 | ROLE S DIC="^SD(403.46,",SCA="Role" Q
|
---|
85 | POS S DIC="^SCTM(404.57,",SCA="Team Position" Q
|
---|
86 | PCP S DIC="^VA(200,",SCA="PC Provider" Q
|
---|
87 | ASPR S DIC="^VA(200,",SCA="Assigned Provider" Q
|
---|
88 | APR S DIC="^VA(200,",SCA="Associate Provider" Q
|
---|
89 | CLINIC S DIC="^SC(",SCA="Associated Clinic",DIC("S")="I $P(^(0),U,3)=""C""" Q
|
---|
90 | ;
|
---|
91 | SORT(SC,SCEL,SCSP) ;Prompt for optional sort elements
|
---|
92 | ;Input: SC=array to return sort order (pass by reference)
|
---|
93 | ;Input: SCX=comma delimited string of element acronyms where
|
---|
94 | ; 'IN' = INSTITUTION
|
---|
95 | ; 'TM' = TEAM
|
---|
96 | ; 'RO' = ROLE
|
---|
97 | ; 'TP' = TEAM POSITION
|
---|
98 | ; 'PR' = PROVIDER
|
---|
99 | ; 'AC' = ASSOCIATED CLINIC
|
---|
100 | ; 'EC' = ENROLLED CLINIC
|
---|
101 | ; 'PT' = PATIENT
|
---|
102 | ; 'PA' = PATIENT
|
---|
103 | ;Input: SCSP=acronym of last sort to add if not selected (optional)
|
---|
104 | ;Output: '0' for abnormal exit, '1' otherwise
|
---|
105 | ; @SC@("SORT",1,elementacronym)=element
|
---|
106 | ; @SC@("SORT",2,elementacronym)=element, etc.
|
---|
107 | ;
|
---|
108 | N DIR,SCI,SCX,SCY,SCQUIT,SCZ
|
---|
109 | Q:'$L(SCEL)
|
---|
110 | S SCQUIT=0
|
---|
111 | F SCI=1:1:$L(SCEL,",") D
|
---|
112 | .S SCX=$P(SCEL,",",SCI),SCX=$S(SCX="PA":"PT",SCX="DV":"IN",1:SCX),SCY(SCX)=SCI,SCZ=$P($T(@SCX),";;",2)
|
---|
113 | .S SCZ(SCX)=$P(SCZ,U,2),SCX=$P(SCZ,U)
|
---|
114 | .I $L(SCX) S SCX(SCI)=";"_SCX
|
---|
115 | .Q
|
---|
116 | Q:'$O(SCX(""))
|
---|
117 | S SCI=0 D QSORT("Sort output by")
|
---|
118 | I $L($G(SCSP)),$D(SCY(SCSP)) D
|
---|
119 | .S SCI=SCI+1,SCZ=$P($T(@SCSP),";;",2),@SC@("SORT",SCI)=$P(SCZ,":")_U_$P(SCZ,":",2)
|
---|
120 | .Q
|
---|
121 | D XR(.SC,"SORT","Output will be sorted by") Q 'SCQUIT
|
---|
122 | ;
|
---|
123 | QSORT(DIRA) ;Prompt for sort
|
---|
124 | N DTOUT,DUOUT
|
---|
125 | S DIR("A")=DIRA
|
---|
126 | S DIR(0)=$$DIR0() Q:DIR(0)=""
|
---|
127 | D ^DIR I $D(DTOUT)!$D(DUOUT) S SCQUIT=1 Q
|
---|
128 | Q:X=""
|
---|
129 | S SCI=SCI+1,@SC@("SORT",SCI)=$S(Y="IN":"DV",Y="PT":"PA",1:Y)_U_Y(0)_U_SCZ(Y)
|
---|
130 | K SCX(SCY(Y)),SCY(Y) D QSORT("Within "_Y(0)_", sort by")
|
---|
131 | Q
|
---|
132 | ;
|
---|
133 | DIR0() ;Return value for DIR(0)
|
---|
134 | N SCI
|
---|
135 | S SCX="",SCI=0
|
---|
136 | F S SCI=$O(SCX(SCI)) Q:'SCI S SCX=SCX_SCX(SCI)
|
---|
137 | S SCX=$E(SCX,2,999) S:$L(SCX) SCX="SO^"_SCX
|
---|
138 | Q SCX
|
---|
139 | ;
|
---|
140 | DV ;;IN:INSTITUTION^SCDIV
|
---|
141 | IN ;;IN:INSTITUTION^SCDIV
|
---|
142 | TM ;;TM:TEAM^SCTEAM
|
---|
143 | RO ;;RO:ROLE^SCROLE
|
---|
144 | TP ;;TP:TEAM POSITION^SCPOS
|
---|
145 | PR ;;PR:PROVIDER^SCPROV
|
---|
146 | EC ;;EC:ENROLLED CLINIC^SCLINIC
|
---|
147 | AC ;;AC:ASSOCIATED CLINIC^SCLINIC
|
---|
148 | PA ;;PA:PATIENT^SCPAT
|
---|
149 | PT ;;PT:PATIENT^SCPAT
|
---|
150 | ;
|
---|
151 | XR(SC,SUB,VAL) ;Create x-ref for printing parameters
|
---|
152 | ;Input: SC=array to return parameters
|
---|
153 | ;Input: SUB=name of subscript holding parameters being x-ref'd
|
---|
154 | ;Input: VAL=value for item subtitle (optional)
|
---|
155 | ;
|
---|
156 | S @SC@("XR")=$G(@SC@("XR"))+1,@SC@("XR",@SC@("XR"),SUB)=$G(VAL) Q
|
---|
157 | ;
|
---|
158 | PPAR(SC,OK,SCT) ;Print report parameters
|
---|
159 | ;Input: SC=array of report parameters
|
---|
160 | ;Input: OK='1' to prompt for parameter ok (optional)
|
---|
161 | ;Input: SCT=report title
|
---|
162 | ;Output: '1' if ok, '0' otherwise
|
---|
163 | ;
|
---|
164 | N SCL,SCI,SCX,SCOUT,SCLAB,SCF,SCVAL,COL,DTOUT,DUOUT
|
---|
165 | S COL=$S($E(IOST)="C":12,1:38)
|
---|
166 | S (SCI,SCOUT)=0,SCLAB="",SCL=1
|
---|
167 | F S SCI=$O(@SC@("XR",SCI)) Q:'SCI!SCOUT D
|
---|
168 | .S SCX=$O(@SC@("XR",SCI,"")),SCLAB=@SC@("XR",SCI,SCX)
|
---|
169 | .I $E(IOST)="C",SCL>18 D WAIT Q:SCOUT S SCL=0
|
---|
170 | .I $E(IOST)="P",$Y>(IOSL-4) D HDR(.SCT) Q:SCOUT
|
---|
171 | .S SCL=SCL+1 W ! Q:SCX="SPACE"
|
---|
172 | .S SCL=SCL+1 W !?(COL),$J(SCLAB,24),": "
|
---|
173 | .I SCX="DTR" W @SC@("DTR","PBDT")," to ",@SC@("DTR","PEDT") Q
|
---|
174 | .I $G(@SC@(SCX))="ALL" W "ALL" Q
|
---|
175 | .I $D(@SC@(SCX))=1 W $P(@SC@(SCX),U,2) Q
|
---|
176 | .I SCX="SORT" S SCF=0,SCVAL=0 D Q
|
---|
177 | ..F S SCVAL=$O(@SC@(SCX,SCVAL)) Q:'SCVAL!SCOUT D
|
---|
178 | ...I SCF,$E(IOST)="C",SCL>18 D WAIT Q:SCOUT S SCL=0
|
---|
179 | ...I SCF,$E(IOST)="P",$Y>(IOSL-4) D HDR(.SCT) Q:SCOUT
|
---|
180 | ...I SCF W ! S SCL=SCL+1
|
---|
181 | ...W ?(COL+26+$S(SCX="SORT":(SCF*2),1:0)),$P(@SC@(SCX,SCVAL),U,2)
|
---|
182 | ...S SCF=SCF+1
|
---|
183 | ...Q
|
---|
184 | ..Q
|
---|
185 | .S SCF=0,SCVAL=999999999999
|
---|
186 | .F S SCVAL=$O(@SC@(SCX,SCVAL)) Q:SCVAL=""!SCOUT D
|
---|
187 | ..I $E(IOST)="C",SCL>18 D WAIT Q:SCOUT S SCL=0
|
---|
188 | ..I $E(IOST)="P",$Y>(IOSL-4) D HDR(.SCT) Q:SCOUT
|
---|
189 | ..I SCF W ! S SCL=SCL+1
|
---|
190 | ..W ?(COL+26+$S(SCX="SORT":(SCF*2),1:0)),SCVAL
|
---|
191 | ..S SCF=SCF+1
|
---|
192 | ..Q
|
---|
193 | .Q
|
---|
194 | S SCX=1 I $G(OK) N DIR S DIR(0)="Y",DIR("B")="YES",DIR("A")="OK" D
|
---|
195 | .W ! D ^DIR I $D(DTOUT)!$D(DUOUT) S SCX=0 Q
|
---|
196 | .S SCX=Y
|
---|
197 | .Q
|
---|
198 | Q SCX
|
---|
199 | ;
|
---|
200 | WAIT N DIR S DIR(0)="E" W ! D ^DIR S SCOUT=Y'=1 W @IOF Q
|
---|
201 | ;
|
---|
202 | HDR(SCT,SCIOM) ;Print report header
|
---|
203 | ;Input: SCT=array of header lines
|
---|
204 | ;Input: SCIOM=right margin (optional)
|
---|
205 | ;
|
---|
206 | N SCI
|
---|
207 | S:'$G(SCIOM) SCIOM=IOM
|
---|
208 | I $E(IOST)="C",SCFF N DIR S DIR(0)="E" W ! D ^DIR S SCOUT=Y'=1 Q:SCOUT
|
---|
209 | D STOP Q:SCOUT
|
---|
210 | I SCFF!($E(IOST)="C") W $$XY^SCRPW50(IOF,1,0)
|
---|
211 | I $X W $$XY^SCRPW50("",0,0)
|
---|
212 | W SCLINE
|
---|
213 | S SCI=0 F S SCI=$O(SCT(SCI)) Q:'SCI D
|
---|
214 | .W !?(SCIOM-$L(SCT(SCI))\2),SCT(SCI)
|
---|
215 | .Q
|
---|
216 | W !,SCLINE,!,"Date printed: ",SCPNOW,?(SCIOM-6-$L(SCPAGE)),"Page: ",SCPAGE
|
---|
217 | W !,SCLINE S SCFF=1,SCPAGE=SCPAGE+1
|
---|
218 | Q
|
---|
219 | ;
|
---|
220 | STOP ;Check for stop task request
|
---|
221 | S:$D(ZTQUEUED) (SCOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0) Q
|
---|
222 | ;
|
---|
223 | ELIG(DFN) ;Get Primary Eligibility
|
---|
224 | ;Input: DFN=patient ifn
|
---|
225 | N PRIM,PRIM1
|
---|
226 | S PRIM=$P($G(^DPT(DFN,.36)),U) Q:PRIM<1 "[unknown]"
|
---|
227 | S PRIM=$P($G(^DIC(8,PRIM,0)),U,9) Q:PRIM<1 "[unknown]"
|
---|
228 | ;MAS Primary Eligibility Code
|
---|
229 | S PRIM=$P($G(^DIC(8.1,PRIM,0)),U) Q:PRIM="" "[unknown]"
|
---|
230 | S PRIM1=PRIM
|
---|
231 | ;
|
---|
232 | S PRIM=$TR(PRIM,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
233 | I PRIM="NON-SERVICE CONNECTED" S PRIM="NSC"
|
---|
234 | I PRIM["SERVICE CONNECTED" S PRIM=$P(PRIM,"SERVICE CONNECTED")_"SC"_$P(PRIM,"SERVICE CONNECTED",2,999)
|
---|
235 | I PRIM["LESS THAN" S PRIM=$P(PRIM,"LESS THAN")_"<"_$P(PRIM,"LESS THAN",2,999)
|
---|
236 | I PRIM[" TO " S PRIM=$P(PRIM," TO ")_"-"_$P(PRIM," TO ",2,999)
|
---|
237 | I PRIM["%" S PRIM=$TR(PRIM,"%","")
|
---|
238 | S PRIM=$E(PRIM,1,9)
|
---|
239 | Q PRIM1_U_PRIM
|
---|