| 1 | IBCNERPE ;DAOU/BHS - IBCNE IIV RESPONSE REPORT (cont'd);03-JUN-2002
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**271,300**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; Must call at tag
 | 
|---|
| 6 |  Q
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ; This tag is only called from IBCNERP2
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | GETDATA(IEN,RPTDATA) ; Retrieve response data
 | 
|---|
| 11 |  ; Init
 | 
|---|
| 12 |  N EBCT,NOTECT,EBPTR,PC,CNCT,CNPTR,NWNTCT,IBNOTES,IBERR
 | 
|---|
| 13 |  N %,DIW,DIWI,DIWT,DIWTC,DIWX,DN,I,Z,ERRTEXT,II,FUTDT,TQIEN
 | 
|---|
| 14 |  N FRST,IIVSTR,IIVSTAT
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ; Insured Info from IIV Response #365
 | 
|---|
| 17 |  S RPTDATA(0)=$G(^IBCN(365,IEN,0)),TQIEN=$P(RPTDATA(0),U,5)
 | 
|---|
| 18 |  ; Trans dates to ext format
 | 
|---|
| 19 |  S $P(RPTDATA(0),U,7)=$$FMTE^XLFDT($P(RPTDATA(0),U,7)\1,"5Z")
 | 
|---|
| 20 |  S RPTDATA(1)=$G(^IBCN(365,IEN,1))
 | 
|---|
| 21 |  ; Trans ext values for SET of CODES values
 | 
|---|
| 22 |  S $P(RPTDATA(1),U,8)=$$GET1^DIQ(365,IEN_",",1.08,"E")   ; Whose Ins
 | 
|---|
| 23 |  S $P(RPTDATA(1),U,9)=$$GET1^DIQ(365,IEN_",",1.09,"E")   ; Pt Rel to Sub
 | 
|---|
| 24 |  S $P(RPTDATA(1),U,13)=$$GET1^DIQ(365,IEN_",",1.13,"E")  ; COB
 | 
|---|
| 25 |  ; Trans err actions/codes to ext
 | 
|---|
| 26 |  S $P(RPTDATA(1),U,14)=$$X12^IBCNERP2(365.017,$P(RPTDATA(1),U,14))
 | 
|---|
| 27 |  S $P(RPTDATA(1),U,15)=$$X12^IBCNERP2(365.018,$P(RPTDATA(1),U,15))
 | 
|---|
| 28 |  ; Trans dates to ext format - check format
 | 
|---|
| 29 |  F PC=2,9:1:12,16,17,19 S $P(RPTDATA(1),U,PC)=$$FMTE^XLFDT($P(RPTDATA(1),U,PC),"5Z")
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  ; Loop thru mult Elig/Ben segs
 | 
|---|
| 32 |  S EBCT=0,IIVSTAT=""
 | 
|---|
| 33 |  ; Check to see if the IIV STATUS flag was passed
 | 
|---|
| 34 |  ; If so, set IIVSTAT to its value and update RPTDATA
 | 
|---|
| 35 |  S FRST=$O(^IBCN(365,IEN,2,0))
 | 
|---|
| 36 |  I FRST D
 | 
|---|
| 37 |  . S IIVSTR=$G(^IBCN(365,IEN,2,FRST,0))
 | 
|---|
| 38 |  . I $P(IIVSTR,U,6)="IIV Eligibility Determination" D
 | 
|---|
| 39 |  ..  S EBCT=FRST,IIVSTAT=$P(IIVSTR,U)
 | 
|---|
| 40 |  ..  ; Convert IEN to X12 code
 | 
|---|
| 41 |  ..  S IIVSTAT=$$GET1^DIQ(365.02,EBCT_","_IEN_",","ELIGIBILITY/BENEFIT INFO:CODE")
 | 
|---|
| 42 |  ..  S IIVSTAT=$S(IIVSTAT=1:"Active",IIVSTAT=6:"Inactive",1:"U")
 | 
|---|
| 43 |  ..  S RPTDATA(2,0)=IIVSTAT,RPTDATA(2,EBCT)=""
 | 
|---|
| 44 |  ; Error action/condition shd be flagged as Undetermined - no EC flg sent
 | 
|---|
| 45 |  I IIVSTAT="",$P(RPTDATA(1),U,14)]""!($P(RPTDATA(1),U,15)]"") S (IIVSTAT,RPTDATA(2,0))="U"
 | 
