1 | IBCU71 ;ALB/AAS - INTERCEPT SCREEN INPUT OF PROCEDURE CODES ; 29-OCT-91
|
---|
2 | ;;2.0;INTEGRATED BILLING;**41,60,91,106,125,138,210,245,349**;21-MAR-94;Build 46
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;MAP TO DGCRU71
|
---|
6 | ;
|
---|
7 | ADDCPT ; - store cpt codes in visits file
|
---|
8 | Q:$D(DGCPT)'>9
|
---|
9 | N DA,DIC,DR,DIE,DIRUT,DUOUT,DTOUT,DIROUT,VADM
|
---|
10 | S DIR(0)="Y",DIR("A")="OK to add CPT codes to Visits file",DIR("B")="Y" D ^DIR K DIR Q:'Y!$D(DIRUT)
|
---|
11 | N IBPKG,IBCLIN,IBVDATE,IBPROC,IBK,IBCOUNT,IBRESULT,IBOTH
|
---|
12 | S IBPKG=$O(^DIC(9.4,"C","IB",0)) Q:'IBPKG
|
---|
13 | W !!,"Adding Procedures to PCE..."
|
---|
14 | S IBCLIN=0 F S IBCLIN=$O(DGCPT(IBCLIN)) Q:'IBCLIN D
|
---|
15 | .;
|
---|
16 | .K ^TMP("IBPXAPI",$J)
|
---|
17 | .;
|
---|
18 | .; - set up encounter data
|
---|
19 | .S IBVDATE=DGPROCDT D VISDT
|
---|
20 | .S ^TMP("IBPXAPI",$J,"ENCOUNTER",1,"ENC D/T")=IBVDATE,^("PATIENT")=DFN,^("HOS LOC")=IBCLIN,^("SERVICE CATEGORY")="X",^("ENCOUNTER TYPE")="A"
|
---|
21 | .;
|
---|
22 | .; - set up procedure and diagnosis data
|
---|
23 | .S IBK=0,IBPROC=0 F S IBPROC=$O(DGCPT(IBCLIN,IBPROC)) Q:'IBPROC D
|
---|
24 | ..S IBOTH="" F S IBOTH=$O(DGCPT(IBCLIN,IBPROC,IBOTH)) Q:IBOTH="" D
|
---|
25 | ...S IBK=IBK+1
|
---|
26 | ...;
|
---|
27 | ...; - load first procedure diagnosis as visit diagnosis
|
---|
28 | ...I +$P(IBOTH,U,2) S ^TMP("IBPXAPI",$J,"DX/PL",IBK,"DIAGNOSIS")=+$P(IBOTH,U,2)
|
---|
29 | ...;
|
---|
30 | ...; - count number of times procedure performed
|
---|
31 | ...S (X,IBCOUNT)=0 F S X=$O(DGCPT(IBCLIN,IBPROC,IBOTH,X)) Q:'X S IBCOUNT=IBCOUNT+1
|
---|
32 | ...;
|
---|
33 | ...; - load procedure information
|
---|
34 | ...S ^TMP("IBPXAPI",$J,"PROCEDURE",IBK,"PROCEDURE")=IBPROC,^("QTY")=IBCOUNT,^("EVENT D/T")=IBVDATE
|
---|
35 | ...I +$P(IBOTH,U,1) S ^TMP("IBPXAPI",$J,"PROCEDURE",IBK,"ENC PROVIDER")=+$P(IBOTH,U,1)
|
---|
36 | ...I +$P(IBOTH,U,3) S ^TMP("IBPXAPI",$J,"PROCEDURE",IBK,"MODIFIERS",$P($$MOD^ICPTMOD(+$P(IBOTH,U,3),"I"),U,2))=""
|
---|
37 | .;
|
---|
38 | .; - call the PCE interface
|
---|
39 | .Q:'$D(^TMP("IBPXAPI",$J,"PROCEDURE"))
|
---|
40 | .;
|
---|
41 | .S IBRESULT=$$DATA2PCE^PXAPI("^TMP(""IBPXAPI"",$J)",IBPKG,"IB DATA",,DUZ,0)
|
---|
42 | .W !," Procedures in ",$P(^SC(IBCLIN,0),"^")," "
|
---|
43 | .I IBRESULT>0 W "were added okay." Q
|
---|
44 | .W "were not added - error code is ",IBRESULT
|
---|
45 | ;
|
---|
46 | K ^TMP("IBPXAPI",$J)
|
---|
47 | Q
|
---|
48 | ;
|
---|
49 | ;
|
---|
50 | DISPDX ; - display diagnosis codes available for associated dx (CMS-1500) NO LONGER USED?
|
---|
51 | N I,J,X,IBDX,IBDXL,IBDATE
|
---|
52 | S IBDATE=$$BDATE^IBACSV(IBIFN)
|
---|
53 | F I=1:1:4 S IBDX=$P($G(^DGCR(399,IBIFN,"C")),"^",(I+13)),X=$$ICD9^IBACSV(+IBDX,IBDATE) I X'="" S IBDXL(I)=IBDX_"^"_X
|
---|
54 | I '$D(IBDXL) W !!,"Bill has no ICD DIAGNOSIS." Q
|
---|
55 | W !!,?24,"<<<ASSOCIATED ICD-9 DIAGNOSIS>>>",!!
|
---|
56 | F I=1,2 W ! S X=0 F J=0,2 I $D(IBDXL(I+J)) S IBDX=IBDXL(I+J) D S X=40
|
---|
57 | . W ?X," ",$P(IBDX,"^",2),?(X+13),$E($P(IBDX,"^",4),1,28)
|
---|
58 | W !
|
---|
59 | Q
|
---|
60 | ;
|
---|
61 | SCREEN(X,Y) ; -- screen logic for active procs or surgeries - OBSOLETE
|
---|
62 | ; -- input x = date to check, y = procedure
|
---|
63 | ; -- output 0 if not active for billing or amb proc on date, 1 if either active
|
---|
64 | ;
|
---|
65 | Q 0
|
---|
66 | ;
|
---|
67 | VISDT ; Find the actual encounter for the visit; update visit date/time
|
---|
68 | ; input DGPROCDT, DFN, IBCLIN
|
---|
69 | N IBD,IBF,IBOEN,IBEVT,IBVAL,IBCBK,IBFILTER
|
---|
70 | S IBF=0,IBD=DGPROCDT-.1
|
---|
71 | S IBVAL("DFN")=DFN,IBVAL("BDT")=DGPROCDT-.1,IBVAL("EDT")=DGPROCDT\1_".99"
|
---|
72 | S IBFILTER=""
|
---|
73 | S IBCBK="I IBCLIN=$P(Y0,U,4) S IBVDATE=+Y0,SDSTOP=1"
|
---|
74 | D SCAN^IBSDU("PATIENT/DATE",.IBVAL,IBFILTER,IBCBK,1)
|
---|
75 | Q
|
---|
76 | ;
|
---|
77 | PRCDT(IBIFN,ARR) ; return array of bill's procedures in date then code order
|
---|
78 | ; returns ARR(DATE, NAME, CPIFN) = 399.0304 node
|
---|
79 | N IBI,IBX,IBNAME K ARR
|
---|
80 | S IBI=0 F S IBI=$O(^DGCR(399,+$G(IBIFN),"CP",IBI)) Q:'IBI D
|
---|
81 | . S IBX=$G(^DGCR(399,IBIFN,"CP",IBI,0))
|
---|
82 | . S IBNAME=$P($$PRCNM^IBCSCH1($P(IBX,U,1)),U,1)_" "
|
---|
83 | . S ARR($P(IBX,U,2),IBNAME,IBI)=IBX
|
---|
84 | Q
|
---|
85 | ;
|
---|
86 | PRCDIV(IBIFN) ; change Bills Default Division (399,.22) to reflect care provided
|
---|
87 | ; - set Bill Division to the first Procedures Division (399,304,5), if defined
|
---|
88 | ; - or else if bill is an inpatient bill then get the Division of the Ward the patient was Admitted to
|
---|
89 | ; return null if no change or 'new division ifn^message'
|
---|
90 | ;
|
---|
91 | N IB0,IBCPT,IBPDIV,IBWRD,IBX,DIC,DIE,DA,DR,X,Y S IBX="",IBPDIV=0
|
---|
92 | S IB0=$G(^DGCR(399,+$G(IBIFN),0))
|
---|
93 | ;
|
---|
94 | I +$G(IBIFN) S IBCPT=$O(^DGCR(399,IBIFN,"CP",0)) I +IBCPT D ; if CPT division defined, use it
|
---|
95 | . S IBCPT=$G(^DGCR(399,IBIFN,"CP",IBCPT,0)) S IBPDIV=+$P(IBCPT,U,6)
|
---|
96 | ;
|
---|
97 | I 'IBPDIV,+$P(IB0,U,8) D ; for inpatient, get Ward Division
|
---|
98 | . S IBWRD=$G(^DGPT(+$P(IB0,U,8),535,1,0)) S IBPDIV=+$P($G(^DIC(42,+$P(IBWRD,U,6),0)),U,11)
|
---|
99 | ;
|
---|
100 | I +IBPDIV,+$P(IB0,U,22)'=+IBPDIV D
|
---|
101 | . S DIE="^DGCR(399,",DA=IBIFN,DR=".22////"_+IBPDIV D ^DIE K DIE,DR,DA,X,Y
|
---|
102 | . S IBX=+IBPDIV_"^Bill Division Changed to "_$P($G(^DG(40.8,+IBPDIV,0)),U,1)
|
---|
103 | Q IBX
|
---|
104 | ;
|
---|
105 | DVTYP(IBIFN) ; reset Bill Charge Type (399, .27) based on Bill Division (399, .22)
|
---|
106 | ; if bill division is type 3 - Freestanding then reset Charge Type to 2 - Professional
|
---|
107 | ; with RC 2.0+ Type 3 sites have only professional charges, start date of bill must be on/after beginning of RC 2.0
|
---|
108 | N IB0,IBDV,IBCHGTYP,IBDVTYP,DIC,DIE,DA,DR,X,Y
|
---|
109 | S IB0=$G(^DGCR(399,+$G(IBIFN),0)),IBDV=$P(IB0,U,22),IBCHGTYP=$P(IB0,U,27)
|
---|
110 | I +$G(^DGCR(399,+$G(IBIFN),"U"))<$$VERSDT^IBCRU8(2) G DVTYPQ
|
---|
111 | I +IBDV,+IBCHGTYP S IBDVTYP=$$RCDV^IBCRU8(+IBDV) I +$P(IBDVTYP,U,3)=3,IBCHGTYP'=2 D
|
---|
112 | . S DIE="^DGCR(399,",DA=IBIFN,DR=".27////"_2 D ^DIE K DIE,DR,DA,X,Y
|
---|
113 | . S IBCHGTYP="2^Bill Charge Type Changed to Professional"
|
---|
114 | DVTYPQ Q IBCHGTYP
|
---|