1 | IBARXMU ;LL/ELZ-PHARMACY COPAY CAP UTILITIES ;17-NOV-2000
|
---|
2 | ;;2.0;INTEGRATED BILLING;**150,158,156,178,186**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | PRIORITY(DFN) ; returns the patient's priority level, ia #2918 for DGENA
|
---|
6 | Q +$$PRIORITY^DGENA(DFN)
|
---|
7 | ;
|
---|
8 | FAC(X) ; returns facility information ia #2171
|
---|
9 | Q $$NNT^XUAF4(X)
|
---|
10 | ;
|
---|
11 | SITE() ; returns site number and info
|
---|
12 | Q $$SITE^VASITE
|
---|
13 | ;
|
---|
14 | TFL(DFN,IBT) ; returns treating facility list (pass IBT by reference)
|
---|
15 | ; supported references ia #2990 and #10112, value returned is count
|
---|
16 | ; needed to N Y because VAFCTFU1 will kill it
|
---|
17 | N IBC,IBZ,IBS,IBFT,Y
|
---|
18 | ;
|
---|
19 | D TFL^VAFCTFU1(.IBZ,DFN) Q:-$G(IBZ(1))=1 0
|
---|
20 | S IBS=+$P($$SITE,"^",3),(IBZ,IBC)=0
|
---|
21 | ; Return only remote facilities of certain types:
|
---|
22 | S IBFT="^VAMC^M&ROC^RO-OC^"
|
---|
23 | F S IBZ=$O(IBZ(IBZ)) Q:IBZ<1 I +IBZ(IBZ)>0,+IBZ(IBZ)'=IBS,IBFT[("^"_$P(IBZ(IBZ),U,5)_"^") S IBT(+IBZ(IBZ))=IBZ(IBZ),IBC=IBC+1
|
---|
24 | Q IBC
|
---|
25 | ;
|
---|
26 | ADD(X) ; adds patient to 354.7
|
---|
27 | N DO,DIC,DINUM,DA,Y
|
---|
28 | Q:$G(^IBAM(354.7,X,0))
|
---|
29 | L +^IBAM(354.7,X):10 I '$T S Y="-1^IB319" Q
|
---|
30 | S DIC="^IBAM(354.7,",DIC(0)="",DINUM=X D FILE^DICN
|
---|
31 | L -^IBAM(354.7,X)
|
---|
32 | Q
|
---|
33 | QUERY(DFN,IBM,IBF,IBD) ; looks up copay billing info from remote facility
|
---|
34 | ; IBM is the month and year for the query
|
---|
35 | ; IBF is the remote facility to query
|
---|
36 | ; IBD is the place where to return (pass by ref)
|
---|
37 | ; ia #3144
|
---|
38 | N IBICN,Y,DA,HLDOM,HLECH,HLFS,HLINSTN,HLNEXT,HLNODE,HLPARAM,HLQ,HLQUIT,PHONE,RPCIEN,IO,IOBS,IOCPU,IOF,IOHG,IOM,ION,IOPAR,IOUPAR,IOS,IOSL,IOST,IOT,IOXY,POP
|
---|
39 | D
|
---|
40 | . S IBICN=$$ICN(DFN) Q:'IBICN
|
---|
41 | . D DIRECT^XWB2HL7(.IBD,IBF,"IBARXM QUERY ONLY","",IBICN,IBM)
|
---|
42 | Q
|
---|
43 | ;
|
---|
44 | UQUERY(DFN,IBM,IBF,IBD) ; looks up copay billing info from remote facility
|
---|
45 | ; this is just like the QUERY tag except it is only for background
|
---|
46 | ; info only and user information is not logged into the remote site's
|
---|
47 | ; new person file.
|
---|
48 | ; IBM is the month and year for the query
|
---|
49 | ; IBF is the remote facility to query
|
---|
50 | ; IBD is the place where to return (pass by ref)
|
---|
51 | ; ia #3144
|
---|
52 | N IBICN,Y,DA,HLDOM,HLECH,HLFS,HLINSTN,HLNEXT,HLNODE,HLPARAM,HLQ,HLQUIT,PHONE,RPCIEN,IO,IOBS,IOCPU,IOF,IOHG,IOM,ION,IOPAR,IOUPAR,IOS,IOSL,IOST,IOT,IOXY,POP
|
---|
53 | D
|
---|
54 | . S IBICN=$$ICN(DFN) Q:'IBICN
|
---|
55 | . D DIRECT^XWB2HL7(.IBD,IBF,"IBARXM QUERY SUPPRESS USER","",IBICN,IBM)
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | SEND(DFN,IBF,IBD) ; notifies a remote facility of new or updated data
|
---|
59 | ; IBF is the remote facility to query
|
---|
60 | ; IBD is the data to send
|
---|
61 | ; return is accepted or not
|
---|
62 | ; ia #3144
|
---|
63 | N IBR,IBICN,IBH,IBC,IBZ,Y,DA,DIC,HLECH,HLFS,HLHDR,HLN,HLQ,HLSAN,HLTYPE,HLX,PTR,ROUTINE,ZMID,%
|
---|
64 | ;
|
---|
65 | D
|
---|
66 | . I DUZ=.5 N DUZ S DUZ=$P(IBD,"^",16),DUZ(2)=+$$SITE
|
---|
67 | . S IBICN=$$ICN(DFN) I 'IBICN S IBR="-1^No ICN for patient" Q
|
---|
68 | . ;
|
---|
69 | . D SENDF(.IBD)
|
---|
70 | . D EN1^XWB2HL7(.IBH,IBF,"IBARXM TRANS DATA","",IBICN,IBD)
|
---|
71 | . I $G(IBH(0))="" S IBR="-1^No handle returned from RPC" Q
|
---|
72 | . ; wait a second then start looking for Done flag.
|
---|
73 | . H 1
|
---|
74 | . F IBC=1:1:10 D RPCCHK^XWB2HL7(.IBR,IBH(0)) Q:$G(IBR(0))["Done" H 2
|
---|
75 | . ; if done get data.
|
---|
76 | . I $G(IBR(0))["Done" D
|
---|
77 | .. K IBR
|
---|
78 | .. D RTNDATA^XWBDRPC(.IBR,IBH(0)),CLEAR^XWBDRPC(.IBZ,IBH(0))
|
---|
79 | ;
|
---|
80 | Q $S(-1=+$G(IBR):IBR,$G(IBR(0))="":$G(IBR(1)),1:$G(IBR(0)))
|
---|
81 | ;
|
---|
82 | DFN(IBICN) ; returns dfn for icn ia #2701
|
---|
83 | N DFN ; check to see if mpi software installed
|
---|
84 | S DFN=$S($L($T(GETDFN^MPIF001)):+$$GETDFN^MPIF001(+IBICN),1:0)
|
---|
85 | Q $S(DFN>0:DFN,1:0)
|
---|
86 | ;
|
---|
87 | ICN(DFN) ; returns icn for dfn ia #2701 and #2702
|
---|
88 | N IBICN
|
---|
89 | I '$L($T(GETICN^MPIF001)) Q 0 ; mpi not installed
|
---|
90 | S IBICN=$$MPINODE^MPIFAPI(+DFN) Q:$P(IBICN,"^",4) 0 ; local icn
|
---|
91 | S IBICN=$$GETICN^MPIF001(+DFN)
|
---|
92 | Q $S(IBICN>0:IBICN,1:0)
|
---|
93 | ;
|
---|
94 | SENDF(IBD) ; formats data for sending 354.71 data
|
---|
95 | ; call with raw data from 354.71 by ref to reformat it for transmission
|
---|
96 | S $P(IBD,"^",4,5)=U_$S($P(IBD,"^",5)="P"!($P(IBD,"^",5)="C"):"C",1:"X")
|
---|
97 | S:$P(IBD,"^",10) $P(IBD,"^",10)=$P(^IBAM(354.71,$P(IBD,"^",10),0),"^")
|
---|
98 | S $P(IBD,"^",13)=$P($$FAC($P(IBD,"^",13)),"^",2)
|
---|
99 | S IBD=$P(IBD,"^",1,13)
|
---|
100 | Q
|
---|
101 | ;
|
---|
102 | EFDT(X,Y) ; sets in Y the effective date to be used for updates
|
---|
103 | N Z S Z=$P($G(^IBAM(354.71,+$P($G(^IB(+X,0)),"^",19),0)),"^",3)
|
---|
104 | S:Z Y(X)=Z
|
---|
105 | Q
|
---|