|---|
| 46 |  F  S EBCT=$O(^IBCN(365,IEN,2,EBCT)) Q:'EBCT  D
 | 
|---|
| 47 |  .  S RPTDATA(2,EBCT)=$G(^IBCN(365,IEN,2,EBCT,0))
 | 
|---|
| 48 |  .  ; Elig/Ben Info (ptr to EB01 table)
 | 
|---|
| 49 |  .  S $P(RPTDATA(2,EBCT),U,2)=$$X12^IBCNERP2(365.011,$P(RPTDATA(2,EBCT),U,2))
 | 
|---|
| 50 |  .  ; Cov Lvl Code (ptr to EB02 table)
 | 
|---|
| 51 |  .  S $P(RPTDATA(2,EBCT),U,3)=$$X12^IBCNERP2(365.012,$P(RPTDATA(2,EBCT),U,3))
 | 
|---|
| 52 |  .  ; Svc Type Code (ptr to EB03 table)
 | 
|---|
| 53 |  .  S $P(RPTDATA(2,EBCT),U,4)=$$X12^IBCNERP2(365.013,$P(RPTDATA(2,EBCT),U,4))
 | 
|---|
| 54 |  .  ; Ins Type Code (ptr to EB04 table)
 | 
|---|
| 55 |  .  S $P(RPTDATA(2,EBCT),U,5)=$$X12^IBCNERP2(365.014,$P(RPTDATA(2,EBCT),U,5))
 | 
|---|
| 56 |  .  ; Plan Cov Desc - free text
 | 
|---|
| 57 |  .  ; Time Pd Qual (ptr to EB06 table)
 | 
|---|
| 58 |  .  S $P(RPTDATA(2,EBCT),U,7)=$$X12^IBCNERP2(365.015,$P(RPTDATA(2,EBCT),U,7))
 | 
|---|
| 59 |  .  ; Monetary Amt
 | 
|---|
| 60 |  .  I $P(RPTDATA(2,EBCT),U,8)'="" S $P(RPTDATA(2,EBCT),U,8)="$"_$FN(+$P(RPTDATA(2,EBCT),U,8),",",2)
 | 
|---|
| 61 |  .  ; Percent
 | 
|---|
| 62 |  .  I $P(RPTDATA(2,EBCT),U,9)'="" S $P(RPTDATA(2,EBCT),U,9)=$S($P(RPTDATA(2,EBCT),U,9)<1:$P(RPTDATA(2,EBCT),U,9)*100,1:$P(RPTDATA(2,EBCT),U,9))_"%"
 | 
|---|
| 63 |  .  ; Qty Qual (ptr to EB09)
 | 
|---|
| 64 |  .  S $P(RPTDATA(2,EBCT),U,10)=$$X12^IBCNERP2(365.016,$P(RPTDATA(2,EBCT),U,10))
 | 
|---|
| 65 |  .  ; Qty
 | 
|---|
| 66 |  .  I $P(RPTDATA(2,EBCT),U,11)'="" S $P(RPTDATA(2,EBCT),U,10)=$P(RPTDATA(2,EBCT),U,11)_" "_$P(RPTDATA(2,EBCT),U,10),$P(RPTDATA(2,EBCT),U,11)=""
 | 
|---|
| 67 |  .  ; Auth/Cert Ind (Y/N/U)
 | 
|---|
| 68 |  .  I $P(RPTDATA(2,EBCT),U,12)'="" S $P(RPTDATA(2,EBCT),U,12)=$$GET1^DIQ(365.02,EBCT_","_IEN_",",.12,"E")
 | 
