1 | IBJDI3 ;ALB/CPM - NO EMPLOYER LISTING ; 17-DEC-96
|
---|
2 | ;;2.0;INTEGRATED BILLING;**69,91,98,100,118,123**;21-MAR-94
|
---|
3 | ;
|
---|
4 | EN ; - Option entry point.
|
---|
5 | ;
|
---|
6 | W !!,"This report provides a measure of the number of veteran patients who"
|
---|
7 | W !,"have been identified as being employed, but have no employer on file.",!
|
---|
8 | ;
|
---|
9 | DATE D DATE^IBOUTL I IBBDT=""!(IBEDT="") G ENQ
|
---|
10 | ;
|
---|
11 | ; - Sort by division?
|
---|
12 | S DIR(0)="Y",DIR("B")="NO",DIR("?")="^D DHLP^IBJDI3"
|
---|
13 | S DIR("A")="Do you wish to sort this report by division" W !
|
---|
14 | D ^DIR S IBSORT=+Y I $D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) G ENQ
|
---|
15 | K DIR,DIROUT,DTOUT,DUOUT,DIRUT
|
---|
16 | ;
|
---|
17 | I IBSORT D PSDR^IBODIV G:Y<0 ENQ ; Select division(s).
|
---|
18 | ;
|
---|
19 | ; - Select a detailed or summary report.
|
---|
20 | D DS^IBJD I IBRPT["^" G ENQ
|
---|
21 | ;
|
---|
22 | I IBRPT="D" W !!,"You will need a 132 column printer for this report!"
|
---|
23 | E W !!,"This report only requires an 80 column printer."
|
---|
24 | ;
|
---|
25 | W !!,"Note: This report may take a while to run."
|
---|
26 | W !?6,"You should queue this report to run after normal business hours.",!
|
---|
27 | ;
|
---|
28 | ; - Select a device.
|
---|
29 | S %ZIS="QM" D ^%ZIS G:POP ENQ
|
---|
30 | I $D(IO("Q")) D G ENQ
|
---|
31 | .S ZTRTN="DQ^IBJDI3",ZTDESC="IB - NO EMPLOYER LISTING"
|
---|
32 | .F I="IB*","VAUTD","VAUTD(" S ZTSAVE(I)=""
|
---|
33 | .D ^%ZTLOAD
|
---|
34 | .W !!,$S($D(ZTSK):"This job has been queued. The task number is "_ZTSK_".",1:"Unable to queue this job.")
|
---|
35 | .K ZTSK,IO("Q") D HOME^%ZIS
|
---|
36 | ;
|
---|
37 | U IO
|
---|
38 | ;
|
---|
39 | DQ ; - Tasked entry point.
|
---|
40 | ;
|
---|
41 | I $G(IBXTRACT) D E^IBJDE(3,1) ; Change extract status.
|
---|
42 | ;
|
---|
43 | N IBQUERY,IBQUERY1
|
---|
44 | K IB,^TMP("IBJDI31",$J),^TMP("IBJDI32",$J)
|
---|
45 | S IBC="DEC^NO^OK^TOT",IBQ=0
|
---|
46 | I IBSORT D G INP
|
---|
47 | .S I=0 F S I=$S(VAUTD:$O(^DG(40.8,I)),1:$O(VAUTD(I))) Q:'I D
|
---|
48 | ..S J=$P($G(^DG(40.8,I,0)),U) F K=1:1:4 S IB(J,$P(IBC,U,K))=0
|
---|
49 | S IBDIV="ALL" F I=1:1:4 S IB("ALL",$P(IBC,U,I))=0
|
---|
50 | ;
|
---|
51 | INP ; - Find inpatients treated within the user-specified date range.
|
---|
52 | S IBD=IBBDT-.01 F S IBD=$O(^DGPM("ATT3",IBD)) Q:'IBD!(IBD\1>IBEDT) D Q:IBQ
|
---|
53 | .S IBPM=0 F S IBPM=$O(^DGPM("ATT3",IBD,IBPM)) Q:'IBPM D Q:IBQ
|
---|
54 | ..I IBPM#100=0 S IBQ=$$STOP^IBOUTL("No Employer Listing") Q:IBQ
|
---|
55 | ..S IBPMD=$G(^DGPM(IBPM,0)) Q:'IBPMD S DFN=+$P(IBPMD,U,3) Q:'DFN
|
---|
56 | ..I IBSORT S IBDIV=$$DIV^IBJDI21(1,+$P(IBPMD,U,6)) Q:'$D(IB(IBDIV))
|
---|
57 | ..;
|
---|
58 | ..; - Process patient.
|
---|
59 | ..I '$D(^TMP("IBJDI31",$J,DFN)) D PROC(DFN,"*",.IBQUERY)
|
---|
60 | ;
|
---|
61 | D CLOSE^IBSDU(.IBQUERY) I IBQ G ENQ
|
---|
62 | ;
|
---|
63 | ; - Find outpatients treated within the user-specified date range.
|
---|
64 | D OUTPT^IBJDI21("",IBBDT,IBEDT,"S:IBQ SDSTOP=1 I 'IBQ,$$ENCHK^IBJDI5(Y0) D ENC^IBJDI3(Y0,.IBQUERY1)","No Employer Listing",.IBQ,"IBJDI31",.IBQUERY)
|
---|
65 | D CLOSE^IBSDU(.IBQUERY),CLOSE^IBSDU(.IBQUERY1) I IBQ G ENQ
|
---|
66 | ;
|
---|
67 | ; - Extract summary data.
|
---|
68 | I $G(IBXTRACT) D G ENQ
|
---|
69 | .F X="DEC","NO","OK","TOT" S IB(X)=$G(IB("ALL",X))
|
---|
70 | .D E^IBJDE(3,0)
|
---|
71 | ;
|
---|
72 | ; - Print the reports.
|
---|
73 | S (IBQ,IBPAG)=0 D NOW^%DTC S IBRUN=$$DAT2^IBOUTL(%)
|
---|
74 | S IBDIV="" F S IBDIV=$O(IB(IBDIV)) Q:IBDIV="" D Q:IBQ
|
---|
75 | . D:IBRPT="D" DET I 'IBQ D SUM,PAUSE
|
---|
76 | ;
|
---|
77 | ENQ K ^TMP("IBJDI31",$J),^TMP("IBJDI32",$J)
|
---|
78 | I $D(ZTQUEUED) S ZTREQ="@" G ENQ1
|
---|
79 | ;
|
---|
80 | D ^%ZISC
|
---|
81 | ENQ1 K IB,IBQ,IBBDT,IBEDT,IBRPT,IBC,IBD,IBDN,IBPAG,IBRUN,IBX,IBPER,IBEMP
|
---|
82 | K IBDIV,IBDOD,IBSORT,IBLT,IBDT,IBES,IBDTF,IBPAT,IBXX,IBOE,IBOED,IBPM,IBPMD
|
---|
83 | K VAUTD,DFN,POP,I,J,K,X,X1,X2,Y,%,%ZIS,ZTDESC,ZTRTN,ZTSAVE
|
---|
84 | K DIR,DIROUT,DTOUT,DUOUT,DIRUT
|
---|
85 | Q
|
---|
86 | ;
|
---|
87 | ENC(IBOED,IBQUERY1) ; - Encounter extract.
|
---|
88 | ; IBQUERY1 = the # of the QUERY to use to do the extract.
|
---|
89 | ; Pre-set variables IB array, IBSORT also required.
|
---|
90 | ;
|
---|
91 | S DFN=+$P(IBOED,U,2) I 'DFN Q
|
---|
92 | I IBSORT S IBDIV=$$DIV^IBJDI21(0,+$P(IBOED,U,11)) Q:'$D(IB(IBDIV))
|
---|
93 | D PROC(DFN,"",.IBQUERY1) ; Process patient.
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | PROC(DFN,IBIPC,IBQUERY) ; - Process each specific patient.
|
---|
97 | ; Input: DFN = Pointer to the patient in file #2
|
---|
98 | ; IBIPC = Inpatient treatment marker
|
---|
99 | ; ("*"=Had inpat. treatment, null=No inpat. treatment)
|
---|
100 | ; IBQUERY = The # of the QUERY OBJECT to be used to extract
|
---|
101 | ; outpatient visits. Be sure to close the query object
|
---|
102 | ; when done
|
---|
103 | ;
|
---|
104 | ; Pre-set variables IB array, IBBDT, IBEDT, IBDIV, IBSORT are required.
|
---|
105 | ;
|
---|
106 | I $$TESTP^IBJDI1(DFN) Q ; Test patient.
|
---|
107 | D ELIG^VADPT G:'VAEL(4) PRCQ ; Patient is not a vet.
|
---|
108 | ;
|
---|
109 | ; - Check if patient is deceased; get date of death.
|
---|
110 | S IBDOD=$S(+$G(^DPT(DFN,.35)):^(.35)\1,1:"")
|
---|
111 | I IBDOD S IB(IBDIV,"DEC")=IB(IBDIV,"DEC")+1
|
---|
112 | ;
|
---|
113 | ; - Set patient index and 'total patients' accumulator.
|
---|
114 | S ^TMP("IBJDI31",$J,DFN)="",IB(IBDIV,"TOT")=IB(IBDIV,"TOT")+1
|
---|
115 | ;
|
---|
116 | S IBDN=$G(^DPT(DFN,0)),IBEMP=$G(^(.311)),IBES=$P(IBEMP,U,15)
|
---|
117 | ;
|
---|
118 | ; - Empl. status is null/unknown, employed (full/part), or retired
|
---|
119 | ; AND no employer is specified.
|
---|
120 | I $P(IBEMP,U)="",(IBES=""!("^1^2^5^9^"[("^"_IBES_"^"))) D G PRCQ
|
---|
121 | .S IB(IBDIV,"NO")=IB(IBDIV,"NO")+1 I IBRPT="D" D SET(.IBQUERY)
|
---|
122 | S IB(IBDIV,"OK")=IB(IBDIV,"OK")+1
|
---|
123 | ;
|
---|
124 | PRCQ K VA,VAERR,VAEL
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | SET(IBQUERY) ; - Set up detailed information for pts to appear on the report.
|
---|
128 | ; Input: IBQUERY = The # of the QUERY OBJECT to be used to extract
|
---|
129 | ; outpatient visits
|
---|
130 | ;
|
---|
131 | ; Pre-set variable IBDIV is reqiured.
|
---|
132 | ;
|
---|
133 | ; - Find last treatment date (LTD).
|
---|
134 | S (IBDT,IBLT)=0 F S IBDT=$O(^DGPM("ATID3",DFN,IBDT)) Q:+IBDT=0 D
|
---|
135 | .S IBDTF=9999999.9999999-IBDT\1
|
---|
136 | .S:IBDTF>IBLT IBLT=IBDTF Q:IBDTF<IBBDT!(IBDTF>IBEDT)
|
---|
137 | ;
|
---|
138 | ; - Look through outpatient encounters.
|
---|
139 | D OUTPT^IBJDI21(DFN,IBBDT,IBEDT,"S IBOED=Y0,IBDT=+IBOED,IBDTF=IBDT\1 S:IBDTF>IBLT IBLT=IBDTF","","","",.IBQUERY)
|
---|
140 | ;
|
---|
141 | ; - If current inpatient, set LTD to today.
|
---|
142 | I $G(^DPT(DFN,.105)) S IBLT=DT
|
---|
143 | ;
|
---|
144 | SETC S ^TMP("IBJDI32",$J,IBDIV,$P(IBDN,U)_IBIPC_"@@"_DFN)=$P(IBDN,U,9)_U_IBES_U_IBLT_U_IBDOD
|
---|
145 | Q
|
---|
146 | ;
|
---|
147 | DIV(X) ; - Return division name.
|
---|
148 | Q $P($G(^DG(40.8,X,0)),U)
|
---|
149 | ;
|
---|
150 | DET ; - Print the detailed report.
|
---|
151 | D HDET Q:IBQ
|
---|
152 | I '$D(^TMP("IBJDI32",$J,IBDIV)) W !!,"There were no patients treated in this date range missing an employer." G DETQ
|
---|
153 | ;
|
---|
154 | S IBXX="" F S IBXX=$O(^TMP("IBJDI32",$J,IBDIV,IBXX)) Q:IBXX="" S IBX=^(IBXX) D Q:IBQ
|
---|
155 | .I $Y>(IOSL-4) D PAUSE Q:IBQ D HDET Q:IBQ
|
---|
156 | .W !,$P(IBXX,"@@"),?34,$$SSN($P(IBX,U))
|
---|
157 | .S X=$$EXPAND^IBJD(2,.31115,$P(IBX,U,2)) W ?50,$S(X="":"UNANSWERED",1:X)
|
---|
158 | .W ?72,$$DAT2^IBOUTL($P(IBX,U,3)),?90,$$DAT2^IBOUTL($P(IBX,U,4))
|
---|
159 | ;
|
---|
160 | DETQ I 'IBQ D PAUSE
|
---|
161 | Q
|
---|
162 | ;
|
---|
163 | HDET ; - Write the detail report header.
|
---|
164 | I $E(IOST,1,2)="C-"!(IBPAG) W @IOF,*13
|
---|
165 | S IBPAG=IBPAG+1
|
---|
166 | W "No Employer Listing",$S(IBDIV'="ALL":" for "_IBDIV,1:""),?80,"Run Date: ",IBRUN,?123,"Page: ",IBPAG
|
---|
167 | W !,"Patients without an employer treated in the period ",$$DAT1^IBOUTL(IBBDT)," to ",$$DAT1^IBOUTL(IBEDT)," ('*' = Had inpatient care)"
|
---|
168 | W !,"Patient",?34,"SSN",?50,"Employment Status",?72,"Last Trmt Date",?90,"Date of Death"
|
---|
169 | W !,$$DASH(132),!
|
---|
170 | S IBQ=$$STOP^IBOUTL("No Employer Listing")
|
---|
171 | Q
|
---|
172 | ;
|
---|
173 | SUM ; - Print the summary report.
|
---|
174 | I $E(IOST,1,2)="C-"!(IBPAG) W @IOF,*13
|
---|
175 | S IBPAG=IBPAG+1
|
---|
176 | W !!?30,"NO EMPLOYER LISTING",?71,"Page: ",IBPAG,!
|
---|
177 | I IBDIV'="ALL" W ?(61-$L(IBDIV))\2,"SUMMARY REPORT for ",IBDIV
|
---|
178 | E W ?33,"SUMMARY REPORT"
|
---|
179 | W !!?19,"Patients treated from ",$$DAT1^IBOUTL(IBBDT)," - ",$$DAT1^IBOUTL(IBEDT)
|
---|
180 | W !!?24,"Run Date: ",IBRUN,!?17,$$DASH(45),!!
|
---|
181 | ;
|
---|
182 | S IBPER=$J($S('IB(IBDIV,"TOT"):0,1:IB(IBDIV,"NO")/IB(IBDIV,"TOT")*100),0,2)
|
---|
183 | W ?24,"Number of Patients Treated:",?53,$J(IB(IBDIV,"TOT"),5)
|
---|
184 | W !?23,"Number of Deceased Patients:",?53,$J(IB(IBDIV,"DEC"),5),?62,"(",$J($S('IB(IBDIV,"DEC"):0,1:IB(IBDIV,"DEC")/IB(IBDIV,"TOT")*100),0,2),"%)"
|
---|
185 | W !?3,"Number of Patients Employed without an Employer:",?53,$J(IB(IBDIV,"NO"),5),$S(IB(IBDIV,"NO"):"*",1:""),?62,"(",IBPER,"%)"
|
---|
186 | W !," Number of Patients Unemployed or with an Employer:",?53,$J(IB(IBDIV,"OK"),5),?62,"(",$J($S('IBPER:0,1:100-IBPER),0,2),"%)"
|
---|
187 | I IB(IBDIV,"NO") D
|
---|
188 | .W !!!!!?2,"*This is the total number of veterans who have no employer on file, but"
|
---|
189 | .W !,?3,"have an employment status of Full-Time, Part-Time, Retired, Unknown or",!?3,"null."
|
---|
190 | Q
|
---|
191 | ;
|
---|
192 | DASH(X) ; - Return a dashed line.
|
---|
193 | Q $TR($J("",X)," ","=")
|
---|
194 | ;
|
---|
195 | PAUSE ; - Page break.
|
---|
196 | I $E(IOST,1,2)'="C-" Q
|
---|
197 | N IBX,DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y
|
---|
198 | F IBX=$Y:1:(IOSL-3) W !
|
---|
199 | S DIR(0)="E" D ^DIR I $D(DIRUT)!($D(DUOUT)) S IBQ=1
|
---|
200 | Q
|
---|
201 | ;
|
---|
202 | SSN(X) ; - Format the SSN.
|
---|
203 | Q $S(X]"":$E(X,1,3)_"-"_$E(X,4,5)_"-"_$E(X,6,10),1:"")
|
---|
204 | ;
|
---|
205 | DHLP ; - 'Sort by division' prompt.
|
---|
206 | W !!,"Select: '<CR>' to print the trend report without regard to"
|
---|
207 | W !?15,"division"
|
---|
208 | W !?11,"'Y' to select those divisions for which a separate"
|
---|
209 | W !?15,"trend report should be created",!?11,"'^' to quit"
|
---|
210 | Q
|
---|