[613] | 1 | IBNCPDP4 ;DALOI/AAT - HANDLE ECME EVENTS ;20-JUN-2003
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**276,342**;21-MAR-94;Build 18
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ;NCPDP PHASE III
|
---|
| 6 | Q
|
---|
| 7 | ;
|
---|
| 8 | CLOSE(DFN,IBD) ; Close Claim Event
|
---|
| 9 | N IBADT,IBTRKR,IBTRKRN,IBRXN,IBFIL,IBEABD,IBRES,IBLOCK,IBDUZ
|
---|
| 10 | N IBRXTYP,IBCR,DA,DIE,DR,IBUSR
|
---|
| 11 | S IBDUZ=.5
|
---|
| 12 | S IBRES=1,IBLOCK=0
|
---|
| 13 | ;
|
---|
| 14 | I 'DFN S IBRES="0^No patient" G CLOSEQ
|
---|
| 15 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBRES="0^No fill date" G CLOSEQ
|
---|
| 16 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBRES="0^No Rx IEN" G CLOSEQ
|
---|
| 17 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBRES="0^No fill number" G CLOSEQ
|
---|
| 18 | S IBCR=+$G(IBD("CLOSE REASON")) I 'IBCR S IBRES="0^No close reason" G CLOSEQ
|
---|
| 19 | I '$L($G(IBD("CLAIMID"))) S IBRES="0^Missing ECME Number" G CLOSEQ
|
---|
| 20 | S IBD("BCID")=IBD("CLAIMID")_";"_IBADT
|
---|
| 21 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
| 22 | L +^DGCR(399,"AG",IBD("BCID")):5 S IBLOCK=$T
|
---|
| 23 | ;
|
---|
| 24 | ; -- claims tracking info
|
---|
| 25 | S IBTRKR=$G(^IBE(350.9,1,6))
|
---|
| 26 | ; date can't be before parameters
|
---|
| 27 | S $P(IBTRKR,"^")=$S('$P(IBTRKR,"^",4):0,+IBTRKR&(IBADT<+IBTRKR):0,1:IBADT)
|
---|
| 28 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0))
|
---|
| 29 | ;
|
---|
| 30 | I 'IBTRKRN S IBRES="0^CT record not found" G CLOSEQ
|
---|
| 31 | ;
|
---|
| 32 | D NONBR^IBNCPNB(DFN,IBRXN,IBFIL,IBADT,IBCR,$G(IBD("DROP TO PAPER")),$G(IBD("RELEASE COPAY")),$G(IBD("CLOSE COMMENT")),IBUSR)
|
---|
| 33 | ;
|
---|
| 34 | S DIE="^IBT(356,",DA=IBTRKRN
|
---|
| 35 | ; add ECME #,ECME flag, remove total charges
|
---|
| 36 | S DR="1.1///"_IBD("CLAIMID")_";1.11///2;.29////@"
|
---|
| 37 | D ^DIE
|
---|
| 38 | ;
|
---|
| 39 | S IBRES=1 ; OK
|
---|
| 40 | CLOSEQ ;
|
---|
| 41 | D LOG^IBNCPDP2("CLOSE",IBRES)
|
---|
| 42 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
| 43 | Q IBRES
|
---|
| 44 | ;
|
---|
| 45 | ;
|
---|
| 46 | RELEASE(DFN,IBD) ;
|
---|
| 47 | N IBRES,IBADT,IBRXN,IBFIL,IBRDT,IBLOCK,IBLOCK2,IBTRKR,IBTRKRN
|
---|
| 48 | N IBEABD,IBNBR,DA,DIE,DR,IBUSR
|
---|
| 49 | S IBLOCK=0
|
---|
| 50 | I 'DFN S IBRES="0^No patient" G RELQ
|
---|
| 51 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBRES="0^No fill date" G RELQ
|
---|
| 52 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBRES="0^No Rx IEN" G RELQ
|
---|
| 53 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBRES="0^No fill number" G RELQ
|
---|
| 54 | S IBRDT=+$G(IBD("RELEASE DATE"),-1) I 'IBRDT S IBRES="0^No release date" G RELQ
|
---|
| 55 | I '$L($G(IBD("CLAIMID"))) S IBRES="0^Missing ECME Number" G RELQ
|
---|
| 56 | S IBD("BCID")=IBD("CLAIMID")_";"_IBADT
|
---|
| 57 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
| 58 | L +^DGCR(399,"AG",IBD("BCID")):5 S IBLOCK=$T
|
---|
| 59 | ; -- claims tracking info
|
---|
| 60 | S IBTRKR=$G(^IBE(350.9,1,6))
|
---|
| 61 | ; date can't be before parameters
|
---|
| 62 | S $P(IBTRKR,"^")=$S('$P(IBTRKR,"^",4):0,+IBTRKR&(IBADT<+IBTRKR):0,1:IBADT)
|
---|
| 63 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0))
|
---|
| 64 | I 'IBTRKRN S IBRES="0^No CT record found." G RELQ
|
---|
| 65 | ;
|
---|
| 66 | ; Remove NBR from CT and set T+60 (if not billed yet)
|
---|
| 67 | ; Set ECME flags in CT
|
---|
| 68 | ;
|
---|
| 69 | L +^IBT(356,IBTRKRN):5 S IBLOCK2=$T
|
---|
| 70 | S DIE="^IBT(356,",DA=IBTRKRN,DR=""
|
---|
| 71 | S IBNBR=+$P($G(^IBT(356,IBTRKRN,0)),U,19)
|
---|
| 72 | ; Clean up "Rx not released"
|
---|
| 73 | I IBNBR,$P($G(^IBE(356.8,IBNBR,0)),U)="PRESCRIPTION NOT RELEASED" S DR=DR_".19////@;",IBNBR=""
|
---|
| 74 | ;
|
---|
| 75 | ; Set EABD if no bill and no NBR
|
---|
| 76 | I '$P($G(^IBT(356,IBTRKRN,0)),U,11),'IBNBR D
|
---|
| 77 | . S IBEABD=$$EABD^IBTUTL($O(^IBE(356.6,"AC",4,0)),IBADT)
|
---|
| 78 | . S:'IBEABD IBEABD=DT
|
---|
| 79 | . S IBEABD=$$FMADD^XLFDT(IBEABD,60)
|
---|
| 80 | . S DR=DR_".17////^S X=IBEABD;"
|
---|
| 81 | ;
|
---|
| 82 | ; Set ECME Flags
|
---|
| 83 | S DR=DR_"1.1////"_IBD("CLAIMID")_";"
|
---|
| 84 | ; Reject status will not be set here
|
---|
| 85 | ;
|
---|
| 86 | D ^DIE
|
---|
| 87 | S IBFDA(356,IBTRKRN_",",1.03)=DT ; date last edited
|
---|
| 88 | S IBFDA(356,IBTRKRN_",",1.04)=IBUSR ; last edited by
|
---|
| 89 | D FILE^DIE("","IBFDA"),MSG^DIALOG()
|
---|
| 90 | I IBLOCK2 L -^IBT(356,IBTRKRN)
|
---|
| 91 | ;
|
---|
| 92 | S IBRES=1
|
---|
| 93 | RELQ ;
|
---|
| 94 | D LOG^IBNCPDP2("RELEASE",IBRES)
|
---|
| 95 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
| 96 | Q IBRES
|
---|
| 97 | ;
|
---|
| 98 | SUBMIT(DFN,IBD) ;
|
---|
| 99 | N IBRES,IBLOCK,IBADT,IBRXN,IBFIL,IBRDT,IBNBR,IBFLAG,IBTRKR,IBTRKRN
|
---|
| 100 | N IBRESP,DA,DIE,DR,IBUSR
|
---|
| 101 | S IBLOCK=0
|
---|
| 102 | I 'DFN S IBRES="0^No patient" G SUBQ
|
---|
| 103 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBRES="0^No fill date" G SUBQ
|
---|
| 104 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBRES="0^No Rx IEN" G SUBQ
|
---|
| 105 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBRES="0^No fill number" G SUBQ
|
---|
| 106 | S IBRESP=$G(IBD("RESPONSE")) I IBRESP="" S IBRES="0^No response from the payer" G SUBQ
|
---|
| 107 | S IBRDT=+$G(IBD("RELEASE DATE"),-1)
|
---|
| 108 | I '$L($G(IBD("CLAIMID"))) S IBRES="0^Missing ECME Number" G SUBQ
|
---|
| 109 | S IBD("BCID")=IBD("CLAIMID")_";"_IBADT
|
---|
| 110 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
| 111 | L +^DGCR(399,"AG",IBD("BCID")):5 S IBLOCK=$T
|
---|
| 112 | ;
|
---|
| 113 | ; -- claims tracking info
|
---|
| 114 | S IBTRKR=$G(^IBE(350.9,1,6))
|
---|
| 115 | ; date can't be before parameters
|
---|
| 116 | S $P(IBTRKR,"^")=$S('$P(IBTRKR,"^",4):0,+IBTRKR&(IBADT<+IBTRKR):0,1:IBADT)
|
---|
| 117 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0))
|
---|
| 118 | ;
|
---|
| 119 | ; If the Rx is not released - set NBR in CT
|
---|
| 120 | I 'IBRDT,'$P($G(^IBT(356,IBTRKRN,0)),U,19) D NONBR^IBNCPNB(DFN,IBRXN,IBFIL,IBADT,"PRESCRIPTION NOT RELEASED","","","",IBUSR)
|
---|
| 121 | ;
|
---|
| 122 | ; If the Rx is released - clean up NBR in CT
|
---|
| 123 | I IBRDT,$P($G(^IBE(356.8,+$P($G(^IBT(356,IBTRKRN,0)),U,19),0)),U)="PRESCRIPTION NOT RELEASED" D NONBR^IBNCPNB(DFN,IBRXN,IBFIL,IBADT,"","","","",IBUSR)
|
---|
| 124 | ; Set ECME fields in CT
|
---|
| 125 | S DIE="^IBT(356,",DA=IBTRKRN
|
---|
| 126 | S IBFLAG=$S(IBRESP["REJECT":1,1:0)
|
---|
| 127 | S DR="1.1///"_IBD("CLAIMID")_";1.11///"_IBFLAG
|
---|
| 128 | D ^DIE
|
---|
| 129 | S IBRES=1
|
---|
| 130 | SUBQ ;
|
---|
| 131 | D LOG^IBNCPDP2("SUBMIT",IBRES)
|
---|
| 132 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
| 133 | Q IBRES
|
---|
| 134 | ;
|
---|
| 135 | ;
|
---|
| 136 | REOPEN(DFN,IBD) ;
|
---|
| 137 | N IBRES,IBADT,IBRXN,IBFIL,IBRDT,IBLOCK,IBLOCK2,IBTRKRN
|
---|
| 138 | N IBEABD,IBNBR,DA,DIE,DR,IBUSR,IBEABD
|
---|
| 139 | S (IBLOCK,IBLOCK2)=0
|
---|
| 140 | I 'DFN S IBRES="0^No patient" G REOPQ
|
---|
| 141 | S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBRES="0^No fill date" G REOPQ
|
---|
| 142 | S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBRES="0^No Rx IEN" G REOPQ
|
---|
| 143 | S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBRES="0^No fill number" G REOPQ
|
---|
| 144 | I '$L($G(IBD("CLAIMID"))) S IBRES="0^Missing ECME Number" G REOPQ
|
---|
| 145 | S IBRDT=$$RXRLDT^PSOBPSUT(IBRXN,IBFIL) ; release date (if null is returned then Rx is not released)
|
---|
| 146 | S IBD("BCID")=IBD("CLAIMID")_";"_IBADT
|
---|
| 147 | S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
|
---|
| 148 | L +^DGCR(399,"AG",IBD("BCID")):5 S IBLOCK=$T
|
---|
| 149 | ;
|
---|
| 150 | S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0)) ;get the claim entry associated with the Rx fill (or refill)
|
---|
| 151 | L +^IBT(356,IBTRKRN):5 S IBLOCK2=$T
|
---|
| 152 | S DIE="^IBT(356,",DA=IBTRKRN
|
---|
| 153 | ;
|
---|
| 154 | I IBRDT D ; if Rx released assign earliest autobill date
|
---|
| 155 | . S IBEABD=$$EABD^IBTUTL($O(^IBE(356.6,"AC",4,0)),IBADT)
|
---|
| 156 | . S:'IBEABD IBEABD=DT
|
---|
| 157 | . S IBEABD=$$FMADD^XLFDT(IBEABD,60)
|
---|
| 158 | ;
|
---|
| 159 | N IBFDA
|
---|
| 160 | S IBFDA(356,IBTRKRN_",",.19)=$S('IBRDT:$O(^IBE(356.8,"B","PRESCRIPTION NOT RELEASED","")),1:"@") ;non-billable reason
|
---|
| 161 | D FILE^DIE("","IBFDA"),MSG^DIALOG()
|
---|
| 162 | K IBFDA
|
---|
| 163 | S IBFDA(356,IBTRKRN_",",.17)=$S('IBRDT:"@",1:IBEABD) ; earliest autobill date
|
---|
| 164 | S IBFDA(356,IBTRKRN_",",1.08)="@" ;additional comments
|
---|
| 165 | S IBFDA(356,IBTRKRN_",",1.11)=0 ; reject flag - reset to "no"
|
---|
| 166 | S IBFDA(356,IBTRKRN_",",1.03)=DT ; date last edited
|
---|
| 167 | S IBFDA(356,IBTRKRN_",",1.04)=IBUSR ; last edited by
|
---|
| 168 | D FILE^DIE("","IBFDA"),MSG^DIALOG()
|
---|
| 169 | ;
|
---|
| 170 | S IBRES=1
|
---|
| 171 | REOPQ ;
|
---|
| 172 | D LOG^IBNCPDP2("REOPEN",IBRES)
|
---|
| 173 | I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
|
---|
| 174 | I IBLOCK2 L -^IBT(356,IBTRKRN)
|
---|
| 175 | Q IBRES
|
---|
| 176 | ;IBNCPDP4
|
---|