| 1 | IBCEF73A ;ALB/KJH - FORMATTER AND EXTRACTOR SPECIFIC (NPI) BILL FUNCTIONS ; 30 Aug 2006  10:38 AM
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**343,374**;21-MAR-94;Build 16
 | 
|---|
| 3 |  ;; Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | PROVNPI(IBIEN399,IBNONPI) ;
 | 
|---|
| 6 |  ;Retrieves NPIs from #200 or 355.93
 | 
|---|
| 7 |  ; Input:
 | 
|---|
| 8 |  ;       IBIEN399 - IEN of record in BILL/CLAIMS file 399
 | 
|---|
| 9 |  ;       IBNONPI - variable to pass info on missing NPI to calling routine.  Pass by reference
 | 
|---|
| 10 |  ; Output:
 | 
|---|
| 11 |  ;       NPI codes for all providers
 | 
|---|
| 12 |  ;       IBNONPI - U-delimited list of provider types with missing NPIs
 | 
|---|
| 13 |  N IBRETVAL,IBPTR,IBFT
 | 
|---|
| 14 |  S IBRETVAL="",IBNONPI=""
 | 
|---|
| 15 |  F IBFT=1:1:9 D
 | 
|---|
| 16 |  . S IBPTR=$$PROVPTR^IBCEF7(IBIEN399,IBFT)
 | 
|---|
| 17 |  . I IBPTR S $P(IBRETVAL,"^",IBFT)=$$GETNPI(IBPTR)
 | 
|---|
| 18 |  Q IBRETVAL
 | 
|---|
| 19 | GETNPI(IBPTR) ;look for NPI in #200 or #355.93
 | 
|---|
| 20 |  ;Input: IBPTR from 399.0222, field .02
 | 
|---|
| 21 |  ;Output: NPI
 | 
|---|
| 22 |  ;if in file #200
 | 
|---|
| 23 |  N NPI
 | 
|---|
| 24 |  S NPI=""
 | 
|---|
| 25 |  ;if in 200 then get it from 200
 | 
|---|
| 26 |  I $P(IBPTR,";",2)="VA(200," S NPI=$P($$NPI^XUSNPI("Individual_ID",$P(IBPTR,";")),U) S:NPI=-1 NPI=""
 | 
|---|
| 27 |  ;if in 355.93 then use 355.93
 | 
|---|
| 28 |  I $P(IBPTR,";",2)="IBA(355.93," S NPI=$$NPIGET^IBCEP81($P(IBPTR,";"))
 | 
|---|
| 29 |  I NPI="",$D(IBNONPI) S IBNONPI=$S(IBNONPI="":IBFT,1:IBNONPI_U_IBFT)
 | 
|---|
| 30 |  Q NPI
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | SPECTAX(IBIEN399,IBNOSPEC) ;
 | 
|---|
| 33 |  ;Retrieves Specialty Codes from Current Taxonomy entries for a claim from #399
 | 
|---|
| 34 |  ; Input:
 | 
|---|
| 35 |  ;       IBIEN399 - IEN of record in BILL/CLAIMS file 399
 | 
|---|
| 36 |  ;       IBNOSPEC - variable to pass info on missing taxonomies to calling routine.  Pass by reference
 | 
|---|
| 37 |  ; Output:
 | 
|---|
| 38 |  ;       Taxonomy Specialty Codes for all providers
 | 
|---|
| 39 |  ;       IBNOSPEC - U-delimited list of provider types with missing Taxonomy Specialty codes
 | 
|---|
| 40 |  N IBRETVAL,IBN,IBFT,IBSPEC,SPEC
 | 
|---|
| 41 |  S IBRETVAL="",IBNOSPEC=""
 | 
|---|
| 42 |  I $G(IBIEN399)="" Q ""
 | 
|---|
| 43 |  F IBFT=1:1:9 D
 | 
|---|
| 44 |  . S IBN=$O(^DGCR(399,IBIEN399,"PRV","B",IBFT,0))
 | 
|---|
| 45 |  . I +IBN=0 Q
 | 
|---|
| 46 |  . S IBSPEC=$P($G(^DGCR(399,IBIEN399,"PRV",+IBN,0)),"^",15)
 | 
|---|
| 47 |  . S SPEC=$$GET1^DIQ(8932.1,IBSPEC,"SPECIALTY CODE")
 | 
