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

    r613 r623  
    1 IBCE837A        ;ALB/TMP - OUTPUT FOR 837 TRANSMISSION - CONTINUED ;8/6/03 10:50am
    2         ;;2.0;INTEGRATED BILLING;**137,191,211,232,296,377**;21-MAR-94;Build 23
    3         ;;Per VHA Directive 2004-038, this routine should not be modified.
    4         ;
    5 UPD(MSGNUM,BATCH,CNT,BILLS,DESC,IBBTYP,IBINS)   ; Upd current batch + bills w/new status
    6         ;MSGNUM = mail msg # for batch
    7         ;BATCH = batch #
    8         ;CNT = # of bills in batch
    9         ;BILLS = array BILLS(bill ien in 364) in batch
    10         ;DESC = 1-80 character description of batch
    11         ;IBBTYP = X-Y where X = P for professional or I for institution
    12         ;                   Y = 1 for test or 0 for live transmission
    13         ;                         or 2 for live claim resubmitted as test
    14         ;IBINS = ien of single insurance company for the batch (optional)
    15         ;
    16         N DIC,DIE,DR,DA,IBBATCH,IBIFN,IBIEN,IBYY,IBTXTEST,IBMRA
    17         S IBBATCH=$O(^IBA(364.1,"B",+BATCH,"")) Q:'IBBATCH
    18         S IBTXTEST=+$P(IBBTYP,"-",2)
    19         I '$P($G(^IBE(350.9,1,8)),U,7) S IBINS=""
    20         ;
    21         S DIE="^IBA(364.1,",DA=IBBATCH,DR=".02////P;.03///"_CNT_";.04///"_MSGNUM_";.05///0;.07////1;.08///^S X="""_DESC_""""_$S($G(IBINS):";.12////"_IBINS,1:"")
    22         ;
    23         I '$P($G(^TMP("IBRESUBMIT",$J)),U,3) S DR=DR_";1.01///NOW;1.02///.5"
    24         I $P($G(^TMP("IBRESUBMIT",$J)),U,2) S DR=DR_";.15////"_$P(^($J),U,2)
    25         ;
    26         S DR=DR_";.14////"_$S('IBTXTEST:0,1:1)_";.06////"_$S($E(IBBTYP)="P":2,1:3) D ^DIE ; Update batch
    27         ;
    28         I IBTXTEST=2 D ADDTXM^IBCEPTM(.BILLS,IBBATCH,$$NOW^XLFDT()) Q
    29         I IBTXTEST'=2 S IBIEN=0 F  S IBIEN=$O(BILLS(IBIEN)) Q:'IBIEN  D  ;Update each bill
    30         .S DA=IBIEN,DIE="^IBA(364,",DR=".02////"_IBBATCH_";.03///P;.04///NOW" D ^DIE
    31         .S IBIFN=+$G(^IBA(364,IBIEN,0))
    32         . ;
    33         . ; If this claim has just been retransmitted, set the .06 field for the previous transmission entry
    34         . N PRVTXI,PRVTXD
    35         . S PRVTXI=$O(^IBA(364,"B",IBIFN,IBIEN),-1)      ; previous transmission for this claim
    36         . I PRVTXI D
    37         .. S PRVTXD=$G(^IBA(364,PRVTXI,0))
    38         .. I '$F(".R.E.","."_$P(PRVTXD,U,3)_".") Q                 ; prev trans must have status of "R" or "E"
    39         .. I $P(PRVTXD,U,7,8)'=$P($G(^IBA(364,IBIEN,0)),U,7,8) Q   ; test bill and COB must be the same
    40         .. S DA=PRVTXI,DIE=364,DR=".06///"_IBBATCH D ^DIE          ; update the resubmit batch number
    41         .. Q
    42         . ;
    43         .Q:$D(^TMP("IBRESUBMIT",$J))!($P($G(^DGCR(399,IBIFN,0)),U,13)=4)!(+$$TXMT^IBCEF4(IBIEN)=2)
    44         .S IBMRA=$$NEEDMRA^IBEFUNC(IBIFN)
    45         .I IBMRA="C",$P($G(^DGCR(399,IBIFN,0)),U,13)=2 S IBMRA=1
    46         .I IBIFN D
    47         ..S (DIC,DIE)="^DGCR(399,",DA=$P($G(^IBA(364,IBIEN,0)),U),DR="[IB STATUS]",IBYY=$S('IBMRA:"@91",1:"@911") D:DA ^DIE
    48         ..D BSTAT^IBCDC(IBIFN) ; remove from AB list
    49         Q
    50         ;
    51 PRE     ; Run before processing a bill entry
    52         K IBXSAVE,IBXERR,^UTILITY("VAPA",$J),^TMP("IBXSAVE",$J),^TMP($J),^TMP("DIERR",$J)
    53         Q
    54         ;
    55 POST    ; Run after processing a bill entry for cleanup
    56         N Q
    57         I $G(IBXERR)'="" D
    58         .S ^TMP("IBXERR",$J,IBXIEN)=IBXERR K ^TMP("IBXDATA",$J)
    59         .K ^TMP("IBHDR1",$J)
    60         .I $D(^TMP("IBRESUBMIT",$J)),'$G(^TMP("IBEDI_TEST_BATCH",$J)) D  ;Set not resub flag for non-test bill
    61         ..N Z,Z0
    62         ..S Z0=$P($G(^TMP("IBRESUBMIT",$J)),U) Q:Z0=""
    63         ..S Z=$O(^IBA(364,"ABABI",+$O(^IBA(364.1,"B",Z0,"")),IBXIEN,""))
    64         ..I Z S ^TMP("IBNOT",$J,Z)=IBXIEN
    65         K IBXSAVE,IBXNOREQ,^TMP("IBXSAVE",$J),^TMP($J)
    66         S Q="VA" F  S Q=$O(^UTILITY(Q)) Q:$E(Q,1,2)'="VA"  I $D(^(Q,$J)) K ^UTILITY(Q,$J)
    67         D CLEAN^DILF
    68         Q
    69         ;
    70 MAILIT(IBQUEUE,IBBILL,IBCTM,IBDUZ,IBDESC,IBBTYP,IBINS)  ; Send mail msg, update bills
    71         ;IBQUEUE = mail queue name to send 837 transactions to
    72         ;IBBILL = array of ien's in file 364 of bills in batch - IBBILL(IEN)=""
    73         ;IBCTM = # of bills in batch, returned reset to 0
    74         ;IBDUZ = ien of user 'running' extract (if any)
    75         ;IBDESC = description of batch
    76         ;IBBTYP = X-Y where X = P for professional or I for institution
    77         ;                   Y = 1 or 2 for test or 0 for live transmission
    78         ;IBINS = ien of insurance company if only one/batch option (optional)
    79         ;
    80         N DIK,DA,XMTO,XMZ,XMBODY,XMDUZ,XMSUBJ,IBBDA,IBBNO
    81         ;
    82         S IBBNO=+$P($G(^TMP("IBHDR",$J)),U),IBBDA=$O(^IBA(364.1,"B",IBBNO,""))
    83         I '$P($G(^IBE(350.9,1,8)),U,7) S IBINS=""
    84         ;
    85         I IBCTM D
    86         . I +$G(^TMP("IBEDI_TEST_BATCH",$J)) S IBQUEUE="MCT"
    87         . I IBQUEUE'="",IBQUEUE'["@" S XMTO("XXX@Q-"_IBQUEUE_".VA.GOV")=""
    88         . I IBQUEUE["@" S XMTO(IBQUEUE)=""
    89         . S XMDUZ=$G(IBDUZ),XMBODY="^TMP(""IBXMSG"","_$J_")",XMSUBJ=$S($P(IBBTYP,U,2):"** TEST"_$S($P(IBBTYP,U,2)=2:"/RESUB OF LIVE",1:""),1:"")_" CLAIM BATCH: "_$S(IBQUEUE'["@":IBQUEUE,1:$P(IBQUEUE,"@"))_"/"_IBBNO
    90         . K XMZ
    91         . D SENDMSG^XMXAPI(XMDUZ,XMSUBJ,XMBODY,.XMTO,,.XMZ)
    92         . I $G(XMZ) D
    93         .. D UPD(XMZ,$P($G(^TMP("IBHDR",$J)),U),IBCTM,.IBBILL,IBDESC,IBBTYP,IBINS) ;Update batch/bills
    94         .. S ^TMP("IBCE-BATCH",$J,IBBNO)=IBBDA_U_IBCTM_U_$P($G(^TMP("IBRESUBMIT",$J)),U)
    95 MAILQ   S IBCTM=0
    96         D CHKBTCH(+$G(^TMP("IBHDR",$J)))
    97         K ^TMP("IBHDR",$J),^TMP("IBHDR1",$J),^TMP("IBXMSG",$J),IBBILL
    98         Q
    99         ;
    100 CHKNEW(IBQ,IBBILL,IBCTM,IBDESC,IBBTYP,IBINS,IBSITE,IBSIZE)      ;
    101         ;  Determine if ok to send msg
    102         ;  Check for one insurance per batch if IBINS defined
    103         ; Returns IBSIZE, IBCTM, IBBILL (pass by reference)
    104         ;
    105         ; IBQ = data queue name
    106         ; IBBILL = the 'list' of bill #'s in the batch
    107         ; IBCTM = the # of claims output so far to the batch
    108         ; IBDESC = the batch description text
    109         ; IBBTYP = X-Y where X = P for professional or I for institution
    110         ;                   Y = 1 for test or 0 for live transmission
    111         ; IBINS = the ien of the single insurance co. for the batch (optional)
    112         ; IBSITE = the '8' node of file 350.9 (IB PARAMETERS)
    113         ; IBSIZE = the 'running' size of the output message
    114         ;
    115         Q:$S($G(IBINS)="":0,1:'$P(IBSITE,U,7))
    116         ;
    117         ; New batch needed
    118         I IBCTM D MAILIT(IBQ,.IBBILL,.IBCTM,"",IBDESC,IBBTYP,IBINS) S IBSIZE=0
    119         Q
    120         ;
    121 ERRMSG(XMBODY)  ; Send bulletin for error message
    122         N XMTO,XMSUBJ
    123         S XMTO("I:G.IB EDI")="",XMSUBJ="EDI 837 TRANSMISSION ERRORS"
    124         ;
    125         D SENDMSG^XMXAPI(,XMSUBJ,XMBODY,.XMTO)
    126         D ALERT("One or more EDI bills were not transmitted.  Check your mail for details","G.IB EDI")
    127         Q
    128         ;
    129 CLEANUP ; Cleans up bill transmission environment
    130         ;
    131         N IBTEST
    132         S IBTEST=+$G(^TMP("IBEDI_TEST_BATCH",$J))
    133         L -^IBA(364,0)
    134         I $D(^TMP("IBRESUBMIT",$J,"IBXERR"))!$D(^TMP("IBONE",$J,"IBXERR"))!$D(^TMP("IBSELX",$J,"IBXERR")) D  ;Error message to mail group
    135         . N XMTO,XMBODY,XMDUZ,XMSUBJ,XMZ,IBFUNC
    136         . S IBFUNC=$S($D(^TMP("IBRESUBMIT",$J,"IBXERR")):$S('IBTEST:1,1:4),$D(^TMP("IBONE",$J,"IBXERR")):2,1:3)
    137         . Q:'IBFUNC
    138         . S XMTO("I:G.IB EDI")="",XMDUZ="",XMBODY="^TMP("""_$S(IBFUNC=1!(IBFUNC=4):"IBRESUBMIT",1:"IBONE")_""","_$J_",""IBXERR"")"
    139         . S XMSUBJ="EDI 837 B"_$P("ATCH^ILL^ILL(s)^ILL(s)",U,IBFUNC)_" NOT "_$S($G(^TMP("IBONE",$J)):"RE",1:"")_"SUBMITTED"_$S('IBTEST:"",1:" AS TEST CLAIMS")
    140         . D SENDMSG^XMXAPI(XMDUZ,XMSUBJ,XMBODY,.XMTO,,.XMZ)
    141         . K ^TMP("IBRESUBMIT",$J),^TMP("IBONE",$J)
    142         ;
    143         I $D(^TMP("IBRESUBMIT",$J)),'IBTEST D RESUBUP^IBCEM02 ;Upd resubmtd batch bills
    144         I '$D(^TMP("IBSELX",$J)) K ^TMP("IBCE-BATCH",$J)
    145         K ^TMP("IBXERR",$J),IBXERR
    146         I 'IBTEST D CHKBTCH(+$G(^TMP("IBHDR",$J)))
    147 CLEANP  ;  Entrypoint for extract data disply
    148         K ^TMP("IBTXMT",$J),^TMP("IBXINS",$J)
    149         K ^TMP("IBRESUBMIT",$J),^TMP("IBRESUB",$J),^TMP("IBNOT",$J),^TMP("IBONE",$J),^TMP("IBHDR",$J),^TMP("IBTX",$J),^TMP("IBEDI_TEST_BATCH",$J)
    150         K ^UTILITY("VADM",$J)
    151         D CLEAN^DILF
    152         K ZTREQ S ZTREQ="@"
    153         Q
    154         ;
    155 ALERT(XQAMSG,IBGRP)     ; Send alert message
    156         N XQA
    157         S XQA(IBGRP)=""
    158         D SETUP^XQALERT
    159         Q
    160 CHKBTCH(IBBNO)  ; Delete batch whose batch # is IBBNO if no entries in file 364
    161         ; and not a resubmitted batch
    162         N IBZ,DA,DIK
    163         S IBZ=+$O(^IBA(364.1,"B",+IBBNO,""))
    164         I IBZ,'$O(^IBA(364,"C",IBZ,0)),'$P($G(^IBA(364.1,IBZ,0)),U,14) S DA=IBZ,DIK="^IBA(364.1," D ^DIK
    165         Q
    166         ;
    167 TESTLIM(IBINS)  ; Check for test bill limit per day has been reached
    168         N IB3,DA,DIK
    169         S IB3=$G(^DIC(36,IBINS,3))
    170         I $P(IB3,U,5)'=DT S $P(IB3,U,7)=0
    171         I ($P(IB3,U,7)+$G(^TMP("IBICT",$J,IBINS))+1)>$P(IB3,U,6) D  Q
    172         . S IBINS="" ;max # hit
    173         . S DA=IBX,DIK="^IBA(364," D ^DIK
    174         S ^TMP("IBICT",$J,IBINS)=$G(^TMP("IBICT",$J,IBINS))+1
    175         Q
    176         ;
    177 SETVAR(IBXIEN,IBINS,IB0,IBSEC,IBNID,IB837R,IBDIV)       ;
    178         ; Set up variables needed for subscripts in sort global
    179         ; ejk added IBSEC logic for patch 296
    180         ; IBSEC=1 if primary bill, 2 if 2nd/non-MRA, 3 if 2nd/MRA
    181         S IBSEC=$S($$COBN^IBCEF(IBXIEN)=1:1,'$$MRASEC^IBCEF4(IBXIEN):2,1:3)
    182         S IBNID=$$PAYERID^IBCEF2(IBXIEN)
    183         S IB837R=$$RECVR^IBCEF2(IBXIEN)
    184         S IBDIV=$P($S($P(IB0,U,22):$$SITE^VASITE(DT,$P(IB0,U,22)),1:$$SITE^VASITE()),U,3)
    185         I IBNID'="","RPIHS"[$E(IBNID),$E(IBNID,2,$L(IBNID))="PRNT" S IBNID=IBNID_"*"_IBINS
    186         I IBNID="" S IBNID="*"_IBINS
    187         S $P(IBNID,"*",3)=$S($P(IB0,U,22):$P(IB0,U,22),1:"")
    188         Q
    189         ;
     1IBCE837A ;ALB/TMP - OUTPUT FOR 837 TRANSMISSION - CONTINUED ;8/6/03 10:50am
     2 ;;2.0;INTEGRATED BILLING;**137,191,211,232,296**;21-MAR-94
     3 ;
     4UPD(MSGNUM,BATCH,CNT,BILLS,DESC,IBBTYP,IBINS) ; Upd current batch + bills w/new status
     5 ;MSGNUM = mail msg # for batch
     6 ;BATCH = batch #
     7 ;CNT = # of bills in batch
     8 ;BILLS = array BILLS(bill ien in 364) in batch
     9 ;DESC = 1-80 character description of batch
     10 ;IBBTYP = X-Y where X = P for professional or I for institution
     11 ;                   Y = 1 for test or 0 for live transmission
     12 ;                         or 2 for live claim resubmitted as test
     13 ;IBINS = ien of single insurance company for the batch (optional)
     14 ;
     15 N DIC,DIE,DR,DA,IBBATCH,IBIFN,IBIEN,IBYY,IBTXTEST,IBMRA
     16 S IBBATCH=$O(^IBA(364.1,"B",+BATCH,"")) Q:'IBBATCH
     17 S IBTXTEST=+$P(IBBTYP,"-",2)
     18 I '$P($G(^IBE(350.9,1,8)),U,7) S IBINS=""
     19 ;
     20 S DIE="^IBA(364.1,",DA=IBBATCH,DR=".02////P;.03///"_CNT_";.04///"_MSGNUM_";.05///0;.07////1;.08///^S X="""_DESC_""""_$S($G(IBINS):";.12////"_IBINS,1:"")
     21 ;
     22 I '$P($G(^TMP("IBRESUBMIT",$J)),U,3) S DR=DR_";1.01///NOW;1.02///.5"
     23 I $P($G(^TMP("IBRESUBMIT",$J)),U,2) S DR=DR_";.15////"_$P(^($J),U,2)
     24 ;
     25 S DR=DR_";.14////"_$S('IBTXTEST:0,1:1)_";.06////"_$S($E(IBBTYP)="P":2,1:3) D ^DIE ; Update batch
     26 ;
     27 I IBTXTEST=2 D ADDTXM^IBCEPTM(.BILLS,IBBATCH,$$NOW^XLFDT()) Q
     28 I IBTXTEST'=2 S IBIEN=0 F  S IBIEN=$O(BILLS(IBIEN)) Q:'IBIEN  D  ;Update each bill
     29 .S DA=IBIEN,DIE="^IBA(364,",DR=".02////"_IBBATCH_";.03///P;.04///NOW" D ^DIE
     30 .S IBIFN=+$G(^IBA(364,IBIEN,0))
     31 .Q:$D(^TMP("IBRESUBMIT",$J))!($P($G(^DGCR(399,IBIFN,0)),U,13)=4)!(+$$TXMT^IBCEF4(IBIEN)=2)
     32 .S IBMRA=$$NEEDMRA^IBEFUNC(IBIFN)
     33 .I IBMRA="C",$P($G(^DGCR(399,IBIFN,0)),U,13)=2 S IBMRA=1
     34 .I IBIFN D
     35 ..S (DIC,DIE)="^DGCR(399,",DA=$P($G(^IBA(364,IBIEN,0)),U),DR="[IB STATUS]",IBYY=$S('IBMRA:"@91",1:"@911") D:DA ^DIE
     36 ..D BSTAT^IBCDC(IBIFN) ; remove from AB list
     37 Q
     38 ;
     39PRE ; Run before processing a bill entry
     40 K IBXSAVE,IBXERR,^UTILITY("VAPA",$J),^TMP("IBXSAVE",$J),^TMP($J),^TMP("DIERR",$J)
     41 Q
     42 ;
     43POST ; Run after processing a bill entry for cleanup
     44 N Q
     45 I $G(IBXERR)'="" D
     46 .S ^TMP("IBXERR",$J,IBXIEN)=IBXERR K ^TMP("IBXDATA",$J)
     47 .K ^TMP("IBHDR1",$J)
     48 .I $D(^TMP("IBRESUBMIT",$J)),'$G(^TMP("IBEDI_TEST_BATCH",$J)) D  ;Set not resub flag for non-test bill
     49 ..N Z,Z0
     50 ..S Z0=$P($G(^TMP("IBRESUBMIT",$J)),U) Q:Z0=""
     51 ..S Z=$O(^IBA(364,"ABABI",+$O(^IBA(364.1,"B",Z0,"")),IBXIEN,""))
     52 ..I Z S ^TMP("IBNOT",$J,Z)=IBXIEN
     53 K IBXSAVE,IBXNOREQ,^TMP("IBXSAVE",$J),^TMP($J)
     54 S Q="VA" F  S Q=$O(^UTILITY(Q)) Q:$E(Q,1,2)'="VA"  I $D(^(Q,$J)) K ^UTILITY(Q,$J)
     55 D CLEAN^DILF
     56 Q
     57 ;
     58MAILIT(IBQUEUE,IBBILL,IBCTM,IBDUZ,IBDESC,IBBTYP,IBINS) ; Send mail msg, update bills
     59 ;IBQUEUE = mail queue name to send 837 transactions to
     60 ;IBBILL = array of ien's in file 364 of bills in batch - IBBILL(IEN)=""
     61 ;IBCTM = # of bills in batch, returned reset to 0
     62 ;IBDUZ = ien of user 'running' extract (if any)
     63 ;IBDESC = description of batch
     64 ;IBBTYP = X-Y where X = P for professional or I for institution
     65 ;                   Y = 1 or 2 for test or 0 for live transmission
     66 ;IBINS = ien of insurance company if only one/batch option (optional)
     67 ;
     68 N DIK,DA,XMTO,XMZ,XMBODY,XMDUZ,XMSUBJ,IBBDA,IBBNO
     69 ;
     70 S IBBNO=+$P($G(^TMP("IBHDR",$J)),U),IBBDA=$O(^IBA(364.1,"B",IBBNO,""))
     71 I '$P($G(^IBE(350.9,1,8)),U,7) S IBINS=""
     72 ;
     73 I IBCTM D
     74 . I +$G(^TMP("IBEDI_TEST_BATCH",$J)) S IBQUEUE="MCT"
     75 . I IBQUEUE'="",IBQUEUE'["@" S XMTO("XXX@Q-"_IBQUEUE_".VA.GOV")=""
     76 . I IBQUEUE["@" S XMTO(IBQUEUE)=""
     77 . S XMDUZ=$G(IBDUZ),XMBODY="^TMP(""IBXMSG"","_$J_")",XMSUBJ=$S($P(IBBTYP,U,2):"** TEST"_$S($P(IBBTYP,U,2)=2:"/RESUB OF LIVE",1:""),1:"")_" CLAIM BATCH: "_$S(IBQUEUE'["@":IBQUEUE,1:$P(IBQUEUE,"@"))_"/"_IBBNO
     78 . K XMZ
     79 . D SENDMSG^XMXAPI(XMDUZ,XMSUBJ,XMBODY,.XMTO,,.XMZ)
     80 . I $G(XMZ) D
     81 .. D UPD(XMZ,$P($G(^TMP("IBHDR",$J)),U),IBCTM,.IBBILL,IBDESC,IBBTYP,IBINS) ;Update batch/bills
     82 .. S ^TMP("IBCE-BATCH",$J,IBBNO)=IBBDA_U_IBCTM_U_$P($G(^TMP("IBRESUBMIT",$J)),U)
     83MAILQ S IBCTM=0
     84 D CHKBTCH(+$G(^TMP("IBHDR",$J)))
     85 K ^TMP("IBHDR",$J),^TMP("IBHDR1",$J),^TMP("IBXMSG",$J),IBBILL
     86 Q
     87 ;
     88CHKNEW(IBQ,IBBILL,IBCTM,IBDESC,IBBTYP,IBINS,IBSITE,IBSIZE) ;
     89 ;  Determine if ok to send msg
     90 ;  Check for one insurance per batch if IBINS defined
     91 ; Returns IBSIZE, IBCTM, IBBILL (pass by reference)
     92 ;
     93 ; IBQ = data queue name
     94 ; IBBILL = the 'list' of bill #'s in the batch
     95 ; IBCTM = the # of claims output so far to the batch
     96 ; IBDESC = the batch description text
     97 ; IBBTYP = X-Y where X = P for professional or I for institution
     98 ;                   Y = 1 for test or 0 for live transmission
     99 ; IBINS = the ien of the single insurance co. for the batch (optional)
     100 ; IBSITE = the '8' node of file 350.9 (IB PARAMETERS)
     101 ; IBSIZE = the 'running' size of the output message
     102 ;
     103 Q:$S($G(IBINS)="":0,1:'$P(IBSITE,U,7))
     104 ;
     105 ; New batch needed
     106 I IBCTM D MAILIT(IBQ,.IBBILL,.IBCTM,"",IBDESC,IBBTYP,IBINS) S IBSIZE=0
     107 Q
     108 ;
     109ERRMSG(XMBODY) ; Send bulletin for error message
     110 N XMTO,XMSUBJ
     111 S XMTO("I:G.IB EDI")="",XMSUBJ="EDI 837 TRANSMISSION ERRORS"
     112 ;
     113 D SENDMSG^XMXAPI(,XMSUBJ,XMBODY,.XMTO)
     114 D ALERT("One or more EDI bills were not transmitted.  Check your mail for details","G.IB EDI")
     115 Q
     116 ;
     117CLEANUP ; Cleans up bill transmission environment
     118 ;
     119 N IBTEST
     120 S IBTEST=+$G(^TMP("IBEDI_TEST_BATCH",$J))
     121 L -^IBA(364,0)
     122 I $D(^TMP("IBRESUBMIT",$J,"IBXERR"))!$D(^TMP("IBONE",$J,"IBXERR"))!$D(^TMP("IBSELX",$J,"IBXERR")) D  ;Error message to mail group
     123 . N XMTO,XMBODY,XMDUZ,XMSUBJ,XMZ,IBFUNC
     124 . S IBFUNC=$S($D(^TMP("IBRESUBMIT",$J,"IBXERR")):$S('IBTEST:1,1:4),$D(^TMP("IBONE",$J,"IBXERR")):2,1:3)
     125 . Q:'IBFUNC
     126 . S XMTO("I:G.IB EDI")="",XMDUZ="",XMBODY="^TMP("""_$S(IBFUNC=1!(IBFUNC=4):"IBRESUBMIT",1:"IBONE")_""","_$J_",""IBXERR"")"
     127 . S XMSUBJ="EDI 837 B"_$P("ATCH^ILL^ILL(s)^ILL(s)",U,IBFUNC)_" NOT "_$S($G(^TMP("IBONE",$J)):"RE",1:"")_"SUBMITTED"_$S('IBTEST:"",1:" AS TEST CLAIMS")
     128 . D SENDMSG^XMXAPI(XMDUZ,XMSUBJ,XMBODY,.XMTO,,.XMZ)
     129 . K ^TMP("IBRESUBMIT",$J),^TMP("IBONE",$J)
     130 ;
     131 I $D(^TMP("IBRESUBMIT",$J)),'IBTEST D RESUBUP^IBCEM02 ;Upd resubmtd batch bills
     132 I '$D(^TMP("IBSELX",$J)) K ^TMP("IBCE-BATCH",$J)
     133 K ^TMP("IBXERR",$J),IBXERR
     134 I 'IBTEST D CHKBTCH(+$G(^TMP("IBHDR",$J)))
     135CLEANP ;  Entrypoint for extract data disply
     136 K ^TMP("IBTXMT",$J),^TMP("IBXINS",$J)
     137 K ^TMP("IBRESUBMIT",$J),^TMP("IBRESUB",$J),^TMP("IBNOT",$J),^TMP("IBONE",$J),^TMP("IBHDR",$J),^TMP("IBTX",$J),^TMP("IBEDI_TEST_BATCH",$J)
     138 K ^UTILITY("VADM",$J)
     139 D CLEAN^DILF
     140 K ZTREQ S ZTREQ="@"
     141 Q
     142 ;
     143ALERT(XQAMSG,IBGRP) ; Send alert message
     144 N XQA
     145 S XQA(IBGRP)=""
     146 D SETUP^XQALERT
     147 Q
     148CHKBTCH(IBBNO) ; Delete batch whose batch # is IBBNO if no entries in file 364
     149 ; and not a resubmitted batch
     150 N IBZ,DA,DIK
     151 S IBZ=+$O(^IBA(364.1,"B",+IBBNO,""))
     152 I IBZ,'$O(^IBA(364,"C",IBZ,0)),'$P($G(^IBA(364.1,IBZ,0)),U,14) S DA=IBZ,DIK="^IBA(364.1," D ^DIK
     153 Q
     154 ;
     155TESTLIM(IBINS) ; Check for test bill limit per day has been reached
     156 N IB3,DA,DIK
     157 S IB3=$G(^DIC(36,IBINS,3))
     158 I $P(IB3,U,5)'=DT S $P(IB3,U,7)=0
     159 I ($P(IB3,U,7)+$G(^TMP("IBICT",$J,IBINS))+1)>$P(IB3,U,6) D  Q
     160 . S IBINS="" ;max # hit
     161 . S DA=IBX,DIK="^IBA(364," D ^DIK
     162 S ^TMP("IBICT",$J,IBINS)=$G(^TMP("IBICT",$J,IBINS))+1
     163 Q
     164 ;
     165SETVAR(IBXIEN,IBINS,IB0,IBSEC,IBNID,IB837R,IBDIV) ;
     166 ; Set up variables needed for subscripts in sort global
     167 ; ejk added IBSEC logic for patch 296
     168 ; IBSEC=1 if primary bill, 2 if 2nd/non-MRA, 3 if 2nd/MRA
     169 S IBSEC=$S($$COBN^IBCEF(IBXIEN)=1:1,'$$MRASEC^IBCEF4(IBXIEN):2,1:3)
     170 S IBNID=$$PAYERID^IBCEF2(IBXIEN)
     171 S IB837R=$$RECVR^IBCEF2(IBXIEN)
     172 S IBDIV=$P($S($P(IB0,U,22):$$SITE^VASITE(DT,$P(IB0,U,22)),1:$$SITE^VASITE()),U,3)
     173 I IBNID'="","RPIHS"[$E(IBNID),$E(IBNID,2,$L(IBNID))="PRNT" S IBNID=IBNID_"*"_IBINS
     174 I IBNID="" S IBNID="*"_IBINS
     175 S $P(IBNID,"*",3)=$S($P(IB0,U,22):$P(IB0,U,22),1:"")
     176 Q
     177 ;
Note: See TracChangeset for help on using the changeset viewer.