| 1 | IBNCPEB ;WOIFO/AAT - BULLETINS FOR NCPDP ;05-NOV-04
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**276,342,347,363**;21-MAR-94;Build 35
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | BULL(DFN,IBD,IBERR,IBIFN) ;Process NCPDP Error Messages.
 | 
|---|
| 7 |  N IBC,IBT,IBPT,XMSUB,XMY,XMTEXT,XMDUZ,IBMSGT,IBI,IBGRP,IBDUZ,IBRXNO,DRGNM
 | 
|---|
| 8 |  ; Input: same as RX^IBNCPDP2()
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  S IBDUZ=$G(IBD("FILLED BY"))
 | 
|---|
| 11 |  S IBRXNO=$G(IBD("RX NO"),"UNKNOWN")
 | 
|---|
| 12 |  S IBPT=$$PT^IBEFUNC(DFN)
 | 
|---|
| 13 |  S XMSUB="NCPDP BILLING ERROR - RX #"_IBRXNO
 | 
|---|
| 14 |  S IBC=0
 | 
|---|
| 15 |  D T("An error occurred while creating IB Third Party Bill for RX #"_IBRXNO)
 | 
|---|
| 16 |  I $G(IBIFN) D T("IB Bill #"_$P($G(^DGCR(399,+IBIFN,0)),U)_" created with errors.")
 | 
|---|
| 17 |  D T()
 | 
|---|
| 18 |  D T("The following error was encountered: "_$P(IBERR,U,2))
 | 
|---|
| 19 |  D T()
 | 
|---|
| 20 |  D T("      Patient: "_$S($L(IBPT):$P(IBPT,U)_"       Pt. ID: "_$P(IBPT,U,2),1:"Not Defined"))
 | 
|---|
| 21 |  D T(" Rx filled by: "_$P($G(^VA(200,+IBDUZ,0)),U))
 | 
|---|
| 22 |  D T(" Prescription: "_IBRXNO)
 | 
|---|
| 23 |  D T("  Fill Number: "_$G(IBD("FILL NUMBER")))
 | 
|---|
| 24 |  D T("    Fill Date: "_$G(IBD("FILL DATE")))
 | 
|---|
| 25 |  D T("   Group Plan: "_$P($G(^IBA(355.3,+$G(IBD("PLAN")),0)),U)_"  (IEN="_+$G(IBD("PLAN"))_")")
 | 
|---|
| 26 |  D ZERO^IBRXUTL(+$G(IBD("DRUG"))) S DRGNM=^TMP($J,"IBDRUG",+$G(IBD("DRUG")),.01)
 | 
|---|
| 27 |  D T("         Drug: "_DRGNM)
 | 
|---|
| 28 |  D T("Amount Billed: "_$J($G(IBD("BILLED")),5,2))
 | 
|---|
| 29 |  D T("  Amount Paid: "_$J($G(IBD("PAID")),5,2))
 | 
|---|
| 30 |  D T()
 | 
|---|
| 31 |  D T("Please review the circumstances surrounding this error and make necessary")
 | 
|---|
| 32 |  D T("corrections.")
 | 
|---|
| 33 |  S XMDUZ="INTEGRATED BILLING PACKAGE",XMTEXT="IBT("
 | 
|---|
| 34 |  S XMY("G.IBCNR EPHARM")=""
 | 
|---|
| 35 |  D ZXMD
 | 
|---|
| 36 |  K ^TMP($J,"IBDRUG")
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  ;call mailman in background (using taskman)
 | 
|---|
| 40 | ZXMD ;
 | 
|---|
| 41 |  N ZTIO,ZTRTN,ZTDTH,ZTSAVE,ZTDESC
 | 
|---|
| 42 |  N %,%H,%I,X
 | 
|---|
| 43 |  D NOW^%DTC
 | 
|---|
| 44 |  S ZTIO="",ZTDTH=%,ZTDESC="NCPDP BILLING ERROR BULLETIN"
 | 
|---|
| 45 |  S ZTSAVE("IBT*")="",ZTSAVE("XM*")=""
 | 
|---|
| 46 |  S ZTRTN="^XMD"
 | 
|---|
| 47 |  D ^%ZTLOAD
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | T(IBTXT) ; Add text to the message
 | 
|---|
| 51 |  S IBC=IBC+1,IBT(IBC)=$G(IBTXT," ")
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ;-------------------------
 | 
