1 | IBCNEBF ;DAOU/ALA - Create an Entry in the Buffer File ;20-JUN-2002
|
---|
2 | ;;2.0;INTEGRATED BILLING;**184,271,361,371**;21-MAR-94;Build 57
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;**Program Description**
|
---|
6 | ; This program will create a Buffer entry based upon input values
|
---|
7 | ;
|
---|
8 | Q
|
---|
9 | ;
|
---|
10 | PT(DFN,IRIEN,SYMBOL,OVRRIDE,ADD,IBERROR) ; Get data
|
---|
11 | ; from a specific patient and insurance record entry
|
---|
12 | ;
|
---|
13 | ; Input Parameters
|
---|
14 | ; DFN = Patient IEN
|
---|
15 | ; IRIEN = Patient Insurance Record IEN
|
---|
16 | ; SYMBOL = IIV Symbol IEN
|
---|
17 | ; OVRRIDE = Override flag for ins. buffer record (0 or 1)
|
---|
18 | ; ADD = If defined, then it will add a new Buffer entry
|
---|
19 | ; IBERROR = If defined, then it will be updated with error info.
|
---|
20 | ; OPTIONALLY PASSED BY REFERENCE
|
---|
21 | ;
|
---|
22 | I DFN=""!(IRIEN="") Q ; * do not require SYMBOL or OVRRIDE
|
---|
23 | ;
|
---|
24 | ;
|
---|
25 | NEW VBUF,IEN,INAME,PNAME,IIEN,GNUMB,GNAME,SUBID,PPHONE,PATID
|
---|
26 | NEW BPHONE,EFFDT,EXPDT,WHO,REL,IDOB,ISSN,COB,TQIEN,RDATA,ISEX,NAME
|
---|
27 | NEW MSG,XMSUB,MSGP,INSDATA,PCE,BFD,BFN,INSPCE,ESGHPARR
|
---|
28 | ;
|
---|
29 | S IIEN=$P($G(^DPT(DFN,.312,IRIEN,0)),U,1)
|
---|
30 | S INAME=$$GET1^DIQ(36,IIEN,.01,"E")
|
---|
31 | S PPHONE=$P($G(^DIC(36,IIEN,.13)),U,3)
|
---|
32 | S BPHONE=$P($G(^DIC(36,IIEN,.13)),U,2)
|
---|
33 | S NAME=$P($G(^DPT(DFN,.312,IRIEN,0)),U,17)
|
---|
34 | S SUBID=$P($G(^DPT(DFN,.312,IRIEN,0)),U,2)
|
---|
35 | S PATID=$P($G(^DPT(DFN,.312,IRIEN,5)),U,1)
|
---|
36 | S WHO=$P($G(^DPT(DFN,.312,IRIEN,0)),U,6)
|
---|
37 | S COB=$P($G(^DPT(DFN,.312,IRIEN,0)),U,20)
|
---|
38 | S IDOB=$P($G(^DPT(DFN,.312,IRIEN,3)),U,1)
|
---|
39 | S ISSN=$P($G(^DPT(DFN,.312,IRIEN,3)),U,5)
|
---|
40 | S ISEX=$P($G(^DPT(DFN,.312,IRIEN,3)),U,12)
|
---|
41 | S EFFDT=$P(^DPT(DFN,.312,IRIEN,0),U,8)
|
---|
42 | S EXPDT=$P(^DPT(DFN,.312,IRIEN,0),U,4)
|
---|
43 | S REL=$P(^DPT(DFN,.312,IRIEN,0),U,16)
|
---|
44 | ;
|
---|
45 | S IENS=IRIEN_","_DFN_","
|
---|
46 | S GNUMB=$$GET1^DIQ(2.312,IENS,21,"E")
|
---|
47 | S GNAME=$$GET1^DIQ(2.312,IENS,20,"E")
|
---|
48 | ;
|
---|
49 | ; Capture the employer sponsored insurance fields into array
|
---|
50 | ; ESGHPARR(buffer field number) = data
|
---|
51 | ;
|
---|
52 | S INSDATA=$G(^DPT(DFN,.312,IRIEN,2)),PCE=0
|
---|
53 | F BFD=5:1:12,2,1,3,4 S PCE=PCE+1,BFN=BFD/100+61,INSPCE=$P(INSDATA,U,PCE) I INSPCE'="" S ESGHPARR(BFN)=INSPCE
|
---|
54 | ;
|
---|
55 | D FIL
|
---|
56 | K ADD
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | RP(IEN,ADD,BUFF) ; Get data from a specific response record
|
---|
60 | ;
|
---|
61 | ; Input Parameter
|
---|
62 | ; IEN = Internal entry number of the Response
|
---|
63 | ; ADD = If defined, then it will add a new Buffer entry
|
---|
64 | ; BUFF = IEN of the Buffer Entry to be updated (optional)
|
---|
65 | ;
|
---|
66 | S BUFF=$G(BUFF) ; Initialize optional parameter
|
---|
67 | ;
|
---|
68 | NEW PIEN,RSTYPE
|
---|
69 | S DFN=$P(^IBCN(365,IEN,0),U,2),TQIEN=$P(^IBCN(365,IEN,0),U,5)
|
---|
70 | S PIEN=$P(^IBCN(365,IEN,0),U,3),RSTYPE=$P(^(0),U,10)
|
---|
71 | I PIEN'="" S PNAME=$P(^IBE(365.12,PIEN,0),U,1)
|
---|
72 | I TQIEN'="" S IRIEN=$P($G(^IBCN(365.1,TQIEN,0)),U,13)
|
---|
73 | I $G(IRIEN)'="" S INAME="" D
|
---|
74 | . S IIEN=$P($G(^DPT(DFN,.312,IRIEN,0)),U,1)
|
---|
75 | . I IIEN="" Q
|
---|
76 | . S INAME=$P(^DIC(36,IIEN,0),U,1)
|
---|
77 | S RDATA=$G(^IBCN(365,IEN,1))
|
---|
78 | S NAME=$P(RDATA,U,1)
|
---|
79 | S INAME=$S($G(INAME)'=""&(RSTYPE="O"):INAME,1:$G(PNAME))
|
---|
80 | S IDOB=$P(RDATA,U,2)
|
---|
81 | S ISSN=$P(RDATA,U,3)
|
---|
82 | S ISEX=$P(RDATA,U,4)
|
---|
83 | S COB=$P(RDATA,U,13)
|
---|
84 | S SUBID=$P(RDATA,U,5)
|
---|
85 | S PATID=$P(RDATA,U,18)
|
---|
86 | S GNAME=$P(RDATA,U,6)
|
---|
87 | S GNUMB=$P(RDATA,U,7)
|
---|
88 | S WHO=$P(RDATA,U,8)
|
---|
89 | S REL=$P(RDATA,U,9)
|
---|
90 | S EFFDT=$P(RDATA,U,11)
|
---|
91 | S EXPDT=$P(RDATA,U,12)
|
---|
92 | S PPHONE="",BPHONE=""
|
---|
93 | ;
|
---|
94 | D FIL
|
---|
95 | K DFN,VBUF,IEN,IRIEN,INAME,PNAME,IIEN,GNUMB,GNAME,SUBID,PPHONE,PATID
|
---|
96 | K BPHONE,EFFDT,EXPDT,WHO,REL,IDOB,ISSN,COB,TQIEN,RDATA,ISEX,NAME
|
---|
97 | K ADD,%DT,D0,DG,DIC,DISYS,DIW,IENS
|
---|
98 | Q
|
---|
99 | ;
|
---|
100 | FIL ; File Buffer Data
|
---|
101 | ;
|
---|
102 | S MSGP=$$MGRP^IBCNEUT5()
|
---|
103 | ;
|
---|
104 | ; Variable IDUZ is optionally set by the calling routine. If it is
|
---|
105 | ; not defined, it will be set to the specific, non-human user.
|
---|
106 | ;
|
---|
107 | I $G(IDUZ)="" S IDUZ=$$FIND1^DIC(200,"","X","INTERFACE,IB IIV")
|
---|
108 | ;
|
---|
109 | I $G(ADD) S VBUF(.02)=IDUZ ; Entered By
|
---|
110 | S VBUF(.12)=$G(SYMBOL) ; Buffer Symbol
|
---|
111 | S VBUF(.13)=$G(OVRRIDE) ; Override freshness flag
|
---|
112 | I '$G(ERACT) D ; Only file if not an error
|
---|
113 | . S VBUF(20.01)=INAME ; Insurance Company/Payer Name
|
---|
114 | . S VBUF(60.01)=DFN ; Patient IEN
|
---|
115 | . S VBUF(40.03)=GNUMB ; Group Number
|
---|
116 | . S VBUF(40.02)=GNAME ; Group Name
|
---|
117 | . S VBUF(60.07)=NAME ; Name of Insured
|
---|
118 | . S VBUF(60.04)=SUBID ; Subscriber ID
|
---|
119 | . S VBUF(62.01)=PATID ; Patient/Member ID
|
---|
120 | . S VBUF(20.04)=PPHONE ; Precertification Phone
|
---|
121 | . S VBUF(20.03)=BPHONE ; Billing Phone
|
---|
122 | . S VBUF(60.02)=EFFDT ; Effective Date
|
---|
123 | . S VBUF(60.03)=EXPDT ; Expiration Date
|
---|
124 | . S VBUF(60.05)=WHO ; Whose Insurance
|
---|
125 | . S VBUF(60.06)=REL ; Patient Relationship
|
---|
126 | . S VBUF(60.08)=IDOB ; Insured's DOB
|
---|
127 | . S VBUF(60.09)=ISSN ; Insured's SSN
|
---|
128 | . S VBUF(60.12)=COB ; Coordination of Benefits
|
---|
129 | . S VBUF(60.13)=ISEX ; Insured's Sex
|
---|
130 | . ;
|
---|
131 | . ; If the employer sponsored insurance array exists, then merge it in
|
---|
132 | . I $D(ESGHPARR) M VBUF=ESGHPARR
|
---|
133 | ;
|
---|
134 | ; Do not overwrite the existing insurance co. name if it already exists
|
---|
135 | I $G(ADD)="",$G(BUFF)'="" K VBUF(20.01)
|
---|
136 | ;
|
---|
137 | ; ** initialize IBERROR
|
---|
138 | S IBERROR=""
|
---|
139 | ;
|
---|
140 | ; If need to add a new Buffer entry ...
|
---|
141 | ;
|
---|
142 | ; Variable IBFDA is returned to the calling routine as the IEN of
|
---|
143 | ; the buffer entry that was just added.
|
---|
144 | ;
|
---|
145 | I $G(ADD) D
|
---|
146 | . S IBFDA=$$ADDSTF^IBCNBES(5,DFN,.VBUF)
|
---|
147 | . ; Error Message is 2nd piece of result
|
---|
148 | . S IBERROR=$P(IBFDA,U,2)
|
---|
149 | . S IBFDA=$P(IBFDA,U,1)
|
---|
150 | ;
|
---|
151 | ; If an error, send an email message
|
---|
152 | I IBERROR'="" D Q
|
---|
153 | . S MSG(1)="Error returned by $$ADDSTF^IBCNBES:"
|
---|
154 | . S MSG(2)=IBERROR
|
---|
155 | . S MSG(3)="Values:"
|
---|
156 | . S MSG(4)=" Patient DFN = "_$G(DFN)
|
---|
157 | . S MSG(5)=" Pt Ins Record IEN = "_$G(IRIEN)
|
---|
158 | . S MSG(6)="Please log a Remedy Ticket for this problem."
|
---|
159 | . S XMSUB="Error creating Buffer Entry."
|
---|
160 | . D MSG^IBCNEUT5(MSGP,XMSUB,"MSG(")
|
---|
161 | . K MSGP,MSG,XMSUB,IBERR
|
---|
162 | ;
|
---|
163 | ; If need to update a new Buffer Entry ...
|
---|
164 | ;
|
---|
165 | ; Variable BUFF is passed into this routine whenever the buffer
|
---|
166 | ; entry is known and the ADD flag is off. The existing buffer entry
|
---|
167 | ; is edited in this case.
|
---|
168 | ;
|
---|
169 | I $G(ADD)="" D EDITSTF^IBCNBES(BUFF,.VBUF)
|
---|
170 | ;
|
---|
171 | ; If an error occurred in EDITSTF, the error array is not returned
|
---|
172 | ;
|
---|
173 | Q
|
---|