|---|
| 69 |  .  ; In-Plan Network Ind (Y/N/U)
 | 
|---|
| 70 |  .  I $P(RPTDATA(2,EBCT),U,13)'="" S $P(RPTDATA(2,EBCT),U,13)=$$GET1^DIQ(365.02,EBCT_","_IEN_",",.13,"E")
 | 
|---|
| 71 |  .  ; Loop thru Notes (wp) - format to 70 chars
 | 
|---|
| 72 |  .  S (NOTECT,NWNTCT)=0
 | 
|---|
| 73 |  .  F  S NOTECT=$O(^IBCN(365,IEN,2,EBCT,2,NOTECT)) Q:'NOTECT  D
 | 
|---|
| 74 |  .  .  D FSTRNG^IBJU1($G(^IBCN(365,IEN,2,EBCT,2,NOTECT,0)),70,.IBNOTES)
 | 
|---|
| 75 |  .  .  ; Loop thru text (70 chars wide)
 | 
|---|
| 76 |  .  .  S II=0
 | 
|---|
| 77 |  .  .  F  S II=$O(IBNOTES(II)) Q:'II  I $G(IBNOTES(II))'="" D
 | 
|---|
| 78 |  .  .  .  S NWNTCT=NWNTCT+1
 | 
|---|
| 79 |  .  .  .  S RPTDATA(2,EBCT,NWNTCT)=$G(IBNOTES(II))
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  ; Loop thru mult Contact segs
 | 
|---|
| 82 |  S CNCT=0
 | 
|---|
| 83 |  F  S CNCT=$O(^IBCN(365,IEN,3,CNCT)) Q:'CNCT  D
 | 
|---|
| 84 |  .  S RPTDATA(3,CNCT)=$G(^IBCN(365,IEN,3,CNCT,0))
 | 
|---|
| 85 |  .  ; Disp. blank if NOT SPECIFIED
 | 
|---|
| 86 |  .  I $P(RPTDATA(3,CNCT),U)="NOT SPECIFIED" S $P(RPTDATA(3,CNCT),U)=""
 | 
|---|
| 87 |  .  ; Comm Qual #1-3
 | 
|---|
| 88 |  .  F II=1:1:3 D
 | 
|---|
| 89 |  .  . S CNPTR=$$X12^IBCNERP2(365.021,$P(RPTDATA(3,CNCT),U,II*2))
 | 
|---|
| 90 |  .  . I CNPTR'="" S $P(RPTDATA(3,CNCT),U,II*2)=CNPTR_": "_$P(RPTDATA(3,CNCT),U,II*2+1),$P(RPTDATA(3,CNCT),U,II*2+1)=""
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 |  ; Error Txt
 | 
|---|
| 93 |  S ERRTEXT=$G(^IBCN(365,IEN,4))
 | 
|---|
| 94 |  ; Error text shd be flagged as Undetermined - no EC flg sent
 | 
|---|
| 95 |  I IIVSTAT="" S (IIVSTAT,RPTDATA(2,0))="U"
 | 
|---|
| 96 |  I ERRTEXT="" G FUTDT
 | 
|---|
| 97 |  D FSTRNG^IBJU1(ERRTEXT,60,.IBERR)
 | 
|---|
| 98 |  ; Loop thru text (60 chars)
 | 
|---|
| 99 |  S II=0
 | 
|---|
| 100 |  F  S II=$O(IBERR(II)) Q:'II  I $G(IBERR(II))'="" D
 | 
|---|
| 101 |  .  S RPTDATA(4,II)=$G(IBERR(II))
 | 
|---|
| 102 | FUTDT I TQIEN D  ; If there is a future date, display it
 | 
|---|
| 103 |  . S FUTDT=$P($G(^IBCN(365.1,TQIEN,0)),U,9) Q:FUTDT=""
 | 
|---|
| 104 |  . S II=$O(RPTDATA(5,""),-1)+1
 | 