|---|
| 55 |  ;Release charges off hold bulletin
 | 
|---|
| 56 | RELBUL(DFN,IBRX,IBFIL,IBADT,IBACT,IBCR,IBCC,IBIFN,IBRETR) ;
 | 
|---|
| 57 |  ; Input:
 | 
|---|
| 58 |  ;   DFN - Patient
 | 
|---|
| 59 |  ;   IBRX - Rx IEN
 | 
|---|
| 60 |  ;   IBFIL - Refill#
 | 
|---|
| 61 |  ;   IBADT - Fill date
 | 
|---|
| 62 |  ;   IBACT
 | 
|---|
| 63 |  ;    -1  if ^IBR error - when the charge was sent to AR
 | 
|---|
| 64 |  ;    0   == charge was not found 
 | 
|---|
| 65 |  ;   IBCR - Close Reason code (.01 of BPS CLOSE REASON)
 | 
|---|
| 66 |  ;   IBCC - Close Reason Comment
 | 
|---|
| 67 |  ;   IBIFN - 3rd party bill IEN
 | 
|---|
| 68 |  ;   IBRETR - attempt # after which a bulletion was sent
 | 
|---|
| 69 |  N IBT,IBC,IBGRP,XMSUB,XMDUZ,XMY,XMTEXT,VAERR,VADM,X,VA
 | 
|---|
| 70 |  N IBNAME,IBAGE,IBPID,IBBID,IBRXN
 | 
|---|
| 71 |  D DEM^VADPT ; get patient demographic data
 | 
|---|
| 72 |  I VAERR K VADM
 | 
|---|
| 73 |  S IBNAME=$$PR($G(VADM(1)),26)
 | 
|---|
| 74 |  S IBAGE=$$PR($G(VADM(4)),3)
 | 
|---|
| 75 |  S IBPID=$G(VA("PID"))
 | 
|---|
| 76 |  S IBBID=$G(VA("BID"))
 | 
|---|
| 77 |  S XMSUB=$E(IBNAME,1,8)_"("_IBBID_")"_" PATIENT CHRG NOT RELEASED"_"-"_$E($P($$MCDIV(IBRX,IBFIL),U),1,11)
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 |  S IBC=0
 | 
|---|
| 80 |  ;include a standard CHRG NOT RELEASED text
 | 
|---|
| 81 |  D T("The following charge has not been released from HOLD. Copay was not released")
 | 
|---|
| 82 |  D T("due to technical problems"_$S($G(IBACT)=-1:" with passing the payment to AR.",1:"."))
 | 
|---|
| 83 |  D T("Please review manually and release if necessary.")
 | 
|---|
| 84 |  ;if release of copay attempt was due to claim closing process - include a close reason
 | 
|---|
| 85 |  I IBCR D T("Note: the e-pharmacy claim was closed by OPECC as '"_$$REASON^IBNCPDPU(IBCR)_"'")
 | 
|---|
| 86 |  I $G(IBCC)'="" D T("Additional comment: "_IBCC)
 | 
|---|
| 87 |  D T()
 | 
|---|
| 88 |  D T("Name: "_IBNAME_"   Age    : "_IBAGE_"       Pt. ID: "_IBPID)
 | 
|---|
| 89 |  S IBRXN=$$FILE^IBRXUTL(IBRX,.01)
 | 
|---|
| 90 |  D T("Rx #: "_$$PR(IBRXN_$S(IBFIL:" ("_IBFIL_")",1:""),28)_" Fill Dt: "_$$DAT1^IBOUTL(IBADT))
 | 
|---|
| 91 |  D T()
 | 
|---|
| 92 |  D:$G(IBRETR)>0 T("Attempts to release a copay from hold: "_$G(IBRETR))
 | 
|---|
| 93 |  ;D CHRG
 | 
|---|
| 94 |  ; Transmit mail
 | 
|---|
| 95 |  S XMDUZ="INTEGRATED BILLING PACKAGE",XMTEXT="IBT("
 | 
|---|
| 96 |  S XMY("G.IBCNR EPHARM")=""
 | 
|---|
| 97 |  D ^XMD
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | CHRG ; gets charge data and sets up charge lines
 | 
|---|
| 101 |  N IBTYP,IBFR,IBTO,IBX,IBX1,IBRXN,IBRF,IENS
 | 
