1 | IBATOP ;ALB/CPM-TRANSFER PRICING PATIENT LISTING ;21-MAR-99
|
---|
2 | ;;2.0;INTEGRATED BILLING;**115,153,183,249**;21-MAR-94
|
---|
3 | ;
|
---|
4 | EN ; Option entry point.
|
---|
5 | ;
|
---|
6 | W !!,"This report creates a listing of all Transfer Pricing patients for"
|
---|
7 | W !,"specific networks or facilities. Please enter all applicable networks"
|
---|
8 | W !,"and facilities, specifying networks by VISN (i.e., 'VISN 1').",!
|
---|
9 | ;
|
---|
10 | ; - allow entry of network/facilities; quit if none entered
|
---|
11 | Q:$$FAC^IBATUTL
|
---|
12 | ;
|
---|
13 | ; - set flag to determine if all facilities were entered
|
---|
14 | S IBALL='$D(IBFAC)
|
---|
15 | ;
|
---|
16 | W !!,"This report requires only an 80 column printer.",!
|
---|
17 | ;
|
---|
18 | ; - select a device
|
---|
19 | S %ZIS="QM" D ^%ZIS I POP G ENQ
|
---|
20 | I $D(IO("Q")) D G ENQ
|
---|
21 | .S ZTRTN="DQ^IBATOP",ZTDESC="IB - TRANSFER PRICING PATIENT LISTING"
|
---|
22 | .S ZTSAVE("IBALL")="" I $D(IBFAC) S ZTSAVE("IBFAC(")=""
|
---|
23 | .D ^%ZTLOAD
|
---|
24 | .W !!,$S($D(ZTSK):"This job has been queued. The task number is "_ZTSK_".",1:"Unable to queue this job.")
|
---|
25 | .K ZTSK,IO("Q") D HOME^%ZIS
|
---|
26 | ;
|
---|
27 | U IO
|
---|
28 | ;
|
---|
29 | DQ ; Tasked entry point.
|
---|
30 | ;
|
---|
31 | K ^TMP("IBATOP",$J),IBARR,IBFACN,^TMP($J,"SDAMA301"),^TMP("IBDFN",$J)
|
---|
32 | N IBARRAY,IBCOUNT,IBNDT
|
---|
33 | ;
|
---|
34 | ; - process the entire file if all patients were selected
|
---|
35 | I IBALL D G PRINT
|
---|
36 | .S DFN=0 F S DFN=$O(^IBAT(351.6,DFN)) Q:'DFN S IBD=$G(^(DFN,0)) D
|
---|
37 | ..;
|
---|
38 | ..; - get the enrolled facility and find the associated network
|
---|
39 | ..S IBSTN=+$$PPF^IBATUTL(DFN)
|
---|
40 | ..;S IBSTN=+$P(IBD,"^",3)
|
---|
41 | ..I '$D(IBARR(IBSTN)) D
|
---|
42 | ...N X,Y
|
---|
43 | ...S X=$$VISN^IBATUTL(IBSTN),Y=$$INST^IBATUTL(IBSTN)
|
---|
44 | ...S:$P(Y,"^",2)="" $P(Y,"^",2)="<No Sta. #>"
|
---|
45 | ...S IBARR(IBSTN)=+$P($P(X,"^",2)," ",2)_"^"_Y
|
---|
46 | ...S IBFACN(IBSTN)=Y
|
---|
47 | ..;
|
---|
48 | ..; - set patient information
|
---|
49 | ..D SET(+IBARR(IBSTN),IBSTN,DFN)
|
---|
50 | ;
|
---|
51 | ; - process patients from selected networks/facilities
|
---|
52 | S IBX="" F S IBX=$O(IBFAC(IBX)) Q:IBX="" D
|
---|
53 | .S IBSTN="" F S IBSTN=$O(IBFAC(IBX,"C",IBSTN)) Q:IBSTN="" D
|
---|
54 | ..;
|
---|
55 | ..; - get facility/network information
|
---|
56 | ..S IBNET=+$P($P($$VISN^IBATUTL(IBSTN),"^",2)," ",2)
|
---|
57 | ..S IBY=$$INST^IBATUTL(IBSTN)
|
---|
58 | ..S:$P(IBY,"^",2)="" $P(IBY,"^",2)="<No Sta. #>"
|
---|
59 | ..S IBFACN(IBSTN)=IBY
|
---|
60 | ..;
|
---|
61 | ..; - find all patients from the specific facility
|
---|
62 | ..S DFN=0 F S DFN=$O(^IBAT(351.6,"AD",IBSTN,DFN)) Q:'DFN D
|
---|
63 | ...D SET(IBNET,IBSTN,DFN)
|
---|
64 | ;
|
---|
65 | PRINT ;
|
---|
66 | ; now call scheduling to look up future appts
|
---|
67 | S IBARRAY(1)=$$NOW^XLFDT_";9999999"
|
---|
68 | S IBARRAY(3)="R;I;NT"
|
---|
69 | S IBARRAY(4)="^TMP(""IBDFN"",$J,"
|
---|
70 | S IBARRAY("SORT")="P"
|
---|
71 | S IBARRAY("FLDS")=1
|
---|
72 | S IBCOUNT=$$SDAPI^SDAMA301(.IBARRAY)
|
---|
73 | ;
|
---|
74 | ; Print the report.
|
---|
75 | ;
|
---|
76 | S (IBPAG,IBQ)=0 D NOW^%DTC S IBRUN=$$DAT2^IBOUTL(%)
|
---|
77 | ;
|
---|
78 | I '$D(^TMP("IBATOP",$J)) D HDR(0) W !!!,"There are no Transfer Pricing patients for the selected networks/facilities." G ENQ
|
---|
79 | ;
|
---|
80 | S IBNET="" F S IBNET=$O(^TMP("IBATOP",$J,IBNET)) Q:IBNET=""!(IBQ) D
|
---|
81 | .D PAUSE:IBPAG,HDR(IBNET)
|
---|
82 | .S IBSTN="" F S IBSTN=$O(^TMP("IBATOP",$J,IBNET,IBSTN)) Q:IBSTN=""!(IBQ) D
|
---|
83 | ..;
|
---|
84 | ..I $Y>(IOSL-4) D PAUSE Q:IBQ D HDR(IBNET)
|
---|
85 | ..D DISFAC(IBSTN)
|
---|
86 | ..;
|
---|
87 | ..S IBNAM="" F S IBNAM=$O(^TMP("IBATOP",$J,IBNET,IBSTN,IBNAM)) Q:IBNAM=""!(IBQ) S IBXX=$G(^(IBNAM)) D
|
---|
88 | ...;
|
---|
89 | ...I $Y>(IOSL-2) D PAUSE Q:IBQ D HDR(IBNET),DISFAC(IBSTN)
|
---|
90 | ...;
|
---|
91 | ...W !,$E($P(IBNAM,"@@"),1,20)," (",$P(IBXX,"^"),")"
|
---|
92 | ...W ?28,$E($P(IBXX,"^",2),1,19),?49,$P(IBXX,"^",3),?55,$P(IBXX,"^",4)
|
---|
93 | ...W ?61,$S($P(IBXX,"^",5):$$DAT1^IBOUTL($P(IBXX,"^",5)),1:"")
|
---|
94 | ...S IBNDT=$O(^TMP($J,"SDAMA301",$P(IBNAM,"@@",2),0))
|
---|
95 | ...I IBNDT S $P(IBXX,"^",6)=$S('$P(IBXX,"^",6):IBNDT,IBNDT<$P(IBXX,"^",6):IBNDT,1:$P(IBXX,"^",6))
|
---|
96 | ...W ?71,$S($P(IBXX,"^",6):$$DAT1^IBOUTL($P(IBXX,"^",6)),1:"")
|
---|
97 | ;
|
---|
98 | I 'IBQ D PAUSE
|
---|
99 | ;
|
---|
100 | ENQ K ^TMP("IBATOP",$J)
|
---|
101 | I $D(ZTQUEUED) S ZTREQ="@" G ENQ1
|
---|
102 | ;
|
---|
103 | D ^%ZISC
|
---|
104 | ENQ1 K IBPAG,IBD,IBQ,IBRUN,IBNET,IBSTN,IBNAM,IBXX,IBY
|
---|
105 | K IBFAC,IBFACN,IBARR,IBALL,IBX,DFN,POP,X,Y,SDCNT
|
---|
106 | Q
|
---|
107 | ;
|
---|
108 | ;
|
---|
109 | SET(IBNET,IBSTA,DFN) ; Create the temporary sort file.
|
---|
110 | ; Input: IBNET -- The network/VISN number
|
---|
111 | ; IBSTA -- The Station number
|
---|
112 | ; DFN -- Pointer to the patient in file #2
|
---|
113 | ;
|
---|
114 | N IBDFN,IBINS,IBMT,IBTXMT,VAEL,VAERR
|
---|
115 | ;
|
---|
116 | S IBDFN=$$PT^IBEFUNC(DFN)
|
---|
117 | S IBINS=$$INSURED^IBCNS1(DFN),IBMT=$P($$LST^DGMTU(DFN),"^",4)
|
---|
118 | S IBMT=$S(IBMT="C":"YES",IBMT="G":"GMT",IBMT="P":"PEN",IBMT="R":"REQ",1:"NO")
|
---|
119 | S IBTXMT=$$TXMT(DFN)
|
---|
120 | D ELIG^VADPT
|
---|
121 | ;
|
---|
122 | ; - set all patients to be included in array for next appt.
|
---|
123 | I $$GETICN^MPIF001(DFN)>0 S ^TMP("IBDFN",$J,DFN)=""
|
---|
124 | ;
|
---|
125 | ; - set all patient data into the temporary file
|
---|
126 | S ^TMP("IBATOP",$J,IBNET,IBSTA,$P(IBDFN,"^")_"@@"_DFN)=$P(IBDFN,"^",3)_"^"_$P(VAEL(1),"^",2)_"^"_IBMT_"^"_$S(IBINS:"YES",1:"NO")_"^"_IBTXMT
|
---|
127 | Q
|
---|
128 | ;
|
---|
129 | TXMT(DFN) ; Find the patient's last treatment date and next sched date
|
---|
130 | ; Input: DFN -- Pointer to the patient in file #2
|
---|
131 | ; Output: 1^2, where
|
---|
132 | ; 1 => last treatment date, or null
|
---|
133 | ; 2 => next scheduled treatment date, or null
|
---|
134 | ; (not including scheduling)
|
---|
135 | ;
|
---|
136 | N IBDT,IBLT,IBNEXT,IBQ,X,X1,X2
|
---|
137 | S (IBLT,IBNEXT)=""
|
---|
138 | ;
|
---|
139 | ; - if current inpatient, set last treatment date to today
|
---|
140 | I $G(^DPT(DFN,.105)) S IBLT=DT G TXMTN
|
---|
141 | ;
|
---|
142 | ; - get the last discharge date
|
---|
143 | S IBLT=+$O(^DGPM("ATID3",DFN,"")) S:IBLT IBLT=9999999.9999999-IBLT\1
|
---|
144 | S:IBLT>DT IBLT=DT
|
---|
145 | ;
|
---|
146 | ; - get the last registration date and compare to last treatment date
|
---|
147 | S X=+$O(^DPT(DFN,"DIS",0)) I X S X=9999999-X\1 S:X>IBLT IBLT=X
|
---|
148 | ;
|
---|
149 | ; - get the last appointment or stop after last treatment date (if any)
|
---|
150 | K ^TMP("DIERR",$J)
|
---|
151 | I '$G(IBQ) D
|
---|
152 | .D OPEN^SDQ(.IBQ) Q:'$G(IBQ)
|
---|
153 | .D INDEX^SDQ(.IBQ,"PATIENT/DATE","SET")
|
---|
154 | .D SCANCB^SDQ(.IBQ,"I $S($P(SDOE0,U,8)=2:1,$P(SDOE0,U,8)=1:$$APPT^IBATOP(SDOE0),1:0) S IBLT=SDOE0\1,SDSTOP=1","SET")
|
---|
155 | ;
|
---|
156 | D PAT^SDQ(.IBQ,DFN,"SET")
|
---|
157 | D DATE^SDQ(.IBQ,IBLT+.000001,9999999,"SET")
|
---|
158 | D ACTIVE^SDQ(.IBQ,"TRUE","SET")
|
---|
159 | D SCAN^SDQ(.IBQ,"BACKWARD")
|
---|
160 | D CLOSE^SDQ(.IBQ)
|
---|
161 | K ^TMP("DIERR",$J)
|
---|
162 | ;
|
---|
163 | TXMTN ; - find next scheduled treatment date
|
---|
164 | S IBNEXT=""
|
---|
165 | S X=0 F S X=$O(^DGS(41.1,"B",DFN,X)) Q:'X D ; sched adm
|
---|
166 | .S X1=$G(^DGS(41.1,X,0))
|
---|
167 | .S X2=$P(X1,"^",2)\1
|
---|
168 | .Q:X2<DT ; must be old scheduled adm
|
---|
169 | .Q:$P(X1,"^",13) ; sched adm is cancelled
|
---|
170 | .Q:$P(X1,"^",17) ; patient already admitted
|
---|
171 | .I X2>IBNEXT S IBNEXT=X2
|
---|
172 | ;
|
---|
173 | Q IBLT_"^"_IBNEXT
|
---|
174 | ;
|
---|
175 | APPT(SDOE0) ; Determine if appt associated with encounter is valid
|
---|
176 | Q $S($P(SDOE0,U,12)=2:1,$P(SDOE0,U,12)=14:1,1:0)
|
---|
177 | ;
|
---|
178 | ;
|
---|
179 | PAUSE ; Page break
|
---|
180 | Q:$E(IOST,1,2)'="C-"
|
---|
181 | N IBX,DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y
|
---|
182 | F IBX=$Y:1:(IOSL-3) W !
|
---|
183 | S DIR(0)="E" D ^DIR I $D(DIRUT)!($D(DUOUT)) S IBQ=1
|
---|
184 | Q
|
---|
185 | ;
|
---|
186 | HDR(IBNET) ; Write the detail report header.
|
---|
187 | I $E(IOST,1,2)="C-"!(IBPAG) W @IOF,*13
|
---|
188 | S IBPAG=IBPAG+1
|
---|
189 | W !,"Transfer Pricing Patient Listing",?38,"Run Date: ",IBRUN,?72,"Page: ",IBPAG
|
---|
190 | I $G(IBNET) W !,"Network: VISN ",IBNET
|
---|
191 | W !?50,"MT",?55,"Act",?63,"Last",?71,"Nxt Sched"
|
---|
192 | W !,"Patient Name/ID",?28,"Primary Eligibility",?49,"Stat"
|
---|
193 | W ?55,"Ins",?63,"Seen",?71,"Visit/Adm"
|
---|
194 | W !,$$DASH(IOM)
|
---|
195 | Q
|
---|
196 | ;
|
---|
197 | DISFAC(X) ; Display the station number and name.
|
---|
198 | ; Input: X -- The Station Number
|
---|
199 | ; Variable input: IBFACN array
|
---|
200 | ;
|
---|
201 | W !!?4,"Home Facility: ",$P(IBFACN(X),"^",2)," ",$P(IBFACN(X),"^"),!
|
---|
202 | Q
|
---|
203 | ;
|
---|
204 | DASH(X) ; Return a dashed line.
|
---|
205 | Q $TR($J("",X)," ","=")
|
---|