|---|
| 105 |  . S RPTDATA(5,II)=" ",II=II+1
 | 
|---|
| 106 |  . S RPTDATA(5,II)="Inquiry will be automatically resubmitted on "_$$FMTE^XLFDT(FUTDT,"5Z")_"."
 | 
|---|
| 107 |  ; 
 | 
|---|
| 108 | GETDATX ; GETDATA exit point
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ; This tag is only called from IBCNERP3
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 | DATA(DISPDATA)  ;  Build disp lines
 | 
|---|
| 114 |  N LCT,EBCT,CT,SEGCT,ITEM,CT2,NTCT,CNCT,ERCT,RPTDATA
 | 
|---|
| 115 |  ; Merge into local array
 | 
|---|
| 116 |  ;M RPTDATA=^TMP($J,RTN,SORT1,SORT2,CNT)
 | 
|---|
| 117 |  N %X,%Y
 | 
|---|
| 118 |  S %X="^TMP($J,RTN,SORT1,SORT2,CNT,"
 | 
|---|
| 119 |  S %Y="RPTDATA("
 | 
|---|
| 120 |  I $D(^TMP($J,RTN,SORT1,SORT2,CNT))#10=1 S RPTDATA=^TMP($J,RTN,SORT1,SORT2,CNT)
 | 
|---|
| 121 |  D %XY^%RCR K %X,%Y
 | 
|---|
| 122 |  ; Build
 | 
|---|
| 123 |  S LCT=1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.01),17,"R")_$P(RPTDATA(1),U,1)
 | 
|---|
| 124 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.05),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,5),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.02),22,"R")_$P(RPTDATA(1),U,2)
 | 
|---|
| 125 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.03),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,3),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.04),22,"R")_$P(RPTDATA(1),U,4)
 | 
|---|
| 126 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.06),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,6),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.07),22,"R")_$P(RPTDATA(1),U,7)
 | 
|---|
| 127 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.08),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,8),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.09),22,"R")_$P(RPTDATA(1),U,9)
 | 
|---|
| 128 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.18),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,18),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.13),22,"R")_$P(RPTDATA(1),U,13)
 | 
|---|
| 129 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.1),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,10),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.16),22,"R")_$P(RPTDATA(1),U,16)
 | 
|---|
| 130 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.11),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,11),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.17),22,"R")_$P(RPTDATA(1),U,17)
 | 
|---|
| 131 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.12),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,12),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.19),22,"R")_$P(RPTDATA(1),U,19)
 | 
|---|
| 132 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,.07),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(0),U,7),20)_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,.09),22,"R")_$P(RPTDATA(0),U,9)
 | 
|---|
| 133 |  S LCT=LCT+1,DISPDATA(LCT)=$$FO^IBCNEUT1($$LBL^IBCNERP2(365,1.2),17,"R")_$$FO^IBCNEUT1($P(RPTDATA(1),U,20),20)
 | 
|---|
| 134 |  S LCT=LCT+1
 | 
|---|
| 135 |  ; Elig/Ben - added sorted EB notes to DISPDATA and update LCT (line ct)
 | 
|---|
| 136 |  D EBDISP^IBCNERPA(.RPTDATA,.DISPDATA,.LCT)
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 |  ; Contacts
 | 
|---|
| 139 | CONT S CNCT=+$O(RPTDATA(3,""),-1) I 'CNCT G ERR
 | 
|---|
| 140 |  S DISPDATA(LCT)="",LCT=LCT+1,DISPDATA(LCT)="Contact Information:",LCT=LCT+1
 | 
|---|
| 141 |  ; Build
 | 
|---|
| 142 |  F CT=1:1:CNCT D
 | 
|---|
| 143 |  . S DISPDATA(LCT)="",LCT=LCT+1,DISPDATA(LCT)=" "
 | 
|---|
| 144 |  . S SEGCT=$L(RPTDATA(3,CT),U)
 | 
