1 | IBCICME1 ;DSI/ESG - IBCI CLAIMSMANAGER ERROR REPORT <CONT> ;6-APR-2001
|
---|
2 | ;;2.0;INTEGRATED BILLING;**161**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | BUILD ; Build the scratch global based on the selection and sort criteria
|
---|
6 | ;
|
---|
7 | NEW REF,MNEMONIC,RDT,IBIFN,CMDATA,IBDATA,CMSTATUS,BILLID,PATDATA
|
---|
8 | NEW NAME,SSN,BILLER,CODER,OIFLG,ASSIGNED,CHARGES,ERR,ERRCODES
|
---|
9 | NEW SORT1,SORT2,SORT3,SORT4,SORT5,RPTDATA,ERRIEN,LINENO
|
---|
10 | NEW COUNT,BILCOUNT,ERRCOUNT,INSNAME
|
---|
11 | ;
|
---|
12 | KILL ^TMP($J,IBCIRTN),^TMP($J,IBCIRTN_"-LIST-OF-BILLS")
|
---|
13 | KILL ^TMP($J,IBCIRTN_"-TOTALS")
|
---|
14 | ;
|
---|
15 | ; which array are we looping through? Find out here.
|
---|
16 | S REF="RPTSPECS(""SELECTED ERRCODES"")"
|
---|
17 | I RPTSPECS("ALL ERRCODES") S REF="^IBA(351.9,""AEC"")"
|
---|
18 | ;
|
---|
19 | S MNEMONIC="",(COUNT,BILCOUNT,ERRCOUNT)=0
|
---|
20 | F S MNEMONIC=$O(@REF@(MNEMONIC)) Q:MNEMONIC=""!$G(ZTSTOP) D
|
---|
21 | . S IBIFN=0
|
---|
22 | . F S IBIFN=$O(^IBA(351.9,"AEC",MNEMONIC,IBIFN)) Q:'IBIFN!$G(ZTSTOP) D
|
---|
23 | .. S COUNT=COUNT+1
|
---|
24 | .. I $D(ZTQUEUED),COUNT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q
|
---|
25 | .. S CMDATA=$G(^IBA(351.9,IBIFN,0))
|
---|
26 | .. I CMDATA="" Q
|
---|
27 | .. S IBDATA=$G(^DGCR(399,IBIFN,0))
|
---|
28 | .. I IBDATA="" Q
|
---|
29 | .. ;
|
---|
30 | .. ; Get the date that the user selected and check it
|
---|
31 | .. S RDT=9999999
|
---|
32 | .. I RPTSPECS("DATYP")=1 S RDT=$P($P(IBDATA,U,3),".",1)
|
---|
33 | .. I RPTSPECS("DATYP")=2 S RDT=$P($P($G(^DGCR(399,IBIFN,"S")),U,1),".",1)
|
---|
34 | .. I RDT<RPTSPECS("BEGDATE") Q ; date too early
|
---|
35 | .. I RDT>RPTSPECS("ENDDATE") Q ; date too late
|
---|
36 | .. ;
|
---|
37 | .. ; If the user chose a specific ClaimsManager status to report
|
---|
38 | .. ; on, then make sure this bill has the status they want.
|
---|
39 | .. S CMSTATUS=$P(CMDATA,U,2)
|
---|
40 | .. I RPTSPECS("STATYP")=2,CMSTATUS'=RPTSPECS("IBCISTAT") Q
|
---|
41 | .. ;
|
---|
42 | .. ; If the user wants to see bills that are still open for editing
|
---|
43 | .. I RPTSPECS("STATYP")=3,'$F(".1.","."_$P(IBDATA,U,13)_".") Q ;DSI/DJW 3/21/02
|
---|
44 | .. ;
|
---|
45 | .. ; If the user wants to include a specific assigned to person,
|
---|
46 | .. ; then make sure the assigned to person is the one they want.
|
---|
47 | .. I RPTSPECS("ASNDUZ"),RPTSPECS("ASNDUZ")'=$P(CMDATA,U,12) Q
|
---|
48 | .. ;
|
---|
49 | .. ; At this point, we know we want to include this bill.
|
---|
50 | .. D GETDATA
|
---|
51 | .. I '$D(^TMP($J,IBCIRTN_"-LIST-OF-BILLS",IBIFN)) S ^TMP($J,IBCIRTN_"-LIST-OF-BILLS",IBIFN)="",BILCOUNT=BILCOUNT+1
|
---|
52 | .. ;
|
---|
53 | .. ; esg - 6/12/01
|
---|
54 | .. ; Determine what the value of SORT2 should be based on the user's
|
---|
55 | .. ; response to the Error Display Type question.
|
---|
56 | .. ;
|
---|
57 | .. I RPTSPECS("ERROR DISPLAY TYPE")=2 S SORT2=" "_MNEMONIC
|
---|
58 | .. S ^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN)=RPTDATA
|
---|
59 | .. ;
|
---|
60 | .. ; continue looping to get the error level data and the totals
|
---|
61 | .. S ERRIEN=0
|
---|
62 | .. F S ERRIEN=$O(^IBA(351.9,"AEC",MNEMONIC,IBIFN,ERRIEN)) Q:'ERRIEN D
|
---|
63 | ... S ERRCOUNT=ERRCOUNT+1
|
---|
64 | ... S LINENO=$G(^IBA(351.9,IBIFN,1,ERRIEN,0))
|
---|
65 | ... S LINENO=$P($P(LINENO,U,2),"~",1)
|
---|
66 | ... S ^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN,ERRIEN)=LINENO_U_MNEMONIC
|
---|
67 | ... S ^TMP($J,IBCIRTN_"-TOTALS",MNEMONIC)=$G(^TMP($J,IBCIRTN_"-TOTALS",MNEMONIC))+1
|
---|
68 | ... Q
|
---|
69 | .. Q
|
---|
70 | . Q
|
---|
71 | S ^TMP($J,IBCIRTN_"-TOTALS")=BILCOUNT_U_ERRCOUNT
|
---|
72 | KILL ^TMP($J,IBCIRTN_"-LIST-OF-BILLS")
|
---|
73 | ;
|
---|
74 | BUILDX ;
|
---|
75 | Q
|
---|
76 | ;
|
---|
77 | ;
|
---|
78 | GETDATA ; Retrieve the data for this bill
|
---|
79 | S BILLID=$P(IBDATA,U,1) ; bill number
|
---|
80 | S PATDATA=$G(^DPT(+$P(IBDATA,U,2),0))
|
---|
81 | I PATDATA="" Q
|
---|
82 | S NAME=$P(PATDATA,U,1) ; patient name
|
---|
83 | I NAME="" S NAME="UNKNOWN"
|
---|
84 | S NAMESUB=$E(NAME,1,15)_+$P(IBDATA,U,2) ; name subscript
|
---|
85 | S SSN=$P(PATDATA,U,9) ; patient ssn
|
---|
86 | S BILLER=$P($$BILLER^IBCIUT5(IBIFN),U,2)
|
---|
87 | I BILLER="" S BILLER="UNKNOWN"
|
---|
88 | S CODER=$$CODER^IBCIUT5(IBIFN)
|
---|
89 | S OIFLG=$P(CODER,U,1) ; inpatient/outpatient flag
|
---|
90 | S CODER=$P(CODER,U,3)
|
---|
91 | I CODER="" S CODER="UNKNOWN"
|
---|
92 | S ASSIGNED=$P($G(^VA(200,+$P(CMDATA,U,12),0)),U,1) ; assigned to
|
---|
93 | I ASSIGNED="" S ASSIGNED="UNASSIGNED"
|
---|
94 | S ASNSUB=$E(ASSIGNED,1,12)_+$P(CMDATA,U,12) ; assigned to subscript
|
---|
95 | S CHARGES=+$P($G(^DGCR(399,IBIFN,"U1")),U,1) ; total charges
|
---|
96 | S (ERR,ERRCODES)=""
|
---|
97 | F S ERR=$O(^IBA(351.9,IBIFN,1,"B",ERR)) Q:ERR="" D
|
---|
98 | . I ERRCODES="" S ERRCODES=ERR
|
---|
99 | . E S ERRCODES=ERRCODES_","_ERR ; build the list of error codes
|
---|
100 | . Q
|
---|
101 | ;
|
---|
102 | ; set the sort variables and build the scratch global
|
---|
103 | S (SORT1,SORT2,SORT3,SORT4,SORT5)=1
|
---|
104 | I RPTSPECS("ASNSORT") S SORT3=" "_ASNSUB
|
---|
105 | I RPTSPECS("SORTBY")=1 S SORT4=" "_$P($$TD^IBCIUT5(IBIFN),U,1)
|
---|
106 | I RPTSPECS("SORTBY")=2 D
|
---|
107 | . S INSNAME=$P($G(^DIC(36,+$$FINDINS^IBCEF1(IBIFN),0)),U,1)
|
---|
108 | . I INSNAME="" S INSNAME="~~~ NO INSURANCE ~~~"
|
---|
109 | . S SORT4=" "_$E(INSNAME,1,25)
|
---|
110 | . Q
|
---|
111 | I RPTSPECS("SORTBY")=3 S SORT4=" "_NAMESUB
|
---|
112 | I RPTSPECS("SORTBY")=4 S SORT4=-CHARGES
|
---|
113 | I RPTSPECS("SORTBY")=5 S SORT4=" "_BILLID
|
---|
114 | ;
|
---|
115 | S RPTDATA=BILLID_U_SSN_U_$P(RDT,".",1)_U_BILLER_U_CODER_U_ASSIGNED_U_OIFLG_U_CHARGES_U_CMSTATUS_U_ERRCODES
|
---|
116 | ;
|
---|
117 | ; Build an array with the total number of bills in each status
|
---|
118 | ; This array will be used in the report print routines and it is
|
---|
119 | ; available in both the status report and the error report.
|
---|
120 | ; esg - 5/22/01
|
---|
121 | ;
|
---|
122 | ; bill count by status
|
---|
123 | S IBCISCNT(1,CMSTATUS)=$G(IBCISCNT(1,CMSTATUS))+1
|
---|
124 | S IBCISCNT(1)=$G(IBCISCNT(1))+1
|
---|
125 | ;
|
---|
126 | ; charges by status
|
---|
127 | S IBCISCNT(2,CMSTATUS)=$G(IBCISCNT(2,CMSTATUS))+CHARGES
|
---|
128 | S IBCISCNT(2)=$G(IBCISCNT(2))+CHARGES
|
---|
129 | ;
|
---|
130 | GETDATX ;
|
---|
131 | Q
|
---|
132 | ;
|
---|