|---|
| 48 |  . S $P(IBRETVAL,"^",IBFT)=SPEC
 | 
|---|
| 49 |  . I SPEC="",$D(IBNOSPEC) S IBNOSPEC=$S(IBNOSPEC="":IBFT,1:IBNOSPEC_U_IBFT)
 | 
|---|
| 50 |  Q IBRETVAL
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 | PROVTAX(IBIEN399,IBNOTAX) ;
 | 
|---|
| 53 |  ;Retrieves Current Taxonomy entries for a claim from #399
 | 
|---|
| 54 |  ; Input:
 | 
|---|
| 55 |  ;       IBIEN399 - IEN of record in BILL/CLAIMS file 399
 | 
|---|
| 56 |  ;       IBNOTAX - variable to pass info on missing taxonomies to calling routine.  Pass by reference
 | 
|---|
| 57 |  ; Output:
 | 
|---|
| 58 |  ;       Taxonomy X12 codes for all providers
 | 
|---|
| 59 |  ;       IBNOTAX - U-delimited list of provider types with missing Taxonomy X12 codes
 | 
|---|
| 60 |  N IBRETVAL,IBN,IBFT,IBTAX,TAX
 | 
|---|
| 61 |  S IBRETVAL="",IBNOTAX=""
 | 
|---|
| 62 |  I $G(IBIEN399)="" Q ""
 | 
|---|
| 63 |  F IBFT=1:1:9 D
 | 
|---|
| 64 |  . S IBN=$O(^DGCR(399,IBIEN399,"PRV","B",IBFT,0))
 | 
|---|
| 65 |  . I +IBN=0 Q
 | 
|---|
| 66 |  . S IBTAX=$P($G(^DGCR(399,IBIEN399,"PRV",+IBN,0)),"^",15)
 | 
|---|
| 67 |  . S TAX=$$GET1^DIQ(8932.1,IBTAX,"X12 CODE")
 | 
|---|
| 68 |  . S $P(IBRETVAL,"^",IBFT)=TAX
 | 
|---|
| 69 |  . I TAX="",$D(IBNOTAX) S IBNOTAX=$S(IBNOTAX="":IBFT,1:IBNOTAX_U_IBFT)
 | 
|---|
| 70 |  Q IBRETVAL
 | 
|---|
| 71 | GETTAX(IBPTR) ;look for Taxonomy in #200 or #355.93
 | 
|---|
| 72 |  ;Input: IBPTR from 399.0222, field .02
 | 
|---|
| 73 |  ;Output: Taxonomy X12 code_"^"_IEN
 | 
|---|
| 74 |  N TAX
 | 
|---|
| 75 |  S TAX="^"
 | 
|---|
| 76 |  ;if in 200 then get it from 200
 | 
|---|
| 77 |  I $P(IBPTR,";",2)="VA(200," S TAX=$$TAXIND^XUSTAX($P(IBPTR,";"))
 | 
|---|
| 78 |  ;if in 355.93 then use 355.93
 | 
|---|
| 79 |  I $P(IBPTR,";",2)="IBA(355.93," S TAX=$$TAXGET^IBCEP81($P(IBPTR,";"))
 | 
|---|
| 80 |  Q TAX
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | ORGNPI(IBIEN399,IBNONPI) ; Extract NPIs for organizations on this claim
 | 
|---|
| 83 |  ; Input
 | 
|---|
| 84 |  ;       IBIEN399 - Claim IEN in file 399
 | 
|---|
| 85 |  ;       IBNONPI - Variable to pass info on missing NPI back to calling routine.  Pass by reference.
 | 
|---|
| 86 |  ; Output - NPI codes for facilities
 | 
|---|
| 87 |  ;        Piece 1) Division (Responsible Institution) NPI code
 | 
|---|
| 88 |  ;        Piece 2) Non-VA Service Facility NPI code
 | 
|---|
| 89 |  ;        Piece 3) Billing Provider NPI code (main VA division)
 | 
|---|
| 90 |  N IBRETVAL,IBORG,IBEVDT,IBDIV,NPI
 | 
|---|
| 91 |  S IBNONPI=""
 | 
|---|
| 92 |  I $G(IBIEN399)="" Q ""
 | 
|---|
| 93 |  S IBRETVAL=""
 | 
