| [613] | 1 | IBCNERP3 ;DAOU/BHS - IBCNE IIV RESPONSE REPORT PRINT ;03-JUN-2002 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**184,271**;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 IBCNERPA | 
|---|
|  | 8 | ; Input from IBCNERP1/2: | 
|---|
|  | 9 | ;  IBCNERTN="IBCNERP1" - Driver rtn | 
|---|
|  | 10 | ;  IBCNESPC("BEGDT")=Start Dt,  IBCNESPC("ENDDT")=End Dt | 
|---|
|  | 11 | ;  IBCNESPC("PYR")=Pyr IEN OR "" for all | 
|---|
|  | 12 | ;  IBCNESPC("PAT")=Pat IEN OR "" for all | 
|---|
|  | 13 | ;  IBCNESPC("TYPE")=A (All Responses) OR M (Most Recent Responses) for | 
|---|
|  | 14 | ;   unique Pyr/Pt pair | 
|---|
|  | 15 | ;  IBCNESPC("SORT")=1 (PyrNm) OR 2 (PatNm) | 
|---|
|  | 16 | ;  IBCNESPC("TRCN")=Trace #^IEN, if non-null, all params null | 
|---|
|  | 17 | ;  IBCNESPC("RFLAG")=Report Flag used to indicate which report is being | 
|---|
|  | 18 | ;   run.  Response Report (0), Inactive Report (1), or Ambiguous | 
|---|
|  | 19 | ;   Report (2). | 
|---|
|  | 20 | ;  IBCNESPC("DTEXP")=Expiration date used in the inactive policy report | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | ;  Based on structure of IIV Response File (#365) | 
|---|
|  | 23 | ;  ^TMP($J,IBCNERTN,S1,S2,CT,0) based on ^IBCN(365,DA,0) | 
|---|
|  | 24 | ;    IBCNERTN="IBCNERP1", S1=PyrName(SORT=1) or PatNm(SORT=2), | 
|---|
|  | 25 | ;    S2=PatName(SORT=1) or PyrName(SORT=2), CT=Seq ct | 
|---|
|  | 26 | ;  ^TMP($J,IBCNERTN,S1,S2,CT,1) based on ^IBCN(365,DA,1) | 
|---|
|  | 27 | ;  ^TMP($J,IBCNERTN,S1,S2,2,EBCT) based on ^IBCN(365,DA,2) | 
|---|
|  | 28 | ;    EBCT=E/B IEN (365.02) | 
|---|
|  | 29 | ;  ^TMP($J,IBCNERTN,S1,S2,2,EBCT,NTCT)=based on ^IBCN(365,DA,2,EB,NT) | 
|---|
|  | 30 | ;   NTCT=Notes Ct, may not be Notes IEN, if line wrapped (365.021) | 
|---|
|  | 31 | ;  ^TMP($J,IBCNERTN,S1,S2,2,CNCT) based on ^IBCN(365,DA,3) | 
|---|
|  | 32 | ;   CNCT=Cont Pers IEN (365.03) | 
|---|
|  | 33 | ;  ^TMP($J,IBCNERTN,S1,S2,4,CT)= err txt based on ^IBCN(365,DA,4) | 
|---|
|  | 34 | ;   CT=1/2 if >60 ch long | 
|---|
|  | 35 | ;  ^TMP($J,IBCNERTN,S1,S2,5,CT)= based on # lines of comments reqd | 
|---|
|  | 36 | ;   CT=1 to display future retransmission date | 
|---|
|  | 37 | ; Must call at appropriate tag | 
|---|
|  | 38 | Q | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | PRINT(RTN,BDT,EDT,PYR,PAT,TYP,SRT,PGC,PXT,MAX,CRT,TRC,EXP,IPRF) ; Print data | 
|---|
|  | 41 | ; Input: RTN="IBCENRP1", BDT=start dt, EDT=end dt, PYR=pyr ien, | 
|---|
|  | 42 | ;  PAT= pat ien, TYP=A/M, SRT=1/2, PGC=page ct, PXT=exit flg, | 
|---|
|  | 43 | ; MAX=max line ct/pg, CRT=1/0, TRC=trc#, EXP=earliest expiration date | 
|---|
|  | 44 | N EORMSG,NONEMSG,SORT1,SORT2,CNT,EBFLG,CNFLG,ERFLG,PRT1,PRT2  ;,DISPDATA | 
|---|
|  | 45 | N OPRT1,OPRT2 ; Original values for PRT1 and PRT2, respectively | 
|---|
|  | 46 | S EORMSG="*** END OF REPORT ***" | 
|---|
|  | 47 | S NONEMSG="* * * N O  D A T A  F O U N D * * *" | 
|---|
|  | 48 | S (SORT1,SORT2)="" | 
|---|
|  | 49 | I '$D(^TMP($J,RTN)) D HEADER W !,?(80-$L(NONEMSG)\2),NONEMSG,!! | 
|---|
|  | 50 | F  S SORT1=$O(^TMP($J,RTN,SORT1)) Q:SORT1=""  D  Q:PXT!$G(ZTSTOP) | 
|---|
|  | 51 | . S (OPRT1,PRT1)=$S(SORT1="~NO PAYER":"* No Payer Identified",1:SORT1) | 
|---|
|  | 52 | . S SORT2="" F  S SORT2=$O(^TMP($J,RTN,SORT1,SORT2)) Q:SORT2=""  D  Q:PXT!$G(ZTSTOP) | 
|---|
|  | 53 | . . S (OPRT2,PRT2)=$S(SORT2="~NO PAYER":"* No Payer Identified",1:SORT2) | 
|---|
|  | 54 | . . S CNT="" F  S CNT=$O(^TMP($J,RTN,SORT1,SORT2,CNT)) Q:CNT=""  D  Q:PXT!$G(ZTSTOP) | 
|---|
|  | 55 | . . . D SSDB ; add SSN (from ^DPT) and DOB to patient header info | 
|---|
|  | 56 | . . . D HEADER | 
|---|
|  | 57 | . . . I $G(ZTSTOP)!PXT Q | 
|---|
|  | 58 | . . . K DISPDATA  ; Init disp | 
|---|
|  | 59 | . . . D DATA^IBCNERPE(.DISPDATA),LINE(.DISPDATA)  ; build/display data | 
|---|
|  | 60 | ; | 
|---|
|  | 61 | I $G(ZTSTOP)!PXT G PRINTX | 
|---|
|  | 62 | S (EBFLG,CNFLG,ERFLG)=0 | 
|---|
|  | 63 | I $Y+1>MAX!('PGC) D HEADER I $G(ZTSTOP)!PXT G PRINTX | 
|---|
|  | 64 | W !,?(80-$L(EORMSG)\2),EORMSG | 
|---|
|  | 65 | PRINTX ; | 
|---|
|  | 66 | Q | 
|---|
|  | 67 | ; | 
|---|
|  | 68 | HEADER ; Print hdr info | 
|---|
|  | 69 | N X,Y,DIR,DTOUT,DUOUT,OFFSET,HDR,LIN,HDR | 
|---|
|  | 70 | I CRT,PGC>0,'$D(ZTQUEUED) D  I PXT G HEADERX | 
|---|
|  | 71 | . I MAX<51 F LIN=1:1:(MAX-$Y) W ! | 
|---|
|  | 72 | . S DIR(0)="E" D ^DIR K DIR | 
|---|
|  | 73 | . I $D(DTOUT)!($D(DUOUT)) S PXT=1 Q | 
|---|
|  | 74 | I $D(ZTQUEUED),$$S^%ZTLOAD() S ZTSTOP=1 G HEADERX | 
|---|
|  | 75 | S PGC=PGC+1 | 
|---|
|  | 76 | W @IOF,!,?1,$S($G(IPRF)=1:"IIV Inactive Policy Report",$G(IPRF)=2:"IIV Ambiguous Policy Report",1:"IIV Response Report") I TRC'="" W " by Trace #" | 
|---|
|  | 77 | S HDR=$$FMTE^XLFDT($$NOW^XLFDT,1)_"  Page: "_PGC,OFFSET=79-$L(HDR) | 
|---|
|  | 78 | W ?OFFSET,HDR | 
|---|
|  | 79 | I TRC'="" S HDR="Trace #: "_TRC,OFFSET=80-$L(HDR)\2 W !,?OFFSET,HDR | 
|---|
|  | 80 | I TRC="" D | 
|---|
|  | 81 | . W !,?1,"Sorted by: "_$S(SRT=1:"Payer",1:"Patient")_" Name" | 
|---|
|  | 82 | . S HDR="Responses Displayed: "_$S(TYP="M":"Most Recent",1:"All") | 
|---|
|  | 83 | . S OFFSET=79-$L(HDR) | 
|---|
|  | 84 | . W ?OFFSET,HDR | 
|---|
|  | 85 | . I $G(IPRF)=1 W !,?1,"Earliest Policy Expiration Date: ",$$FMTE^XLFDT(EXP,"5Z"),! | 
|---|
|  | 86 | . S HDR=$$FMTE^XLFDT(BDT,"5Z")_" - "_$$FMTE^XLFDT(EDT,"5Z") | 
|---|
|  | 87 | . S OFFSET=80-$L(HDR)\2 | 
|---|
|  | 88 | . W !,?OFFSET,HDR | 
|---|
|  | 89 | . ; Disp SORT1 rng | 
|---|
|  | 90 | . S HDR="" | 
|---|
|  | 91 | . I SRT=1,PYR="" S HDR="All Payers" | 
|---|
|  | 92 | . I SRT=2,PAT="" S HDR="All Patients" | 
|---|
|  | 93 | . I HDR="" D | 
|---|
|  | 94 | ..  I SRT=1 S HDR=$P($G(^IBE(365.12,PYR,0)),U,1) Q | 
|---|
|  | 95 | ..  S HDR=$P($G(^DPT(PAT,0)),U,1) | 
|---|
|  | 96 | . S OFFSET=80-$L(HDR)\2 | 
|---|
|  | 97 | . W !,?OFFSET,HDR | 
|---|
|  | 98 | . ; Disp SORT2 rng | 
|---|
|  | 99 | . S HDR="" | 
|---|
|  | 100 | . I SRT=1,PAT="" S HDR="All Patients" | 
|---|
|  | 101 | . I SRT=2,PYR="" S HDR="All Payers" | 
|---|
|  | 102 | . I HDR="" D | 
|---|
|  | 103 | .. I SRT=1 S HDR=$P($G(^DPT(PAT,0)),U,1) Q | 
|---|
|  | 104 | .. S HDR=$P($G(^IBE(365.12,PYR,0)),U,1) | 
|---|
|  | 105 | . S OFFSET=80-$L(HDR)\2 | 
|---|
|  | 106 | . W !,?OFFSET,HDR | 
|---|
|  | 107 | W ! | 
|---|
|  | 108 | ; Build disp | 
|---|
|  | 109 | I SORT1'="",SORT2'="" D | 
|---|
|  | 110 | . W !,?1,$$FO^IBCNEUT1($S(TRC'=""!(SRT=1):"  Payer: ",1:"Patient: "),9)_$E(PRT1,1,69) | 
|---|
|  | 111 | . W !,?1,$$FO^IBCNEUT1($S(TRC'=""!(SRT=1):"Patient: ",1:"  Payer: "),9)_$E(PRT2,1,69) | 
|---|
|  | 112 | . W ! | 
|---|
|  | 113 | HEADERX ; | 
|---|
|  | 114 | Q | 
|---|
|  | 115 | ; | 
|---|
|  | 116 | LINE(DISPDATA) ;  Print data | 
|---|
|  | 117 | N LNCT,LNTOT,NWPG | 
|---|
|  | 118 | S LNTOT=+$O(DISPDATA(""),-1) | 
|---|
|  | 119 | S (EBFLG,CNFLG,ERFLG,NWPG)=0 | 
|---|
|  | 120 | F LNCT=1:1:LNTOT D  Q:$G(ZTSTOP)!PXT | 
|---|
|  | 121 | . I $Y+1>MAX!('PGC) D HEADER S NWPG=1 I $G(ZTSTOP)!PXT Q | 
|---|
|  | 122 | . I DISPDATA(LNCT)="Eligibility/Benefit Information:"!(DISPDATA(LNCT)="Contact Information:")!(DISPDATA(LNCT)="Error Information:"),$Y+3>MAX S (EBFLG,CNFLG,ERFLG)=0 D HEADER S NWPG=1 I $G(ZTSTOP)!PXT Q | 
|---|
|  | 123 | . I EBFLG,DISPDATA(LNCT)="",($G(DISPDATA(LNCT+1))="Contact Information:")!($G(DISPDATA(LNCT+1))="Error Information") S EBFLG=0 | 
|---|
|  | 124 | . I CNFLG,DISPDATA(LNCT)="",$G(DISPDATA(LNCT+1))="Error Information:" S CNFLG=0 | 
|---|
|  | 125 | . I NWPG,EBFLG W !,?1,"Eligibility/Benefit Information: (cont'd)",! | 
|---|
|  | 126 | . I NWPG,CNFLG W !,?1,"Contact Information: (cont'd)",! | 
|---|
|  | 127 | . I NWPG,ERFLG W !,?1,"Error Information: (cont'd)",! | 
|---|
|  | 128 | . I 'NWPG!(NWPG&(DISPDATA(LNCT)'="")) W !,?1,DISPDATA(LNCT) | 
|---|
|  | 129 | . I NWPG S NWPG=0 | 
|---|
|  | 130 | . I DISPDATA(LNCT)["Eligibility/Benefit Information:" S EBFLG=1,(CNFLG,ERFLG)=0 | 
|---|
|  | 131 | . I DISPDATA(LNCT)["Contact Information:" S (EBFLG,ERFLG)=0,CNFLG=1 | 
|---|
|  | 132 | . I DISPDATA(LNCT)["Error Information:" S (EBFLG,CNFLG)=0,ERFLG=1 | 
|---|
|  | 133 | . Q | 
|---|
|  | 134 | S (EBFLG,CNFLG,ERFLG)=0 | 
|---|
|  | 135 | LINEX ; | 
|---|
|  | 136 | Q | 
|---|
|  | 137 | ; | 
|---|
|  | 138 | SSDB ; Display last 4 digits of SSN and DOB to facilitate pt. identification | 
|---|
|  | 139 | ; $$SSN^IBCNEDEQ(DFN) returns SSN followed by DOB | 
|---|
|  | 140 | ; | 
|---|
|  | 141 | N DFN | 
|---|
|  | 142 | S DFN=$P($G(^TMP($J,RTN,SORT1,SORT2,CNT,0)),U,2) | 
|---|
|  | 143 | I DFN D | 
|---|
|  | 144 | . I SRT=1!TRC S PRT2=OPRT2_$$SSN^IBCNEDEQ(DFN) Q | 
|---|
|  | 145 | . S PRT1=OPRT1_$$SSN^IBCNEDEQ(DFN) | 
|---|
|  | 146 | Q | 
|---|