| 1 | IBCNERPD ;DAOU/RO - IIV PAYER LINK REPORT PRINT;AUG-2003
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**184,252**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; IIV - Insurance Identification and Verification
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ; Called by IBCNERPB
 | 
|---|
| 8 |  ; Input from IBCNERPB/C:
 | 
|---|
| 9 |  ;  
 | 
|---|
| 10 |  ;  ^TMP($J,IBCNERTN,S1,S2,CT,0)
 | 
|---|
| 11 |  ;    IBCNERTN="IBCNERPB", 
 | 
|---|
| 12 |  ;    CT=Seq ct
 | 
|---|
| 13 |  ;  ^TMP($J,IBCNERTN,S1,S2,CT,1) 
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 | EN3(IBCNERTN,IBCNESPC) ; Entry pt.  
 | 
|---|
| 16 |  N IBTYP,IBSRT,CRT,MAXCNT,IBPXT
 | 
|---|
| 17 |  N IBPGC,X,Y,DIR,DTOUT,DUOUT,LIN,IBTRC,IBMAT,IBREP,IBDET,IBPPYR,ZZ
 | 
|---|
| 18 |  S IBREP=$G(IBCNESPC("REP"))
 | 
|---|
| 19 |  S IBDET=$G(IBCNESPC("PDET"))
 | 
|---|
| 20 |  S IBTYP=$G(IBCNESPC("PTYPE"))
 | 
|---|
| 21 |  S IBSRT=$G(IBCNESPC("PSORT"))
 | 
|---|
| 22 |  S IBPPYR=$G(IBCNESPC("PPYR"))
 | 
|---|
| 23 |  ; Ins Report
 | 
|---|
| 24 |  I IBREP=2 D
 | 
|---|
| 25 |  . S IBTYP=$G(IBCNESPC("ITYPE"))
 | 
|---|
| 26 |  . S IBSRT=$G(IBCNESPC("ISORT"))
 | 
|---|
| 27 |  . S IBMAT=$G(IBCNESPC("IMAT"))
 | 
|---|
| 28 |  S (IBPXT,IBPGC)=0
 | 
|---|
| 29 |  ; Determine IO params
 | 
