[613] | 1 | IBCNERPA ;DAOU/BHS - IBCNE IIV RESPONSE REPORT (cont'd) ;03-JUN-2002
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**184,271,345**;21-MAR-94;Build 28
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; IIV - Insurance Identification and Verification Interface
|
---|
| 6 | ;
|
---|
| 7 | ; Input from IBCNERP1/2:
|
---|
| 8 | ; IBCNERTN="IBCNERP1" - Driver rtn
|
---|
| 9 | ; IBCNESPC("BEGDT")=Start Dt, IBCNESPC("ENDDT")=End Dt
|
---|
| 10 | ; IBCNESPC("PYR")=Pyr IEN OR "" for all
|
---|
| 11 | ; IBCNESPC("PAT")=Pat IEN OR "" for all
|
---|
| 12 | ; IBCNESPC("TYPE")=A (All Responses) OR M (Most Recent Responses) for
|
---|
| 13 | ; unique Pyr/Pt pair
|
---|
| 14 | ; IBCNESPC("SORT")=1 (PyrNm) OR 2 (PatNm)
|
---|
| 15 | ; IBCNESPC("TRCN")=Trace #^IEN, if non-null, all params null
|
---|
| 16 | ; IBCNESPC("RFLAG")=Report Flag used to indicate which report is being
|
---|
| 17 | ; run. Response Report (O), Inactive Report (1), or Ambiguous
|
---|
| 18 | ; Report (2).
|
---|
| 19 | ; IBCNESPC("DTEXP")=Expiration date used in the inactive policy report
|
---|
| 20 | ;
|
---|
| 21 | ; Based on structure of IIV Response File (#365)
|
---|
| 22 | ; ^TMP($J,IBCNERTN,S1,S2,CT,0) based on ^IBCN(365,DA,0)
|
---|
| 23 | ; IBCNERTN="IBCNERP1", S1=PyrName(SORT=1) or PatNm(SORT=2),
|
---|
| 24 | ; S2=PatName(SORT=1) or PyrName(SORT=2), CT=Seq ct
|
---|
| 25 | ; ^TMP($J,IBCNERTN,S1,S2,CT,1) based on ^IBCN(365,DA,1)
|
---|
| 26 | ; ^TMP($J,IBCNERTN,S1,S2,2,EBCT) based on ^IBCN(365,DA,2)
|
---|
| 27 | ; EBCT=E/B IEN (365.02)
|
---|
| 28 | ; ^TMP($J,IBCNERTN,S1,S2,2,EBCT,NTCT)=based on ^IBCN(365,DA,2,EB,NT)
|
---|
| 29 | ; NTCT=Notes Ct, may not be Notes IEN, if line wrapped (365.021)
|
---|
| 30 | ; ^TMP($J,IBCNERTN,S1,S2,2,CNCT) based on ^IBCN(365,DA,3)
|
---|
| 31 | ; CNCT=Cont Pers IEN (365.03)
|
---|
| 32 | ; ^TMP($J,IBCNERTN,S1,S2,4,CT)= err txt based on ^IBCN(365,DA,4)
|
---|
| 33 | ; CT=1/2 if >60 ch long
|
---|
| 34 | ; Must call at one of the entry points, EN3 or EN6
|
---|
| 35 | Q
|
---|
| 36 | ;
|
---|
| 37 | EN3(IBCNERTN,IBCNESPC) ; Entry pt. Calls IBCNERP3
|
---|
| 38 | N IBBDT,IBEDT,IBPY,IBPT,IBTYP,IBSRT,CRT,MAXCNT,IBPXT
|
---|
| 39 | N IBPGC,X,Y,DIR,DTOUT,DUOUT,LIN,IBTRC,IPRF
|
---|
| 40 | S IBBDT=$G(IBCNESPC("BEGDT")),IBEDT=$G(IBCNESPC("ENDDT"))
|
---|
| 41 | S IBPY=$G(IBCNESPC("PYR")),IBPT=$G(IBCNESPC("PAT"))
|
---|
| 42 | S IBTYP=$G(IBCNESPC("TYPE")),IBSRT=$G(IBCNESPC("SORT"))
|
---|
| 43 | S IBTRC=$P($G(IBCNESPC("TRCN")),U,1),(IBPXT,IBPGC)=0
|
---|
| 44 | S IBEXP=$G(IBCNESPC("DTEXP"))
|
---|
| 45 | S IPRF=$G(IBCNESPC("RFLAG"))
|
---|
| 46 | ; Determine IO params
|
---|
| 47 | I IOST["C-" S MAXCNT=IOSL-3,CRT=1
|
---|
| 48 | E S MAXCNT=IOSL-6,CRT=0
|
---|
| 49 | D PRINT^IBCNERP3(IBCNERTN,IBBDT,IBEDT,IBPY,IBPT,IBTYP,IBSRT,.IBPGC,.IBPXT,MAXCNT,CRT,IBTRC,IBEXP,IPRF)
|
---|
| 50 | I $G(ZTSTOP)!IBPXT G EXIT3
|
---|
| 51 | I CRT,IBPGC>0,'$D(ZTQUEUED) D
|
---|
| 52 | . I MAXCNT<51 F LIN=1:1:(MAXCNT-$Y) W !
|
---|
| 53 | . S DIR(0)="E" D ^DIR K DIR
|
---|
| 54 | EXIT3 ; Exit pt
|
---|
| 55 | Q
|
---|
| 56 | ;
|
---|
| 57 | ;
|
---|
| 58 | EN6(IBCNERTN,IBCNESPC) ; Entry pt. Calls IBCNERP6
|
---|
| 59 | ;
|
---|
| 60 | ; Init vars
|
---|
| 61 | N CRT,MAXCNT,IBPXT,IBPGC,IBBDT,IBEDT,IBPY,IBSRT,IBDTL
|
---|
| 62 | N X,Y,DIR,DTOUT,DUOUT,LIN,TOTALS
|
---|
| 63 | ;
|
---|
| 64 | S IBBDT=$G(IBCNESPC("BEGDT"))
|
---|
| 65 | S IBEDT=$G(IBCNESPC("ENDDT"))
|
---|
| 66 | S IBPY=$G(IBCNESPC("PYR"))
|
---|
| 67 | S IBDTL=$G(IBCNESPC("DTL"))
|
---|
| 68 | S IBSRT=$G(IBCNESPC("SORT"))
|
---|
| 69 | S (IBPXT,IBPGC)=0
|
---|
| 70 | ;
|
---|
| 71 | ; Determine IO parameters
|
---|
| 72 | I IOST["C-" S MAXCNT=IOSL-3,CRT=1
|
---|
| 73 | E S MAXCNT=IOSL-6,CRT=0
|
---|
| 74 | ;
|
---|
| 75 | D PRINT^IBCNERP6(IBCNERTN,IBBDT,IBEDT,IBPY,IBDTL,IBSRT,.IBPGC,.IBPXT,MAXCNT,CRT)
|
---|
| 76 | I $G(ZTSTOP)!IBPXT G EXIT6
|
---|
| 77 | I CRT,IBPGC>0,'$D(ZTQUEUED) D
|
---|
| 78 | . I MAXCNT<51 F LIN=1:1:(MAXCNT-$Y) W !
|
---|
| 79 | . S DIR(0)="E" D ^DIR K DIR
|
---|
| 80 | ;
|
---|
| 81 | EXIT6 ; Exit pt
|
---|
| 82 | Q
|
---|
| 83 | ;
|
---|
| 84 | EBDISP(RPTDATA,DISPDATA,LCT) ; Build sorted Elig/Ben notes for display
|
---|
| 85 | ; Called by IBCNERP3 - all inputs should be passed by reference
|
---|
| 86 | ; Init local variables
|
---|
| 87 | N EBCT,EBSEGS,CT,SRT1,SRT2,SRT3,SRT4,SRT5,SRT6,SEGCT,CT2,ITEM,NTCT
|
---|
| 88 | N STATFLG
|
---|
| 89 | ;
|
---|
| 90 | ; Only build more display lines if notes exist
|
---|
| 91 | S EBCT=+$O(RPTDATA(2,""),-1) I 'EBCT,'$D(RPTDATA(2,0)) G EBEXIT
|
---|
| 92 | S DISPDATA(LCT)="",LCT=LCT+1,DISPDATA(LCT)="Eligibility/Benefit Information:",LCT=LCT+1
|
---|
| 93 | S STATFLG=""
|
---|
| 94 | ; Build EB w/Notes
|
---|
| 95 | I $D(RPTDATA(2,0)) S STATFLG=RPTDATA(2,0)
|
---|
| 96 | F CT=1:1:EBCT D
|
---|
| 97 | . S (SRT1,SRT2,SRT3,SRT4,SRT5)="*"
|
---|
| 98 | . S SEGCT=$L($G(RPTDATA(2,CT)),U)
|
---|
| 99 | . F CT2=2:1:SEGCT S ITEM=$P(RPTDATA(2,CT),U,CT2) I $L(ITEM)>0 D
|
---|
| 100 | . . I CT2=3 S SRT4=ITEM Q
|
---|
| 101 | . . I CT2=4 S SRT2=ITEM Q
|
---|
| 102 | . . I CT2=5 S SRT3=ITEM Q
|
---|
| 103 | . . I CT2=13 S SRT1=ITEM Q
|
---|
| 104 | . S EBSEGS(SRT1,SRT2,SRT3,SRT4,SRT5,CT)=""
|
---|
| 105 | ; Display Active/Inactive/Undetermined message
|
---|
| 106 | S DISPDATA(LCT)="",LCT=LCT+1
|
---|
| 107 | I STATFLG]"" D
|
---|
| 108 | . I STATFLG="U" S DISPDATA(LCT)="IIV was unable to determine the status of this patient's policy.",LCT=LCT+1 Q
|
---|
| 109 | . S DISPDATA(LCT)="IIV has determined that this patient's policy is "_STATFLG_".",LCT=LCT+1
|
---|
| 110 | ; Loop thru sorted EB Notes
|
---|
| 111 | S SRT1="" F S SRT1=$O(EBSEGS(SRT1)) Q:SRT1="" D
|
---|
| 112 | . S DISPDATA(LCT)="",LCT=LCT+1
|
---|
| 113 | . I SRT1'="*" S DISPDATA(LCT)=" "_$$LBL^IBCNERP2(365.02,.13)_SRT1,LCT=LCT+1
|
---|
| 114 | . S SRT2="" F S SRT2=$O(EBSEGS(SRT1,SRT2)) Q:SRT2="" D
|
---|
| 115 | . . I SRT2'="*" S DISPDATA(LCT)=" "_$$LBL^IBCNERP2(365.02,.04)_SRT2,LCT=LCT+1
|
---|
| 116 | . . S SRT3="" F S SRT3=$O(EBSEGS(SRT1,SRT2,SRT3)) Q:SRT3="" D
|
---|
| 117 | . . . I SRT3'="*" S DISPDATA(LCT)=" "_$$LBL^IBCNERP2(365.02,.05)_SRT3,LCT=LCT+1
|
---|
| 118 | . . . S SRT4="" F S SRT4=$O(EBSEGS(SRT1,SRT2,SRT3,SRT4)) Q:SRT4="" D
|
---|
| 119 | . . . . I SRT4'="*" S DISPDATA(LCT)=" "_$$LBL^IBCNERP2(365.02,.03)_SRT4,LCT=LCT+1
|
---|
| 120 | . . . . S SRT5="" F S SRT5=$O(EBSEGS(SRT1,SRT2,SRT3,SRT4,SRT5)) Q:SRT5="" D
|
---|
| 121 | . . . . . I SRT5'="*" S DISPDATA(LCT)=" "_$$LBL^IBCNERP2(365.02,.02)_SRT5,LCT=LCT+1
|
---|
| 122 | . . . . . S SRT6="" F S SRT6=$O(EBSEGS(SRT1,SRT2,SRT3,SRT4,SRT5,SRT6)) Q:SRT6="" D
|
---|
| 123 | . . . . . . S DISPDATA(LCT)=" "
|
---|
| 124 | . . . . . . S SEGCT=$L($G(RPTDATA(2,CT)),U)
|
---|
| 125 | . . . . . . F CT2=2,6:1:$S(SEGCT>12:12,1:SEGCT) S ITEM=$P(RPTDATA(2,SRT6),U,CT2) I $L(ITEM)>0 D
|
---|
| 126 | . . . . . . . ; Display label for all but .09 field - Percentage
|
---|
| 127 | . . . . . . . S ITEM=$S(CT2'=9:$$LBL^IBCNERP2(365.02,(.01*CT2)),1:"")_ITEM
|
---|
| 128 | . . . . . . . I $L(ITEM)+$L(DISPDATA(LCT))>69 S LCT=LCT+1,DISPDATA(LCT)=" "_ITEM Q
|
---|
| 129 | . . . . . . . I DISPDATA(LCT)'=" " S DISPDATA(LCT)=DISPDATA(LCT)_", "_ITEM Q
|
---|
| 130 | . . . . . . . S DISPDATA(LCT)=" "_ITEM
|
---|
| 131 | . . . . . . ; Notes
|
---|
| 132 | . . . . . . S NTCT=$O(RPTDATA(2,SRT6,""),-1),ITEM="" I NTCT>0 D
|
---|
| 133 | . . . . . . . F CT2=1:1:NTCT S LCT=LCT+1,DISPDATA(LCT)=" "_RPTDATA(2,SRT6,CT2)
|
---|
| 134 | . . . . . . . S LCT=LCT+1,DISPDATA(LCT)=" "
|
---|
| 135 | . . . . . . I $TR(DISPDATA(LCT)," ","")'="" S LCT=LCT+1
|
---|
| 136 | EBEXIT ; EBDISP exit point
|
---|
| 137 | Q
|
---|
| 138 | ;
|
---|