| [623] | 1 | IBCEU3 ;ALB/TMP - EDI UTILITIES FOR 1500 CLAIM FORM ; 12/29/05 9:58am
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**51,137,155,323,348**;21-MAR-94;Build 5
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | BOX19(IBIFN) ; Returns the text that should print in box 19 of the CMS-1500
 | 
|---|
 | 5 |  ;   for bill ien IBIFN
 | 
|---|
 | 6 |  ; Data is derived from a combo of data throughout
 | 
|---|
 | 7 |  ; the system and is limited to 80 characters.  The hierarchy for
 | 
|---|
 | 8 |  ; including data is as follows (until 80 characters have been used):
 | 
|---|
 | 9 |  ;   DATE LAST SEEN and REFERRING PHYSICIAN ID# (physical therapy)
 | 
|---|
 | 10 |  ;                      specialty codes = 025,065,073,067,048
 | 
|---|
 | 11 |  ;   LAST X-RAY DATE (chiropractic) specialty code = 35
 | 
|---|
 | 12 |  ;   HOMEBOUND INDICATOR (independent lab renders an EKG or obtains
 | 
|---|
 | 13 |  ;                        a specimen from a homebound patient)
 | 
|---|
 | 14 |  ;   NO ASSIGNMENT OF BENEFITS (if no assignment of benefits indicated)
 | 
|---|
 | 15 |  ;   Hearing aid testing (if applicable)
 | 
|---|
 | 16 |  ;   ATTENDING PHYSICIAN NOT HOSPICE EMPLOYEE (if applicable)
 | 
|---|
 | 17 |  ;   SPECIAL PROGRAM indicator if Medicare demonstration project for
 | 
|---|
 | 18 |  ;                   lung volume reduction surgery study is set
 | 
|---|
 | 19 |  ;   COMMENTS FOUND IN BOX 19 DATA FIELD FOR THE CLAIM
 | 
|---|
 | 20 |  ;   REMARKS FOUND IN BILL COMMENT FOR THE CLAIM, INCLUDING PROSTHETICS
 | 
|---|
 | 21 |  ;     DETAIL
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 |  N IBGO,IBHOSP,IBID,IBLSDT,IBXDATA,IB19,IBHAID,IBXRAY,IBSPEC,Z,Z0,IBSUB,IBPRT,IBREM
 | 
|---|
 | 24 |  S IB19="",IBGO=1
 | 