|---|
| 94 |  S IBEVDT=$$GET1^DIQ(399,IBIEN399_",",.03,"I")
 | 
|---|
| 95 |  I IBEVDT="" S IBEVDT=DT
 | 
|---|
| 96 |  S IBDIV=$$GET1^DIQ(399,IBIEN399_",",.22,"I")
 | 
|---|
| 97 |  I IBDIV="" S IBDIV=$$PRIM^VASITE(IBEVDT)
 | 
|---|
| 98 |  S IBORG=$P($$SITE^VASITE(IBEVDT,IBDIV),U),NPI=""
 | 
|---|
| 99 |  I IBORG S NPI=$P($$NPI^XUSNPI("Organization_ID",IBORG),U) S:NPI'=-1 $P(IBRETVAL,U)=NPI
 | 
|---|
| 100 |  I NPI<1,$D(IBNONPI) S IBNONPI=1
 | 
|---|
| 101 |  S IBORG=$$GET1^DIQ(399,IBIEN399_",",232,"I")
 | 
|---|
| 102 |  I IBORG S NPI=$$NPIGET^IBCEP81(IBORG),$P(IBRETVAL,U,2)=NPI I 'NPI,$D(IBNONPI) S IBNONPI=$S(IBNONPI="":2,1:IBNONPI_U_2)
 | 
|---|
| 103 |  S IBORG=$P($$SITE^VASITE,U),NPI=""
 | 
|---|
| 104 |  I IBORG S NPI=$P($$NPI^XUSNPI("Organization_ID",IBORG),U) S:NPI'=-1 $P(IBRETVAL,U,3)=NPI
 | 
|---|
| 105 |  I NPI<1,$D(IBNONPI) S IBNONPI=$S(IBNONPI="":3,1:IBNONPI_U_3)
 | 
|---|
| 106 |  Q IBRETVAL
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 | ORGTAX(IBIEN399,IBNOTAX) ; Extract Taxonomies for organizations on this claim
 | 
|---|
| 109 |  ; Input
 | 
|---|
| 110 |  ;       IBIEN399 - Claim IEN in file 399
 | 
|---|
| 111 |  ;       IBNOTAX - Variable to pass info on missing taxonomies back to calling routine.  Pass by reference.
 | 
|---|
| 112 |  ; Output - Taxonomy X12 codes for facilities
 | 
|---|
| 113 |  ;        Piece 1) Division (Responsible Institution) Taxonomy X12 code
 | 
|---|
| 114 |  ;        Piece 2) Non-VA Service Facility Taxonomy X12 code
 | 
|---|
| 115 |  ;        Piece 3) Billing Provider Taxonomy X12 code (main VA division)
 | 
|---|
| 116 |  N IBRETVAL,IBTAX,TAX
 | 
|---|
| 117 |  S IBTAX=$$GET1^DIQ(399,IBIEN399_",",243,"I")
 | 
|---|
| 118 |  S TAX=$$GET1^DIQ(8932.1,IBTAX,"X12 CODE")
 | 
|---|
| 119 |  S $P(IBRETVAL,U)=TAX
 | 
|---|
| 120 |  I '$L(TAX),$D(IBNOTAX) S IBNOTAX=1
 | 
|---|
| 121 |  S IBTAX=$$GET1^DIQ(399,IBIEN399_",",244,"I")
 | 
|---|
| 122 |  S TAX=$$GET1^DIQ(8932.1,IBTAX,"X12 CODE")
 | 
|---|
| 123 |  S $P(IBRETVAL,U,2)=TAX
 | 
|---|
| 124 |  I '$L(TAX),$$GET1^DIQ(399,IBIEN399_",",232,"I"),$D(IBNOTAX) S IBNOTAX=$S(IBNOTAX="":2,1:IBNOTAX_U_2)
 | 
|---|
| 125 |  S IBORG=$P($$SITE^VASITE,U)
 | 
|---|
| 126 |  S TAX=$P($$TAXORG^XUSTAX(IBORG),U)
 | 
|---|
| 127 |  S $P(IBRETVAL,U,3)=TAX
 | 
|---|
| 128 |  I '$L(TAX),$D(IBNOTAX) S IBNOTAX=$S(IBNOTAX="":3,1:IBNOTAX_U_3)
 | 
|---|
| 129 |  Q IBRETVAL
 | 
|---|