1 | IBAUTL ;ALB/AAS - INTEGRATED BILLING APPLICATION UTILITIES ; 14-FEB-91
|
---|
2 | V ;;2.0;INTEGRATED BILLING;**93,156,347**;21-MAR-94;Build 24
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;
|
---|
6 | COST ; - find charges for transaction type, when only one
|
---|
7 | N IBD,IBN,IB K X1
|
---|
8 | S IBD=-(DT+.9) F S IBD=$O(^IBE(350.2,"AIVDT",DA,IBD)) Q:'IBD S IBN=0 F S IBN=$O(^IBE(350.2,"AIVDT",DA,IBD,IBN)) Q:'IBN S IB=$G(^IBE(350.2,IBN,0)) I IB]"",'$P(IB,"^",5)!($P(IB,"^",5)>DT) S X1=$P(IB,"^",4) G COSTQ
|
---|
9 | COSTQ S X1=+$G(X1)
|
---|
10 | Q
|
---|
11 | ;
|
---|
12 | FY I $D(X) S IBAFY=$$FY^IBOUTL(X)
|
---|
13 | Q
|
---|
14 | ;
|
---|
15 | PTL ; - parent trace logic
|
---|
16 | ; - input in x resulting from field from file 350
|
---|
17 | ; - output in y=1 if found, -1^error message if not found
|
---|
18 | ; - y(0) = zeroth node of top level
|
---|
19 | ; - y(1) = zeroth node of second level
|
---|
20 | ; - y(n) = zeroth node of nth level
|
---|
21 | ;
|
---|
22 | K Y
|
---|
23 | S Y=1 I '+X!'($D(^DIC(+X,0,"GL"))) S Y="-1^IB004" G PTLQ
|
---|
24 | I +X=52 G PHAPI
|
---|
25 | S IBAGL=^DIC(+X,0,"GL")
|
---|
26 | I '$D(@(IBAGL_$P($P(X,";",1),":",2)_",0)")) S Y="-1^IB005" G PTLQ
|
---|
27 | ;
|
---|
28 | ; This naked reference should be set to the original data source that
|
---|
29 | ; is causing this charge to be created. The data source will be one of
|
---|
30 | ; many different data sources that will generate patient charges.
|
---|
31 | S Y(0)=^(0)
|
---|
32 | ;
|
---|
33 | F IBJJ=2:1 S IBII=$P(X,";",IBJJ) Q:IBII="" D PTL1
|
---|
34 | PTLQ K IBAGL,IBII,IBJJ,IBMIN
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | PTL1 ; - find y(n) of sublevels
|
---|
38 | ; Call in here with a FOR loop to go each level deeper. This will
|
---|
39 | ; setup the subsripts in Y for all the data elements that go into
|
---|
40 | ; causing this charge to be created. It looks in the original data
|
---|
41 | ; source file as approprite to obtain the information. The naked
|
---|
42 | ; reference should be the last data level in the data source appropriate
|
---|
43 | ; data source file last looked up.
|
---|
44 | ;
|
---|
45 | S IBMIN=$P(IBII,":") I IBMIN="" S Y="-1^IB006" Q
|
---|
46 | I '$D(^(IBMIN,$P(IBII,":",2),0)) S Y="-1^IB006" Q
|
---|
47 | ;I '$D(^(+IBII,$P(IBII,":",2),0)) S Y="-1^IB006" Q
|
---|
48 | S Y(IBJJ-1)=^(0)
|
---|
49 | Q
|
---|
50 | ;
|
---|
51 | CHKX ; - check input x
|
---|
52 | ; - piece 1 = service and exists
|
---|
53 | ; - peice 2 = patient and exists
|
---|
54 | ; - piece 3 = action type
|
---|
55 | ; - piece 4 = user duz
|
---|
56 | S DFN=$P(X,"^",2),IBSERV=+IBSAVX
|
---|
57 | I $S('DFN:1,'$D(^DPT(DFN,0)):1,1:0) S Y="-1^IB002" G CHKXQ ;patient pointer bad
|
---|
58 | I $S('IBSERV:1,'$D(^DIC(49,IBSERV,0)):1,1:0) S Y="-1^IB003" G CHKXQ ;service pointer bad
|
---|
59 | I IBTAG=1 G CHKXQ
|
---|
60 | S IBDUZ=$P(IBSAVX,"^",4) I $S('IBDUZ:1,'$D(^VA(200,IBDUZ,0)):1,1:0) S Y="-1^IB007" G CHKXQ
|
---|
61 | I IBTAG=3 G CHKXQ
|
---|
62 | S IBATYP=$P(IBSAVX,"^",3) I $S('IBATYP:1,'$D(^IBE(350.1,IBATYP,0)):1,1:0) S Y="-1^IB008"
|
---|
63 | CHKXQ Q
|
---|
64 | ;
|
---|
65 | SITE ; - calculate site from site parameters
|
---|
66 | ; - output ibsite = station number
|
---|
67 | ; = ibfac = pointer to institution file
|
---|
68 | I '$D(^IBE(350.9,1,0)) S Y="-1^IB016" Q
|
---|
69 | S IBFAC=$P(^IBE(350.9,1,0),"^",2),IBSITE=$S('$D(^DIC(4,IBFAC,99)):"",1:+^(99)) I IBSITE<1 S Y="-1^IB009"
|
---|
70 | Q
|
---|
71 | ;
|
---|
72 | ADD ; - add new entry to ^ib
|
---|
73 | ;
|
---|
74 | N %DT,IBYCHK
|
---|
75 | L +^IB(0):10 I '$T S Y="-1^IB014" G ADDQ
|
---|
76 | S X=$P($S($D(^IB(0)):^(0),1:"^^-1"),"^",3)+1 L -^IB(0) I 'X S Y="-1^IB015" G ADDQ
|
---|
77 | K DD,DO,DIC,DR S DIC="^IB(",DIC(0)="L",DLAYGO=350
|
---|
78 | F X=X:1 L:$D(IBN1) -^IB(IBN1) I X>0,'$D(^IB(X)) S IBN1=X L +^IB(IBN1):1 I $T,'$D(^IB(X)) S DINUM=X,X=+IBSITE_X D FILE^DICN I +Y>0 Q
|
---|
79 | S IBN=+Y,DIE="^IB(",DA=IBN,DR=".02////"_$S($D(DFN):DFN,1:"")_";.03////"_$S($D(IBATYP):IBATYP,1:"")_";.05////1;12///NOW" D
|
---|
80 | . N Y D ^DIE K DA,DR,DIE I $D(Y) S IBYCHK=Y
|
---|
81 | L -^IB(IBN1)
|
---|
82 | S Y=$S('$D(IBYCHK):1,1:"-1^IB028")
|
---|
83 | ;
|
---|
84 | ADDQ K DO,DD,DINUM,DIC,IBN1 Q
|
---|
85 | ;
|
---|
86 | ARPARM N X S X=DT
|
---|
87 | D SITE,FY,NOW^%DTC S IBNOW=%
|
---|
88 | Q
|
---|
89 | BILLNO ; -get open bill number
|
---|
90 | I '$G(IBTOTL) S (IBIL,IBTRAN)="" G BILLQ
|
---|
91 | S IBARTYP=$S($D(^IBE(350.1,+IBATYP,0)):$P(^(0),"^",3),1:"")
|
---|
92 | S X=IBSITE_"^"_IBSERV_"^"_IBARTYP_"^"_DFN_";DPT("_"^"_IBAFY_"^"_$S($D(IBTOTL):IBTOTL,1:0)_"^"_$S($D(IBDUZ):IBDUZ,$D(DUZ):DUZ,1:0)_"^"_$P(IBNOW,".",1) D ^PRCASER I +Y<1 G BILLQ
|
---|
93 | S IBIL=$P(Y,"^",2),IBTRAN=$P(Y,"^",3) I IBIL="" S Y="-1^IB011" G BILLQ
|
---|
94 | S IBTRAN=$S(IBTRAN>0:IBTRAN,1:"")
|
---|
95 | BILLQ Q
|
---|
96 | ;
|
---|
97 | PHAPI ;
|
---|
98 | ;This is alternate code for Parent Trace Logic
|
---|
99 | ; to deal with the Pharmacy Encapsulation of Prescription File (#52)
|
---|
100 | ;
|
---|
101 | N IBRFL,IBXX,IBPT,IBRX,IBY
|
---|
102 | S IBXX=X,IBY=1
|
---|
103 | S IBRX=$P($P(IBXX,";"),":",2)
|
---|
104 | S IBPT=$$FILE^IBRXUTL(IBRX,2),IBY(0)=$$RXZERO^IBRXUTL(IBPT,IBRX) I IBY(0)="" S IBY="-1^IB005" G PHAPIQ
|
---|
105 | I $P(IBXX,";",2)="" G PHAPIQ ; original fill being billed
|
---|
106 | S IBRFL=$P($P(IBXX,";",2),":",2),IBY(1)=$$ZEROSUB^IBRXUTL(IBPT,IBRX,IBRFL)
|
---|
107 | I IBY(1)="" S IBY="-1^IB006" G PHAPIQ
|
---|
108 | ;
|
---|
109 | PHAPIQ ;
|
---|
110 | S:$G(IBY)]"" Y=IBY
|
---|
111 | S:$G(IBY(0))]"" Y(0)=IBY(0)
|
---|
112 | S:$G(IBY(1))]"" Y(1)=IBY(1)
|
---|
113 | Q
|
---|
114 | ;
|
---|