1 | IBCEF4 ;ALB/TMP - MRA/EDI ACTIVATED UTILITIES ;06-FEB-96
|
---|
2 | ;;2.0;INTEGRATED BILLING;**51,137,232,155,296,327,349**;21-MAR-94;Build 46
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | EDIACTV(IBEDIMRA) ; Returns 0 if EDI or MRA is not active,
|
---|
6 | ; otherwise, returns 1
|
---|
7 | ; IBEDIMRA : 1= checking if EDI is active, 2= checking if MRA is active
|
---|
8 | N IBEDI
|
---|
9 | S IBEDI=$P($G(^IBE(350.9,1,8)),U,10)
|
---|
10 | Q $S('IBEDI:0,IBEDI=3:1,1:IBEDI=IBEDIMRA)
|
---|
11 | ;
|
---|
12 | RATEOK(IBIFN) ; Returns 1 if rate type of bill IBIFN is transmittable
|
---|
13 | Q +$P($G(^DGCR(399.3,+$P($G(^DGCR(399,IBIFN,0)),U,7),0)),U,10)
|
---|
14 | ;
|
---|
15 | INSOK(INS) ; Determine EDI activation status of insurance co
|
---|
16 | Q +$G(^DIC(36,INS,3)) ;1 = TEST, 2 = LIVE, 0 = NOT ACTIVE FOR EDI
|
---|
17 | ;
|
---|
18 | BSTATX(IBIFN) ; Returns internal value of bill's latest transmission status
|
---|
19 | N IBDA
|
---|
20 | Q $P($G(^IBA(364,+$$LAST364(IBIFN),0)),U,3)
|
---|
21 | ;
|
---|
22 | LAST364(IBIFN) ; Determine ien of latest transmit bill record for a bill
|
---|
23 | Q +$O(^IBA(364,"ABDT",IBIFN,+$O(^IBA(364,"ABDT",IBIFN,""),-1),""),-1)
|
---|
24 | ;
|
---|
25 | TXMT(IBIFN,IBWHY,IBNEW) ; Determine if bill # IBIFN is 'transmittable'
|
---|
26 | ; IBNEW = flag is 1 if new entry - don't check for entry in file 364
|
---|
27 | ; Function returns:
|
---|
28 | ; 0 if not transmittable
|
---|
29 | ; if transmittable, the entire node 3 of the insurance company
|
---|
30 | ; and, if passed by reference IBWHY = reason not transmittable
|
---|
31 | ; 1 if local print
|
---|
32 | ; 2 if EDI/MRA not active
|
---|
33 | ; 3 if rate type not transmittable
|
---|
34 | ; 4 if no transmit for insurance co
|
---|
35 | ; 5 if failed txmn rules
|
---|
36 | ; and IBWHY(0) = ien of rule failed
|
---|
37 | ; 6 if Rx with missing/invalid NDC format
|
---|
38 | ;
|
---|
39 | N IB,IB0,IBOK,IBCOB,IBMCR,X1
|
---|
40 | S IBOK=1,IB=IBIFN,IBWHY=""
|
---|
41 | ;
|
---|
42 | S IBCOB=$$COBN^IBCEF(IB),IB(.07)=+$G(^DGCR(399,IB,"I"_IBCOB))
|
---|
43 | S IBMCR=$$MCRWNR^IBEFUNC(IB(.07))
|
---|
44 | ; Does bill have force local print flag set?
|
---|
45 | I 'IBMCR D G:IBWHY TXMTQ ; MCR WNR not curr ins
|
---|
46 | . I $S($$MRASEC(IBIFN):$P($G(^DGCR(399,IBIFN,"TX")),U,9)=1,1:$P($G(^DGCR(399,IBIFN,"TX")),U,8)=1) S IBOK=0,IBWHY=1
|
---|
47 | I '$G(IBNEW),'$O(^IBA(364,"B",IBIFN,0)),$P($G(^DGCR(399,IBIFN,0)),U,13)>2,'$$RETN^PRCAFN(IBIFN) S IBOK=0 G TXMTQ ; Not recognized as transmittable when it was authorized
|
---|
48 | I $O(^IBA(364,"B",IBIFN,0)),$$INSOK(IB(.07)),$$BSTATX(IBIFN)'="X" G TXMTQ ;Already determined to be transmittable - entry exists for bill in transmit bill file
|
---|
49 | S IB(.03)=$S('IBMCR:1,1:2) ; EDI(1) or MRA(2)
|
---|
50 | S IB(.04)=$S('$$INPAT^IBCEF(IB,1):1,1:2) ;Outpt(1) or Inpt(2)
|
---|
51 | S IB(.05)=$S($$FT^IBCEF(IB)=3:1,1:2) ;Inst(1) or Prof(2)
|
---|
52 | ; Execute unmodifiable, general edits
|
---|
53 | S X1=$$EDIACTV(IB(.03))
|
---|
54 | I 'X1 S IBWHY=2
|
---|
55 | I 'IBWHY S X1=$$RATEOK(IBIFN) S:'X1 IBWHY=3
|
---|
56 | I 'IBWHY S X1=$$INSOK(+IB(.07)) S:'X1 IBWHY=4
|
---|
57 | I 'IBWHY,$$ISRX^IBCEF1(IBIFN) D ;S:'X1 IBWHY=6
|
---|
58 | . ; Check for Rxs and NDC # format valid (5-4-2)
|
---|
59 | . ;IF THIS IS A UB FORM DO NOT SEND ELECTRONIC
|
---|
60 | . I $$FT^IBCEF(IBIFN)=3 S IBWHY=1
|
---|
61 | . ;
|
---|
62 | . Q ;;CHECK REMOVAL SO NON NDC FORMAT NUMBERS WILL GO
|
---|
63 | . N Z,Z0,Z00
|
---|
64 | . S Z="" F S Z=$O(^IBA(362.4,"AIFN"_IBIFN,Z)) Q:Z=""!'X1 D Q:'X1
|
---|
65 | .. S Z0=0 F S Z0=$O(^IBA(362.4,"AIFN"_IBIFN,Z,Z0)) Q:'Z0 D Q:'X1
|
---|
66 | ... S Z00=$G(^IBA(362.4,Z0,0))
|
---|
67 | ... Q:$S($P(Z00,U,8)="":1,1:$L($P(Z00,U,8))=11)
|
---|
68 | ... I $P(Z00,U,9)'=4 S X1=0
|
---|
69 | ; Only continue if general edits are passed
|
---|
70 | I $$COB^IBCEF(IB)="S" D
|
---|
71 | . S COBINS=$P($G(^DGCR(399,IB,"M")),U,IBCOB+1)
|
---|
72 | . I 'COBINS Q
|
---|
73 | . I IBMCR S IBWHY=1,$P(^DGCR(399,IBIFN,"TX"),U,8)=1
|
---|
74 | I IBWHY S IBOK=0 G TXMTQ
|
---|
75 | S IBOK=$$EDIT(IBIFN,.IB,.IBWHY)
|
---|
76 | G:'IBOK TXMTQ
|
---|
77 | ;
|
---|
78 | TXMTQ ;
|
---|
79 | I IBOK S IBOK=$G(^DIC(36,+IB(.07),3))
|
---|
80 | Q IBOK
|
---|
81 | ;
|
---|
82 | MRASEC(IBIFN) ; Returns 1 if current bill is secondary to MCR WNR
|
---|
83 | N IBSEQ,IB,Z
|
---|
84 | S IB=0
|
---|
85 | ; Chk if MCR WNR is prev insurer with MRA on file
|
---|
86 | S IBSEQ=$$COBN^IBCEF(IBIFN)-1
|
---|
87 | S Z=$$MCRONBIL^IBEFUNC(IBIFN,IBSEQ) I +Z=1,$P(Z,U,2)=1,$$CHK^IBCEMU1(IBIFN) S IB=1
|
---|
88 | Q IB
|
---|
89 | ;
|
---|
90 | EDIT(IBIFN,IB,IBWHY) ; Find, execute edits applying to bill to see if transmittable
|
---|
91 | ; IBIFN = ien of bill in file 399
|
---|
92 | ; IB = array containing necessary data for xref search from bill
|
---|
93 | ; subscripted by field # in file 364.4
|
---|
94 | ;
|
---|
95 | ; Matrix entries:
|
---|
96 | ; IB(.03): 1=EDI specific, 2=MRA specific
|
---|
97 | ; IB(.04): 1=Outpatient or 2=inpatient only (currently defaults to 3)
|
---|
98 | ; IB(.05): 1=Only institutional or 2=only professional
|
---|
99 | ; X: Anything valid
|
---|
100 | ;
|
---|
101 | ; MRA-EDI IN-OUT INST-PROF
|
---|
102 | ; Level ------- ------ ---------
|
---|
103 | ; 1 X X X
|
---|
104 | ; 2 X X IB(.05)
|
---|
105 | ; 3 X IB(.04) X
|
---|
106 | ; 4 X IB(.04) IB(.05)
|
---|
107 | ; 5 IB(.03) X X
|
---|
108 | ; 6 IB(.03) X IB(.05)
|
---|
109 | ; 7 IB(.03) IB(.04) X
|
---|
110 | ; 8 IB(.03) IB(.04) IB(.05)
|
---|
111 | ;
|
---|
112 | N IB0,IB1,IB2,IB3,IB4,IBDA,IBFT,IBPASS,IBSEQ,IBT,IBNOCK
|
---|
113 | I '$G(IB(.03)) S IBPASS=0 G EDITQ
|
---|
114 | S IBFT=$$FT^IBCEF(IBIFN)
|
---|
115 | ;
|
---|
116 | S IBPASS=1
|
---|
117 | F IBSEQ=1:1:8 D Q:'IBPASS ; Loop thru levels in matrix
|
---|
118 | . F IB1=1:1:3 Q:'IBPASS F IB2=1:1:3 Q:'IBPASS F IB3=1:1:3 Q:'IBPASS D
|
---|
119 | .. S IB4=0 F S IB4=$O(^IBE(364.4,"AD",IB1,IB2,IB3,IB4)) Q:'IB4 I $O(^(IB4,0)) D Q:'IBPASS
|
---|
120 | ... S IBDA=0
|
---|
121 | ... F S IBDA=$O(^IBE(364.4,"AD",IB1,IB2,IB3,IB4,IBDA)) Q:'IBDA S IB0=$G(^IBE(364.4,IBDA,0)) I IB0'="",'$D(IBNOCK(IBDA)) D Q:'IBPASS
|
---|
122 | .... I $P(IB0,U,2)>DT S IBNOCK(IBDA)="" Q ; Not activated yet
|
---|
123 | .... I $P(IB0,U,6),$P(IB0,U,6)'>DT S IBNOCK(IBDA)="" Q ; Inactive
|
---|
124 | .... I $P(IB0,U,11),IB3'=3,$S(IBFT=3:IB3'=1,IBFT=2:IB3'=2,1:0) S IBNOCK(IBDA)="" Q ; Form type not included - not used for form type rule (0)
|
---|
125 | .... I IB4=1,'$D(^IBE(364.4,IBDA,3,"B",+IB(.07))) S IBNOCK(IBDA)="" Q ; Ins not included for rule
|
---|
126 | .... I IB4=2,$D(^IBE(364.4,IBDA,2,"B",+IB(.07))) S IBNOCK(IBDA)="" Q ; Ins is excluded from rule
|
---|
127 | .... S IBT=$G(^IBE(364.4,IBDA,1))
|
---|
128 | .... ; Code can assume IBIFN, IBDA and IB(.03 thru .05 and .07) exist
|
---|
129 | .... I IBT'="" X IBT I '$T S IBPASS=0,IBWHY(0)=IBDA,IBWHY=5
|
---|
130 | EDITQ Q IBPASS
|
---|
131 | ;
|
---|
132 | STATUS(IBIFN) ; Function returns whether or not bill currently has a status
|
---|
133 | ; message or EOB message not yet fully reviewed -
|
---|
134 | ; (only for transmittable bills)
|
---|
135 | ; IBIFN = ien of bill in file 399
|
---|
136 | ; Returns:
|
---|
137 | ; 0 = None found
|
---|
138 | ; If found, returns a pieced string as follows:
|
---|
139 | ;
|
---|
140 | ; [1] ien of transmit bill entry (file 364) associated with an
|
---|
141 | ; entry in file 361 with an unreviewed status message
|
---|
142 | ; [2] ien of transmit bill entry (file 364) associated with an
|
---|
143 | ; entry in file 361.1 with an unreviewed EOB
|
---|
144 | ;
|
---|
145 | N IB,Z,Z0
|
---|
146 | S IB=""
|
---|
147 | S Z="" F S Z=$O(^IBM(361,"B",IBIFN,Z),-1) Q:'Z I $P($G(^IBM(361,Z,0)),U,9)<2,$P(^(0),U,11) S $P(IB,U)=$P(^(0),U,11) Q
|
---|
148 | ;
|
---|
149 | S Z="" F S Z=$O(^IBM(361.1,"B",IBIFN,Z),-1) Q:'Z I $P($G(^IBM(361.1,Z,0)),U,16)<2,$P(^(0),U,19) S $P(IB,U,2)=$P(^(0),U,19) Q
|
---|
150 | ;
|
---|
151 | Q IB
|
---|
152 | ;
|
---|
153 | TEST(IBIFN) ; Returns 1 if bill IBIFN is a transmission test bill, 0 if not
|
---|
154 | Q +$S($G(^TMP("IBEDI_TEST_BATCH",$J)):1,1:+$P($G(^IBA(364,+$$LAST364(IBIFN),0)),U,7))
|
---|
155 | ;
|
---|