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