| 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 | 
|---|