Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/INTEGRATED_BILLING-IB-PRQ--IBD--IBQ--PRQS/IBCEF21.m

    r613 r623  
    1 IBCEF21 ;ALB/TMP - FORMATTER SPECIFIC BILL FUNCTIONS CONTINUED ;06-FEB-96
    2         ;;2.0;INTEGRATED BILLING;**51,296,371,389**;21-MAR-94;Build 6
    3         ;;Per VHA Directive 2004-038, this routine should not be modified.
    4         ;
    5 COID(IBIFN)     ; Claim office ID
    6         N IBCOID,IBCOID1,IBIN
    7         S IBIN=$$CURR^IBCEF2(IBIFN),IBCOID1="",IBCOID=$P($$ADDRESS^IBCNSC0(IBIN,.11,5),U,11)
    8         ;
    9         I IBIN D
    10         . I $D(^IBA(364.2,"C",IBIFN)) S IBCOID1=$P($$ADDRESS^IBCNSC0(IBIN,.18,5),U,11) Q  ;Rx
    11         . I $P($G(^DGCR(399,IBIFN,0)),U,5)<3 S IBCOID1=$P($$ADDRESS^IBCNSC0(IBIN,.12,5),U,11) Q  ;Inpt
    12         . I $P($G(^DGCR(399,IBIFN,0)),U,5)'<3 S IBCOID1=$P($$ADDRESS^IBCNSC0(IBIN,.16,5),U,11) Q  ;Outpt
    13         ;
    14         Q $S(IBCOID1'="":IBCOID1,1:IBCOID)
    15         ;
    16 ESGHPST(IBIFN,COB)      ; return insureds employment status if the bill policy defined by COB is an Employer Sponsored Group Health Plan
    17         ; ESGHP FLAG (2.312,2.1) ^ the employment status (2.312,2.11)
    18         ;
    19         N PPOL,DFN,X,Y S Y=""
    20         S PPOL=$$PPOL^IBCEF2($G(IBIFN),$G(COB)),DFN=$P($G(^DGCR(399,+$G(IBIFN),0)),U,2)
    21         I +PPOL,+DFN S X=$G(^DPT(DFN,.312,+PPOL,2)) S Y=+$P(X,U,10)_U_$P(X,U,11)
    22         Q Y
    23         ;
    24 ESGHPNL(IBIFN,COB)      ; return employer name and location if the bill policy defined by COB is an Employer Sponsored Group Health Plan
    25         ; ESGHP FLAG (2.312,2.1) ^ employer name (2.312,2.015) ^ employer city (2.312,2.05)
    26         ;                        ^ employer state abbr (2.312,2.06) ^ employer state ifn  (2.312,2.06)
    27         ;
    28         N PPOL,DFN,X,Y S Y=""
    29         S PPOL=$$PPOL^IBCEF2($G(IBIFN),$G(COB)),DFN=$P($G(^DGCR(399,+$G(IBIFN),0)),U,2)
    30         I +PPOL,+DFN S X=$G(^DPT(DFN,.312,+PPOL,2)) S Y=+$P(X,U,10)_U_$P(X,U,9)_U_$P(X,U,5)_U_$P($G(^DIC(5,+$P(X,U,6),0)),U,2)_U_$P(X,U,6)
    31         Q Y
    32         ;
    33 REMARKS(IBIFN)  ; Compile array of bill remarks
    34         ;IBIFN = bill ien
    35         N Z,Z0,Z1,IBARRAY,IBSM
    36         S Z=0
    37         ;S:$P($G(^DGCR(399,IBIFN,"U1")),U,2) Z=Z+1,Z0=$P(^("U1"),U,2),IBXDATA(Z)="OFFSET AMOUNT: "_"$"_+$P(Z0,".")_"."_$E($P(Z0,".",2)_"00",1,2)
    38         S:$P($G(^DGCR(399,IBIFN,"U1")),U,8)'="" Z=Z+1,IBXDATA(Z)=$P(^("U1"),U,8) ;Bill comment on bill
    39         S Z0=$G(^DGCR(399,IBIFN,0)),Z1=$G(^DGCR(399.3,+$P(Z0,U,7),0))
    40         D SET^IBCSC5B(IBIFN,.IBARRAY)
    41         I $P($G(IBARRAY),U,2) D  ;Prosthetics
    42         . S Z0=0 F  S Z0=$O(IBARRAY(Z0)) Q:Z0=""  S Z1=0 F  S Z1=$O(IBARRAY(Z0,Z1)) Q:'Z1  S Z=Z+1,IBXDATA(Z)="Prosthetic: "_$E($$PINB^IBCSC5B(+IBARRAY(Z0,Z1)),1,39)_" "_$E(Z0,4,5)_"/"_$E(Z0,6,7)_"/"_$E(Z0,1,2)
    43         Q
    44         ;
    45 CREM(IBIFN)     ; Compile array of bill remarks common to every bill
    46         ;IBIFN = bill ien
    47         N Z
    48         S Z=0
    49         S:$P($G(^IBE(350.9,1,1)),U,4)'="" Z=Z+1,IBXDATA(Z)=$P(^(1),U,4) ;Site specific 'every bill' comment
    50         Q
    51         ;
    52 ADMDT(IBIFN,NOOUTCK)    ; Calculate admission/start of care date/time
    53         ; IBIFN = bill ien
    54         ; NOOUTCK = flag that will:
    55         ;          (1) no check for inpt episode overlap for outpt
    56         ;          (0 or null) performs check for inpt episode overlap for outpt
    57         ;                                     
    58         ; Returns IBXDATA = fileman date format
    59         N Z,Z0,Z1
    60         S Z=$G(^DGCR(399,IBIFN,0)),Z1=$P($G(^("U")),U,20),Z0=$$INPAT^IBCEF(IBIFN,1)
    61         S IBXDATA=$S(Z0&$P(Z,U,8):$P($G(^DGPT(+$P(Z,U,8),0)),U,2),1:"")
    62         S:'IBXDATA IBXDATA=$P(Z,U,3)_$S(Z0&(Z1<25):"."_$E("0",$L(Z1))_Z1,1:"")
    63         ; Check to see if outpt episode (date in event date) overlaps inpt
    64         ;  episode - use admit date if it does
    65         I 'Z0,IBXDATA,'$G(NOOUTCK) D
    66         . N VAINDT,VAIN,DFN
    67         . S VAINDT=IBXDATA,DFN=$P($G(^DGCR(399,IBIFN,0)),U)
    68         . D INP^VADPT S IBXDATA=+VAIN(7) S:'IBXDATA IBXDATA=""
    69         I 'IBXDATA,'Z0 S IBXDATA=$$SERVDT^IBCEF(IBIFN,,2)
    70         Q
    71         ;
    72 DISDT(IBIFN)    ; Calculate discharge date
    73         ; IBIFN = bill ien
    74         N Z,Z0
    75         S Z=$$INPAT^IBCEF(IBIFN,1),Z0=$G(^DGCR(399,IBIFN,0))
    76         I Z S IBXDATA=+$G(^DGPT(+$P(Z0,U,8),70)) S:'IBXDATA IBXDATA=$P(Z0,U,16)
    77         I 'Z N VAINDT,VAIN,DFN S DFN=$P($G(^DGCR(399,IBIFN,0)),U,2) D INP^VADPT I VAIN(1) S IBXDATA=+$G(^DGPM(+$P($G(^DGPM(+VAIN(1),0)),U,17),0))
    78         Q
    79         ;
    80 INSSECID(IBIFN,TYPE,SEQ)        ; Extract subscriber and patient prim/sec ID's
    81         ; IBIFN required
    82         ; TYPE is either "PAT" or "SUB" to indicate we need to extract either
    83         ;          patient or subscriber ID information.  Default="SUB".
    84         ; SEQ is the insurance sequence# (1,2,3).  Default is current ins seq#.
    85         ;
    86         ; Output:
    87         ; Function returns an 8-piece string as follows.
    88         ;   [1] primary qualifier
    89         ;   [2] primary ID
    90         ;   [3] secondary qual(1)
    91         ;   [4] secondary ID(1)
    92         ;   [5] secondary qual(2)
    93         ;   [6] secondary ID(2)
    94         ;   [7] secondary qual(3)
    95         ;   [8] secondary ID(3)
    96         ;
    97         NEW DATA,DFN,POL,IB0,IB5,REL
    98         S DATA=""
    99         S IBIFN=+$G(IBIFN) I 'IBIFN G INSSX
    100         I $G(TYPE)="" S TYPE="SUB"               ; default type of ID's to get
    101         I '$F(".PAT.SUB.","."_TYPE_".") G INSSX
    102         I '$G(SEQ) S SEQ=$$COBN^IBCEF(IBIFN)     ; default current ins seq#
    103         I '$F(".1.2.3.","."_SEQ_".") G INSSX
    104         S DFN=+$P($G(^DGCR(399,IBIFN,0)),U,2) I 'DFN G INSSX
    105         S POL=+$P($G(^DGCR(399,IBIFN,"M")),U,SEQ+11) I 'POL G INSSX
    106         S IB0=$G(^DPT(DFN,.312,POL,0)) I IB0="" G INSSX
    107         S IB5=$G(^DPT(DFN,.312,POL,5))
    108         S REL=+$P(IB0,U,16)                      ; pat rel to insured
    109         S $P(DATA,U,1)="MI"
    110         S $P(DATA,U,2)=$P(IB0,U,2)               ; subscriber primary ID
    111         S $P(DATA,U,3,8)=$P(IB5,U,2,7)           ; subscriber secondary data
    112         I TYPE="PAT",REL'=1 D
    113         . S $P(DATA,U,2)=$P(IB5,U,1)             ; patient primary ID
    114         . S $P(DATA,U,3,8)=$P(IB5,U,8,13)        ; patient secondary data
    115         . Q
    116         ;
    117         S DATA=$$SCRUB(DATA)     ; scrub the data
    118 INSSX   ;
    119         Q DATA
    120         ;
    121 SCRUB(DATA)     ; Scrub the 8-piece string gathered above
    122         NEW PCE
    123         ;
    124         ; make sure you can't have an ID without a qualifier or a qualifier
    125         ; without an ID.  Check all 4 pairs.
    126         F PCE=1,3,5,7 D
    127         . I $P(DATA,U,PCE)'="",$P(DATA,U,PCE+1)'="" Q
    128         . S ($P(DATA,U,PCE),$P(DATA,U,PCE+1))=""
    129         . Q
    130         ;
    131         ; fill in secondary gaps.  If Set1 and Set2 are blank, but Set3 exists
    132         ; then move Set3 to Set1 and delete Set3.
    133         I $P(DATA,U,3)="",$P(DATA,U,5)="",$P(DATA,U,7)'="" D
    134         . S $P(DATA,U,3)=$P(DATA,U,7),$P(DATA,U,4)=$P(DATA,U,8)
    135         . S ($P(DATA,U,7),$P(DATA,U,8))=""
    136         . Q
    137         ;
    138         ; fill in secondary gaps more generically.
    139         ; If Set(n) is blank, but Set(n+1) exists, then move it up.
    140         F PCE=3,5 D
    141         . I $P(DATA,U,PCE)="",$P(DATA,U,PCE+2)'="" D
    142         .. S $P(DATA,U,PCE)=$P(DATA,U,PCE+2)
    143         .. S $P(DATA,U,PCE+1)=$P(DATA,U,PCE+3)
    144         .. S ($P(DATA,U,PCE+2),$P(DATA,U,PCE+3))=""
    145         .. Q
    146         . Q
    147         ;
    148         Q DATA
    149         ;
     1IBCEF21 ;ALB/TMP - FORMATTER SPECIFIC BILL FUNCTIONS CONTINUED ;06-FEB-96
     2 ;;2.0;INTEGRATED BILLING;**51,296**;21-MAR-94
     3 ;
     4COID(IBIFN) ; Claim office ID
     5 N IBCOID,IBCOID1,IBIN
     6 S IBIN=$$CURR^IBCEF2(IBIFN),IBCOID1="",IBCOID=$P($$ADDRESS^IBCNSC0(IBIN,.11,5),U,11)
     7 ;
     8 I IBIN D
     9 . I $D(^IBA(364.2,"C",IBIFN)) S IBCOID1=$P($$ADDRESS^IBCNSC0(IBIN,.18,5),U,11) Q  ;Rx
     10 . I $P($G(^DGCR(399,IBIFN,0)),U,5)<3 S IBCOID1=$P($$ADDRESS^IBCNSC0(IBIN,.12,5),U,11) Q  ;Inpt
     11 . I $P($G(^DGCR(399,IBIFN,0)),U,5)'<3 S IBCOID1=$P($$ADDRESS^IBCNSC0(IBIN,.16,5),U,11) Q  ;Outpt
     12 ;
     13 Q $S(IBCOID1'="":IBCOID1,1:IBCOID)
     14 ;
     15ESGHPST(IBIFN,COB) ; return insureds employment status if the bill policy defined by COB is an Employer Sponsored Group Health Plan
     16 ; ESGHP FLAG (2.312,2.1) ^ the employment status (2.312,2.11)
     17 ;
     18 N PPOL,DFN,X,Y S Y=""
     19 S PPOL=$$PPOL^IBCEF2($G(IBIFN),$G(COB)),DFN=$P($G(^DGCR(399,+$G(IBIFN),0)),U,2)
     20 I +PPOL,+DFN S X=$G(^DPT(DFN,.312,+PPOL,2)) S Y=+$P(X,U,10)_U_$P(X,U,11)
     21 Q Y
     22 ;
     23ESGHPNL(IBIFN,COB) ; return employer name and location if the bill policy defined by COB is an Employer Sponsored Group Health Plan
     24 ; ESGHP FLAG (2.312,2.1) ^ employer name (2.312,2.015) ^ employer city (2.312,2.05)
     25 ;                        ^ employer state abbr (2.312,2.06) ^ employer state ifn  (2.312,2.06)
     26 ;
     27 N PPOL,DFN,X,Y S Y=""
     28 S PPOL=$$PPOL^IBCEF2($G(IBIFN),$G(COB)),DFN=$P($G(^DGCR(399,+$G(IBIFN),0)),U,2)
     29 I +PPOL,+DFN S X=$G(^DPT(DFN,.312,+PPOL,2)) S Y=+$P(X,U,10)_U_$P(X,U,9)_U_$P(X,U,5)_U_$P($G(^DIC(5,+$P(X,U,6),0)),U,2)_U_$P(X,U,6)
     30 Q Y
     31 ;
     32REMARKS(IBIFN) ; Compile array of bill remarks
     33 ;IBIFN = bill ien
     34 N Z,Z0,Z1,IBARRAY,IBSM
     35 S Z=0
     36 ;S:$P($G(^DGCR(399,IBIFN,"U1")),U,2) Z=Z+1,Z0=$P(^("U1"),U,2),IBXDATA(Z)="OFFSET AMOUNT: "_"$"_+$P(Z0,".")_"."_$E($P(Z0,".",2)_"00",1,2)
     37 S:$P($G(^DGCR(399,IBIFN,"U1")),U,8)'="" Z=Z+1,IBXDATA(Z)=$P(^("U1"),U,8) ;Bill comment on bill
     38 S Z0=$G(^DGCR(399,IBIFN,0)),Z1=$G(^DGCR(399.3,+$P(Z0,U,7),0))
     39 D SET^IBCSC5B(IBIFN,.IBARRAY)
     40 I $P($G(IBARRAY),U,2) D  ;Prosthetics
     41 . S Z0=0 F  S Z0=$O(IBARRAY(Z0)) Q:Z0=""  S Z1=0 F  S Z1=$O(IBARRAY(Z0,Z1)) Q:'Z1  S Z=Z+1,IBXDATA(Z)="Prosthetic: "_$E($P($$PIN^IBCSC5B(Z1),U,2),1,39)_" "_$E(Z0,4,5)_"/"_$E(Z0,6,7)_"/"_$E(Z0,1,2)
     42 Q
     43 ;
     44CREM(IBIFN) ; Compile array of bill remarks common to every bill
     45 ;IBIFN = bill ien
     46 N Z
     47 S Z=0
     48 S:$P($G(^IBE(350.9,1,1)),U,4)'="" Z=Z+1,IBXDATA(Z)=$P(^(1),U,4) ;Site specific 'every bill' comment
     49 Q
     50 ;
     51ADMDT(IBIFN,NOOUTCK) ; Calculate admission/start of care date/time
     52 ; IBIFN = bill ien
     53 ; NOOUTCK = flag that will:
     54 ;          (1) no check for inpt episode overlap for outpt
     55 ;          (0 or null) performs check for inpt episode overlap for outpt
     56 ;                                     
     57 ; Returns IBXDATA = fileman date format
     58 N Z,Z0,Z1
     59 S Z=$G(^DGCR(399,IBIFN,0)),Z1=$P($G(^("U")),U,20),Z0=$$INPAT^IBCEF(IBIFN,1)
     60 S IBXDATA=$S(Z0&$P(Z,U,8):$P($G(^DGPT(+$P(Z,U,8),0)),U,2),1:"")
     61 S:'IBXDATA IBXDATA=$P(Z,U,3)_$S(Z0&(Z1<25):"."_$E("0",$L(Z1))_Z1,1:"")
     62 ; Check to see if outpt episode (date in event date) overlaps inpt
     63 ;  episode - use admit date if it does
     64 I 'Z0,IBXDATA,'$G(NOOUTCK) D
     65 . N VAINDT,VAIN,DFN
     66 . S VAINDT=IBXDATA,DFN=$P($G(^DGCR(399,IBIFN,0)),U)
     67 . D INP^VADPT S IBXDATA=+VAIN(7) S:'IBXDATA IBXDATA=""
     68 I 'IBXDATA,'Z0 S IBXDATA=$$SERVDT^IBCEF(IBIFN,,2)
     69 Q
     70 ;
     71DISDT(IBIFN) ; Calculate discharge date
     72 ; IBIFN = bill ien
     73 N Z,Z0
     74 S Z=$$INPAT^IBCEF(IBIFN,1),Z0=$G(^DGCR(399,IBIFN,0))
     75 I Z S IBXDATA=+$G(^DGPT(+$P(Z0,U,8),70)) S:'IBXDATA IBXDATA=$P(Z0,U,16)
     76 I 'Z N VAINDT,VAIN,DFN S DFN=$P($G(^DGCR(399,IBIFN,0)),U,2) D INP^VADPT I VAIN(1) S IBXDATA=+$G(^DGPM(+$P($G(^DGPM(+VAIN(1),0)),U,17),0))
     77 Q
     78 ;
Note: See TracChangeset for help on using the changeset viewer.