1 | IBAECU3 ;WOIFO/SS-LTC PHASE 2 UTILITIES ; 20-FEB-02
|
---|
2 | ;;2.0;INTEGRATED BILLING;**176**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;****** Outpatient LTC related utilities *********
|
---|
6 | ;/*--
|
---|
7 | ;Returns info about all visits via ^TMP($J,IBLB,IBDFN) global
|
---|
8 | ;
|
---|
9 | ;Input:
|
---|
10 | ;
|
---|
11 | ;IBFRBEG- first date (in FM format),must be a valid,
|
---|
12 | ; (wrong date like 3000231 will cause mistakes)
|
---|
13 | ;IBFREND- last date (in FM format),must be a valid date
|
---|
14 | ; if any of dates above > yesterday it will be set to yesterday
|
---|
15 | ;
|
---|
16 | ;IBDFN - patient's ien in file (#2)
|
---|
17 | ;IBLB - any string to identify results in ^TMP($J,IBLB
|
---|
18 | ;Output:
|
---|
19 | ;
|
---|
20 | ;temp global array with inpatient info:
|
---|
21 | ; ^TMP($J,IBLB,IBDFN,date,"M"/"L",IEN40968)=L/M^stopcode^
|
---|
22 | ;
|
---|
23 | ; where pieces:
|
---|
24 | ; #1 - "L" for LTC, "M" for MeansTest
|
---|
25 | ; #2 - stopcode
|
---|
26 | ; #3 - empty
|
---|
27 | ; #4 - pointer to #350.1 IB action type
|
---|
28 | ;Returns:
|
---|
29 | ; 0 - none
|
---|
30 | ; 1 - if any leave or stay days in the period
|
---|
31 | OUTPINFO(IBFRBEG,IBFREND,IBDFN,IBLB) ;
|
---|
32 | N IBVAL,IBCBK,IBFILTER,IBRES
|
---|
33 | S IBVAL("DFN")=IBDFN,IBVAL("BDT")=IBFRBEG-.1,IBVAL("EDT")=+(IBFREND_".9999999")
|
---|
34 | S IBFILTER=""
|
---|
35 | ; we look only for STATUS=CHECKED OUT i.e. $P(Y0,U,12)=2 in IBCBK
|
---|
36 | ; consider only parent encounters, appts checked out
|
---|
37 | S IBCBK="I '$P(Y0,U,6),$P(Y0,U,12)=2 S IBRES=$$STOPINFO^IBAECU3($P(Y0,U,3),0),^TMP($J,IBLB,IBDFN,+Y0\1,Y)=IBRES"
|
---|
38 | D SCAN^IBSDU("PATIENT/DATE",.IBVAL,IBFILTER,IBCBK,1) K ^TMP("DIERR",$J)
|
---|
39 | Q +$O(^TMP($J,IBLB,IBDFN,0))>0
|
---|
40 | ;/**
|
---|
41 | ;get stop-code related info
|
---|
42 | ;IB407 pointer to file #40.7
|
---|
43 | ;IBDT - date to get rate, if 0 then will not return a rate in 3rd piece
|
---|
44 | ;returns
|
---|
45 | ;IBTYPE_"^"_IBCODE_"^"_IBRATE_"^"_IBATYP
|
---|
46 | ;IBCARE - "M" for means test, "L" for LTC
|
---|
47 | ;IBCODE - AMIS REPORTING STOP CODE
|
---|
48 | ;IBRATE - rate for LTC, 0 for Means test
|
---|
49 | ;IBATYP - ien of 350.1
|
---|
50 | STOPINFO(IB407,IBDT) ;
|
---|
51 | N Y,X
|
---|
52 | N IBI,IBCR,IBCODE,IBATYP,IBCHG
|
---|
53 | N IBSCDATA,IBNAME
|
---|
54 | D DIQ407^IBEMTSCU(IB407,1)
|
---|
55 | S IBCODE=$G(IBSCDATA(40.7,IB407,1,"E"))
|
---|
56 | Q:+IBCODE=0 ""
|
---|
57 | S IBNAME=$P($$LTCSTOP^IBAECU(IB407),"^",2)
|
---|
58 | Q:IBNAME="" "M^"_IBCODE_"^^"
|
---|
59 | S IBATYP=$O(^IBE(350.1,"B",IBNAME,0))
|
---|
60 | Q:+IBATYP=0 ""
|
---|
61 | S IBCHG=""
|
---|
62 | I +$G(IBDT)>0 D
|
---|
63 | . S IBCHG=0
|
---|
64 | . D COST^IBAUTL2
|
---|
65 | Q "L^"_IBCODE_"^"_IBCHG_"^"_IBATYP
|
---|
66 | ;
|
---|
67 | ;returns rate for different LTC services
|
---|
68 | ;INPUT:
|
---|
69 | ;IBCARE=1 - outpatient(clinic stopcode),IBTYPE=2 - inpatient(treating specialty)
|
---|
70 | ;IBCODE - treating specialty(outpatient) or clinic stopcode (inpatient)
|
---|
71 | ;IBDT - date of care
|
---|
72 | ;if not found - returns 0
|
---|
73 | GETRATE(IBCARE,IBCODE,IBDT) ;
|
---|
74 | N IBCHG,IBATYP,IBTAG
|
---|
75 | N IBI,IBCR,IBNAME
|
---|
76 | S:'$D(U) U="^"
|
---|
77 | S (IBCHG,IBATYP)=0
|
---|
78 | S:IBCARE=1 IBTAG="C"_IBCODE,IBNAME=$P($T(@IBTAG^IBAECU1),";",3)
|
---|
79 | S:IBCARE=2 IBTAG="T"_IBCODE,IBNAME=$P($T(@IBTAG^IBAECU1),";",3)
|
---|
80 | Q:IBNAME="" IBCHG
|
---|
81 | S IBATYP=$O(^IBE(350.1,"B",IBNAME,0))
|
---|
82 | Q:+IBATYP=0 IBCHG
|
---|
83 | D COST^IBAUTL2
|
---|
84 | Q IBCHG_"^"_IBATYP
|
---|
85 | ;/**
|
---|
86 | ;is there any outp episode with that day
|
---|
87 | ;Input:
|
---|
88 | ;IBDFN - dfn of the patient
|
---|
89 | ;IBDT1 - date
|
---|
90 | ;IBTMPLB - ^TMP global subscript like IBADM in $$INPINFO
|
---|
91 | ;Output:
|
---|
92 | ;Returns "a^b" where :
|
---|
93 | ;a - number of LTC admissions on this date
|
---|
94 | ;b - number of Means Test admissions on this date
|
---|
95 | ;if "" - nothing
|
---|
96 | ; means test:
|
---|
97 | ;.IBVIS("M",#)=treating specialty^
|
---|
98 | ; LTC:
|
---|
99 | ;.IBVIS("L",#)=treating specialty^ien of 350.1I action type
|
---|
100 | ISOUTP(IBDFN,IBDT1,IBTMPLB,IBVIS) ;*/
|
---|
101 | N IB40968,IBRETV,IBD,IB1
|
---|
102 | S IB40968=0,IBRETV=""
|
---|
103 | F S IB40968=$O(^TMP($J,IBTMPLB,IBDFN,IBDT1,IB40968)) Q:+IB40968=0 D
|
---|
104 | . S IBD=$G(^TMP($J,IBTMPLB,IBDFN,IBDT1,IB40968))
|
---|
105 | . S IB1=$P(IBD,"^",1)
|
---|
106 | . I IB1="L" S $P(IBRETV,"^",1)=$P($G(IBRETV),"^",1)+1
|
---|
107 | . I IB1="M" S $P(IBRETV,"^",2)=$P($G(IBRETV),"^",2)+1
|
---|
108 | . S IBVIS(IB1,IB40968)=$P(IBD,"^",2)_"^"_$P(IBD,"^",4)
|
---|
109 | Q IBRETV
|
---|
110 | ;
|
---|
111 | ;checks if there is Means test outpatient visits this date and
|
---|
112 | ;cancels them if there is a charge
|
---|
113 | CHKMTOUT(IBDFN,IBDT,IBTMPLB) ;
|
---|
114 | N IBV1
|
---|
115 | N RETIENS S RETIENS=0
|
---|
116 | S IBV1=$$ISOUTP(IBDFN,IBDT,IBTMPLB,.RETIENS) Q:+$P(IBV1,"^",2)=0
|
---|
117 | S IBV1=0
|
---|
118 | F S IBV1=$O(RETIENS("M",IBV1)) Q:+IBV1=0 D
|
---|
119 | . D CANCVIS^IBAECU5(IBDFN,IBDT)
|
---|
120 | Q
|
---|
121 | ;
|
---|
122 | ;
|
---|
123 | ;return IB action type based on treating specialty (42.4)
|
---|
124 | ;or clinic stop code
|
---|
125 | ;IBCARE=1 - outpatient(clinic stopcode),IBTYPE=2 - inpatient(treating specialty)
|
---|
126 | ;IBCODE - treating specialty(outpatient) or clinic stopcode (inpatient)
|
---|
127 | GET3501(IBCARE,IBCODE) ;
|
---|
128 | N IBATYP,IBNAME
|
---|
129 | S:IBCARE=1 IBTAG="C"_IBCODE,IBNAME=$P($T(@IBTAG^IBAECU1),";",3)
|
---|
130 | S:IBCARE=2 IBTAG="T"_IBCODE,IBNAME=$P($T(@IBTAG^IBAECU1),";",3)
|
---|
131 | Q:IBNAME="" 0
|
---|
132 | S IBATYP=$O(^IBE(350.1,"B",IBNAME,0))
|
---|
133 | Q +IBATYP
|
---|
134 | ;
|
---|