1 | IBCNBES ;ALB/ARH-Ins Buffer: stuff new entries/data into buffer ;1 Jun 97
|
---|
2 | ;;2.0;INTEGRATED BILLING;**82,184,345**;21-MAR-94;Build 28
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;
|
---|
6 | ADDSTF(IBSOURCE,DFN,IBDATA) ; add new entry to Insurance Buffer file (355.33) and stuff the data passed in, no user interaction
|
---|
7 | ; IBSOURCE = source of information (required)
|
---|
8 | ; 1 = interview 2 = data match
|
---|
9 | ; 3 = ivm 4 = pre-registration
|
---|
10 | ; 5 = eIV
|
---|
11 | ; DFN = patient's ifn in file 2 (required)
|
---|
12 | ; IBDATA = data to file in Buffer in an array subscripted by field number of the data field in 355.33
|
---|
13 | ; ex: IBDATA(20.01)="Insurance Company Name", etc,
|
---|
14 | ; returns ien of new entry or 0 followed by error if entry not added
|
---|
15 | ;
|
---|
16 | ; example of call: $$ADDBUF^IBCNBES(2,DFN,.IBDATA) where IBDATA(field #) = value
|
---|
17 | ;
|
---|
18 | N X,Y,IBBUFDA,IBERROR
|
---|
19 | ;
|
---|
20 | ; verify source of information and data exists to store
|
---|
21 | I $G(IBSOURCE)="" S IBERROR="SOURCE OF INFORMATION INCORRECT" G EXIT
|
---|
22 | I $G(^DPT(+$G(DFN),0))="" S IBERROR="NO PATIENT DEFINED" G EXIT
|
---|
23 | I $D(IBDATA)<10 S IBERROR="NO DATA TO STORE" G EXIT
|
---|
24 | ;
|
---|
25 | ; add new entry to Buffer file (355.33)
|
---|
26 | S IBBUFDA=+$$ADD^IBCNBEE(IBSOURCE) I 'IBBUFDA S IBERROR="COULD NOT CREATE A NEW BUFFER ENTRY" G EXIT
|
---|
27 | ;
|
---|
28 | S IBDATA(60.01)=+DFN
|
---|
29 | ;
|
---|
30 | ; Set up DUZ (interface user) so 60.01 field check can find 'valid reason' for sensitive
|
---|
31 | ; patients and not set 60.01 to '0' with an error in tag FLDCHK
|
---|
32 | I '$G(DUZ) D DUZ^XUP(.5)
|
---|
33 | ;
|
---|
34 | D EDITSTF(+IBBUFDA,.IBDATA)
|
---|
35 | ;
|
---|
36 | ; delete leftover ESGHP data if ESGHP? is not Yes
|
---|
37 | I +$G(IBBUFDA),$D(^IBA(355.33,$G(IBBUFDA),61)),'$G(^IBA(355.33,$G(IBBUFDA),61)) D DELEMP^IBCNBEE($G(IBBUFDA))
|
---|
38 | ;
|
---|
39 | EXIT Q +$G(IBBUFDA)_"^"_$G(IBERROR)
|
---|
40 | ;
|
---|
41 | EDITSTF(IBBUFDA,IBDATA) ; loop though data array and stuff each buffer field, no user interaction
|
---|
42 | ;
|
---|
43 | N IBFIELD,IBVALUE,IBARR,IBERR Q:'$G(^IBA(355.33,$G(IBBUFDA),0))
|
---|
44 | ;
|
---|
45 | S IBFIELD=0 F S IBFIELD=$O(IBDATA(IBFIELD)) Q:'IBFIELD D
|
---|
46 | . S IBVALUE=$$FLDCHK(355.33,IBFIELD,IBDATA(IBFIELD)) Q:'IBVALUE
|
---|
47 | . S IBARR(355.33,IBBUFDA_",",IBFIELD)=$P(IBVALUE,U,2)
|
---|
48 | I $D(IBARR)>9 D FILE^DIE("E","IBARR","IBERR")
|
---|
49 | Q
|
---|
50 | ;
|
---|
51 | FLDCHK(FILE,FIELD,VALUE) ; minor checks on data: truncate if length too long, if pointer add ' so can be processed as external format
|
---|
52 | N IBATTR,IBERR,IBX S IBX="1^"_VALUE
|
---|
53 | I VALUE="" S IBX="0^No data value." G FLDCHKQ
|
---|
54 | D FIELD^DID(FILE,FIELD,"N","FIELD LENGTH;SPECIFIER","IBATTR","IBERR")
|
---|
55 | I $D(IBERR) S IBX="0^"_$G(IBERR("DIERR",1,"TEXT",1)) G FLDCHKQ
|
---|
56 | I $G(IBATTR("SPECIFIER"))["P" S IBX="1^`"_VALUE G FLDCHKQ
|
---|
57 | I $D(IBATTR("FIELD LENGTH")) S IBX="1^"_$E(VALUE,1,+IBATTR("FIELD LENGTH"))
|
---|
58 | FLDCHKQ Q IBX
|
---|