|---|
 | 25 |  S IBSUB=$S('$G(^TMP("IBTX",$J,IBIFN)):"BOX24",1:"OUTPT")
 | 
|---|
 | 26 |  I $D(IBXSAVE(IBSUB)) N IBXSAVE
 | 
|---|
 | 27 |  S IBPRT=(IBSUB["24")
 | 
|---|
 | 28 |  ;
 | 
|---|
 | 29 |  S IBSPEC=$$BILLSPEC(IBIFN)
 | 
|---|
 | 30 |  G:'IBPRT NPRT
 | 
|---|
 | 31 |  I "^25^65^73^67^48^"[(U_IBSPEC_U) D
 | 
|---|
 | 32 |  . K IBXDATA D F^IBCEF("N-DATE LAST SEEN",,,IBIFN)
 | 
|---|
 | 33 |  . I IBXDATA'="" S IBID="",IBLSDT=$$DATE^IBCF2(IBXDATA,0,1) D  I IBLSDT'="" S IBGO=$$LENOK("Date Last Seen:"_IBLSDT_IBID,.IB19)
 | 
|---|
 | 34 |  .. ; Only print if specialty is OT or PT or proc for routine foot care
 | 
|---|
 | 35 |  .. D F^IBCEF("N-REFERRING PROVIDER ID",,,IBIFN) I IBXDATA'="" S IBID=" By:"_IBXDATA
 | 
|---|
 | 36 |  ;
 | 
|---|
 | 37 |  G:'IBGO BOX19Q
 | 
|---|
 | 38 |  K IBXDATA D F^IBCEF("N-HOMEBOUND",,,IBIFN)
 | 
|---|
 | 39 |  I IBXDATA G:'$$LENOK("Homebound",.IB19) BOX19Q
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 |  K IBXDATA D F^IBCEF("N-ASSIGN OF BENEFITS INDICATOR",,,IBIFN)
 | 
|---|
 | 42 |  I "Nn0"[IBXDATA&(IBXDATA'="") G:'$$LENOK("Patient refuses to assign benefits",.IB19) BOX19Q
 | 
|---|
 | 43 |  ;
 | 
|---|
 | 44 |  I '$D(IBXSAVE(IBSUB)) D B24^IBCEF3(.IBXSAVE,IBIFN,$S($G(IBNOSHOW)=0:0,1:1))
 | 
|---|
 | 45 |  ;
 | 
|---|
 | 46 |  S (IBHAID,IBHOSP,IBXRAY)=0
 | 
|---|
 | 47 |  ;
 | 
|---|
 | 48 |  S Z=0 F  S Z=$O(IBXSAVE(IBSUB,Z)) Q:'Z  D  G:'IBGO BOX19Q
 | 
|---|
 | 49 |  . I $D(IBXSAVE(IBSUB,Z,"RX")),$P(IBXSAVE(IBSUB,Z,"RX"),U,3)="" S IBGO=$$LENOK("NOC Drug:"_$P(IBXSAVE(IBSUB,Z,"RX"),U,2)_" Units:"_+$P(IBXSAVE(IBSUB,Z,"RX"),U,6),.IB19)
 | 
|---|
 | 50 |  . ;
 | 
|---|
 | 51 |  . Q:'IBGO
 | 
|---|
 | 52 |  . I 'IBHAID,$P(IBXSAVE(IBSUB,Z),U,5)="V5010",$$COBCT^IBCEF(IBIFN)>1 D  Q
 | 
|---|
 | 53 |  .. S IBHAID=1,IBGO=$$LENOK("Testing for hearing aid",.IB19) Q
 | 
|---|
 | 54 |  . ;
 | 
|---|
 | 55 |  . Q:'IBGO
 | 
|---|
 | 56 |  . I 'IBHOSP,$P($G(IBXSAVE(IBSUB,Z,"AUX")),U,3) D  Q
 | 
|---|
 | 57 |  .. S IBHOSP=1,IBGO=$$LENOK("Attending physician,not hospice employee",.IB19)
 | 
|---|
 | 58 |  . ;
 | 
|---|
 | 59 |  . Q:'IBGO
 | 
|---|
 | 60 |  . I 'IBXRAY,IBSPEC=35,$G(IBXSAVE(IBSUB,Z,"AUX"))'="" D  Q
 | 
|---|
 | 61 |  .. ; Check for chiropratic services in claim type or specialty
 | 
|---|
 | 62 |  .. S IBXRAY=1
 | 
|---|
 | 63 |  .. S IBGO=$$LENOK($S($P(IBXSAVE(IBSUB,Z,"AUX"),U,2):"Last Xray:"_$$DATE^IBCF2($P(IBXSAVE(IBSUB,Z,"AUX"),U,2),0,1)_" ",1:"")_$S($P(IBXSAVE(IBSUB,Z,"AUX"),U,4)'="":"Level of Sublux:"_$P(IBXSAVE(IBSUB,Z,"AUX"),U,4),1:""),.IB19)
 | 
|---|
 | 64 |  ;
 | 
|---|
 | 65 |  G:'IBGO BOX19Q
 | 
|---|
 | 66 |  K IBXDATA D F^IBCEF("N-SPECIAL PROGRAM",,,IBIFN)
 | 
|---|
 | 67 |  I IBXDATA=30 G:'$$LENOK("Medicare demonstration project for lung volume reduction surgery study",.IB19) BOX19Q
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 |  G:'IBGO BOX19Q
 | 
|---|
 | 70 | NPRT K IBXDATA D F^IBCEF("N-HCFA 1500 BOX 19 RAW DATA",,,IBIFN)
 | 
|---|
 | 71 |  S IBREM=0
 | 
|---|
 | 72 |  I IBXDATA'="" G:'$$LENOK("Remarks:"_IBXDATA,.IB19) BOX19Q S IBREM=1
 | 
|---|
 | 73 |  K IBXDATA D F^IBCEF("N-BILL REMARKS",,,IBIFN)
 | 
|---|
 | 74 |  I IBXDATA'="" G:'$$LENOK($S('IBREM:"Remarks:",1:"")_IBXDATA,.IB19) BOX19Q
 | 
|---|
 | 75 |  ;
 | 
|---|
 | 76 | BOX19Q Q IB19
 | 
|---|
 | 77 |  ;
 | 
|---|
 | 78 | LENOK(IBDATA,IB19) ; Add text IBDATA to box 19 string (IB19 passed by ref)
 | 
|---|
 | 79 |  ; Check length of box 19 data - truncate at 96 (max length)
 | 
|---|
 | 80 |  ; Returns 0 if max length reached or exceeded, otherwise, 1
 | 
|---|
 | 81 |  N OK
 | 
|---|
 | 82 |  S OK=1
 | 
|---|
 | 83 |  S IB19=IB19_$S(IB19'="":" ",1:"")_$G(IBDATA)
 | 
|---|
 | 84 |  I $L(IB19)'<96 S OK=0,IB19=$E(IB19,1,96) G LENOKQ
 | 
|---|
 | 85 | LENOKQ Q OK
 | 
|---|
 | 86 |  ;
 | 
|---|
 | 87 | ASK19(IBIFN) ; Ask to display CMS-1500 box 19 data for current IBIFN
 | 
|---|
 | 88 |  N DIR,DIC,X,Y,DIE,DR,Z
 | 
|---|
 | 89 |  S DIR(0)="YA",DIR("B")="NO",DIR("A")="DISPLAY THE FULL CMS-1500 BOX 19?: "
 | 
|---|
 | 90 |  D ^DIR
 | 
|---|
 | 91 |  I Y=1 S Z=$$BOX19(IBIFN) W !!,?4,"19",?20,$E(Z,1,32) W:$L(Z)>32 !,?4,$E(Z,33,80),!
 | 
|---|
 | 92 |  Q
 | 
|---|
 | 93 |  ;
 | 
|---|
 | 94 | ONLAB(IBIFN) ; Functions returns 1 if the bill IBIFN is outside non-lab
 | 
|---|
 | 95 |  N IBP,IBPUR
 | 
|---|
 | 96 |  S IBP=0
 | 
|---|
 | 97 |  S IBPUR=$P($G(^DGCR(399,IBIFN,"U2")),U,11)
 | 
|---|
 | 98 |  I IBPUR,"13"[IBPUR S IBP=1
 | 
|---|
 | 99 |  Q IBP
 | 
|---|
 | 100 |  ;
 | 
|---|
 | 101 | TEXT24(FLD,IBXSAVE,IBXDATA,IBSUB) ; Format the text line of box 24 by fld
 | 
|---|
 | 102 |  ; INPUT:
 | 
|---|
 | 103 |  ;   FLD = the letter of the field in box 24 (A-J)
 | 
|---|
 | 104 |  ;   IBXSAVE = passed by reference = extracted data for the box 24 lines
 | 
|---|
 | 105 |  ;   IBSUB = the subscript of the IBXSAVE array to use.
 | 
|---|
 | 106 |  ;           If null, use "BOX24"
 | 
|---|
 | 107 |  ; OUTPUT:
 | 
|---|
 | 108 |  ;   IBXDATA = passed by reference, set to the correct part of the
 | 
|---|
 | 109 |  ;             text that will print in the field's positions
 | 
|---|
 | 110 |  ;
 | 
|---|
 | 111 |  ; esg - 8/14/06 - modified for the new cms-1500 form - IB*2*348
 | 
|---|
 | 112 |  ;
 | 
|---|
 | 113 |  N Z,IBLINE,IBVAL,IBS,IBE,IBTEXT,IBAUX,IBDAT,IBZ,IBREN,IBRENQ,IBRENNPI,IBRENSID
 | 
|---|
 | 114 |  K IBXDATA
 | 
|---|
 | 115 |  S (IBLINE,Z)=0 S:$G(IBSUB)="" IBSUB="BOX24"
 | 
|---|
 | 116 |  ;
 | 
|---|
 | 117 |  I FLD="I"!(FLD="J") D   ; extract the Rendering provider data
 | 
|---|
 | 118 |  . I '$G(IBXIEN) Q       ; assume that the claim# exists
 | 
|---|
 | 119 |  . S IBREN=$$CFIDS^IBCEF77(IBXIEN)
 | 
|---|
 | 120 |  . S IBRENQ=$P(IBREN,U,1)    ; qual
 | 
|---|
 | 121 |  . S IBRENSID=$P(IBREN,U,2)  ; id
 | 
|---|
 | 122 |  . S IBRENNPI=$P(IBREN,U,3)  ; npi
 | 
|---|
 | 123 |  . Q
 | 
|---|
 | 124 |  ;
 | 
|---|
 | 125 |  F  S Z=$O(IBXSAVE(IBSUB,Z)) Q:'Z  D
 | 
|---|
 | 126 |  . S IBDAT=$G(IBXSAVE(IBSUB,Z))
 | 
|---|
 | 127 |  . S IBAUX=$G(IBXSAVE(IBSUB,Z,"AUX"))
 | 
|---|
 | 128 |  . S IBTEXT=$G(IBXSAVE(IBSUB,Z,"TEXT"))
 | 
|---|
 | 129 |  . S IBZ=$P(IBAUX,U,9)
 | 
|---|
 | 130 |  . I IBZ="" S IBZ="  "
 | 
|---|
 | 131 |  . S IBTEXT=IBZ_IBTEXT
 | 
|---|
 | 132 |  . ;
 | 
|---|
 | 133 |  . I $S($G(IBAC)=4:$S($D(IBXSAVE(IBSUB,Z,"ARX")):1,1:$D(IBXSAVE(IBSUB,Z,"A"))),$D(IBXSAVE(IBSUB,Z,"RX")):0,1:$G(IBNOSHOW)) S IBTEXT=""
 | 
|---|
 | 134 |  . ;
 | 
|---|
 | 135 |  . I FLD="AF" S IBVAL=$P(IBDAT,U),IBS=1,IBE=9 D   ; From date of service
 | 
|---|
 | 136 |  .. S IBVAL=$E(IBVAL,1,2)_" "_$E(IBVAL,3,4)_" "_$E(IBVAL,7,8)
 | 
|---|
 | 137 |  .. Q
 | 
|---|
 | 138 |  . ;
 | 
|---|
 | 139 |  . I FLD="AT" S IBVAL=$S($P(IBDAT,U,2):$P(IBDAT,U,2),1:$P(IBDAT,U)),IBS=10,IBE=18 D    ; To date of service
 | 
|---|
 | 140 |  .. S IBVAL=$E(IBVAL,1,2)_" "_$E(IBVAL,3,4)_" "_$E(IBVAL,7,8)
 | 
|---|
 | 141 |  .. Q
 | 
|---|
 | 142 |  . ;
 | 
|---|
 | 143 |  . I FLD="B" S IBVAL=$P(IBDAT,U,3),IBS=19,IBE=21   ; place of service
 | 
|---|
 | 144 |  . I FLD="C" S IBVAL=$S($P(IBDAT,U,13)=1:"Y",1:""),IBS=22,IBE=24   ; emergency indicator
 | 
|---|
 | 145 |  . I FLD="D" S IBVAL=$P(IBDAT,U,5),IBS=25,IBE=44 D   ; procedures and modifiers
 | 
|---|
 | 146 |  .. N M S M=$$MODLST^IBEFUNC($P(IBDAT,U,10))       ; modifier list
 | 
|---|
 | 147 |  .. S IBVAL=$$FO^IBCNEUT1(IBVAL,6)_"  "            ; procedure code
 | 
|---|
 | 148 |  .. S IBVAL=IBVAL_$$FO^IBCNEUT1($P(M,",",1),3)     ; mod#1
 | 
|---|
 | 149 |  .. S IBVAL=IBVAL_$$FO^IBCNEUT1($P(M,",",2),3)     ; mod#2
 | 
|---|
 | 150 |  .. S IBVAL=IBVAL_$$FO^IBCNEUT1($P(M,",",3),3)     ; mod#3
 | 
|---|
 | 151 |  .. S IBVAL=IBVAL_$$FO^IBCNEUT1($P(M,",",4),3)     ; mod#4
 | 
|---|
 | 152 |  .. Q
 | 
|---|
 | 153 |  . ;
 | 
|---|
 | 154 |  . I FLD="E" S IBVAL=$TR($P(IBDAT,U,7),","),IBS=45,IBE=48  ; diagnosis pointer
 | 
|---|
 | 155 |  . I FLD="F" S IBVAL=$P(IBDAT,U,8)*$P(IBDAT,U,9),IBS=49,IBE=57 D
 | 
|---|
 | 156 |  .. ; total charges
 | 
|---|
 | 157 |  .. S IBVAL=$$DOL^IBCEF77(IBVAL,9)
 | 
|---|
 | 158 |  .. Q
 | 
|---|
 | 159 |  . ;
 | 
|---|
 | 160 |  . I FLD="G" S IBVAL=$S($P(IBDAT,U,12):$P(IBDAT,U,12),1:$P(IBDAT,U,9)),IBS=58,IBE=61 D
 | 
|---|
 | 161 |  .. ; days or units or anesthesia minutes
 | 
|---|
 | 162 |  .. S IBVAL=$J(+IBVAL,4)
 | 
|---|
 | 163 |  .. Q
 | 
|---|
 | 164 |  . ;
 | 
|---|
 | 165 |  . ; columns H,I,J don't have any free text supplemental information
 | 
|---|
 | 166 |  . ;
 | 
|---|
 | 167 |  . I FLD="H" D     ; epsdt family plan
 | 
|---|
 | 168 |  .. S IBVAL=$P(IBAUX,U,7),IBS=0,IBE=0,IBTEXT=""   ; line 1 blank
 | 
|---|
 | 169 |  .. I IBVAL S IBVAL="Y"
 | 
|---|
 | 170 |  .. Q
 | 
|---|
 | 171 |  . I FLD="I" D     ; ID qualifier for rendering provider
 | 
|---|
 | 172 |  .. S IBVAL="",IBS=1,IBE=2   ; line 2 blank
 | 
|---|
 | 173 |  .. S IBTEXT=$G(IBRENQ)      ; qualifier on line 1
 | 
|---|
 | 174 |  .. Q
 | 
|---|
 | 175 |  . I FLD="J" D     ; rendering provider ID and NPI
 | 
|---|
 | 176 |  .. S IBTEXT=$G(IBRENSID),IBS=1,IBE=11   ; secondary ID line 1
 | 
|---|
 | 177 |  .. S IBVAL=$G(IBRENNPI)                 ; NPI# line 2
 | 
|---|
 | 178 |  .. Q
 | 
|---|
 | 179 |  . ;
 | 
|---|
 | 180 |  . S IBLINE=IBLINE+1                      ; top line
 | 
|---|
 | 181 |  . S IBXDATA(IBLINE)=$E(IBTEXT,IBS,IBE)   ; text in shaded area (top)
 | 
|---|
 | 182 |  . S IBLINE=IBLINE+1             ; bottom line
 | 
|---|
 | 183 |  . S IBXDATA(IBLINE)=IBVAL       ; field value in unshaded area (bottom)
 | 
|---|
 | 184 |  . Q
 | 
|---|
 | 185 |  ;
 | 
|---|
 | 186 |  Q
 | 
|---|
 | 187 |  ;
 | 
|---|
 | 188 | BILLSPEC(IBIFN,IBPRV) ;  Returns the specialty of the provider on bill IBIFN
 | 
|---|
 | 189 |  ; If IBPRV is supplied, returns the data for that provider, otherwise,
 | 
|---|
 | 190 |  ;  returns the specialty of the 'main/required' provider on the bill.
 | 
|---|
 | 191 |  ;  Default = 99 if no valid code found
 | 
|---|
 | 192 |  ; IBPRV = vp of provider (file 200 or 355.93)
 | 
|---|
 | 193 |  N Z,IBSPEC,IBINS,IBDT
 | 
|---|
 | 194 |  S IBSPEC="",IBPRV=$G(IBPRV)
 | 
|---|
 | 195 |  S IBDT=$P($G(^DGCR(399,+IBIFN,"U")),U,1)  ; use statement from date
 | 
|---|
 | 196 |  ;
 | 
|---|
 | 197 |  I $G(IBPRV) D  G SPECQ
 | 
|---|
 | 198 |  . S IBSPEC=$$SPEC^IBCEU(IBPRV,IBDT)
 | 
|---|
 | 199 |  ;
 | 
|---|
 | 200 |  ;Get rendering for professional, attending for institutional,
 | 
|---|
 | 201 |  S IBINS=($$FT^IBCEF(IBIFN)=3)
 | 
|---|
 | 202 |  D GETPRV^IBCEU(IBIFN,"ALL",.IBPRV)
 | 
|---|
 | 203 |  S Z=$S('IBINS:3,1:4)
 | 
|---|
 | 204 |  I $G(IBPRV(Z,1))'="" D
 | 
|---|
 | 205 |  . I $P(IBPRV(Z,1),U,3) S IBSPEC=$$SPEC^IBCEU($P($G(IBPRV(Z,1)),U,3),IBDT) Q:IBSPEC'=""
 | 
|---|
 | 206 |  . S Z0=+$O(^DGCR(399,IBIFN,"PRV","B",Z,0))
 | 
|---|
 | 207 |  . I Z0,$P($G(^DGCR(399,IBIFN,"PRV",Z0,0)),U,8)'="" S IBSPEC=$P(^(0),U,8)
 | 
|---|
 | 208 |  ;
 | 
|---|
 | 209 | SPECQ I IBSPEC="" S IBSPEC="99"
 | 
|---|
 | 210 |  Q IBSPEC
 | 
|---|
 | 211 |  ;
 | 
|---|
 | 212 | CHAMPVA(IBIFN) ; Returns 1 if the bill IBIFN has a CHAMPVA rate type
 | 
|---|
 | 213 |  Q $E($P($G(^DGCR(399.3,+$P($G(^DGCR(399,IBIFN,0)),U,7),0)),U),1,7)="CHAMPVA"
 | 
|---|
 | 214 |  ;
 | 
|---|
 | 215 | FAC(IBIFN) ; Is facility always to print in box 32 for bill ien IBIFN?
 | 
|---|
 | 216 |  ;  Returns 1 if yes, 0 if no
 | 
|---|
 | 217 |  Q $S($P($G(^DGCR(399,IBIFN,"UF2")),U,2):1,1:$P($G(^IBE(350.9,1,2)),U,12))
 | 
|---|
 | 218 |  ;
 | 
|---|
 | 219 | MCR24K(IBIFN) ;Function returns MEDICARE id# for professional (CMS-1500) box 24k for bill IBIFN if appropriate
 | 
|---|
 | 220 |  Q $S($$FT^IBCEF(IBIFN)=2&$$MCRONBIL^IBEFUNC(IBIFN):"V"_$$MCRSPEC^IBCEU4(IBIFN,1)_$P($$SITE^VASITE,U,3),1:"")
 | 
|---|