| [613] | 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 | 
|---|