|---|
| 145 |  . F CT2=1:1:SEGCT S ITEM=$P(RPTDATA(3,CT),U,CT2) I $L(ITEM)>0 D
 | 
|---|
| 146 |  . . I $L(ITEM)+$L(DISPDATA(LCT))>74 S LCT=LCT+1,DISPDATA(LCT)=" "_ITEM Q
 | 
|---|
| 147 |  . . I DISPDATA(LCT)'=" " S DISPDATA(LCT)=DISPDATA(LCT)_",  "_ITEM Q
 | 
|---|
| 148 |  . . S DISPDATA(LCT)=" "_ITEM
 | 
|---|
| 149 |  . S LCT=LCT+1
 | 
|---|
| 150 |  ; Err Info
 | 
|---|
| 151 | ERR I $P(RPTDATA(1),U,14)="",$P(RPTDATA(1),U,15)="",'$O(RPTDATA(4,""),-1) G DATAX
 | 
|---|
| 152 |  S DISPDATA(LCT)="",LCT=LCT+1
 | 
|---|
| 153 |  S DISPDATA(LCT)="Error Information:",LCT=LCT+1
 | 
|---|
| 154 |  S DISPDATA(LCT)="",LCT=LCT+1
 | 
|---|
| 155 |  I $P(RPTDATA(1),U,14)'="" D
 | 
|---|
| 156 |  . ; Split text, if necessary
 | 
|---|
| 157 |  . N IBERR,IBTOT,IBCT
 | 
|---|
| 158 |  . D FSTRNG^IBJU1($P(RPTDATA(1),U,14),60,.IBERR)
 | 
|---|
| 159 |  . S IBTOT=$O(IBERR(""),-1)
 | 
|---|
| 160 |  . F IBCT=1:1:IBTOT S DISPDATA(LCT)=" "_$$FO^IBCNEUT1($S(IBCT=1:$$LBL^IBCNERP2(365,1.14),1:" "),17,"R")_$G(IBERR(IBCT)),LCT=LCT+1
 | 
|---|
| 161 |  I $P(RPTDATA(1),U,15)'="" D
 | 
|---|
| 162 |  . ; Split text, if necessary
 | 
|---|
| 163 |  . N IBERR,IBTOT,IBCT
 | 
|---|
| 164 |  . D FSTRNG^IBJU1($P(RPTDATA(1),U,15),60,.IBERR)
 | 
|---|
| 165 |  . S IBTOT=$O(IBERR(""),-1)
 | 
|---|
| 166 |  . F IBCT=1:1:IBTOT S DISPDATA(LCT)=" "_$$FO^IBCNEUT1($S(IBCT=1:$$LBL^IBCNERP2(365,1.15),1:" "),17,"R")_$G(IBERR(IBCT)),LCT=LCT+1
 | 
|---|
| 167 |  ; Disp Err Txt
 | 
|---|
| 168 |  F CT=1:1:+$O(RPTDATA(4,""),-1) D
 | 
|---|
| 169 |  . I CT=1 S DISPDATA(LCT)=" "_$$FO^IBCNEUT1($$LBL^IBCNERP2(365,4.01),17,"R")_$G(RPTDATA(4,CT)),LCT=LCT+1 Q
 | 
|---|
| 170 |  . S DISPDATA(LCT)=" "_$$FO^IBCNEUT1("",17,"R")_$G(RPTDATA(4,CT)),LCT=LCT+1
 | 
|---|
| 171 | DATAX ;
 | 
|---|
| 172 |  ; Disp Future Date and Misc. Comments
 | 
|---|
| 173 |  I $O(RPTDATA(5,0))'="" D
 | 
|---|
| 174 |  . F CT=1:1:+$O(RPTDATA(5,""),-1) D
 | 
|---|
| 175 |  .. S DISPDATA(LCT)=" "_$$FO^IBCNEUT1("",7,"R")_$G(RPTDATA(5,CT)),LCT=LCT+1
 | 
|---|
| 176 |  ;
 | 
|---|
| 177 |  Q
 | 
|---|