|---|
| 102 |  S IBX=$G(^IB(IBACT,0))
 | 
|---|
| 103 |  S IBX1=$G(^IB(IBACT,1))
 | 
|---|
| 104 |  S IBFR=$$DAT1^IBOUTL($S($P(IBX,U,14)'="":($P(IBX,U,14)),1:$P(IBX1,U,2)))
 | 
|---|
| 105 |  S IBTO=$$DAT1^IBOUTL($S($P(IBX,U,15)'="":($P(IBX,U,15)),1:$P(IBX1,U,2)))
 | 
|---|
| 106 |  S IBRXN=$$FILE^IBRXUTL(IBRX,.01) ;$P($P(IBX,U,8),"-")
 | 
|---|
| 107 |  S IBTYP=$P(IBX,U,3)
 | 
|---|
| 108 |  S:IBTYP IBTYP=$P($G(^IBE(350.1,IBTYP,0)),U,3)
 | 
|---|
| 109 |  S:IBTYP IBTYP=$P($$CATN^PRCAFN(IBTYP),U,2)
 | 
|---|
| 110 |  D T("Type: "_$$PR(IBTYP,28)_" Amount : $"_$J(+$P(IBX,U,7),0,2))
 | 
|---|
| 111 |  D T("From: "_$$PR(IBFR,28)_" To     : "_IBTO)
 | 
|---|
| 112 |  D T("Rx #: "_$$PR(IBRXN_$S(IBFIL:" ("_IBFIL_")",1:""),28)_" Fill Dt: "_$$DAT1^IBOUTL(IBADT))
 | 
|---|
| 113 |  D T()
 | 
|---|
| 114 |  D T("REFERENCE NUMBER : "_$P(IBX,U))
 | 
|---|
| 115 |  D T("FIRST PARTY BILL : "_$P(IBX,U,11))
 | 
|---|
| 116 |  I $G(IBIFN) D T("THIRD PARTY BILL : "_$P($G(^PRCA(430,+IBIFN,0)),U))
 | 
|---|
| 117 |  Q
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 | PR(STR,LEN) ; pad right
 | 
|---|
| 120 |  N B S STR=$E(STR,1,LEN),$P(B," ",LEN-$L(STR))=" "
 | 
|---|
| 121 |  Q STR_$G(B)
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  ;MC Division for the IB
 | 
|---|
| 124 | MCDIV(IBRX,IBFIL) ; Get MC DIVISION name from the Rx/Fill
 | 
|---|
| 125 |  N IBDIV,IBINST,IBMCDIV,IBNAM,IBUNK,PSOFILE,DIR,DIQ,DA,DR,DFN,DIC
 | 
|---|
| 126 |  S IBUNK="DIV UNKNWN"
 | 
|---|
| 127 |  ; outpatient division
 | 
|---|
| 128 |  S DFN=$$FILE^IBRXUTL(IBRX,2)
 | 
|---|
| 129 |  I '$G(IBFIL) S IBDIV=$$FILE^IBRXUTL(IBRX,20)
 | 
|---|
| 130 |  E  S IBDIV=+$P($$ZEROSUB^IBRXUTL(DFN,IBRX,IBFIL),U,9)
 | 
|---|
| 131 |  I 'IBDIV Q IBUNK
 | 
|---|
| 132 |  ; related institution
 | 
|---|
| 133 |  S PSOFILE=59,DIC=59,DIQ="IBRXARR",DIQ(0)="I",DA=IBDIV,DR=100
 | 
|---|
| 134 |  D DIQ^PSODI(PSOFILE,DIC,DR,DA,.DIQ)
 | 
|---|
| 135 |  S IBINST=$G(IBRXARR(59,DA,100,"I")) Q:'IBINST IBUNK
 | 
|---|
| 136 |  S IBMCDIV=+$O(^DG(40.8,"AD",IBINST,0)) ; medical center division
 | 
|---|
| 137 |  I 'IBMCDIV Q IBUNK
 | 
|---|
| 138 |  S IBNAM=$P($G(^DG(40.8,IBMCDIV,0)),U)
 | 
|---|
| 139 |  K IBRXARR,PSODIY
 | 
|---|
| 140 |  Q $S(IBNAM="":IBUNK,1:IBNAM)_U_IBMCDIV
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  ;IBNCPEB
 | 
|---|