|---|
| 30 |  I IOST["C-" S MAXCNT=IOSL-3,CRT=1
 | 
|---|
| 31 |  E  S MAXCNT=IOSL-6,CRT=0
 | 
|---|
| 32 |  D PRINT(IBCNERTN,IBREP,IBDET,IBTYP,IBSRT,.IBPGC,.IBPXT,MAXCNT,CRT)
 | 
|---|
| 33 |  I $G(ZTSTOP)!IBPXT G EXIT3
 | 
|---|
| 34 |  I CRT,IBPGC>0,'$D(ZTQUEUED) D
 | 
|---|
| 35 |  . I MAXCNT<51 F LIN=1:1:(MAXCNT-$Y) W !
 | 
|---|
| 36 |  . S DIR(0)="E" D ^DIR K DIR
 | 
|---|
| 37 | EXIT3 ; Exit pt
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | PRINT(RTN,REP,DET,TYP,SRT,PGC,PXT,MAX,CRT) ; Print data
 | 
|---|
| 41 |  ; Input: RTN="IBCENRPB"
 | 
|---|
| 42 |  ;   PGC=page ct, PXT=exit flg,
 | 
|---|
| 43 |  ;  MAX=max line ct/pg, CRT=1/0
 | 
|---|
| 44 |  N EORMSG,NONEMSG,SORT1,SORT2,CNT,DASH
 | 
|---|
| 45 |  S EORMSG="*** END OF REPORT ***"
 | 
|---|
| 46 |  S NONEMSG="* * * N O  D A T A  F O U N D * * *"
 | 
|---|
| 47 |  S (SORT1,SORT2)="",$P(DASH,"-",132)=""
 | 
|---|
| 48 |  I '$D(^TMP($J,RTN)) D HEADER W !,?(80-$L(NONEMSG)\2),NONEMSG,!!
 | 
|---|
| 49 |  F  S SORT1=$O(^TMP($J,RTN,SORT1)) Q:SORT1=""  D  Q:PXT!$G(ZTSTOP)
 | 
|---|
| 50 |  . S SORT2="" F  S SORT2=$O(^TMP($J,RTN,SORT1,SORT2)) Q:SORT2=""  D  Q:PXT!$G(ZTSTOP)
 | 
|---|
| 51 |  . . S CNT="" F  S CNT=$O(^TMP($J,RTN,SORT1,SORT2,CNT)) Q:CNT=""  D  Q:PXT!$G(ZTSTOP)
 | 
|---|
| 52 |  . . . K DISPDATA  ; Init disp
 | 
|---|
| 53 |  . . . D DATA(.DISPDATA),LINE(.DISPDATA)  ; build/display data
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  I $G(ZTSTOP)!PXT G PRINTX
 | 
|---|
| 56 |  I $Y+1>MAX!('PGC) D HEADER I $G(ZTSTOP)!PXT G PRINTX
 | 
|---|
| 57 |  W !,?(80-$L(EORMSG)\2),EORMSG
 | 
|---|
| 58 | PRINTX ;
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 | HEADER ; Print hdr info
 | 
|---|
| 62 |  N X,Y,DIR,DTOUT,DUOUT,OFFSET,HDR,LIN,HDR
 | 
|---|
| 63 |  I CRT,PGC>0,'$D(ZTQUEUED) D  I PXT G HEADERX
 | 
|---|
| 64 |  . I MAX<51 F LIN=1:1:(MAX-$Y) W !
 | 
|---|
| 65 |  . S DIR(0)="E" D ^DIR K DIR
 | 
|---|
| 66 |  . I $D(DTOUT)!($D(DUOUT)) S PXT=1 Q
 | 
|---|
| 67 |  I $D(ZTQUEUED),$$S^%ZTLOAD() S ZTSTOP=1 G HEADERX
 | 
|---|
| 68 |  S PGC=PGC+1
 | 
|---|
| 69 |  W @IOF,!,?1,"IIV Payer Link Report"
 | 
|---|
| 70 |  S HDR=$$FMTE^XLFDT($$NOW^XLFDT,1)_"  Page: "_PGC,OFFSET=131-$L(HDR)
 | 
|---|
| 71 |  W ?OFFSET,HDR
 | 
|---|
| 72 |  W !,?1,"Report Option: "_$S(REP=1:"Payer List",1:"Insurance Company List")
 | 
|---|
| 73 |  I REP=1 D
 | 
|---|
| 74 |  . S HDR=$S(TYP=1:"Unlinked Payers Only",TYP=2:"Linked Payers Only",1:"All Payers")
 | 
|---|
| 75 |  . I TYP=3 S HDR=HDR_", "_$S(DET=1:"With Ins. Co. Detail",1:"Without Ins. Co. Detail")
 | 
|---|
| 76 |  I REP=2 D
 | 
|---|
| 77 |  . S HDR=$S(TYP=1:"Unlinked Insurance Companies Only",TYP=2:"Linked Insurance Companies Only",1:"All Insurance Companies")
 | 
|---|
| 78 |  S OFFSET=79-$L(HDR)
 | 
|---|
| 79 |  W ?OFFSET,HDR
 | 
|---|
| 80 |  W !
 | 
|---|
| 81 |  I REP=1 D
 | 
|---|
| 82 |  . I IBPPYR'="" W ?1,"For Single Payer: ",$P(IBPPYR,"^",2)
 | 
|---|
| 83 |  . W !?39,"National",?54,"# Linked",?67,"Nationally",?82,"Locally",?94,"Prof.",?115,"Inst."
 | 
|---|
| 84 |  . W !,"Payer Name:",?39,"Payer ID",?54,"Ins. Co.",?67,"Active?",?82,"Active?",?94,"EDI#",?115,"EDI#"
 | 
|---|
| 85 |  I REP=2 D
 | 
|---|
| 86 |  . I IBMAT'="" W ?1,"Only Insurance Companies that match: ",IBMAT
 | 
|---|
| 87 |  . W !?56,"Nat.",?71,"Loc.",?83,"Prof.",?104,"Inst."
 | 
|---|
| 88 |  . W !,"Insurance Company:",?56,"Act?",?71,"Act?",?83,"EDI#",?104,"EDI#"
 | 
|---|
| 89 |  . I TYP'=1 W !,"   Payer:",?41,"VA ID"
 | 
|---|
| 90 |  W !,DASH
 | 
|---|
| 91 | HEADERX ;
 | 
|---|
| 92 |  Q
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 | LINE(DISPDATA) ;  Print data
 | 
|---|
| 95 |  N LNCT,LNTOT,NWPG
 | 
|---|
| 96 |  S LNTOT=+$O(DISPDATA(""),-1)
 | 
|---|
| 97 |  S NWPG=0
 | 
|---|
| 98 |  F LNCT=1:1:LNTOT D  Q:$G(ZTSTOP)!PXT
 | 
|---|
| 99 |  . I $Y+1>MAX!('PGC) D HEADER S NWPG=1 I $G(ZTSTOP)!PXT Q
 | 
|---|
| 100 |  . W !,?1,DISPDATA(LNCT) Q
 | 
|---|
| 101 |  . I 'NWPG!(NWPG&(DISPDATA(LNCT)'="")) W !,?1,DISPDATA(LNCT)
 | 
|---|
| 102 |  . I NWPG S NWPG=0
 | 
|---|
| 103 |  . Q
 | 
|---|
| 104 | LINEX Q
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 | DATA(DISPDATA) ;  Build disp lines
 | 
|---|
| 107 |  N LCT,CT,CT2,RPTDATA,XX,YY,ZZ
 | 
|---|
| 108 |  ; Merge into local array
 | 
|---|
| 109 |  N %X,%Y
 | 
|---|
| 110 |  S %X="^TMP($J,RTN,SORT1,SORT2,CNT,"
 | 
|---|
| 111 |  S %Y="RPTDATA("
 | 
|---|
| 112 |  I $D(^TMP($J,RTN,SORT1,SORT2,CNT))#10=1 S RPTDATA=^TMP($J,RTN,SORT1,SORT2,CNT)
 | 
|---|
| 113 |  D %XY^%RCR K %X,%Y
 | 
|---|
| 114 |  ; Build
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 |  ; PAYER REPORT
 | 
|---|
| 117 |  I REP=1 D
 | 
|---|
| 118 |  . ; 1st line is payer
 | 
|---|
| 119 |  . S LCT=1,DISPDATA(1)=$$FO^IBCNEUT1(SORT2,35,"L")_"   "_$$FO^IBCNEUT1($P(RPTDATA,U,1),10,"L")_"     "_$$FO^IBCNEUT1($P(RPTDATA,U,6),5,"R")_"        "_$$FO^IBCNEUT1($S($P(RPTDATA,U,4)=1:"YES",1:"NO"),15,"L")
 | 
|---|
| 120 |  . S DISPDATA(1)=DISPDATA(1)_$$FO^IBCNEUT1($S($P(RPTDATA,U,5)=1:"YES",1:"NO"),12,"L")_$$FO^IBCNEUT1($P(RPTDATA,U,2),16,"L")_"     "_$$FO^IBCNEUT1($P(RPTDATA,U,3),16,"L")
 | 
|---|
| 121 |  . ; See if detail is required
 | 
|---|
| 122 |  . I DET=1 D
 | 
|---|
| 123 |  . . I $O(RPTDATA(""))'="" S LCT=LCT+1,DISPDATA(LCT)="   Linked Insurance Companies:"
 | 
|---|
| 124 |  . . S (XX,YY,ZZ)="" F  S XX=$O(RPTDATA(XX)) Q:XX=""  F  S YY=$O(RPTDATA(XX,YY)) Q:YY=""  D
 | 
|---|
| 125 |  . . . S ZZ=RPTDATA(XX,YY)
 | 
|---|
| 126 |  . . . S LCT=LCT+1,DISPDATA(LCT)="   "_$$FO^IBCNEUT1(XX,35,"L")_"  "_$$FO^IBCNEUT1($P(ZZ,U,1),20,"L")_" "_$E($P(ZZ,U,4),1,15)
 | 
|---|
| 127 |  . . . ; don't display ','s if no address/state on file
 | 
|---|
| 128 |  . . . I $P(ZZ,U,5)'="" S DISPDATA(LCT)=DISPDATA(LCT)_", "_$P($G(^DIC(5,$P(ZZ,U,5)+0,0)),U,2)
 | 
|---|
| 129 |  . . . S DISPDATA(LCT)=DISPDATA(LCT)_$$FO^IBCNEUT1(" ",93-$L(DISPDATA(LCT)),"L")
 | 
|---|
| 130 |  . . . ; display EDI#'s
 | 
|---|
| 131 |  . . . S DISPDATA(LCT)=DISPDATA(LCT)_$$FO^IBCNEUT1($P(ZZ,U,7),16,"L")_"     "_$$FO^IBCNEUT1($P(ZZ,U,8),16,"L")
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 |  ; Insurance Company Report
 | 
|---|
| 134 |  I REP=2 D
 | 
|---|
| 135 |  . ; Ins carrier
 | 
|---|
| 136 |  . S DISPDATA(1)=$$FO^IBCNEUT1(SORT2,82,"L")
 | 
|---|
| 137 |  . ; Ins address
 | 
|---|
| 138 |  . S ZZ=$P(RPTDATA,"~",2),DISPDATA(1)=DISPDATA(1)_$$FO^IBCNEUT1($P(ZZ,U,2),16,"L")_"     "_$$FO^IBCNEUT1($P(ZZ,U,4),16,"L")
 | 
|---|
| 139 |  . S DISPDATA(2)="        "_$P(RPTDATA,U,8)_"  "_$P(RPTDATA,U,11)
 | 
|---|
| 140 |  . ; Add state/zip if defined
 | 
|---|
| 141 |  . I $P(RPTDATA,U,12)'="" S DISPDATA(2)=DISPDATA(2)_", "_$P($G(^DIC(5,$P(RPTDATA,U,12)+0,0)),U,2)_" "_$$FO^IBCNEUT1($P(RPTDATA,U,13),5,"L")
 | 
|---|
| 142 |  . ; if no payer is linked AND displaying payers
 | 
|---|
| 143 |  . I $P(RPTDATA,U)="",TYP'=1 S DISPDATA(3)="   ** NOT CURRENTLY LINKED **",LCT=4,DISPDATA(4)="  " Q
 | 
|---|
| 144 |  . ; if no payer and not displaying then quit
 | 
|---|
| 145 |  . I $P(RPTDATA,U)="" S LCT=3,DISPDATA(3)="  " Q
 | 
|---|
| 146 |  . ; Display Payer Info Line
 | 
|---|
| 147 |  . S DISPDATA(3)="  "_$$FO^IBCNEUT1($P(RPTDATA,U,1),35,"L")_"   "_$$FO^IBCNEUT1($P(RPTDATA,U,2),15,"L")_$$FO^IBCNEUT1($S($P(RPTDATA,U,5)=1:"YES",1:"NO"),15,"L")
 | 
|---|
| 148 |  . S DISPDATA(3)=DISPDATA(3)_$$FO^IBCNEUT1($S($P(RPTDATA,U,6)=1:"YES",1:"NO"),12,"L")_$$FO^IBCNEUT1($P(RPTDATA,U,4),16,"L")_"     "_$$FO^IBCNEUT1($P(RPTDATA,U,4),16,"L")
 | 
|---|
| 149 |  . S LCT=4,DISPDATA(4)=" "
 | 
|---|
| 150 |  S LCT=LCT+1
 | 
|---|
| 151 |  Q
 | 
|---|