| [613] | 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 | 
|---|