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/IBCNRDV.m

    r613 r623  
    1 IBCNRDV ;OAKFO/ELZ - INSURANCE INFORMATION EXCHANGE VIA RDV ;27-MAR-03
    2         ;;2.0;INTEGRATED BILLING;**214,231,361,371**;21-MAR-94;Build 57
    3         ;;Per VHA Directive 2004-038, this routine should not be modified.
    4         ;
    5         ; This routine is used to exchange insurance information between
    6         ; facilities.
    7 OPT     ; Menu option entry point.  This is used to select a patient to request
    8         ; information about from the remote treating facilities.
    9         N DFN,DIC,X,Y,DTOUT,DUOUT,IBT,%,%Y,IBX,VADM,IBB,IBD,IBH,IBI,IBICN,IBR,IBRZ,IBX,IBY,IBZ,IBWAIT,IBL,DO,IBTYPE,IB1
    10         ;
    11         ; prompt for patient
    12 AGAIN   S DIC="^DPT(",DIC(0)="AEMNQ" D ^DIC Q:Y<1  S DFN=+Y
    13         ;
    14 BACKGND ; background/tasked entry point
    15         ; IBTYPE is being used as a flag to indicate this is running in background
    16         ;
    17         ; look up treating facilities
    18         K IBT S IBT=$$TFL^IBARXMU(DFN,.IBT)
    19         I IBT<1,'$D(IBTYPE) W !!,"This patient has no remote treating facilities to query." G AGAIN
    20         I IBT<1 Q
    21         ;
    22         ; display and verify we want to do this
    23         I '$D(IBTYPE) D DEM^VADPT W !!,"The patient ",VADM(1)," has the following ",IBT," remote facilitie(s)",! S IBX=0 F  S IBX=$O(IBT(IBX)) Q:IBX<1  W !?10,$P(IBT(IBX),"^",2)
    24         I '$D(IBTYPE) W !!,"Do you want to perform this Remote Query" S %=1 D YN^DICN G:%'=1 AGAIN
    25         ;
    26         ; get ICN
    27         S IBICN=$$ICN^IBARXMU(DFN) I 'IBICN,'$D(IBTYPE) W !!,"No ICN for this patient" G AGAIN
    28         I 'IBICN Q
    29         ;
    30         ; sent off the remote queries and get back handles
    31         S IBX=0 F  S IBX=$O(IBT(IBX)) Q:IBX<1  D
    32         . D SEND(.IBH,IBX,IBICN,$S($D(IBTYPE):"IBCN INSURANCE QUERY TASK",1:"IBCN INSURANCE QUERY"))
    33         . X $S(IBH(0)'="":"S $P(IBT(IBX),U,5)=IBH(0)",1:"W:'$D(IBTYPE) !,""No handle returned for "",$P(IBT(IBX),U,2) K IBT(IBX)")
    34         ;
    35         ; no handles returned
    36         I $D(IBT)<9,'$D(IBTYPE) W !!,"Unable to perform any remote queries.",! G AGAIN
    37         I $D(IBT)<9 Q
    38         ;
    39         ; go through every IBT()
    40         S IBP="|",IBX=0 F  S IBX=$O(IBT(IBX)) Q:IBX<1!($D(IBT)<9)  D
    41         . ;
    42         . ; do I have a return data.
    43         . F IBWAIT=1:1:60 W:'$D(IBTYPE) "." H 1 D CHECK(.IBR,$P(IBT(IBX),"^",5)) I $G(IBR(0))["Done" Q
    44         . I $G(IBR(0))'["Done" W:'$D(IBTYPE) !!,"Unable to communicate with ",$P(IBT(IBX),U,2) Q
    45         . K IBR
    46         . D RETURN(.IBR,$P(IBT(IBX),"^",5))
    47         . ;
    48         . ; no data returned or error message
    49         . S IBRZ=$S(-1=+$G(IBR):IBR,$G(IBR(0))="":$G(IBR(1)),1:$G(IBR(0)))
    50         . ;
    51         . ; no info to proceed
    52         . I IBRZ<1 W:'$D(IBTYPE) !,"Response from ",$P(IBT(IBX),U,2),!,$P(IBRZ,"^",2) K IBT(IBX) D:IBRZ="-1^No insurance on file" FILE(0) Q
    53         . ;
    54         . ; received insurance info, need to file and display message
    55         . W:'$D(IBTYPE) !,"Received ",$G(IBR(0))," insurance companies from ",$P(IBT(IBX),U,2) D FILE(+IBR(0))
    56         . ;
    57         . S IBY=0 F  S IBY=$O(IBR(IBY))  Q:IBY<1  D
    58         .. F IBL=5:1  S IBT=$P($T(MAP+IBL),";",3) Q:IBT=""  D
    59         ... ;
    60         ... ; am I on the right MAP line
    61         ... I $P(IBT,IBP,3)=$S(IBY#6:IBY#6,1:6) S IBZ=$P(IBR(IBY),"^",$P(IBT,IBP,4)) I $L(IBZ) D
    62         .... ;
    63         .... ; xecute code to change external to internal
    64         .... X:$L($P(IBT,IBP,7)) $P(IBT,IBP,7)
    65         .... ;
    66         .... ; put the info in the array for the buffer file
    67         .... S:$D(IBZ) IBB($P(IBT,IBP,5))=IBZ
    68         .. ;
    69         .. ; need to avoid duplicates if possible.
    70         .. I $G(IBB(20.01))["MEDICARE (WNR)" S X=0 F  S X=$O(^DPT(DFN,.312,X)) Q:X<1  I $P($G(^DIC(36,+$P($G(^DPT(DFN,.312,X,0)),"^"),0)),"^")["MEDICARE (WNR)" K IBB Q
    71         .. Q:'$D(IBB)
    72         .. ;
    73         .. ; file in the buffer file & where else needed
    74         .. I IBY#6=0 D
    75         ... I $L($G(IBB(20.01))) D
    76         .... S IBB(.14)=$$IEN^XUAF4(+IBT(IBX))
    77         .... S IBB=$$ADDSTF^IBCNBES($G(IBB(.03),1),DFN,.IBB)
    78         ... I '$D(IB1),$D(IBTYPE),$L($G(IBB(20.01))) D SCH^IBTUTL2(DFN,$G(IBSAVEI),$G(IBSAVEJ)):IBTYPE="TRKR",ADM^IBTUTL($G(IBSAVE1),$G(IBSAVE2),$G(IBSAVE3),$G(IBSAVE4)):IBTYPE="ADM" S IB1=1
    79         ... W:'$D(IBTYPE)&($L($G(IBB(20.01)))) !,$P($G(IBB),"^")," Buffer File entry for ",$G(IBB(20.01))
    80         ... K IBB
    81         ;
    82         ; flag so I don't do this patient again within 90 days
    83         S ^IBT(356,"ARDV",DFN,$$FMADD^XLFDT(DT,90))=""
    84         ;
    85         Q
    86         ;
    87 RPC(IBD,IBICN)  ; RPC entry for looking up insurance info
    88         N DFN,IBZ,IBX,IBY,IBP,IBI,IBT,IBZ
    89         S DFN=$$DFN^IBARXMU(IBICN) I 'DFN S IBD(0)="-1^ICN Not found" Q
    90         D ALL^IBCNS1(DFN,"IBY",3)
    91         I '$D(IBY) S IBD(0)="-1^No insurance on file" Q
    92         ; set up return format
    93         ; IBD(0)   = # of insurance companies
    94         S IBD(0)=$G(IBY(0))
    95         ;
    96         ; where n starts at 1 and increments to 7 for each insurance company
    97         ; IBD(n) = 355.33, zero node format
    98         ; IBD(n+1) = 355.33, 20 node format
    99         ; IBD(n+2) = 355.33, 21 node format
    100         ; IBD(n+3) = 355.33, 40 node format
    101         ; IBD(n+4) = 355.33, 60 node format
    102         ; IBD(n+5) = 355.33, 61 node format
    103         ; IBD(n+6) = 355.33, 62 node format
    104         ;
    105         S IBP="|"
    106         S IBI=0 F  S IBI=$O(IBY(IBI))  Q:IBI<1  F IBL=5:1 S IBT=$P($T(MAP+IBL),";",3) Q:IBT=""  D
    107         . S IBZ=$P($G(IBY(IBI,+IBT)),"^",$P(IBT,IBP,2)) ; set the existing data
    108         . I $L($P(IBT,IBP,6)) X $P(IBT,IBP,6) ; output transform
    109         . S $P(IBD(IBI-1*7+$P(IBT,IBP,3)),"^",$P(IBT,IBP,4))=IBZ ; set data IBD
    110         Q
    111         ;
    112 MAP     ; this is a mapping of data returned from ALL^IBCNS1 to the buffer file
    113         ; format is:  node number | piece | extract node | extract piece
    114         ;             | 355.33 field number | format out code (if any)
    115         ;             | format in code (if any)
    116         ; the extract nodes will be sequential to match buffer file DD
    117         ;;0|1|2|1|20.01|N Z X "F Z=0,.11,.13 S IBY(IBI,36+Z)=$G(^DIC(36,IBZ,Z))" S IBZ=$P(IBY(IBI,36),"^");ins co name
    118         ;;0|2|5|4|60.04;subscriber id
    119         ;;0|4|5|3|60.03;experation date
    120         ;;0|6|5|5|60.05;who's insurance
    121         ;;0|8|5|2|60.02;effective date
    122         ;;0|16|5|6|60.06;pt relationship to insured
    123         ;;0|17|5|7|60.07;name of insured
    124         ;;0|20|5|12|60.12;coordination of benefits
    125         ;;1|3|1|10|.1||I IBZ<$$FMADD^XLFDT(DT,-180) K IBZ;date (last) verified
    126         ;;1|9|1|3|.03;source of information
    127         ;;2|1|6|5|61.05;send bill to employer
    128         ;;2|2|6|6|61.06;employer claims street address (line 1)
    129         ;;2|3|6|7|61.07;employer claims street address line 2
    130         ;;2|4|6|8|61.08;employer claims street address line 3
    131         ;;2|5|6|9|61.09;employer claims city
    132         ;;2|6|6|10|61.1|S IBZ=$$EXTERNAL^DILFD(2.312,2.06,"",IBZ)|N DIC,X,Y S DIC="^DIC(5,",X=IBZ,DIC(0)="OX" D ^DIC K:+Y<1 IBZ S:+Y>0 IBZ=+Y;employer claims state
    133         ;;2|7|6|11|61.11;employer claims zip code
    134         ;;2|8|6|12|61.12;employer claims phone
    135         ;;2|10|6|1|61.01;esghp
    136         ;;2|11|6|3|61.03;employment status
    137         ;;2|12|6|4|61.04;retirement date
    138         ;;3|1|5|8|60.08;insured's dob
    139         ;;3|5|5|9|60.09;insured's ssn
    140         ;;3|12|5|13|60.13;insured's sex
    141         ;;4|1|5|10|60.1;primary care provider
    142         ;;4|2|5|11|60.11;primary provider phone
    143         ;;5|1|7|1|62.01;patient id
    144         ;;355.3|2|4|1|40.01;is this a group policy
    145         ;;355.3|3|4|2|40.02;group name
    146         ;;355.3|4|4|3|40.03;group number
    147         ;;355.3|5|4|4|40.04;(is) utilization required
    148         ;;355.3|6|4|5|40.05;(is) pre-certification required
    149         ;;355.3|7|4|7|40.07;exclude pre-existing condition
    150         ;;355.3|8|4|8|40.08;benefits assignable
    151         ;;355.3|9|4|9|40.09;type of plan
    152         ;;355.3|12|4|6|40.06;ambulatory care certification
    153         ;;36|2|2|5|20.05;reimburse
    154         ;;36.11|1|3|1|21.01;street address line 1
    155         ;;36.11|2|3|2|21.02;street address line 2
    156         ;;36.11|3|3|3|21.03;street address line 3
    157         ;;36.11|4|3|4|21.04;city
    158         ;;36.11|5|3|5|21.05|S IBZ=$$EXTERNAL^DILFD(36,.115,"",IBZ)|N DIC,X,Y S DIC="^DIC(5,",X=IBZ,DIC(0)="OX" D ^DIC K:+Y<1 IBZ S:+Y>0 IBZ=+Y;state
    159         ;;36.11|6|3|6|21.06;zip code
    160         ;;36.13|1|2|2|20.02;phone number
    161         ;;36.13|2|2|3|20.03;billing phone number
    162         ;;36.13|3|2|4|20.04;precertification phone number
    163         ;;
    164         ;
    165 SEND(IBH,IBX,IBICN,IBRPC)       ; called to send off queries
    166         D EN1^XWB2HL7(.IBH,IBX,IBRPC,"",IBICN)
    167         Q
    168         ;
    169 CHECK(IBR,IBH)  ; called to check the return status of an RPC
    170         D RPCCHK^XWB2HL7(.IBR,IBH)
    171         Q
    172         ;
    173 RETURN(IBR,IBH) ; called to get the return data and clear the broker
    174         N IBZ
    175         D RTNDATA^XWBDRPC(.IBR,IBH),CLEAR^XWBDRPC(.IBZ,IBH)
    176         Q
    177         ;
    178 TASK    ; queue off task job
    179         N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSK,ZTSAVE
    180         S ZTRTN="BACKGND^IBCNRDV",ZTDESC="Query Remote Facilities for Insurance",ZTDTH=$$FMADD^XLFDT($$NOW^XLFDT),(ZTIO,ZTSAVE("DFN"),ZTSAVE("IBSAVE*"),ZTSAVE("IBTYPE"))="" D ^%ZTLOAD
    181         Q
    182         ;
    183 TRKR(DFN,IBSAVEI,IBSAVEJ,IBDUZ) ; claims tracking entry
    184         N IBTYPE,IBT
    185         Q:$D(^IBT(356,"ARDV",DFN))  ; have already done recently
    186         Q:'$$TFL^IBARXMU(DFN,.IBT)  ; no remote facilities
    187         S IBTYPE="TRKR" D
    188         . I DUZ=.5 N DUZ S DUZ=+$G(IBDUZ),DUZ(2)=+$$SITE^VASITE
    189         . D TASK
    190         Q
    191         ;
    192 ADM(DFN,IBSAVE1,IBSAVE2,IBSAVE3,IBSAVE4)        ; admit event entry
    193         N IBTYPE S IBTYPE="ADM" D TASK
    194         Q
    195         ;
    196 FILE(IBX)       ; updates data into the log file
    197         ;IBX = number of insurance co's found
    198         N DIC,DA,DIE,IBM,DO,X,Y,IBZ,DR
    199         S IBM=$E($$DT^XLFDT,1,5)_"00",DA=+$O(^IBA(355.34,"B",IBM,0))
    200         I 'DA K DA L +^IBA(355.34,"B",IBM):10 S X=IBM,DIC="^IBA(355.34,",DIC(0)="F" D FILE^DICN S DA=+Y L -^IBA(355.34,"B",IBM)
    201         L +^IBA(355.34,DA):10
    202         S IBZ=^IBA(355.34,DA,0),DIE="^IBA(355.34,"
    203         S DR=".02///"_($P(IBZ,"^",2)+1)_";.03///"_($P(IBZ,"^",3)+IBX) D ^DIE
    204         L -^IBA(355.34,DA)
    205         Q
     1IBCNRDV ;OAKFO/ELZ - INSURANCE INFORMATION EXCHANGE VIA RDV;27-MAR-03
     2 ;;2.0;INTEGRATED BILLING;**214,231,361**;21-MAR-94;Build 9
     3 ;;Per VHA Directive 2004-038, this routine should not be modified.
     4 ;
     5 ; This routine is used to exchange insurance information between
     6 ; facilities.
     7OPT ; Menu option entry point.  This is used to select a patient to request
     8 ; information about from the remote treating facilities.
     9 N DFN,DIC,X,Y,DTOUT,DUOUT,IBT,%,%Y,IBX,VADM,IBB,IBD,IBH,IBI,IBICN,IBR,IBRZ,IBX,IBY,IBZ,IBWAIT,IBL,DO,IBTYPE,IB1
     10 ;
     11 ; prompt for patient
     12AGAIN S DIC="^DPT(",DIC(0)="AEMNQ" D ^DIC Q:Y<1  S DFN=+Y
     13 ;
     14BACKGND ; background/tasked entry point
     15 ; IBTYPE is being used as a flag to indicate this is running in background
     16 ;
     17 ; look up treating facilities
     18 K IBT S IBT=$$TFL^IBARXMU(DFN,.IBT)
     19 I IBT<1,'$D(IBTYPE) W !!,"This patient has no remote treating facilities to query." G AGAIN
     20 I IBT<1 Q
     21 ;
     22 ; display and verify we want to do this
     23 I '$D(IBTYPE) D DEM^VADPT W !!,"The patient ",VADM(1)," has the following ",IBT," remote facilitie(s)",! S IBX=0 F  S IBX=$O(IBT(IBX)) Q:IBX<1  W !?10,$P(IBT(IBX),"^",2)
     24 I '$D(IBTYPE) W !!,"Do you want to perform this Remote Query" S %=1 D YN^DICN G:%'=1 AGAIN
     25 ;
     26 ; get ICN
     27 S IBICN=$$ICN^IBARXMU(DFN) I 'IBICN,'$D(IBTYPE) W !!,"No ICN for this patient" G AGAIN
     28 I 'IBICN Q
     29 ;
     30 ; sent off the remote queries and get back handles
     31 S IBX=0 F  S IBX=$O(IBT(IBX)) Q:IBX<1  D
     32 . D SEND(.IBH,IBX,IBICN,$S($D(IBTYPE):"IBCN INSURANCE QUERY TASK",1:"IBCN INSURANCE QUERY"))
     33 . X $S(IBH(0)'="":"S $P(IBT(IBX),U,5)=IBH(0)",1:"W:'$D(IBTYPE) !,""No handle returned for "",$P(IBT(IBX),U,2) K IBT(IBX)")
     34 ;
     35 ; no handles returned
     36 I $D(IBT)<9,'$D(IBTYPE) W !!,"Unable to perform any remote queries.",! G AGAIN
     37 I $D(IBT)<9 Q
     38 ;
     39 ; go through every IBT()
     40 S IBP="|",IBX=0 F  S IBX=$O(IBT(IBX)) Q:IBX<1!($D(IBT)<9)  D
     41 . ;
     42 . ; do I have a return data.
     43 . F IBWAIT=1:1:60 W:'$D(IBTYPE) "." H 1 D CHECK(.IBR,$P(IBT(IBX),"^",5)) I $G(IBR(0))["Done" Q
     44 . I $G(IBR(0))'["Done" W:'$D(IBTYPE) !!,"Unable to communicate with ",$P(IBT(IBX),U,2) Q
     45 . K IBR
     46 . D RETURN(.IBR,$P(IBT(IBX),"^",5))
     47 . ;
     48 . ; no data returned or error message
     49 . S IBRZ=$S(-1=+$G(IBR):IBR,$G(IBR(0))="":$G(IBR(1)),1:$G(IBR(0)))
     50 . ;
     51 . ; no info to proceed
     52 . I IBRZ<1 W:'$D(IBTYPE) !,"Response from ",$P(IBT(IBX),U,2),!,$P(IBRZ,"^",2) K IBT(IBX) D:IBRZ="-1^No insurance on file" FILE(0) Q
     53 . ;
     54 . ; received insurance info, need to file and display message
     55 . W:'$D(IBTYPE) !,"Received ",$G(IBR(0))," insurance companies from ",$P(IBT(IBX),U,2) D FILE(+IBR(0))
     56 . ;
     57 . S IBY=0 F  S IBY=$O(IBR(IBY))  Q:IBY<1  D
     58 .. F IBL=5:1  S IBT=$P($T(MAP+IBL),";",3) Q:IBT=""  D
     59 ... ;
     60 ... ; am I on the right MAP line
     61 ... I $P(IBT,IBP,3)=$S(IBY#6:IBY#6,1:6) S IBZ=$P(IBR(IBY),"^",$P(IBT,IBP,4)) I $L(IBZ) D
     62 .... ;
     63 .... ; xecute code to change external to internal
     64 .... X:$L($P(IBT,IBP,7)) $P(IBT,IBP,7)
     65 .... ;
     66 .... ; put the info in the array for the buffer file
     67 .... S:$D(IBZ) IBB($P(IBT,IBP,5))=IBZ
     68 .. ;
     69 .. ; need to avoid duplicates if possible.
     70 .. I $G(IBB(20.01))["MEDICARE (WNR)" S X=0 F  S X=$O(^DPT(DFN,.312,X)) Q:X<1  I $P($G(^DIC(36,+$P($G(^DPT(DFN,.312,X,0)),"^"),0)),"^")["MEDICARE (WNR)" K IBB Q
     71 .. Q:'$D(IBB)
     72 .. ;
     73 .. ; file in the buffer file & where else needed
     74 .. I IBY#6=0 D
     75 ... I $L($G(IBB(20.01))) D
     76 .... S IBB(.14)=$$IEN^XUAF4(+IBT(IBX))
     77 .... S IBB=$$ADDSTF^IBCNBES($G(IBB(.03),1),DFN,.IBB)
     78 ... I '$D(IB1),$D(IBTYPE),$L($G(IBB(20.01))) D SCH^IBTUTL2(DFN,$G(IBSAVEI),$G(IBSAVEJ)):IBTYPE="TRKR",ADM^IBTUTL($G(IBSAVE1),$G(IBSAVE2),$G(IBSAVE3),$G(IBSAVE4)):IBTYPE="ADM" S IB1=1
     79 ... W:'$D(IBTYPE)&($L($G(IBB(20.01)))) !,$P($G(IBB),"^")," Buffer File entry for ",$G(IBB(20.01))
     80 ... K IBB
     81 ;
     82 ; flag so I don't do this patient again within 90 days
     83 S ^IBT(356,"ARDV",DFN,$$FMADD^XLFDT(DT,90))=""
     84 ;
     85 Q
     86 ;
     87RPC(IBD,IBICN) ; RPC entry for looking up insurance info
     88 N DFN,IBZ,IBX,IBY,IBP,IBI,IBT,IBZ
     89 S DFN=$$DFN^IBARXMU(IBICN) I 'DFN S IBD(0)="-1^ICN Not found" Q
     90 D ALL^IBCNS1(DFN,"IBY",3)
     91 I '$D(IBY) S IBD(0)="-1^No insurance on file" Q
     92 ; set up return format
     93 ; IBD(0)   = # of insurance companies
     94 S IBD(0)=$G(IBY(0))
     95 ;
     96 ; where n starts at 1 and increments 6 for each insurance company
     97 ; IBD(n) = 355.33, zero node format
     98 ; IBD(n+1) = 355.33, 20 node format
     99 ; IBD(n+2) = 355.33, 21 node format
     100 ; IBD(n+3) = 355.33, 40 node format
     101 ; IBD(n+4) = 355.33, 60 node format
     102 ; IBD(n+5) = 355.33, 61 node format
     103 ;
     104 S IBP="|"
     105 S IBI=0 F  S IBI=$O(IBY(IBI))  Q:IBI<1  F IBL=5:1 S IBT=$P($T(MAP+IBL),";",3) Q:IBT=""  D
     106 . S IBZ=$P($G(IBY(IBI,+IBT)),"^",$P(IBT,IBP,2)) ; set the existing data
     107 . I $L($P(IBT,IBP,6)) X $P(IBT,IBP,6) ; output transform
     108 . S $P(IBD(IBI-1*6+$P(IBT,IBP,3)),"^",$P(IBT,IBP,4))=IBZ ; set data IBD
     109 Q
     110 ;
     111MAP ; this is a mapping of data returned from ALL^IBCNS1 to the buffer file
     112 ; format is:  node number | piece | extract node | extract piece
     113 ;             | 355.33 field number | format out code (if any)
     114 ;             | format in code (if any)
     115 ; the extract nodes will be sequential to match buffer file DD
     116 ;;0|1|2|1|20.01|N Z X "F Z=0,.11,.13 S IBY(IBI,36+Z)=$G(^DIC(36,IBZ,Z))" S IBZ=$P(IBY(IBI,36),"^");ins co name
     117 ;;0|2|5|4|60.04;subscriber id
     118 ;;0|4|5|3|60.03;experation date
     119 ;;0|6|5|5|60.05;who's insurance
     120 ;;0|8|5|2|60.02;effective date
     121 ;;0|16|5|6|60.06;pt relationship to insured
     122 ;;0|17|5|7|60.07;name of insured
     123 ;;0|20|5|12|60.12;coordination of benefits
     124 ;;1|3|1|10|.1||I IBZ<$$FMADD^XLFDT(DT,-180) K IBZ;date (last) verified
     125 ;;1|9|1|3|.03;source of information
     126 ;;2|1|6|5|61.05;send bill to employer
     127 ;;2|2|6|6|61.06;employer claims street address (line 1)
     128 ;;2|3|6|7|61.07;employer claims street address line 2
     129 ;;2|4|6|8|61.08;employer claims street address line 3
     130 ;;2|5|6|9|61.09;employer claims city
     131 ;;2|6|6|10|61.1|S IBZ=$$EXTERNAL^DILFD(2.312,2.06,"",IBZ)|N DIC,X,Y S DIC="^DIC(5,",X=IBZ,DIC(0)="OX" D ^DIC K:+Y<1 IBZ S:+Y>0 IBZ=+Y;employer claims state
     132 ;;2|7|6|11|61.11;employer claims zip code
     133 ;;2|8|6|12|61.12;employer claims phone
     134 ;;2|10|6|1|61.01;esghp
     135 ;;2|11|6|3|61.03;employment status
     136 ;;2|12|6|4|61.04;retirement date
     137 ;;3|1|5|8|60.08;insured's dob
     138 ;;3|5|5|9|60.09;insured's ssn
     139 ;;3|12|5|13|60.13;insured's sex
     140 ;;4|1|5|10|60.1;primary care provider
     141 ;;4|2|5|11|60.11;primary provider phone
     142 ;;355.3|2|4|1|40.01;is this a group policy
     143 ;;355.3|3|4|2|40.02;group name
     144 ;;355.3|4|4|3|40.03;group number
     145 ;;355.3|5|4|4|40.04;(is) utilization required
     146 ;;355.3|6|4|5|40.05;(is) pre-certification required
     147 ;;355.3|7|4|7|40.07;exclude pre-existing condition
     148 ;;355.3|8|4|8|40.08;benefits assignable
     149 ;;355.3|9|4|9|40.09;type of plan
     150 ;;355.3|12|4|6|40.06;ambulatory care certification
     151 ;;36|2|2|5|20.05;reimburse
     152 ;;36.11|1|3|1|21.01;street address line 1
     153 ;;36.11|2|3|2|21.02;street address line 2
     154 ;;36.11|3|3|3|21.03;street address line 3
     155 ;;36.11|4|3|4|21.04;city
     156 ;;36.11|5|3|5|21.05|S IBZ=$$EXTERNAL^DILFD(36,.115,"",IBZ)|N DIC,X,Y S DIC="^DIC(5,",X=IBZ,DIC(0)="OX" D ^DIC K:+Y<1 IBZ S:+Y>0 IBZ=+Y;state
     157 ;;36.11|6|3|6|21.06;zip code
     158 ;;36.13|1|2|2|20.02;phone number
     159 ;;36.13|2|2|3|20.03;billing phone number
     160 ;;36.13|3|2|4|20.04;precertification phone number
     161 ;;
     162 ;
     163SEND(IBH,IBX,IBICN,IBRPC) ; called to send off queries
     164 D EN1^XWB2HL7(.IBH,IBX,IBRPC,"",IBICN)
     165 Q
     166 ;
     167CHECK(IBR,IBH) ; called to check the return status of an RPC
     168 D RPCCHK^XWB2HL7(.IBR,IBH)
     169 Q
     170 ;
     171RETURN(IBR,IBH) ; called to get the return data and clear the broker
     172 N IBZ
     173 D RTNDATA^XWBDRPC(.IBR,IBH),CLEAR^XWBDRPC(.IBZ,IBH)
     174 Q
     175 ;
     176TASK ; queue off task job
     177 N ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTSK,ZTSAVE
     178 S ZTRTN="BACKGND^IBCNRDV",ZTDESC="Query Remote Facilities for Insurance",ZTDTH=$$FMADD^XLFDT($$NOW^XLFDT),(ZTIO,ZTSAVE("DFN"),ZTSAVE("IBSAVE*"),ZTSAVE("IBTYPE"))="" D ^%ZTLOAD
     179 Q
     180 ;
     181TRKR(DFN,IBSAVEI,IBSAVEJ,IBDUZ) ; claims tracking entry
     182 N IBTYPE,IBT
     183 Q:$D(^IBT(356,"ARDV",DFN))  ; have already done recently
     184 Q:'$$TFL^IBARXMU(DFN,.IBT)  ; no remote facilities
     185 S IBTYPE="TRKR" D
     186 . I DUZ=.5 N DUZ S DUZ=+$G(IBDUZ),DUZ(2)=+$$SITE^VASITE
     187 . D TASK
     188 Q
     189 ;
     190ADM(DFN,IBSAVE1,IBSAVE2,IBSAVE3,IBSAVE4) ; admit event entry
     191 N IBTYPE S IBTYPE="ADM" D TASK
     192 Q
     193 ;
     194FILE(IBX) ; updates data into the log file
     195 ;IBX = number of insurance co's found
     196 N DIC,DA,DIE,IBM,DO,X,Y,IBZ,DR
     197 S IBM=$E($$DT^XLFDT,1,5)_"00",DA=+$O(^IBA(355.34,"B",IBM,0))
     198 I 'DA K DA L +^IBA(355.34,"B",IBM):10 S X=IBM,DIC="^IBA(355.34,",DIC(0)="F" D FILE^DICN S DA=+Y L -^IBA(355.34,"B",IBM)
     199 L +^IBA(355.34,DA):10
     200 S IBZ=^IBA(355.34,DA,0),DIE="^IBA(355.34,"
     201 S DR=".02///"_($P(IBZ,"^",2)+1)_";.03///"_($P(IBZ,"^",3)+IBX) D ^DIE
     202 L -^IBA(355.34,DA)
     203 Q
Note: See TracChangeset for help on using the changeset viewer.