1 | IBCRHL ;ALB/ARH - RATES: UPLOAD CHECK & ADD TO CM SEARCH ; 22-MAY-1996
|
---|
2 | ;;2.0;INTEGRATED BILLING;**52,106,138,245**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; check data in XTMP files to see if it can be loaded into the Charge Master
|
---|
6 | ; file checks: Charge Set and Billable Items defined and match
|
---|
7 | ; line checks: these must be true for the item to be added to CM (Errors)
|
---|
8 | ; - item in source file and is active
|
---|
9 | ; - NDCs not checked since these are added to the source file (363.21) if not defined
|
---|
10 | ; - if CPT and Modifier defined then modifier must be valid for the CPT
|
---|
11 | ; - dates are in correct format
|
---|
12 | ; - inactive date and modifier are not required
|
---|
13 | ;
|
---|
14 | ; duplicates: the new charge for an Item is compared to any existing charges for the Item in the CM,
|
---|
15 | ; duplicates are not added
|
---|
16 | ; - possible duplicates: CS, item, eff dt, and modifier all match
|
---|
17 | ; - these are NOT counted as Duplicates, but as Errors so they can be displayed
|
---|
18 | ; individually on the reports
|
---|
19 | ; - exact duplicates: CS, item, eff dt, modifier, and Charge all match
|
---|
20 | ; - these will be counted as exact Duplicates and are not added to CM
|
---|
21 | ; - removed IB*2*138: no change in charge: the same charge already exists for the item
|
---|
22 | ; - this is basically an exact duplicate except the effective date may be different
|
---|
23 | ; - these will be counted as exact Duplicates and are not added to CM
|
---|
24 | ;
|
---|
25 | ; zero charge: Items uploaded with a with zero charge are not added to CM
|
---|
26 | ; - on check report all items found with a zero charge are added to the Zero Count
|
---|
27 | ; - if an active charge currently exists in CM for the item of the zero charge then
|
---|
28 | ; - the existing charge is inactivated by having an inactive date added
|
---|
29 | ; - the inactive date added is 1 day before the zero charges effective date
|
---|
30 | ; - the effective dates do not have to match, the charge just has to be active
|
---|
31 | ; on the zero charge effective date
|
---|
32 | ; - on the Add report these added to the Inactive Count
|
---|
33 | ;
|
---|
34 | ; Inactive Date: Tries to inactivate an existing entry if the Item uploaded is inactive
|
---|
35 | ; - if a charge has an inactive date but is an exact duplicate of an existing charge
|
---|
36 | ; - the existing charge must match effective date and not already have an inactive date
|
---|
37 | ; - the inactive date will be added as the Inactive Date of the existing charge
|
---|
38 | ; - these will be counted as Duplicates during the Check but as Inactives during the Add
|
---|
39 | ;
|
---|
40 | ; NDC Numbers not already defined in 363.31 are automatically added
|
---|
41 | ;
|
---|
42 | SRCH(FILE,ADD) ; search and check a particular Host file
|
---|
43 | ; results: ^TMP($J,FILE,SUBFILE) = ^ comment 1 ^ comment 2 ^ comment 3
|
---|
44 | ; ^TMP($J,FILE,SUBFILE,X) = error # ^ comment/error
|
---|
45 | ;
|
---|
46 | N IBSUB,IBTSCNT,IBCS,IBCI,IBBI,IBADD,IBDUP,IBCNT,IBZERO,IBERR,IBINAC,IBLN,IBX,IBY,IBZ,IBITM,IBARR Q:$G(FILE)=""
|
---|
47 | K ^TMP($J,FILE) I $G(^XTMP(FILE,0))="" Q
|
---|
48 | I '$D(ZTQUEUED) W !!,$S(+$G(ADD):"Loading data into Charge Master:",1:"Data validity check on temporary files:")
|
---|
49 | ;
|
---|
50 | S IBSUB=0 F S IBSUB=$O(^XTMP(FILE,IBSUB)) Q:IBSUB="" D CHECKS
|
---|
51 | ;
|
---|
52 | Q
|
---|
53 | ;
|
---|
54 | ;
|
---|
55 | CHECKS ;
|
---|
56 | S IBTSCNT=+$G(^XTMP(FILE,IBSUB))
|
---|
57 | S IBCS=+$P($G(^XTMP(FILE,IBSUB)),U,3) I '+IBCS Q
|
---|
58 | S IBBI=$$CSBI^IBCRU3(+IBCS)
|
---|
59 | I '$D(ZTQUEUED) W !!,FILE,?35,IBSUB,?50
|
---|
60 | ;
|
---|
61 | S IBY=$$CHKFL^IBCRHU1(IBCS,FILE,IBSUB) I +IBY D SETF(IBY) Q
|
---|
62 | ;
|
---|
63 | S (IBDUP,IBERR,IBADD,IBINAC,IBZERO,IBCNT,IBX)=0
|
---|
64 | ;
|
---|
65 | F S IBX=$O(^XTMP(FILE,IBSUB,IBX)) Q:'IBX D Q:+IBY=3
|
---|
66 | . I '$D(ZTQUEUED),'(IBCNT#100) W "."
|
---|
67 | . S IBY=0,IBCNT=IBCNT+1,IBLN=$G(^XTMP(FILE,IBSUB,IBX)) Q:IBLN=""
|
---|
68 | . S IBITM=$$ITPTR^IBCRU2(IBBI,$P(IBLN,U,1))
|
---|
69 | . ;
|
---|
70 | . I +$G(ADD),'IBITM,+IBBI=3 S IBITM=$$ADDBI^IBCREF("NDC",$P(IBLN,U,1)) Q:'IBITM
|
---|
71 | . ;
|
---|
72 | . I '$P(IBLN,U,4) D S:'IBCI IBZERO=IBZERO+1 Q
|
---|
73 | .. S IBCI=0 K IBARR I '$G(ADD)!+IBY Q
|
---|
74 | .. D ITMCHG^IBCRCC(IBCS,IBITM,$P(IBLN,U,2),$P(IBLN,U,5),.IBARR) S IBCI=+$G(IBARR(1))
|
---|
75 | .. I +IBCI S IBZ=$$FMADD^XLFDT($P(IBLN,U,2),-1) D EDITCI^IBCREF(+IBCI,"","","",IBZ) S IBINAC=IBINAC+1
|
---|
76 | . ;
|
---|
77 | . I +$G(ADD),+$P(IBLN,U,3) D I +IBCI Q
|
---|
78 | .. S IBCI=$$FINDCI^IBCRU4(IBCS,IBITM,$P(IBLN,U,2),$P(IBLN,U,5),"",$P(IBLN,U,4),"",,$P(IBLN,U,6))
|
---|
79 | .. I +IBCI D EDITCI^IBCREF(IBCI,"","","",$P(IBLN,U,3)) S IBINAC=IBINAC+1
|
---|
80 | . ;
|
---|
81 | . S IBY=$$CHKLN^IBCRHU1(IBBI,IBLN) I +IBY D SETL(IBY) S IBERR=IBERR+1 Q
|
---|
82 | . ;
|
---|
83 | . S IBY=$$CHKDUP^IBCRHU1(IBCS,IBLN,+$G(ADD)) I +IBY S:+IBY=2 IBDUP=IBDUP+1 D:+IBY'=2 SETL(IBY) S:+IBY<2 IBERR=IBERR+1 Q
|
---|
84 | . ;
|
---|
85 | . I +$G(ADD),'IBY D
|
---|
86 | .. I $$ADDCI^IBCREF(IBCS,IBITM,$P(IBLN,U,2),+$P(IBLN,U,4),"",$P(IBLN,U,5),$P(IBLN,U,3),$P(IBLN,U,6)) S IBADD=IBADD+1
|
---|
87 | ;
|
---|
88 | I +IBCNT,$G(^TMP($J,FILE,IBSUB))="" D D SETF(IBY)
|
---|
89 | . S IBZ=((IBERR/IBCNT)*100)
|
---|
90 | . S IBY="0^"_IBCNT_" of "_IBTSCNT_" records checked, "_IBDUP_" duplicates, "_IBZERO_" with $=0^"_IBERR_" line/data errors or warnings found for a "_+$FN(IBZ,"",2)_"% error rate.^"
|
---|
91 | . ;
|
---|
92 | . I +$G(ADD),+IBINAC S IBY=IBY_IBINAC_" charges items inactivated, "
|
---|
93 | . I +$G(ADD) S IBY=IBY_IBADD_" entries added to the Charge Set "_$P($G(^IBE(363.1,+IBCS,0)),U,1)_"."
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | SETF(ERROR) ;
|
---|
97 | S ^TMP($J,FILE,IBSUB)=ERROR
|
---|
98 | Q
|
---|
99 | SETL(ERROR) ;
|
---|
100 | S ^TMP($J,FILE,IBSUB,IBX)=ERROR
|
---|
101 | Q
|
---|