- IBCEU7 ;ALB/DEM - EDI UTILITIES ;26-SEP-2010
- ;;2.0;INTEGRATED BILLING;**432,592,623**;21-MAR-94;Build 70
- ;;Per VA Directive 6402, this routine should not be modified.
- Q
- ;
- LNPRVOK(VAL,IBIFN) ; Check bill form & line prov function agree
- ; DEM;432 - New routine for Claim Line Provider.
- ; VAL = internal value of prov function
- ;
- ; Allowable line provider functions for UB04 (FORM TYPE = 3)
- ; Inpatient and UB04 Outpatient:
- ; - Rendering Provider(3).
- ; - Referring Provider(1).
- ; - Operating Physician(2).
- ; - Other Operating Physician(9).
- ;
- ; Allowable line provider functions for CMS 1500 (FORM TYPE = 2)
- ; Inpatient and CMS 1500 Outpatient:
- ; - Rendering Provider(3).
- ; - Referring Provider(1).
- ; - Supervising Provider(5).
- ;
- ;JWS;IB*2.0*592 US1108
- ; Allowable line provider functions for J430D Dental (FORM TYPE = 7)
- ; Inpatient and CMS 1500 Outpatient:
- ; - Rendering Provider(3).
- ; - Referring Provider(1).
- ; - Supervising Provider(5).
- ; - Assistant Surgeon (6). - Dental J430D only
- ;
- N OK,IBUB
- S VAL=$$UP^XLFSTR(VAL)
- S OK=$S(VAL'="":1,1:0)
- G:'OK!'$G(IBIFN) PRVQ
- ;
- ;JWS;IB*2.0*592 US1108 - 2 for form#7 Dental
- S IBUB=$S($$FT^IBCEF(IBIFN)=7:2,1:($$FT^IBCEF(IBIFN)=3)) ; 1 if UB-04 ; 0 if CMS-1500 ; 2 if J430D Dental form
- ;
- S OK=0
- I IBUB=1,"1239"[VAL S OK=1 ; UB-04
- I 'IBUB,"135"[VAL S OK=1 ; CMS-1500
- ;JWS;IB*2.0*592 US1108 J430D Dental
- I IBUB=2,"1356"[VAL S OK=1
- ;
- PRVQ Q OK
- ;
- LNPRVHLP ;Helptext for line provider function.
- ;
- N IBZ,IBQUIT,VALUE,FORMAT
- F IBZ=1:1 S:$P($T(HLPTXT+IBZ),";;",2)="END" IBQUIT=1 Q:$G(IBQUIT) D
- . S VALUE=$P($T(HLPTXT+IBZ),";;",2)
- . S FORMAT=$S(VALUE="":"!",1:"")
- . D EN^DDIOL(VALUE,"",FORMAT)
- . Q
- Q
- ;
- HLPTXT ; Helptext for line provider function.
- ;;
- ;;Enter the name of the line level provider who provided this service.
- ;;Line level providers are optional and should only be entered if
- ;;different from the claim level provider.
- ;;
- ;;
- ;;END
- ;
- HLPTXT2 ; ***Currently, not activated*** - Helptext for line provider function.
- ;;
- ;;LINE PROVIDER FUNCTION requirements:
- ;;
- ;;Allowable line provider functions for UB04 Inpatient and Outpatient:
- ;;
- ;; - Rendering Provider(3).
- ;; - Referring Provider(1).
- ;; - Operating Physician(2).
- ;; - Other Operating Physician(9).
- ;;
- ;;Allowable line provider functions for CMS 1500 Inpatient and Outpatient:
- ;;
- ;; - Rendering Provider(3).
- ;; - Referring Provider(1).
- ;; - Supervising Provider(5).
- ;;
- ;; Allowable line provider functions for J430D Dental (FORM TYPE = 7)
- ;; Inpatient and CMS 1500 Outpatient:
- ;; - Rendering Provider(3).
- ;; - Referring Provider(1).
- ;; - Supervising Provider(5).
- ;; - Assistant Surgeon (6).
- ;;
- ;;END
- Q
- ;
- LNPRVFT(IBFT,IBLNPRV) ; DEM;432 - Field Index "AK" (#301) on FORM TYPE field (399,.19).
- ;
- ; Description:
- ;
- ; This function is called by the FORM TYPE (399,.19) "AK" field index.
- ; In the case when the FORM TYPE field is changed, then the line
- ; provider types are checked to see if any, or all, line providers
- ; need to be deleted from the claim.
- ;
- ; Input:
- ;
- ; IBFT = FORM TYPE = 2 = (CMS-1500), or FORM TYPE = 3 = (UB-04).
- ; Must be either FORM TYPE 2, or FORM TYPE 3 to continue.
- ; See allowable line provider functions by FORM TYPE below.
- ; IBLNPRV = Array passed by reference.
- ;
- ; Output:
- ;
- ; OK = 1 = line providers to delete, OK = 0 = no line providers to delete.
- ; IBLNPRV Array = If line providers to delete, then array contains
- ; these line providers - IBLNPRV(399.0404,"IENS",.01)="@"
- ;
- ; Allowable line provider functions for UB04 (FORM TYPE = 3)
- ; Inpatient and UB04 Outpatient:
- ; - Rendering Provider(VAL=3).
- ; - Referring Provider(VAL=1).
- ; - Operating Physician(VAL=2).
- ; - Other Operating Physician(VAL=9).
- ;
- ; Allowable line provider functions for CMS 1500 (FORM TYPE = 2)
- ; Inpatient and CMS 1500 Outpatient:
- ; - Rendering Provider(VAL=3).
- ; - Referring Provider(VAL=1).
- ; - Supervising Provider(VAL=5).
- ;
- ; Allowable line provider functions for J430D (FORM TYPE = 7)
- ; Dental:
- ; - Rendering Provider(VAL=3).
- ; - Referring Provider(VAL=1).
- ; - Supervising Provider(VAL=5).
- ; - Assistant Surgeon(VAL=6).
- ;
- Q:'$G(IBIFN) 0 ; QUIT 0 if no claim number.
- Q:'$G(IBFT) 0 ; QUIT 0 if no FORM TYPE.
- ;JWS;IB*2.0*592 US1108
- Q:(IBFT'=2)&(IBFT'=3)&(IBFT'=7) 0 ; QUIT 0 - Must be CMS-1500 (2) or UB-04 (3) or J430D (7) FORM TYPE.
- ;
- N IBPRVFUN,OK
- S:IBFT=3 IBPRVFUN("VAL",IBFT)="1239" ; Allowable LINE PROVIDER FUNCTIONs for UB-04.
- S:IBFT=2 IBPRVFUN("VAL",IBFT)="135" ; Allowable LINE PROVIDER FUNCTIONs for CMS-1500.
- ;JWS;IB*2.0*592 US1108
- S:IBFT=7 IBPRVFUN("VAL",IBFT)="1356" ;Allowable LINE PROVIDER FUNCTIONs for J430D.
- ;
- S OK=0 ; Initialize OK=0.
- ;
- N IBPROCP,IBLPIEN,IBLNPROV,DA
- S IBPROCP=0 F S IBPROCP=$O(^DGCR(399,IBIFN,"CP",IBPROCP)) Q:'IBPROCP D ; Loop on PROCEDURES multiple.
- . Q:'($D(^DGCR(399,IBIFN,"CP",IBPROCP,0))#10) ; No zero node for procedure.
- . S IBPRVFUN=0 F S IBPRVFUN=$O(^DGCR(399,IBIFN,"CP",IBPROCP,"LNPRV","B",IBPRVFUN)) Q:'IBPRVFUN D:IBPRVFUN("VAL",IBFT)'[IBPRVFUN
- . . S IBLPIEN=0 F S IBLPIEN=$O(^DGCR(399,IBIFN,"CP",IBPROCP,"LNPRV","B",IBPRVFUN,IBLPIEN)) Q:'IBLPIEN D
- . . . Q:'($D(^DGCR(399,IBIFN,"CP",IBPROCP,"LNPRV",IBLPIEN,0))#10) ; No zero node for line level provider.
- . . . S IBLNPROV=$P(^DGCR(399,IBIFN,"CP",IBPROCP,"LNPRV",IBLPIEN,0),U,2)
- . . . Q:'IBLNPROV ; No line provider for this line provider function.
- . . . S OK=1,IBLNPRV(399.0404,IBLPIEN_","_IBPROCP_","_IBIFN_",",.01)="@" ; We have at leaset one line provider to delete from claim.
- . . . Q
- . . Q
- . Q
- ;
- Q OK
- ;
- REMOVE(IBIFN,IBFT) ; This will be used to remove all line level providers and all line level attachments from inpatient UB claims
- ;
- ; Input IBIFN - Claim Number
- ;
- Q:IBFT'=3 ; Only worried about UBs
- N IBINPAT
- S IBINPAT=$$INPAT^IBCEF(IBIFN) Q:'IBINPAT ; Quit if it's not an inpatient
- ;
- ; If we got here, we have an inpatient UB
- ; In which case, we should not have any line level providers or line level attachment control numbers
- ; If we do, then let's remove them
- ;
- N CPIEN,LNPRVIEN,FDA,ERR
- S CPIEN=0 F S CPIEN=$O(^DGCR(399,IBIFN,"CP",CPIEN)) Q:'+CPIEN D
- . ;
- . ; Remove the Line level attachments
- . S FDA(399.0304,CPIEN_","_IBIFN_",",70)="@"
- . S FDA(399.0304,CPIEN_","_IBIFN_",",71)="@"
- . S FDA(399.0304,CPIEN_","_IBIFN_",",72)="@"
- . D FILE^DIE("E","FDA")
- . ;
- . K FDA
- . S LNPRVIEN=0 F S LNPRVIEN=$O(^DGCR(399,IBIFN,"CP",CPIEN,"LNPRV",LNPRVIEN)) Q:'+LNPRVIEN D
- .. ;
- .. ;Remove the line level providers
- .. S FDA(399.0404,LNPRVIEN_","_CPIEN_","_IBIFN_",",.01)="@"
- . I $D(FDA) D FILE^DIE("E","FDA")
- Q
- ;
- ; vd - IB*2.0*623 (US4995) - Added the following module of code for ROI validation.
- ROIDTCK(IBIFN) ; Date validator for ROI checking
- ; INPUT:
- ; IBIFN is the internal Claim Number.
- ; OUTPUT:
- ; 0 means the Claim is NOT ROI eligible based upon the Date of Service
- ; 1 means the Claim IS ROI eligible based upon the Date of Service.
- N IBDOS,IBTBD,ROIELG,X,Y
- S ROIELG=0
- S IBDOS=$$BDATE^IBACSV(IBIFN)
- S X=20190128 D ^%DT S IBTBD=Y
- ; DOS prior to 1/28/19 with sensitive diagnosis requires ROI to bill
- ; DOS on or after 1/28/19 with sensitive diagnosis does not require ROI to bill
- I IBDOS<IBTBD S ROIELG=1
- Q ROIELG
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCEU7 7538 printed Feb 18, 2025@23:39:02 Page 2
- IBCEU7 ;ALB/DEM - EDI UTILITIES ;26-SEP-2010
- +1 ;;2.0;INTEGRATED BILLING;**432,592,623**;21-MAR-94;Build 70
- +2 ;;Per VA Directive 6402, this routine should not be modified.
- +3 QUIT
- +4 ;
- LNPRVOK(VAL,IBIFN) ; Check bill form & line prov function agree
- +1 ; DEM;432 - New routine for Claim Line Provider.
- +2 ; VAL = internal value of prov function
- +3 ;
- +4 ; Allowable line provider functions for UB04 (FORM TYPE = 3)
- +5 ; Inpatient and UB04 Outpatient:
- +6 ; - Rendering Provider(3).
- +7 ; - Referring Provider(1).
- +8 ; - Operating Physician(2).
- +9 ; - Other Operating Physician(9).
- +10 ;
- +11 ; Allowable line provider functions for CMS 1500 (FORM TYPE = 2)
- +12 ; Inpatient and CMS 1500 Outpatient:
- +13 ; - Rendering Provider(3).
- +14 ; - Referring Provider(1).
- +15 ; - Supervising Provider(5).
- +16 ;
- +17 ;JWS;IB*2.0*592 US1108
- +18 ; Allowable line provider functions for J430D Dental (FORM TYPE = 7)
- +19 ; Inpatient and CMS 1500 Outpatient:
- +20 ; - Rendering Provider(3).
- +21 ; - Referring Provider(1).
- +22 ; - Supervising Provider(5).
- +23 ; - Assistant Surgeon (6). - Dental J430D only
- +24 ;
- +25 NEW OK,IBUB
- +26 SET VAL=$$UP^XLFSTR(VAL)
- +27 SET OK=$SELECT(VAL'="":1,1:0)
- +28 if 'OK!'$GET(IBIFN)
- GOTO PRVQ
- +29 ;
- +30 ;JWS;IB*2.0*592 US1108 - 2 for form#7 Dental
- +31 ; 1 if UB-04 ; 0 if CMS-1500 ; 2 if J430D Dental form
- SET IBUB=$SELECT($$FT^IBCEF(IBIFN)=7:2,1:($$FT^IBCEF(IBIFN)=3))
- +32 ;
- +33 SET OK=0
- +34 ; UB-04
- IF IBUB=1
- IF "1239"[VAL
- SET OK=1
- +35 ; CMS-1500
- IF 'IBUB
- IF "135"[VAL
- SET OK=1
- +36 ;JWS;IB*2.0*592 US1108 J430D Dental
- +37 IF IBUB=2
- IF "1356"[VAL
- SET OK=1
- +38 ;
- PRVQ QUIT OK
- +1 ;
- LNPRVHLP ;Helptext for line provider function.
- +1 ;
- +2 NEW IBZ,IBQUIT,VALUE,FORMAT
- +3 FOR IBZ=1:1
- if $PIECE($TEXT(HLPTXT+IBZ),";;",2)="END"
- SET IBQUIT=1
- if $GET(IBQUIT)
- QUIT
- Begin DoDot:1
- +4 SET VALUE=$PIECE($TEXT(HLPTXT+IBZ),";;",2)
- +5 SET FORMAT=$SELECT(VALUE="":"!",1:"")
- +6 DO EN^DDIOL(VALUE,"",FORMAT)
- +7 QUIT
- End DoDot:1
- +8 QUIT
- +9 ;
- HLPTXT ; Helptext for line provider function.
- +1 ;;
- +2 ;;Enter the name of the line level provider who provided this service.
- +3 ;;Line level providers are optional and should only be entered if
- +4 ;;different from the claim level provider.
- +5 ;;
- +6 ;;
- +7 ;;END
- +8 ;
- HLPTXT2 ; ***Currently, not activated*** - Helptext for line provider function.
- +1 ;;
- +2 ;;LINE PROVIDER FUNCTION requirements:
- +3 ;;
- +4 ;;Allowable line provider functions for UB04 Inpatient and Outpatient:
- +5 ;;
- +6 ;; - Rendering Provider(3).
- +7 ;; - Referring Provider(1).
- +8 ;; - Operating Physician(2).
- +9 ;; - Other Operating Physician(9).
- +10 ;;
- +11 ;;Allowable line provider functions for CMS 1500 Inpatient and Outpatient:
- +12 ;;
- +13 ;; - Rendering Provider(3).
- +14 ;; - Referring Provider(1).
- +15 ;; - Supervising Provider(5).
- +16 ;;
- +17 ;; Allowable line provider functions for J430D Dental (FORM TYPE = 7)
- +18 ;; Inpatient and CMS 1500 Outpatient:
- +19 ;; - Rendering Provider(3).
- +20 ;; - Referring Provider(1).
- +21 ;; - Supervising Provider(5).
- +22 ;; - Assistant Surgeon (6).
- +23 ;;
- +24 ;;END
- +25 QUIT
- +26 ;
- LNPRVFT(IBFT,IBLNPRV) ; DEM;432 - Field Index "AK" (#301) on FORM TYPE field (399,.19).
- +1 ;
- +2 ; Description:
- +3 ;
- +4 ; This function is called by the FORM TYPE (399,.19) "AK" field index.
- +5 ; In the case when the FORM TYPE field is changed, then the line
- +6 ; provider types are checked to see if any, or all, line providers
- +7 ; need to be deleted from the claim.
- +8 ;
- +9 ; Input:
- +10 ;
- +11 ; IBFT = FORM TYPE = 2 = (CMS-1500), or FORM TYPE = 3 = (UB-04).
- +12 ; Must be either FORM TYPE 2, or FORM TYPE 3 to continue.
- +13 ; See allowable line provider functions by FORM TYPE below.
- +14 ; IBLNPRV = Array passed by reference.
- +15 ;
- +16 ; Output:
- +17 ;
- +18 ; OK = 1 = line providers to delete, OK = 0 = no line providers to delete.
- +19 ; IBLNPRV Array = If line providers to delete, then array contains
- +20 ; these line providers - IBLNPRV(399.0404,"IENS",.01)="@"
- +21 ;
- +22 ; Allowable line provider functions for UB04 (FORM TYPE = 3)
- +23 ; Inpatient and UB04 Outpatient:
- +24 ; - Rendering Provider(VAL=3).
- +25 ; - Referring Provider(VAL=1).
- +26 ; - Operating Physician(VAL=2).
- +27 ; - Other Operating Physician(VAL=9).
- +28 ;
- +29 ; Allowable line provider functions for CMS 1500 (FORM TYPE = 2)
- +30 ; Inpatient and CMS 1500 Outpatient:
- +31 ; - Rendering Provider(VAL=3).
- +32 ; - Referring Provider(VAL=1).
- +33 ; - Supervising Provider(VAL=5).
- +34 ;
- +35 ; Allowable line provider functions for J430D (FORM TYPE = 7)
- +36 ; Dental:
- +37 ; - Rendering Provider(VAL=3).
- +38 ; - Referring Provider(VAL=1).
- +39 ; - Supervising Provider(VAL=5).
- +40 ; - Assistant Surgeon(VAL=6).
- +41 ;
- +42 ; QUIT 0 if no claim number.
- if '$GET(IBIFN)
- QUIT 0
- +43 ; QUIT 0 if no FORM TYPE.
- if '$GET(IBFT)
- QUIT 0
- +44 ;JWS;IB*2.0*592 US1108
- +45 ; QUIT 0 - Must be CMS-1500 (2) or UB-04 (3) or J430D (7) FORM TYPE.
- if (IBFT'=2)&(IBFT'=3)&(IBFT'=7)
- QUIT 0
- +46 ;
- +47 NEW IBPRVFUN,OK
- +48 ; Allowable LINE PROVIDER FUNCTIONs for UB-04.
- if IBFT=3
- SET IBPRVFUN("VAL",IBFT)="1239"
- +49 ; Allowable LINE PROVIDER FUNCTIONs for CMS-1500.
- if IBFT=2
- SET IBPRVFUN("VAL",IBFT)="135"
- +50 ;JWS;IB*2.0*592 US1108
- +51 ;Allowable LINE PROVIDER FUNCTIONs for J430D.
- if IBFT=7
- SET IBPRVFUN("VAL",IBFT)="1356"
- +52 ;
- +53 ; Initialize OK=0.
- SET OK=0
- +54 ;
- +55 NEW IBPROCP,IBLPIEN,IBLNPROV,DA
- +56 ; Loop on PROCEDURES multiple.
- SET IBPROCP=0
- FOR
- SET IBPROCP=$ORDER(^DGCR(399,IBIFN,"CP",IBPROCP))
- if 'IBPROCP
- QUIT
- Begin DoDot:1
- +57 ; No zero node for procedure.
- if '($DATA(^DGCR(399,IBIFN,"CP",IBPROCP,0))#10)
- QUIT
- +58 SET IBPRVFUN=0
- FOR
- SET IBPRVFUN=$ORDER(^DGCR(399,IBIFN,"CP",IBPROCP,"LNPRV","B",IBPRVFUN))
- if 'IBPRVFUN
- QUIT
- if IBPRVFUN("VAL",IBFT)'[IBPRVFUN
- Begin DoDot:2
- +59 SET IBLPIEN=0
- FOR
- SET IBLPIEN=$ORDER(^DGCR(399,IBIFN,"CP",IBPROCP,"LNPRV","B",IBPRVFUN,IBLPIEN))
- if 'IBLPIEN
- QUIT
- Begin DoDot:3
- +60 ; No zero node for line level provider.
- if '($DATA(^DGCR(399,IBIFN,"CP",IBPROCP,"LNPRV",IBLPIEN,0))#10)
- QUIT
- +61 SET IBLNPROV=$PIECE(^DGCR(399,IBIFN,"CP",IBPROCP,"LNPRV",IBLPIEN,0),U,2)
- +62 ; No line provider for this line provider function.
- if 'IBLNPROV
- QUIT
- +63 ; We have at leaset one line provider to delete from claim.
- SET OK=1
- SET IBLNPRV(399.0404,IBLPIEN_","_IBPROCP_","_IBIFN_",",.01)="@"
- +64 QUIT
- End DoDot:3
- +65 QUIT
- End DoDot:2
- +66 QUIT
- End DoDot:1
- +67 ;
- +68 QUIT OK
- +69 ;
- REMOVE(IBIFN,IBFT) ; This will be used to remove all line level providers and all line level attachments from inpatient UB claims
- +1 ;
- +2 ; Input IBIFN - Claim Number
- +3 ;
- +4 ; Only worried about UBs
- if IBFT'=3
- QUIT
- +5 NEW IBINPAT
- +6 ; Quit if it's not an inpatient
- SET IBINPAT=$$INPAT^IBCEF(IBIFN)
- if 'IBINPAT
- QUIT
- +7 ;
- +8 ; If we got here, we have an inpatient UB
- +9 ; In which case, we should not have any line level providers or line level attachment control numbers
- +10 ; If we do, then let's remove them
- +11 ;
- +12 NEW CPIEN,LNPRVIEN,FDA,ERR
- +13 SET CPIEN=0
- FOR
- SET CPIEN=$ORDER(^DGCR(399,IBIFN,"CP",CPIEN))
- if '+CPIEN
- QUIT
- Begin DoDot:1
- +14 ;
- +15 ; Remove the Line level attachments
- +16 SET FDA(399.0304,CPIEN_","_IBIFN_",",70)="@"
- +17 SET FDA(399.0304,CPIEN_","_IBIFN_",",71)="@"
- +18 SET FDA(399.0304,CPIEN_","_IBIFN_",",72)="@"
- +19 DO FILE^DIE("E","FDA")
- +20 ;
- +21 KILL FDA
- +22 SET LNPRVIEN=0
- FOR
- SET LNPRVIEN=$ORDER(^DGCR(399,IBIFN,"CP",CPIEN,"LNPRV",LNPRVIEN))
- if '+LNPRVIEN
- QUIT
- Begin DoDot:2
- +23 ;
- +24 ;Remove the line level providers
- +25 SET FDA(399.0404,LNPRVIEN_","_CPIEN_","_IBIFN_",",.01)="@"
- End DoDot:2
- +26 IF $DATA(FDA)
- DO FILE^DIE("E","FDA")
- End DoDot:1
- +27 QUIT
- +28 ;
- +29 ; vd - IB*2.0*623 (US4995) - Added the following module of code for ROI validation.
- ROIDTCK(IBIFN) ; Date validator for ROI checking
- +1 ; INPUT:
- +2 ; IBIFN is the internal Claim Number.
- +3 ; OUTPUT:
- +4 ; 0 means the Claim is NOT ROI eligible based upon the Date of Service
- +5 ; 1 means the Claim IS ROI eligible based upon the Date of Service.
- +6 NEW IBDOS,IBTBD,ROIELG,X,Y
- +7 SET ROIELG=0
- +8 SET IBDOS=$$BDATE^IBACSV(IBIFN)
- +9 SET X=20190128
- DO ^%DT
- SET IBTBD=Y
- +10 ; DOS prior to 1/28/19 with sensitive diagnosis requires ROI to bill
- +11 ; DOS on or after 1/28/19 with sensitive diagnosis does not require ROI to bill
- +12 IF IBDOS<IBTBD
- SET ROIELG=1
- +13 QUIT ROIELG
- +14 ;